2023.02.01 17:44 [3496243] smart account 3PLPCb3wF2H2gtzohoAjeWcGaMKEiJvtE5X > SELF 0.00000000 Waves

{ "type": 13, "id": "Hbe6zv4ojt75cQqpiJjxLavBZVPXjhyFJYf9AjbD2r7c", "fee": 1000000, "feeAssetId": null, "timestamp": 1675262744393, "version": 2, "chainId": 87, "sender": "3PLPCb3wF2H2gtzohoAjeWcGaMKEiJvtE5X", "senderPublicKey": "7or3jPDGBqg4WDqCuftD79WiF7FqgpMTqKdQ8HoMh7Wj", "proofs": [ "ahLbDYGscWVbfZATDLPBC3pBj6GHmauL1PwmSfAAJV1WbT3jS6tw8XdUhZjUuNsQBrbUaWXu4GRVmSwEvBZqq6X" ], "script": "base64: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", "height": 3496243, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B9RtGXJGD35cUAG5o2dc79dzZPKwMRq3F2tmZdatV34F Next: 8GAuU3uS6wbJdp54imzRXGg2kb9E9uaobHbKkTLYTRdi Diff:
OldNewDifferences
4343
4444
4545 @Callable(i)
46-func exchangeAndSendTo (asset1IdStr,recipient) = {
46+func exchangeThenTransfer (asset1IdStr,recipient,minToReceive) = {
4747 let request = toBase58String(i.transactionId)
48-[StringEntry((request + "_sendTo"), recipient), StringEntry((request + "_status"), "open"), StringEntry(("awaits_" + request), ((((getAssetString(i.payments[0].assetId) + ",") + toString(i.payments[0].amount)) + ",") + asset1IdStr))]
48+[StringEntry((request + "_sendTo"), recipient), StringEntry((request + "_status"), "open"), IntegerEntry((request + "_minToReceive"), minToReceive), StringEntry(("awaits_" + request), ((((getAssetString(i.payments[0].assetId) + ",") + toString(i.payments[0].amount)) + ",") + asset1IdStr))]
49+ }
50+
51+
52+
53+@Callable(i)
54+func exchangeThenInvoke (asset1IdStr,dApp,function,args,minToReceive) = {
55+ let request = toBase58String(i.transactionId)
56+[StringEntry((request + "_dApp"), dApp), StringEntry((request + "_function"), function), StringEntry((request + "_args"), makeString(args, "|||")), StringEntry((request + "_status"), "open"), IntegerEntry((request + "_minToReceive"), minToReceive), StringEntry(("awaits_" + request), ((((getAssetString(i.payments[0].assetId) + ",") + toString(i.payments[0].amount)) + ",") + asset1IdStr))]
4957 }
5058
5159
5462 func cancelExchange (request) = {
5563 let canCancel = (tryGetString((request + "_sendTo")) == toString(i.caller))
5664 if (canCancel)
57- then [DeleteEntry((request + "_sendTo")), DeleteEntry((request + "_status")), DeleteEntry(("awaits_" + request))]
65+ then [DeleteEntry((request + "_sendTo")), DeleteEntry((request + "_status")), DeleteEntry(("awaits_" + request)), DeleteEntry((request + "_dApp")), DeleteEntry((request + "_function")), DeleteEntry((request + "_args"))]
5866 else throw("only request owner can use this method")
5967 }
6068
7583 then {
7684 let amount1 = (getBalance(getAssetBytes(swapData[2])) - balanceBefore)
7785 if ((amount1 == amount1))
78- then {
79- let sendAction = if ((addressFromString(tryGetString((request + "_sendTo"))) != unit))
80- then [ScriptTransfer(addressFromStringValue(tryGetString((request + "_sendTo"))), amount1, getAssetBytes(swapData[2]))]
81- else nil
82- ([DeleteEntry((request + "_status")), DeleteEntry((request + "_sendTo")), DeleteEntry(("awaits_" + request))] ++ sendAction)
83- }
86+ then if ((tryGetInteger((request + "_minToReceive")) > amount1))
87+ then throw("amount to receive is too small")
88+ else {
89+ let sendAction = if ((addressFromString(tryGetString((request + "_sendTo"))) != unit))
90+ then [DeleteEntry((request + "_sendTo")), ScriptTransfer(addressFromStringValue(tryGetString((request + "_sendTo"))), amount1, getAssetBytes(swapData[2]))]
91+ else {
92+ let inv2 = invoke(addressFromStringValue(tryGetString((request + "_dApp"))), tryGetString((request + "_function")), split(tryGetString((request + "_args")), "|||"), [AttachedPayment(getAssetBytes(swapData[2]), amount1)])
93+ if ((inv2 == inv2))
94+ then [DeleteEntry((request + "_dApp")), DeleteEntry((request + "_function")), DeleteEntry((request + "_args"))]
95+ else throw("Strict value is not equal to itself.")
96+ }
97+ ([DeleteEntry((request + "_status")), DeleteEntry(("awaits_" + request))] ++ sendAction)
98+ }
8499 else throw("Strict value is not equal to itself.")
85100 }
86101 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let aggregatorAddress = Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
55
66 let whitelist = [Address(base58'3PBTPFGaKL7qEdj9Tz1QUqbvJUcPNu934j4')]
77
88 func tryGetInteger (key) = match getInteger(this, key) {
99 case b: Int =>
1010 b
1111 case _ =>
1212 0
1313 }
1414
1515
1616 func tryGetString (key) = match getString(this, key) {
1717 case b: String =>
1818 b
1919 case _ =>
2020 ""
2121 }
2222
2323
2424 func getAssetString (assetId) = match assetId {
2525 case b: ByteVector =>
2626 toBase58String(b)
2727 case _ =>
2828 "WAVES"
2929 }
3030
3131
3232 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
3333 then unit
3434 else fromBase58String(assetIdStr)
3535
3636
3737 func getBalance (assetId) = match assetId {
3838 case x: Unit =>
3939 wavesBalance(this).available
4040 case _ =>
4141 assetBalance(this, value(assetId))
4242 }
4343
4444
4545 @Callable(i)
46-func exchangeAndSendTo (asset1IdStr,recipient) = {
46+func exchangeThenTransfer (asset1IdStr,recipient,minToReceive) = {
4747 let request = toBase58String(i.transactionId)
48-[StringEntry((request + "_sendTo"), recipient), StringEntry((request + "_status"), "open"), StringEntry(("awaits_" + request), ((((getAssetString(i.payments[0].assetId) + ",") + toString(i.payments[0].amount)) + ",") + asset1IdStr))]
48+[StringEntry((request + "_sendTo"), recipient), StringEntry((request + "_status"), "open"), IntegerEntry((request + "_minToReceive"), minToReceive), StringEntry(("awaits_" + request), ((((getAssetString(i.payments[0].assetId) + ",") + toString(i.payments[0].amount)) + ",") + asset1IdStr))]
49+ }
50+
51+
52+
53+@Callable(i)
54+func exchangeThenInvoke (asset1IdStr,dApp,function,args,minToReceive) = {
55+ let request = toBase58String(i.transactionId)
56+[StringEntry((request + "_dApp"), dApp), StringEntry((request + "_function"), function), StringEntry((request + "_args"), makeString(args, "|||")), StringEntry((request + "_status"), "open"), IntegerEntry((request + "_minToReceive"), minToReceive), StringEntry(("awaits_" + request), ((((getAssetString(i.payments[0].assetId) + ",") + toString(i.payments[0].amount)) + ",") + asset1IdStr))]
4957 }
5058
5159
5260
5361 @Callable(i)
5462 func cancelExchange (request) = {
5563 let canCancel = (tryGetString((request + "_sendTo")) == toString(i.caller))
5664 if (canCancel)
57- then [DeleteEntry((request + "_sendTo")), DeleteEntry((request + "_status")), DeleteEntry(("awaits_" + request))]
65+ then [DeleteEntry((request + "_sendTo")), DeleteEntry((request + "_status")), DeleteEntry(("awaits_" + request)), DeleteEntry((request + "_dApp")), DeleteEntry((request + "_function")), DeleteEntry((request + "_args"))]
5866 else throw("only request owner can use this method")
5967 }
6068
6169
6270
6371 @Callable(i)
6472 func puzzleSwap (request,routeStr) = if ((indexOf(whitelist, i.caller) == unit))
6573 then throw("whitelist only")
6674 else if ((tryGetString((request + "_status")) != "open"))
6775 then throw("operation is not possible")
6876 else {
6977 let swapData = split(tryGetString(("awaits_" + request)), ",")
7078 let balanceBefore = getBalance(getAssetBytes(swapData[2]))
7179 if ((balanceBefore == balanceBefore))
7280 then {
7381 let inv = invoke(aggregatorAddress, "swap", [routeStr, 0], [AttachedPayment(getAssetBytes(swapData[0]), parseIntValue(swapData[1]))])
7482 if ((inv == inv))
7583 then {
7684 let amount1 = (getBalance(getAssetBytes(swapData[2])) - balanceBefore)
7785 if ((amount1 == amount1))
78- then {
79- let sendAction = if ((addressFromString(tryGetString((request + "_sendTo"))) != unit))
80- then [ScriptTransfer(addressFromStringValue(tryGetString((request + "_sendTo"))), amount1, getAssetBytes(swapData[2]))]
81- else nil
82- ([DeleteEntry((request + "_status")), DeleteEntry((request + "_sendTo")), DeleteEntry(("awaits_" + request))] ++ sendAction)
83- }
86+ then if ((tryGetInteger((request + "_minToReceive")) > amount1))
87+ then throw("amount to receive is too small")
88+ else {
89+ let sendAction = if ((addressFromString(tryGetString((request + "_sendTo"))) != unit))
90+ then [DeleteEntry((request + "_sendTo")), ScriptTransfer(addressFromStringValue(tryGetString((request + "_sendTo"))), amount1, getAssetBytes(swapData[2]))]
91+ else {
92+ let inv2 = invoke(addressFromStringValue(tryGetString((request + "_dApp"))), tryGetString((request + "_function")), split(tryGetString((request + "_args")), "|||"), [AttachedPayment(getAssetBytes(swapData[2]), amount1)])
93+ if ((inv2 == inv2))
94+ then [DeleteEntry((request + "_dApp")), DeleteEntry((request + "_function")), DeleteEntry((request + "_args"))]
95+ else throw("Strict value is not equal to itself.")
96+ }
97+ ([DeleteEntry((request + "_status")), DeleteEntry(("awaits_" + request))] ++ sendAction)
98+ }
8499 else throw("Strict value is not equal to itself.")
85100 }
86101 else throw("Strict value is not equal to itself.")
87102 }
88103 else throw("Strict value is not equal to itself.")
89104 }
90105
91106
92107 @Verifier(tx)
93108 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
94109

github/deemru/w8io/786bc32 
28.17 ms