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()); }
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"); }