tx · 8gwAVCQHrmC8bwBmBWXBzSvSc4GT8b1K392r6DUxkygQ

3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7:  -0.01000000 Waves

2022.03.17 01:42 [1967120] smart account 3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7 > SELF 0.00000000 Waves

{ "type": 13, "id": "8gwAVCQHrmC8bwBmBWXBzSvSc4GT8b1K392r6DUxkygQ", "fee": 1000000, "feeAssetId": null, "timestamp": 1647470354050, "version": 2, "chainId": 84, "sender": "3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7", "senderPublicKey": "J283pC8bzRfJ3j1oxPrgDH8hjUVhFZS2CiRcPTmzQukz", "proofs": [ "eHiU5KcofW5r6thayGaTmhpqJYz2wdmHBXT32KUQCmBBN38YDLoxdDjSmtUAGomjpHsP3aNRFb3yEiYkrfuAmCn" ], "script": "base64:AAIFAAAAAAAAAA8IAhIECgIIARIFCgMIAQEAAAAaAAAAAApkZWxheUJsb2NrAAAAAAAAAAABAAAAAAptaW5QYXltZW50AAAAAAAdzWUAAAAAABFhY2NlcHRhYmxlQXNzZXRJZAEAAAAg5PpGdWo9J1HbfiCa7IUj8tNs55tRKSuPgPaCoKWt9soAAAAAEmZpZWxkTmFtZVJpc3VsdGF0bwIAAAANc2VtZV9lc3RyYXR0bwAAAAANZmllbGROYW1lU2VlZAIAAAAEc2VlZAAAAAAQZmllbGROYW1lU2VlZEIxNgIAAAAIc2VlZF9iMTYAAAAAGWZpZWxkTmFtZUhlaWdodEV4dHJhY3Rpb24CAAAAEWhlaWdodF9leHRyYWN0aW9uAAAAAA1maWVsZE5hbWVKc29uAgAAAARqc29uAAAAABRmaWVsZE5hbWVDYXJkaW5hbGl0YQIAAAALY2FyZGluYWxpdGEAAAAAFmZpZWxkTmFtZURhdGFSaWNoaWVzdGECAAAADmRhdGFfcmljaGllc3RhAAAAABNmaWVsZE5hbWVFc3RyYXppb25pAgAAAAplc3RyYXppb25pAAAAABJmaWVsZE5hbWVSaWNoaWVzdGECAAAACXJpY2hpZXN0YQAAAAAQZmllbGROYW1lQ291bnRlcgIAAAAHY291bnRlcgAAAAASZmllbGROYW1lSWRDb3VudGVyAgAAAAxpZF9yaWNoaWVzdGEAAAAAEWZpZWxkTmFtZVByb3ZpZGVyAgAAAAhwcm92aWRlcgEAAAALaXNQYXltZW50T2sAAAABAAAAAWkDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAgRGV2aSBlZmZldHR1YXJlIHVuIHBhZ2FtZW50byBpbiAJAAJYAAAAAQUAAAARYWNjZXB0YWJsZUFzc2V0SWQCAAAACyBkaSBhbG1lbm8gCQABpAAAAAEFAAAACm1pblBheW1lbnQEAAAAAXAJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAByRtYXRjaDAIBQAAAAFwAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVW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AAprZXlDb3VudGVyAgAAADFMYSByaWNoaWVzdGEgZmF0dGEgbm9uIMOoIHN0YXRhIGFuY29yYSByZWdpc3RyYXRhBAAAAA9udW1lcm9SaWNoaWVzdGEDCQAAZwAAAAIAAAAAAAAAAAAFAAAABm51bWVybwUAAAAMbWF4UmljaGllc3RhAwkAAGcAAAACBQAAAAxtYXhSaWNoaWVzdGEFAAAABm51bWVybwUAAAAGbnVtZXJvCQAAAgAAAAECAAAAKk5vbiBlc2lzdGUgdW5hIHJpY2hpZXN0YSBjb24gcXVlc3RvIG51bWVybwQAAAAKa2V5UHJlZml4TgkAASwAAAACCQABLAAAAAIFAAAACWtleVByZWZpeAkAAaQAAAABBQAAAA9udW1lcm9SaWNoaWVzdGECAAAAAV8EAAAADGtleVJpc3VsdGF0bwkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABJmaWVsZE5hbWVSaXN1bHRhdG8EAAAACmlzRXN0cmF0dG8EAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAAMa2V5UmlzdWx0YXRvAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXQFAAAAByRtYXRjaDAJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAnUmlzdWx0YXRvIGdpw6AgcHJlc2VudGUgaW4gYmxvY2tjaGFpbjogBQAAAAxrZXlSaXN1bHRhdG8CAAAAAjogBQAAAAF0BwMJAQAAAAEhAAAAAQUAAAAKaXNFc3RyYXR0bwQAAAAVaGVpZ2h0QmxvY2NvQ2FuZGlkYXRvCQEAAAAIbXlHZXRJbnQAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAGWZpZWxkTmFtZUhlaWdodEV4dHJhY3Rpb24CAAAAJ0Vycm9yZSBnZW5lcmljbyBzdSBkYXRpIGRlbGxhIHJpY2hpZXN0YQMJAABmAAAAAgUAAAAVaGVpZ2h0QmxvY2NvQ2FuZGlkYXRvBQAAAAZoZWlnaHQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAZRGV2aSBhc3BldHRhcmUgaWwgYmxvY2NvIAkAAaQAAAABBQAAABVoZWlnaHRCbG9jY29DYW5kaWRhdG8CAAAAEi4gc2lhbW8gYWwgYmxvY2NvIAkAAaQAAAABBQAAAAZoZWlnaHQEAAAAB2tleVNlbWUJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAANZmllbGROYW1lU2VlZAQAAAAEc2VlZAQAAAAHJG1hdGNoMAkABBwAAAACBQAAAAR0aGlzBQAAAAdrZXlTZW1lAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAF0BQAAAAckbWF0Y2gwBQAAAAF0CQAAAgAAAAECAAAALFNlbWUgbm9uIHRyb3ZhdG8uIFF1YWxjb3NhIMOoIGFuZGF0YSBzdG9ydGEhBAAAAA9ibG9jY29DYW5kaWRhdG8EAAAAByRtYXRjaDAJAAPtAAAAAQUAAAAVaGVpZ2h0QmxvY2NvQ2FuZGlkYXRvAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAlCbG9ja0luZm8EAAAABWJsb2NrBQAAAAckbWF0Y2gwBQAAAAVibG9jawkAAAIAAAABAgAAACpFcnJvcmU6IElsIGJsb2NjbyBkaSBlc3RyYXppb25lIG5vbiBlc2lzdGUEAAAACHZyZlZhbHVlBAAAAAckbWF0Y2gwCAUAAAAPYmxvY2NvQ2FuZGlkYXRvAAAAA3ZyZgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABdAUAAAAHJG1hdGNoMAUAAAABdAkAAAIAAAABAgAAACFCbG9jY28gbm9uIGluIHZlcnNpb25lIDUgcml0ZW50YS4EAAAABHJhbmQJAADLAAAAAgkAAMsAAAACCQAAywAAAAIFAAAABHNlZWQIBQAAAA9ibG9jY29DYW5kaWRhdG8AAAATZ2VuZXJhdGlvblNpZ25hdHVyZQgFAAAAD2Jsb2Njb0NhbmRpZGF0bwAAABJnZW5lcmF0b3JQdWJsaWNLZXkJAQAAAAZnZXRWcmYAAAABBQAAAA9ibG9jY29DYW5kaWRhdG8EAAAAA3NoYQkAAlwAAAABCQALVAAAAAEJAAtUAAAAAQUAAAAEcmFuZAQAAAAOc3RyQ2FyZGluYWxpdGEJAAGkAAAAAQkBAAAACG15R2V0SW50AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABRmaWVsZE5hbWVDYXJkaW5hbGl0YQIAAAAbRXJyb3JlIGxldHR1cmEgY2FyZGluYWxpdMOgBAAAABBzdHJEYXRhUmljaGllc3RhCQABpAAAAAEJAQAAAAhteUdldEludAAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAAWZmllbGROYW1lRGF0YVJpY2hpZXN0YQIAAAAcRXJyb3JlIGxldHR1cmEgRGF0YVJpY2hpZXN0YQQAAAANc3RyRXN0cmF6aW9uaQkAAaQAAAABCQEAAAAIbXlHZXRJbnQAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAE2ZpZWxkTmFtZUVzdHJhemlvbmkCAAAAGUVycm9yZSBsZXR0dXJhIEVzdHJhemlvbmkEAAAABGpzb24JAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAQAAAAhvcGVuSnNvbgAAAAIFAAAAEmZpZWxkTmFtZUlkQ291bnRlcgkAAaQAAAABBQAAAA9udW1lcm9SaWNoaWVzdGEJAQAAAAdhZGRKc29uAAAAAgUAAAAQZmllbGROYW1lQ291bnRlcgkAAaQAAAABBQAAAAxtYXhSaWNoaWVzdGEJAQAAAAdhZGRKc29uAAAAAgUAAAARZmllbGROYW1lUHJvdmlkZXIFAAAAD3N0ck93bmVyQWRkcmVzcwkBAAAAB2FkZEpzb24AAAACBQAAABJmaWVsZE5hbWVSaWNoaWVzdGEFAAAACXJpY2hpZXN0YQkBAAAAB2FkZEpzb24AAAACBQAAABRmaWVsZE5hbWVDYXJkaW5hbGl0YQUAAAAOc3RyQ2FyZGluYWxpdGEJAQAAAAdhZGRKc29uAAAAAgUAAAATZmllbGROYW1lRXN0cmF6aW9uaQUAAAANc3RyRXN0cmF6aW9uaQkBAAAAB2FkZEpzb24AAAACBQAAABZmaWVsZE5hbWVEYXRhUmljaGllc3RhBQAAABBzdHJEYXRhUmljaGllc3RhCQEAAAAHYWRkSnNvbgAAAAIFAAAAEGZpZWxkTmFtZVNlZWRCMTYJAAJcAAAAAQUAAAAEc2VlZAkBAAAAB2FkZEpzb24AAAACBQAAABlmaWVsZE5hbWVIZWlnaHRFeHRyYWN0aW9uCQABpAAAAAEFAAAAFWhlaWdodEJsb2Njb0NhbmRpZGF0bwkBAAAACWNsb3NlSnNvbgAAAAIFAAAAEmZpZWxkTmFtZVJpc3VsdGF0bwUAAAADc2hhCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAANZmllbGROYW1lSnNvbgUAAAAEanNvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAxrZXlSaXN1bHRhdG8FAAAAA3NoYQUAAAADbmlsCQAAAgAAAAECAAAAJEVycm9yZTogbm9uIGRvdnJlc3RpIHBhc3NhcmUgZGEgcXXDrAEAAAAJcmVnaXN0cmExAAAABAAAAAlyaWNoaWVzdGEAAAALY2FyZGluYWxpdGEAAAAKZXN0cmF6aW9uaQAAAAFpBAAAAAlrZXlQcmVmaXgJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAgAAAAFfBQAAAAlyaWNoaWVzdGECAAAAAV8EAAAACmtleUNvdW50ZXIJAAEsAAAAAgUAAAAJa2V5UHJlZml4BQAAABBmaWVsZE5hbWVDb3VudGVyBAAAAApuUmljaGllc3RhBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAACmtleUNvdW50ZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYwUAAAAHJG1hdGNoMAkAAGQAAAACBQAAAAFjAAAAAAAAAAABAAAAAAAAAAABBAAAAAprZXlQcmVmaXhOCQABLAAAAAIJAAEsAAAAAgUAAAAJa2V5UHJlZml4CQABpAAAAAEFAAAACm5SaWNoaWVzdGECAAAAAV8EAAAABHNlZWQJAQAAAApyYW5kb21pemVyAAAAAQUAAAABaQQAAAAIY3VyckRhdGUJAQAAAAxnZXRUaW1lc3RhbXAAAAAABAAAABBoZWlnaHRFeHRyYWN0aW9uCQAAZAAAAAIFAAAABmhlaWdodAUAAAAKZGVsYXlCbG9jawkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa2V5Q291bnRlcgUAAAAKblJpY2hpZXN0YQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABlmaWVsZE5hbWVIZWlnaHRFeHRyYWN0aW9uBQAAABBoZWlnaHRFeHRyYWN0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAFGZpZWxkTmFtZUNhcmRpbmFsaXRhBQAAAAtjYXJkaW5hbGl0YQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABNmaWVsZE5hbWVFc3RyYXppb25pBQAAAAplc3RyYXppb25pCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAFmZpZWxkTmFtZURhdGFSaWNoaWVzdGEFAAAACGN1cnJEYXRlCQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAANZmllbGROYW1lU2VlZAUAAAAEc2VlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAEGZpZWxkTmFtZVNlZWRCMTYJAAJcAAAAAQUAAAAEc2VlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAEmZpZWxkTmFtZVJpY2hpZXN0YQUAAAAJcmljaGllc3RhBQAAAANuaWwAAAACAAAAAWkBAAAABmVzdHJhaQAAAAIAAAAJcmljaGllc3RhAAAABm51bWVybwkBAAAAB2VzdHJhaTEAAAADBQAAAAlyaWNoaWVzdGEFAAAABm51bWVybwUAAAABaQAAAAFpAQAAAAhyZWdpc3RyYQAAAAMAAAAJcmljaGllc3RhAAAAC2NhcmRpbmFsaXRhAAAACmVzdHJhemlvbmkDCQEAAAALaXNQYXltZW50T2sAAAABBQAAAAFpCQEAAAAJcmVnaXN0cmExAAAABAUAAAAJcmljaGllc3RhBQAAAAtjYXJkaW5hbGl0YQUAAAAKZXN0cmF6aW9uaQUAAAABaQkAAAIAAAABAgAAABpEZXZpIGluc2VyaXJlIHVuIHBhZ2FtZW50bwAAAABzGaXL", "height": 1967120, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FPrEeFt2Kk669Uek5Z4Gi3Fcf85cZWfYD3Nt3gp9Kj8T Next: FatyWDzPd2qMCMinBxzhepp789WFCHHS9Xe2GFTAofPH Diff:
OldNewDifferences
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let delayBlock = 1
5+
6+let minPayment = 500000000
7+
8+let acceptableAssetId = base58'GQqJPRuXvxoyz22DeLqquGcx3cdbYpWi6QdqfQUMbLuf'
59
610 let fieldNameRisultato = "seme_estratto"
711
2630 let fieldNameIdCounter = "id_richiesta"
2731
2832 let fieldNameProvider = "provider"
33+
34+func isPaymentOk (i) = if ((size(i.payments) == 0))
35+ then throw(((("Devi effettuare un pagamento in " + toBase58String(acceptableAssetId)) + " di almeno ") + toString(minPayment)))
36+ else {
37+ let p = i.payments[0]
38+ match p.assetId {
39+ case a: ByteVector =>
40+ if ((a == acceptableAssetId))
41+ then (p.amount >= minPayment)
42+ else false
43+ case _ =>
44+ false
45+ }
46+ }
47+
2948
3049 func openJson (key,value) = ((("{\"" + key) + "\":\"") + value)
3150
143162 }
144163
145164
146-@Callable(i)
147-func registra (richiesta,cardinalita,estrazioni) = {
165+func registra1 (richiesta,cardinalita,estrazioni,i) = {
148166 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
149167 let keyCounter = (keyPrefix + fieldNameCounter)
150168 let nRichiesta = match getInteger(this, keyCounter) {
161179 }
162180
163181
182+@Callable(i)
183+func estrai (richiesta,numero) = estrai1(richiesta, numero, i)
184+
185+
164186
165187 @Callable(i)
166-func estrai (richiesta,numero) = estrai1(richiesta, numero, i)
188+func registra (richiesta,cardinalita,estrazioni) = if (isPaymentOk(i))
189+ then registra1(richiesta, cardinalita, estrazioni, i)
190+ else throw("Devi inserire un pagamento")
167191
168192
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let delayBlock = 1
5+
6+let minPayment = 500000000
7+
8+let acceptableAssetId = base58'GQqJPRuXvxoyz22DeLqquGcx3cdbYpWi6QdqfQUMbLuf'
59
610 let fieldNameRisultato = "seme_estratto"
711
812 let fieldNameSeed = "seed"
913
1014 let fieldNameSeedB16 = "seed_b16"
1115
1216 let fieldNameHeightExtraction = "height_extraction"
1317
1418 let fieldNameJson = "json"
1519
1620 let fieldNameCardinalita = "cardinalita"
1721
1822 let fieldNameDataRichiesta = "data_richiesta"
1923
2024 let fieldNameEstrazioni = "estrazioni"
2125
2226 let fieldNameRichiesta = "richiesta"
2327
2428 let fieldNameCounter = "counter"
2529
2630 let fieldNameIdCounter = "id_richiesta"
2731
2832 let fieldNameProvider = "provider"
33+
34+func isPaymentOk (i) = if ((size(i.payments) == 0))
35+ then throw(((("Devi effettuare un pagamento in " + toBase58String(acceptableAssetId)) + " di almeno ") + toString(minPayment)))
36+ else {
37+ let p = i.payments[0]
38+ match p.assetId {
39+ case a: ByteVector =>
40+ if ((a == acceptableAssetId))
41+ then (p.amount >= minPayment)
42+ else false
43+ case _ =>
44+ false
45+ }
46+ }
47+
2948
3049 func openJson (key,value) = ((("{\"" + key) + "\":\"") + value)
3150
3251
3352 func addJson (key,value) = ((("\", \"" + key) + "\":\" ") + value)
3453
3554
3655 func closeJson (key,value) = (((("\", \"" + key) + "\":\" ") + value) + "\"}")
3756
3857
3958 func myGetInt (key,msg) = {
4059 let myInt = match getInteger(this, key) {
4160 case t: Int =>
4261 t
4362 case _ =>
4463 throw(msg)
4564 }
4665 myInt
4766 }
4867
4968
5069 func getCurrentBlock () = {
5170 let block = match blockInfoByHeight(height) {
5271 case x: BlockInfo =>
5372 x
5473 case _ =>
5574 throw("Alla ricerca del blocco corrente: Blocco non trovato!")
5675 }
5776 block
5877 }
5978
6079
6180 func getTimestamp () = {
6281 let block = match blockInfoByHeight(height) {
6382 case x: BlockInfo =>
6483 x.timestamp
6584 case _ =>
6685 throw("Alla ricerca del `timestamp`: Blocco non trovato!")
6786 }
6887 block
6988 }
7089
7190
7291 func getVrf (thisBlock) = {
7392 let vrf = match thisBlock.vrf {
7493 case t: ByteVector =>
7594 t
7695 case _ =>
7796 throw("Alla ricerca del `vrf`: Blocco non trovato o blocco non in versione 5 ritenta.")
7897 }
7998 vrf
8099 }
81100
82101
83102 func randomizer (inv) = {
84103 let currentBlock = getCurrentBlock()
85104 let rand = (((((inv.transactionId + inv.callerPublicKey) + getVrf(currentBlock)) + currentBlock.generationSignature) + toBytes(currentBlock.timestamp)) + toBytes(currentBlock.height))
86105 sha256_16Kb(sha256_16Kb(rand))
87106 }
88107
89108
90109 func estrai1 (richiesta,numero,i) = {
91110 let strOwnerAddress = toString(i.caller)
92111 let keyPrefix = (((strOwnerAddress + "_") + richiesta) + "_")
93112 let keyCounter = (keyPrefix + fieldNameCounter)
94113 let maxRichiesta = myGetInt(keyCounter, "La richiesta fatta non è stata ancora registrata")
95114 let numeroRichiesta = if ((0 >= numero))
96115 then maxRichiesta
97116 else if ((maxRichiesta >= numero))
98117 then numero
99118 else throw("Non esiste una richiesta con questo numero")
100119 let keyPrefixN = ((keyPrefix + toString(numeroRichiesta)) + "_")
101120 let keyRisultato = (keyPrefixN + fieldNameRisultato)
102121 let isEstratto = match getString(this, keyRisultato) {
103122 case t: String =>
104123 throw(((("Risultato già presente in blockchain: " + keyRisultato) + ": ") + t))
105124 case _ =>
106125 false
107126 }
108127 if (!(isEstratto))
109128 then {
110129 let heightBloccoCandidato = myGetInt((keyPrefixN + fieldNameHeightExtraction), "Errore generico su dati della richiesta")
111130 if ((heightBloccoCandidato > height))
112131 then throw(((("Devi aspettare il blocco " + toString(heightBloccoCandidato)) + ". siamo al blocco ") + toString(height)))
113132 else {
114133 let keySeme = (keyPrefixN + fieldNameSeed)
115134 let seed = match getBinary(this, keySeme) {
116135 case t: ByteVector =>
117136 t
118137 case _ =>
119138 throw("Seme non trovato. Qualcosa è andata storta!")
120139 }
121140 let bloccoCandidato = match blockInfoByHeight(heightBloccoCandidato) {
122141 case block: BlockInfo =>
123142 block
124143 case _ =>
125144 throw("Errore: Il blocco di estrazione non esiste")
126145 }
127146 let vrfValue = match bloccoCandidato.vrf {
128147 case t: ByteVector =>
129148 t
130149 case _ =>
131150 throw("Blocco non in versione 5 ritenta.")
132151 }
133152 let rand = (((seed + bloccoCandidato.generationSignature) + bloccoCandidato.generatorPublicKey) + getVrf(bloccoCandidato))
134153 let sha = toBase16String(sha256_16Kb(sha256_16Kb(rand)))
135154 let strCardinalita = toString(myGetInt((keyPrefixN + fieldNameCardinalita), "Errore lettura cardinalità"))
136155 let strDataRichiesta = toString(myGetInt((keyPrefixN + fieldNameDataRichiesta), "Errore lettura DataRichiesta"))
137156 let strEstrazioni = toString(myGetInt((keyPrefixN + fieldNameEstrazioni), "Errore lettura Estrazioni"))
138157 let json = (((((((((openJson(fieldNameIdCounter, toString(numeroRichiesta)) + addJson(fieldNameCounter, toString(maxRichiesta))) + addJson(fieldNameProvider, strOwnerAddress)) + addJson(fieldNameRichiesta, richiesta)) + addJson(fieldNameCardinalita, strCardinalita)) + addJson(fieldNameEstrazioni, strEstrazioni)) + addJson(fieldNameDataRichiesta, strDataRichiesta)) + addJson(fieldNameSeedB16, toBase16String(seed))) + addJson(fieldNameHeightExtraction, toString(heightBloccoCandidato))) + closeJson(fieldNameRisultato, sha))
139158 [StringEntry((keyPrefixN + fieldNameJson), json), StringEntry(keyRisultato, sha)]
140159 }
141160 }
142161 else throw("Errore: non dovresti passare da quì")
143162 }
144163
145164
146-@Callable(i)
147-func registra (richiesta,cardinalita,estrazioni) = {
165+func registra1 (richiesta,cardinalita,estrazioni,i) = {
148166 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
149167 let keyCounter = (keyPrefix + fieldNameCounter)
150168 let nRichiesta = match getInteger(this, keyCounter) {
151169 case c: Int =>
152170 (c + 1)
153171 case _ =>
154172 1
155173 }
156174 let keyPrefixN = ((keyPrefix + toString(nRichiesta)) + "_")
157175 let seed = randomizer(i)
158176 let currDate = getTimestamp()
159177 let heightExtraction = (height + delayBlock)
160178 [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 + fieldNameRichiesta), richiesta)]
161179 }
162180
163181
182+@Callable(i)
183+func estrai (richiesta,numero) = estrai1(richiesta, numero, i)
184+
185+
164186
165187 @Callable(i)
166-func estrai (richiesta,numero) = estrai1(richiesta, numero, i)
188+func registra (richiesta,cardinalita,estrazioni) = if (isPaymentOk(i))
189+ then registra1(richiesta, cardinalita, estrazioni, i)
190+ else throw("Devi inserire un pagamento")
167191
168192

github/deemru/w8io/873ac7e 
44.90 ms