Example #1
0
 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)
                                    )));
 }
Example #2
0
        /**
         * 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);
        }