tx · 5q7W59NKzU1Qb2N8QNCGKGgboATmGZohQXYpQ9vY2yYX 3PFq5vswexHUS15BXYaKMXtTDVhkUfPXoG2: -0.00400000 Waves 2022.07.19 16:01 [3212217] smart account 3PFq5vswexHUS15BXYaKMXtTDVhkUfPXoG2 > SELF 0.00000000 Waves
{ "type": 13, "id": "5q7W59NKzU1Qb2N8QNCGKGgboATmGZohQXYpQ9vY2yYX", "fee": 400000, "feeAssetId": null, "timestamp": 1658235702726, "version": 2, "chainId": 87, "sender": "3PFq5vswexHUS15BXYaKMXtTDVhkUfPXoG2", "senderPublicKey": "BmLDfnwrA4DPL2GDx65UZGp28BgtnaZs2ioyo5Y17UK4", "proofs": [ "4cSMqNNAQUkZsTxrQPyauBN3FbT3Lh7QG3diBLbpjU5qGyPLYkmAH7BLm3pzuu33hcD2AbbNJVTXA9jNr3ttumtP" ], "script": "base64:BgIQCAISAwoBCBIAEgASAwoBAQ8BDHRyeUdldFN0cmluZwEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAENdHJ5R2V0SW50ZWdlcgEDa2V5BAckbWF0Y2gwCQCaCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEJZ2V0T3JhY2xlAAkBB0FkZHJlc3MBCQDZBAEJAQx0cnlHZXRTdHJpbmcBAhRzdGF0aWNfb3JhY2xlQWRkcmVzcwENZ2V0RWdnQXNzZXRJZAAJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACEXN0YXRpY19lZ2dBc3NldElkARJnZXRCYWJ5ZHVja0FkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBDHRyeUdldFN0cmluZwECFnN0YXRpY19iYWJ5RHVja0FkZHJlc3MBD2dldFRvdGFsQnVybktleQACFUJVUk5fVE9UQUxfQU1PVU5UX05FVwESZ2V0VG90YWxCdXJuS2V5T2xkAAIVQlVSTl9UT1RBTF9BTU9VTlRfT0xEAQ5nZXRMYXN0QnVybktleQACEEJVUk5fTEFTVF9BTU9VTlQBDmdldFVzZXJCdXJuS2V5AQdhZGRyZXNzCQCsAgIJAKwCAgIFQlVSTl8FB2FkZHJlc3MCC19BTU9VTlRfTkVXARFnZXRVc2VyQnVybktleU9sZAEHYWRkcmVzcwkArAICCQCsAgICBUJVUk5fBQdhZGRyZXNzAgtfQU1PVU5UX09MRAEUdG90YWxEdWNrbGluZ3NCdXJuZWQAAh5CVVJOX1RPVEFMX0FNT1VOVF9EVUNLTElOR19ORVcBF3RvdGFsRHVja2xpbmdzQnVybmVkT2xkAAIeQlVSTl9UT1RBTF9BTU9VTlRfRFVDS0xJTkdfT0xEARZnZXRVc2VyQnVybkR1Y2tsaW5nS2V5AQdhZGRyZXNzCQCsAgIJAKwCAgIFQlVSTl8FB2FkZHJlc3MCFF9BTU9VTlRfRFVDS0xJTkdfTkVXARlnZXRVc2VyQnVybkR1Y2tsaW5nS2V5T2xkAQdhZGRyZXNzCQCsAgIJAKwCAgIFQlVSTl8FB2FkZHJlc3MCFF9BTU9VTlRfRFVDS0xJTkdfT0xEBAFpAQ9jb25maWd1cmVPcmFjbGUBBm9yYWNsZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECCmFkbWluIG9ubHkJAMwIAgkBC1N0cmluZ0VudHJ5AgIUc3RhdGljX29yYWNsZUFkZHJlc3MFBm9yYWNsZQUDbmlsAWkBFGJ1cm5BdHRhY2hlZFBheW1lbnRzAAQIcGF5bWVudHMIBQFpCHBheW1lbnRzAwkBAiE9AgkAkAMBBQhwYXltZW50cwABCQACAQIvQkFQOiBQbGVhc2UgbWFrZSBzdXJlIHRvIGF0dGFjaCBvbmx5IDEgcGF5bWVudCEECnBheW1lbnRFZ2cJAQV2YWx1ZQEJAJEDAgUIcGF5bWVudHMAAAMJAAACCAUKcGF5bWVudEVnZwdhc3NldElkCQENZ2V0RWdnQXNzZXRJZAAJAAIBAhxCQVA6IFlvdSBjYW4gb25seSBidXJuICRFR0chBAZidXJuZXIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAZhbW91bnQIBQpwYXltZW50RWdnBmFtb3VudAQRdG90YWxCdXJuVGlsbERhdGUJAQ10cnlHZXRJbnRlZ2VyAQkBD2dldFRvdGFsQnVybktleQAEF3RvdGFsQnVyblRpbGxEYXRlQnlVc2VyCQENdHJ5R2V0SW50ZWdlcgEJAQ5nZXRVc2VyQnVybktleQEFBmJ1cm5lcgkAzAgCCQEEQnVybgIJAQ1nZXRFZ2dBc3NldElkAAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESZ2V0VG90YWxCdXJuS2V5T2xkAAURdG90YWxCdXJuVGlsbERhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJARFnZXRVc2VyQnVybktleU9sZAEFBmJ1cm5lcgUXdG90YWxCdXJuVGlsbERhdGVCeVVzZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9nZXRUb3RhbEJ1cm5LZXkACQBkAgURdG90YWxCdXJuVGlsbERhdGUFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmdldFVzZXJCdXJuS2V5AQUGYnVybmVyCQBkAgUXdG90YWxCdXJuVGlsbERhdGVCeVVzZXIFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmdldExhc3RCdXJuS2V5AAUGYW1vdW50BQNuaWwBaQEMYnVybkR1Y2tsaW5nAAQIcGF5bWVudHMIBQFpCHBheW1lbnRzAwkBAiE9AgkAkAMBBQhwYXltZW50cwABCQACAQIvQkJEOiBQbGVhc2UgbWFrZSBzdXJlIHRvIGF0dGFjaCBvbmx5IDEgcGF5bWVudCEEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAgUIcGF5bWVudHMAAAMJAQIhPQIIBQdwYXltZW50BmFtb3VudAABCQACAQIoQkJEOiBQbGVhc2UgbWFrZSBzdXJlIHRvIGF0dGFjaCB0aGUgTkZUIQMJAQIhPQIICQEFdmFsdWUBCQDsBwEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQGaXNzdWVyCQESZ2V0QmFieWR1Y2tBZGRyZXNzAAkAAgECGUJCRDogVGhpcyBpcyBubyBkdWNrbGluZyEEBmFtb3VudACAiXoEBmJ1cm5lcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEEXRvdGFsQnVyblRpbGxEYXRlCQENdHJ5R2V0SW50ZWdlcgEJAQ9nZXRUb3RhbEJ1cm5LZXkABBd0b3RhbEJ1cm5UaWxsRGF0ZUJ5VXNlcgkBDXRyeUdldEludGVnZXIBCQEOZ2V0VXNlckJ1cm5LZXkBBQZidXJuZXIEE3RvdGFsRHVja2xpbmdCdXJuZWQJAQ10cnlHZXRJbnRlZ2VyAQkBFHRvdGFsRHVja2xpbmdzQnVybmVkAAQZdG90YWxEdWNrbGluZ0J1cm5lZEJ5VXNlcgkBDXRyeUdldEludGVnZXIBCQEWZ2V0VXNlckJ1cm5EdWNrbGluZ0tleQEFBmJ1cm5lcgkAzAgCCQEEQnVybgIJAQ1nZXRFZ2dBc3NldElkAAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESZ2V0VG90YWxCdXJuS2V5T2xkAAURdG90YWxCdXJuVGlsbERhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJARFnZXRVc2VyQnVybktleU9sZAEFBmJ1cm5lcgUXdG90YWxCdXJuVGlsbERhdGVCeVVzZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJARd0b3RhbER1Y2tsaW5nc0J1cm5lZE9sZAAFE3RvdGFsRHVja2xpbmdCdXJuZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARlnZXRVc2VyQnVybkR1Y2tsaW5nS2V5T2xkAQUGYnVybmVyBRl0b3RhbER1Y2tsaW5nQnVybmVkQnlVc2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPZ2V0VG90YWxCdXJuS2V5AAkAZAIFEXRvdGFsQnVyblRpbGxEYXRlBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5nZXRVc2VyQnVybktleQEFBmJ1cm5lcgkAZAIFF3RvdGFsQnVyblRpbGxEYXRlQnlVc2VyBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARR0b3RhbER1Y2tsaW5nc0J1cm5lZAAFE3RvdGFsRHVja2xpbmdCdXJuZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZnZXRVc2VyQnVybkR1Y2tsaW5nS2V5AQUGYnVybmVyBRl0b3RhbER1Y2tsaW5nQnVybmVkQnlVc2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOZ2V0TGFzdEJ1cm5LZXkABQZhbW91bnQFA25pbAFpAQxidXJuQnlJbnZva2UBBmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECGEJCSTogQWRtaW4gZmVhdHVyZSBvbmx5IQQGYnVybmVyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQRdG90YWxCdXJuVGlsbERhdGUJAQ10cnlHZXRJbnRlZ2VyAQkBD2dldFRvdGFsQnVybktleQAEF3RvdGFsQnVyblRpbGxEYXRlQnlVc2VyCQENdHJ5R2V0SW50ZWdlcgEJAQ5nZXRVc2VyQnVybktleQEFBmJ1cm5lcgkAzAgCCQEEQnVybgIJAQ1nZXRFZ2dBc3NldElkAAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESZ2V0VG90YWxCdXJuS2V5T2xkAAURdG90YWxCdXJuVGlsbERhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJARFnZXRVc2VyQnVybktleU9sZAEFBmJ1cm5lcgUXdG90YWxCdXJuVGlsbERhdGVCeVVzZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9nZXRUb3RhbEJ1cm5LZXkACQBkAgURdG90YWxCdXJuVGlsbERhdGUFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmdldFVzZXJCdXJuS2V5AQUGYnVybmVyCQBkAgUXdG90YWxCdXJuVGlsbERhdGVCeVVzZXIFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmdldExhc3RCdXJuS2V5AAUGYW1vdW50BQNuaWwAk4w42Q==", "height": 3212217, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: HaayFGYivpxjFSsP9ZfALSqZy7wMrT3oabVPLgJnuWPK Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func tryGetString (key) = match getString(this, key) { | |
5 | + | case a: String => | |
6 | + | a | |
7 | + | case _ => | |
8 | + | "" | |
9 | + | } | |
10 | + | ||
11 | + | ||
12 | + | func tryGetInteger (key) = match getInteger(this, key) { | |
13 | + | case a: Int => | |
14 | + | a | |
15 | + | case _ => | |
16 | + | 0 | |
17 | + | } | |
18 | + | ||
19 | + | ||
20 | + | func tryGetStringExternal (address,key) = match getString(address, key) { | |
21 | + | case a: String => | |
22 | + | a | |
23 | + | case _ => | |
24 | + | "" | |
25 | + | } | |
26 | + | ||
27 | + | ||
28 | + | func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress"))) | |
29 | + | ||
30 | + | ||
31 | + | func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId")) | |
32 | + | ||
33 | + | ||
34 | + | func getBabyduckAddress () = Address(fromBase58String(tryGetString("static_babyDuckAddress"))) | |
35 | + | ||
36 | + | ||
37 | + | func getTotalBurnKey () = "BURN_TOTAL_AMOUNT_NEW" | |
38 | + | ||
39 | + | ||
40 | + | func getTotalBurnKeyOld () = "BURN_TOTAL_AMOUNT_OLD" | |
41 | + | ||
42 | + | ||
43 | + | func getLastBurnKey () = "BURN_LAST_AMOUNT" | |
44 | + | ||
45 | + | ||
46 | + | func getUserBurnKey (address) = (("BURN_" + address) + "_AMOUNT_NEW") | |
47 | + | ||
48 | + | ||
49 | + | func getUserBurnKeyOld (address) = (("BURN_" + address) + "_AMOUNT_OLD") | |
50 | + | ||
51 | + | ||
52 | + | func totalDucklingsBurned () = "BURN_TOTAL_AMOUNT_DUCKLING_NEW" | |
53 | + | ||
54 | + | ||
55 | + | func totalDucklingsBurnedOld () = "BURN_TOTAL_AMOUNT_DUCKLING_OLD" | |
56 | + | ||
57 | + | ||
58 | + | func getUserBurnDucklingKey (address) = (("BURN_" + address) + "_AMOUNT_DUCKLING_NEW") | |
59 | + | ||
60 | + | ||
61 | + | func getUserBurnDucklingKeyOld (address) = (("BURN_" + address) + "_AMOUNT_DUCKLING_OLD") | |
62 | + | ||
63 | + | ||
64 | + | @Callable(i) | |
65 | + | func configureOracle (oracle) = if ((i.caller != this)) | |
66 | + | then throw("admin only") | |
67 | + | else [StringEntry("static_oracleAddress", oracle)] | |
68 | + | ||
69 | + | ||
70 | + | ||
71 | + | @Callable(i) | |
72 | + | func burnAttachedPayments () = { | |
73 | + | let payments = i.payments | |
74 | + | if ((size(payments) != 1)) | |
75 | + | then throw("BAP: Please make sure to attach only 1 payment!") | |
76 | + | else { | |
77 | + | let paymentEgg = value(payments[0]) | |
78 | + | if ((paymentEgg.assetId == getEggAssetId())) | |
79 | + | then throw("BAP: You can only burn $EGG!") | |
80 | + | else { | |
81 | + | let burner = toString(i.originCaller) | |
82 | + | let amount = paymentEgg.amount | |
83 | + | let totalBurnTillDate = tryGetInteger(getTotalBurnKey()) | |
84 | + | let totalBurnTillDateByUser = tryGetInteger(getUserBurnKey(burner)) | |
85 | + | [Burn(getEggAssetId(), amount), IntegerEntry(getTotalBurnKeyOld(), totalBurnTillDate), IntegerEntry(getUserBurnKeyOld(burner), totalBurnTillDateByUser), IntegerEntry(getTotalBurnKey(), (totalBurnTillDate + amount)), IntegerEntry(getUserBurnKey(burner), (totalBurnTillDateByUser + amount)), IntegerEntry(getLastBurnKey(), amount)] | |
86 | + | } | |
87 | + | } | |
88 | + | } | |
89 | + | ||
90 | + | ||
91 | + | ||
92 | + | @Callable(i) | |
93 | + | func burnDuckling () = { | |
94 | + | let payments = i.payments | |
95 | + | if ((size(payments) != 1)) | |
96 | + | then throw("BBD: Please make sure to attach only 1 payment!") | |
97 | + | else { | |
98 | + | let payment = value(payments[0]) | |
99 | + | if ((payment.amount != 1)) | |
100 | + | then throw("BBD: Please make sure to attach the NFT!") | |
101 | + | else if ((value(assetInfo(value(payment.assetId))).issuer != getBabyduckAddress())) | |
102 | + | then throw("BBD: This is no duckling!") | |
103 | + | else { | |
104 | + | let amount = 2000000 | |
105 | + | let burner = toString(i.originCaller) | |
106 | + | let totalBurnTillDate = tryGetInteger(getTotalBurnKey()) | |
107 | + | let totalBurnTillDateByUser = tryGetInteger(getUserBurnKey(burner)) | |
108 | + | let totalDucklingBurned = tryGetInteger(totalDucklingsBurned()) | |
109 | + | let totalDucklingBurnedByUser = tryGetInteger(getUserBurnDucklingKey(burner)) | |
110 | + | [Burn(getEggAssetId(), amount), IntegerEntry(getTotalBurnKeyOld(), totalBurnTillDate), IntegerEntry(getUserBurnKeyOld(burner), totalBurnTillDateByUser), IntegerEntry(totalDucklingsBurnedOld(), totalDucklingBurned), IntegerEntry(getUserBurnDucklingKeyOld(burner), totalDucklingBurnedByUser), IntegerEntry(getTotalBurnKey(), (totalBurnTillDate + amount)), IntegerEntry(getUserBurnKey(burner), (totalBurnTillDateByUser + amount)), IntegerEntry(totalDucklingsBurned(), totalDucklingBurned), IntegerEntry(getUserBurnDucklingKey(burner), totalDucklingBurnedByUser), IntegerEntry(getLastBurnKey(), amount)] | |
111 | + | } | |
112 | + | } | |
113 | + | } | |
114 | + | ||
115 | + | ||
116 | + | ||
117 | + | @Callable(i) | |
118 | + | func burnByInvoke (amount) = if ((i.caller != this)) | |
119 | + | then throw("BBI: Admin feature only!") | |
120 | + | else { | |
121 | + | let burner = toString(i.originCaller) | |
122 | + | let totalBurnTillDate = tryGetInteger(getTotalBurnKey()) | |
123 | + | let totalBurnTillDateByUser = tryGetInteger(getUserBurnKey(burner)) | |
124 | + | [Burn(getEggAssetId(), amount), IntegerEntry(getTotalBurnKeyOld(), totalBurnTillDate), IntegerEntry(getUserBurnKeyOld(burner), totalBurnTillDateByUser), IntegerEntry(getTotalBurnKey(), (totalBurnTillDate + amount)), IntegerEntry(getUserBurnKey(burner), (totalBurnTillDateByUser + amount)), IntegerEntry(getLastBurnKey(), amount)] | |
125 | + | } | |
126 | + | ||
127 | + |
github/deemru/w8io/3ef1775 21.42 ms ◑