tx · 6ewY79aKdvCVLerKshymQxyaiB83oXpJqb8BYg9xv7aQ

3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua:  -0.01400000 Waves

2021.03.29 03:26 [1458317] smart account 3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua > SELF 0.00000000 Waves

{ "type": 13, "id": "6ewY79aKdvCVLerKshymQxyaiB83oXpJqb8BYg9xv7aQ", "fee": 1400000, "feeAssetId": null, "timestamp": 1616977641766, "version": 2, "chainId": 84, "sender": "3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua", "senderPublicKey": "CTyHhnVTxf16Z4CmGGneAK8WB5g2QyT4MB8kUn8vPPcu", "proofs": [ "2VELVBZJ7mQUuCanyoFr1dPPytZZ8d2f4K9K2bezWQfsT7ZnrSXBkPyvamQh2v53opjbNhSn533Wy57Zv8XexZ5v" ], "script": "base64:AAIEAAAAAAAAAAwIAhIECgIICBIAEgAAAAAZAAAAAARzZWxmCQAEJQAAAAEFAAAABHRoaXMAAAAADWdlbmVzaXNIZWlnaHQAAAAAAAAWOGYAAAAAB3dhdmVzSWQCAAAABVdBVkVTAAAAAAZtYXhJbnQAf/////////0AAAAADm1heERhdGFLZXlTaXplAAAAAAAAAAGQAAAAABNtYXhEZXNjcmlwdGlvbkJ5dGVzAAAAAAAAAAPoAAAAAAxjb250cmFjdE5hbWUCAAAADVZhdWx0Q29udHJhY3QAAAAADGNvbnRyYWN0VGV4dAkAASwAAAACCQABLAAAAAICAAAARERvbid0IHRydXN0LCB2ZXJpZnkgISBUaGUgTkZUIElzc3VlciBhbmQgZEFwcCBhcmUgdGhlIHNhbWUgYWRkcmVzcyA8BQAAAARzZWxmAgAAAAI+LgAAAAARY29udHJhY3RTZXBhcmF0b3ICAAAAA19fXwAAAAALcmVjZWlwdE5hbWUCAAAADFZhdWx0UmVjZWlwdAAAAAALcmVjZWlwdFRleHQCAAAACGZ1Y2sgb2ZmAAAAAAx2ZXJpZmllck5hbWUCAAAADVZhdWx0VmVyaWZpZXIAAAAADXZlcmlmaWVyVGV4dDECAAAACEFkZHJlc3M6AAAAAA12ZXJpZmllclRleHQyAgAAABdTSEEyNTYgQmFzZTU4IENoZWNrc3VtOgAAAAANdmVyaWZpZXJUZXh0MwIAAAAHRXJyb3JzOgAAAAAOcnVsZXNTZXBhcmF0b3ICAAAAAV8AAAAAFHJ1bGVzTmVzdGVkU2VwYXJhdG9yAgAAAAErAAAAAA5ydWxlc1VuZGVmaW5lZAIAAAAEbnVsbAAAAAARcnVsZXNLZXlNaW5MZW5ndGgAAAAAAAAAAAEAAAAAD2Vycm9yc1NlcGFyYXRvcgIAAAABfAAAAAAIa2V5UnVsZXMCAAAABl9ydWxlcwAAAAANa2V5Tm9uY2VDb3VudAIAAAALTk9OQ0VfQ09VTlQBAAAACWlzSW5SYW5nZQAAAAEAAAAGbnVtYmVyAwkAAGcAAAACBQAAAAZudW1iZXIAAAAAAAAAAAAJAABmAAAAAgUAAAAGbWF4SW50BQAAAAZudW1iZXIHAQAAAA1nZW5lcmF0ZU5vbmNlAAAAAAQAAAAHJG1hdGNoMAkABBoA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PQAAAAIIBQAAAAxjb250cmFjdEluZm8AAAAKcmVpc3N1YWJsZQcGCQEAAAACIT0AAAACCAUAAAAMY29udHJhY3RJbmZvAAAACHNjcmlwdGVkBwkAAAIAAAABAgAAABdFUlJPUjogQ29udHJhY3Qgbm90IE5GVAQAAAATY29udHJhY3REZXNjcmlwdGlvbgkABLUAAAACCAUAAAAMY29udHJhY3RJbmZvAAAAC2Rlc2NyaXB0aW9uBQAAABFjb250cmFjdFNlcGFyYXRvcgQAAAAOY29udHJhY3RIZWlnaHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABNjb250cmFjdERlc2NyaXB0aW9uAAAAAAAAAAABBAAAABVjb250cmFjdENhbGxlckFkZHJlc3MJAAGRAAAAAgUAAAATY29udHJhY3REZXNjcmlwdGlvbgAAAAAAAAAAAgQAAAAPY29udHJhY3RBc3NldElkCQABkQAAAAIFAAAAE2NvbnRyYWN0RGVzY3JpcHRpb24AAAAAAAAAAAMEAAAAFWNvbnRyYWN0QXNzZXRRdWFudGl0eQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAE2NvbnRyYWN0RGVzY3JpcHRpb24AAAAAAAAAAAQEAAAAEWNvbnRyYWN0QXNzZXRJbmZvBAAAAAckbWF0Y2gwCQAD7AAAAAEJAAJZAAAAAQUAAAAPY29udHJhY3RBc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAAHaXNBc3NldAUAAAAHJG1hdGNoMAUAAAAHaXNBc3NldAkAAAIAAAABAgAAABRFUlJPUjogVW5rbm93biBBc3NldAMJAQAAAAIhPQAAAAIJAAGQAAAAAQUAAAATY29udHJhY3REZXNjcmlwdGlvbgAAAAAAAAAABQkAAAIAAAABAgAAABtFUlJPUjogQ29udHJhY3QgZGVzY3JpcHRpb24DAwkAAGcAAAACBQAAAA1nZW5lc2lzSGVpZ2h0BQAAAA5jb250cmFjdEhlaWdodAYJAABnAAAAAgUAAAAOY29udHJhY3RIZWlnaHQFAAAABmhlaWdodAkAAAIAAAABAgAAAA1FUlJPUjogSGVpZ2h0AwMJAABmAAAAAgAAAAAAAAAAAQUAAAAVY29udHJhY3RBc3NldFF1YW50aXR5BgkAAGYAAAACBQAAABVjb250cmFjdEFzc2V0UXVhbnRpdHkIBQAAABFjb250cmFjdEFzc2V0SW5mbwAAAAhxdWFudGl0eQkAAAIAAAABAgAAABVFUlJPUjogQXNzZXQgcXVhbnRpdHkDCQAAZgAAAAIFAAAAFWNvbnRyYWN0QXNzZXRRdWFudGl0eQkAA/AAAAACBQAAAAR0aGlzCAUAAAARY29udHJhY3RBc3NldEluZm8AAAACaWQJAAACAAAAAQIAAAAURVJST1I6IFZhdWx0IGJhbGFuY2UEAAAABW5vbmNlCQEAAAANZ2VuZXJhdGVOb25jZQAAAAAEAAAAEnJlY2VpcHREZXNjcmlwdGlvbgkABLkAAAACCQAETAAAAAIFAAAAC3JlY2VpcHRUZXh0CQAETAAAAAIJAAGkAAAAAQUAAAAOY29udHJhY3RIZWlnaHQJAARMAAAAAgkAAaQAAAABBQAAAAZoZWlnaHQJAARMAAAAAgkAAlgAAAABBQAAABRjb250cmFjdElkQnl0ZVZlY3RvcgkABEwAAAACBQAAABVjb250cmFjdENhbGxlckFkZHJlc3MJAARMAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAARMAAAAAgUAAAAPY29udHJhY3RBc3NldElkCQAETAAAAAIJAAGkAAAAAQUAAAAVY29udHJhY3RBc3NldFF1YW50aXR5BQAAAANuaWwFAAAAEWNvbnRyYWN0U2VwYXJhdG9yBAAAAAxyZWNlaXB0SXNzdWUJAARDAAAABwUAAAALcmVjZWlwdE5hbWUFAAAAEnJlY2VpcHREZXNjcmlwdGlvbgAAAAAAAAAAAQAAAAAAAAAAAAcFAAAABHVuaXQFAAAABW5vbmNlBAAAAAlyZWNlaXB0SWQJAAQ4AAAAAQUAAAAMcmVjZWlwdElzc3VlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA1rZXlOb25jZUNvdW50BQAAAAVub25jZQkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAAFGNvbnRyYWN0SWRCeXRlVmVjdG9yAAAAAAAAAAABCQAETAAAAAIFAAAADHJlY2VpcHRJc3N1ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIIBQAAAAxyZWNlaXB0SXNzdWUAAAAIcXVhbnRpdHkFAAAACXJlY2VpcHRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFWNvbnRyYWN0QXNzZXRRdWFudGl0eQgFAAAAEWNvbnRyYWN0QXNzZXRJbmZvAAAAAmlkBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQTmUgc=", "height": 1458317, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GXSzJwK1ziiscB3pY1gXGsEadsuy3guGsKPGbjAjtN6u Next: DCfsvbN6nmuLYpGvvrLT8SpHmq4WsRBqipEknZS7etDZ Diff:
OldNewDifferences
3636 let rulesNestedSeparator = "+"
3737
3838 let rulesUndefined = "null"
39+
40+let rulesKeyMinLength = 1
3941
4042 let errorsSeparator = "|"
4143
9496 @Callable(i)
9597 func verifyRules (incRulerAddress,incRulerKey) = if ((this == i.caller))
9698 then throw("ERROR: Self-invoke is forbidden")
97- else {
98- let rulerAddress = Address(fromBase58String(incRulerAddress))
99- let rulerKeyRules = (incRulerKey + keyRules)
100- if ((size(toBytes(rulerKeyRules)) >= maxDataKeySize))
101- then throw("ERROR: Key size too long")
99+ else if ((size(i.payments) != 0))
100+ then throw("ERROR: No payments required")
101+ else if ((rulesKeyMinLength > size(incRulerKey)))
102+ then throw("ERROR: Key too short")
102103 else {
103- let rulesString = match getString(rulerAddress, rulerKeyRules) {
104- case isString: String =>
105- isString
106- case _ =>
107- throw("ERROR: Data not found")
108- }
109- let rulesList = split(rulesString, rulesSeparator)
110- if ((size(rulesList) != 15))
111- then throw("ERROR: Wrong amount of rules")
104+ let rulerAddress = Address(fromBase58String(incRulerAddress))
105+ let rulerKeyRules = (incRulerKey + keyRules)
106+ if ((size(toBytes(rulerKeyRules)) >= maxDataKeySize))
107+ then throw("ERROR: Key size too long")
112108 else {
113- let errorsList = {
114- let $list37323767 = rulesList
115- let $size37323767 = size($list37323767)
116- let $acc037323767 = nil
117- if (($size37323767 == 0))
118- then $acc037323767
119- else {
120- let $acc137323767 = verifyRule($acc037323767, $list37323767[0])
121- if (($size37323767 == 1))
122- then $acc137323767
109+ let rulesString = match getString(rulerAddress, rulerKeyRules) {
110+ case isString: String =>
111+ isString
112+ case _ =>
113+ throw("ERROR: Data not found")
114+ }
115+ let rulesList = split(rulesString, rulesSeparator)
116+ if ((size(rulesList) != 15))
117+ then throw("ERROR: Wrong amount of rules")
118+ else {
119+ let errorsList = {
120+ let $list41374172 = rulesList
121+ let $size41374172 = size($list41374172)
122+ let $acc041374172 = nil
123+ if (($size41374172 == 0))
124+ then $acc041374172
123125 else {
124- let $acc237323767 = verifyRule($acc137323767, $list37323767[1])
125- if (($size37323767 == 2))
126- then $acc237323767
126+ let $acc141374172 = verifyRule($acc041374172, $list41374172[0])
127+ if (($size41374172 == 1))
128+ then $acc141374172
127129 else {
128- let $acc337323767 = verifyRule($acc237323767, $list37323767[2])
129- if (($size37323767 == 3))
130- then $acc337323767
130+ let $acc241374172 = verifyRule($acc141374172, $list41374172[1])
131+ if (($size41374172 == 2))
132+ then $acc241374172
131133 else {
132- let $acc437323767 = verifyRule($acc337323767, $list37323767[3])
133- if (($size37323767 == 4))
134- then $acc437323767
134+ let $acc341374172 = verifyRule($acc241374172, $list41374172[2])
135+ if (($size41374172 == 3))
136+ then $acc341374172
135137 else {
136- let $acc537323767 = verifyRule($acc437323767, $list37323767[4])
137- if (($size37323767 == 5))
138- then $acc537323767
138+ let $acc441374172 = verifyRule($acc341374172, $list41374172[3])
139+ if (($size41374172 == 4))
140+ then $acc441374172
139141 else {
140- let $acc637323767 = verifyRule($acc537323767, $list37323767[5])
141- if (($size37323767 == 6))
142- then $acc637323767
142+ let $acc541374172 = verifyRule($acc441374172, $list41374172[4])
143+ if (($size41374172 == 5))
144+ then $acc541374172
143145 else {
144- let $acc737323767 = verifyRule($acc637323767, $list37323767[6])
145- if (($size37323767 == 7))
146- then $acc737323767
146+ let $acc641374172 = verifyRule($acc541374172, $list41374172[5])
147+ if (($size41374172 == 6))
148+ then $acc641374172
147149 else {
148- let $acc837323767 = verifyRule($acc737323767, $list37323767[7])
149- if (($size37323767 == 8))
150- then $acc837323767
150+ let $acc741374172 = verifyRule($acc641374172, $list41374172[6])
151+ if (($size41374172 == 7))
152+ then $acc741374172
151153 else {
152- let $acc937323767 = verifyRule($acc837323767, $list37323767[8])
153- if (($size37323767 == 9))
154- then $acc937323767
154+ let $acc841374172 = verifyRule($acc741374172, $list41374172[7])
155+ if (($size41374172 == 8))
156+ then $acc841374172
155157 else {
156- let $acc1037323767 = verifyRule($acc937323767, $list37323767[9])
157- if (($size37323767 == 10))
158- then $acc1037323767
158+ let $acc941374172 = verifyRule($acc841374172, $list41374172[8])
159+ if (($size41374172 == 9))
160+ then $acc941374172
159161 else {
160- let $acc1137323767 = verifyRule($acc1037323767, $list37323767[10])
161- if (($size37323767 == 11))
162- then $acc1137323767
162+ let $acc1041374172 = verifyRule($acc941374172, $list41374172[9])
163+ if (($size41374172 == 10))
164+ then $acc1041374172
163165 else {
164- let $acc1237323767 = verifyRule($acc1137323767, $list37323767[11])
165- if (($size37323767 == 12))
166- then $acc1237323767
166+ let $acc1141374172 = verifyRule($acc1041374172, $list41374172[10])
167+ if (($size41374172 == 11))
168+ then $acc1141374172
167169 else {
168- let $acc1337323767 = verifyRule($acc1237323767, $list37323767[12])
169- if (($size37323767 == 13))
170- then $acc1337323767
170+ let $acc1241374172 = verifyRule($acc1141374172, $list41374172[11])
171+ if (($size41374172 == 12))
172+ then $acc1241374172
171173 else {
172- let $acc1437323767 = verifyRule($acc1337323767, $list37323767[13])
173- if (($size37323767 == 14))
174- then $acc1437323767
174+ let $acc1341374172 = verifyRule($acc1241374172, $list41374172[12])
175+ if (($size41374172 == 13))
176+ then $acc1341374172
175177 else {
176- let $acc1537323767 = verifyRule($acc1437323767, $list37323767[14])
177- if (($size37323767 == 15))
178- then $acc1537323767
178+ let $acc1441374172 = verifyRule($acc1341374172, $list41374172[13])
179+ if (($size41374172 == 14))
180+ then $acc1441374172
179181 else {
180- let $acc1637323767 = verifyRule($acc1537323767, $list37323767[15])
181- throw("List size exceed 15")
182+ let $acc1541374172 = verifyRule($acc1441374172, $list41374172[14])
183+ if (($size41374172 == 15))
184+ then $acc1541374172
185+ else {
186+ let $acc1641374172 = verifyRule($acc1541374172, $list41374172[15])
187+ throw("List size exceed 15")
188+ }
182189 }
183190 }
184191 }
195202 }
196203 }
197204 }
198- }
199- let errorsString = makeString(errorsList, errorsSeparator)
200- let nonce = generateNonce()
201- let rulesSHA256 = toBase58String(sha256(toBytes(rulesString)))
202- let verifierDescription = ((((((((((verifierText1 + " <") + incRulerAddress) + "> ") + verifierText2) + " <") + rulesSHA256) + "> ") + verifierText3) + " ") + errorsString)
203- if ((size(toBytes(verifierDescription)) > maxDescriptionBytes))
204- then throw("ERROR: Too much errors")
205- else {
206- let veriferIssue = Issue(verifierName, verifierDescription, 1, 0, false, unit, nonce)
207- let verifierId = calculateAssetId(veriferIssue)
205+ let errorsString = makeString(errorsList, errorsSeparator)
206+ let nonce = generateNonce()
207+ let rulesSHA256 = toBase58String(sha256(toBytes(rulesString)))
208+ let verifierDescription = ((((((((((verifierText1 + " <") + incRulerAddress) + "> ") + verifierText2) + " <") + rulesSHA256) + "> ") + verifierText3) + " ") + errorsString)
209+ if ((size(toBytes(verifierDescription)) > maxDescriptionBytes))
210+ then throw("ERROR: Too much errors")
211+ else {
212+ let veriferIssue = Issue(verifierName, verifierDescription, 1, 0, false, unit, nonce)
213+ let verifierId = calculateAssetId(veriferIssue)
208214 [IntegerEntry(keyNonceCount, nonce), veriferIssue, ScriptTransfer(i.caller, veriferIssue.quantity, verifierId)]
215+ }
209216 }
210217 }
211218 }
212- }
213219
214220
215221
216222 @Callable(i)
217-func deposit (incRulerAddress,incRulerTag) = if ((genesisHeight > height))
223+func deposit () = if ((genesisHeight > height))
218224 then throw(("ERROR: Deposits are denied until block " + toString(genesisHeight)))
219225 else if ((this == i.caller))
220226 then throw("ERROR: Self-invoke is forbidden")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let self = toString(this)
55
66 let genesisHeight = 1456230
77
88 let wavesId = "WAVES"
99
1010 let maxInt = 9223372036854775805
1111
1212 let maxDataKeySize = 400
1313
1414 let maxDescriptionBytes = 1000
1515
1616 let contractName = "VaultContract"
1717
1818 let contractText = (("Don't trust, verify ! The NFT Issuer and dApp are the same address <" + self) + ">.")
1919
2020 let contractSeparator = "___"
2121
2222 let receiptName = "VaultReceipt"
2323
2424 let receiptText = "fuck off"
2525
2626 let verifierName = "VaultVerifier"
2727
2828 let verifierText1 = "Address:"
2929
3030 let verifierText2 = "SHA256 Base58 Checksum:"
3131
3232 let verifierText3 = "Errors:"
3333
3434 let rulesSeparator = "_"
3535
3636 let rulesNestedSeparator = "+"
3737
3838 let rulesUndefined = "null"
39+
40+let rulesKeyMinLength = 1
3941
4042 let errorsSeparator = "|"
4143
4244 let keyRules = "_rules"
4345
4446 let keyNonceCount = "NONCE_COUNT"
4547
4648 func isInRange (number) = if ((number >= 0))
4749 then (maxInt > number)
4850 else false
4951
5052
5153 func generateNonce () = match getInteger(this, keyNonceCount) {
5254 case isInt: Int =>
5355 if ((isInt >= maxInt))
5456 then 1
5557 else (isInt + 1)
5658 case _ =>
5759 1
5860 }
5961
6062
6163 func verifyRule (acc,rule) = if ((rule == rulesUndefined))
6264 then acc
6365 else {
6466 let ruleValues = split(rule, rulesNestedSeparator)
6567 if ((size(ruleValues) != 4))
6668 then (("<" + rule) + "> Broken structure") :: acc
6769 else match parseInt(ruleValues[0]) {
6870 case blockStart: Int =>
6971 if ((isInRange(blockStart) != true))
7072 then (("<" + rule) + "> blockStart out-of-range") :: acc
7173 else match parseInt(ruleValues[1]) {
7274 case blockEnd: Int =>
7375 if ((isInRange(blockEnd) != true))
7476 then (("<" + rule) + "> blockEnd out-of-range") :: acc
7577 else match parseInt(ruleValues[2]) {
7678 case isWhitelist: Int =>
7779 if (if ((isWhitelist != 0))
7880 then (isWhitelist != 1)
7981 else false)
8082 then (("<" + rule) + "> isWhitelist is 0 (false) or 1 (true)") :: acc
8183 else acc
8284 case _ =>
8385 (("<" + rule) + "> isWhitelist not Integer") :: acc
8486 }
8587 case _ =>
8688 (("<" + rule) + "> blockEnd not Integer") :: acc
8789 }
8890 case _ =>
8991 (("<" + rule) + "> blockStart not Integer") :: acc
9092 }
9193 }
9294
9395
9496 @Callable(i)
9597 func verifyRules (incRulerAddress,incRulerKey) = if ((this == i.caller))
9698 then throw("ERROR: Self-invoke is forbidden")
97- else {
98- let rulerAddress = Address(fromBase58String(incRulerAddress))
99- let rulerKeyRules = (incRulerKey + keyRules)
100- if ((size(toBytes(rulerKeyRules)) >= maxDataKeySize))
101- then throw("ERROR: Key size too long")
99+ else if ((size(i.payments) != 0))
100+ then throw("ERROR: No payments required")
101+ else if ((rulesKeyMinLength > size(incRulerKey)))
102+ then throw("ERROR: Key too short")
102103 else {
103- let rulesString = match getString(rulerAddress, rulerKeyRules) {
104- case isString: String =>
105- isString
106- case _ =>
107- throw("ERROR: Data not found")
108- }
109- let rulesList = split(rulesString, rulesSeparator)
110- if ((size(rulesList) != 15))
111- then throw("ERROR: Wrong amount of rules")
104+ let rulerAddress = Address(fromBase58String(incRulerAddress))
105+ let rulerKeyRules = (incRulerKey + keyRules)
106+ if ((size(toBytes(rulerKeyRules)) >= maxDataKeySize))
107+ then throw("ERROR: Key size too long")
112108 else {
113- let errorsList = {
114- let $list37323767 = rulesList
115- let $size37323767 = size($list37323767)
116- let $acc037323767 = nil
117- if (($size37323767 == 0))
118- then $acc037323767
119- else {
120- let $acc137323767 = verifyRule($acc037323767, $list37323767[0])
121- if (($size37323767 == 1))
122- then $acc137323767
109+ let rulesString = match getString(rulerAddress, rulerKeyRules) {
110+ case isString: String =>
111+ isString
112+ case _ =>
113+ throw("ERROR: Data not found")
114+ }
115+ let rulesList = split(rulesString, rulesSeparator)
116+ if ((size(rulesList) != 15))
117+ then throw("ERROR: Wrong amount of rules")
118+ else {
119+ let errorsList = {
120+ let $list41374172 = rulesList
121+ let $size41374172 = size($list41374172)
122+ let $acc041374172 = nil
123+ if (($size41374172 == 0))
124+ then $acc041374172
123125 else {
124- let $acc237323767 = verifyRule($acc137323767, $list37323767[1])
125- if (($size37323767 == 2))
126- then $acc237323767
126+ let $acc141374172 = verifyRule($acc041374172, $list41374172[0])
127+ if (($size41374172 == 1))
128+ then $acc141374172
127129 else {
128- let $acc337323767 = verifyRule($acc237323767, $list37323767[2])
129- if (($size37323767 == 3))
130- then $acc337323767
130+ let $acc241374172 = verifyRule($acc141374172, $list41374172[1])
131+ if (($size41374172 == 2))
132+ then $acc241374172
131133 else {
132- let $acc437323767 = verifyRule($acc337323767, $list37323767[3])
133- if (($size37323767 == 4))
134- then $acc437323767
134+ let $acc341374172 = verifyRule($acc241374172, $list41374172[2])
135+ if (($size41374172 == 3))
136+ then $acc341374172
135137 else {
136- let $acc537323767 = verifyRule($acc437323767, $list37323767[4])
137- if (($size37323767 == 5))
138- then $acc537323767
138+ let $acc441374172 = verifyRule($acc341374172, $list41374172[3])
139+ if (($size41374172 == 4))
140+ then $acc441374172
139141 else {
140- let $acc637323767 = verifyRule($acc537323767, $list37323767[5])
141- if (($size37323767 == 6))
142- then $acc637323767
142+ let $acc541374172 = verifyRule($acc441374172, $list41374172[4])
143+ if (($size41374172 == 5))
144+ then $acc541374172
143145 else {
144- let $acc737323767 = verifyRule($acc637323767, $list37323767[6])
145- if (($size37323767 == 7))
146- then $acc737323767
146+ let $acc641374172 = verifyRule($acc541374172, $list41374172[5])
147+ if (($size41374172 == 6))
148+ then $acc641374172
147149 else {
148- let $acc837323767 = verifyRule($acc737323767, $list37323767[7])
149- if (($size37323767 == 8))
150- then $acc837323767
150+ let $acc741374172 = verifyRule($acc641374172, $list41374172[6])
151+ if (($size41374172 == 7))
152+ then $acc741374172
151153 else {
152- let $acc937323767 = verifyRule($acc837323767, $list37323767[8])
153- if (($size37323767 == 9))
154- then $acc937323767
154+ let $acc841374172 = verifyRule($acc741374172, $list41374172[7])
155+ if (($size41374172 == 8))
156+ then $acc841374172
155157 else {
156- let $acc1037323767 = verifyRule($acc937323767, $list37323767[9])
157- if (($size37323767 == 10))
158- then $acc1037323767
158+ let $acc941374172 = verifyRule($acc841374172, $list41374172[8])
159+ if (($size41374172 == 9))
160+ then $acc941374172
159161 else {
160- let $acc1137323767 = verifyRule($acc1037323767, $list37323767[10])
161- if (($size37323767 == 11))
162- then $acc1137323767
162+ let $acc1041374172 = verifyRule($acc941374172, $list41374172[9])
163+ if (($size41374172 == 10))
164+ then $acc1041374172
163165 else {
164- let $acc1237323767 = verifyRule($acc1137323767, $list37323767[11])
165- if (($size37323767 == 12))
166- then $acc1237323767
166+ let $acc1141374172 = verifyRule($acc1041374172, $list41374172[10])
167+ if (($size41374172 == 11))
168+ then $acc1141374172
167169 else {
168- let $acc1337323767 = verifyRule($acc1237323767, $list37323767[12])
169- if (($size37323767 == 13))
170- then $acc1337323767
170+ let $acc1241374172 = verifyRule($acc1141374172, $list41374172[11])
171+ if (($size41374172 == 12))
172+ then $acc1241374172
171173 else {
172- let $acc1437323767 = verifyRule($acc1337323767, $list37323767[13])
173- if (($size37323767 == 14))
174- then $acc1437323767
174+ let $acc1341374172 = verifyRule($acc1241374172, $list41374172[12])
175+ if (($size41374172 == 13))
176+ then $acc1341374172
175177 else {
176- let $acc1537323767 = verifyRule($acc1437323767, $list37323767[14])
177- if (($size37323767 == 15))
178- then $acc1537323767
178+ let $acc1441374172 = verifyRule($acc1341374172, $list41374172[13])
179+ if (($size41374172 == 14))
180+ then $acc1441374172
179181 else {
180- let $acc1637323767 = verifyRule($acc1537323767, $list37323767[15])
181- throw("List size exceed 15")
182+ let $acc1541374172 = verifyRule($acc1441374172, $list41374172[14])
183+ if (($size41374172 == 15))
184+ then $acc1541374172
185+ else {
186+ let $acc1641374172 = verifyRule($acc1541374172, $list41374172[15])
187+ throw("List size exceed 15")
188+ }
182189 }
183190 }
184191 }
185192 }
186193 }
187194 }
188195 }
189196 }
190197 }
191198 }
192199 }
193200 }
194201 }
195202 }
196203 }
197204 }
198- }
199- let errorsString = makeString(errorsList, errorsSeparator)
200- let nonce = generateNonce()
201- let rulesSHA256 = toBase58String(sha256(toBytes(rulesString)))
202- let verifierDescription = ((((((((((verifierText1 + " <") + incRulerAddress) + "> ") + verifierText2) + " <") + rulesSHA256) + "> ") + verifierText3) + " ") + errorsString)
203- if ((size(toBytes(verifierDescription)) > maxDescriptionBytes))
204- then throw("ERROR: Too much errors")
205- else {
206- let veriferIssue = Issue(verifierName, verifierDescription, 1, 0, false, unit, nonce)
207- let verifierId = calculateAssetId(veriferIssue)
205+ let errorsString = makeString(errorsList, errorsSeparator)
206+ let nonce = generateNonce()
207+ let rulesSHA256 = toBase58String(sha256(toBytes(rulesString)))
208+ let verifierDescription = ((((((((((verifierText1 + " <") + incRulerAddress) + "> ") + verifierText2) + " <") + rulesSHA256) + "> ") + verifierText3) + " ") + errorsString)
209+ if ((size(toBytes(verifierDescription)) > maxDescriptionBytes))
210+ then throw("ERROR: Too much errors")
211+ else {
212+ let veriferIssue = Issue(verifierName, verifierDescription, 1, 0, false, unit, nonce)
213+ let verifierId = calculateAssetId(veriferIssue)
208214 [IntegerEntry(keyNonceCount, nonce), veriferIssue, ScriptTransfer(i.caller, veriferIssue.quantity, verifierId)]
215+ }
209216 }
210217 }
211218 }
212- }
213219
214220
215221
216222 @Callable(i)
217-func deposit (incRulerAddress,incRulerTag) = if ((genesisHeight > height))
223+func deposit () = if ((genesisHeight > height))
218224 then throw(("ERROR: Deposits are denied until block " + toString(genesisHeight)))
219225 else if ((this == i.caller))
220226 then throw("ERROR: Self-invoke is forbidden")
221227 else if ((size(i.payments) != 1))
222228 then throw("ERROR: Attached Payment != 1")
223229 else if (if ((1 > i.payments[0].amount))
224230 then true
225231 else (i.payments[0].amount > maxInt))
226232 then throw("ERROR: Payment amount")
227233 else {
228234 let contractAssetId = match i.payments[0].assetId {
229235 case isByteVector: ByteVector =>
230236 match assetInfo(isByteVector) {
231237 case isAsset: Asset =>
232238 toBase58String(isAsset.id)
233239 case _ =>
234240 throw("ERROR: Asset not found")
235241 }
236242 case isWaves: Unit =>
237243 wavesId
238244 case _ =>
239245 throw("ERROR: Unknown Asset type")
240246 }
241247 let nonce = generateNonce()
242248 let contractDescription = makeString([contractText, toString(height), toString(i.caller), contractAssetId, toString(i.payments[0].amount)], contractSeparator)
243249 if ((size(toBytes(contractDescription)) > maxDescriptionBytes))
244250 then throw("ERROR: Too long contract")
245251 else {
246252 let contractIssue = Issue(contractName, contractDescription, 1, 0, false, unit, nonce)
247253 let contractId = calculateAssetId(contractIssue)
248254 [IntegerEntry(keyNonceCount, nonce), contractIssue, ScriptTransfer(i.caller, contractIssue.quantity, contractId)]
249255 }
250256 }
251257
252258
253259
254260 @Callable(i)
255261 func withdraw () = if ((this == i.caller))
256262 then throw("ERROR: Self-invoke is forbidden")
257263 else if ((size(i.payments) != 1))
258264 then throw("ERROR: Attached Payment != 1")
259265 else if ((i.payments[0].amount != 1))
260266 then throw("ERROR: Payment amount != 1")
261267 else {
262268 let contractIdByteVector = match i.payments[0].assetId {
263269 case isByteVector: ByteVector =>
264270 isByteVector
265271 case _ =>
266272 throw("ERROR: Contract type")
267273 }
268274 let contractInfo = match assetInfo(contractIdByteVector) {
269275 case isAsset: Asset =>
270276 isAsset
271277 case _ =>
272278 throw("ERROR: Unknown Contract")
273279 }
274280 if ((contractInfo.issuer != this))
275281 then throw("ERROR: Contract Issuer")
276282 else if ((contractInfo.name != contractName))
277283 then throw("ERROR: Contract name")
278284 else if (if (if (if ((contractInfo.decimals != 0))
279285 then true
280286 else (contractInfo.quantity != 1))
281287 then true
282288 else (contractInfo.reissuable != false))
283289 then true
284290 else (contractInfo.scripted != false))
285291 then throw("ERROR: Contract not NFT")
286292 else {
287293 let contractDescription = split(contractInfo.description, contractSeparator)
288294 let contractHeight = parseIntValue(contractDescription[1])
289295 let contractCallerAddress = contractDescription[2]
290296 let contractAssetId = contractDescription[3]
291297 let contractAssetQuantity = parseIntValue(contractDescription[4])
292298 let contractAssetInfo = match assetInfo(fromBase58String(contractAssetId)) {
293299 case isAsset: Asset =>
294300 isAsset
295301 case _ =>
296302 throw("ERROR: Unknown Asset")
297303 }
298304 if ((size(contractDescription) != 5))
299305 then throw("ERROR: Contract description")
300306 else if (if ((genesisHeight >= contractHeight))
301307 then true
302308 else (contractHeight >= height))
303309 then throw("ERROR: Height")
304310 else if (if ((1 > contractAssetQuantity))
305311 then true
306312 else (contractAssetQuantity > contractAssetInfo.quantity))
307313 then throw("ERROR: Asset quantity")
308314 else if ((contractAssetQuantity > assetBalance(this, contractAssetInfo.id)))
309315 then throw("ERROR: Vault balance")
310316 else {
311317 let nonce = generateNonce()
312318 let receiptDescription = makeString([receiptText, toString(contractHeight), toString(height), toBase58String(contractIdByteVector), contractCallerAddress, toString(i.caller), contractAssetId, toString(contractAssetQuantity)], contractSeparator)
313319 let receiptIssue = Issue(receiptName, receiptDescription, 1, 0, false, unit, nonce)
314320 let receiptId = calculateAssetId(receiptIssue)
315321 [IntegerEntry(keyNonceCount, nonce), Burn(contractIdByteVector, 1), receiptIssue, ScriptTransfer(i.caller, receiptIssue.quantity, receiptId), ScriptTransfer(i.caller, contractAssetQuantity, contractAssetInfo.id)]
316322 }
317323 }
318324 }
319325
320326
321327 @Verifier(tx)
322328 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
323329

github/deemru/w8io/169f3d6 
243.02 ms