public void TestTransferTransactionBuilder() { var builder = new TransferTransactionBuilder(); builder.NID = 2; builder.PrivateKey = PrivateKey.Random(); builder.To = "hx54f7853dc6481b670caf69c5a27c7c8fe5be8269"; builder.StepLimit = NumericsHelper.ICX2Loop("0.1"); builder.Value = NumericsHelper.ICX2Loop("1"); builder.Timestamp = 100000000000; var tx = builder.Build(); Assert.Null(tx.Data); Assert.Null(tx.DataType); Assert.True(Signer.Verify(tx.Signature, tx.Hash, tx.From)); var hashSource = new Dictionary <string, object>() { ["version"] = "0x3", ["nid"] = "0x2", ["from"] = Addresser.Create(builder.PrivateKey).ToString(), ["to"] = "hx54f7853dc6481b670caf69c5a27c7c8fe5be8269", ["stepLimit"] = "0x16345785d8a0000", ["value"] = "0xde0b6b3a7640000", ["timestamp"] = "0x174876e800" }; var hash = Hasher.Digest(hashSource); Assert.AreEqual(tx.Hash, hash); }
public async Task <Hash32> Transfer(Address to, BigInteger amount, BigInteger stepLimit, int?networkID = null) { var builder = new TransferTransactionBuilder(); builder.PrivateKey = PrivateKey; builder.To = to; builder.Value = amount; builder.StepLimit = stepLimit; builder.NID = networkID ?? Consts.ApiUrl.GetNetworkID(ApiUrl); var tx = builder.Build(); var sendTransaction = new SendTransaction(ApiUrl); return(await sendTransaction.Invoke(tx)); }
public static Hash32 Transfer(Address to, PrivateKey privateKey, BigInteger amount, BigInteger stepLimit, string Api) { var builder = new TransferTransactionBuilder { PrivateKey = privateKey, To = to, Value = amount, StepLimit = stepLimit, NID = 3 }; var tx = builder.Build(); var sendTransaction = new SendTransaction(Api); return(sendTransaction.Invoke(tx).Result); }
private TransferTransaction CreateTransaction(Address recipientAddress, int transactionDeadline, List <Mosaic> transactionMosaics, IMessage message) { var mosaics = (transactionMosaics == null || transactionMosaics.Count <= 0) ? new List <Mosaic> { NetworkCurrencyMosaic.CreateRelative(0) } : transactionMosaics; var recipient = Recipient.From(recipientAddress); var builder = new TransferTransactionBuilder(); var transferTransaction = builder .SetNetworkType(BlockchainNetworkConnection.NetworkType) .SetDeadline(Deadline.Create(transactionDeadline)) .SetMosaics(mosaics) .SetRecipient(recipient) .SetMessage(message) .SetFeeCalculationStrategy(BlockchainNetworkConnection.FeeCalculationStrategy) .Build(); return(transferTransaction); }
public async Task Should_Announce_Transfer_Transaction_With_Default_Fee() { var account = Account.GenerateNewAccount(Fixture.NetworkType); var mosaic = NetworkCurrencyMosaic.CreateRelative(10); var message = PlainMessage.Create("Test message"); var builder = new TransferTransactionBuilder(); var transferTransaction = builder .SetNetworkType(Fixture.NetworkType) .SetDeadline(Deadline.Create()) .SetMosaics(new List <Mosaic>() { mosaic }) .SetRecipient(Recipient.From(account.Address)) .SetMessage(message) .SetFeeCalculationStrategy(FeeCalculationStrategyType.LOW) .Build(); var signedTransaction = Fixture.SeedAccount.Sign(transferTransaction, Fixture.GenerationHash); Fixture.WatchForFailure(signedTransaction); //Log.WriteLine($"Going to announce transaction {signedTransaction.Hash}"); var tx = Fixture.SiriusWebSocketClient.Listener.ConfirmedTransactionsGiven(Fixture.SeedAccount.Address).Take(1); await Fixture.SiriusClient.TransactionHttp.Announce(signedTransaction); var result = await tx; Log.WriteLine($"Transaction confirmed {result.TransactionInfo.Hash}"); result.TransactionInfo.Hash.Should().NotBeNullOrWhiteSpace(); //result.TransactionType.Should().Be(EntityType.TRANSFER); ((TransferTransaction)result).Message.GetMessageType().Should().Be(MessageType.PLAIN_MESSAGE.GetValueInByte()); }