tx · DNRYHpRCin3B1H1sYupMRk26xCGRGZWPeeY3L4DhxW6G

3P7VznyyJc91e2SXpWTgc9Zp2d9XWHdwLJ1:  -0.00400000 Waves

2023.10.10 03:22 [3857672] smart account 3P7VznyyJc91e2SXpWTgc9Zp2d9XWHdwLJ1 > SELF 0.00000000 Waves

{ "type": 13, "id": "DNRYHpRCin3B1H1sYupMRk26xCGRGZWPeeY3L4DhxW6G", "fee": 400000, "feeAssetId": null, "timestamp": 1696897414231, "version": 2, "chainId": 87, "sender": "3P7VznyyJc91e2SXpWTgc9Zp2d9XWHdwLJ1", "senderPublicKey": "DiCe6VGgddpG7YfGhT4XXsPuQtiyzaV68EZUB8GNT3hs", "proofs": [ "5iTTpRPwHQ6hkPrpdvCM2Ck84grkxT44dCy64G8ZSezLD24eUcf8Ma9qPwMcdteRsaxpnDCGKESrBzAWRP8Kvc97" ], "script": "base64:BgILCAISBwoFCAgICAEMAAl1c2RuSWRTdHICLERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAZ1c2RuSWQBILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAA1saW1pdENvbnRyYWN0AiMzUEZCNkxKeVNoc0NLRUExQVUxVTFXTGJEYXpxeWo2Wkw5YgALdHNuQ29udHJhY3QCIzNQS3o1am5KTG9oRjJHalNoUTdiRzVINEJlYmRvQTk4eloyABFsZW5kUHJveHlDb250cmFjdAIjM1BHeE1adE1uTlQ5cEpDdlh4WFY0THpLcVhzanZROVhwZlIBDHRyeUdldFN0cmluZwEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWIFByRtYXRjaDAFAWICAAEOZ2V0QXNzZXRTdHJpbmcBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA2AQBBQFiAgVXQVZFUwENZ2V0QXNzZXRCeXRlcwEKYXNzZXRJZFN0cgMJAAACBQphc3NldElkU3RyAgVXQVZFUwUEdW5pdAkA2QQBBQphc3NldElkU3RyAQpnZXRCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACBFVuaXQEAXgFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJAQV2YWx1ZQEFB2Fzc2V0SWQBBnN3YXBXWAMGYXNzZXQwBmFzc2V0MQdhbW91bnQwBBNhc3NldDFCYWxhbmNlQmVmb3JlCQEKZ2V0QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUGYXNzZXQxAwkAAAIFE2Fzc2V0MUJhbGFuY2VCZWZvcmUFE2Fzc2V0MUJhbGFuY2VCZWZvcmUEBGludjEJAPwHBAkBB0FkZHJlc3MBARoBVy4qNTWxDbfxeT7ht0bQnnRSTXsx0IOuBgIEc3dhcAkAzAgCAAEJAMwIAgUGYXNzZXQxCQDMCAIJAKUIAQUEdGhpcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFBmFzc2V0MAUHYW1vdW50MAUDbmlsAwkAAAIFBGludjEFBGludjEEB2Ftb3VudDEJAGUCCQEKZ2V0QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUGYXNzZXQxBRNhc3NldDFCYWxhbmNlQmVmb3JlAwkAAAIFB2Ftb3VudDEFB2Ftb3VudDEFB2Ftb3VudDEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BCXN3YXBMaW1pdAMGcGFyYW1zBXQwU3RyBXQxU3RyCgEHZG9MaW1pdAIFYXNzZXQLb3JkZXJQYXJhbXMEA29yZAkAtQkCBQtvcmRlclBhcmFtcwIBPgQLJHQwMTU1MjE1OTcJAJQKAgkAkQMCBQNvcmQAAAkAkQMCBQNvcmQAAQQHb3JkZXJJZAgFCyR0MDE1NTIxNTk3Al8xBAtvcmRlckFtb3VudAgFCyR0MDE1NTIxNTk3Al8yBANpbnYJAPwHBAkBB0FkZHJlc3MBCQDZBAEFDWxpbWl0Q29udHJhY3QCDGZ1bGZpbGxPcmRlcgkAzAgCBQdvcmRlcklkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBWFzc2V0CQENcGFyc2VJbnRWYWx1ZQEFC29yZGVyQW1vdW50BQNuaWwDCQAAAgUDaW52BQNpbnYFBWFzc2V0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAhvcmRlcnNMaQkAtQkCBQZwYXJhbXMCAToEAnQwCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBAZyZXN1bHQKAAIkbAUIb3JkZXJzTGkKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQJ0MAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHZG9MaW1pdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACBQZyZXN1bHQFBnJlc3VsdAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQhzd2FwTGVuZAQGcGFyYW1zBXQwU3RyBXQxU3RyBmFtb3VudAQDYXJyCQC1CQIFBnBhcmFtcwIBLQQLJHQwMjAyNjIwODMJAJUKAwkAkQMCBQNhcnIAAAkAkQMCBQNhcnIAAQkAkQMCBQNhcnIAAgQMcG9vbF9hZGRyZXNzCAULJHQwMjAyNjIwODMCXzEEBWFzc2V0CAULJHQwMjAyNjIwODMCXzIEA2RpcggFCyR0MDIwMjYyMDgzAl8zBAhwcm94eUFkcgkBB0FkZHJlc3MBCQDZBAEFEWxlbmRQcm94eUNvbnRyYWN0BAxmdW5jdGlvbk5hbWUDCQAAAgUDZGlyAgEwAgZtaW50UEwCCHJlZGVlbVBMCQD8BwQFCHByb3h5QWRyBQxmdW5jdGlvbk5hbWUJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUFdDBTdHIFBmFtb3VudAUDbmlsAQFpAQl0ZXN0X3N3YXAFBGRBcHAIZEFwcFR5cGUFdDBTdHIFdDFTdHIHYW1vdW50MAQCdDAJAQ1nZXRBc3NldEJ5dGVzAQUFdDBTdHIEAnQxCQENZ2V0QXNzZXRCeXRlcwEFBXQxU3RyBAZiYWxCZWYJAQpnZXRCYWxhbmNlAQUCdDEDCQAAAgUGYmFsQmVmBQZiYWxCZWYEAmkxAwkAAAIFCGRBcHBUeXBlAgZzd29wZmkJAPwHBAkBB0FkZHJlc3MBCQDZBAEFBGRBcHACCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJ0MAUHYW1vdW50MAUDbmlsAwkAAAIFCGRBcHBUeXBlAgZwdXp6bGUJAPwHBAkBB0FkZHJlc3MBCQDZBAEFBGRBcHACBHN3YXAJAMwIAgUFdDFTdHIJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAnQwBQdhbW91bnQwBQNuaWwDCQAAAgUIZEFwcFR5cGUCAnd4CQEGc3dhcFdYAwUFdDBTdHIFBXQxU3RyBQdhbW91bnQwAwkAAAIFCGRBcHBUeXBlAgVsaW1pdAkBCXN3YXBMaW1pdAMFBGRBcHAFBXQwU3RyBQV0MVN0cgMJAAACBQhkQXBwVHlwZQIHdHN1bmFtaQkA/AcECQEHQWRkcmVzcwEJANkEAQULdHNuQ29udHJhY3QCBHN3YXAJAMwIAgUFdDFTdHIJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAnQwBQdhbW91bnQwBQNuaWwDCQAAAgUIZEFwcFR5cGUCBGxlbmQJAQhzd2FwTGVuZAQFBGRBcHAFBXQwU3RyBQV0MVN0cgUHYW1vdW50MAkAAgECMGludGVybmFsIHRlc3QgYWdncmVnYXRvciBpc3N1ZTogdW5rbm93IHBvb2wgdHlwZQMJAAACBQJpMQUCaTEECGJhbEFmdGVyCQEKZ2V0QmFsYW5jZQEFAnQxAwkAAAIFCGJhbEFmdGVyBQhiYWxBZnRlcgQDb3V0CQBlAgUIYmFsQWZ0ZXIFBmJhbEJlZgMJAAACBQNvdXQFA291dAMGCQACAQkApAMBBQNvdXQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXlXr8TZ", "height": 3857672, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A9UnPPxCy7icJ5ZrutwsTvPPLmQUFAw76dagnVubVCDS Next: ADFTpia1juFDYePHE3bgmeTeBmonJEqHeCYpp2oQBwNU Diff:
OldNewDifferences
106106 }
107107
108108
109+@Callable(i)
109110 func test_swap (dApp,dAppType,t0Str,t1Str,amount0) = {
110111 let t0 = getAssetBytes(t0Str)
111112 let t1 = getAssetBytes(t1Str)
145146 }
146147
147148
148-
149149 @Verifier(tx)
150150 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
151151
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let usdnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
55
66 let usdnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
77
88 let limitContract = "3PFB6LJyShsCKEA1AU1U1WLbDazqyj6ZL9b"
99
1010 let tsnContract = "3PKz5jnJLohF2GjShQ7bG5H4BebdoA98zZ2"
1111
1212 let lendProxyContract = "3PGxMZtMnNT9pJCvXxXV4LzKqXsjvQ9XpfR"
1313
1414 func tryGetString (key) = match getString(this, key) {
1515 case b: String =>
1616 b
1717 case _ =>
1818 ""
1919 }
2020
2121
2222 func getAssetString (assetId) = match assetId {
2323 case b: ByteVector =>
2424 toBase58String(b)
2525 case _ =>
2626 "WAVES"
2727 }
2828
2929
3030 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
3131 then unit
3232 else fromBase58String(assetIdStr)
3333
3434
3535 func getBalance (assetId) = match assetId {
3636 case x: Unit =>
3737 wavesBalance(this).available
3838 case _ =>
3939 assetBalance(this, value(assetId))
4040 }
4141
4242
4343 func swapWX (asset0,asset1,amount0) = {
4444 let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
4545 if ((asset1BalanceBefore == asset1BalanceBefore))
4646 then {
4747 let inv1 = invoke(Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93'), "swap", [1, asset1, toString(this)], [AttachedPayment(getAssetBytes(asset0), amount0)])
4848 if ((inv1 == inv1))
4949 then {
5050 let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
5151 if ((amount1 == amount1))
5252 then amount1
5353 else throw("Strict value is not equal to itself.")
5454 }
5555 else throw("Strict value is not equal to itself.")
5656 }
5757 else throw("Strict value is not equal to itself.")
5858 }
5959
6060
6161 func swapLimit (params,t0Str,t1Str) = {
6262 func doLimit (asset,orderParams) = {
6363 let ord = split(orderParams, ">")
6464 let $t015521597 = $Tuple2(ord[0], ord[1])
6565 let orderId = $t015521597._1
6666 let orderAmount = $t015521597._2
6767 let inv = invoke(Address(fromBase58String(limitContract)), "fulfillOrder", [orderId], [AttachedPayment(asset, parseIntValue(orderAmount))])
6868 if ((inv == inv))
6969 then asset
7070 else throw("Strict value is not equal to itself.")
7171 }
7272
7373 let ordersLi = split(params, ":")
7474 let t0 = getAssetBytes(t0Str)
7575 let result = {
7676 let $l = ordersLi
7777 let $s = size($l)
7878 let $acc0 = t0
7979 func $f0_1 ($a,$i) = if (($i >= $s))
8080 then $a
8181 else doLimit($a, $l[$i])
8282
8383 func $f0_2 ($a,$i) = if (($i >= $s))
8484 then $a
8585 else throw("List size exceeds 10")
8686
8787 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
8888 }
8989 if ((result == result))
9090 then 0
9191 else throw("Strict value is not equal to itself.")
9292 }
9393
9494
9595 func swapLend (params,t0Str,t1Str,amount) = {
9696 let arr = split(params, "-")
9797 let $t020262083 = $Tuple3(arr[0], arr[1], arr[2])
9898 let pool_address = $t020262083._1
9999 let asset = $t020262083._2
100100 let dir = $t020262083._3
101101 let proxyAdr = Address(fromBase58String(lendProxyContract))
102102 let functionName = if ((dir == "0"))
103103 then "mintPL"
104104 else "redeemPL"
105105 invoke(proxyAdr, functionName, [0], [AttachedPayment(getAssetBytes(t0Str), amount)])
106106 }
107107
108108
109+@Callable(i)
109110 func test_swap (dApp,dAppType,t0Str,t1Str,amount0) = {
110111 let t0 = getAssetBytes(t0Str)
111112 let t1 = getAssetBytes(t1Str)
112113 let balBef = getBalance(t1)
113114 if ((balBef == balBef))
114115 then {
115116 let i1 = if ((dAppType == "swopfi"))
116117 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
117118 else if ((dAppType == "puzzle"))
118119 then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
119120 else if ((dAppType == "wx"))
120121 then swapWX(t0Str, t1Str, amount0)
121122 else if ((dAppType == "limit"))
122123 then swapLimit(dApp, t0Str, t1Str)
123124 else if ((dAppType == "tsunami"))
124125 then invoke(Address(fromBase58String(tsnContract)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
125126 else if ((dAppType == "lend"))
126127 then swapLend(dApp, t0Str, t1Str, amount0)
127128 else throw("internal test aggregator issue: unknow pool type")
128129 if ((i1 == i1))
129130 then {
130131 let balAfter = getBalance(t1)
131132 if ((balAfter == balAfter))
132133 then {
133134 let out = (balAfter - balBef)
134135 if ((out == out))
135136 then if (true)
136137 then throw(toString(out))
137138 else nil
138139 else throw("Strict value is not equal to itself.")
139140 }
140141 else throw("Strict value is not equal to itself.")
141142 }
142143 else throw("Strict value is not equal to itself.")
143144 }
144145 else throw("Strict value is not equal to itself.")
145146 }
146147
147148
148-
149149 @Verifier(tx)
150150 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
151151

github/deemru/w8io/3ef1775 
27.53 ms