tx · AdvdmeYcv7DzpF6uvyKPJ46FAFkwSSL6iiiBzQT6icMm 3P7S8KE5vb65mrvqTvJ1RcjyqFLcG4YRzkC: -0.01000000 Waves 2024.04.10 09:28 [4122279] smart account 3P7S8KE5vb65mrvqTvJ1RcjyqFLcG4YRzkC > SELF 0.00000000 Waves
{ "type": 13, "id": "AdvdmeYcv7DzpF6uvyKPJ46FAFkwSSL6iiiBzQT6icMm", "fee": 1000000, "feeAssetId": null, "timestamp": 1712730514212, "version": 2, "chainId": 87, "sender": "3P7S8KE5vb65mrvqTvJ1RcjyqFLcG4YRzkC", "senderPublicKey": "BbKQxxtCrLUzBHBu5EFa5mRTV3ymZtjYaMcphEByvv85", "proofs": [ "22LRaJn1GqL3bPa41cX95eqGAWnh28H6rcspm5NMZAWVFhKHVpbC8bTtSib3V1zqs8HqTvEeMGX9zDWWm1cgPjuN" ], "script": "base64:BgIECAISAAgAEmNvbmZpZ0FkZHJlc3NTdG9yZQIGY29uZmlnAA1jb25maWdBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFEmNvbmZpZ0FkZHJlc3NTdG9yZQIYY29uZmlnIGFkZHJlc3Mgbm90IGZvdW5kAhZpbnZhbGlkIGNvbmZpZyBhZGRyZXNzAAZIRUlHSFQFBmhlaWdodAAPc3Rha2luZ0NvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCEGNvbnRyYWN0X3N0YWtpbmcCE25vIHN0YWtpbmdfY29udHJhY3QCGGludmFsaWQgc3Rha2luZyBjb250cmFjdAAObWludGVyQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUNY29uZmlnQWRkcmVzcwIPY29udHJhY3RfbWludGVyAhJubyBjb250cmFjdF9taW50ZXICF2ludmFsaWQgbWludGVyIGNvbnRyYWN0AApwd3JBc3NldElkCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ1jb25maWdBZGRyZXNzAgxwb3dlckFzc2V0SWQCFnB3ciBhc3NldCBpZCBub3QgZm91bmQADG1pblNlbnRpbmVscwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDWNvbmZpZ0FkZHJlc3MCDW1pbl9zZW50aW5lbHMCFW1pbl9zZW50aW5lbHMgbm90IHNldAAJc2VudGluZWxzBAF4CQELdmFsdWVPckVsc2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCCXNlbnRpbmVscwIAAwkAAAIFAXgCAAAACQCQAwEJALUJAgUBeAIBLAEBaQENY2xhaW1BbmRTdGFrZQAEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAZhbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQR1c2VyAg9ub3RoaW5nIGZvciB5b3UEBG1pbnQJAPwHBAUObWludGVyQ29udHJhY3QCBG1pbnQJAMwIAgUGYW1vdW50BQNuaWwFA25pbAUDbmlsAG1f5Qg=", "height": 4122279, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GYnwHFJBrUpn2iQax6dHKYUqB15um8eoemtDBbNfXWJV Next: BP7tJrxYfRdGWbsbBvLPm6HoXPhbrGYy75wJm9T96A5w Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | func writeConstString (key,value) = if (!(isDefined(getString(this, key)))) | |
5 | - | then StringEntry(key, value) | |
6 | - | else throw(("already initialized: " + key)) | |
7 | - | ||
8 | - | ||
9 | 4 | let configAddressStore = "config" | |
10 | 5 | ||
11 | 6 | let configAddress = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, configAddressStore), "config address not found")), "invalid config address") | |
12 | - | ||
13 | - | func allowed (op) = invoke(configAddress, "opAllowed", [op], nil) | |
14 | - | ||
15 | 7 | ||
16 | 8 | let HEIGHT = height | |
17 | 9 | ||
30 | 22 | else size(split(x, ",")) | |
31 | 23 | } | |
32 | 24 | ||
33 | - | func claimedStore (account) = (account + "_claimed") | |
34 | - | ||
35 | - | ||
36 | - | func adviseUser (account) = ((((((("height: " + toString(HEIGHT)) + ", account: ") + account) + ", claimable: ") + toString(valueOrElse(getInteger(account), 0))) + ", claimed: ") + toString(valueOrElse(getInteger(claimedStore(account)), 0))) | |
37 | - | ||
38 | - | ||
39 | 25 | @Callable(i) | |
40 | 26 | func claimAndStake () = { | |
41 | - | let a = allowed((toString(this) + "_claimAndStake")) | |
42 | - | if ((a == a)) | |
43 | - | then if ((sentinels >= minSentinels)) | |
44 | - | then throw("airdrop1 is closed") | |
45 | - | else { | |
46 | - | let user = toString(i.caller) | |
47 | - | let amount = valueOrErrorMessage(getInteger(user), "nothing for you") | |
48 | - | let mint = invoke(minterContract, "mint", [amount], nil) | |
49 | - | if ((mint == mint)) | |
50 | - | then { | |
51 | - | let stake = invoke(stakingContract, "stakeFor", [user], [AttachedPayment(pwrAssetId, amount)]) | |
52 | - | if ((stake == stake)) | |
53 | - | then $Tuple2([DeleteEntry(user), IntegerEntry(claimedStore(user), (valueOrElse(getInteger(this, claimedStore(user)), 0) + amount))], amount) | |
54 | - | else throw("Strict value is not equal to itself.") | |
55 | - | } | |
56 | - | else throw("Strict value is not equal to itself.") | |
57 | - | } | |
58 | - | else throw("Strict value is not equal to itself.") | |
27 | + | let user = toString(i.caller) | |
28 | + | let amount = valueOrErrorMessage(getInteger(user), "nothing for you") | |
29 | + | let mint = invoke(minterContract, "mint", [amount], nil) | |
30 | + | nil | |
59 | 31 | } | |
60 | - | ||
61 | - | ||
62 | - | ||
63 | - | @Callable(i) | |
64 | - | func init (conf) = if ((i.caller != this)) | |
65 | - | then throw("only self can init") | |
66 | - | else [writeConstString(configAddressStore, conf)] | |
67 | 32 | ||
68 | 33 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | func writeConstString (key,value) = if (!(isDefined(getString(this, key)))) | |
5 | - | then StringEntry(key, value) | |
6 | - | else throw(("already initialized: " + key)) | |
7 | - | ||
8 | - | ||
9 | 4 | let configAddressStore = "config" | |
10 | 5 | ||
11 | 6 | let configAddress = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, configAddressStore), "config address not found")), "invalid config address") | |
12 | - | ||
13 | - | func allowed (op) = invoke(configAddress, "opAllowed", [op], nil) | |
14 | - | ||
15 | 7 | ||
16 | 8 | let HEIGHT = height | |
17 | 9 | ||
18 | 10 | let stakingContract = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddress, "contract_staking"), "no staking_contract")), "invalid staking contract") | |
19 | 11 | ||
20 | 12 | let minterContract = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddress, "contract_minter"), "no contract_minter")), "invalid minter contract") | |
21 | 13 | ||
22 | 14 | let pwrAssetId = fromBase58String(valueOrErrorMessage(getString(configAddress, "powerAssetId"), "pwr asset id not found")) | |
23 | 15 | ||
24 | 16 | let minSentinels = valueOrErrorMessage(getInteger(configAddress, "min_sentinels"), "min_sentinels not set") | |
25 | 17 | ||
26 | 18 | let sentinels = { | |
27 | 19 | let x = valueOrElse(getString(configAddress, "sentinels"), "") | |
28 | 20 | if ((x == "")) | |
29 | 21 | then 0 | |
30 | 22 | else size(split(x, ",")) | |
31 | 23 | } | |
32 | 24 | ||
33 | - | func claimedStore (account) = (account + "_claimed") | |
34 | - | ||
35 | - | ||
36 | - | func adviseUser (account) = ((((((("height: " + toString(HEIGHT)) + ", account: ") + account) + ", claimable: ") + toString(valueOrElse(getInteger(account), 0))) + ", claimed: ") + toString(valueOrElse(getInteger(claimedStore(account)), 0))) | |
37 | - | ||
38 | - | ||
39 | 25 | @Callable(i) | |
40 | 26 | func claimAndStake () = { | |
41 | - | let a = allowed((toString(this) + "_claimAndStake")) | |
42 | - | if ((a == a)) | |
43 | - | then if ((sentinels >= minSentinels)) | |
44 | - | then throw("airdrop1 is closed") | |
45 | - | else { | |
46 | - | let user = toString(i.caller) | |
47 | - | let amount = valueOrErrorMessage(getInteger(user), "nothing for you") | |
48 | - | let mint = invoke(minterContract, "mint", [amount], nil) | |
49 | - | if ((mint == mint)) | |
50 | - | then { | |
51 | - | let stake = invoke(stakingContract, "stakeFor", [user], [AttachedPayment(pwrAssetId, amount)]) | |
52 | - | if ((stake == stake)) | |
53 | - | then $Tuple2([DeleteEntry(user), IntegerEntry(claimedStore(user), (valueOrElse(getInteger(this, claimedStore(user)), 0) + amount))], amount) | |
54 | - | else throw("Strict value is not equal to itself.") | |
55 | - | } | |
56 | - | else throw("Strict value is not equal to itself.") | |
57 | - | } | |
58 | - | else throw("Strict value is not equal to itself.") | |
27 | + | let user = toString(i.caller) | |
28 | + | let amount = valueOrErrorMessage(getInteger(user), "nothing for you") | |
29 | + | let mint = invoke(minterContract, "mint", [amount], nil) | |
30 | + | nil | |
59 | 31 | } | |
60 | - | ||
61 | - | ||
62 | - | ||
63 | - | @Callable(i) | |
64 | - | func init (conf) = if ((i.caller != this)) | |
65 | - | then throw("only self can init") | |
66 | - | else [writeConstString(configAddressStore, conf)] | |
67 | 32 | ||
68 | 33 |
github/deemru/w8io/873ac7e 50.45 ms ◑![]()