tx · EKonYTig7JSuQXs3tMZxSKvmQSCzCdRsR852KeM7d3up 3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe: -0.01300000 Waves 2023.10.20 20:44 [3873098] smart account 3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe > SELF 0.00000000 Waves
{ "type": 13, "id": "EKonYTig7JSuQXs3tMZxSKvmQSCzCdRsR852KeM7d3up", "fee": 1300000, "feeAssetId": null, "timestamp": 1697823805442, "version": 2, "chainId": 87, "sender": "3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe", "senderPublicKey": "BmXMyLQHb5FxJtRprfQN1wTu4iW4vsjqPHTXDPJVgWKw", "proofs": [ "4KsfuNuy3fh34GBLwwy6W2b97CypxagJYodvtNu2VUm8XDUWo94eZRvLtpzqkTmG877wunUMLq2PQJxydGwFd8oR", "4vkrAkFDEqsLURU1xEnvjv1UadfajLgK1pBcpuD2Tyu5UTravGoXJgVEb8Ws6nduuvwgvEf14zrtBEhC1evC8o9X" ], "script": "base64:AAIFAAAAAAAAABcIAhIECgIICBIDCgEIEgMKAQgSAwoBCAAAACQBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MBAAAAFHN0YXRpY0tleV9lZ2dBc3NldElkAAAAAAIAAAARc3RhdGljX2VnZ0Fzc2V0SWQBAAAAGHN0YXRpY0tleV9icmVlZGVyQWRkcmVzcwAAAAACAAAAFXN0YXRpY19icmVlZGVyQWRkcmVzcwEAAAAac3RhdGljS2V5X2luY3ViYXRvckFkZHJlc3MAAAAAAgAAABdzdGF0aWNfaW5jdWJhdG9yQWRkcmVzcwEAAAAZc3RhdGljS2V5X2JhYnlEdWNrQWRkcmVzcwAAAAACAAAAFnN0YXRpY19iYWJ5RHVja0FkZHJlc3MBAAAAGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwAAAAACAAAAFXN0YXRpY19mYXJtaW5nQWRkcmVzcwEAAAAZc3RhdGljS2V5X2NmTWFzdGVyQWRkcmVzcwAAAAACAAAAFnN0YXRpY19jZk1hc3RlckFkZHJlc3MBAAAAFXN0YXRpY0tleV9odW50QWRkcmVzcwAAAAACAAAAEnN0YXRpY19odW50QWRkcmVzcwEAAAAYc3RhdGljS2V5X3JlYmlydGhBZGRyZXNzAAAAAAIAAAAVc3RhdGljX3JlYmlydGhBZGRyZXNzAQAAAB5zdGF0aWNLZXlfdHVydGxlQnJlZWRlckFkZHJlc3MAAAAAAgAAABtzdGF0aWNfdHVydGxlQnJlZWRlckFkZHJlc3MBAAAAIHN0YXRpY0tleV90dXJ0bGVJbmN1YmF0b3JBZGRyZXNzAAAAAAIAAAAdc3RhdGljX3R1cnRsZUluY3ViYXRvckFkZHJlc3MBAAAAHnN0YXRpY0tleV90dXJ0bGVTdGFraW5nQWRkcmVzcwAAAAACAAAAG3N0YXRpY190dXJ0bGVTdGFraW5nQWRkcmVzcwEAAAAec3RhdGljS2V5X3R1cnRsZVJlYmlydGhBZGRyZXNzAAAAAAIAAAAbc3RhdGljX3R1cnRsZVJlYmlydGhBZGRyZXNzAQAAABlzdGF0aWNLZXlfY2FwYWNpdHlBZGRyZXNzAAAAAAIAAAAWc3RhdGljX2NhcGFjaXR5QWRkcmVzcwEAAAANdHJ5R2V0Qm9vbGVhbgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgcBAAAADXRyeUdldEludGVnZXIAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAEAAAAOaXNWYWxpZEFkZHJlc3MAAAABAAAAB2FkZHJlc3MEAAAAByRtYXRjaDAJAAQmAAAAAQUAAAAHYWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQWRkcmVzcwQAAAABYQUAAAAHJG1hdGNoMAYHAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFHN0YXRpY0tleV9lZ2dBc3NldElkAAAAAAEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAAAAAAQAAABNnZXRJbmN1YmF0b3JBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAac3RhdGljS2V5X2luY3ViYXRvckFkZHJlc3MAAAAAAQAAABJnZXRCYWJ5RHVja0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABlzdGF0aWNLZXlfYmFieUR1Y2tBZGRyZXNzAAAAAAEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABhzdGF0aWNLZXlfZmFybWluZ0FkZHJlc3MAAAAAAQAAABJnZXRDZk1hc3RlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABlzdGF0aWNLZXlfY2ZNYXN0ZXJBZGRyZXNzAAAAAAEAAAAOZ2V0SHVudEFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABVzdGF0aWNLZXlfaHVudEFkZHJlc3MAAAAAAQAAABFnZXRSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAGHN0YXRpY0tleV9yZWJpcnRoQWRkcmVzcwAAAAABAAAAF2dldFR1cnRsZUJyZWVkZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAec3RhdGljS2V5X3R1cnRsZUJyZWVkZXJBZGRyZXNzAAAAAAEAAAAZZ2V0VHVydGxlSW5jdWJhdG9yQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAIHN0YXRpY0tleV90dXJ0bGVJbmN1YmF0b3JBZGRyZXNzAAAAAAEAAAAXZ2V0VHVydGxlU3Rha2luZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAAB5zdGF0aWNLZXlfdHVydGxlU3Rha2luZ0FkZHJlc3MAAAAAAQAAABdnZXRUdXJ0bGVSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAHnN0YXRpY0tleV90dXJ0bGVSZWJpcnRoQWRkcmVzcwAAAAABAAAAEmdldENhcGFjaXR5QWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAGXN0YXRpY0tleV9jYXBhY2l0eUFkZHJlc3MAAAAAAQAAABFnZXRUcnVzdGVkQWRkcmVzcwAAAAAJAARMAAAAAgkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAkABEwAAAACCQEAAAASZ2V0QmFieUR1Y2tBZGRyZXNzAAAAAAkABEwAAAACCQEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAACQAETAAAAAIJAQAAAA5nZXRIdW50QWRkcmVzcwAAAAAJAARMAAAAAgkBAAAAEWdldFJlYmlydGhBZGRyZXNzAAAAAAkABEwAAAACCQEAAAAXZ2V0VHVydGxlQnJl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CGFkZHJlc3NfBQAAAA5yZWZlcmVyQWRkcmVzcwIAAAANX2Vhcm5lZFJld2FyZAQAAAAWcmVmZXJhbERlbGl2ZXJlZFJld2FyZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhyZWZlcmVyXwUAAAAOcmVmZXJlckFkZHJlc3MCAAAACV9yZWZlcmFsXwUAAAAOcmVmZXJhbEFkZHJlc3MCAAAAEF9kZWxpdmVyZWRSZXdhcmQDCQAAAAAAAAIFAAAADnJlZmVyZXJBZGRyZXNzBQAAAA5yZWZlcmFsQWRkcmVzcwUAAAANc2VuZEZ1bmRzQmFjawkABRQAAAACCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAOcmVmZXJhbEFkZHJlc3MCAAAACl9yZWZlcmVkQnkFAAAADnJlZmVyZXJBZGRyZXNzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNyZWZlcmVyRWFybmVkUmV3YXJkCQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAATcmVmZXJlckVhcm5lZFJld2FyZAUAAAARcGF5bWVudEZvclJlZmVyZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFnJlZmVyYWxEZWxpdmVyZWRSZXdhcmQJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABBQAAABZyZWZlcmFsRGVsaXZlcmVkUmV3YXJkBQAAABFwYXltZW50Rm9yUmVmZXJlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhyZWZlcmVyXwUAAAAOcmVmZXJlckFkZHJlc3MCAAAACV9yZWZlcmFsXwUAAAAOcmVmZXJhbEFkZHJlc3MCAAAAB19hbW91bnQJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACHJlZmVyZXJfBQAAAA5yZWZlcmVyQWRkcmVzcwIAAAAJX3JlZmVyYWxfBQAAAA5yZWZlcmFsQWRkcmVzcwIAAAAHX2Ftb3VudAAAAAAAAAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABNyZWZlcmVyQWRkcmVzc1ZhbHVlBQAAABFwYXltZW50Rm9yUmVmZXJlcgkBAAAADWdldEVnZ0Fzc2V0SWQAAAAABQAAAANuaWwGAAAAAWkBAAAAD2NvbmZpZ3VyZU9yYWNsZQAAAAEAAAAGb3JhY2xlAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAEFJDQ086IGFkbWluIG9ubHkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAUAAAAGb3JhY2xlBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAAAwkBAAAACWlzVGVzdEVudgAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5BAAAAAlmaXJzdFVzZXIBAAAAIFEc5P1m/xJp0vFaFJ87suL0O3/By2gnojRebDjXV91tBAAAAApzZWNvbmRVc2VyAQAAACDBbN+O7dONc4+Lovn6iQ/0dc1EG1RyUqO0nNJWpC3gdQQAAAAJdGhpcmRVc2VyAQAAACDnW/SOqtL5SZ5uhCa4+X4f3GeofdwruNTqe83yaArBJQQAAAAPZmlyc3RVc2VyU2lnbmVkAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAACWZpcnN0VXNlcgAAAAAAAAAAAQMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABBQAAAAlmaXJzdFVzZXIAAAAAAAAAAAEDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAJZmlyc3RVc2VyAAAAAAAAAAABAAAAAAAAAAAABAAAABBzZWNvbmRVc2VyU2lnbmVkAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAACnNlY29uZFVzZXIAAAAAAAAAAAEDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAKc2Vjb25kVXNlcgAAAAAAAAAAAQMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACBQAAAApzZWNvbmRVc2VyAAAAAAAAAAABAAAAAAAAAAAABAAAAA90aGlyZFVzZXJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAJdGhpcmRVc2VyAAAAAAAAAAABAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEFAAAACXRoaXJkVXNlcgAAAAAAAAAAAQMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACBQAAAAl0aGlyZFVzZXIAAAAAAAAAAAEAAAAAAAAAAAAEAAAAD3NpZ25hdHVyZXNDb3VudAkAAGQAAAACCQAAZAAAAAIFAAAAD2ZpcnN0VXNlclNpZ25lZAUAAAAQc2Vjb25kVXNlclNpZ25lZAUAAAAPdGhpcmRVc2VyU2lnbmVkBAAAAAckbWF0Y2gwBQAAAAJ0eAkAAGcAAAACBQAAAA9zaWduYXR1cmVzQ291bnQAAAAAAAAAAAKMgR8O", "height": 3873098, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FECTMLW5DHu3njXRbpJP3ik9RCT4ENB5Q2WNuopuiYQ5 Next: 4Ea9Xe1VvyHyjc64myJYXWxo8zA1Lw4LCGgFnhsrNSrN Diff:
Old | New | Differences | |
---|---|---|---|
40 | 40 | func m () = "static_turtleRebirthAddress" | |
41 | 41 | ||
42 | 42 | ||
43 | - | func n (o) = { | |
44 | - | let p = getBoolean(this, o) | |
45 | - | if ($isInstanceOf(p, "Boolean")) | |
43 | + | func n () = "static_capacityAddress" | |
44 | + | ||
45 | + | ||
46 | + | func o (p) = { | |
47 | + | let q = getBoolean(this, p) | |
48 | + | if ($isInstanceOf(q, "Boolean")) | |
46 | 49 | then { | |
47 | - | let | |
48 | - | | |
50 | + | let r = q | |
51 | + | r | |
49 | 52 | } | |
50 | 53 | else false | |
51 | 54 | } | |
52 | 55 | ||
53 | 56 | ||
54 | - | func | |
55 | - | let | |
56 | - | if ($isInstanceOf( | |
57 | + | func s (p) = { | |
58 | + | let q = getInteger(this, p) | |
59 | + | if ($isInstanceOf(q, "Int")) | |
57 | 60 | then { | |
58 | - | let | |
59 | - | | |
61 | + | let r = q | |
62 | + | r | |
60 | 63 | } | |
61 | 64 | else 0 | |
62 | 65 | } | |
63 | 66 | ||
64 | 67 | ||
65 | - | func | |
66 | - | let | |
67 | - | if ($isInstanceOf( | |
68 | + | func t (u) = { | |
69 | + | let q = addressFromString(u) | |
70 | + | if ($isInstanceOf(q, "Address")) | |
68 | 71 | then { | |
69 | - | let | |
72 | + | let v = q | |
70 | 73 | true | |
71 | 74 | } | |
72 | 75 | else false | |
73 | 76 | } | |
74 | 77 | ||
75 | 78 | ||
76 | - | func | |
77 | - | let | |
78 | - | if ($isInstanceOf( | |
79 | + | func w (u,p) = { | |
80 | + | let q = getString(u, p) | |
81 | + | if ($isInstanceOf(q, "String")) | |
79 | 82 | then { | |
80 | - | let | |
81 | - | | |
83 | + | let v = q | |
84 | + | v | |
82 | 85 | } | |
83 | 86 | else "" | |
84 | 87 | } | |
85 | 88 | ||
86 | 89 | ||
87 | - | func | |
90 | + | func x (p) = w(this, p) | |
88 | 91 | ||
89 | 92 | ||
90 | - | func | |
93 | + | func y () = Address(fromBase58String(x(a()))) | |
91 | 94 | ||
92 | 95 | ||
93 | - | func | |
96 | + | func z () = fromBase58String(w(y(), b())) | |
94 | 97 | ||
95 | 98 | ||
96 | - | func | |
99 | + | func A () = Address(fromBase58String(w(y(), c()))) | |
97 | 100 | ||
98 | 101 | ||
99 | - | func | |
102 | + | func B () = Address(fromBase58String(w(y(), d()))) | |
100 | 103 | ||
101 | 104 | ||
102 | - | func | |
105 | + | func C () = Address(fromBase58String(w(y(), e()))) | |
103 | 106 | ||
104 | 107 | ||
105 | - | func | |
108 | + | func D () = Address(fromBase58String(w(y(), f()))) | |
106 | 109 | ||
107 | 110 | ||
108 | - | func | |
111 | + | func E () = Address(fromBase58String(w(y(), g()))) | |
109 | 112 | ||
110 | 113 | ||
111 | - | func | |
114 | + | func F () = Address(fromBase58String(w(y(), h()))) | |
112 | 115 | ||
113 | 116 | ||
114 | - | func | |
117 | + | func G () = Address(fromBase58String(w(y(), i()))) | |
115 | 118 | ||
116 | 119 | ||
117 | - | func | |
120 | + | func H () = Address(fromBase58String(w(y(), j()))) | |
118 | 121 | ||
119 | 122 | ||
120 | - | func | |
123 | + | func I () = Address(fromBase58String(w(y(), k()))) | |
121 | 124 | ||
122 | 125 | ||
123 | - | func | |
126 | + | func J () = Address(fromBase58String(w(y(), l()))) | |
124 | 127 | ||
125 | 128 | ||
126 | - | func | |
129 | + | func K () = Address(fromBase58String(w(y(), m()))) | |
127 | 130 | ||
128 | 131 | ||
129 | - | func | |
132 | + | func L () = Address(fromBase58String(w(y(), n()))) | |
130 | 133 | ||
131 | 134 | ||
132 | - | func L (o) = { | |
133 | - | let p = getBoolean(D(), o) | |
134 | - | if ($isInstanceOf(p, "Boolean")) | |
135 | + | func M () = [A(), C(), D(), F(), G(), H(), I(), J(), K(), L()] | |
136 | + | ||
137 | + | ||
138 | + | func N (p) = { | |
139 | + | let q = getBoolean(E(), p) | |
140 | + | if ($isInstanceOf(q, "Boolean")) | |
135 | 141 | then { | |
136 | - | let | |
137 | - | | |
142 | + | let r = q | |
143 | + | r | |
138 | 144 | } | |
139 | 145 | else false | |
140 | 146 | } | |
141 | 147 | ||
142 | 148 | ||
143 | - | func | |
149 | + | func O () = o("TESTENV") | |
144 | 150 | ||
145 | 151 | ||
146 | - | @Callable( | |
147 | - | func addRefKey ( | |
152 | + | @Callable(P) | |
153 | + | func addRefKey (Q,R) = if ((P.caller != this)) | |
148 | 154 | then throw("admin only") | |
149 | 155 | else { | |
150 | - | let | |
151 | - | if (( | |
152 | - | then [StringEntry( | |
153 | - | else throw((("The ref key \"" + | |
156 | + | let S = (("key_" + R) + "_refererAddress") | |
157 | + | if ((x(S) == "")) | |
158 | + | then [StringEntry(S, Q), StringEntry(((("address_" + Q) + "_refererKey_") + R), R)] | |
159 | + | else throw((("The ref key \"" + R) + "\" is already registered")) | |
154 | 160 | } | |
155 | 161 | ||
156 | 162 | ||
157 | 163 | ||
158 | - | @Callable( | |
159 | - | func whitelistAddress ( | |
164 | + | @Callable(P) | |
165 | + | func whitelistAddress (Q) = if ((P.caller != this)) | |
160 | 166 | then throw("RF: Only for admin!") | |
161 | - | else [BooleanEntry(( | |
167 | + | else [BooleanEntry((Q + "_whitelisted"), true)] | |
162 | 168 | ||
163 | 169 | ||
164 | 170 | ||
165 | - | @Callable( | |
166 | - | func refPayment ( | |
167 | - | let | |
168 | - | let | |
169 | - | if ((indexOf( | |
171 | + | @Callable(P) | |
172 | + | func refPayment (R) = { | |
173 | + | let T = $Tuple2([ScriptTransfer(P.caller, P.payments[0].amount, P.payments[0].assetId)], false) | |
174 | + | let U = toString(P.originCaller) | |
175 | + | if ((indexOf(M(), P.caller) == unit)) | |
170 | 176 | then throw("RC: This method can be called only by farming and incubator dApps") | |
171 | - | else if (if (( | |
172 | - | then ( | |
177 | + | else if (if ((R == "")) | |
178 | + | then (x((("address_" + U) + "_referedBy")) == "") | |
173 | 179 | else false) | |
174 | - | then | |
175 | - | else if ( | |
176 | - | then | |
180 | + | then T | |
181 | + | else if (N(("farm_" + U))) | |
182 | + | then T | |
177 | 183 | else { | |
178 | - | let | |
179 | - | let | |
180 | - | if ($isInstanceOf( | |
184 | + | let V = { | |
185 | + | let q = getString(this, (("key_" + R) + "_refererAddress")) | |
186 | + | if ($isInstanceOf(q, "String")) | |
181 | 187 | then { | |
182 | - | let | |
183 | - | | |
188 | + | let W = q | |
189 | + | W | |
184 | 190 | } | |
185 | - | else | |
191 | + | else R | |
186 | 192 | } | |
187 | - | let | |
188 | - | let | |
189 | - | if ($isInstanceOf( | |
193 | + | let Q = { | |
194 | + | let q = getString(this, (("address_" + U) + "_referedBy")) | |
195 | + | if ($isInstanceOf(q, "String")) | |
190 | 196 | then { | |
191 | - | let | |
192 | - | | |
197 | + | let W = q | |
198 | + | W | |
193 | 199 | } | |
194 | - | else | |
200 | + | else V | |
195 | 201 | } | |
196 | - | let | |
197 | - | if (( | |
202 | + | let X = P.payments[0].amount | |
203 | + | if ((P.payments[0].assetId != z())) | |
198 | 204 | then throw("Don't try to cheat the system!") | |
199 | - | else if (( | |
200 | - | then | |
201 | - | else if ((addressFromString( | |
202 | - | then | |
205 | + | else if ((o((Q + "_whitelisted")) == false)) | |
206 | + | then T | |
207 | + | else if ((addressFromString(Q) == unit)) | |
208 | + | then T | |
203 | 209 | else { | |
204 | - | let | |
205 | - | let | |
206 | - | let | |
207 | - | let | |
208 | - | let | |
209 | - | if (( | |
210 | - | then | |
211 | - | else $Tuple2([StringEntry((("address_" + | |
210 | + | let Y = addressFromStringValue(Q) | |
211 | + | let Z = addressFromStringValue(U) | |
212 | + | let aa = X | |
213 | + | let ab = (("address_" + Q) + "_earnedReward") | |
214 | + | let ac = (((("referer_" + Q) + "_referal_") + U) + "_deliveredReward") | |
215 | + | if ((Q == U)) | |
216 | + | then T | |
217 | + | else $Tuple2([StringEntry((("address_" + U) + "_referedBy"), Q), IntegerEntry(ab, (s(ab) + aa)), IntegerEntry(ac, (s(ac) + aa)), IntegerEntry((((("referer_" + Q) + "_referal_") + U) + "_amount"), (s((((("referer_" + Q) + "_referal_") + U) + "_amount")) + 1)), ScriptTransfer(Y, aa, z())], true) | |
212 | 218 | } | |
213 | 219 | } | |
214 | 220 | } | |
215 | 221 | ||
216 | 222 | ||
217 | 223 | ||
218 | - | @Callable( | |
219 | - | func configureOracle ( | |
224 | + | @Callable(P) | |
225 | + | func configureOracle (ad) = if ((P.caller != this)) | |
220 | 226 | then throw("RCCO: admin only") | |
221 | - | else [StringEntry(a(), | |
227 | + | else [StringEntry(a(), ad)] | |
222 | 228 | ||
223 | 229 | ||
224 | - | @Verifier( | |
225 | - | func | |
226 | - | then sigVerify( | |
230 | + | @Verifier(ae) | |
231 | + | func af () = if (O()) | |
232 | + | then sigVerify(ae.bodyBytes, ae.proofs[0], ae.senderPublicKey) | |
227 | 233 | else { | |
228 | - | let | |
229 | - | let | |
230 | - | let | |
231 | - | let | |
234 | + | let ag = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4' | |
235 | + | let ah = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU' | |
236 | + | let ai = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe' | |
237 | + | let aj = if (sigVerify(ae.bodyBytes, ae.proofs[0], ag)) | |
232 | 238 | then 1 | |
233 | - | else if (sigVerify( | |
239 | + | else if (sigVerify(ae.bodyBytes, ae.proofs[1], ag)) | |
234 | 240 | then 1 | |
235 | - | else if (sigVerify( | |
241 | + | else if (sigVerify(ae.bodyBytes, ae.proofs[2], ag)) | |
236 | 242 | then 1 | |
237 | 243 | else 0 | |
238 | - | let | |
244 | + | let ak = if (sigVerify(ae.bodyBytes, ae.proofs[0], ah)) | |
239 | 245 | then 1 | |
240 | - | else if (sigVerify( | |
246 | + | else if (sigVerify(ae.bodyBytes, ae.proofs[1], ah)) | |
241 | 247 | then 1 | |
242 | - | else if (sigVerify( | |
248 | + | else if (sigVerify(ae.bodyBytes, ae.proofs[2], ah)) | |
243 | 249 | then 1 | |
244 | 250 | else 0 | |
245 | - | let | |
251 | + | let al = if (sigVerify(ae.bodyBytes, ae.proofs[0], ai)) | |
246 | 252 | then 1 | |
247 | - | else if (sigVerify( | |
253 | + | else if (sigVerify(ae.bodyBytes, ae.proofs[1], ai)) | |
248 | 254 | then 1 | |
249 | - | else if (sigVerify( | |
255 | + | else if (sigVerify(ae.bodyBytes, ae.proofs[2], ai)) | |
250 | 256 | then 1 | |
251 | 257 | else 0 | |
252 | - | let | |
253 | - | let | |
254 | - | ( | |
258 | + | let am = ((aj + ak) + al) | |
259 | + | let q = ae | |
260 | + | (am >= 2) | |
255 | 261 | } | |
256 | 262 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a () = "static_oracleAddress" | |
5 | 5 | ||
6 | 6 | ||
7 | 7 | func b () = "static_eggAssetId" | |
8 | 8 | ||
9 | 9 | ||
10 | 10 | func c () = "static_breederAddress" | |
11 | 11 | ||
12 | 12 | ||
13 | 13 | func d () = "static_incubatorAddress" | |
14 | 14 | ||
15 | 15 | ||
16 | 16 | func e () = "static_babyDuckAddress" | |
17 | 17 | ||
18 | 18 | ||
19 | 19 | func f () = "static_farmingAddress" | |
20 | 20 | ||
21 | 21 | ||
22 | 22 | func g () = "static_cfMasterAddress" | |
23 | 23 | ||
24 | 24 | ||
25 | 25 | func h () = "static_huntAddress" | |
26 | 26 | ||
27 | 27 | ||
28 | 28 | func i () = "static_rebirthAddress" | |
29 | 29 | ||
30 | 30 | ||
31 | 31 | func j () = "static_turtleBreederAddress" | |
32 | 32 | ||
33 | 33 | ||
34 | 34 | func k () = "static_turtleIncubatorAddress" | |
35 | 35 | ||
36 | 36 | ||
37 | 37 | func l () = "static_turtleStakingAddress" | |
38 | 38 | ||
39 | 39 | ||
40 | 40 | func m () = "static_turtleRebirthAddress" | |
41 | 41 | ||
42 | 42 | ||
43 | - | func n (o) = { | |
44 | - | let p = getBoolean(this, o) | |
45 | - | if ($isInstanceOf(p, "Boolean")) | |
43 | + | func n () = "static_capacityAddress" | |
44 | + | ||
45 | + | ||
46 | + | func o (p) = { | |
47 | + | let q = getBoolean(this, p) | |
48 | + | if ($isInstanceOf(q, "Boolean")) | |
46 | 49 | then { | |
47 | - | let | |
48 | - | | |
50 | + | let r = q | |
51 | + | r | |
49 | 52 | } | |
50 | 53 | else false | |
51 | 54 | } | |
52 | 55 | ||
53 | 56 | ||
54 | - | func | |
55 | - | let | |
56 | - | if ($isInstanceOf( | |
57 | + | func s (p) = { | |
58 | + | let q = getInteger(this, p) | |
59 | + | if ($isInstanceOf(q, "Int")) | |
57 | 60 | then { | |
58 | - | let | |
59 | - | | |
61 | + | let r = q | |
62 | + | r | |
60 | 63 | } | |
61 | 64 | else 0 | |
62 | 65 | } | |
63 | 66 | ||
64 | 67 | ||
65 | - | func | |
66 | - | let | |
67 | - | if ($isInstanceOf( | |
68 | + | func t (u) = { | |
69 | + | let q = addressFromString(u) | |
70 | + | if ($isInstanceOf(q, "Address")) | |
68 | 71 | then { | |
69 | - | let | |
72 | + | let v = q | |
70 | 73 | true | |
71 | 74 | } | |
72 | 75 | else false | |
73 | 76 | } | |
74 | 77 | ||
75 | 78 | ||
76 | - | func | |
77 | - | let | |
78 | - | if ($isInstanceOf( | |
79 | + | func w (u,p) = { | |
80 | + | let q = getString(u, p) | |
81 | + | if ($isInstanceOf(q, "String")) | |
79 | 82 | then { | |
80 | - | let | |
81 | - | | |
83 | + | let v = q | |
84 | + | v | |
82 | 85 | } | |
83 | 86 | else "" | |
84 | 87 | } | |
85 | 88 | ||
86 | 89 | ||
87 | - | func | |
90 | + | func x (p) = w(this, p) | |
88 | 91 | ||
89 | 92 | ||
90 | - | func | |
93 | + | func y () = Address(fromBase58String(x(a()))) | |
91 | 94 | ||
92 | 95 | ||
93 | - | func | |
96 | + | func z () = fromBase58String(w(y(), b())) | |
94 | 97 | ||
95 | 98 | ||
96 | - | func | |
99 | + | func A () = Address(fromBase58String(w(y(), c()))) | |
97 | 100 | ||
98 | 101 | ||
99 | - | func | |
102 | + | func B () = Address(fromBase58String(w(y(), d()))) | |
100 | 103 | ||
101 | 104 | ||
102 | - | func | |
105 | + | func C () = Address(fromBase58String(w(y(), e()))) | |
103 | 106 | ||
104 | 107 | ||
105 | - | func | |
108 | + | func D () = Address(fromBase58String(w(y(), f()))) | |
106 | 109 | ||
107 | 110 | ||
108 | - | func | |
111 | + | func E () = Address(fromBase58String(w(y(), g()))) | |
109 | 112 | ||
110 | 113 | ||
111 | - | func | |
114 | + | func F () = Address(fromBase58String(w(y(), h()))) | |
112 | 115 | ||
113 | 116 | ||
114 | - | func | |
117 | + | func G () = Address(fromBase58String(w(y(), i()))) | |
115 | 118 | ||
116 | 119 | ||
117 | - | func | |
120 | + | func H () = Address(fromBase58String(w(y(), j()))) | |
118 | 121 | ||
119 | 122 | ||
120 | - | func | |
123 | + | func I () = Address(fromBase58String(w(y(), k()))) | |
121 | 124 | ||
122 | 125 | ||
123 | - | func | |
126 | + | func J () = Address(fromBase58String(w(y(), l()))) | |
124 | 127 | ||
125 | 128 | ||
126 | - | func | |
129 | + | func K () = Address(fromBase58String(w(y(), m()))) | |
127 | 130 | ||
128 | 131 | ||
129 | - | func | |
132 | + | func L () = Address(fromBase58String(w(y(), n()))) | |
130 | 133 | ||
131 | 134 | ||
132 | - | func L (o) = { | |
133 | - | let p = getBoolean(D(), o) | |
134 | - | if ($isInstanceOf(p, "Boolean")) | |
135 | + | func M () = [A(), C(), D(), F(), G(), H(), I(), J(), K(), L()] | |
136 | + | ||
137 | + | ||
138 | + | func N (p) = { | |
139 | + | let q = getBoolean(E(), p) | |
140 | + | if ($isInstanceOf(q, "Boolean")) | |
135 | 141 | then { | |
136 | - | let | |
137 | - | | |
142 | + | let r = q | |
143 | + | r | |
138 | 144 | } | |
139 | 145 | else false | |
140 | 146 | } | |
141 | 147 | ||
142 | 148 | ||
143 | - | func | |
149 | + | func O () = o("TESTENV") | |
144 | 150 | ||
145 | 151 | ||
146 | - | @Callable( | |
147 | - | func addRefKey ( | |
152 | + | @Callable(P) | |
153 | + | func addRefKey (Q,R) = if ((P.caller != this)) | |
148 | 154 | then throw("admin only") | |
149 | 155 | else { | |
150 | - | let | |
151 | - | if (( | |
152 | - | then [StringEntry( | |
153 | - | else throw((("The ref key \"" + | |
156 | + | let S = (("key_" + R) + "_refererAddress") | |
157 | + | if ((x(S) == "")) | |
158 | + | then [StringEntry(S, Q), StringEntry(((("address_" + Q) + "_refererKey_") + R), R)] | |
159 | + | else throw((("The ref key \"" + R) + "\" is already registered")) | |
154 | 160 | } | |
155 | 161 | ||
156 | 162 | ||
157 | 163 | ||
158 | - | @Callable( | |
159 | - | func whitelistAddress ( | |
164 | + | @Callable(P) | |
165 | + | func whitelistAddress (Q) = if ((P.caller != this)) | |
160 | 166 | then throw("RF: Only for admin!") | |
161 | - | else [BooleanEntry(( | |
167 | + | else [BooleanEntry((Q + "_whitelisted"), true)] | |
162 | 168 | ||
163 | 169 | ||
164 | 170 | ||
165 | - | @Callable( | |
166 | - | func refPayment ( | |
167 | - | let | |
168 | - | let | |
169 | - | if ((indexOf( | |
171 | + | @Callable(P) | |
172 | + | func refPayment (R) = { | |
173 | + | let T = $Tuple2([ScriptTransfer(P.caller, P.payments[0].amount, P.payments[0].assetId)], false) | |
174 | + | let U = toString(P.originCaller) | |
175 | + | if ((indexOf(M(), P.caller) == unit)) | |
170 | 176 | then throw("RC: This method can be called only by farming and incubator dApps") | |
171 | - | else if (if (( | |
172 | - | then ( | |
177 | + | else if (if ((R == "")) | |
178 | + | then (x((("address_" + U) + "_referedBy")) == "") | |
173 | 179 | else false) | |
174 | - | then | |
175 | - | else if ( | |
176 | - | then | |
180 | + | then T | |
181 | + | else if (N(("farm_" + U))) | |
182 | + | then T | |
177 | 183 | else { | |
178 | - | let | |
179 | - | let | |
180 | - | if ($isInstanceOf( | |
184 | + | let V = { | |
185 | + | let q = getString(this, (("key_" + R) + "_refererAddress")) | |
186 | + | if ($isInstanceOf(q, "String")) | |
181 | 187 | then { | |
182 | - | let | |
183 | - | | |
188 | + | let W = q | |
189 | + | W | |
184 | 190 | } | |
185 | - | else | |
191 | + | else R | |
186 | 192 | } | |
187 | - | let | |
188 | - | let | |
189 | - | if ($isInstanceOf( | |
193 | + | let Q = { | |
194 | + | let q = getString(this, (("address_" + U) + "_referedBy")) | |
195 | + | if ($isInstanceOf(q, "String")) | |
190 | 196 | then { | |
191 | - | let | |
192 | - | | |
197 | + | let W = q | |
198 | + | W | |
193 | 199 | } | |
194 | - | else | |
200 | + | else V | |
195 | 201 | } | |
196 | - | let | |
197 | - | if (( | |
202 | + | let X = P.payments[0].amount | |
203 | + | if ((P.payments[0].assetId != z())) | |
198 | 204 | then throw("Don't try to cheat the system!") | |
199 | - | else if (( | |
200 | - | then | |
201 | - | else if ((addressFromString( | |
202 | - | then | |
205 | + | else if ((o((Q + "_whitelisted")) == false)) | |
206 | + | then T | |
207 | + | else if ((addressFromString(Q) == unit)) | |
208 | + | then T | |
203 | 209 | else { | |
204 | - | let | |
205 | - | let | |
206 | - | let | |
207 | - | let | |
208 | - | let | |
209 | - | if (( | |
210 | - | then | |
211 | - | else $Tuple2([StringEntry((("address_" + | |
210 | + | let Y = addressFromStringValue(Q) | |
211 | + | let Z = addressFromStringValue(U) | |
212 | + | let aa = X | |
213 | + | let ab = (("address_" + Q) + "_earnedReward") | |
214 | + | let ac = (((("referer_" + Q) + "_referal_") + U) + "_deliveredReward") | |
215 | + | if ((Q == U)) | |
216 | + | then T | |
217 | + | else $Tuple2([StringEntry((("address_" + U) + "_referedBy"), Q), IntegerEntry(ab, (s(ab) + aa)), IntegerEntry(ac, (s(ac) + aa)), IntegerEntry((((("referer_" + Q) + "_referal_") + U) + "_amount"), (s((((("referer_" + Q) + "_referal_") + U) + "_amount")) + 1)), ScriptTransfer(Y, aa, z())], true) | |
212 | 218 | } | |
213 | 219 | } | |
214 | 220 | } | |
215 | 221 | ||
216 | 222 | ||
217 | 223 | ||
218 | - | @Callable( | |
219 | - | func configureOracle ( | |
224 | + | @Callable(P) | |
225 | + | func configureOracle (ad) = if ((P.caller != this)) | |
220 | 226 | then throw("RCCO: admin only") | |
221 | - | else [StringEntry(a(), | |
227 | + | else [StringEntry(a(), ad)] | |
222 | 228 | ||
223 | 229 | ||
224 | - | @Verifier( | |
225 | - | func | |
226 | - | then sigVerify( | |
230 | + | @Verifier(ae) | |
231 | + | func af () = if (O()) | |
232 | + | then sigVerify(ae.bodyBytes, ae.proofs[0], ae.senderPublicKey) | |
227 | 233 | else { | |
228 | - | let | |
229 | - | let | |
230 | - | let | |
231 | - | let | |
234 | + | let ag = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4' | |
235 | + | let ah = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU' | |
236 | + | let ai = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe' | |
237 | + | let aj = if (sigVerify(ae.bodyBytes, ae.proofs[0], ag)) | |
232 | 238 | then 1 | |
233 | - | else if (sigVerify( | |
239 | + | else if (sigVerify(ae.bodyBytes, ae.proofs[1], ag)) | |
234 | 240 | then 1 | |
235 | - | else if (sigVerify( | |
241 | + | else if (sigVerify(ae.bodyBytes, ae.proofs[2], ag)) | |
236 | 242 | then 1 | |
237 | 243 | else 0 | |
238 | - | let | |
244 | + | let ak = if (sigVerify(ae.bodyBytes, ae.proofs[0], ah)) | |
239 | 245 | then 1 | |
240 | - | else if (sigVerify( | |
246 | + | else if (sigVerify(ae.bodyBytes, ae.proofs[1], ah)) | |
241 | 247 | then 1 | |
242 | - | else if (sigVerify( | |
248 | + | else if (sigVerify(ae.bodyBytes, ae.proofs[2], ah)) | |
243 | 249 | then 1 | |
244 | 250 | else 0 | |
245 | - | let | |
251 | + | let al = if (sigVerify(ae.bodyBytes, ae.proofs[0], ai)) | |
246 | 252 | then 1 | |
247 | - | else if (sigVerify( | |
253 | + | else if (sigVerify(ae.bodyBytes, ae.proofs[1], ai)) | |
248 | 254 | then 1 | |
249 | - | else if (sigVerify( | |
255 | + | else if (sigVerify(ae.bodyBytes, ae.proofs[2], ai)) | |
250 | 256 | then 1 | |
251 | 257 | else 0 | |
252 | - | let | |
253 | - | let | |
254 | - | ( | |
258 | + | let am = ((aj + ak) + al) | |
259 | + | let q = ae | |
260 | + | (am >= 2) | |
255 | 261 | } | |
256 | 262 |
github/deemru/w8io/873ac7e 92.66 ms ◑![]()