tx · Dvf51PW6mkNaHTtXSpRgUTmqLE2HYQy9zyakZXzpTntz

3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7:  -0.01000000 Waves

2022.03.17 02:51 [1967194] smart account 3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7 > SELF 0.00000000 Waves

{ "type": 13, "id": "Dvf51PW6mkNaHTtXSpRgUTmqLE2HYQy9zyakZXzpTntz", "fee": 1000000, "feeAssetId": null, "timestamp": 1647474495137, "version": 2, "chainId": 84, "sender": "3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7", "senderPublicKey": "J283pC8bzRfJ3j1oxPrgDH8hjUVhFZS2CiRcPTmzQukz", "proofs": [ "3F7STr9HVBcQepBSuh2Ku39LX3uhkCRjdmiU6jqtcKXNQsYFBFCx39VKRE4wLX2DWJmgazYzvS658YA5MykecC4h" ], "script": "base64:AAIFAAAAAAAAABAIAhIECgIIARIGCgQIAQEIAAAAHAAAAAAKZGVsYXlCbG9jawAAAAAAAAAAAQAAAAAKbWluUGF5bWVudAAAAAAAAAAACgAAAAARYWNjZXB0YWJsZUFzc2V0SWQBAAAAIOT6RnVqPSdR234gmuyFI/LTbOebUSkrj4D2gqClrfbKAAAAAAxtc2dQYWdhbWVudG8JAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAIERldmkgZWZmZXR0dWFyZSB1biBwYWdhbWVudG8gaW4gCQACWAAAAAEFAAAAEWFjY2VwdGFibGVBc3NldElkAgAAAAsgZGkgYWxtZW5vIAkAAaQAAAABBQAAAAptaW5QYXltZW50AAAAABJmaWVsZE5hbWVSaXN1bHRhdG8CAAAADXNlbWVfZXN0cmF0dG8AAAAADWZpZWxkTmFtZVNlZWQCAAAABHNlZWQAAAAAEGZpZWxkTmFtZVNlZWRCMTYCAAAACHNlZWRfYjE2AAAAABlmaWVsZE5hbWVIZWlnaHRFeHRyYWN0aW9uAgAAABFoZWlnaHRfZXh0cmFjdGlvbgAAAAANZmllbGROYW1lSnNvbgIAAAAEanNvbgAAAAAUZmllbGROYW1lQ2FyZGluYWxpdGECAAAAC2NhcmRpbmFsaXRhAAAAABZmaWVsZE5hbWVEYXRhUmljaGllc3RhAgAAAA5kYXRhX3JpY2hpZXN0YQAAAAATZmllbGROYW1lRXN0cmF6aW9uaQIAAAAKZXN0cmF6aW9uaQAAAAASZmllbGROYW1lUmljaGllc3RhAgAAAAlyaWNoaWVzdGEAAAAAE2ZpZWxkTmFtZUVzY2x1c2lvbmkCAAAACmVzY2x1c2lvbmkAAAAAEGZpZWxkTmFtZUNvdW50ZXICAAAAB2NvdW50ZXIAAAAAEmZpZWxkTmFtZUlkQ291bnRlcgIAAAAMaWRfcmljaGllc3RhAAAAABFmaWVsZE5hbWVQcm92aWRlcgIAAAAIcHJvdmlkZXIBAAAAC2lzUGF5bWVudE9rAAAAAQAAAAFpAwkAAAAAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAEFAAAADG1zZ1BhZ2FtZW50bwQAAAABcAkAAZEAAAACCAUAAAABaQAAAAhwYXlt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a2V5Q291bnRlcgkAASwAAAACBQAAAAlrZXlQcmVmaXgFAAAAEGZpZWxkTmFtZUNvdW50ZXIEAAAADG1heFJpY2hpZXN0YQkBAAAACG15R2V0SW50AAAAAgUAAAAKa2V5Q291bnRlcgIAAAAxTGEgcmljaGllc3RhIGZhdHRhIG5vbiDDqCBzdGF0YSBhbmNvcmEgcmVnaXN0cmF0YQQAAAAPbnVtZXJvUmljaGllc3RhAwkAAGcAAAACAAAAAAAAAAAABQAAAAZudW1lcm8FAAAADG1heFJpY2hpZXN0YQMJAABnAAAAAgUAAAAMbWF4UmljaGllc3RhBQAAAAZudW1lcm8FAAAABm51bWVybwkAAAIAAAABAgAAACpOb24gZXNpc3RlIHVuYSByaWNoaWVzdGEgY29uIHF1ZXN0byBudW1lcm8EAAAACmtleVByZWZpeE4JAAEsAAAAAgkAASwAAAACBQAAAAlrZXlQcmVmaXgJAAGkAAAAAQUAAAAPbnVtZXJvUmljaGllc3RhAgAAAAFfBAAAAAxrZXlSaXN1bHRhdG8JAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAASZmllbGROYW1lUmlzdWx0YXRvBAAAAAppc0VzdHJhdHRvBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAADGtleVJpc3VsdGF0bwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAF0BQAAAAckbWF0Y2gwCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJ1Jpc3VsdGF0byBnacOgIHByZXNlbnRlIGluIGJsb2NrY2hhaW46IAUAAAAMa2V5UmlzdWx0YXRvAgAAAAI6IAUAAAABdAcDCQEAAAABIQAAAAEFAAAACmlzRXN0cmF0dG8EAAAAFWhlaWdodEJsb2Njb0NhbmRpZGF0bwkBAAAACG15R2V0SW50AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABlmaWVsZE5hbWVIZWlnaHRFeHRyYWN0aW9uAgAAACdFcnJvcmUgZ2VuZXJpY28gc3UgZGF0aSBkZWxsYSByaWNoaWVzdGEDCQAAZgAAAAIFAAAAFWhlaWdodEJsb2Njb0NhbmRpZGF0bwUAAAAGaGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAGURldmkgYXNwZXR0YXJlIGlsIGJsb2NjbyAJAAGkAAAAAQUAAAAVaGVpZ2h0QmxvY2NvQ2FuZGlkYXRvAgAAABIuIHNpYW1vIGFsIGJsb2NjbyAJAAGkAAAAAQUAAAAGaGVpZ2h0BAAAAAdrZXlTZW1lCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAADWZpZWxkTmFtZVNlZWQEAAAABHNlZWQEAAAAByRtYXRjaDAJAAQcAAAAAgUAAAAEdGhpcwUAAAAHa2V5U2VtZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABdAUAAAAHJG1hdGNoMAUAAAABdAkAAAIAAAABAgAAACxTZW1lIG5vbiB0cm92YXRvLiBRdWFsY29zYSDDqCBhbmRhdGEgc3RvcnRhIQQAAAAPYmxvY2NvQ2FuZGlkYXRvBAAAAAckbWF0Y2gwCQAD7QAAAAEFAAAAFWhlaWdodEJsb2Njb0NhbmRpZGF0bwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAJQmxvY2tJbmZvBAAAAAVibG9jawUAAAAHJG1hdGNoMAUAAAAFYmxvY2sJAAACAAAAAQIAAAAqRXJyb3JlOiBJbCBibG9jY28gZGkgZXN0cmF6aW9uZSBub24gZXNpc3RlBAAAAAh2cmZWYWx1ZQQAAAAHJG1hdGNoMAgFAAAAD2Jsb2Njb0NhbmRpZGF0bwAAAAN2cmYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAXQFAAAAByRtYXRjaDAFAAAAAXQJAAACAAAAAQIAAAAhQmxvY2NvIG5vbiBpbiB2ZXJzaW9uZSA1IHJpdGVudGEuBAAAAARyYW5kCQAAywAAAAIJAADLAAAAAgkAAMsAAAACBQAAAARzZWVkCAUAAAAPYmxvY2NvQ2FuZGlkYXRvAAAAE2dlbmVyYXRpb25TaWduYXR1cmUIBQAAAA9ibG9jY29DYW5kaWRhdG8AAAASZ2VuZXJhdG9yUHVibGljS2V5CQEAAAAGZ2V0VnJmAAAAAQUAAAAPYmxvY2NvQ2FuZGlkYXRvBAAAAANzaGEJAAJcAAAAAQkAC1QAAAABCQALVAAAAAEFAAAABHJhbmQEAAAADnN0ckNhcmRpbmFsaXRhCQABpAAAAAEJAQAAAAhteUdldEludAAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAAUZmllbGROYW1lQ2FyZGluYWxpdGECAAAAG0Vycm9yZSBsZXR0dXJhIGNhcmRpbmFsaXTDoAQAAAAQc3RyRGF0YVJpY2hpZXN0YQkAAaQAAAABCQEAAAAIbXlHZXRJbnQAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAFmZpZWxkTmFtZURhdGFSaWNoaWVzdGECAAAAHEVycm9yZSBsZXR0dXJhIERhdGFSaWNoaWVzdGEEAAAADXN0ckVzdHJhemlvbmkJAAGkAAAAAQkBAAAACG15R2V0SW50AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABNmaWVsZE5hbWVFc3RyYXppb25pAgAAABlFcnJvcmUgbGV0dHVyYSBFc3RyYXppb25pBAAAAAplc2NsdXNpb25pBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAATZmllbGROYW1lRXNjbHVzaW9uaQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAF0BQAAAAckbWF0Y2gwBQAAAAF0CQAAAgAAAAECAAAAJkVycm9yZTogZWxlbmNvIGVzY2x1c2lvbmkgbm9uIHByZXNlbnRlBAAAAARqc29uCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAQAAAAhvcGVuSnNvbgAAAAIFAAAAEmZpZWxkTmFtZUlkQ291bnRlcgkAAaQAAAABBQAAAA9udW1lcm9SaWNoaWVzdGEJAQAAAAdhZGRKc29uAAAAAgUAAAAQZmllbGROYW1lQ291bnRlcgkAAaQAAAABBQAAAAxtYXhSaWNoaWVzdGEJAQAAAAdhZGRKc29uAAAAAgUAAAARZmllbGROYW1lUHJvdmlkZXIFAAAAD3N0ck93bmVyQWRkcmVzcwkBAAAAB2FkZEpzb24AAAACBQAAABJmaWVsZE5hbWVSaWNoaWVzdGEFAAAACXJpY2hpZXN0YQkBAAAAB2FkZEpzb24AAAACBQAAABRmaWVsZE5hbWVDYXJkaW5hbGl0YQUAAAAOc3RyQ2FyZGluYWxpdGEJAQAAAAdhZGRKc29uAAAAAgUAAAATZmllbGROYW1lRXN0cmF6aW9uaQUAAAANc3RyRXN0cmF6aW9uaQkBAAAAB2FkZEpzb24AAAACBQAAABNmaWVsZE5hbWVFc2NsdXNpb25pBQAAAAplc2NsdXNpb25pCQEAAAAHYWRkSnNvbgAAAAIFAAAAFmZpZWxkTmFtZURhdGFSaWNoaWVzdGEFAAAAEHN0ckRhdGFSaWNoaWVzdGEJAQAAAAdhZGRKc29uAAAAAgUAAAAQZmllbGROYW1lU2VlZEIxNgkAAlwAAAABBQAAAARzZWVkCQEAAAAHYWRkSnNvbgAAAAIFAAAAGWZpZWxkTmFtZUhlaWdodEV4dHJhY3Rpb24JAAGkAAAAAQUAAAAVaGVpZ2h0QmxvY2NvQ2FuZGlkYXRvCQEAAAAJY2xvc2VKc29uAAAAAgUAAAASZmllbGROYW1lUmlzdWx0YXRvBQAAAANzaGEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAAA1maWVsZE5hbWVKc29uBQAAAARqc29uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADGtleVJpc3VsdGF0bwUAAAADc2hhBQAAAANuaWwJAAACAAAAAQIAAAAkRXJyb3JlOiBub24gZG92cmVzdGkgcGFzc2FyZSBkYSBxdcOsAQAAAAlyZWdpc3RyYTEAAAAFAAAACXJpY2hpZXN0YQAAAAtjYXJkaW5hbGl0YQAAAAplc3RyYXppb25pAAAACmVzY2x1c2lvbmkAAAABaQQAAAAJa2V5UHJlZml4CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgIAAAABXwUAAAAJcmljaGllc3RhAgAAAAFfBAAAAAprZXlDb3VudGVyCQABLAAAAAIFAAAACWtleVByZWZpeAUAAAAQZmllbGROYW1lQ291bnRlcgQAAAAKblJpY2hpZXN0YQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAAprZXlDb3VudGVyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWMFAAAAByRtYXRjaDAJAABkAAAAAgUAAAABYwAAAAAAAAAAAQAAAAAAAAAAAQQAAAAKa2V5UHJlZml4TgkAASwAAAACCQABLAAAAAIFAAAACWtleVByZWZpeAkAAaQAAAABBQAAAApuUmljaGllc3RhAgAAAAFfBAAAAARzZWVkCQEAAAAKcmFuZG9taXplcgAAAAEFAAAAAWkEAAAACGN1cnJEYXRlCQEAAAAMZ2V0VGltZXN0YW1wAAAAAAQAAAAQaGVpZ2h0RXh0cmFjdGlvbgkAAGQAAAACBQAAAAZoZWlnaHQFAAAACmRlbGF5QmxvY2sJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACmtleUNvdW50ZXIFAAAACm5SaWNoaWVzdGEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAAZZmllbGROYW1lSGVpZ2h0RXh0cmFjdGlvbgUAAAAQaGVpZ2h0RXh0cmFjdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABRmaWVsZE5hbWVDYXJkaW5hbGl0YQUAAAALY2FyZGluYWxpdGEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAATZmllbGROYW1lRXN0cmF6aW9uaQUAAAAKZXN0cmF6aW9uaQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABZmaWVsZE5hbWVEYXRhUmljaGllc3RhBQAAAAhjdXJyRGF0ZQkABEwAAAACCQEAAAALQmluYXJ5RW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAADWZpZWxkTmFtZVNlZWQFAAAABHNlZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABBmaWVsZE5hbWVTZWVkQjE2CQACXAAAAAEFAAAABHNlZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABNmaWVsZE5hbWVFc2NsdXNpb25pBQAAAAplc2NsdXNpb25pCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAASZmllbGROYW1lUmljaGllc3RhBQAAAAlyaWNoaWVzdGEFAAAAA25pbAAAAAIAAAABaQEAAAAGZXN0cmFpAAAAAgAAAAlyaWNoaWVzdGEAAAAGbnVtZXJvAwkBAAAAC2lzUGF5bWVudE9rAAAAAQUAAAABaQkBAAAAB2VzdHJhaTEAAAADBQAAAAlyaWNoaWVzdGEFAAAABm51bWVybwUAAAABaQkAAAIAAAABBQAAAAxtc2dQYWdhbWVudG8AAAABaQEAAAAIcmVnaXN0cmEAAAAEAAAACXJpY2hpZXN0YQAAAAtjYXJkaW5hbGl0YQAAAAplc3RyYXppb25pAAAACmVzY2x1c2lvbmkDCQEAAAALaXNQYXltZW50T2sAAAABBQAAAAFpCQEAAAAJcmVnaXN0cmExAAAABQUAAAAJcmljaGllc3RhBQAAAAtjYXJkaW5hbGl0YQUAAAAKZXN0cmF6aW9uaQUAAAAKZXNjbHVzaW9uaQUAAAABaQkAAAIAAAABBQAAAAxtc2dQYWdhbWVudG8AAAAAMJq9TA==", "height": 1967194, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FatyWDzPd2qMCMinBxzhepp789WFCHHS9Xe2GFTAofPH Next: BMuy4SZfAaEdxDzzQnzV9AwmtjxmLEmVAjrqQM4NmxMN Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let delayBlock = 1
55
6-let minPayment = 100000000
6+let minPayment = 10
77
88 let acceptableAssetId = base58'GQqJPRuXvxoyz22DeLqquGcx3cdbYpWi6QdqfQUMbLuf'
99
2727
2828 let fieldNameRichiesta = "richiesta"
2929
30+let fieldNameEsclusioni = "esclusioni"
31+
3032 let fieldNameCounter = "counter"
3133
3234 let fieldNameIdCounter = "id_richiesta"
4042 match p.assetId {
4143 case a: ByteVector =>
4244 if ((a == acceptableAssetId))
43- then (p.amount >= minPayment)
45+ then (p.amount >= (minPayment * 1000000))
4446 else false
4547 case _ =>
4648 false
156158 let strCardinalita = toString(myGetInt((keyPrefixN + fieldNameCardinalita), "Errore lettura cardinalità"))
157159 let strDataRichiesta = toString(myGetInt((keyPrefixN + fieldNameDataRichiesta), "Errore lettura DataRichiesta"))
158160 let strEstrazioni = toString(myGetInt((keyPrefixN + fieldNameEstrazioni), "Errore lettura Estrazioni"))
159- 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))
161+ let esclusioni = match getString(this, (keyPrefixN + fieldNameEsclusioni)) {
162+ case t: String =>
163+ t
164+ case _ =>
165+ throw("Errore: elenco esclusioni non presente")
166+ }
167+ 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))
160168 [StringEntry((keyPrefixN + fieldNameJson), json), StringEntry(keyRisultato, sha)]
161169 }
162170 }
164172 }
165173
166174
167-func registra1 (richiesta,cardinalita,estrazioni,i) = {
175+func registra1 (richiesta,cardinalita,estrazioni,esclusioni,i) = {
168176 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
169177 let keyCounter = (keyPrefix + fieldNameCounter)
170178 let nRichiesta = match getInteger(this, keyCounter) {
177185 let seed = randomizer(i)
178186 let currDate = getTimestamp()
179187 let heightExtraction = (height + delayBlock)
180-[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)]
188+[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)]
181189 }
182190
183191
184192 @Callable(i)
185-func estrai (richiesta,numero) = estrai1(richiesta, numero, i)
193+func estrai (richiesta,numero) = if (isPaymentOk(i))
194+ then estrai1(richiesta, numero, i)
195+ else throw(msgPagamento)
186196
187197
188198
189199 @Callable(i)
190-func registra (richiesta,cardinalita,estrazioni) = if (isPaymentOk(i))
191- then registra1(richiesta, cardinalita, estrazioni, i)
200+func registra (richiesta,cardinalita,estrazioni,esclusioni) = if (isPaymentOk(i))
201+ then registra1(richiesta, cardinalita, estrazioni, esclusioni, i)
192202 else throw(msgPagamento)
193203
194204
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let delayBlock = 1
55
6-let minPayment = 100000000
6+let minPayment = 10
77
88 let acceptableAssetId = base58'GQqJPRuXvxoyz22DeLqquGcx3cdbYpWi6QdqfQUMbLuf'
99
1010 let msgPagamento = ((("Devi effettuare un pagamento in " + toBase58String(acceptableAssetId)) + " di almeno ") + toString(minPayment))
1111
1212 let fieldNameRisultato = "seme_estratto"
1313
1414 let fieldNameSeed = "seed"
1515
1616 let fieldNameSeedB16 = "seed_b16"
1717
1818 let fieldNameHeightExtraction = "height_extraction"
1919
2020 let fieldNameJson = "json"
2121
2222 let fieldNameCardinalita = "cardinalita"
2323
2424 let fieldNameDataRichiesta = "data_richiesta"
2525
2626 let fieldNameEstrazioni = "estrazioni"
2727
2828 let fieldNameRichiesta = "richiesta"
2929
30+let fieldNameEsclusioni = "esclusioni"
31+
3032 let fieldNameCounter = "counter"
3133
3234 let fieldNameIdCounter = "id_richiesta"
3335
3436 let fieldNameProvider = "provider"
3537
3638 func isPaymentOk (i) = if ((size(i.payments) == 0))
3739 then throw(msgPagamento)
3840 else {
3941 let p = i.payments[0]
4042 match p.assetId {
4143 case a: ByteVector =>
4244 if ((a == acceptableAssetId))
43- then (p.amount >= minPayment)
45+ then (p.amount >= (minPayment * 1000000))
4446 else false
4547 case _ =>
4648 false
4749 }
4850 }
4951
5052
5153 func openJson (key,value) = ((("{\"" + key) + "\":\"") + value)
5254
5355
5456 func addJson (key,value) = ((("\", \"" + key) + "\":\" ") + value)
5557
5658
5759 func closeJson (key,value) = (((("\", \"" + key) + "\":\" ") + value) + "\"}")
5860
5961
6062 func myGetInt (key,msg) = {
6163 let myInt = match getInteger(this, key) {
6264 case t: Int =>
6365 t
6466 case _ =>
6567 throw(msg)
6668 }
6769 myInt
6870 }
6971
7072
7173 func getCurrentBlock () = {
7274 let block = match blockInfoByHeight(height) {
7375 case x: BlockInfo =>
7476 x
7577 case _ =>
7678 throw("Alla ricerca del blocco corrente: Blocco non trovato!")
7779 }
7880 block
7981 }
8082
8183
8284 func getTimestamp () = {
8385 let block = match blockInfoByHeight(height) {
8486 case x: BlockInfo =>
8587 x.timestamp
8688 case _ =>
8789 throw("Alla ricerca del `timestamp`: Blocco non trovato!")
8890 }
8991 block
9092 }
9193
9294
9395 func getVrf (thisBlock) = {
9496 let vrf = match thisBlock.vrf {
9597 case t: ByteVector =>
9698 t
9799 case _ =>
98100 throw("Alla ricerca del `vrf`: Blocco non trovato o blocco non in versione 5 ritenta.")
99101 }
100102 vrf
101103 }
102104
103105
104106 func randomizer (inv) = {
105107 let currentBlock = getCurrentBlock()
106108 let rand = (((((inv.transactionId + inv.callerPublicKey) + getVrf(currentBlock)) + currentBlock.generationSignature) + toBytes(currentBlock.timestamp)) + toBytes(currentBlock.height))
107109 sha256_16Kb(sha256_16Kb(rand))
108110 }
109111
110112
111113 func estrai1 (richiesta,numero,i) = {
112114 let strOwnerAddress = toString(i.caller)
113115 let keyPrefix = (((strOwnerAddress + "_") + richiesta) + "_")
114116 let keyCounter = (keyPrefix + fieldNameCounter)
115117 let maxRichiesta = myGetInt(keyCounter, "La richiesta fatta non è stata ancora registrata")
116118 let numeroRichiesta = if ((0 >= numero))
117119 then maxRichiesta
118120 else if ((maxRichiesta >= numero))
119121 then numero
120122 else throw("Non esiste una richiesta con questo numero")
121123 let keyPrefixN = ((keyPrefix + toString(numeroRichiesta)) + "_")
122124 let keyRisultato = (keyPrefixN + fieldNameRisultato)
123125 let isEstratto = match getString(this, keyRisultato) {
124126 case t: String =>
125127 throw(((("Risultato già presente in blockchain: " + keyRisultato) + ": ") + t))
126128 case _ =>
127129 false
128130 }
129131 if (!(isEstratto))
130132 then {
131133 let heightBloccoCandidato = myGetInt((keyPrefixN + fieldNameHeightExtraction), "Errore generico su dati della richiesta")
132134 if ((heightBloccoCandidato > height))
133135 then throw(((("Devi aspettare il blocco " + toString(heightBloccoCandidato)) + ". siamo al blocco ") + toString(height)))
134136 else {
135137 let keySeme = (keyPrefixN + fieldNameSeed)
136138 let seed = match getBinary(this, keySeme) {
137139 case t: ByteVector =>
138140 t
139141 case _ =>
140142 throw("Seme non trovato. Qualcosa è andata storta!")
141143 }
142144 let bloccoCandidato = match blockInfoByHeight(heightBloccoCandidato) {
143145 case block: BlockInfo =>
144146 block
145147 case _ =>
146148 throw("Errore: Il blocco di estrazione non esiste")
147149 }
148150 let vrfValue = match bloccoCandidato.vrf {
149151 case t: ByteVector =>
150152 t
151153 case _ =>
152154 throw("Blocco non in versione 5 ritenta.")
153155 }
154156 let rand = (((seed + bloccoCandidato.generationSignature) + bloccoCandidato.generatorPublicKey) + getVrf(bloccoCandidato))
155157 let sha = toBase16String(sha256_16Kb(sha256_16Kb(rand)))
156158 let strCardinalita = toString(myGetInt((keyPrefixN + fieldNameCardinalita), "Errore lettura cardinalità"))
157159 let strDataRichiesta = toString(myGetInt((keyPrefixN + fieldNameDataRichiesta), "Errore lettura DataRichiesta"))
158160 let strEstrazioni = toString(myGetInt((keyPrefixN + fieldNameEstrazioni), "Errore lettura Estrazioni"))
159- 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))
161+ let esclusioni = match getString(this, (keyPrefixN + fieldNameEsclusioni)) {
162+ case t: String =>
163+ t
164+ case _ =>
165+ throw("Errore: elenco esclusioni non presente")
166+ }
167+ 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))
160168 [StringEntry((keyPrefixN + fieldNameJson), json), StringEntry(keyRisultato, sha)]
161169 }
162170 }
163171 else throw("Errore: non dovresti passare da quì")
164172 }
165173
166174
167-func registra1 (richiesta,cardinalita,estrazioni,i) = {
175+func registra1 (richiesta,cardinalita,estrazioni,esclusioni,i) = {
168176 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
169177 let keyCounter = (keyPrefix + fieldNameCounter)
170178 let nRichiesta = match getInteger(this, keyCounter) {
171179 case c: Int =>
172180 (c + 1)
173181 case _ =>
174182 1
175183 }
176184 let keyPrefixN = ((keyPrefix + toString(nRichiesta)) + "_")
177185 let seed = randomizer(i)
178186 let currDate = getTimestamp()
179187 let heightExtraction = (height + delayBlock)
180-[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)]
188+[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)]
181189 }
182190
183191
184192 @Callable(i)
185-func estrai (richiesta,numero) = estrai1(richiesta, numero, i)
193+func estrai (richiesta,numero) = if (isPaymentOk(i))
194+ then estrai1(richiesta, numero, i)
195+ else throw(msgPagamento)
186196
187197
188198
189199 @Callable(i)
190-func registra (richiesta,cardinalita,estrazioni) = if (isPaymentOk(i))
191- then registra1(richiesta, cardinalita, estrazioni, i)
200+func registra (richiesta,cardinalita,estrazioni,esclusioni) = if (isPaymentOk(i))
201+ then registra1(richiesta, cardinalita, estrazioni, esclusioni, i)
192202 else throw(msgPagamento)
193203
194204

github/deemru/w8io/873ac7e 
49.57 ms