tx · 8Ghw7FGjuDfjYqNGG9ZXt73DVG76x7FceSpcMuraHP9s 3P7VznyyJc91e2SXpWTgc9Zp2d9XWHdwLJ1: -0.00300000 Waves 2023.09.26 16:54 [3838266] smart account 3P7VznyyJc91e2SXpWTgc9Zp2d9XWHdwLJ1 > SELF 0.00000000 Waves
{ "type": 13, "id": "8Ghw7FGjuDfjYqNGG9ZXt73DVG76x7FceSpcMuraHP9s", "fee": 300000, "feeAssetId": null, "timestamp": 1695736531812, "version": 2, "chainId": 87, "sender": "3P7VznyyJc91e2SXpWTgc9Zp2d9XWHdwLJ1", "senderPublicKey": "DiCe6VGgddpG7YfGhT4XXsPuQtiyzaV68EZUB8GNT3hs", "proofs": [ "2Qos3zo4DWzWNcNrriE72pY3cXxbnte8gdFCGSKMxuihWpmNFnPfHAQdAbdwVX9a7bqmgDECyCWGod7vA6Hd7VKU" ], "script": "base64:BgIECAISAAcABnBycHJwcgIjM1BKRVNWRFRIUnY4aTgzWGJtSHJSR1FoRGM1cmdSM2F6UXMAAm1wAiMzUDR1QTVldG5aaTRBbUJhYktpbnEyYk1pV1U4S2NuSFpkSAEMdHJ5R2V0U3RyaW5nAgNrZXkHYWRkcmVzcwQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABDXRyeUdldEludGVnZXICA2tleQdhZGRyZXNzBAckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEOZ2V0QXNzZXRTdHJpbmcBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA2AQBBQFiAgVXQVZFUwENZ2V0QWNjQmFsYW5jZQEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkARBnZXRfcGFyYW1zX2J5X1BMAQlwbEFzc2V0SWQECXByQWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEFBnBycHJwcgQHYXNzZXRJZAkBDHRyeUdldFN0cmluZwIJAKwCAgkArAICAgZzZXR1cF8FCXBsQXNzZXRJZAIIX2Fzc2V0SWQFCXByQWRkcmVzcwQLcG9vbEFkZHJlc3MJAQx0cnlHZXRTdHJpbmcCCQCsAgIJAKwCAgIGc2V0dXBfBQlwbEFzc2V0SWQCDF9wb29sQWRkcmVzcwUJcHJBZGRyZXNzBApwb29sRG9tYWluCQEMdHJ5R2V0U3RyaW5nAgkArAICCQCsAgICBnNldHVwXwUJcGxBc3NldElkAgtfcG9vbERvbWFpbgUJcHJBZGRyZXNzCQCVCgMFB2Fzc2V0SWQFC3Bvb2xBZGRyZXNzBQpwb29sRG9tYWluAQFpAQNwdHcABApwYXlBc3NldElkCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQECXBheUFtb3VudAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQECyR0MDEzMDkxMzk1CQEQZ2V0X3BhcmFtc19ieV9QTAEJAQ5nZXRBc3NldFN0cmluZwEFCnBheUFzc2V0SWQEB2Fzc2V0SWQIBQskdDAxMzA5MTM5NQJfMQQLcG9vbEFkZHJlc3MIBQskdDAxMzA5MTM5NQJfMgQKcG9vbERvbWFpbggFCyR0MDEzMDkxMzk1Al8zBAdwb29sQWRyCQEHQWRkcmVzcwEJANkEAQULcG9vbEFkZHJlc3MECHN1cHBsQmVmCQENdHJ5R2V0SW50ZWdlcgIJAKwCAgkArAICCQClCAEFBHRoaXMCCl9zdXBwbGllZF8FB2Fzc2V0SWQFB3Bvb2xBZHIDCQAAAgUIc3VwcGxCZWYFCHN1cHBsQmVmBAZiYWxCZWYJAQ1nZXRBY2NCYWxhbmNlAQUHYXNzZXRJZAMJAAACBQZiYWxCZWYFBmJhbEJlZgQIaW1wb3J0UEwJAPwHBAkBB0FkZHJlc3MBCQDZBAEFBnBycHJwcgIIaW1wb3J0UEwJAMwIAgUKcG9vbERvbWFpbgkAzAgCCQClCAEFBHRoaXMFA25pbAgFAWkIcGF5bWVudHMDCQAAAgUIaW1wb3J0UEwFCGltcG9ydFBMBApzdXBwbEFmdGVyCQENdHJ5R2V0SW50ZWdlcgIJAKwCAgkArAICCQClCAEFBHRoaXMCCl9zdXBwbGllZF8FB2Fzc2V0SWQFB3Bvb2xBZHIDCQAAAgUKc3VwcGxBZnRlcgUKc3VwcGxBZnRlcgQQYW1vdW50VG9XaXRoZHJhdwkAZQIFCnN1cHBsQWZ0ZXIFCHN1cHBsQmVmAwkAAAIFEGFtb3VudFRvV2l0aGRyYXcFEGFtb3VudFRvV2l0aGRyYXcEB3dpdGRyYXcJAPwHBAkBB0FkZHJlc3MBCQDZBAEFC3Bvb2xBZGRyZXNzAgh3aXRoZHJhdwkAzAgCBQdhc3NldElkCQDMCAIFEGFtb3VudFRvV2l0aGRyYXcFA25pbAUDbmlsAwkAAAIFB3dpdGRyYXcFB3dpdGRyYXcECGJhbEFmdGVyCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SWQDCQAAAgUIYmFsQWZ0ZXIFCGJhbEFmdGVyBAp3aXRoZHJhd2VkCQBlAgUIYmFsQWZ0ZXIFBmJhbEJlZgMGCQACAQkArAICCQCsAgIJAKwCAgIDMTogCQCkAwEFCXBheUFtb3VudAIFLCAyOiAJAKQDAQUKd2l0aGRyYXdlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuANDsnII=", "height": 3838266, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EcQYvSkETjL2w31qBfY9GQB65hJvSLU3qsSh4dhLCEC4 Next: HfusYovrmuQm7cGrwC8RQW8VgWAYw8RCpusW727hZrGw Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let rex_contract = "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU" | |
4 | + | let prprpr = "3PJESVDTHRv8i83XbmHrRGQhDc5rgR3azQs" | |
5 | + | ||
6 | + | let mp = "3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH" | |
7 | + | ||
8 | + | func tryGetString (key,address) = match getString(address, key) { | |
9 | + | case b: String => | |
10 | + | b | |
11 | + | case _ => | |
12 | + | "" | |
13 | + | } | |
14 | + | ||
15 | + | ||
16 | + | func tryGetInteger (key,address) = match getInteger(address, key) { | |
17 | + | case b: Int => | |
18 | + | b | |
19 | + | case _ => | |
20 | + | 0 | |
21 | + | } | |
22 | + | ||
23 | + | ||
24 | + | func getAssetString (assetId) = match assetId { | |
25 | + | case b: ByteVector => | |
26 | + | toBase58String(b) | |
27 | + | case _ => | |
28 | + | "WAVES" | |
29 | + | } | |
30 | + | ||
31 | + | ||
32 | + | func getAccBalance (assetId) = if ((assetId == "WAVES")) | |
33 | + | then wavesBalance(this).available | |
34 | + | else assetBalance(this, fromBase58String(assetId)) | |
35 | + | ||
36 | + | ||
37 | + | func get_params_by_PL (plAssetId) = { | |
38 | + | let prAddress = Address(fromBase58String(prprpr)) | |
39 | + | let assetId = tryGetString((("setup_" + plAssetId) + "_assetId"), prAddress) | |
40 | + | let poolAddress = tryGetString((("setup_" + plAssetId) + "_poolAddress"), prAddress) | |
41 | + | let poolDomain = tryGetString((("setup_" + plAssetId) + "_poolDomain"), prAddress) | |
42 | + | $Tuple3(assetId, poolAddress, poolDomain) | |
43 | + | } | |
44 | + | ||
5 | 45 | ||
6 | 46 | @Callable(i) | |
7 | - | func swap (params) = { | |
8 | - | let r = invoke(Address(fromBase58String(rex_contract)), "swap", [params, 0], i.payments) | |
9 | - | if ((r == r)) | |
10 | - | then if (true) | |
11 | - | then throw("Swap successful") | |
12 | - | else nil | |
47 | + | func ptw () = { | |
48 | + | let payAssetId = i.payments[0].assetId | |
49 | + | let payAmount = value(i.payments[0].amount) | |
50 | + | let $t013091395 = get_params_by_PL(getAssetString(payAssetId)) | |
51 | + | let assetId = $t013091395._1 | |
52 | + | let poolAddress = $t013091395._2 | |
53 | + | let poolDomain = $t013091395._3 | |
54 | + | let poolAdr = Address(fromBase58String(poolAddress)) | |
55 | + | let supplBef = tryGetInteger(((toString(this) + "_supplied_") + assetId), poolAdr) | |
56 | + | if ((supplBef == supplBef)) | |
57 | + | then { | |
58 | + | let balBef = getAccBalance(assetId) | |
59 | + | if ((balBef == balBef)) | |
60 | + | then { | |
61 | + | let importPL = invoke(Address(fromBase58String(prprpr)), "importPL", [poolDomain, toString(this)], i.payments) | |
62 | + | if ((importPL == importPL)) | |
63 | + | then { | |
64 | + | let supplAfter = tryGetInteger(((toString(this) + "_supplied_") + assetId), poolAdr) | |
65 | + | if ((supplAfter == supplAfter)) | |
66 | + | then { | |
67 | + | let amountToWithdraw = (supplAfter - supplBef) | |
68 | + | if ((amountToWithdraw == amountToWithdraw)) | |
69 | + | then { | |
70 | + | let witdraw = invoke(Address(fromBase58String(poolAddress)), "withdraw", [assetId, amountToWithdraw], nil) | |
71 | + | if ((witdraw == witdraw)) | |
72 | + | then { | |
73 | + | let balAfter = getAccBalance(assetId) | |
74 | + | if ((balAfter == balAfter)) | |
75 | + | then { | |
76 | + | let withdrawed = (balAfter - balBef) | |
77 | + | if (true) | |
78 | + | then throw(((("1: " + toString(payAmount)) + ", 2: ") + toString(withdrawed))) | |
79 | + | else nil | |
80 | + | } | |
81 | + | else throw("Strict value is not equal to itself.") | |
82 | + | } | |
83 | + | else throw("Strict value is not equal to itself.") | |
84 | + | } | |
85 | + | else throw("Strict value is not equal to itself.") | |
86 | + | } | |
87 | + | else throw("Strict value is not equal to itself.") | |
88 | + | } | |
89 | + | else throw("Strict value is not equal to itself.") | |
90 | + | } | |
91 | + | else throw("Strict value is not equal to itself.") | |
92 | + | } | |
13 | 93 | else throw("Strict value is not equal to itself.") | |
14 | 94 | } | |
15 | 95 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let rex_contract = "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU" | |
4 | + | let prprpr = "3PJESVDTHRv8i83XbmHrRGQhDc5rgR3azQs" | |
5 | + | ||
6 | + | let mp = "3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH" | |
7 | + | ||
8 | + | func tryGetString (key,address) = match getString(address, key) { | |
9 | + | case b: String => | |
10 | + | b | |
11 | + | case _ => | |
12 | + | "" | |
13 | + | } | |
14 | + | ||
15 | + | ||
16 | + | func tryGetInteger (key,address) = match getInteger(address, key) { | |
17 | + | case b: Int => | |
18 | + | b | |
19 | + | case _ => | |
20 | + | 0 | |
21 | + | } | |
22 | + | ||
23 | + | ||
24 | + | func getAssetString (assetId) = match assetId { | |
25 | + | case b: ByteVector => | |
26 | + | toBase58String(b) | |
27 | + | case _ => | |
28 | + | "WAVES" | |
29 | + | } | |
30 | + | ||
31 | + | ||
32 | + | func getAccBalance (assetId) = if ((assetId == "WAVES")) | |
33 | + | then wavesBalance(this).available | |
34 | + | else assetBalance(this, fromBase58String(assetId)) | |
35 | + | ||
36 | + | ||
37 | + | func get_params_by_PL (plAssetId) = { | |
38 | + | let prAddress = Address(fromBase58String(prprpr)) | |
39 | + | let assetId = tryGetString((("setup_" + plAssetId) + "_assetId"), prAddress) | |
40 | + | let poolAddress = tryGetString((("setup_" + plAssetId) + "_poolAddress"), prAddress) | |
41 | + | let poolDomain = tryGetString((("setup_" + plAssetId) + "_poolDomain"), prAddress) | |
42 | + | $Tuple3(assetId, poolAddress, poolDomain) | |
43 | + | } | |
44 | + | ||
5 | 45 | ||
6 | 46 | @Callable(i) | |
7 | - | func swap (params) = { | |
8 | - | let r = invoke(Address(fromBase58String(rex_contract)), "swap", [params, 0], i.payments) | |
9 | - | if ((r == r)) | |
10 | - | then if (true) | |
11 | - | then throw("Swap successful") | |
12 | - | else nil | |
47 | + | func ptw () = { | |
48 | + | let payAssetId = i.payments[0].assetId | |
49 | + | let payAmount = value(i.payments[0].amount) | |
50 | + | let $t013091395 = get_params_by_PL(getAssetString(payAssetId)) | |
51 | + | let assetId = $t013091395._1 | |
52 | + | let poolAddress = $t013091395._2 | |
53 | + | let poolDomain = $t013091395._3 | |
54 | + | let poolAdr = Address(fromBase58String(poolAddress)) | |
55 | + | let supplBef = tryGetInteger(((toString(this) + "_supplied_") + assetId), poolAdr) | |
56 | + | if ((supplBef == supplBef)) | |
57 | + | then { | |
58 | + | let balBef = getAccBalance(assetId) | |
59 | + | if ((balBef == balBef)) | |
60 | + | then { | |
61 | + | let importPL = invoke(Address(fromBase58String(prprpr)), "importPL", [poolDomain, toString(this)], i.payments) | |
62 | + | if ((importPL == importPL)) | |
63 | + | then { | |
64 | + | let supplAfter = tryGetInteger(((toString(this) + "_supplied_") + assetId), poolAdr) | |
65 | + | if ((supplAfter == supplAfter)) | |
66 | + | then { | |
67 | + | let amountToWithdraw = (supplAfter - supplBef) | |
68 | + | if ((amountToWithdraw == amountToWithdraw)) | |
69 | + | then { | |
70 | + | let witdraw = invoke(Address(fromBase58String(poolAddress)), "withdraw", [assetId, amountToWithdraw], nil) | |
71 | + | if ((witdraw == witdraw)) | |
72 | + | then { | |
73 | + | let balAfter = getAccBalance(assetId) | |
74 | + | if ((balAfter == balAfter)) | |
75 | + | then { | |
76 | + | let withdrawed = (balAfter - balBef) | |
77 | + | if (true) | |
78 | + | then throw(((("1: " + toString(payAmount)) + ", 2: ") + toString(withdrawed))) | |
79 | + | else nil | |
80 | + | } | |
81 | + | else throw("Strict value is not equal to itself.") | |
82 | + | } | |
83 | + | else throw("Strict value is not equal to itself.") | |
84 | + | } | |
85 | + | else throw("Strict value is not equal to itself.") | |
86 | + | } | |
87 | + | else throw("Strict value is not equal to itself.") | |
88 | + | } | |
89 | + | else throw("Strict value is not equal to itself.") | |
90 | + | } | |
91 | + | else throw("Strict value is not equal to itself.") | |
92 | + | } | |
13 | 93 | else throw("Strict value is not equal to itself.") | |
14 | 94 | } | |
15 | 95 | ||
16 | 96 |
github/deemru/w8io/3ef1775 21.11 ms ◑