예제 #1
0
        public string SignTransaction(string[] arguments)
        {
            var to       = arguments[1].HexToUInt160();
            var value    = Money.Parse(arguments[2]);
            var from     = _keyPair.PublicKey.GetAddress();
            var tx       = _transactionBuilder.TransferTransaction(from, to, value);
            var signedTx = _transactionSigner.Sign(tx, _keyPair, HardforkHeights.IsHardfork_9Active(_blockManager.GetHeight() + 1));

            return(signedTx.Signature.ToString());
        }
예제 #2
0
        private static void _BenchOneTxInBlock(
            ITransactionBuilder transactionBuilder,
            ITransactionSigner transactionSigner,
            EcdsaKeyPair keyPair
            )
        {
            var       address1 = "0x6bc32575acb8754886dc283c2c8ac54b1bd93195".HexToUInt160();
            var       address2 = "0xe3c7a20ee19c0107b9121087bcba18eb4dcb8576".HexToUInt160();
            var       lastTime = TimeUtils.CurrentTimeMillis();
            const int tries    = 100;

            for (var i = 0; i < tries; i++)
            {
                if (i % 10 == 0)
                {
                    Console.CursorLeft = 0;
                    Console.Write($"Benchmarking... {100 * i / tries}%");
                }

                var transferTx =
                    transactionBuilder.TransferTransaction(address1, address2, Money.FromDecimal(1.2m));
                var signed = transactionSigner.Sign(transferTx, keyPair, true);
                // var blockWithTxs = new BlockBuilder(latestBlock.Header)
                //     .WithTransactions(new[] {signed})
                //     .Build(123456);
                // // var stateHash = blockchainManager.CalcStateHash(blockWithTxs.Block, blockWithTxs.Transactions);
                // var block = blockWithTxs.Block;
                // // block.Header.StateHash = stateHash;
                // block.Hash = block.Header.Keccak();
                // block.Multisig = new MultiSig
                // {
                //     Quorum = 1,
                //     Signatures =
                //     {
                //         new MultiSig.Types.SignatureByValidator
                //         {
                //             Key = keyPair.PublicKey,
                //             Value = blockManager.Sign(block.Header, keyPair)
                //         }
                //     },
                //     Validators = {keyPair.PublicKey}
                // };
                // // blockchainManager.PersistBlockManually(block, blockWithTxs.Transactions);
            }

            var deltaTime = TimeUtils.CurrentTimeMillis() - lastTime;

            Console.CursorLeft = "Benchmarking... ".Length;
            Console.WriteLine($"{1000 * tries / deltaTime} RPS");
        }