tx · 7AWT2RH4RpbKtChpdfMY9rHZv2we2Zi7qijHTkuM5EKx

3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7:  -0.01000000 Waves

2022.03.16 19:14 [1966728] smart account 3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7 > SELF 0.00000000 Waves

{ "type": 13, "id": "7AWT2RH4RpbKtChpdfMY9rHZv2we2Zi7qijHTkuM5EKx", "fee": 1000000, "feeAssetId": null, "timestamp": 1647447036758, "version": 2, "chainId": 84, "sender": "3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7", "senderPublicKey": "J283pC8bzRfJ3j1oxPrgDH8hjUVhFZS2CiRcPTmzQukz", "proofs": [ "5v6oYxstfSe9oUfhcTSe8bwwXJV7Rnttz9zT89J2fvjt3pybmtatqRmmeAQXPm5rWJSALWe6baGh9DWyicTgptGo" ], "script": "base64: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eUNvdW50ZXIFAAAACm5SaWNoaWVzdGEJAARMAAAAAgkBAAAAC0JpbmFyeUVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAAAplbmRLZXlTZWVkBQAAAARzZWVkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAFmVuZEtleUhlaWdodEV4dHJhY3Rpb24FAAAAEGhlaWdodEV4dHJhY3Rpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgIAAAAMX2NhcmRpbmFsaXRhBQAAAAtjYXJkaW5hbGl0YQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOAgAAAAtfZXN0cmF6aW9uaQUAAAAKZXN0cmF6aW9uaQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABNlbmRLZXlEYXRhUmljaGllc3RhBQAAAAhjdXJyRGF0ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4CAAAACl9yaWNoaWVzdGEFAAAACXJpY2hpZXN0YQUAAAADbmlsAAAAABLWjDU=", "height": 1966728, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7ZwBwT6rviuSCjENVsd24Tmgrgnqm6tHJgwneHrsTkdt Next: FoN6Jeo28Cc76jwdQRw8RiKWtMLKNGeGYEVdRV1zFz8U Diff:
OldNewDifferences
99
1010 let endKeyHeightExtraction = "_height_extraction"
1111
12-func openJson (key,value) = (((("{\"" + key) + "\":\" ") + value) + "\", ")
12+let endKeyJson = "_json"
13+
14+let endKeyCardinalita = "_cardinalita"
15+
16+let endKeyDataRichiesta = "_data_richiesta"
17+
18+func openJson (key,value) = ((("{\"" + key) + "\":\"") + value)
1319
1420
15-func addJson (key,value) = (((("\"" + key) + "\":\" ") + value) + "\", ")
21+func addJson (key,value) = ((("\", \"" + key) + "\":\" ") + value)
1622
1723
18-func closeJson (key,value) = (((("\"" + key) + "\":\" ") + value) + "\"}")
24+func closeJson (key,value) = (((("\", \"" + key) + "\":\" ") + value) + "\"}")
25+
26+
27+func myGetInt (key,msg) = {
28+ let myInt = match getInteger(this, key) {
29+ case t: Int =>
30+ t
31+ case _ =>
32+ throw(msg)
33+ }
34+ myInt
35+ }
1936
2037
2138 func getTimestamp () = {
3956 func estrai (richiesta,numero) = {
4057 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
4158 let keyCounter = (keyPrefix + "counter")
42- let maxRichiesta = match getInteger(this, keyCounter) {
43- case c: Int =>
44- c
45- case _ =>
46- throw("La richiesta fatta non è stata ancora registrata")
47- }
59+ let maxRichiesta = myGetInt(keyCounter, "La richiesta fatta non è stata ancora registrata")
4860 let numeroRichiesta = if ((numero == 0))
4961 then maxRichiesta
50- else if ((maxRichiesta > numero))
62+ else if ((maxRichiesta >= numero))
5163 then numero
5264 else throw("Non esiste una richiesta con questo numero")
5365 let keyPrefixN = (keyPrefix + toString(numeroRichiesta))
6072 }
6173 if (!(isEstratto))
6274 then {
63- let heigthBloccoCandidato = match getInteger(this, (keyPrefixN + endKeyHeightExtraction)) {
64- case t: Int =>
65- t
66- case _ =>
67- throw("Errore generico su dati della richiesta")
68- }
75+ let heigthBloccoCandidato = myGetInt((keyPrefixN + endKeyHeightExtraction), "Errore generico su dati della richiesta")
6976 if ((heigthBloccoCandidato > height))
70- then throw("Devi aspettare ")
77+ then throw("Devi aspettare il blocco ")
7178 else {
7279 let keySeme = (keyPrefixN + endKeySeed)
7380 let seed = match getBinary(this, keySeme) {
8996 throw("Blocco non in versione 5 ritenta.")
9097 }
9198 let rand = (((seed + bloccoCandidato.generationSignature) + bloccoCandidato.generatorPublicKey) + vrfValue)
92- let sha = toBase16String(sha256_128Kb(sha256_128Kb(rand)))
93-[StringEntry(keyRisultato, sha)]
99+ let sha = toBase16String(sha256_16Kb(sha256_16Kb(rand)))
100+ let keyCardinalita = (keyPrefixN + endKeyCardinalita)
101+ let strCardinalita = match getInteger(this, keyCardinalita) {
102+ case t: Int =>
103+ toString(t)
104+ case _ =>
105+ throw("Errore lettura cardinalità")
106+ }
107+ let strDataRichiesta = match getInteger(this, endKeyDataRichiesta) {
108+ case t: Int =>
109+ toString(t)
110+ case _ =>
111+ throw("Errore lettura DataRichiesta")
112+ }
113+ 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))
114+[StringEntry((keyPrefixN + endKeyJson), json), StringEntry(keyRisultato, sha)]
94115 }
95116 }
96117 else throw("Errore: non dovresti passare da quì")
112133 let seed = randomizer(i)
113134 let currDate = getTimestamp()
114135 let heightExtraction = (height + delayBlock)
115- let json = (((openJson("nRichiesta", toString(nRichiesta)) + addJson("heightExtraction", toString(heightExtraction))) + addJson("cardinalita", toString(cardinalita))) + closeJson("richiesta", richiesta))
116-[IntegerEntry(keyCounter, nRichiesta), BinaryEntry((keyPrefixN + endKeySeed), seed), IntegerEntry((keyPrefixN + endKeyHeightExtraction), heightExtraction), IntegerEntry((keyPrefixN + "_cardinalita"), cardinalita), IntegerEntry((keyPrefixN + "_estrazioni"), estrazioni), IntegerEntry((keyPrefixN + "_data_richiesta"), currDate), StringEntry((keyPrefixN + "_richiesta"), richiesta), StringEntry((keyPrefixN + "_json"), json)]
136+[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)]
117137 }
118138
119139
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
12-func openJson (key,value) = (((("{\"" + key) + "\":\" ") + value) + "\", ")
12+let endKeyJson = "_json"
13+
14+let endKeyCardinalita = "_cardinalita"
15+
16+let endKeyDataRichiesta = "_data_richiesta"
17+
18+func openJson (key,value) = ((("{\"" + key) + "\":\"") + value)
1319
1420
15-func addJson (key,value) = (((("\"" + key) + "\":\" ") + value) + "\", ")
21+func addJson (key,value) = ((("\", \"" + key) + "\":\" ") + value)
1622
1723
18-func closeJson (key,value) = (((("\"" + key) + "\":\" ") + value) + "\"}")
24+func closeJson (key,value) = (((("\", \"" + key) + "\":\" ") + value) + "\"}")
25+
26+
27+func myGetInt (key,msg) = {
28+ let myInt = match getInteger(this, key) {
29+ case t: Int =>
30+ t
31+ case _ =>
32+ throw(msg)
33+ }
34+ myInt
35+ }
1936
2037
2138 func getTimestamp () = {
2239 let block = match blockInfoByHeight(height) {
2340 case x: BlockInfo =>
2441 x.timestamp
2542 case _ =>
2643 throw("Blocco non trovato!")
2744 }
2845 block
2946 }
3047
3148
3249 func randomizer (inv) = {
3350 let rand = ((((inv.transactionId + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
3451 sha256_16Kb(rand)
3552 }
3653
3754
3855 @Callable(i)
3956 func estrai (richiesta,numero) = {
4057 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
4158 let keyCounter = (keyPrefix + "counter")
42- let maxRichiesta = match getInteger(this, keyCounter) {
43- case c: Int =>
44- c
45- case _ =>
46- throw("La richiesta fatta non è stata ancora registrata")
47- }
59+ let maxRichiesta = myGetInt(keyCounter, "La richiesta fatta non è stata ancora registrata")
4860 let numeroRichiesta = if ((numero == 0))
4961 then maxRichiesta
50- else if ((maxRichiesta > numero))
62+ else if ((maxRichiesta >= numero))
5163 then numero
5264 else throw("Non esiste una richiesta con questo numero")
5365 let keyPrefixN = (keyPrefix + toString(numeroRichiesta))
5466 let keyRisultato = (keyPrefixN + endKeyRisultato)
5567 let isEstratto = match getString(this, keyRisultato) {
5668 case t: String =>
5769 throw("Risultato già presente in blockchain")
5870 case _ =>
5971 false
6072 }
6173 if (!(isEstratto))
6274 then {
63- let heigthBloccoCandidato = match getInteger(this, (keyPrefixN + endKeyHeightExtraction)) {
64- case t: Int =>
65- t
66- case _ =>
67- throw("Errore generico su dati della richiesta")
68- }
75+ let heigthBloccoCandidato = myGetInt((keyPrefixN + endKeyHeightExtraction), "Errore generico su dati della richiesta")
6976 if ((heigthBloccoCandidato > height))
70- then throw("Devi aspettare ")
77+ then throw("Devi aspettare il blocco ")
7178 else {
7279 let keySeme = (keyPrefixN + endKeySeed)
7380 let seed = match getBinary(this, keySeme) {
7481 case t: ByteVector =>
7582 t
7683 case _ =>
7784 throw("")
7885 }
7986 let bloccoCandidato = match blockInfoByHeight(heigthBloccoCandidato) {
8087 case block: BlockInfo =>
8188 block
8289 case _ =>
8390 throw("Errore: Il blocco di estrazione non esiste")
8491 }
8592 let vrfValue = match bloccoCandidato.vrf {
8693 case t: ByteVector =>
8794 t
8895 case _ =>
8996 throw("Blocco non in versione 5 ritenta.")
9097 }
9198 let rand = (((seed + bloccoCandidato.generationSignature) + bloccoCandidato.generatorPublicKey) + vrfValue)
92- let sha = toBase16String(sha256_128Kb(sha256_128Kb(rand)))
93-[StringEntry(keyRisultato, sha)]
99+ let sha = toBase16String(sha256_16Kb(sha256_16Kb(rand)))
100+ let keyCardinalita = (keyPrefixN + endKeyCardinalita)
101+ let strCardinalita = match getInteger(this, keyCardinalita) {
102+ case t: Int =>
103+ toString(t)
104+ case _ =>
105+ throw("Errore lettura cardinalità")
106+ }
107+ let strDataRichiesta = match getInteger(this, endKeyDataRichiesta) {
108+ case t: Int =>
109+ toString(t)
110+ case _ =>
111+ throw("Errore lettura DataRichiesta")
112+ }
113+ 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))
114+[StringEntry((keyPrefixN + endKeyJson), json), StringEntry(keyRisultato, sha)]
94115 }
95116 }
96117 else throw("Errore: non dovresti passare da quì")
97118 }
98119
99120
100121
101122 @Callable(i)
102123 func registra (richiesta,cardinalita,estrazioni) = {
103124 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
104125 let keyCounter = (keyPrefix + "counter")
105126 let nRichiesta = match getInteger(this, keyCounter) {
106127 case c: Int =>
107128 (c + 1)
108129 case _ =>
109130 1
110131 }
111132 let keyPrefixN = (keyPrefix + toString(nRichiesta))
112133 let seed = randomizer(i)
113134 let currDate = getTimestamp()
114135 let heightExtraction = (height + delayBlock)
115- let json = (((openJson("nRichiesta", toString(nRichiesta)) + addJson("heightExtraction", toString(heightExtraction))) + addJson("cardinalita", toString(cardinalita))) + closeJson("richiesta", richiesta))
116-[IntegerEntry(keyCounter, nRichiesta), BinaryEntry((keyPrefixN + endKeySeed), seed), IntegerEntry((keyPrefixN + endKeyHeightExtraction), heightExtraction), IntegerEntry((keyPrefixN + "_cardinalita"), cardinalita), IntegerEntry((keyPrefixN + "_estrazioni"), estrazioni), IntegerEntry((keyPrefixN + "_data_richiesta"), currDate), StringEntry((keyPrefixN + "_richiesta"), richiesta), StringEntry((keyPrefixN + "_json"), json)]
136+[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)]
117137 }
118138
119139

github/deemru/w8io/873ac7e 
34.43 ms