tx · DGxmP9smFpAk59CCaD8tXhWrtPUw68uthKYCKrPQiFxB 3MyJoBjw9nC4uhgWULVJUaEZEL6z9As7Yfq: -0.00900000 Waves 2022.07.07 13:26 [2129147] smart account 3MyJoBjw9nC4uhgWULVJUaEZEL6z9As7Yfq > SELF 0.00000000 Waves
{ "type": 13, "id": "DGxmP9smFpAk59CCaD8tXhWrtPUw68uthKYCKrPQiFxB", "fee": 900000, "feeAssetId": null, "timestamp": 1657189664651, "version": 2, "chainId": 84, "sender": "3MyJoBjw9nC4uhgWULVJUaEZEL6z9As7Yfq", "senderPublicKey": "6E1saVK6whrqLsuLBQRGg6smask3XK5nkfiAWyGd3pEm", "proofs": [ "49gEb7eLXzyXQR7Kbvy8eF2UjS8tapbTFoNssJQ153p8B5PdCTLJazjcA7C2xse2NLGdduFJNCY7N7pxQU3JNgy5" ], "script": "base64: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", "height": 2129147, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HKSGuDY5KHHzZ9iM8GaE7V1QX6RBNb2bTajt11wHR9WH Next: ghoHbqxVaDGFUWyUFrY8KcVxd2XYcCNfKrSW6Ax1uuT Diff:
Old | New | Differences | |
---|---|---|---|
33 | 33 | func getTotalNoKey (id) = (id + totalNoSuffix) | |
34 | 34 | ||
35 | 35 | ||
36 | - | func getVoteStatus (id) = { | |
37 | - | let statusKey = getStatusKey(id) | |
38 | - | let status = getString(this, statusKey) | |
39 | - | status | |
40 | - | } | |
36 | + | func getVoteStatus (id) = getString(this, getStatusKey(id)) | |
41 | 37 | ||
42 | 38 | ||
43 | 39 | func getRepaymentKey (id,address) = (((repaymentPrefix + id) + "_") + toString(address)) | |
44 | 40 | ||
45 | 41 | ||
46 | - | func getStartHeight (id) = { | |
47 | - | let result = match getInteger(this, getOpenKey(id)) { | |
48 | - | case n: Int => | |
49 | - | n | |
50 | - | case _ => | |
51 | - | -1 | |
52 | - | } | |
53 | - | result | |
54 | - | } | |
42 | + | func getStartHeight (id) = match getInteger(this, getOpenKey(id)) { | |
43 | + | case n: Int => | |
44 | + | n | |
45 | + | case _ => | |
46 | + | -1 | |
47 | + | } | |
55 | 48 | ||
56 | 49 | ||
57 | - | func getRefundAmount (id,address) = { | |
58 | - | let repaymentKey = getRepaymentKey(id, address) | |
59 | - | let result = match getInteger(this, repaymentKey) { | |
60 | - | case n: Int => | |
61 | - | n | |
62 | - | case _ => | |
63 | - | -1 | |
64 | - | } | |
65 | - | result | |
66 | - | } | |
50 | + | func getRefundAmount (id,address) = match getInteger(this, getRepaymentKey(id, address)) { | |
51 | + | case n: Int => | |
52 | + | n | |
53 | + | case _ => | |
54 | + | -1 | |
55 | + | } | |
67 | 56 | ||
68 | 57 | ||
69 | 58 | @Callable(i) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let VOTING_BLOCKS = 100 | |
5 | 5 | ||
6 | 6 | let VOTE_CLOSED = "CLOSED" | |
7 | 7 | ||
8 | 8 | let VOTE_OPENED = "OPEN" | |
9 | 9 | ||
10 | 10 | let DYZ_ASSET_ID = base58'G2Pb7CMztps7XEVGCiUuJkLiS3ZCo69APQNbJs2nz21j' | |
11 | 11 | ||
12 | 12 | let MIN_DYZ_AMOUNT = 100000000 | |
13 | 13 | ||
14 | 14 | let statusKeyPrefix = "status_" | |
15 | 15 | ||
16 | 16 | let openKeyPrefix = "open_" | |
17 | 17 | ||
18 | 18 | let totalYesSuffix = "_total_yes" | |
19 | 19 | ||
20 | 20 | let totalNoSuffix = "_total_no" | |
21 | 21 | ||
22 | 22 | let repaymentPrefix = "repayment_" | |
23 | 23 | ||
24 | 24 | func getStatusKey (id) = (statusKeyPrefix + id) | |
25 | 25 | ||
26 | 26 | ||
27 | 27 | func getOpenKey (id) = (openKeyPrefix + id) | |
28 | 28 | ||
29 | 29 | ||
30 | 30 | func getTotalYesKey (id) = (id + totalYesSuffix) | |
31 | 31 | ||
32 | 32 | ||
33 | 33 | func getTotalNoKey (id) = (id + totalNoSuffix) | |
34 | 34 | ||
35 | 35 | ||
36 | - | func getVoteStatus (id) = { | |
37 | - | let statusKey = getStatusKey(id) | |
38 | - | let status = getString(this, statusKey) | |
39 | - | status | |
40 | - | } | |
36 | + | func getVoteStatus (id) = getString(this, getStatusKey(id)) | |
41 | 37 | ||
42 | 38 | ||
43 | 39 | func getRepaymentKey (id,address) = (((repaymentPrefix + id) + "_") + toString(address)) | |
44 | 40 | ||
45 | 41 | ||
46 | - | func getStartHeight (id) = { | |
47 | - | let result = match getInteger(this, getOpenKey(id)) { | |
48 | - | case n: Int => | |
49 | - | n | |
50 | - | case _ => | |
51 | - | -1 | |
52 | - | } | |
53 | - | result | |
54 | - | } | |
42 | + | func getStartHeight (id) = match getInteger(this, getOpenKey(id)) { | |
43 | + | case n: Int => | |
44 | + | n | |
45 | + | case _ => | |
46 | + | -1 | |
47 | + | } | |
55 | 48 | ||
56 | 49 | ||
57 | - | func getRefundAmount (id,address) = { | |
58 | - | let repaymentKey = getRepaymentKey(id, address) | |
59 | - | let result = match getInteger(this, repaymentKey) { | |
60 | - | case n: Int => | |
61 | - | n | |
62 | - | case _ => | |
63 | - | -1 | |
64 | - | } | |
65 | - | result | |
66 | - | } | |
50 | + | func getRefundAmount (id,address) = match getInteger(this, getRepaymentKey(id, address)) { | |
51 | + | case n: Int => | |
52 | + | n | |
53 | + | case _ => | |
54 | + | -1 | |
55 | + | } | |
67 | 56 | ||
68 | 57 | ||
69 | 58 | @Callable(i) | |
70 | 59 | func openVote (id) = { | |
71 | 60 | let startHeightKey = getOpenKey(id) | |
72 | 61 | let alreadyVoting = getStartHeight(id) | |
73 | 62 | if ((alreadyVoting != -1)) | |
74 | 63 | then throw("Vote already ongoing for id!") | |
75 | 64 | else { | |
76 | 65 | let statusKey = getStatusKey(id) | |
77 | 66 | [StringEntry(statusKey, VOTE_OPENED), IntegerEntry(startHeightKey, height)] | |
78 | 67 | } | |
79 | 68 | } | |
80 | 69 | ||
81 | 70 | ||
82 | 71 | ||
83 | 72 | @Callable(i) | |
84 | 73 | func closeVote (id) = { | |
85 | 74 | let currentStartHeight = getStartHeight(id) | |
86 | 75 | if ((currentStartHeight == -1)) | |
87 | 76 | then throw("No vote found for id!") | |
88 | 77 | else if (((currentStartHeight + VOTING_BLOCKS) > height)) | |
89 | 78 | then throw("Vote can not be closed yet!") | |
90 | 79 | else { | |
91 | 80 | let statusKey = getStatusKey(id) | |
92 | 81 | [StringEntry(statusKey, VOTE_CLOSED)] | |
93 | 82 | } | |
94 | 83 | } | |
95 | 84 | ||
96 | 85 | ||
97 | 86 | ||
98 | 87 | @Callable(i) | |
99 | 88 | func claim (id) = { | |
100 | 89 | let startHeight = getStartHeight(id) | |
101 | 90 | if ((startHeight == -1)) | |
102 | 91 | then throw("No vote started for this id!") | |
103 | 92 | else if (((startHeight + VOTING_BLOCKS) >= height)) | |
104 | 93 | then throw("You can only claim after vote ends!") | |
105 | 94 | else { | |
106 | 95 | let caller = i.caller | |
107 | 96 | let repayAmount = getRefundAmount(id, caller) | |
108 | 97 | let statusKey = getStatusKey(id) | |
109 | 98 | let repaymentKey = getRepaymentKey(id, caller) | |
110 | 99 | if ((repayAmount > 0)) | |
111 | 100 | then [ScriptTransfer(caller, repayAmount, DYZ_ASSET_ID), StringEntry(statusKey, VOTE_CLOSED), IntegerEntry(repaymentKey, 0)] | |
112 | 101 | else throw("Nothing to claim!") | |
113 | 102 | } | |
114 | 103 | } | |
115 | 104 | ||
116 | 105 | ||
117 | 106 | ||
118 | 107 | @Callable(i) | |
119 | 108 | func vote (id,vote) = if ((size(i.payments) != 1)) | |
120 | 109 | then throw("One payment in DZY needs to be attached") | |
121 | 110 | else { | |
122 | 111 | let payment = value(i.payments[0]) | |
123 | 112 | let caller = i.caller | |
124 | 113 | let amount = payment.amount | |
125 | 114 | if (!(isDefined(payment.assetId))) | |
126 | 115 | then throw("Payment in Waves not allowed!") | |
127 | 116 | else { | |
128 | 117 | let assetId = toBase58String(value(payment.assetId)) | |
129 | 118 | if ((getRefundAmount(id, caller) != -1)) | |
130 | 119 | then throw("Only one vote per id per address!") | |
131 | 120 | else if ((assetId != toBase58String(DYZ_ASSET_ID))) | |
132 | 121 | then throw("payment in DZY necessary!") | |
133 | 122 | else if ((amount != MIN_DYZ_AMOUNT)) | |
134 | 123 | then throw("payment amount wrong!") | |
135 | 124 | else { | |
136 | 125 | let repaymentKey = getRepaymentKey(id, caller) | |
137 | 126 | let voteStatus = getVoteStatus(id) | |
138 | 127 | if ((voteStatus == VOTE_CLOSED)) | |
139 | 128 | then throw("vote closed!") | |
140 | 129 | else { | |
141 | 130 | let openHeight = match getInteger(this, getOpenKey(id)) { | |
142 | 131 | case a: Int => | |
143 | 132 | a | |
144 | 133 | case _ => | |
145 | 134 | 0 | |
146 | 135 | } | |
147 | 136 | if ((height > (openHeight + VOTING_BLOCKS))) | |
148 | 137 | then throw("voting ended!") | |
149 | 138 | else { | |
150 | 139 | let newEntry = if ((vote == "yes")) | |
151 | 140 | then { | |
152 | 141 | let yesVoteKey = getTotalYesKey(id) | |
153 | 142 | let yesVotesSoFar = match getInteger(this, yesVoteKey) { | |
154 | 143 | case a: Int => | |
155 | 144 | a | |
156 | 145 | case _ => | |
157 | 146 | 0 | |
158 | 147 | } | |
159 | 148 | let newYesVotes = (yesVotesSoFar + 1) | |
160 | 149 | [IntegerEntry(yesVoteKey, newYesVotes), IntegerEntry(repaymentKey, amount)] | |
161 | 150 | } | |
162 | 151 | else if ((vote == "no")) | |
163 | 152 | then { | |
164 | 153 | let noVoteKey = getTotalNoKey(id) | |
165 | 154 | let noVotesSoFar = match getInteger(this, noVoteKey) { | |
166 | 155 | case a: Int => | |
167 | 156 | a | |
168 | 157 | case _ => | |
169 | 158 | 0 | |
170 | 159 | } | |
171 | 160 | let newNoVotes = (noVotesSoFar + 1) | |
172 | 161 | [IntegerEntry(noVoteKey, newNoVotes), IntegerEntry(repaymentKey, amount)] | |
173 | 162 | } | |
174 | 163 | else nil | |
175 | 164 | newEntry | |
176 | 165 | } | |
177 | 166 | } | |
178 | 167 | } | |
179 | 168 | } | |
180 | 169 | } | |
181 | 170 | ||
182 | 171 | ||
183 | 172 | @Verifier(tx) | |
184 | 173 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
185 | 174 |
github/deemru/w8io/169f3d6 36.21 ms ◑