tx · FoN6Jeo28Cc76jwdQRw8RiKWtMLKNGeGYEVdRV1zFz8U

3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7:  -0.01000000 Waves

2022.03.16 19:17 [1966730] smart account 3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7 > SELF 0.00000000 Waves

{ "type": 13, "id": "FoN6Jeo28Cc76jwdQRw8RiKWtMLKNGeGYEVdRV1zFz8U", "fee": 1000000, "feeAssetId": null, "timestamp": 1647447242519, "version": 2, "chainId": 84, "sender": "3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7", "senderPublicKey": "J283pC8bzRfJ3j1oxPrgDH8hjUVhFZS2CiRcPTmzQukz", "proofs": [ "4JfxiqEDvSBUBczx8kc4YiozmV5yPEFoQ2JA6vZih3ENxtw2rhzN8nFZRAsdmj5ufXXBXUM44h4ycCdYZqRi9sAd" ], "script": "base64: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SW50ZWdlckVudHJ5AAAAAgUAAAAKa2V5Q291bnRlcgUAAAAKblJpY2hpZXN0YQkABEwAAAACCQEAAAALQmluYXJ5RW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAACmVuZEtleVNlZWQFAAAABHNlZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAAWZW5kS2V5SGVpZ2h0RXh0cmFjdGlvbgUAAAAQaGVpZ2h0RXh0cmFjdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOAgAAAAxfY2FyZGluYWxpdGEFAAAAC2NhcmRpbmFsaXRhCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4CAAAAC19lc3RyYXppb25pBQAAAAplc3RyYXppb25pCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAE2VuZEtleURhdGFSaWNoaWVzdGEFAAAACGN1cnJEYXRlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgIAAAAKX3JpY2hpZXN0YQUAAAAJcmljaGllc3RhBQAAAANuaWwAAAAAofhDBA==", "height": 1966730, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7AWT2RH4RpbKtChpdfMY9rHZv2we2Zi7qijHTkuM5EKx Next: CAWs2EsgwsSVsZh5gxnPbvYZgWF2fkzT418sB3b1aXd3 Diff:
OldNewDifferences
104104 case _ =>
105105 throw("Errore lettura cardinalità")
106106 }
107- let strDataRichiesta = match getInteger(this, endKeyDataRichiesta) {
107+ let strDataRichiesta = match getInteger(this, (keyPrefixN + endKeyDataRichiesta)) {
108108 case t: Int =>
109109 toString(t)
110110 case _ =>
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let delayBlock = 1
55
66 let endKeyRisultato = "_seme_estratto"
77
88 let endKeySeed = "_seed"
99
1010 let endKeyHeightExtraction = "_height_extraction"
1111
1212 let endKeyJson = "_json"
1313
1414 let endKeyCardinalita = "_cardinalita"
1515
1616 let endKeyDataRichiesta = "_data_richiesta"
1717
1818 func openJson (key,value) = ((("{\"" + key) + "\":\"") + value)
1919
2020
2121 func addJson (key,value) = ((("\", \"" + key) + "\":\" ") + value)
2222
2323
2424 func closeJson (key,value) = (((("\", \"" + key) + "\":\" ") + value) + "\"}")
2525
2626
2727 func myGetInt (key,msg) = {
2828 let myInt = match getInteger(this, key) {
2929 case t: Int =>
3030 t
3131 case _ =>
3232 throw(msg)
3333 }
3434 myInt
3535 }
3636
3737
3838 func getTimestamp () = {
3939 let block = match blockInfoByHeight(height) {
4040 case x: BlockInfo =>
4141 x.timestamp
4242 case _ =>
4343 throw("Blocco non trovato!")
4444 }
4545 block
4646 }
4747
4848
4949 func randomizer (inv) = {
5050 let rand = ((((inv.transactionId + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
5151 sha256_16Kb(rand)
5252 }
5353
5454
5555 @Callable(i)
5656 func estrai (richiesta,numero) = {
5757 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
5858 let keyCounter = (keyPrefix + "counter")
5959 let maxRichiesta = myGetInt(keyCounter, "La richiesta fatta non è stata ancora registrata")
6060 let numeroRichiesta = if ((numero == 0))
6161 then maxRichiesta
6262 else if ((maxRichiesta >= numero))
6363 then numero
6464 else throw("Non esiste una richiesta con questo numero")
6565 let keyPrefixN = (keyPrefix + toString(numeroRichiesta))
6666 let keyRisultato = (keyPrefixN + endKeyRisultato)
6767 let isEstratto = match getString(this, keyRisultato) {
6868 case t: String =>
6969 throw("Risultato già presente in blockchain")
7070 case _ =>
7171 false
7272 }
7373 if (!(isEstratto))
7474 then {
7575 let heigthBloccoCandidato = myGetInt((keyPrefixN + endKeyHeightExtraction), "Errore generico su dati della richiesta")
7676 if ((heigthBloccoCandidato > height))
7777 then throw("Devi aspettare il blocco ")
7878 else {
7979 let keySeme = (keyPrefixN + endKeySeed)
8080 let seed = match getBinary(this, keySeme) {
8181 case t: ByteVector =>
8282 t
8383 case _ =>
8484 throw("")
8585 }
8686 let bloccoCandidato = match blockInfoByHeight(heigthBloccoCandidato) {
8787 case block: BlockInfo =>
8888 block
8989 case _ =>
9090 throw("Errore: Il blocco di estrazione non esiste")
9191 }
9292 let vrfValue = match bloccoCandidato.vrf {
9393 case t: ByteVector =>
9494 t
9595 case _ =>
9696 throw("Blocco non in versione 5 ritenta.")
9797 }
9898 let rand = (((seed + bloccoCandidato.generationSignature) + bloccoCandidato.generatorPublicKey) + vrfValue)
9999 let sha = toBase16String(sha256_16Kb(sha256_16Kb(rand)))
100100 let keyCardinalita = (keyPrefixN + endKeyCardinalita)
101101 let strCardinalita = match getInteger(this, keyCardinalita) {
102102 case t: Int =>
103103 toString(t)
104104 case _ =>
105105 throw("Errore lettura cardinalità")
106106 }
107- let strDataRichiesta = match getInteger(this, endKeyDataRichiesta) {
107+ let strDataRichiesta = match getInteger(this, (keyPrefixN + endKeyDataRichiesta)) {
108108 case t: Int =>
109109 toString(t)
110110 case _ =>
111111 throw("Errore lettura DataRichiesta")
112112 }
113113 let json = (((((((openJson("n_richiesta", toString(numero)) + addJson("counter", strCardinalita)) + addJson("height_extraction", toString(heigthBloccoCandidato))) + addJson("data_richiesta", strDataRichiesta)) + addJson("cardinalita", strCardinalita)) + addJson("estrazioni", strCardinalita)) + addJson("seme_estratto", strCardinalita)) + closeJson("richiesta", richiesta))
114114 [StringEntry((keyPrefixN + endKeyJson), json), StringEntry(keyRisultato, sha)]
115115 }
116116 }
117117 else throw("Errore: non dovresti passare da quì")
118118 }
119119
120120
121121
122122 @Callable(i)
123123 func registra (richiesta,cardinalita,estrazioni) = {
124124 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
125125 let keyCounter = (keyPrefix + "counter")
126126 let nRichiesta = match getInteger(this, keyCounter) {
127127 case c: Int =>
128128 (c + 1)
129129 case _ =>
130130 1
131131 }
132132 let keyPrefixN = (keyPrefix + toString(nRichiesta))
133133 let seed = randomizer(i)
134134 let currDate = getTimestamp()
135135 let heightExtraction = (height + delayBlock)
136136 [IntegerEntry(keyCounter, nRichiesta), BinaryEntry((keyPrefixN + endKeySeed), seed), IntegerEntry((keyPrefixN + endKeyHeightExtraction), heightExtraction), IntegerEntry((keyPrefixN + "_cardinalita"), cardinalita), IntegerEntry((keyPrefixN + "_estrazioni"), estrazioni), IntegerEntry((keyPrefixN + endKeyDataRichiesta), currDate), StringEntry((keyPrefixN + "_richiesta"), richiesta)]
137137 }
138138
139139

github/deemru/w8io/873ac7e 
45.97 ms