public AccountId CreatedAccount() { AccountId destination = null; Hash256 destinationIndex = null; if (TransactionType == TransactionType.Payment && Meta.Has(Field.AffectedNodes)) { StArray affected = Meta[StArray.AffectedNodes]; foreach (var node in affected) { if (node.Has(StObject.CreatedNode)) { StObject created = node[StObject.CreatedNode]; if (StObject.LedgerEntryType(created) == LedgerEntryType.AccountRoot) { if (destination == null) { destination = Txn[AccountId.Destination]; destinationIndex = Hash256.AccountIdLedgerIndex(destination); } if (destinationIndex.Equals(created[Hash256.LedgerHash])) { return(destination); } } } } } return(null); }
private static void AssertHashesEqual(Hash256 h1, Hash h2) { if (!h1.Equals(h2)) { throw new AssertionError(h1 + " != " + h2); } }
void OnRecv_RequestJoinPeer(IModulePipeline from, MessagePackObjectDictionary dict) { logger.Info("there is a peer what to join here.:"); Hash256 id = dict["id"].AsBinary(); if (this.guid.Equals(id)) { logger.Warn("Join Err:my self in."); this._System.DisConnect(from.system);//断开这个连接 return; } Hash256 hash = dict["chaininfo"].AsBinary(); if (hash.Equals(this.chainHash) == false) { logger.Warn("Join Err:chaininfo is diff."); this._System.DisConnect(from.system);//断开这个连接 return; } var link = this.linkNodes[from.system.PeerID]; link.ID = id; System.Net.IPEndPoint pubeb = null; if (dict.ContainsKey("pubep")) { pubeb = dict["pubep"].AsString().AsIPEndPoint(); } if (pubeb.Port != 0) { if (pubeb.Address.ToString() == IPAddress.Any.ToString()) {//remote.address 可能是ipv6 也有ipv4 ,当为ipv6即会出现::ffff: pubeb.Address = from.system.Remote.Address.MapToIPv4(); //pubeb.Address = from.system.Remote.Address; } link.publicEndPoint = pubeb; } //and accept Tell_ResponseAcceptJoin(from); }
public void Prepare(IKeyPair keyPair, Amount fee, UInt32 sequence, UInt32 lastLedgerSequence) { // This won't always be specified if (lastLedgerSequence != null) { Txn.Add(UInt32.LastLedgerSequence, lastLedgerSequence); } Txn.Add(UInt32.Sequence, sequence); Txn.Add(Amount.Fee, fee); Txn.Add(VariableLength.SigningPubKey, keyPair.PubBytes()); if (Transaction.CanonicalFlagDeployed) { Txn.SetCanonicalSignatureFlag(); } SigningHash = Txn.SigningHash(); if (PreviousSigningHash != null && SigningHash.Equals(PreviousSigningHash)) { return; } try { byte[] signature = keyPair.Sign(SigningHash.Bytes); Txn.Add(VariableLength.TxnSignature, signature); var blob = new BytesList(); Hash256.HalfSha512 id = Hash256.Prefixed256(HashPrefix.TransactionId); Txn.ToBytesSink(new MultiSink(blob, id)); TxBlob = blob.BytesHex(); Hash = id.Finish(); } catch (Exception e) { // electric paranoia PreviousSigningHash = null; throw new ApplicationException("Something went wrong.", e); } PreviousSigningHash = SigningHash; }
public void Prepare(IKeyPair keyPair, Amount fee, UInt32 sequence, UInt32 lastLedgerSequence) { // This won't always be specified if (lastLedgerSequence != null) { Txn.Add(UInt32.LastLedgerSequence, lastLedgerSequence); } Txn.Add(UInt32.Sequence, sequence); Txn.Add(Amount.Fee, fee); Txn.Add(VariableLength.SigningPubKey, keyPair.PubBytes()); if (Transaction.CanonicalFlagDeployed) { Txn.SetCanonicalSignatureFlag(); } SigningHash = Txn.SigningHash(); if (PreviousSigningHash != null && SigningHash.Equals(PreviousSigningHash)) { return; } try { byte[] signature = keyPair.Sign(SigningHash.Bytes); Txn.Add(VariableLength.TxnSignature, signature); var blob = new BytesList(); Hash256.HalfSha512 id = Hash256.Prefixed256(HashPrefix.TransactionId); Txn.ToBytesSink(new MultiSink(blob, id)); TxBlob = blob.BytesHex(); Hash = id.Finish(); } catch (Exception e) { // electric paranoia PreviousSigningHash = null; throw new ApplicationException("Something went wrong.", e); } PreviousSigningHash = SigningHash; }
public bool Equals(BlockId other) { return(_hash.Equals(other._hash)); }