tx · G27giaLnMMGyBRjw4p1UN3i4JnRggxWK4ecpSXVjzNJa 3PCi8eHuHPLFHV8gDpvQSxL96sNpwfMDKEU: -0.00300000 Waves 2023.10.04 17:48 [3849853] smart account 3PCi8eHuHPLFHV8gDpvQSxL96sNpwfMDKEU > SELF 0.00000000 Waves
{ "type": 13, "id": "G27giaLnMMGyBRjw4p1UN3i4JnRggxWK4ecpSXVjzNJa", "fee": 300000, "feeAssetId": null, "timestamp": 1696430912559, "version": 1, "sender": "3PCi8eHuHPLFHV8gDpvQSxL96sNpwfMDKEU", "senderPublicKey": "9oqsvm6WDyCN8kXzNoCDz7YeKYx5oz3b8CdFRTA1xXEk", "proofs": [ "2zBb9q4Dq8HgpQdenutR9w5GvBFYodajy31NLXniR8bqVa16gjN9n1STuqRoNPQVd67gHCTUPGyhyroqd3kzo1e5" ], "script": "base64:BgIOCAISBQoDCAEEEgMKAQgMARB3cml0ZUNvbnN0U3RyaW5nAgNrZXkFdmFsdWUDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMFA2tleQkBC1N0cmluZ0VudHJ5AgUDa2V5BQV2YWx1ZQkAAgEJAKwCAgIVYWxyZWFkeSBpbml0aWFsaXplZDogBQNrZXkAEmNvbmZpZ0FkZHJlc3NTdG9yZQIGY29uZmlnAA1jb25maWdBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFEmNvbmZpZ0FkZHJlc3NTdG9yZQIYY29uZmlnIGFkZHJlc3Mgbm90IGZvdW5kAhZpbnZhbGlkIGNvbmZpZyBhZGRyZXNzAQdhbGxvd2VkAQJvcAkA/AcEBQ1jb25maWdBZGRyZXNzAglvcEFsbG93ZWQJAMwIAgUCb3AFA25pbAUDbmlsAA12b3RpbmdSZXN1bHRzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCFmNvbnRyYWN0X3ZvdGluZ19yZXN1bHQCKWdlbmVyaWMgbWludGVyOiBubyBjb250cmFjdF92b3RpbmdfcmVzdWx0Ah5pbnZhbGlkIGNvbnRyYWN0X3ZvdGluZ19yZXN1bHQBDm9wQWxsb3dlZFN0b3JlAQJvcAkArAICCQCsAgICA29wXwUCb3ACCF9hbGxvd2VkAAZIRUlHSFQFBmhlaWdodAAPc3Rha2luZ0NvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCEGNvbnRyYWN0X3N0YWtpbmcCE25vIHN0YWtpbmdfY29udHJhY3QCGGludmFsaWQgc3Rha2luZyBjb250cmFjdAAObWludGVyQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUNY29uZmlnQWRkcmVzcwIPY29udHJhY3RfbWludGVyAhJubyBjb250cmFjdF9taW50ZXICF2ludmFsaWQgbWludGVyIGNvbnRyYWN0AApwd3JBc3NldElkCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ1jb25maWdBZGRyZXNzAgxwb3dlckFzc2V0SWQCFnB3ciBhc3NldCBpZCBub3QgZm91bmQBC21pbnRlZFN0b3JlAQdhY2NvdW50CQCsAgIFB2FjY291bnQCB19taW50ZWQBCmFkdmlzZVVzZXIBB2FjY291bnQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAghoZWlnaHQ6IAkApAMBBQZIRUlHSFQCCywgYWNjb3VudDogBQdhY2NvdW50AgosIG1pbnRlZDogCQCkAwEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBC21pbnRlZFN0b3JlAQUHYWNjb3VudAAAAgFpAQZtaW50VG8DAnRvBmFtb3VudAVzdGFrZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECBmRlbmllZAQBYQkBB2FsbG93ZWQBCQCsAgIJAKUIAQUEdGhpcwIHX21pbnRUbwMJAAACBQFhBQFhBARtaW50CQD8BwQFDm1pbnRlckNvbnRyYWN0AgRtaW50CQDMCAIFBmFtb3VudAUDbmlsBQNuaWwDCQAAAgUEbWludAUEbWludAQFc3RvcmUJAQttaW50ZWRTdG9yZQEFAnRvBAhtaW50ZWRCeQkBDEludGVnZXJFbnRyeQIFBXN0b3JlCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQVzdG9yZQAABQZhbW91bnQDBQVzdGFrZQQBcwkA/AcEBQ9zdGFraW5nQ29udHJhY3QCCHN0YWtlRm9yCQDMCAIFAnRvBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnB3ckFzc2V0SWQFBmFtb3VudAUDbmlsAwkAAAIFAXMFAXMJAMwIAgUIbWludGVkQnkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJ0bwUGYW1vdW50BQpwd3JBc3NldElkCQDMCAIFCG1pbnRlZEJ5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEaW5pdAEEY29uZgkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwIFEmNvbmZpZ0FkZHJlc3NTdG9yZQUEY29uZgUDbmlsAQJ0eAEGdmVyaWZ5AAQHZW5hYmxlZAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQ1jb25maWdBZGRyZXNzCQEOb3BBbGxvd2VkU3RvcmUBAhNnb3Zlcm5hbmNlX2FwcGx5X3R4BgMJAQEhAQUHZW5hYmxlZAkAAgECK3R4IGFwcGxpY2F0aW9uIHRocm93IGdvdmVybmFuY2Ugbm90IGVuYWJsZWQEAmlkCQDYBAEIBQJ0eAJpZAkAZwIFBkhFSUdIVAkBEUBleHRyTmF0aXZlKDEwNTApAgUNdm90aW5nUmVzdWx0cwkArAICCQCsAgIJAKwCAgIZcHJvcG9zYWxfYWxsb3dfYnJvYWRjYXN0XwkApQgBBQR0aGlzAgFfBQJpZHXrH20=", "chainId": 87, "height": 3849853, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
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 | + | let configAddressStore = "config" | |
10 | + | ||
11 | + | 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 | + | ||
16 | + | let votingResults = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddress, "contract_voting_result"), "generic minter: no contract_voting_result")), "invalid contract_voting_result") | |
17 | + | ||
18 | + | func opAllowedStore (op) = (("op_" + op) + "_allowed") | |
19 | + | ||
20 | + | ||
21 | + | let HEIGHT = height | |
22 | + | ||
23 | + | let stakingContract = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddress, "contract_staking"), "no staking_contract")), "invalid staking contract") | |
24 | + | ||
25 | + | let minterContract = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddress, "contract_minter"), "no contract_minter")), "invalid minter contract") | |
26 | + | ||
27 | + | let pwrAssetId = fromBase58String(valueOrErrorMessage(getString(configAddress, "powerAssetId"), "pwr asset id not found")) | |
28 | + | ||
29 | + | func mintedStore (account) = (account + "_minted") | |
30 | + | ||
31 | + | ||
32 | + | func adviseUser (account) = ((((("height: " + toString(HEIGHT)) + ", account: ") + account) + ", minted: ") + toString(valueOrElse(getInteger(mintedStore(account)), 0))) | |
33 | + | ||
34 | + | ||
35 | + | @Callable(i) | |
36 | + | func mintTo (to,amount,stake) = if ((i.caller != this)) | |
37 | + | then throw("denied") | |
38 | + | else { | |
39 | + | let a = allowed((toString(this) + "_mintTo")) | |
40 | + | if ((a == a)) | |
41 | + | then { | |
42 | + | let mint = invoke(minterContract, "mint", [amount], nil) | |
43 | + | if ((mint == mint)) | |
44 | + | then { | |
45 | + | let store = mintedStore(to) | |
46 | + | let mintedBy = IntegerEntry(store, (valueOrElse(getInteger(store), 0) + amount)) | |
47 | + | if (stake) | |
48 | + | then { | |
49 | + | let s = invoke(stakingContract, "stakeFor", [to], [AttachedPayment(pwrAssetId, amount)]) | |
50 | + | if ((s == s)) | |
51 | + | then [mintedBy] | |
52 | + | else throw("Strict value is not equal to itself.") | |
53 | + | } | |
54 | + | else [ScriptTransfer(addressFromStringValue(to), amount, pwrAssetId), mintedBy] | |
55 | + | } | |
56 | + | else throw("Strict value is not equal to itself.") | |
57 | + | } | |
58 | + | else throw("Strict value is not equal to itself.") | |
59 | + | } | |
60 | + | ||
61 | + | ||
62 | + | ||
63 | + | @Callable(i) | |
64 | + | func init (conf) = [writeConstString(configAddressStore, conf)] | |
65 | + | ||
66 | + | ||
67 | + | @Verifier(tx) | |
68 | + | func verify () = { | |
69 | + | let enabled = valueOrElse(getBoolean(configAddress, opAllowedStore("governance_apply_tx")), true) | |
70 | + | if (!(enabled)) | |
71 | + | then throw("tx application throw governance not enabled") | |
72 | + | else { | |
73 | + | let id = toBase58String(tx.id) | |
74 | + | (HEIGHT >= getIntegerValue(votingResults, ((("proposal_allow_broadcast_" + toString(this)) + "_") + id))) | |
75 | + | } | |
76 | + | } | |
77 | + |
github/deemru/w8io/3ef1775 18.64 ms ◑