tx · 32FJDu9NSLhXDAKd38oVAr5gnxBUvrxpnindoexU5gJb 3N4UhavKsWv4dPmmhtaYT573ALxuvsAp6M4: -0.01000000 Waves 2022.06.06 09:57 [2084165] smart account 3N4UhavKsWv4dPmmhtaYT573ALxuvsAp6M4 > SELF 0.00000000 Waves
{ "type": 13, "id": "32FJDu9NSLhXDAKd38oVAr5gnxBUvrxpnindoexU5gJb", "fee": 1000000, "feeAssetId": null, "timestamp": 1654498658783, "version": 2, "chainId": 84, "sender": "3N4UhavKsWv4dPmmhtaYT573ALxuvsAp6M4", "senderPublicKey": "5nJ4v4Wx6sdXhiDZNrpW7m1aSDsTgTgFJVBgmPMPtbUM", "proofs": [ "nbaqqpRfswKFEtGYUAWkusb5fYdQ7L5FyXTQ9Gi8jwP3KVGxRqs2Q8j5oEYJ7p5btij7NSdkBGE5Wqr8TxHC6fb" ], "script": "base64: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", "height": 2084165, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3HaYY71V9AhhSjqtH3dGZJeNwerW7QrmLrHxzpS2QYue Next: GppojEQNZwoerhApmhxUekxdHpzmgoq4P3ynuyyVn8jr Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let staker = "staker" | |
5 | + | ||
6 | + | let admin = "admin_" | |
7 | + | ||
8 | + | func getI (key) = getInteger(this, key) | |
9 | + | ||
10 | + | ||
11 | + | func getS (key) = getString(this, key) | |
12 | + | ||
13 | + | ||
14 | + | func getIV (key) = value(getInteger(this, key)) | |
15 | + | ||
16 | + | ||
17 | + | func getSV (key) = value(getString(this, key)) | |
18 | + | ||
19 | + | ||
20 | + | func throwIf (condition,error) = if (condition) | |
21 | + | then throw(error) | |
22 | + | else true | |
23 | + | ||
24 | + | ||
25 | + | let thirtyDaysLockPeriod = 30 | |
26 | + | ||
27 | + | let sixtyDaysLockPeriod = 60 | |
28 | + | ||
29 | + | let ninetyDaysLockPeriod = 90 | |
30 | + | ||
31 | + | func throwOrReturnI (val,error) = match val { | |
32 | + | case val: Int => | |
33 | + | val | |
34 | + | case _ => | |
35 | + | throw(error) | |
36 | + | } | |
37 | + | ||
38 | + | ||
39 | + | func throwOrReturnS (val,error) = match val { | |
40 | + | case val: String => | |
41 | + | val | |
42 | + | case _ => | |
43 | + | throw(error) | |
44 | + | } | |
45 | + | ||
46 | + | ||
47 | + | func writeInt (key,value) = if ((0 > value)) | |
48 | + | then throw(((("writing negative value " + toString(value)) + " for key ") + key)) | |
49 | + | else IntegerEntry(key, value) | |
50 | + | ||
51 | + | ||
52 | + | func writeStr (key,value) = if ((" " == value)) | |
53 | + | then throw(("writing an empty string " + value)) | |
54 | + | else StringEntry(key, value) | |
55 | + | ||
56 | + | ||
57 | + | func writeConstString (key,value) = if (!(isDefined(getS(key)))) | |
58 | + | then writeStr(key, value) | |
59 | + | else throw(("already initialized: " + key)) | |
60 | + | ||
61 | + | ||
62 | + | func writeConstInteger (key,value) = if (!(isDefined(getS(key)))) | |
63 | + | then writeInt(key, value) | |
64 | + | else throw(("already initialized: " + key)) | |
65 | + | ||
66 | + | ||
67 | + | func adminOnly (i) = { | |
68 | + | let inputAddress = toBase58String(i.caller.bytes) | |
69 | + | let otherAdmin = (admin + inputAddress) | |
70 | + | match getS(admin) { | |
71 | + | case a: String => | |
72 | + | if ((inputAddress != getS(admin))) | |
73 | + | then throw("unauthorized") | |
74 | + | else true | |
75 | + | case _ => | |
76 | + | match getS(otherAdmin) { | |
77 | + | case b: String => | |
78 | + | if ((inputAddress != getS(otherAdmin))) | |
79 | + | then throw("unauthorized") | |
80 | + | else true | |
81 | + | case _ => | |
82 | + | throw("unauthorizd") | |
83 | + | } | |
84 | + | } | |
85 | + | } | |
86 | + | ||
87 | + | ||
88 | + | func writeConfigValue (key,data) = match data { | |
89 | + | case data: String => | |
90 | + | writeConstString(key, data) | |
91 | + | case data: Int => | |
92 | + | writeConstInteger(key, data) | |
93 | + | case _ => | |
94 | + | throw("unsupported config type") | |
95 | + | } | |
96 | + | ||
97 | + | ||
98 | + | func incrementEntryIndex (key) = { | |
99 | + | let uIndex = getI(key) | |
100 | + | if (isDefined(uIndex)) | |
101 | + | then (value(uIndex) + 1) | |
102 | + | else 0 | |
103 | + | } | |
4 | 104 | ||
5 | 105 | ||
6 | 106 | @Callable(i) | |
7 | - | func call () = { | |
8 | - | let asset = Issue("Asset", "", 1, 0, true, unit, 0) | |
9 | - | let assetId = calculateAssetId(asset) | |
10 | - | [BinaryEntry("bin", base58''), BooleanEntry("bool", true), IntegerEntry("int", 1), StringEntry("str", ""), DeleteEntry("str"), asset, Reissue(assetId, 1, false), Burn(assetId, 1), ScriptTransfer(i.caller, 1, assetId)] | |
107 | + | func init (stakerAddress) = [writeConstString(staker, stakerAddress), writeConstString(admin, toBase58String(this.bytes))] | |
108 | + | ||
109 | + | ||
110 | + | ||
111 | + | @Callable(i) | |
112 | + | func getAssetIdByTicker (AssetTicker) = { | |
113 | + | let run = invoke(addressFromStringValue(getSV("staker")), "_getAssetIdByTicker", [AssetTicker], nil) | |
114 | + | if ((run == run)) | |
115 | + | then nil | |
116 | + | else throw("Strict value is not equal to itself.") | |
11 | 117 | } | |
12 | 118 | ||
13 | - | ||
14 | - | @Verifier(tx) | |
15 | - | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
16 | 119 |
github/deemru/w8io/169f3d6 30.15 ms ◑![]()