public void TestCreateUserAccount() { var node = new Node(); var script = @"let tokenomicaPubKey = base58'7dkSgXFv9EpYi3C3JK76wJTkciBsVPZ1xE5fVAMB6AD9' let this = extract(tx.sender) match tx { case s: SetScriptTransaction => sigVerify(s.bodyBytes, s.proofs[0], tokenomicaPubKey) case t: TransferTransaction => let limit = extract(getInteger(tx.sender, ""limit"")) (!isDefined(t.assetId) && t.amount <= limit || isDefined(t.assetId)) && sigVerify(t.bodyBytes, t.proofs[0], t.senderPublicKey) case m: MassTransferTransaction => let limit = extract(getInteger(this, ""limit"")) (!isDefined(m.assetId) && m.totalAmount <= limit || isDefined(m.assetId)) && sigVerify(m.bodyBytes, m.proofs[0], tx.senderPublicKey) case e: ExchangeTransaction => let limit = extract(getInteger(this, ""limit"")) ((!isDefined(e.sellOrder.assetPair.amountAsset) && e.buyOrder.amount <= limit) || isDefined(e.sellOrder.assetPair.amountAsset)) && ((!isDefined(e.sellOrder.assetPair.priceAsset) && e.sellOrder.amount <= limit) || isDefined(e.buyOrder.assetPair.amountAsset)) && sigVerify(e.bodyBytes, e.proofs[0], tx.senderPublicKey) case d: DataTransaction => sigVerify(d.bodyBytes, d.proofs[0], tokenomicaPubKey) case _ => false }"; var compiledScript = node.CompileScript(script); var transferTransaction = new TransferTransaction(Alice.PublicKey, userAccount.Address, Assets.WAVES, 1m, 0.001m).Sign(Alice); node.Broadcast(transferTransaction.GetJsonWithSignature()); Thread.Sleep(5000); var setScriptTx = new SetScriptTransaction(userAccount.PublicKey, compiledScript, AddressEncoding.TestNet, 0.14m); setScriptTx.Sign(userAccount); node.Broadcast(setScriptTx.GetJsonWithSignature()); }
public void TestWavesSpendingUserAccountScript() { var node = new Node(); var tokenomicaSeed = "aim property attract warfare stamp sample holiday input invest rather potato novel produce car arctic"; //3N6GrCERRyWw9k9siP9iPbqNV9q86jnbrYY var tokenomicaAccount = PrivateKeyAccount.CreateFromSeed(tokenomicaSeed, AddressEncoding.TestNet); var data = new DictionaryObject { { "limit", 200000001L } }; var dataTx = new DataTransaction(userAccount.PublicKey, data, 0.005m).Sign(tokenomicaAccount); node.Broadcast(dataTx.GetJsonWithSignature()); var wavesTransferTx = new TransferTransaction(userAccount.PublicKey, Alice.Address, Assets.WAVES, 0.01m, 0.005m).Sign(userAccount); wavesTransferTx.Version = 2; node.Broadcast(wavesTransferTx.GetJsonWithSignature()); }