2023.03.20 09:19 [3563560] smart account 3P3urybcgohip3uYE1hWF89gBPDKM3zLoMB > SELF 0.00000000 Waves

{ "type": 13, "id": "93hwoUNAw7Eqo3dpHHxyVYabHZrXq2Tj6mr2Gn8m5QcM", "fee": 1000000, "feeAssetId": null, "timestamp": 1679293192261, "version": 2, "chainId": 87, "sender": "3P3urybcgohip3uYE1hWF89gBPDKM3zLoMB", "senderPublicKey": "8FT1roaUCGNMutLjmadT8CDJNEZ1MvfkppRyKdink7RD", "proofs": [ "222NiM1JYrMDYZHchfQtBCnTHEhYkt4cYFThAK8iGUYu74mAUtVfUVh7SoVpYWBqhT4Bqgx5y5hdnTtGWd1R7RyB" ], "script": "base64:BgIZCAISBAoCCAgSAwoBCBIECgIICBIECgIIBAkADnN0YWtpbmdBZGRyZXNzCQEHQWRkcmVzcwEBGgFXPntnxIxvbmCo0s2P7nmfMU5HqK5DFP2wABFwYXJhbWV0ZXJzQWRkcmVzcwkBB0FkZHJlc3MBARoBV+7WJYtq2Ae0X0s1eNtV5rMlFw/bMdew9AAGU2NhbGU4AIDC1y8BDXRyeUdldEludGVnZXIBA2tleQQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABDXRyeUdldEJvb2xlYW4BA2tleQQHJG1hdGNoMAkAmwgCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYgUHJG1hdGNoMAUBYgcBDHRyeUdldFN0cmluZwEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWIFByRtYXRjaDAFAWICAAEOY2FsY3VsYXRlU1JhdGUABA9zdGFraW5nRW1pc3Npb24EByRtYXRjaDAJAPwHBAURcGFyYW1ldGVyc0FkZHJlc3MCF2dldFN0YWtpbmdCbG9ja0VtaXNzaW9uCQDMCAIHBQNuaWwFA25pbAMJAAECBQckbWF0Y2gwAgNJbnQEAmluBQckbWF0Y2gwBQJpbgkAAgECCmJhZCBpbnZva2UDCQAAAgUPc3Rha2luZ0VtaXNzaW9uBQ9zdGFraW5nRW1pc3Npb24EDmxhc3RDaGVja1NSYXRlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ5zdGFraW5nQWRkcmVzcwIVZ2xvYmFsX2xhc3RDaGVja1NSYXRlBAxzUGx1dG9BbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDnN0YWtpbmdBZGRyZXNzAg1nbG9iYWxfc1BsdXRvBA9sYXN0Q2hlY2tIZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDnN0YWtpbmdBZGRyZXNzAhtnbG9iYWxfbGFzdENoZWNrU1JhdGVIZWlnaHQEBmJsb2NrcwkAZQIFBmhlaWdodAUPbGFzdENoZWNrSGVpZ2h0AwkAAAIFDHNQbHV0b0Ftb3VudAAABQZTY2FsZTgJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ5zdGFraW5nQWRkcmVzcwIVZ2xvYmFsX2xhc3RDaGVja1NSYXRlCQBrAwkAaAIFBmJsb2NrcwUGU2NhbGU4BQ9zdGFraW5nRW1pc3Npb24FDHNQbHV0b0Ftb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAHYmF0Y2hlcwkAzAgCAgExCQDMCAICATIJAMwIAgIBMwkAzAgCAgE0BQNuaWwAEGF2YWlsYWJsZU9wdGlvbnMJAMwIAgIBMQkAzAgCAgEyCQDMCAICATMFA25pbAQBaQEEdm90ZQIGb3B0aW9uCHZvdGluZ0lkBAZ2b3RlSWQFCHZvdGluZ0lkBAphZGRyZXNzU3RyCQClCAEIBQFpBmNhbGxlcgQKcmFuZG9tSGFzaAkA9wMBCAUBaQ10cmFuc2FjdGlvbklkBAViYXRjaAkApAMBCQBkAgABCQBqAgkAsQkBBQpyYW5kb21IYXNoCQCQAwEFB2JhdGNoZXMEDHZvdGVWYWx1ZVN0cgUGb3B0aW9uAwkAAAIJAM8IAgUQYXZhaWxhYmxlT3B0aW9ucwUGb3B0aW9uBQR1bml0CQACAQIaaW5jb3JyZWN0IG9wdGlvbiBpcyBjaG9zZW4DCQEBIQEJAQ10cnlHZXRCb29sZWFuAQkArAICBQZ2b3RlSWQCB19zdGF0dXMJAAIBAhR2b3RpbmcgaXMgbm90IGFjdGl2ZQMJAQIhPQIJAQx0cnlHZXRTdHJpbmcBCQCsAgIJAKwCAgUGdm90ZUlkAgFfBQphZGRyZXNzU3RyAgAJAAIBAhF5b3UgYWxyZWFkeSB2b3RlZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIFBnZvdGVJZAIBXwUMdm90ZVZhbHVlU3RyAgZfYmF0Y2gFBWJhdGNoCQCsAgIJAKwCAgkBDHRyeUdldFN0cmluZwEJAKwCAgkArAICCQCsAgIJAKwCAgUGdm90ZUlkAgFfBQx2b3RlVmFsdWVTdHICBl9iYXRjaAUFYmF0Y2gFCmFkZHJlc3NTdHICASwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFBnZvdGVJZAIBXwUKYWRkcmVzc1N0cgUMdm90ZVZhbHVl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", "height": 3563560, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: JmJdAJSm6EkhPFvaeQA2Qpysk1Tzim25EEMzaN97jCY Next: none Diff:
OldNewDifferences
9191 else throw("Strict value is not equal to itself.")
9292 }
9393
94+ let sRate = calculateSRate()
9495 let res = {
9596 let $l = batches
9697 let $s = size($l)
105106
106107 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
107108 }
108- throw(((((("votes result " + toString((res._1 / Scale8))) + ", ") + toString((res._2 / Scale8))) + ", ") + toString((res._3 / Scale8))))
109+ throw(((((("votes result " + toString(fraction(res._1, sRate, Scale8))) + ", ") + toString(fraction(res._2, sRate, Scale8))) + ", ") + toString(fraction(res._3, sRate, Scale8))))
109110 }
110111
111112
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let stakingAddress = Address(base58'3P7dGTVZp8VLDYy3XEaUQbiqfi9cMK1Ly5q')
55
66 let parametersAddress = Address(base58'3PPhk65Ab4UDgbxYUDW7YSXkzHfWtj7WBrB')
77
88 let Scale8 = 100000000
99
1010 func tryGetInteger (key) = match getInteger(this, key) {
1111 case b: Int =>
1212 b
1313 case _ =>
1414 0
1515 }
1616
1717
1818 func tryGetBoolean (key) = match getBoolean(this, key) {
1919 case b: Boolean =>
2020 b
2121 case _ =>
2222 false
2323 }
2424
2525
2626 func tryGetString (key) = match getString(this, key) {
2727 case b: String =>
2828 b
2929 case _ =>
3030 ""
3131 }
3232
3333
3434 func calculateSRate () = {
3535 let stakingEmission = match invoke(parametersAddress, "getStakingBlockEmission", [false], nil) {
3636 case in: Int =>
3737 in
3838 case _ =>
3939 throw("bad invoke")
4040 }
4141 if ((stakingEmission == stakingEmission))
4242 then {
4343 let lastCheckSRate = getIntegerValue(stakingAddress, "global_lastCheckSRate")
4444 let sPlutoAmount = getIntegerValue(stakingAddress, "global_sPluto")
4545 let lastCheckHeight = getIntegerValue(stakingAddress, "global_lastCheckSRateHeight")
4646 let blocks = (height - lastCheckHeight)
4747 if ((sPlutoAmount == 0))
4848 then Scale8
4949 else (getIntegerValue(stakingAddress, "global_lastCheckSRate") + fraction((blocks * Scale8), stakingEmission, sPlutoAmount))
5050 }
5151 else throw("Strict value is not equal to itself.")
5252 }
5353
5454
5555 let batches = ["1", "2", "3", "4"]
5656
5757 let availableOptions = ["1", "2", "3"]
5858
5959 @Callable(i)
6060 func vote (option,votingId) = {
6161 let voteId = votingId
6262 let addressStr = toString(i.caller)
6363 let randomHash = sha256(i.transactionId)
6464 let batch = toString((1 + (toInt(randomHash) % size(batches))))
6565 let voteValueStr = option
6666 if ((indexOf(availableOptions, option) == unit))
6767 then throw("incorrect option is chosen")
6868 else if (!(tryGetBoolean((voteId + "_status"))))
6969 then throw("voting is not active")
7070 else if ((tryGetString(((voteId + "_") + addressStr)) != ""))
7171 then throw("you already voted")
7272 else [StringEntry(((((voteId + "_") + voteValueStr) + "_batch") + batch), ((tryGetString(((((voteId + "_") + voteValueStr) + "_batch") + batch)) + addressStr) + ",")), StringEntry(((voteId + "_") + addressStr), voteValueStr)]
7373 }
7474
7575
7676
7777 @Callable(i)
7878 func results (votingId) = {
7979 func batchHandler (accum,batch) = {
8080 let inv = invoke(this, "batchResults", [batch, votingId], nil)
8181 if ((inv == inv))
8282 then {
8383 let new = match inv {
8484 case x: (Int, Int, Int) =>
8585 x
8686 case _ =>
8787 throw(("error in batch " + batch))
8888 }
8989 $Tuple3((accum._1 + new._1), (accum._2 + new._2), (accum._3 + new._3))
9090 }
9191 else throw("Strict value is not equal to itself.")
9292 }
9393
94+ let sRate = calculateSRate()
9495 let res = {
9596 let $l = batches
9697 let $s = size($l)
9798 let $acc0 = $Tuple3(0, 0, 0)
9899 func $f0_1 ($a,$i) = if (($i >= $s))
99100 then $a
100101 else batchHandler($a, $l[$i])
101102
102103 func $f0_2 ($a,$i) = if (($i >= $s))
103104 then $a
104105 else throw("List size exceeds 4")
105106
106107 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
107108 }
108- throw(((((("votes result " + toString((res._1 / Scale8))) + ", ") + toString((res._2 / Scale8))) + ", ") + toString((res._3 / Scale8))))
109+ throw(((((("votes result " + toString(fraction(res._1, sRate, Scale8))) + ", ") + toString(fraction(res._2, sRate, Scale8))) + ", ") + toString(fraction(res._3, sRate, Scale8))))
109110 }
110111
111112
112113
113114 @Callable(i)
114115 func batchResults (batch,votingId) = {
115116 func votesHandler (accum,addressStr) = (accum + match getInteger(stakingAddress, (addressStr + "_sPluto")) {
116117 case x: Int =>
117118 x
118119 case _ =>
119120 0
120121 })
121122
122123 let li1 = split(tryGetString(((votingId + "_1_batch") + batch)), ",")
123124 let votes1 = {
124125 let $l = li1
125126 let $s = size($l)
126127 let $acc0 = 0
127128 func $f0_1 ($a,$i) = if (($i >= $s))
128129 then $a
129130 else votesHandler($a, $l[$i])
130131
131132 func $f0_2 ($a,$i) = if (($i >= $s))
132133 then $a
133134 else throw("List size exceeds 90")
134135
135136 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90)
136137 }
137138 let li2 = split(tryGetString(((votingId + "_2_batch") + batch)), ",")
138139 let votes2 = {
139140 let $l = li2
140141 let $s = size($l)
141142 let $acc0 = 0
142143 func $f1_1 ($a,$i) = if (($i >= $s))
143144 then $a
144145 else votesHandler($a, $l[$i])
145146
146147 func $f1_2 ($a,$i) = if (($i >= $s))
147148 then $a
148149 else throw("List size exceeds 90")
149150
150151 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90)
151152 }
152153 let li3 = split(tryGetString(((votingId + "_3_batch") + batch)), ",")
153154 let votes3 = {
154155 let $l = li3
155156 let $s = size($l)
156157 let $acc0 = 0
157158 func $f2_1 ($a,$i) = if (($i >= $s))
158159 then $a
159160 else votesHandler($a, $l[$i])
160161
161162 func $f2_2 ($a,$i) = if (($i >= $s))
162163 then $a
163164 else throw("List size exceeds 90")
164165
165166 $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90)
166167 }
167168 $Tuple2(nil, $Tuple3((votes1 / Scale8), (votes2 / Scale8), (votes3 / Scale8)))
168169 }
169170
170171
171172
172173 @Callable(i)
173174 func setVotingStatus (votingId,active) = if ((this != i.caller))
174175 then throw("admin only")
175176 else [BooleanEntry((votingId + "_status"), active)]
176177
177178
178179 @Verifier(tx)
179180 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
180181

github/deemru/w8io/786bc32 
38.13 ms