tx · 7QskupoZEEe1LnMvCvXb32VGhZLvuopfHJSU1TzP2W6E 3N7JGFviFwrEj7xFKNwhKUWxnXXe24yhYye: -0.01400000 Waves 2022.02.02 16:19 [1906023] smart account 3N7JGFviFwrEj7xFKNwhKUWxnXXe24yhYye > SELF 0.00000000 Waves
{ "type": 13, "id": "7QskupoZEEe1LnMvCvXb32VGhZLvuopfHJSU1TzP2W6E", "fee": 1400000, "feeAssetId": null, "timestamp": 1643807987336, "version": 2, "chainId": 84, "sender": "3N7JGFviFwrEj7xFKNwhKUWxnXXe24yhYye", "senderPublicKey": "FkZqxVZphPm562xfrxdYvY7jRQvpQs74beED6jP8den6", "proofs": [ "5BYih2n73exbQHFb6u3zbFCz8diq1MXgYxCAAoAqyQA9pr1b3qun3Yfi53ATHQi4xg8YWJGkwNrxwjUHHND6osAs" ], "script": "base64:AAIFAAAAAAAAAAYIAhIAEgAAAAAIAAAAAAplZ2dBc3NldElkAQAAACCQndAThUYrQOT/0+W4Ih29VYJO68zgYUpFpF33lBGEUQAAAAAQaW52ZXN0bWVudEFtb3VudAAAAAAABfXhAAAAAAAMYWRtaW5BZGRyZXNzAQAAABoBVFWcDeQ6gpSM9a1CA1qQAlfGppZ+rTdzRAEAAAANdHJ5R2V0Qm9vbGVhbgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgcBAAAAGGdldEFkZHJlc3NXaGl0ZWxpc3RlZEtleQAAAAEAAAAHYWRkcmVzcwUAAAAHYWRkcmVzcwEAAAAVZ2V0QWRkcmVzc1doaXRlbGlzdGVkAAAAAQAAAAdhZGRyZXNzCQEAAAANdHJ5R2V0Qm9vbGVhbgAAAAEJAQAAABhnZXRBZGRyZXNzV2hpdGVsaXN0ZWRLZXkAAAABBQAAAAdhZGRyZXNzAQAAAAxnZXRJc092ZXJLZXkAAAAAAgAAAAZpc092ZXIBAAAACWdldElzT3ZlcgAAAAAJAQAAAA10cnlHZXRCb29sZWFuAAAAAQkBAAAADGdldElzT3ZlcktleQAAAAAAAAACAAAAAWkBAAAABHN0b3AAAAAAAwkBAAAAAiE9AAAAAggIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwUAAAAMYWRtaW5BZGRyZXNzCQAAAgAAAAECAAAACkFkbWluIG9ubHkJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAAAxnZXRJc092ZXJLZXkAAAAABgUAAAADbmlsAAAAAWkBAAAACWdldFRpY2tldAAAAAAEAAAADWNhbGxlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAMJAQAAAAlnZXRJc092ZXIAAAAACQAAAgAAAAECAAAAHFRpY2tldHMgZGlzdHJpYnV0aW9uIGlzIG92ZXIDCQEAAAACIT0AAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAAplZ2dBc3NldElkCQAAAgAAAAEJAAEsAAAAAgIAAAA3WW91IGNhbiBhdHRhY2ggb25seSBFR0dzIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZCAtIAkAAlgAAAABBQAAAAplZ2dBc3NldElkAwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAABBpbnZlc3RtZW50QW1vdW50CQAAAgAAAAECAAAAEVdyb25nIEVHR3MgYW1vdW50AwkBAAAAFWdldEFkZHJlc3NXaGl0ZWxpc3RlZAAAAAEFAAAADWNhbGxlckFkZHJlc3MJAAACAAAAAQIAAAAZWW91IGFscmVhZHkgaGF2ZSBhIHRpY2tldAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAGGdldEFkZHJlc3NXaGl0ZWxpc3RlZEtleQAAAAEFAAAADWNhbGxlckFkZHJlc3MGBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleZO4iV8=", "height": 1906023, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6iKyAD9xCZehYzMJcAoSZH8WYLkSisFYo9KAwdcvfUgg Next: none Diff:
Old | New | Differences | |
---|---|---|---|
4 | 4 | let eggAssetId = base58'AjXHBGsVDeXETQPk3qH4CPbZdfXPyNo5XoBx7jVbtwWG' | |
5 | 5 | ||
6 | 6 | let investmentAmount = 100000000 | |
7 | + | ||
8 | + | let adminAddress = base58'3MwikA4opnqZMGVriWzH8Gq2CJXuaVBdboH' | |
7 | 9 | ||
8 | 10 | func tryGetBoolean (key) = match getBoolean(this, key) { | |
9 | 11 | case b: Boolean => | |
19 | 21 | func getAddressWhitelisted (address) = tryGetBoolean(getAddressWhitelistedKey(address)) | |
20 | 22 | ||
21 | 23 | ||
24 | + | func getIsOverKey () = "isOver" | |
25 | + | ||
26 | + | ||
27 | + | func getIsOver () = tryGetBoolean(getIsOverKey()) | |
28 | + | ||
29 | + | ||
30 | + | @Callable(i) | |
31 | + | func stop () = if ((i.caller.bytes != adminAddress)) | |
32 | + | then throw("Admin only") | |
33 | + | else [BooleanEntry(getIsOverKey(), true)] | |
34 | + | ||
35 | + | ||
36 | + | ||
22 | 37 | @Callable(i) | |
23 | 38 | func getTicket () = { | |
24 | 39 | let callerAddress = toBase58String(i.caller.bytes) | |
25 | 40 | let payment = value(i.payments[0]) | |
26 | - | if ((payment.assetId != eggAssetId)) | |
27 | - | then throw(("You can attach only EGGs with the following asset id - " + toBase58String(eggAssetId))) | |
28 | - | else if ((payment.amount != investmentAmount)) | |
29 | - | then throw("Wrong EGGs amount") | |
30 | - | else if (getAddressWhitelisted(callerAddress)) | |
31 | - | then throw("You already have a ticket") | |
32 | - | else [BooleanEntry(getAddressWhitelistedKey(callerAddress), true)] | |
41 | + | if (getIsOver()) | |
42 | + | then throw("Tickets distribution is over") | |
43 | + | else if ((payment.assetId != eggAssetId)) | |
44 | + | then throw(("You can attach only EGGs with the following asset id - " + toBase58String(eggAssetId))) | |
45 | + | else if ((payment.amount != investmentAmount)) | |
46 | + | then throw("Wrong EGGs amount") | |
47 | + | else if (getAddressWhitelisted(callerAddress)) | |
48 | + | then throw("You already have a ticket") | |
49 | + | else [BooleanEntry(getAddressWhitelistedKey(callerAddress), true)] | |
33 | 50 | } | |
34 | 51 | ||
35 | 52 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let eggAssetId = base58'AjXHBGsVDeXETQPk3qH4CPbZdfXPyNo5XoBx7jVbtwWG' | |
5 | 5 | ||
6 | 6 | let investmentAmount = 100000000 | |
7 | + | ||
8 | + | let adminAddress = base58'3MwikA4opnqZMGVriWzH8Gq2CJXuaVBdboH' | |
7 | 9 | ||
8 | 10 | func tryGetBoolean (key) = match getBoolean(this, key) { | |
9 | 11 | case b: Boolean => | |
10 | 12 | b | |
11 | 13 | case _ => | |
12 | 14 | false | |
13 | 15 | } | |
14 | 16 | ||
15 | 17 | ||
16 | 18 | func getAddressWhitelistedKey (address) = address | |
17 | 19 | ||
18 | 20 | ||
19 | 21 | func getAddressWhitelisted (address) = tryGetBoolean(getAddressWhitelistedKey(address)) | |
20 | 22 | ||
21 | 23 | ||
24 | + | func getIsOverKey () = "isOver" | |
25 | + | ||
26 | + | ||
27 | + | func getIsOver () = tryGetBoolean(getIsOverKey()) | |
28 | + | ||
29 | + | ||
30 | + | @Callable(i) | |
31 | + | func stop () = if ((i.caller.bytes != adminAddress)) | |
32 | + | then throw("Admin only") | |
33 | + | else [BooleanEntry(getIsOverKey(), true)] | |
34 | + | ||
35 | + | ||
36 | + | ||
22 | 37 | @Callable(i) | |
23 | 38 | func getTicket () = { | |
24 | 39 | let callerAddress = toBase58String(i.caller.bytes) | |
25 | 40 | let payment = value(i.payments[0]) | |
26 | - | if ((payment.assetId != eggAssetId)) | |
27 | - | then throw(("You can attach only EGGs with the following asset id - " + toBase58String(eggAssetId))) | |
28 | - | else if ((payment.amount != investmentAmount)) | |
29 | - | then throw("Wrong EGGs amount") | |
30 | - | else if (getAddressWhitelisted(callerAddress)) | |
31 | - | then throw("You already have a ticket") | |
32 | - | else [BooleanEntry(getAddressWhitelistedKey(callerAddress), true)] | |
41 | + | if (getIsOver()) | |
42 | + | then throw("Tickets distribution is over") | |
43 | + | else if ((payment.assetId != eggAssetId)) | |
44 | + | then throw(("You can attach only EGGs with the following asset id - " + toBase58String(eggAssetId))) | |
45 | + | else if ((payment.amount != investmentAmount)) | |
46 | + | then throw("Wrong EGGs amount") | |
47 | + | else if (getAddressWhitelisted(callerAddress)) | |
48 | + | then throw("You already have a ticket") | |
49 | + | else [BooleanEntry(getAddressWhitelistedKey(callerAddress), true)] | |
33 | 50 | } | |
34 | 51 | ||
35 | 52 | ||
36 | 53 | @Verifier(tx) | |
37 | 54 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
38 | 55 |
github/deemru/w8io/c3f4982 37.78 ms ◑