2023.06.05 11:59 [3674689] smart account 3PLPCb3wF2H2gtzohoAjeWcGaMKEiJvtE5X > SELF 0.00000000 Waves

{ "type": 13, "id": "DZd7BeKr51Srzn7Qb9ECu9ziUrwqb1ZN1QBeGHidYzST", "fee": 1000000, "feeAssetId": null, "timestamp": 1685955609032, "version": 2, "chainId": 87, "sender": "3PLPCb3wF2H2gtzohoAjeWcGaMKEiJvtE5X", "senderPublicKey": "7or3jPDGBqg4WDqCuftD79WiF7FqgpMTqKdQ8HoMh7Wj", "proofs": [ "3YRvRxTL8P5qgkWsdJA69ne74cQ4aWohSrLemZnVZb2pCUT7Wj3cTb6AGzMbcDTQeipEAPavmkGungBbtZGM1ifB" ], "script": "base64:BgIdCAISBQoDCAgBEgcKBQgICBgBEgMKAQgSBAoCCAgIABFhZ2dyZWdhdG9yQWRkcmVzcwkBB0FkZHJlc3MBARoBV50MqsYTUaluy4D3Y33BZHji73JNqAy60wAJd2hpdGVsaXN0CQDMCAIJAQdBZGRyZXNzAQEaAVdofWqOR8dIzeZoDepD+epoIUun8GkSqYMFA25pbAENdHJ5R2V0SW50ZWdlcgEDa2V5BAckbWF0Y2gwCQCaCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEMdHJ5R2V0U3RyaW5nAQNrZXkEByRtYXRjaDAJAJ0IAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgIAAQ5nZXRBc3NldFN0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWICBVdBVkVTAQ1nZXRBc3NldEJ5dGVzAQphc3NldElkU3RyAwkAAAIFCmFzc2V0SWRTdHICBVdBVkVTBQR1bml0CQDZBAEFCmFzc2V0SWRTdHIBCmdldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIEVW5pdAQBeAUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkBBXZhbHVlAQUHYXNzZXRJZAEPZ2V0UmFuZG9tTnVtYmVyBAh2YXJpYW50cwR0eElkFGhhdGNoaW5nRmluaXNoSGVpZ2h0Bm9mZnNldAQPcmFuZG9tU2VlZEJsb2NrCQEFdmFsdWUBCQDtBwEJAGUCBRRoYXRjaGluZ0ZpbmlzaEhlaWdodAABBApyYW5kb21IYXNoCQD3AwEJAMsBAgUEdHhJZAkBBXZhbHVlAQgFD3JhbmRvbVNlZWRCbG9jawN2cmYJAGoCCQCyCQIFCnJhbmRvbUhhc2gJAGgCBQZvZmZzZXQACAUIdmFyaWFudHMEAWkBFGV4Y2hhbmdlVGhlblRyYW5zZmVyAwthc3NldDFJZFN0cglyZWNpcGllbnQMbWluVG9SZWNlaXZlBAdyZXF1ZXN0CQCsAgIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkApAMBCQEPZ2V0UmFuZG9tTnVtYmVyBACAgKjsha/RsQEJANkEAQULYXNzZXQxSWRTdHIJAGUCBQZoZWlnaHQAAgUMbWluVG9SZWNlaXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHcmVxdWVzdAIHX3NlbmRUbwUJcmVjaXBpZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHcmVxdWVzdAIHX3N0YXR1cwIEb3BlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQdyZXF1ZXN0Ag1fbWluVG9SZWNlaXZlBQxtaW5Ub1JlY2VpdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgdhd2FpdHNfBQdyZXF1ZXN0CQCsAgIJAKwCAgkArAICCQCsAgIJAQ5nZXRBc3NldFN0cmluZwEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAIBLAkApAMBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAIBLAULYXNzZXQxSWRTdHIFA25pbAFpARJleGNoYW5nZVRoZW5JbnZva2UFC2Fzc2V0MUlkU3RyBGRBcHAIZnVuY3Rpb24EYXJncwxtaW5Ub1JlY2VpdmUEB3JlcXVlc3QJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFB3JlcXVlc3QCBV9kQXBwBQRkQXBwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHcmVxdWVzdAIJX2Z1bmN0aW9uBQhmdW5jdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFB3JlcXVlc3QCBV9hcmdzCQC5CQIFBGFyZ3MCA3x8fAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFB3JlcXVlc3QCB19zdGF0dXMCBG9wZW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHcmVxdWVzdAINX21pblRvUmVjZWl2ZQUMbWluVG9SZWNlaXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHcmVxdWVzdAIHX3NlbmRUbwkApQgBCAUBaQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgdhd2FpdHNfBQdyZXF1ZXN0CQCsAgIJAKwCAgkArAICCQCsAgIJAQ5nZXRBc3NldFN0cmluZwEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAIBLAkApAMBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAIBLAULYXNzZXQxSWRTdHIFA25pbAFpAQ5jYW5jZWxFeGNoYW5nZQEHcmVxdWVzdAQJY2FuQ2FuY2VsAwkAAAIJAQx0cnlHZXRTdHJpbmcBCQCsAgIFB3JlcXVlc3QCB19zZW5kVG8JAKUIAQgFAWkGY2FsbGVyBgkAAAIJAKUIAQgFAWkGY2FsbGVyCQClCAEFBHRoaXMDBQljYW5DYW5jZWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQdyZXF1ZXN0Agdfc2VuZFRvCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUHcmVxdWVzdAIHX3N0YXR1cwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICB2F3YWl0c18FB3JlcXVlc3QJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQdyZXF1ZXN0AgVfZEFwcAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3JlcXVlc3QCCV9mdW5jdGlvbgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3JlcXVlc3QCBV9hcmdzBQNuaWwJAAIBAiZvbmx5IHJlcXVlc3Qgb3duZXIgY2FuIHVzZSB0aGlzIG1ldGhvZAFpAQpwdXp6bGVTd2FwAgdyZXF1ZXN0CHJvdXRlU3RyAwkAAAIJAM8IAgUJd2hpdGVsaXN0CAUBaQZjYWxsZXIFBHVuaXQJAAIBAg53aGl0ZWxpc3Qgb25seQMJAQIhPQIJAQx0cnlHZXRTdHJpbmcBCQCsAgIFB3JlcXVlc3QCB19zdGF0dXMCBG9wZW4JAAIBAhlvcGVyYXRpb24gaXMgbm90IHBvc3NpYmxlBAhzd2FwRGF0YQkAtQkCCQEMdHJ5R2V0U3RyaW5nAQkArAICAgdhd2FpdHNfBQdyZXF1ZXN0AgEsBA1iYWxhbmNlQmVmb3JlCQEKZ2V0QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQkAkQMCBQhzd2FwRGF0YQACAwkAAAIFDWJhbGFuY2VCZWZvcmUFDWJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBRFhZ2dyZWdhdG9yQWRkcmVzcwIEc3dhcAkAzAgCBQhyb3V0ZVN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBCQCRAwIFCHN3YXBEYXRhAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhzd2FwRGF0YQABBQNuaWwDCQAAAgUDaW52BQNpbnYEB2Ftb3VudDEJAGUCCQEKZ2V0QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQkAkQMCBQhzd2FwRGF0YQACBQ1iYWxhbmNlQmVmb3JlAwkAAAIFB2Ftb3VudDEFB2Ftb3VudDEDCQBmAgkBDXRyeUdldEludGVnZXIBCQCsAgIFB3JlcXVlc3QCDV9taW5Ub1JlY2VpdmUFB2Ftb3VudDEJAAIBAh5hbW91bnQgdG8gcmVjZWl2ZSBpcyB0b28gc21hbGwECnNlbmRBY3Rpb24DCQAAAgkBDHRyeUdldFN0cmluZwEJAKwCAgUHcmVxdWVzdAIFX2RBcHACAAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3JlcXVlc3QCB19zZW5kVG8JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBDHRyeUdldFN0cmluZwEJAKwCAgUHcmVxdWVzdAIHX3NlbmRUbwUHYW1vdW50MQkBDWdldEFzc2V0Qnl0ZXMBCQCRAwIFCHN3YXBEYXRhAAIFA25pbAQEaW52MgkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBCQEMdHJ5R2V0U3RyaW5nAQkArAICBQdyZXF1ZXN0AgVfZEFwcAkBDHRyeUdldFN0cmluZwEJAKwCAgUHcmVxdWVzdAIJX2Z1bmN0aW9uAwkAAAIJAQx0cnlHZXRTdHJpbmcBCQCsAgIFB3JlcXVlc3QCBV9hcmdzAgAFA25pbAkAtQkCCQEMdHJ5R2V0U3RyaW5nAQkArAICBQdyZXF1ZXN0AgVfYXJncwIDfHx8CQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEJAJEDAgUIc3dhcERhdGEAAgUHYW1vdW50MQUDbmlsAwkAAAIFBGludjIFBGludjIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQdyZXF1ZXN0AgVfZEFwcAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3JlcXVlc3QCCV9mdW5jdGlvbgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3JlcXVlc3QCBV9hcmdzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3JlcXVlc3QCB19zdGF0dXMJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAgdhd2FpdHNfBQdyZXF1ZXN0BQNuaWwFCnNlbmRBY3Rpb24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5GDSLbw==", "height": 3674689, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9tj1DaGsWA4G3sXSenxMs7E5JvAqxJk6e8kPEGGgLa2R Next: fcTFpkGmssJjZpkCNrwTapyt9gRGaWfLEddRzamLPxm Diff:
OldNewDifferences
5151
5252 @Callable(i)
5353 func exchangeThenTransfer (asset1IdStr,recipient,minToReceive) = {
54- let request = (toBase58String(i.transactionId) + toString(getRandomNumber(100000000000000000, i.transactionId, (height - 2), minToReceive)))
54+ let request = (toBase58String(i.transactionId) + toString(getRandomNumber(100000000000000000, fromBase58String(asset1IdStr), (height - 2), minToReceive)))
5555 [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))]
5656 }
5757
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
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 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
4646 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
4747 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
4848 (toInt(randomHash, (offset * 8)) % variants)
4949 }
5050
5151
5252 @Callable(i)
5353 func exchangeThenTransfer (asset1IdStr,recipient,minToReceive) = {
54- let request = (toBase58String(i.transactionId) + toString(getRandomNumber(100000000000000000, i.transactionId, (height - 2), minToReceive)))
54+ let request = (toBase58String(i.transactionId) + toString(getRandomNumber(100000000000000000, fromBase58String(asset1IdStr), (height - 2), minToReceive)))
5555 [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))]
5656 }
5757
5858
5959
6060 @Callable(i)
6161 func exchangeThenInvoke (asset1IdStr,dApp,function,args,minToReceive) = {
6262 let request = toBase58String(i.transactionId)
6363 [StringEntry((request + "_dApp"), dApp), StringEntry((request + "_function"), function), StringEntry((request + "_args"), makeString(args, "|||")), StringEntry((request + "_status"), "open"), IntegerEntry((request + "_minToReceive"), minToReceive), StringEntry((request + "_sendTo"), toString(i.caller)), StringEntry(("awaits_" + request), ((((getAssetString(i.payments[0].assetId) + ",") + toString(i.payments[0].amount)) + ",") + asset1IdStr))]
6464 }
6565
6666
6767
6868 @Callable(i)
6969 func cancelExchange (request) = {
7070 let canCancel = if ((tryGetString((request + "_sendTo")) == toString(i.caller)))
7171 then true
7272 else (toString(i.caller) == toString(this))
7373 if (canCancel)
7474 then [DeleteEntry((request + "_sendTo")), DeleteEntry((request + "_status")), DeleteEntry(("awaits_" + request)), DeleteEntry((request + "_dApp")), DeleteEntry((request + "_function")), DeleteEntry((request + "_args"))]
7575 else throw("only request owner can use this method")
7676 }
7777
7878
7979
8080 @Callable(i)
8181 func puzzleSwap (request,routeStr) = if ((indexOf(whitelist, i.caller) == unit))
8282 then throw("whitelist only")
8383 else if ((tryGetString((request + "_status")) != "open"))
8484 then throw("operation is not possible")
8585 else {
8686 let swapData = split(tryGetString(("awaits_" + request)), ",")
8787 let balanceBefore = getBalance(getAssetBytes(swapData[2]))
8888 if ((balanceBefore == balanceBefore))
8989 then {
9090 let inv = invoke(aggregatorAddress, "swap", [routeStr, 0], [AttachedPayment(getAssetBytes(swapData[0]), parseIntValue(swapData[1]))])
9191 if ((inv == inv))
9292 then {
9393 let amount1 = (getBalance(getAssetBytes(swapData[2])) - balanceBefore)
9494 if ((amount1 == amount1))
9595 then if ((tryGetInteger((request + "_minToReceive")) > amount1))
9696 then throw("amount to receive is too small")
9797 else {
9898 let sendAction = if ((tryGetString((request + "_dApp")) == ""))
9999 then [DeleteEntry((request + "_sendTo")), ScriptTransfer(addressFromStringValue(tryGetString((request + "_sendTo"))), amount1, getAssetBytes(swapData[2]))]
100100 else {
101101 let inv2 = invoke(addressFromStringValue(tryGetString((request + "_dApp"))), tryGetString((request + "_function")), if ((tryGetString((request + "_args")) == ""))
102102 then nil
103103 else split(tryGetString((request + "_args")), "|||"), [AttachedPayment(getAssetBytes(swapData[2]), amount1)])
104104 if ((inv2 == inv2))
105105 then [DeleteEntry((request + "_dApp")), DeleteEntry((request + "_function")), DeleteEntry((request + "_args"))]
106106 else throw("Strict value is not equal to itself.")
107107 }
108108 ([DeleteEntry((request + "_status")), DeleteEntry(("awaits_" + request))] ++ sendAction)
109109 }
110110 else throw("Strict value is not equal to itself.")
111111 }
112112 else throw("Strict value is not equal to itself.")
113113 }
114114 else throw("Strict value is not equal to itself.")
115115 }
116116
117117
118118 @Verifier(tx)
119119 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
120120

github/deemru/w8io/786bc32 
33.99 ms