tx · ARmNLfAiqifpJxmk1ynAXzFQoBdJUmuSSkMXFCgVwyZN

3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7:  -0.01000000 Waves

2022.03.31 12:38 [1987919] smart account 3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7 > SELF 0.00000000 Waves

{ "type": 13, "id": "ARmNLfAiqifpJxmk1ynAXzFQoBdJUmuSSkMXFCgVwyZN", "fee": 1000000, "feeAssetId": null, "timestamp": 1648719313661, "version": 2, "chainId": 84, "sender": "3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7", "senderPublicKey": "J283pC8bzRfJ3j1oxPrgDH8hjUVhFZS2CiRcPTmzQukz", "proofs": [ "3Gb2U95GMX56AcQP4Pcz5Sjn3vLf7WKYpZgrmgWPHPEBEPw6Bm5bXjxX4RPZkshkx6cC1Uqm3wqNZT7Voo461MjA" ], "script": "base64:AAIFAAAAAAAAAA4IAhIFCgMIAQESAwoBCAAAAB0AAAAACmRlbGF5QmxvY2sAAAAAAAAAAAoAAAAACm1pblBheW1lbnQAAAAAAAAAAGQAAAAADG1pblBheW1lbnRVTQIAAAAXIGNlbnRlc2ltaSBkaSBibXNDb2luLiAAAAAAEWFjY2VwdGFibGVBc3NldElkAQAAACDk+kZ1aj0nUdt+IJrshSPy02znm1EpK4+A9oKgpa32ygAAAAAMbXNnUGFnYW1lbnRvCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAIERldmkgZWZmZXR0dWFyZSB1biBwYWdhbWVudG8gaW4gCQACWAAAAAEFAAAAEWFjY2VwdGFibGVBc3NldElkAgAAAAsgZGkgYWxtZW5vIAkAAaQAAAABBQAAAAptaW5QYXltZW50BQAAAAxtaW5QYXltZW50VU0AAAAAEmZpZWxkTmFtZVJpc3VsdGF0bwIAAAANc2VtZV9lc3RyYXR0bwAAAAANZmllbGROYW1lU2VlZAIAAAAEc2VlZAAAAAAQZmllbGROYW1lU2VlZEIxNgIAAAAIc2VlZF9iMTYAAAAAGWZpZWxkTmFtZUhlaWdodEV4dHJhY3Rpb24CAAAAEWhlaWdodF9leHRyYWN0aW9uAAAAAA1maWVsZE5hbWVKc29uAgAAAARqc29uAAAAABRmaWVsZE5hbWVDYXJkaW5hbGl0YQIAAAALY2FyZGluYWxpdGEAAAAAFmZpZWxkTmFtZURhdGFSaWNoaWVzdGECAAAADmRhdGFfcmljaGllc3RhAAAAABNmaWVsZE5hbWVFc3RyYXppb25pAgAAAAplc3RyYXppb25pAAAAABJmaWVsZE5hbWVSaWNoaWVzdGECAAAACXJpY2hpZXN0YQAAAAATZmllbGROYW1lRXNjbHVzaW9uaQIAAAAKZXNjbHVzaW9uaQAAAAAQZmllbGROYW1lQ291bnRlcgIAAAAHY291bnRlcgAAAAASZmllbGROYW1lSWRDb3VudGVyAgAAAAxpZF9yaWNoaWVzdGEAAAAAEWZpZWxkTmFtZVByb3ZpZGVyAgAAAAhwcm92aWRlcgEAAAALaXNQYXltZW50T2sAAAABAAAAAWkDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5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LAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA9zdHJPd25lckFkZHJlc3MCAAAAAV8FAAAACXJpY2hpZXN0YQIAAAABXwQAAAAKa2V5Q291bnRlcgkAASwAAAACBQAAAAlrZXlQcmVmaXgFAAAAEGZpZWxkTmFtZUNvdW50ZXIEAAAADG1heFJpY2hpZXN0YQkBAAAACG15R2V0SW50AAAAAgUAAAAKa2V5Q291bnRlcgIAAAAxTGEgcmljaGllc3RhIGZhdHRhIG5vbiDDqCBzdGF0YSBhbmNvcmEgcmVnaXN0cmF0YQQAAAAPbnVtZXJvUmljaGllc3RhAwkAAGcAAAACAAAAAAAAAAAABQAAAAZudW1lcm8FAAAADG1heFJpY2hpZXN0YQMJAABnAAAAAgUAAAAMbWF4UmljaGllc3RhBQAAAAZudW1lcm8FAAAABm51bWVybwkAAAIAAAABAgAAACpOb24gZXNpc3RlIHVuYSByaWNoaWVzdGEgY29uIHF1ZXN0byBudW1lcm8EAAAACmtleVByZWZpeE4JAAEsAAAAAgkAASwAAAACBQAAAAlrZXlQcmVmaXgJAAGkAAAAAQUAAAAPbnVtZXJvUmljaGllc3RhAgAAAAFfBAAAAAxrZXlSaXN1bHRhdG8JAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAASZmllbGROYW1lUmlzdWx0YXRvBAAAAAppc0VzdHJhdHRvBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAADGtleVJpc3VsdGF0bwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAF0BQAAAAckbWF0Y2gwCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJ1Jpc3VsdGF0byBnacOgIHByZXNlbnRlIGluIGJsb2NrY2hhaW46IAUAAAAMa2V5UmlzdWx0YXRvAgAAAAI6IAUAAAABdAcDCQEAAAABIQAAAAEFAAAACmlzRXN0cmF0dG8EAAAAFWhlaWdodEJsb2Njb0NhbmRpZGF0bwkBAAAACG15R2V0SW50AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABlmaWVsZE5hbWVIZWlnaHRFeHRyYWN0aW9uAgAAACdFcnJvcmUgZ2VuZXJp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ZmllbGROYW1lUHJvdmlkZXIFAAAAD3N0ck93bmVyQWRkcmVzcwkBAAAAB2FkZEpzb24AAAACBQAAABJmaWVsZE5hbWVSaWNoaWVzdGEFAAAACXJpY2hpZXN0YQkBAAAAB2FkZEpzb24AAAACBQAAABRmaWVsZE5hbWVDYXJkaW5hbGl0YQUAAAAOc3RyQ2FyZGluYWxpdGEJAQAAAAdhZGRKc29uAAAAAgUAAAATZmllbGROYW1lRXN0cmF6aW9uaQUAAAANc3RyRXN0cmF6aW9uaQkBAAAAB2FkZEpzb24AAAACBQAAABNmaWVsZE5hbWVFc2NsdXNpb25pBQAAAAplc2NsdXNpb25pCQEAAAAHYWRkSnNvbgAAAAIFAAAAFmZpZWxkTmFtZURhdGFSaWNoaWVzdGEFAAAAEHN0ckRhdGFSaWNoaWVzdGEJAQAAAAdhZGRKc29uAAAAAgUAAAAQZmllbGROYW1lU2VlZEIxNgkAAlwAAAABBQAAAARzZWVkCQEAAAAHYWRkSnNvbgAAAAIFAAAAGWZpZWxkTmFtZUhlaWdodEV4dHJhY3Rpb24JAAGkAAAAAQUAAAAVaGVpZ2h0QmxvY2NvQ2FuZGlkYXRvCQEAAAAJY2xvc2VKc29uAAAAAgUAAAASZmllbGROYW1lUmlzdWx0YXRvBQAAAANzaGEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAAA1maWVsZE5hbWVKc29uBQAAAARqc29uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADGtleVJpc3VsdGF0bwUAAAADc2hhBQAAAANuaWwJAAACAAAAAQIAAAAkRXJyb3JlOiBub24gZG92cmVzdGkgcGFzc2FyZSBkYSBxdcOsAQAAAAlyZWdpc3RyYTEAAAAFAAAACXJpY2hpZXN0YQAAAAtjYXJkaW5hbGl0YQAAAAplc3RyYXppb25pAAAACmVzY2x1c2lvbmkAAAABaQQAAAAJa2V5UHJlZml4CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgIAAAABXwUAAAAJcmljaGllc3RhAgAAAAFfBAAAAAprZXlDb3VudGVyCQABLAAAAAIFAAAACWtleVByZWZpeAUAAAAQZmllbGROYW1lQ291bnRlcgQAAAAKblJpY2hpZXN0YQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAAprZXlDb3VudGVyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWMFAAAAByRtYXRjaDAJAABkAAAAAgUAAAABYwAAAAAAAAAAAQAAAAAAAAAAAQQAAAAKa2V5UHJlZml4TgkAASwAAAACCQABLAAAAAIFAAAACWtleVByZWZpeAkAAaQAAAABBQAAAApuUmljaGllc3RhAgAAAAFfBAAAAARzZWVkCQEAAAAKcmFuZG9taXplcgAAAAIFAAAAAWkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAACXJpY2hpZXN0YQkAAaQAAAABBQAAAAtjYXJkaW5hbGl0YQkAAaQAAAABBQAAAAplc3RyYXppb25pBQAAAAplc2NsdXNpb25pBAAAAAhjdXJyRGF0ZQkBAAAADGdldFRpbWVzdGFtcAAAAAAEAAAAEGhlaWdodEV4dHJhY3Rpb24JAABkAAAAAgUAAAAGaGVpZ2h0BQAAAApkZWxheUJsb2NrCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAprZXlDb3VudGVyBQAAAApuUmljaGllc3RhCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAGWZpZWxkTmFtZUhlaWdodEV4dHJhY3Rpb24FAAAAEGhlaWdodEV4dHJhY3Rpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAAUZmllbGROYW1lQ2FyZGluYWxpdGEFAAAAC2NhcmRpbmFsaXRhCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAE2ZpZWxkTmFtZUVzdHJhemlvbmkFAAAACmVzdHJhemlvbmkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAAWZmllbGROYW1lRGF0YVJpY2hpZXN0YQUAAAAIY3VyckRhdGUJAARMAAAAAgkBAAAAC0JpbmFyeUVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAAA1maWVsZE5hbWVTZWVkBQAAAARzZWVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAAQZmllbGROYW1lU2VlZEIxNgkAAlwAAAABBQAAAARzZWVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAATZmllbGROYW1lRXNjbHVzaW9uaQUAAAAKZXNjbHVzaW9uaQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAEmZpZWxkTmFtZVJpY2hpZXN0YQUAAAAJcmljaGllc3RhBQAAAANuaWwAAAACAAAAAWkBAAAAFWRpY2hpYXJhemlvbmVfaW50ZW50aQAAAAMAAAAHaGFzaF9pZAAAAA50b3RhbGVfZmF0dHVyZQAAAA5udW1fZXN0cmF6aW9uaQQAAAAKZXNjbHVzaW9uaQIAAAACW10DCQEAAAALaXNQYXltZW50T2sAAAABBQAAAAFpCQEAAAAJcmVnaXN0cmExAAAABQUAAAAHaGFzaF9pZAUAAAAOdG90YWxlX2ZhdHR1cmUFAAAADm51bV9lc3RyYXppb25pBQAAAAplc2NsdXNpb25pBQAAAAFpCQAAAgAAAAEFAAAADG1zZ1BhZ2FtZW50bwAAAAFpAQAAAA9lc3RyYXppb25lX3NlbWUAAAABAAAAB2hhc2hfaWQEAAAABm51bWVybwAAAAAAAAAAAQkBAAAAB2VzdHJhaTEAAAADBQAAAAdoYXNoX2lkBQAAAAZudW1lcm8FAAAAAWkAAAAAl8OIEw==", "height": 1987919, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: yqWmRE6rAJWebRyNbPJcpzYEP3qGudLro438JACjbEU Next: 4TtQPPQ1NRPWoGrwWGJUj9TKo55x6KRP1ATLqeHPubiB Diff:
OldNewDifferences
205205
206206 @Callable(i)
207207 func estrazione_seme (hash_id) = {
208- let numero = -1
208+ let numero = 1
209209 estrai1(hash_id, numero, i)
210210 }
211211
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let delayBlock = 10
55
66 let minPayment = 100
77
88 let minPaymentUM = " centesimi di bmsCoin. "
99
1010 let acceptableAssetId = base58'GQqJPRuXvxoyz22DeLqquGcx3cdbYpWi6QdqfQUMbLuf'
1111
1212 let msgPagamento = (((("Devi effettuare un pagamento in " + toBase58String(acceptableAssetId)) + " di almeno ") + toString(minPayment)) + minPaymentUM)
1313
1414 let fieldNameRisultato = "seme_estratto"
1515
1616 let fieldNameSeed = "seed"
1717
1818 let fieldNameSeedB16 = "seed_b16"
1919
2020 let fieldNameHeightExtraction = "height_extraction"
2121
2222 let fieldNameJson = "json"
2323
2424 let fieldNameCardinalita = "cardinalita"
2525
2626 let fieldNameDataRichiesta = "data_richiesta"
2727
2828 let fieldNameEstrazioni = "estrazioni"
2929
3030 let fieldNameRichiesta = "richiesta"
3131
3232 let fieldNameEsclusioni = "esclusioni"
3333
3434 let fieldNameCounter = "counter"
3535
3636 let fieldNameIdCounter = "id_richiesta"
3737
3838 let fieldNameProvider = "provider"
3939
4040 func isPaymentOk (i) = if ((size(i.payments) == 0))
4141 then throw(msgPagamento)
4242 else {
4343 let p = i.payments[0]
4444 match p.assetId {
4545 case a: ByteVector =>
4646 if ((a == acceptableAssetId))
4747 then (p.amount >= (minPayment * 1000000))
4848 else false
4949 case _ =>
5050 false
5151 }
5252 }
5353
5454
5555 func openJson (key,value) = ((("{\"" + key) + "\": \"") + value)
5656
5757
5858 func addJson (key,value) = ((("\", \"" + key) + "\": \"") + value)
5959
6060
6161 func closeJson (key,value) = (((("\", \"" + key) + "\": \"") + value) + "\"}")
6262
6363
6464 func myGetInt (key,msg) = {
6565 let myInt = match getInteger(this, key) {
6666 case t: Int =>
6767 t
6868 case _ =>
6969 throw(msg)
7070 }
7171 myInt
7272 }
7373
7474
7575 func getCurrentBlock () = {
7676 let block = match blockInfoByHeight(height) {
7777 case x: BlockInfo =>
7878 x
7979 case _ =>
8080 throw("Alla ricerca del blocco corrente: Blocco non trovato!")
8181 }
8282 block
8383 }
8484
8585
8686 func getTimestamp () = {
8787 let block = match blockInfoByHeight(height) {
8888 case x: BlockInfo =>
8989 x.timestamp
9090 case _ =>
9191 throw("Alla ricerca del `timestamp`: Blocco non trovato!")
9292 }
9393 block
9494 }
9595
9696
9797 func getVrf (thisBlock) = {
9898 let vrf = match thisBlock.vrf {
9999 case t: ByteVector =>
100100 t
101101 case _ =>
102102 throw("Alla ricerca del `vrf`: Blocco non trovato o blocco non in versione 5 ritenta.")
103103 }
104104 vrf
105105 }
106106
107107
108108 func randomizer (inv,richiesta) = {
109109 let currentBlock = getCurrentBlock()
110110 let rand = getVrf(currentBlock)
111111 if ((size(rand) > 16000))
112112 then throw(((((("Dimensione di " + toBase16String(rand)) + " vale ") + toString(size(rand))) + " HASH: ") + toBase16String(sha256_16Kb(sha256_16Kb(rand)))))
113113 else sha256_16Kb(sha256_16Kb(rand))
114114 }
115115
116116
117117 func estrai1 (richiesta,numero,i) = {
118118 let strOwnerAddress = toString(i.caller)
119119 let keyPrefix = (((strOwnerAddress + "_") + richiesta) + "_")
120120 let keyCounter = (keyPrefix + fieldNameCounter)
121121 let maxRichiesta = myGetInt(keyCounter, "La richiesta fatta non è stata ancora registrata")
122122 let numeroRichiesta = if ((0 >= numero))
123123 then maxRichiesta
124124 else if ((maxRichiesta >= numero))
125125 then numero
126126 else throw("Non esiste una richiesta con questo numero")
127127 let keyPrefixN = ((keyPrefix + toString(numeroRichiesta)) + "_")
128128 let keyRisultato = (keyPrefixN + fieldNameRisultato)
129129 let isEstratto = match getString(this, keyRisultato) {
130130 case t: String =>
131131 throw(((("Risultato già presente in blockchain: " + keyRisultato) + ": ") + t))
132132 case _ =>
133133 false
134134 }
135135 if (!(isEstratto))
136136 then {
137137 let heightBloccoCandidato = myGetInt((keyPrefixN + fieldNameHeightExtraction), "Errore generico su dati della richiesta")
138138 if ((heightBloccoCandidato > height))
139139 then throw(((("Devi aspettare il blocco " + toString(heightBloccoCandidato)) + ". siamo al blocco ") + toString(height)))
140140 else {
141141 let keySeme = (keyPrefixN + fieldNameSeed)
142142 let seed = match getBinary(this, keySeme) {
143143 case t: ByteVector =>
144144 t
145145 case _ =>
146146 throw("Seme non trovato. Qualcosa è andata storta!")
147147 }
148148 let bloccoCandidato = match blockInfoByHeight(heightBloccoCandidato) {
149149 case block: BlockInfo =>
150150 block
151151 case _ =>
152152 throw("Errore: Il blocco di estrazione non esiste")
153153 }
154154 let vrfValue = match bloccoCandidato.vrf {
155155 case t: ByteVector =>
156156 t
157157 case _ =>
158158 throw("Blocco non in versione 5 ritenta.")
159159 }
160160 let rand = (((seed + bloccoCandidato.generationSignature) + bloccoCandidato.generatorPublicKey) + getVrf(bloccoCandidato))
161161 let sha = toBase16String(sha256_16Kb(sha256_16Kb(rand)))
162162 let strCardinalita = toString(myGetInt((keyPrefixN + fieldNameCardinalita), "Errore lettura cardinalità"))
163163 let strDataRichiesta = toString(myGetInt((keyPrefixN + fieldNameDataRichiesta), "Errore lettura DataRichiesta"))
164164 let strEstrazioni = toString(myGetInt((keyPrefixN + fieldNameEstrazioni), "Errore lettura Estrazioni"))
165165 let esclusioni = match getString(this, (keyPrefixN + fieldNameEsclusioni)) {
166166 case t: String =>
167167 t
168168 case _ =>
169169 throw("Errore: elenco esclusioni non presente")
170170 }
171171 let json = ((((((((((openJson(fieldNameIdCounter, toString(numeroRichiesta)) + addJson(fieldNameCounter, toString(maxRichiesta))) + addJson(fieldNameProvider, strOwnerAddress)) + addJson(fieldNameRichiesta, richiesta)) + addJson(fieldNameCardinalita, strCardinalita)) + addJson(fieldNameEstrazioni, strEstrazioni)) + addJson(fieldNameEsclusioni, esclusioni)) + addJson(fieldNameDataRichiesta, strDataRichiesta)) + addJson(fieldNameSeedB16, toBase16String(seed))) + addJson(fieldNameHeightExtraction, toString(heightBloccoCandidato))) + closeJson(fieldNameRisultato, sha))
172172 [StringEntry((keyPrefixN + fieldNameJson), json), StringEntry(keyRisultato, sha)]
173173 }
174174 }
175175 else throw("Errore: non dovresti passare da quì")
176176 }
177177
178178
179179 func registra1 (richiesta,cardinalita,estrazioni,esclusioni,i) = {
180180 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
181181 let keyCounter = (keyPrefix + fieldNameCounter)
182182 let nRichiesta = match getInteger(this, keyCounter) {
183183 case c: Int =>
184184 (c + 1)
185185 case _ =>
186186 1
187187 }
188188 let keyPrefixN = ((keyPrefix + toString(nRichiesta)) + "_")
189189 let seed = randomizer(i, (((richiesta + toString(cardinalita)) + toString(estrazioni)) + esclusioni))
190190 let currDate = getTimestamp()
191191 let heightExtraction = (height + delayBlock)
192192 [IntegerEntry(keyCounter, nRichiesta), IntegerEntry((keyPrefixN + fieldNameHeightExtraction), heightExtraction), IntegerEntry((keyPrefixN + fieldNameCardinalita), cardinalita), IntegerEntry((keyPrefixN + fieldNameEstrazioni), estrazioni), IntegerEntry((keyPrefixN + fieldNameDataRichiesta), currDate), BinaryEntry((keyPrefixN + fieldNameSeed), seed), StringEntry((keyPrefixN + fieldNameSeedB16), toBase16String(seed)), StringEntry((keyPrefixN + fieldNameEsclusioni), esclusioni), StringEntry((keyPrefixN + fieldNameRichiesta), richiesta)]
193193 }
194194
195195
196196 @Callable(i)
197197 func dichiarazione_intenti (hash_id,totale_fatture,num_estrazioni) = {
198198 let esclusioni = "[]"
199199 if (isPaymentOk(i))
200200 then registra1(hash_id, totale_fatture, num_estrazioni, esclusioni, i)
201201 else throw(msgPagamento)
202202 }
203203
204204
205205
206206 @Callable(i)
207207 func estrazione_seme (hash_id) = {
208- let numero = -1
208+ let numero = 1
209209 estrai1(hash_id, numero, i)
210210 }
211211
212212

github/deemru/w8io/873ac7e 
38.18 ms