tx · bx8j9kHEUKB2HVhqNxG9FxhSovXrmLBCngAhrMF4qjc

3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7:  -0.01000000 Waves

2022.03.16 21:37 [1966874] smart account 3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7 > SELF 0.00000000 Waves

{ "type": 13, "id": "bx8j9kHEUKB2HVhqNxG9FxhSovXrmLBCngAhrMF4qjc", "fee": 1000000, "feeAssetId": null, "timestamp": 1647455634279, "version": 2, "chainId": 84, "sender": "3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7", "senderPublicKey": "J283pC8bzRfJ3j1oxPrgDH8hjUVhFZS2CiRcPTmzQukz", "proofs": [ "48Ge1WvHVMbKXbVw1D3PBbnf9mxDemiYrMEPsdQi6ZH4XfVDM3NUa3FvZ5z5yPCZDGjVwXLbTbaEUhGbLzDVTbUL" ], "script": "base64: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AQAAAAEhAAAAAQUAAAAKaXNFc3RyYXR0bwQAAAAVaGVpZ2h0QmxvY2NvQ2FuZGlkYXRvCQEAAAAIbXlHZXRJbnQAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAGWZpZWxkTmFtZUhlaWdodEV4dHJhY3Rpb24CAAAAJ0Vycm9yZSBnZW5lcmljbyBzdSBkYXRpIGRlbGxhIHJpY2hpZXN0YQMJAABmAAAAAgUAAAAVaGVpZ2h0QmxvY2NvQ2FuZGlkYXRvBQAAAAZoZWlnaHQJAAACAAAAAQkAASwAAAACAgAAABlEZXZpIGFzcGV0dGFyZSBpbCBibG9jY28gCQABpAAAAAEFAAAAFWhlaWdodEJsb2Njb0NhbmRpZGF0bwQAAAAHa2V5U2VtZQkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAAA1maWVsZE5hbWVTZWVkBAAAAARzZWVkBAAAAAckbWF0Y2gwCQAEHAAAAAIFAAAABHRoaXMFAAAAB2tleVNlbWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAXQFAAAAByRtYXRjaDAFAAAAAXQJAAACAAAAAQIAAAAsU2VtZSBub24gdHJvdmF0by4gUXVhbGNvc2Egw6ggYW5kYXRhIHN0b3J0YSEEAAAAD2Jsb2Njb0NhbmRpZGF0bwQAAAAHJG1hdGNoMAkAA+0AAAABBQAAABVoZWlnaHRCbG9jY29DYW5kaWRhdG8DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACUJsb2NrSW5mbwQAAAAFYmxvY2sFAAAAByRtYXRjaDAFAAAABWJsb2NrCQAAAgAAAAECAAAAKkVycm9yZTogSWwgYmxvY2NvIGRpIGVzdHJhemlvbmUgbm9uIGVzaXN0ZQQAAAAIdnJmVmFsdWUEAAAAByRtYXRjaDAIBQAAAA9ibG9jY29DYW5kaWRhdG8AAAADdnJmAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAF0BQAAAAckbWF0Y2gwBQAAAAF0CQAAAgAAAAECAAAAIUJsb2NjbyBub24gaW4gdmVyc2lvbmUgNSByaXRlbnRhLgQAAAAEcmFuZAkAAMsAAAACCQAAywAAAAIJAADLAAAAAgUAAAAEc2VlZAgFAAAAD2Jsb2Njb0NhbmRpZGF0bwAAABNnZW5lcmF0aW9uU2lnbmF0dXJlCAUAAAAPYmxvY2NvQ2FuZGlkYXRvAAAAEmdlbmVyYXRvclB1YmxpY0tleQkBAAAABmdldFZyZgAAAAEFAAAAD2Jsb2Njb0NhbmRpZGF0bwQAAAADc2hhCQACXAAAAAEJAAtUAAAAAQkAC1QAAAABBQAAAARyYW5kBAAAAA5zdHJDYXJkaW5hbGl0YQkAAaQAAAABCQEAAAAIbXlHZXRJbnQAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAFGZpZWxkTmFtZUNhcmRpbmFsaXRhAgAAABtFcnJvcmUgbGV0dHVyYSBjYXJkaW5hbGl0w6AEAAAAEHN0ckRhdGFSaWNoaWVzdGEJAAGkAAAAAQkBAAAACG15R2V0SW50AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABZmaWVsZE5hbWVEYXRhUmljaGllc3RhAgAAABxFcnJvcmUgbGV0dHVyYSBEYXRhUmljaGllc3RhBAAAAA1zdHJFc3RyYXppb25pCQABpAAAAAEJAQAAAAhteUdldEludAAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAATZmllbGROYW1lRXN0cmF6aW9uaQIAAAAZRXJyb3JlIGxldHR1cmEgRXN0cmF6aW9uaQQAAAAEanNvbgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAQAAAAhvcGVuSnNvbgAAAAIFAAAAEmZpZWxkTmFtZUlkQ291bnRlcgkAAaQAAAABBQAAAA9udW1lcm9SaWNoaWVzdGEJAQAAAAdhZGRKc29uAAAAAgUAAAAQZmllbGROYW1lQ291bnRlcgkAAaQAAAABBQAAAAxtYXhSaWNoaWVzdGEJAQAAAAdhZGRKc29uAAAAAgUAAAASZmllbGROYW1lUmljaGllc3RhBQAAAAlyaWNoaWVzdGEJAQAAAAdhZGRKc29uAAAAAgUAAAAUZmllbGROYW1lQ2FyZGluYWxpdGEFAAAADnN0ckNhcmRpbmFsaXRhCQEAAAAHYWRkSnNvbgAAAAIFAAAAE2ZpZWxkTmFtZUVzdHJhemlvbmkFAAAADXN0ckVzdHJhemlvbmkJAQAAAAdhZGRKc29uAAAAAgUAAAAWZmllbGROYW1lRGF0YVJpY2hpZXN0YQUAAAAQc3RyRGF0YVJpY2hpZXN0YQkBAAAAB2FkZEpzb24AAAACBQAAABBmaWVsZE5hbWVTZWVkQjE2CQACXAAAAAEFAAAABHNlZWQJAQAAAAdhZGRKc29uAAAAAgUAAAAZZmllbGROYW1lSGVpZ2h0RXh0cmFjdGlvbgkAAaQAAAABBQAAABVoZWlnaHRCbG9jY29DYW5kaWRhdG8JAQAAAAljbG9zZUpzb24AAAACBQAAABJmaWVsZE5hbWVSaXN1bHRhdG8FAAAAA3NoYQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAADWZpZWxkTmFtZUpzb24FAAAABGpzb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAMa2V5UmlzdWx0YXRvBQAAAANzaGEFAAAAA25pbAkAAAIAAAABAgAAACRFcnJvcmU6IG5vbiBkb3ZyZXN0aSBwYXNzYXJlIGRhIHF1w6wAAAABaQEAAAAIcmVnaXN0cmEAAAADAAAACXJpY2hpZXN0YQAAAAtjYXJkaW5hbGl0YQAAAAplc3RyYXppb25pBAAAAAlrZXlQcmVmaXgJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAgAAAAFfBQAAAAlyaWNoaWVzdGECAAAAAV8EAAAACmtleUNvdW50ZXIJAAEsAAAAAgUAAAAJa2V5UHJlZml4BQAAABBmaWVsZE5hbWVDb3VudGVyBAAAAApuUmljaGllc3RhBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAACmtleUNvdW50ZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYwUAAAAHJG1hdGNoMAkAAGQAAAACBQAAAAFjAAAAAAAAAAABAAAAAAAAAAABBAAAAAprZXlQcmVmaXhOCQABLAAAAAIJAAEsAAAAAgUAAAAJa2V5UHJlZml4CQABpAAAAAEFAAAACm5SaWNoaWVzdGECAAAAAV8EAAAABHNlZWQJAQAAAApyYW5kb21pemVyAAAAAQUAAAABaQQAAAAIY3VyckRhdGUJAQAAAAxnZXRUaW1lc3RhbXAAAAAABAAAABBoZWlnaHRFeHRyYWN0aW9uCQAAZAAAAAIFAAAABmhlaWdodAUAAAAKZGVsYXlCbG9jawkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa2V5Q291bnRlcgUAAAAKblJpY2hpZXN0YQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAEGZpZWxkTmFtZVNlZWRCMTYJAAJcAAAAAQUAAAAEc2VlZAkABEwAAAACCQEAAAALQmluYXJ5RW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAADWZpZWxkTmFtZVNlZWQFAAAABHNlZWQJAARMAAAAAgkBAAAAC0JpbmFyeUVudHJ5AAAAAgIAAAAIdGVzdF92cmYJAQAAAAZnZXRWcmYAAAABCQEAAAAPZ2V0Q3VycmVudEJsb2NrAAAAAAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAAh0ZXN0X3ZyZgkAAlgAAAABCQEAAAAGZ2V0VnJmAAAAAQkBAAAAD2dldEN1cnJlbnRCbG9jawAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAAZZmllbGROYW1lSGVpZ2h0RXh0cmFjdGlvbgUAAAAQaGVpZ2h0RXh0cmFjdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABRmaWVsZE5hbWVDYXJkaW5hbGl0YQUAAAALY2FyZGluYWxpdGEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAATZmllbGROYW1lRXN0cmF6aW9uaQUAAAAKZXN0cmF6aW9uaQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABZmaWVsZE5hbWVEYXRhUmljaGllc3RhBQAAAAhjdXJyRGF0ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAEmZpZWxkTmFtZVJpY2hpZXN0YQUAAAAJcmljaGllc3RhBQAAAANuaWwAAAAAYJ4I1g==", "height": 1966874, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 44CX2X8qrFLSWUnJfyuia4Zeju9FynME48hBGLXkxb6s Next: BoaeGAyH5JDHXHUH7Q5jXH9yiHSmtiUMMd7HuuLswh5g Diff:
OldNewDifferences
4545 }
4646
4747
48+func getCurrentBlock () = {
49+ let block = match blockInfoByHeight(height) {
50+ case x: BlockInfo =>
51+ x
52+ case _ =>
53+ throw("Alla ricerca del blocco corrente: Blocco non trovato!")
54+ }
55+ block
56+ }
57+
58+
4859 func getTimestamp () = {
4960 let block = match blockInfoByHeight(height) {
5061 case x: BlockInfo =>
5667 }
5768
5869
59-func getVrf () = {
60- let block = match blockInfoByHeight(height) {
61- case x: BlockInfo =>
62- match x.vrf {
63- case t: ByteVector =>
64- t
65- case _ =>
66- throw("Alla ricerca del `vrf`: Blocco non trovato!")
67- }
70+func getVrf (thisBlock) = {
71+ let vrf = match thisBlock.vrf {
72+ case t: ByteVector =>
73+ t
6874 case _ =>
69- throw("Alla ricerca del `vrf`: Blocco non trovato!")
75+ throw("Alla ricerca del `vrf`: Blocco non trovato o blocco non in versione 5 ritenta.")
7076 }
71- block
77+ vrf
7278 }
7379
7480
7581 func randomizer (inv) = {
76- let rand = (((((getVrf() + inv.transactionId) + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
82+ let currentBlock = getCurrentBlock()
83+ let rand = (((((inv.transactionId + inv.callerPublicKey) + getVrf(currentBlock)) + currentBlock.generationSignature) + toBytes(currentBlock.timestamp)) + toBytes(currentBlock.height))
7784 sha256_16Kb(sha256_16Kb(rand))
7885 }
7986
121128 case _ =>
122129 throw("Blocco non in versione 5 ritenta.")
123130 }
124- let rand = (((seed + bloccoCandidato.generationSignature) + bloccoCandidato.generatorPublicKey) + vrfValue)
131+ let rand = (((seed + bloccoCandidato.generationSignature) + bloccoCandidato.generatorPublicKey) + getVrf(bloccoCandidato))
125132 let sha = toBase16String(sha256_16Kb(sha256_16Kb(rand)))
126133 let strCardinalita = toString(myGetInt((keyPrefixN + fieldNameCardinalita), "Errore lettura cardinalità"))
127134 let strDataRichiesta = toString(myGetInt((keyPrefixN + fieldNameDataRichiesta), "Errore lettura DataRichiesta"))
149156 let seed = randomizer(i)
150157 let currDate = getTimestamp()
151158 let heightExtraction = (height + delayBlock)
152-[IntegerEntry(keyCounter, nRichiesta), StringEntry((keyPrefixN + fieldNameSeedB16), toBase16String(seed)), BinaryEntry((keyPrefixN + fieldNameSeed), seed), StringEntry("test_vrf", toBase58String(getVrf())), IntegerEntry((keyPrefixN + fieldNameHeightExtraction), heightExtraction), IntegerEntry((keyPrefixN + fieldNameCardinalita), cardinalita), IntegerEntry((keyPrefixN + fieldNameEstrazioni), estrazioni), IntegerEntry((keyPrefixN + fieldNameDataRichiesta), currDate), StringEntry((keyPrefixN + fieldNameRichiesta), richiesta)]
159+[IntegerEntry(keyCounter, nRichiesta), StringEntry((keyPrefixN + fieldNameSeedB16), toBase16String(seed)), BinaryEntry((keyPrefixN + fieldNameSeed), seed), BinaryEntry("test_vrf", getVrf(getCurrentBlock())), StringEntry("test_vrf", toBase58String(getVrf(getCurrentBlock()))), IntegerEntry((keyPrefixN + fieldNameHeightExtraction), heightExtraction), IntegerEntry((keyPrefixN + fieldNameCardinalita), cardinalita), IntegerEntry((keyPrefixN + fieldNameEstrazioni), estrazioni), IntegerEntry((keyPrefixN + fieldNameDataRichiesta), currDate), StringEntry((keyPrefixN + fieldNameRichiesta), richiesta)]
153160 }
154161
155162
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let delayBlock = 1
55
66 let fieldNameRisultato = "seme_estratto"
77
88 let fieldNameSeed = "seed"
99
1010 let fieldNameSeedB16 = "seed_b16"
1111
1212 let fieldNameHeightExtraction = "height_extraction"
1313
1414 let fieldNameJson = "json"
1515
1616 let fieldNameCardinalita = "cardinalita"
1717
1818 let fieldNameDataRichiesta = "data_richiesta"
1919
2020 let fieldNameEstrazioni = "estrazioni"
2121
2222 let fieldNameRichiesta = "richiesta"
2323
2424 let fieldNameCounter = "counter"
2525
2626 let fieldNameIdCounter = "id_richiesta"
2727
2828 func openJson (key,value) = ((("{\"" + key) + "\":\"") + value)
2929
3030
3131 func addJson (key,value) = ((("\", \"" + key) + "\":\" ") + value)
3232
3333
3434 func closeJson (key,value) = (((("\", \"" + key) + "\":\" ") + value) + "\"}")
3535
3636
3737 func myGetInt (key,msg) = {
3838 let myInt = match getInteger(this, key) {
3939 case t: Int =>
4040 t
4141 case _ =>
4242 throw(msg)
4343 }
4444 myInt
4545 }
4646
4747
48+func getCurrentBlock () = {
49+ let block = match blockInfoByHeight(height) {
50+ case x: BlockInfo =>
51+ x
52+ case _ =>
53+ throw("Alla ricerca del blocco corrente: Blocco non trovato!")
54+ }
55+ block
56+ }
57+
58+
4859 func getTimestamp () = {
4960 let block = match blockInfoByHeight(height) {
5061 case x: BlockInfo =>
5162 x.timestamp
5263 case _ =>
5364 throw("Alla ricerca del `timestamp`: Blocco non trovato!")
5465 }
5566 block
5667 }
5768
5869
59-func getVrf () = {
60- let block = match blockInfoByHeight(height) {
61- case x: BlockInfo =>
62- match x.vrf {
63- case t: ByteVector =>
64- t
65- case _ =>
66- throw("Alla ricerca del `vrf`: Blocco non trovato!")
67- }
70+func getVrf (thisBlock) = {
71+ let vrf = match thisBlock.vrf {
72+ case t: ByteVector =>
73+ t
6874 case _ =>
69- throw("Alla ricerca del `vrf`: Blocco non trovato!")
75+ throw("Alla ricerca del `vrf`: Blocco non trovato o blocco non in versione 5 ritenta.")
7076 }
71- block
77+ vrf
7278 }
7379
7480
7581 func randomizer (inv) = {
76- let rand = (((((getVrf() + inv.transactionId) + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
82+ let currentBlock = getCurrentBlock()
83+ let rand = (((((inv.transactionId + inv.callerPublicKey) + getVrf(currentBlock)) + currentBlock.generationSignature) + toBytes(currentBlock.timestamp)) + toBytes(currentBlock.height))
7784 sha256_16Kb(sha256_16Kb(rand))
7885 }
7986
8087
8188 @Callable(i)
8289 func estrai (richiesta,numero) = {
8390 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
8491 let keyCounter = (keyPrefix + fieldNameCounter)
8592 let maxRichiesta = myGetInt(keyCounter, "La richiesta fatta non è stata ancora registrata")
8693 let numeroRichiesta = if ((0 >= numero))
8794 then maxRichiesta
8895 else if ((maxRichiesta >= numero))
8996 then numero
9097 else throw("Non esiste una richiesta con questo numero")
9198 let keyPrefixN = ((keyPrefix + toString(numeroRichiesta)) + "_")
9299 let keyRisultato = (keyPrefixN + fieldNameRisultato)
93100 let isEstratto = match getString(this, keyRisultato) {
94101 case t: String =>
95102 throw(("Risultato già presente in blockchain: " + keyRisultato))
96103 case _ =>
97104 false
98105 }
99106 if (!(isEstratto))
100107 then {
101108 let heightBloccoCandidato = myGetInt((keyPrefixN + fieldNameHeightExtraction), "Errore generico su dati della richiesta")
102109 if ((heightBloccoCandidato > height))
103110 then throw(("Devi aspettare il blocco " + toString(heightBloccoCandidato)))
104111 else {
105112 let keySeme = (keyPrefixN + fieldNameSeed)
106113 let seed = match getBinary(this, keySeme) {
107114 case t: ByteVector =>
108115 t
109116 case _ =>
110117 throw("Seme non trovato. Qualcosa è andata storta!")
111118 }
112119 let bloccoCandidato = match blockInfoByHeight(heightBloccoCandidato) {
113120 case block: BlockInfo =>
114121 block
115122 case _ =>
116123 throw("Errore: Il blocco di estrazione non esiste")
117124 }
118125 let vrfValue = match bloccoCandidato.vrf {
119126 case t: ByteVector =>
120127 t
121128 case _ =>
122129 throw("Blocco non in versione 5 ritenta.")
123130 }
124- let rand = (((seed + bloccoCandidato.generationSignature) + bloccoCandidato.generatorPublicKey) + vrfValue)
131+ let rand = (((seed + bloccoCandidato.generationSignature) + bloccoCandidato.generatorPublicKey) + getVrf(bloccoCandidato))
125132 let sha = toBase16String(sha256_16Kb(sha256_16Kb(rand)))
126133 let strCardinalita = toString(myGetInt((keyPrefixN + fieldNameCardinalita), "Errore lettura cardinalità"))
127134 let strDataRichiesta = toString(myGetInt((keyPrefixN + fieldNameDataRichiesta), "Errore lettura DataRichiesta"))
128135 let strEstrazioni = toString(myGetInt((keyPrefixN + fieldNameEstrazioni), "Errore lettura Estrazioni"))
129136 let json = ((((((((openJson(fieldNameIdCounter, toString(numeroRichiesta)) + addJson(fieldNameCounter, toString(maxRichiesta))) + addJson(fieldNameRichiesta, richiesta)) + addJson(fieldNameCardinalita, strCardinalita)) + addJson(fieldNameEstrazioni, strEstrazioni)) + addJson(fieldNameDataRichiesta, strDataRichiesta)) + addJson(fieldNameSeedB16, toBase16String(seed))) + addJson(fieldNameHeightExtraction, toString(heightBloccoCandidato))) + closeJson(fieldNameRisultato, sha))
130137 [StringEntry((keyPrefixN + fieldNameJson), json), StringEntry(keyRisultato, sha)]
131138 }
132139 }
133140 else throw("Errore: non dovresti passare da quì")
134141 }
135142
136143
137144
138145 @Callable(i)
139146 func registra (richiesta,cardinalita,estrazioni) = {
140147 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
141148 let keyCounter = (keyPrefix + fieldNameCounter)
142149 let nRichiesta = match getInteger(this, keyCounter) {
143150 case c: Int =>
144151 (c + 1)
145152 case _ =>
146153 1
147154 }
148155 let keyPrefixN = ((keyPrefix + toString(nRichiesta)) + "_")
149156 let seed = randomizer(i)
150157 let currDate = getTimestamp()
151158 let heightExtraction = (height + delayBlock)
152-[IntegerEntry(keyCounter, nRichiesta), StringEntry((keyPrefixN + fieldNameSeedB16), toBase16String(seed)), BinaryEntry((keyPrefixN + fieldNameSeed), seed), StringEntry("test_vrf", toBase58String(getVrf())), IntegerEntry((keyPrefixN + fieldNameHeightExtraction), heightExtraction), IntegerEntry((keyPrefixN + fieldNameCardinalita), cardinalita), IntegerEntry((keyPrefixN + fieldNameEstrazioni), estrazioni), IntegerEntry((keyPrefixN + fieldNameDataRichiesta), currDate), StringEntry((keyPrefixN + fieldNameRichiesta), richiesta)]
159+[IntegerEntry(keyCounter, nRichiesta), StringEntry((keyPrefixN + fieldNameSeedB16), toBase16String(seed)), BinaryEntry((keyPrefixN + fieldNameSeed), seed), BinaryEntry("test_vrf", getVrf(getCurrentBlock())), StringEntry("test_vrf", toBase58String(getVrf(getCurrentBlock()))), IntegerEntry((keyPrefixN + fieldNameHeightExtraction), heightExtraction), IntegerEntry((keyPrefixN + fieldNameCardinalita), cardinalita), IntegerEntry((keyPrefixN + fieldNameEstrazioni), estrazioni), IntegerEntry((keyPrefixN + fieldNameDataRichiesta), currDate), StringEntry((keyPrefixN + fieldNameRichiesta), richiesta)]
153160 }
154161
155162

github/deemru/w8io/873ac7e 
32.35 ms