public byte[] GetTransactionHash() { return(Sha3Util.Get256Hash(ByteUtil.Contact( m_fromAccount.GetAddress(), m_toAccount.GetAddress(), CryptoUtil.PadToBigEndian(m_value, 128), CryptoUtil.PadToBigEndian(m_nonce, 64), CryptoUtil.PadToBigEndian(m_timestamp, 64), m_data.ToByteArray(), CryptoUtil.PadToBigEndian(m_chainId, 32), CryptoUtil.PadToBigEndian(m_gasPrice, 128), CryptoUtil.PadToBigEndian(m_gasLimit, 128) ))); }
/** * Convert transaction to hash by SHA3-256 algorithm. * * @return {Hash} hash of Transaction. * * @example * var acc = Account.NewAccount(); * * var tx = new Transaction({ * chainID: 1, * from: acc, * to: "n1SAeQRVn33bamxN4ehWUT7JGdxipwn8b17", * value: 10, * nonce: 12, * gasPrice: 1000000, * gasLimit: 2000000 * }); * var txHash = tx.hashTransaction(); * //Uint8Array(32) [211, 213, 102, 103, 23, 231, 246, 141, 20, 202, 210, 25, 92, 142, 162, 242, 232, 95, 44, 239, 45, 57, 241, 61, 34, 2, 213, 160, 17, 207, 75, 40] */ public byte[] HashTransaction() { var data = new Corepb.Data { Payload = ByteString.CopyFrom(_payLoadData), Type = Enum.GetName(typeof(TxPayload), _payLoadType).ToLower() }; var dataBuffer = data.ToByteArray(); var hash = Sha3Util.Get256Hash(ByteUtil.Merge( _fromAccount.GetAddress(), _toAccount.GetAddress(), CryptoUtils.PadToBigEndian(_value.ToString("x"), 128), CryptoUtils.PadToBigEndian(_nonce.ToString("x"), 64), CryptoUtils.PadToBigEndian(_timestamp.ToString("x"), 64), dataBuffer, CryptoUtils.PadToBigEndian(_chainId.ToString("x"), 32), CryptoUtils.PadToBigEndian(_gasPrice.ToString("x"), 128), CryptoUtils.PadToBigEndian(_gasLimit.ToString("x"), 128)) ); return(hash); }