2022.09.30 11:51 [3317121] smart account 3PDW5NBHrSqYhwB8KJidBfprM6n6KPCykBB > SELF 0.00000000 Waves
{ "type": 13, "id": "Aurs3hoqM7GJvnbiSjpXEeAVxzLELQSRcfs8ukHFu5UQ", "fee": 1000000, "feeAssetId": null, "timestamp": 1664527861308, "version": 2, "chainId": 87, "sender": "3PDW5NBHrSqYhwB8KJidBfprM6n6KPCykBB", "senderPublicKey": "DMmtRAJdLQA417x1KZQ7F9MH9HxBHvaYsFhMZiS1hDnP", "proofs": [ "2U1a5ydFHFPEPoj89jWKZNvcdHvvFC1EhcTXFg6SpGqgRMbwWj7tc7XieDHSAnd7MFoRZViefMpm1QryaFiWZ8Rd" ], "script": "base64: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IHBlcmZvcm0gdGhpcyBvcGVyYXRpb24JAAUUAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAZ0b2FkZHIFAAAABmFtb3VudAUAAAAKc2hpbnl3Z2dpZAUAAAADbmlsBQAAAAZhbW91bnQAAAABaQEAAAAaZGlzdHJpYnV0ZU5hdGlvblBheVJld2FyZHMAAAABAAAADmFzc2V0QnVpbGRDb3N0AwkBAAAAASEAAAABCQEAAAAKY2hlY2tBZG1pbgAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAADB5b3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24EAAAADVRvQWRtaW5XYWxsZXQJAABpAAAAAgkAAGgAAAACBQAAAA5hc3NldEJ1aWxkQ29zdAAAAAAAAAAABQAAAAAAAAAAZAQAAAATVG9HYW1lUmV3YXJkc1dhbGxldAkAAGkAAAACCQAAaAAAAAIFAAAADmFzc2V0QnVpbGRDb3N0AAAAAAAAAAAKAAAAAAAAAABkBAAAABZUb1N0YWtpbmdSZXdhcmRzV2FsbGV0CQAAaQAAAAIJAABoAAAAAgUAAAAOYXNzZXRCdWlsZENvc3QAAAAAAAAAAEEAAAAAAAAAAGQJAAUUAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAthZG1pbldhbGxldAUAAAANVG9BZG1pbldhbGxldAUAAAAKc2hpbnl3Z2dpZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABZkYWlseUdhbWVSZXdhcmRzV2FsbGV0BQAAABNUb0dhbWVSZXdhcmRzV2FsbGV0BQAAAApzaGlueXdnZ2lkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAGWRhaWx5U3Rha2luZ1Jld2FyZHNXYWxsZXQFAAAAFlRvU3Rha2luZ1Jld2FyZHNXYWxsZXQFAAAACnNoaW55d2dnaWQFAAAAA25pbAUAAAAOYXNzZXRCdWlsZENvc3QAAAAAnxCxKg==", "height": 3317121, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 94m5rjnST5HVVqZojoBP2ZeNTyrNYENCaddXKU64pKcN Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let shinywggid = base58'A2hcw6RV23Fc8Y8FNfV35Sq5QeS9Tgp6n8hbrESiRvXX' | |
5 | + | ||
6 | + | let treasuryAddress = base58'3PDW5NBHrSqYhwB8KJidBfprM6n6KPCykBB' | |
7 | + | ||
8 | + | let assetsAddress = base58'3PRCCnKuNS3PdbcSYcKdmTecSXXR9SE3rVb' | |
9 | + | ||
10 | + | let marketplaceAddress = base58'3P5EAhvWXJpTW5XCmw4cTRLirr5hdV43wG9' | |
11 | + | ||
12 | + | let configurationAddress = base58'3PDREv1pvqS9r2Gi5CZDHrgsQLigA9xXYp3' | |
13 | + | ||
14 | + | let nationsAddress = base58'3PAvvCSVicC2Ugsj9zWrzYmu2b6uAuGc3Fo' | |
15 | + | ||
16 | + | let adminWallet = addressFromStringValue("3PHKGy65emtBy4xxeQwz49nzSV1cqcJdw4U") | |
17 | + | ||
18 | + | let dailyGameRewardsWallet = addressFromStringValue("3PHANHAVYa72vkHVGrLqzUkyKeeEDhDknXj") | |
19 | + | ||
20 | + | let dailyStakingRewardsWallet = addressFromStringValue("3PFQGA6DA66ny11vFAWPWrqprmivyyySDCv") | |
21 | + | ||
22 | + | func checkAdmin (caller) = if (if (if (if (if ((caller == adminWallet)) | |
23 | + | then true | |
24 | + | else (caller == this)) | |
25 | + | then true | |
26 | + | else (caller.bytes == assetsAddress)) | |
27 | + | then true | |
28 | + | else (caller.bytes == treasuryAddress)) | |
29 | + | then true | |
30 | + | else (caller.bytes == marketplaceAddress)) | |
31 | + | then true | |
32 | + | else (caller.bytes == nationsAddress) | |
33 | + | ||
34 | + | ||
35 | + | func tryGetInteger (key) = match getInteger(this, key) { | |
36 | + | case b: Int => | |
37 | + | b | |
38 | + | case _ => | |
39 | + | 0 | |
40 | + | } | |
41 | + | ||
42 | + | ||
43 | + | func tryGetBoolean (key) = match getBoolean(this, key) { | |
44 | + | case b: Boolean => | |
45 | + | b | |
46 | + | case _ => | |
47 | + | false | |
48 | + | } | |
49 | + | ||
50 | + | ||
51 | + | func tryGetString (key) = match getString(this, key) { | |
52 | + | case b: String => | |
53 | + | b | |
54 | + | case _ => | |
55 | + | "" | |
56 | + | } | |
57 | + | ||
58 | + | ||
59 | + | func getALKey (Name,Level) = ((Name + "_lvl") + toString(Level)) | |
60 | + | ||
61 | + | ||
62 | + | func confTryGetInteger (key) = match getInteger(Address(configurationAddress), key) { | |
63 | + | case b: Int => | |
64 | + | b | |
65 | + | case _ => | |
66 | + | 0 | |
67 | + | } | |
68 | + | ||
69 | + | ||
70 | + | func confTryGetString (key) = match getString(Address(configurationAddress), key) { | |
71 | + | case b: String => | |
72 | + | b | |
73 | + | case _ => | |
74 | + | "" | |
75 | + | } | |
76 | + | ||
77 | + | ||
78 | + | func confTryGetBoolean (key) = match getBoolean(Address(configurationAddress), key) { | |
79 | + | case b: Boolean => | |
80 | + | b | |
81 | + | case _ => | |
82 | + | false | |
83 | + | } | |
84 | + | ||
85 | + | ||
86 | + | func getTreasuryKey (nationid) = (nationid + "_Treasury") | |
87 | + | ||
88 | + | ||
89 | + | func treasuryTryGetInteger (key) = match getInteger(Address(treasuryAddress), key) { | |
90 | + | case b: Int => | |
91 | + | b | |
92 | + | case _ => | |
93 | + | 0 | |
94 | + | } | |
95 | + | ||
96 | + | ||
97 | + | func nationsTryGetInteger (key) = match getInteger(Address(nationsAddress), key) { | |
98 | + | case b: Int => | |
99 | + | b | |
100 | + | case _ => | |
101 | + | 0 | |
102 | + | } | |
103 | + | ||
104 | + | ||
105 | + | func nationsTryGetBoolean (key) = match getBoolean(Address(nationsAddress), key) { | |
106 | + | case b: Boolean => | |
107 | + | b | |
108 | + | case _ => | |
109 | + | false | |
110 | + | } | |
111 | + | ||
112 | + | ||
113 | + | func nationsTryGetString (key) = match getString(Address(nationsAddress), key) { | |
114 | + | case b: String => | |
115 | + | b | |
116 | + | case _ => | |
117 | + | "" | |
118 | + | } | |
119 | + | ||
120 | + | ||
121 | + | func getAssetOwnerKeyString (assetId) = (assetId + "_Owner") | |
122 | + | ||
123 | + | ||
124 | + | func assetsTryGetInteger (key) = match getInteger(Address(assetsAddress), key) { | |
125 | + | case b: Int => | |
126 | + | b | |
127 | + | case _ => | |
128 | + | 0 | |
129 | + | } | |
130 | + | ||
131 | + | ||
132 | + | func internalDeposit (addressStr,amountIn) = { | |
133 | + | let amount = tryGetInteger((addressStr + "_Deposit")) | |
134 | + | [IntegerEntry((addressStr + "_Deposit"), (amount + amountIn))] | |
135 | + | } | |
136 | + | ||
137 | + | ||
138 | + | func internalPay (addressStr,amount) = { | |
139 | + | let deposited = tryGetInteger((addressStr + "_Deposit")) | |
140 | + | if ((0 > (deposited - amount))) | |
141 | + | then throw("Not enough deposit.") | |
142 | + | else if (((deposited - amount) == 0)) | |
143 | + | then [DeleteEntry((addressStr + "_Deposit"))] | |
144 | + | else [IntegerEntry((addressStr + "_Deposit"), (deposited - amount))] | |
145 | + | } | |
146 | + | ||
147 | + | ||
148 | + | func internalReserve (addressStr,amount) = { | |
149 | + | let reservedAmount = tryGetInteger((addressStr + "_Reserved")) | |
150 | + | IntegerEntry((addressStr + "_Reserved"), (reservedAmount + amount)) | |
151 | + | } | |
152 | + | ||
153 | + | ||
154 | + | func internalTransfer (fromAddress,toAddress,amount) = (internalPay(fromAddress, amount) ++ internalDeposit(toAddress, amount)) | |
155 | + | ||
156 | + | ||
157 | + | func insertRedeem (accum,nextValue) = { | |
158 | + | let val = split(nextValue, "_") | |
159 | + | let addr = val[0] | |
160 | + | let amnt = val[1] | |
161 | + | (accum :+ internalReserve(addr, parseIntValue(amnt))) | |
162 | + | } | |
163 | + | ||
164 | + | ||
165 | + | @Callable(i) | |
166 | + | func Deposit () = { | |
167 | + | let addressStr = toString(i.originCaller) | |
168 | + | let pmt = i.payments[0] | |
169 | + | if ((pmt == pmt)) | |
170 | + | then { | |
171 | + | let amountIn = value(i.payments[0].amount) | |
172 | + | if ((amountIn == amountIn)) | |
173 | + | then { | |
174 | + | let assetIn = pmt.assetId | |
175 | + | if ((assetIn == assetIn)) | |
176 | + | then if ((assetIn != shinywggid)) | |
177 | + | then throw("Only $HEG payments allowed") | |
178 | + | else { | |
179 | + | let amount = tryGetInteger((addressStr + "_Deposit")) | |
180 | + | $Tuple2(internalDeposit(addressStr, amountIn), (amount + amountIn)) | |
181 | + | } | |
182 | + | else throw("Strict value is not equal to itself.") | |
183 | + | } | |
184 | + | else throw("Strict value is not equal to itself.") | |
185 | + | } | |
186 | + | else throw("Strict value is not equal to itself.") | |
187 | + | } | |
188 | + | ||
189 | + | ||
190 | + | ||
191 | + | @Callable(i) | |
192 | + | func NoPaymentDeposit (addressStr,amountIn) = if (!(checkAdmin(i.caller))) | |
193 | + | then throw("") | |
194 | + | else { | |
195 | + | let amount = tryGetInteger((addressStr + "_Deposit")) | |
196 | + | $Tuple2(internalDeposit(addressStr, amountIn), (amount + amountIn)) | |
197 | + | } | |
198 | + | ||
199 | + | ||
200 | + | ||
201 | + | @Callable(i) | |
202 | + | func Pay (addressStr,amount) = if (!(checkAdmin(i.caller))) | |
203 | + | then throw("you are not authorized to perform this operation") | |
204 | + | else $Tuple2(internalPay(addressStr, amount), amount) | |
205 | + | ||
206 | + | ||
207 | + | ||
208 | + | @Callable(i) | |
209 | + | func CallerPay (amount) = { | |
210 | + | let callerAddr = toString(i.caller) | |
211 | + | internalPay(callerAddr, amount) | |
212 | + | } | |
213 | + | ||
214 | + | ||
215 | + | ||
216 | + | @Callable(i) | |
217 | + | func transferCoins (fromAddress,toAddress,amount) = if (if ((i.caller != adminWallet)) | |
218 | + | then (i.caller.bytes != assetsAddress) | |
219 | + | else false) | |
220 | + | then throw("you are not authorized to perform this operation") | |
221 | + | else $Tuple2(internalTransfer(fromAddress, toAddress, amount), amount) | |
222 | + | ||
223 | + | ||
224 | + | ||
225 | + | @Callable(i) | |
226 | + | func callerTransferCoins (toAddress,amount) = internalTransfer(toString(i.caller), toAddress, amount) | |
227 | + | ||
228 | + | ||
229 | + | ||
230 | + | @Callable(i) | |
231 | + | func arbitraryAddCoins (toAddress,amount) = if (!(checkAdmin(i.caller))) | |
232 | + | then throw("you are not authorized to perform this operation") | |
233 | + | else $Tuple2(internalDeposit(toAddress, amount), amount) | |
234 | + | ||
235 | + | ||
236 | + | ||
237 | + | @Callable(i) | |
238 | + | func Redeem () = { | |
239 | + | let addressStr = toString(i.caller) | |
240 | + | let reservedAmount = tryGetInteger((addressStr + "_Reserved")) | |
241 | + | if ((reservedAmount == 0)) | |
242 | + | then throw("Nothing to redeem") | |
243 | + | else [DeleteEntry((addressStr + "_Reserved")), ScriptTransfer(i.caller, reservedAmount, shinywggid)] | |
244 | + | } | |
245 | + | ||
246 | + | ||
247 | + | ||
248 | + | @Callable(i) | |
249 | + | func addReward (addressStr,amount) = if (!(checkAdmin(i.caller))) | |
250 | + | then throw("you are not authorized to perform this operation") | |
251 | + | else { | |
252 | + | let reservedAmount = tryGetInteger((addressStr + "_Reserved")) | |
253 | + | $Tuple2([IntegerEntry((addressStr + "_Reserved"), (reservedAmount + amount))], (reservedAmount + amount)) | |
254 | + | } | |
255 | + | ||
256 | + | ||
257 | + | ||
258 | + | @Callable(i) | |
259 | + | func addRewards (addr) = { | |
260 | + | let chunks = split(addr, "#") | |
261 | + | if (!(checkAdmin(i.caller))) | |
262 | + | then throw("you are not authorized to perform this operation") | |
263 | + | else { | |
264 | + | let $l = chunks | |
265 | + | let $s = size($l) | |
266 | + | let $acc0 = nil | |
267 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
268 | + | then $a | |
269 | + | else insertRedeem($a, $l[$i]) | |
270 | + | ||
271 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
272 | + | then $a | |
273 | + | else throw("List size exceeds 30") | |
274 | + | ||
275 | + | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($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), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30) | |
276 | + | } | |
277 | + | } | |
278 | + | ||
279 | + | ||
280 | + | ||
281 | + | @Callable(i) | |
282 | + | func increaseNationWallet (NationKey,amount) = if (!(checkAdmin(i.caller))) | |
283 | + | then throw("you are not authorized to perform this operation") | |
284 | + | else { | |
285 | + | let key = getTreasuryKey(NationKey) | |
286 | + | let reservedAmount = tryGetInteger(key) | |
287 | + | $Tuple2([IntegerEntry(key, (reservedAmount + amount))], (reservedAmount + amount)) | |
288 | + | } | |
289 | + | ||
290 | + | ||
291 | + | ||
292 | + | @Callable(i) | |
293 | + | func decreaseNationWallet (NationKey,amount) = if (!(checkAdmin(i.caller))) | |
294 | + | then throw("you are not authorized to perform this operation") | |
295 | + | else { | |
296 | + | let key = getTreasuryKey(NationKey) | |
297 | + | let reservedAmount = tryGetInteger(key) | |
298 | + | $Tuple2([IntegerEntry(key, (reservedAmount - amount))], amount) | |
299 | + | } | |
300 | + | ||
301 | + | ||
302 | + | ||
303 | + | @Callable(i) | |
304 | + | func adminTransfer (toaddr,amount) = if (!(checkAdmin(i.caller))) | |
305 | + | then throw("you are not authorized to perform this operation") | |
306 | + | else $Tuple2([ScriptTransfer(addressFromStringValue(toaddr), amount, shinywggid)], amount) | |
307 | + | ||
308 | + | ||
309 | + | ||
310 | + | @Callable(i) | |
311 | + | func distributeNationPayRewards (assetBuildCost) = if (!(checkAdmin(i.caller))) | |
312 | + | then throw("you are not authorized to perform this operation") | |
313 | + | else { | |
314 | + | let ToAdminWallet = ((assetBuildCost * 5) / 100) | |
315 | + | let ToGameRewardsWallet = ((assetBuildCost * 10) / 100) | |
316 | + | let ToStakingRewardsWallet = ((assetBuildCost * 65) / 100) | |
317 | + | $Tuple2([ScriptTransfer(adminWallet, ToAdminWallet, shinywggid), ScriptTransfer(dailyGameRewardsWallet, ToGameRewardsWallet, shinywggid), ScriptTransfer(dailyStakingRewardsWallet, ToStakingRewardsWallet, shinywggid)], assetBuildCost) | |
318 | + | } | |
319 | + | ||
320 | + |
github/deemru/w8io/786bc32 36.21 ms ◑