コード例 #1
0
        /// <summary>
        /// Signs transaction
        /// </summary>
        /// <param name="profile">profile of the signer</param>
        /// <param name="transaction">transaction to sign</param>
        /// <returns>encoded signed transaction</returns>
        public async Task <string> SignTransaction(Profile profile, PlasmaCore.Transactions.Transaction transaction)
        {
            byte[] encodedTx = transactionEncoder.EncodeRaw(transaction);
            string signature = await profile.SignTransaction(encodedTx);

            transaction.SetSignature(profile.ID, signature.HexToByteArray());
            return(transactionEncoder.EncodeSigned(transaction).ToHex(true));
        }
コード例 #2
0
        /// <summary>
        /// Submits signed transactions and queue response utxos
        /// </summary>
        /// <returns></returns>
        public async Task ProcessTransactions()
        {
            if (CanMerge)
            {
                foreach (var transaction in Transactions)
                {
                    string             encodedTx = txEncoder.EncodeSigned(transaction).ToHex(true);
                    TransactionReceipt receipt   = await plasmaAPIService.SubmitTransaction(encodedTx);

                    if (receipt != null)
                    {
                        UTXOData utxo = new UTXOData();
                        utxo.BlkNum   = receipt.BlkNum;
                        utxo.TxIndex  = receipt.TxIndex;
                        utxo.OIndex   = 0;
                        utxo.Data     = transaction.Outputs[0].Value.ToBigIntegerFromRLPDecoded();
                        utxo.Owner    = transaction.Outputs[0].Owner;
                        utxo.Currency = transaction.Outputs[0].Currency;
                        utxo.Position = UTXOData.CalculatePosition(utxo.BlkNum, utxo.TxIndex, utxo.OIndex);
                        utxoList.Add(utxo);
                    }
                }

                Transactions.Clear();

                PrepareTransactions();
            }
        }
コード例 #3
0
        public static string Sign(ITransactionEncoder txEncoder, Transaction transaction, string address, string privateKey)
        {
            byte[] encodedTx      = txEncoder.EncodeRaw(transaction);
            var    rawHash        = new Sha3Keccack().CalculateHash(encodedTx);
            var    ecKey          = new Nethereum.Signer.EthECKey(privateKey);
            var    ecdsaSignature = ecKey.SignAndCalculateV(rawHash);
            string signature      = Nethereum.Signer.EthECDSASignature.CreateStringSignature(ecdsaSignature);

            transaction.SetSignature(address, signature.HexToByteArray());
            return(txEncoder.EncodeSigned(transaction).ToHex(true));
        }