tx · 67zTUPaihrCeJbJDRRaMErQkXSZHZrF163HfBrMhP7n2

3MsgzbtRg8NEkbTcHBywtwTdCe9BRxMQo5T:  -0.00400000 Waves

2024.09.24 10:20 [3297360] smart account 3MsgzbtRg8NEkbTcHBywtwTdCe9BRxMQo5T > SELF 0.00000000 Waves

{ "type": 13, "id": "67zTUPaihrCeJbJDRRaMErQkXSZHZrF163HfBrMhP7n2", "fee": 400000, "feeAssetId": null, "timestamp": 1727162455541, "version": 2, "chainId": 84, "sender": "3MsgzbtRg8NEkbTcHBywtwTdCe9BRxMQo5T", "senderPublicKey": "iTiQR3Kvxn7i8PFgEbZn36n5iFLxFwkTA6M3wi846Vx", "proofs": [ "2Sce4P1zwctuLW1QFBxYFdzFYfXtJBRXxBZLVH2A9CA5x5WGepDAJ6YnY2bbpGKHsPGHXopadkBNUuf1S8usrh9P" ], "script": "base64:BwJLCAISAwoBCBIECgIICBIECgIIARIECgIIBBIECgIIAhIDCgEIEgUKAwIBBBIECgICARIFCgMCAQISBQoDAhIREgQKAgIBEgQKAggYEAAJc2VwYXJhdG9yAgJfXwALd2F2ZXNTdHJpbmcCBVdBVkVTABBjb250cmFjdEZpbGVuYW1lAhRtZW1lX2ltX2ZhY3RvcnkucmlkZQAJa1NodXRkb3duAgwlc19fc2h1dGRvd24ACHNodXRkb3duCQELdmFsdWVPckVsc2UCCQCgCAEFCWtTaHV0ZG93bgcBB3dyYXBFcnIBAXMJAKwCAgkArAICBRBjb250cmFjdEZpbGVuYW1lAgI6IAUBcwEIdGhyb3dFcnIBAXMJAAIBCQEHd3JhcEVycgEFAXMBD3ZhbGlkYXRlQWRkcmVzcwEHYWRkcmVzcwkBCWlzRGVmaW5lZAEJAKYIAQUHYWRkcmVzcwASa0NhbGN1bGF0b3JBZGRyZXNzAhNjYWxjdWxhdG9yX19hZGRyZXNzABdjYWxjdWxhdG9yQWRkcmVzc09wdGlvbgQHJG1hdGNoMAkAnQgCBQR0aGlzBRJrQ2FsY3VsYXRvckFkZHJlc3MDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABFjYWxjdWxhdG9yQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRdjYWxjdWxhdG9yQWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAhppbnZhbGlkIGNhbGN1bGF0b3IgYWRkcmVzcwELbXVzdEFkZHJlc3MCAWkHYWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFB2FkZHJlc3MGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAEIbXVzdFRoaXMBAWkJAQttdXN0QWRkcmVzcwIFAWkFBHRoaXMBDm11c3RDYWxjdWxhdG9yAQFpCQELbXVzdEFkZHJlc3MCBQFpBRFjYWxjdWxhdG9yQWRkcmVzcwEMcGFyc2VBc3NldElkAQVpbnB1dAMJAAACBQVpbnB1dAULd2F2ZXNTdHJpbmcFBHVuaXQJANkEAQUFaW5wdXQBD2Fzc2V0SWRUb1N0cmluZwEFaW5wdXQDCQAAAgUFaW5wdXQFBHVuaXQFC3dhdmVzU3RyaW5nCQDYBAEJAQV2YWx1ZQEFBWlucHV0DAFpAQRpbml0ARRjYWxjdWxhdG9yQWRkcmVzc1N0cgQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUSa0NhbGN1bGF0b3JBZGRyZXNzBRRjYWxjdWxhdG9yQWRkcmVzc1N0cgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC3N0cmluZ0VudHJ5AgNrZXkDdmFsAwMJAQEhAQUIc2h1dGRvd24JAQ5tdXN0Q2FsY3VsYXRvcgEFAWkHCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAFpAQxpbnRlZ2VyRW50cnkCA2tleQN2YWwDAwkBASEBBQhzaHV0ZG93bgkBDm11c3RDYWxjdWxhdG9yAQUBaQcJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAFpAQxib29sZWFuRW50cnkCA2tleQN2YWwDAwkBASEBBQhzaHV0ZG93bgkBDm11c3RDYWxjdWxhdG9yAQUBaQcJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAFpAQtiaW5hcnlFbnRyeQIDa2V5A3ZhbAMDCQEBIQEFCHNodXRkb3duCQEObXVzdENhbGN1bGF0b3IBBQFpBwkAlAoCCQDMCAIJAQtCaW5hcnlFbnRyeQIFA2tleQUDdmFsBQNuaWwFA2tleQkBCHRocm93RXJyAQILbm90IGFsbG93ZWQBaQELZGVsZXRlRW50cnkBA2tleQMDCQEBIQEFCHNodXRkb3duCQEObXVzdENhbGN1bGF0b3IBBQFpBwkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEFA2tleQUDbmlsBQNrZXkJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkAWkBB3JlaXNzdWUDB2Fzc2V0SWQGYW1vdW50CnJlaXNzdWFibGUDAwkBASEBBQhzaHV0ZG93bgkBDm11c3RDYWxjdWxhdG9yAQUBaQcJAJQKAgkAzAgCCQEHUmVpc3N1ZQMFB2Fzc2V0SWQFBmFtb3VudAUKcmVpc3N1YWJsZQUDbmlsBQZhbW91bnQJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkAWkBBGJ1cm4CB2Fzc2V0SWQGYW1vdW50AwMJAQEhAQUIc2h1dGRvd24JAQ5tdXN0Q2FsY3VsYXRvcgEFAWkHCQCUCgIJAMwIAgkBBEJ1cm4CBQdhc3NldElkBQZhbW91bnQFA25pbAUGYW1vdW50CQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAFpAQ10cmFuc2ZlckFzc2V0Aw5yZWNpcGllbnRCeXRlcwZhbW91bnQHYXNzZXRJZAMDCQEBIQEFCHNodXRkb3duCQEObXVzdENhbGN1bGF0b3IBBQFpBwkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUOcmVjaXBpZW50Qnl0ZXMFBmFtb3VudAUHYXNzZXRJZAUDbmlsBQZhbW91bnQJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkAWkBDnRyYW5zZmVyQXNzZXRzAw5yZWNpcGllbnRCeXRlcwphc3NldHNMaXN0C2Ftb3VudHNMaXN0AwMJAQEhAQUIc2h1dGRvd24JAQ5tdXN0Q2FsY3VsYXRvcgEFAWkHCgEOYWRkTmV3VHJhbnNmZXICA2FjYwtuZXh0QXNzZXRJZAQLJHQwMzEwNDMxMjgFA2FjYwQJdHJhbnNmZXJzCAULJHQwMzEwNDMxMjgCXzEEAWoIBQskdDAzMTA0MzEyOAJfMgQLbmV3VHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUOcmVjaXBpZW50Qnl0ZXMJAJEDAgULYW1vdW50c0xpc3QFAWoJAJEDAgUKYXNzZXRzTGlzdAUBagQQdXBkYXRlZFRyYW5zZmVycwkAzQgCBQl0cmFuc2ZlcnMFC25ld1RyYW5zZmVyCQCUCgIFEHVwZGF0ZWRUcmFuc2ZlcnMJAGQCBQFqAAEECyR0MDMzNTQzNDM1CgACJGwFCmFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ5hZGROZXdUcmFuc2ZlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQPYXNzZXRzVHJhbnNmZXJzCAULJHQwMzM1NDM0MzUCXzEECl9sYXN0SW5kZXgIBQskdDAzMzU0MzQzNQJfMgkAlAoCBQ9hc3NldHNUcmFuc2ZlcnMFBHVuaXQJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkAWkBDXRyYW5zZmVyV2F2ZXMCDnJlY2lwaWVudEJ5dGVzBmFtb3VudAMDCQEBIQEFCHNodXRkb3duCQEObXVzdENhbGN1bGF0b3IBBQFpBwkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUOcmVjaXBpZW50Qnl0ZXMFBmFtb3VudAUEdW5pdAUDbmlsBQZhbW91bnQJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkAWkBBGNhbGwCCGZ1bmN0aW9uBGFyZ3MEDWNsZWFuUGF5bWVudHMDCQAAAggFAWkPY2FsbGVyUHVibGljS2V5ASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUDbmlsCAUBaQhwYXltZW50cwQGcmVzdWx0CQD9BwQFEWNhbGN1bGF0b3JBZGRyZXNzBQhmdW5jdGlvbgkAzAgCCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAMwIAgUEYXJncwUDbmlsBQ1jbGVhblBheW1lbnRzCQCUCgIFA25pbAUGcmVzdWx0AGelHiA=", "height": 3297360, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ExcBPwFTm6PjPPURQhH71LWHhM1U8semkRQPehswUhwU Next: 4nNS2LtTdcXrMoXYLqX8SsB26bY77pWpXQgxdA4tuW7p Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 7 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let separator = "__"
5+
6+let wavesString = "WAVES"
7+
8+let contractFilename = "meme_im_factory.ride"
9+
10+let kShutdown = "%s__shutdown"
11+
12+let shutdown = valueOrElse(getBoolean(kShutdown), false)
13+
14+func wrapErr (s) = ((contractFilename + ": ") + s)
15+
16+
17+func throwErr (s) = throw(wrapErr(s))
18+
19+
20+func validateAddress (address) = isDefined(addressFromString(address))
21+
22+
23+let kCalculatorAddress = "calculator__address"
24+
25+let calculatorAddressOption = match getString(this, kCalculatorAddress) {
26+ case s: String =>
27+ addressFromString(s)
28+ case _: Unit =>
29+ unit
30+ case _ =>
31+ throw("Match error")
32+}
33+
34+let calculatorAddress = valueOrErrorMessage(calculatorAddressOption, wrapErr("invalid calculator address"))
35+
36+func mustAddress (i,address) = if ((i.caller == address))
37+ then true
38+ else throwErr("permission denied")
39+
40+
41+func mustThis (i) = mustAddress(i, this)
42+
43+
44+func mustCalculator (i) = mustAddress(i, calculatorAddress)
45+
46+
47+func parseAssetId (input) = if ((input == wavesString))
48+ then unit
49+ else fromBase58String(input)
50+
51+
52+func assetIdToString (input) = if ((input == unit))
53+ then wavesString
54+ else toBase58String(value(input))
55+
56+
57+@Callable(i)
58+func init (calculatorAddressStr) = {
59+ let checkCaller = mustThis(i)
60+ if ((checkCaller == checkCaller))
61+ then $Tuple2([StringEntry(kCalculatorAddress, calculatorAddressStr)], unit)
62+ else throw("Strict value is not equal to itself.")
63+ }
64+
65+
66+
67+@Callable(i)
68+func stringEntry (key,val) = if (if (!(shutdown))
69+ then mustCalculator(i)
70+ else false)
71+ then $Tuple2([StringEntry(key, val)], key)
72+ else throwErr("not allowed")
73+
74+
75+
76+@Callable(i)
77+func integerEntry (key,val) = if (if (!(shutdown))
78+ then mustCalculator(i)
79+ else false)
80+ then $Tuple2([IntegerEntry(key, val)], key)
81+ else throwErr("not allowed")
82+
83+
84+
85+@Callable(i)
86+func booleanEntry (key,val) = if (if (!(shutdown))
87+ then mustCalculator(i)
88+ else false)
89+ then $Tuple2([BooleanEntry(key, val)], key)
90+ else throwErr("not allowed")
91+
92+
93+
94+@Callable(i)
95+func binaryEntry (key,val) = if (if (!(shutdown))
96+ then mustCalculator(i)
97+ else false)
98+ then $Tuple2([BinaryEntry(key, val)], key)
99+ else throwErr("not allowed")
100+
101+
102+
103+@Callable(i)
104+func deleteEntry (key) = if (if (!(shutdown))
105+ then mustCalculator(i)
106+ else false)
107+ then $Tuple2([DeleteEntry(key)], key)
108+ else throwErr("not allowed")
109+
110+
111+
112+@Callable(i)
113+func reissue (assetId,amount,reissuable) = if (if (!(shutdown))
114+ then mustCalculator(i)
115+ else false)
116+ then $Tuple2([Reissue(assetId, amount, reissuable)], amount)
117+ else throwErr("not allowed")
118+
119+
120+
121+@Callable(i)
122+func burn (assetId,amount) = if (if (!(shutdown))
123+ then mustCalculator(i)
124+ else false)
125+ then $Tuple2([Burn(assetId, amount)], amount)
126+ else throwErr("not allowed")
127+
128+
129+
130+@Callable(i)
131+func transferAsset (recipientBytes,amount,assetId) = if (if (!(shutdown))
132+ then mustCalculator(i)
133+ else false)
134+ then $Tuple2([ScriptTransfer(Address(recipientBytes), amount, assetId)], amount)
135+ else throwErr("not allowed")
136+
137+
138+
139+@Callable(i)
140+func transferAssets (recipientBytes,assetsList,amountsList) = if (if (!(shutdown))
141+ then mustCalculator(i)
142+ else false)
143+ then {
144+ func addNewTransfer (acc,nextAssetId) = {
145+ let $t031043128 = acc
146+ let transfers = $t031043128._1
147+ let j = $t031043128._2
148+ let newTransfer = ScriptTransfer(Address(recipientBytes), amountsList[j], assetsList[j])
149+ let updatedTransfers = (transfers :+ newTransfer)
150+ $Tuple2(updatedTransfers, (j + 1))
151+ }
152+
153+ let $t033543435 = {
154+ let $l = assetsList
155+ let $s = size($l)
156+ let $acc0 = $Tuple2(nil, 0)
157+ func $f0_1 ($a,$i) = if (($i >= $s))
158+ then $a
159+ else addNewTransfer($a, $l[$i])
160+
161+ func $f0_2 ($a,$i) = if (($i >= $s))
162+ then $a
163+ else throw("List size exceeds 10")
164+
165+ $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)
166+ }
167+ let assetsTransfers = $t033543435._1
168+ let _lastIndex = $t033543435._2
169+ $Tuple2(assetsTransfers, unit)
170+ }
171+ else throwErr("not allowed")
172+
173+
174+
175+@Callable(i)
176+func transferWaves (recipientBytes,amount) = if (if (!(shutdown))
177+ then mustCalculator(i)
178+ else false)
179+ then $Tuple2([ScriptTransfer(Address(recipientBytes), amount, unit)], amount)
180+ else throwErr("not allowed")
181+
182+
183+
184+@Callable(i)
185+func call (function,args) = {
186+ let cleanPayments = if ((i.callerPublicKey == base58'11111111111111111111111111111111'))
187+ then nil
188+ else i.payments
189+ let result = reentrantInvoke(calculatorAddress, function, [i.callerPublicKey, args], cleanPayments)
190+ $Tuple2(nil, result)
191+ }
192+
193+

github/deemru/w8io/c3f4982 
13.50 ms