tx · GXSzJwK1ziiscB3pY1gXGsEadsuy3guGsKPGbjAjtN6u

3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua:  -0.01400000 Waves

2021.03.28 16:25 [1457667] smart account 3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua > SELF 0.00000000 Waves

{ "type": 13, "id": "GXSzJwK1ziiscB3pY1gXGsEadsuy3guGsKPGbjAjtN6u", "fee": 1400000, "feeAssetId": null, "timestamp": 1616937983055, "version": 2, "chainId": 84, "sender": "3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua", "senderPublicKey": "CTyHhnVTxf16Z4CmGGneAK8WB5g2QyT4MB8kUn8vPPcu", "proofs": [ "3w69hGeizXwdKi5UteE8eGDme3nCt87NyqQqi7YVhYNG8SKi1dk2TKLbchKdHVd7SjoHJhouC3ndeByxFoFQ54Sg" ], "script": "base64:AAIEAAAAAAAAABAIAhIECgIICBIECgIICBIAAAAAGAAAAAAEc2VsZgkABCUAAAABBQAAAAR0aGlzAAAAAA1nZW5lc2lzSGVpZ2h0AAAAAAAAFjhmAAAAAAd3YXZlc0lkAgAAAAVXQVZFUwAAAAAGbWF4SW50AH/////////9AAAAAA5tYXhEYXRhS2V5U2l6ZQAAAAAAAAABkAAAAAATbWF4RGVzY3JpcHRpb25CeXRlcwAAAAAAAAAD6AAAAAAMY29udHJhY3ROYW1lAgAAAA1WYXVsdENvbnRyYWN0AAAAAAxjb250cmFjdFRleHQJAAEsAAAAAgkAASwAAAACAgAAAEREb24ndCB0cnVzdCwgdmVyaWZ5ICEgVGhlIE5GVCBJc3N1ZXIgYW5kIGRBcHAgYXJlIHRoZSBzYW1lIGFkZHJlc3MgPAUAAAAEc2VsZgIAAAACPi4AAAAAEWNvbnRyYWN0U2VwYXJhdG9yAgAAAANfX18AAAAAC3JlY2VpcHROYW1lAgAAAAxWYXVsdFJlY2VpcHQAAAAAC3JlY2VpcHRUZXh0AgAAAAhmdWNrIG9mZgAAAAAMdmVyaWZpZXJOYW1lAgAAAA1WYXVsdFZlcmlmaWVyAAAAAA12ZXJpZmllclRleHQxAgAAAAhBZGRyZXNzOgAAAAANdmVyaWZpZXJUZXh0MgIAAAAXU0hBMjU2IEJhc2U1OCBDaGVja3N1bToAAAAADXZlcmlmaWVyVGV4dDMCAAAAB0Vycm9yczoAAAAADnJ1bGVzU2VwYXJhdG9yAgAAAAFfAAAAABRydWxlc05lc3RlZFNlcGFyYXRvcgIAAAABKwAAAAAOcnVsZXNVbmRlZmluZWQCAAAABG51bGwAAAAAD2Vycm9yc1NlcGFyYXRvcgIAAAABfAAAAAAIa2V5UnVsZXMCAAAABl9ydWxlcwAAAAANa2V5Tm9uY2VDb3VudAIAAAALTk9OQ0VfQ09VTlQBAAAACWlzSW5SYW5nZQAAAAEAAAAGbnVtYmVyAwkAAGcAAAACBQAAAAZudW1iZXIAAAAAAAAAAAAJAABmAAAAAgUAAAAGbWF4SW50BQAAAAZudW1iZXIHAQAAAA1nZW5lcmF0ZU5vbmNlAAAAAAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAA1rZXlOb25jZUNv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AAtkZXNjcmlwdGlvbgUAAAARY29udHJhY3RTZXBhcmF0b3IEAAAADmNvbnRyYWN0SGVpZ2h0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAATY29udHJhY3REZXNjcmlwdGlvbgAAAAAAAAAAAQQAAAAVY29udHJhY3RDYWxsZXJBZGRyZXNzCQABkQAAAAIFAAAAE2NvbnRyYWN0RGVzY3JpcHRpb24AAAAAAAAAAAIEAAAAD2NvbnRyYWN0QXNzZXRJZAkAAZEAAAACBQAAABNjb250cmFjdERlc2NyaXB0aW9uAAAAAAAAAAADBAAAABVjb250cmFjdEFzc2V0UXVhbnRpdHkJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABNjb250cmFjdERlc2NyaXB0aW9uAAAAAAAAAAAEBAAAABFjb250cmFjdEFzc2V0SW5mbwQAAAAHJG1hdGNoMAkAA+wAAAABCQACWQAAAAEFAAAAD2NvbnRyYWN0QXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFQXNzZXQEAAAAB2lzQXNzZXQFAAAAByRtYXRjaDAFAAAAB2lzQXNzZXQJAAACAAAAAQIAAAAURVJST1I6IFVua25vd24gQXNzZXQDCQEAAAACIT0AAAACCQABkAAAAAEFAAAAE2NvbnRyYWN0RGVzY3JpcHRpb24AAAAAAAAAAAUJAAACAAAAAQIAAAAbRVJST1I6IENvbnRyYWN0IGRlc2NyaXB0aW9uAwMJAABnAAAAAgUAAAANZ2VuZXNpc0hlaWdodAUAAAAOY29udHJhY3RIZWlnaHQGCQAAZwAAAAIFAAAADmNvbnRyYWN0SGVpZ2h0BQAAAAZoZWlnaHQJAAACAAAAAQIAAAANRVJST1I6IEhlaWdodAMDCQAAZgAAAAIAAAAAAAAAAAEFAAAAFWNvbnRyYWN0QXNzZXRRdWFudGl0eQYJAABmAAAAAgUAAAAVY29udHJhY3RBc3NldFF1YW50aXR5CAUAAAARY29udHJhY3RBc3NldEluZm8AAAAIcXVhbnRpdHkJAAACAAAAAQIAAAAVRVJST1I6IEFzc2V0IHF1YW50aXR5AwkAAGYAAAACBQAAABVjb250cmFjdEFzc2V0UXVhbnRpdHkJAAPwAAAAAgUAAAAEdGhpcwgFAAAAEWNvbnRyYWN0QXNzZXRJbmZvAAAAAmlkCQAAAgAAAAECAAAAFEVSUk9SOiBWYXVsdCBiYWxhbmNlBAAAAAVub25jZQkBAAAADWdlbmVyYXRlTm9uY2UAAAAABAAAABJyZWNlaXB0RGVzY3JpcHRpb24JAAS5AAAAAgkABEwAAAACBQAAAAtyZWNlaXB0VGV4dAkABEwAAAACCQABpAAAAAEFAAAADmNvbnRyYWN0SGVpZ2h0CQAETAAAAAIJAAGkAAAAAQUAAAAGaGVpZ2h0CQAETAAAAAIJAAJYAAAAAQUAAAAUY29udHJhY3RJZEJ5dGVWZWN0b3IJAARMAAAAAgUAAAAVY29udHJhY3RDYWxsZXJBZGRyZXNzCQAETAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAETAAAAAIFAAAAD2NvbnRyYWN0QXNzZXRJZAkABEwAAAACCQABpAAAAAEFAAAAFWNvbnRyYWN0QXNzZXRRdWFudGl0eQUAAAADbmlsBQAAABFjb250cmFjdFNlcGFyYXRvcgQAAAAMcmVjZWlwdElzc3VlCQAEQwAAAAcFAAAAC3JlY2VpcHROYW1lBQAAABJyZWNlaXB0RGVzY3JpcHRpb24AAAAAAAAAAAEAAAAAAAAAAAAHBQAAAAR1bml0BQAAAAVub25jZQQAAAAJcmVjZWlwdElkCQAEOAAAAAEFAAAADHJlY2VpcHRJc3N1ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5Tm9uY2VDb3VudAUAAAAFbm9uY2UJAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAABRjb250cmFjdElkQnl0ZVZlY3RvcgAAAAAAAAAAAQkABEwAAAACBQAAAAxyZWNlaXB0SXNzdWUJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCAUAAAAMcmVjZWlwdElzc3VlAAAACHF1YW50aXR5BQAAAAlyZWNlaXB0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVjb250cmFjdEFzc2V0UXVhbnRpdHkIBQAAABFjb250cmFjdEFzc2V0SW5mbwAAAAJpZAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXmGa0FV", "height": 1457667, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: J7JCxTJQJwWdHUzAg5VUuLmdZA7o76K4X7mLFKXqdLhM Next: 6ewY79aKdvCVLerKshymQxyaiB83oXpJqb8BYg9xv7aQ Diff:
OldNewDifferences
88 let wavesId = "WAVES"
99
1010 let maxInt = 9223372036854775805
11+
12+let maxDataKeySize = 400
1113
1214 let maxDescriptionBytes = 1000
1315
9496 then throw("ERROR: Self-invoke is forbidden")
9597 else {
9698 let rulerAddress = Address(fromBase58String(incRulerAddress))
97- let rulesString = match getString(rulerAddress, (incRulerKey + keyRules)) {
98- case isString: String =>
99- isString
100- case _ =>
101- throw("ERROR: Data not found")
102- }
103- let rulesList = split(rulesString, rulesSeparator)
104- if ((size(rulesList) != 15))
105- then throw("ERROR: Wrong amount of rules")
99+ let rulerKeyRules = (incRulerKey + keyRules)
100+ if ((size(toBytes(rulerKeyRules)) >= maxDataKeySize))
101+ then throw("ERROR: Key size too long")
106102 else {
107- let errorsList = {
108- let $list34453480 = rulesList
109- let $size34453480 = size($list34453480)
110- let $acc034453480 = nil
111- if (($size34453480 == 0))
112- then $acc034453480
113- else {
114- let $acc134453480 = verifyRule($acc034453480, $list34453480[0])
115- if (($size34453480 == 1))
116- then $acc134453480
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")
112+ else {
113+ let errorsList = {
114+ let $list37323767 = rulesList
115+ let $size37323767 = size($list37323767)
116+ let $acc037323767 = nil
117+ if (($size37323767 == 0))
118+ then $acc037323767
117119 else {
118- let $acc234453480 = verifyRule($acc134453480, $list34453480[1])
119- if (($size34453480 == 2))
120- then $acc234453480
120+ let $acc137323767 = verifyRule($acc037323767, $list37323767[0])
121+ if (($size37323767 == 1))
122+ then $acc137323767
121123 else {
122- let $acc334453480 = verifyRule($acc234453480, $list34453480[2])
123- if (($size34453480 == 3))
124- then $acc334453480
124+ let $acc237323767 = verifyRule($acc137323767, $list37323767[1])
125+ if (($size37323767 == 2))
126+ then $acc237323767
125127 else {
126- let $acc434453480 = verifyRule($acc334453480, $list34453480[3])
127- if (($size34453480 == 4))
128- then $acc434453480
128+ let $acc337323767 = verifyRule($acc237323767, $list37323767[2])
129+ if (($size37323767 == 3))
130+ then $acc337323767
129131 else {
130- let $acc534453480 = verifyRule($acc434453480, $list34453480[4])
131- if (($size34453480 == 5))
132- then $acc534453480
132+ let $acc437323767 = verifyRule($acc337323767, $list37323767[3])
133+ if (($size37323767 == 4))
134+ then $acc437323767
133135 else {
134- let $acc634453480 = verifyRule($acc534453480, $list34453480[5])
135- if (($size34453480 == 6))
136- then $acc634453480
136+ let $acc537323767 = verifyRule($acc437323767, $list37323767[4])
137+ if (($size37323767 == 5))
138+ then $acc537323767
137139 else {
138- let $acc734453480 = verifyRule($acc634453480, $list34453480[6])
139- if (($size34453480 == 7))
140- then $acc734453480
140+ let $acc637323767 = verifyRule($acc537323767, $list37323767[5])
141+ if (($size37323767 == 6))
142+ then $acc637323767
141143 else {
142- let $acc834453480 = verifyRule($acc734453480, $list34453480[7])
143- if (($size34453480 == 8))
144- then $acc834453480
144+ let $acc737323767 = verifyRule($acc637323767, $list37323767[6])
145+ if (($size37323767 == 7))
146+ then $acc737323767
145147 else {
146- let $acc934453480 = verifyRule($acc834453480, $list34453480[8])
147- if (($size34453480 == 9))
148- then $acc934453480
148+ let $acc837323767 = verifyRule($acc737323767, $list37323767[7])
149+ if (($size37323767 == 8))
150+ then $acc837323767
149151 else {
150- let $acc1034453480 = verifyRule($acc934453480, $list34453480[9])
151- if (($size34453480 == 10))
152- then $acc1034453480
152+ let $acc937323767 = verifyRule($acc837323767, $list37323767[8])
153+ if (($size37323767 == 9))
154+ then $acc937323767
153155 else {
154- let $acc1134453480 = verifyRule($acc1034453480, $list34453480[10])
155- if (($size34453480 == 11))
156- then $acc1134453480
156+ let $acc1037323767 = verifyRule($acc937323767, $list37323767[9])
157+ if (($size37323767 == 10))
158+ then $acc1037323767
157159 else {
158- let $acc1234453480 = verifyRule($acc1134453480, $list34453480[11])
159- if (($size34453480 == 12))
160- then $acc1234453480
160+ let $acc1137323767 = verifyRule($acc1037323767, $list37323767[10])
161+ if (($size37323767 == 11))
162+ then $acc1137323767
161163 else {
162- let $acc1334453480 = verifyRule($acc1234453480, $list34453480[12])
163- if (($size34453480 == 13))
164- then $acc1334453480
164+ let $acc1237323767 = verifyRule($acc1137323767, $list37323767[11])
165+ if (($size37323767 == 12))
166+ then $acc1237323767
165167 else {
166- let $acc1434453480 = verifyRule($acc1334453480, $list34453480[13])
167- if (($size34453480 == 14))
168- then $acc1434453480
168+ let $acc1337323767 = verifyRule($acc1237323767, $list37323767[12])
169+ if (($size37323767 == 13))
170+ then $acc1337323767
169171 else {
170- let $acc1534453480 = verifyRule($acc1434453480, $list34453480[14])
171- if (($size34453480 == 15))
172- then $acc1534453480
172+ let $acc1437323767 = verifyRule($acc1337323767, $list37323767[13])
173+ if (($size37323767 == 14))
174+ then $acc1437323767
173175 else {
174- let $acc1634453480 = verifyRule($acc1534453480, $list34453480[15])
175- throw("List size exceed 15")
176+ let $acc1537323767 = verifyRule($acc1437323767, $list37323767[14])
177+ if (($size37323767 == 15))
178+ then $acc1537323767
179+ else {
180+ let $acc1637323767 = verifyRule($acc1537323767, $list37323767[15])
181+ throw("List size exceed 15")
182+ }
176183 }
177184 }
178185 }
189196 }
190197 }
191198 }
192- }
193- let errorsString = makeString(errorsList, errorsSeparator)
194- let nonce = generateNonce()
195- let rulesSHA256 = toBase58String(sha256(toBytes(rulesString)))
196- let verifierDescription = ((((((((((verifierText1 + " <") + incRulerAddress) + "> ") + verifierText2) + " <") + rulesSHA256) + "> ") + verifierText3) + " ") + errorsString)
197- if ((size(toBytes(verifierDescription)) > maxDescriptionBytes))
198- then throw("ERROR: Too much errors")
199- else {
200- let veriferIssue = Issue(verifierName, verifierDescription, 1, 0, false, unit, nonce)
201- let verifierId = calculateAssetId(veriferIssue)
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)
202208 [IntegerEntry(keyNonceCount, nonce), veriferIssue, ScriptTransfer(i.caller, veriferIssue.quantity, verifierId)]
209+ }
203210 }
204211 }
205212 }
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
11+
12+let maxDataKeySize = 400
1113
1214 let maxDescriptionBytes = 1000
1315
1416 let contractName = "VaultContract"
1517
1618 let contractText = (("Don't trust, verify ! The NFT Issuer and dApp are the same address <" + self) + ">.")
1719
1820 let contractSeparator = "___"
1921
2022 let receiptName = "VaultReceipt"
2123
2224 let receiptText = "fuck off"
2325
2426 let verifierName = "VaultVerifier"
2527
2628 let verifierText1 = "Address:"
2729
2830 let verifierText2 = "SHA256 Base58 Checksum:"
2931
3032 let verifierText3 = "Errors:"
3133
3234 let rulesSeparator = "_"
3335
3436 let rulesNestedSeparator = "+"
3537
3638 let rulesUndefined = "null"
3739
3840 let errorsSeparator = "|"
3941
4042 let keyRules = "_rules"
4143
4244 let keyNonceCount = "NONCE_COUNT"
4345
4446 func isInRange (number) = if ((number >= 0))
4547 then (maxInt > number)
4648 else false
4749
4850
4951 func generateNonce () = match getInteger(this, keyNonceCount) {
5052 case isInt: Int =>
5153 if ((isInt >= maxInt))
5254 then 1
5355 else (isInt + 1)
5456 case _ =>
5557 1
5658 }
5759
5860
5961 func verifyRule (acc,rule) = if ((rule == rulesUndefined))
6062 then acc
6163 else {
6264 let ruleValues = split(rule, rulesNestedSeparator)
6365 if ((size(ruleValues) != 4))
6466 then (("<" + rule) + "> Broken structure") :: acc
6567 else match parseInt(ruleValues[0]) {
6668 case blockStart: Int =>
6769 if ((isInRange(blockStart) != true))
6870 then (("<" + rule) + "> blockStart out-of-range") :: acc
6971 else match parseInt(ruleValues[1]) {
7072 case blockEnd: Int =>
7173 if ((isInRange(blockEnd) != true))
7274 then (("<" + rule) + "> blockEnd out-of-range") :: acc
7375 else match parseInt(ruleValues[2]) {
7476 case isWhitelist: Int =>
7577 if (if ((isWhitelist != 0))
7678 then (isWhitelist != 1)
7779 else false)
7880 then (("<" + rule) + "> isWhitelist is 0 (false) or 1 (true)") :: acc
7981 else acc
8082 case _ =>
8183 (("<" + rule) + "> isWhitelist not Integer") :: acc
8284 }
8385 case _ =>
8486 (("<" + rule) + "> blockEnd not Integer") :: acc
8587 }
8688 case _ =>
8789 (("<" + rule) + "> blockStart not Integer") :: acc
8890 }
8991 }
9092
9193
9294 @Callable(i)
9395 func verifyRules (incRulerAddress,incRulerKey) = if ((this == i.caller))
9496 then throw("ERROR: Self-invoke is forbidden")
9597 else {
9698 let rulerAddress = Address(fromBase58String(incRulerAddress))
97- let rulesString = match getString(rulerAddress, (incRulerKey + keyRules)) {
98- case isString: String =>
99- isString
100- case _ =>
101- throw("ERROR: Data not found")
102- }
103- let rulesList = split(rulesString, rulesSeparator)
104- if ((size(rulesList) != 15))
105- then throw("ERROR: Wrong amount of rules")
99+ let rulerKeyRules = (incRulerKey + keyRules)
100+ if ((size(toBytes(rulerKeyRules)) >= maxDataKeySize))
101+ then throw("ERROR: Key size too long")
106102 else {
107- let errorsList = {
108- let $list34453480 = rulesList
109- let $size34453480 = size($list34453480)
110- let $acc034453480 = nil
111- if (($size34453480 == 0))
112- then $acc034453480
113- else {
114- let $acc134453480 = verifyRule($acc034453480, $list34453480[0])
115- if (($size34453480 == 1))
116- then $acc134453480
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")
112+ else {
113+ let errorsList = {
114+ let $list37323767 = rulesList
115+ let $size37323767 = size($list37323767)
116+ let $acc037323767 = nil
117+ if (($size37323767 == 0))
118+ then $acc037323767
117119 else {
118- let $acc234453480 = verifyRule($acc134453480, $list34453480[1])
119- if (($size34453480 == 2))
120- then $acc234453480
120+ let $acc137323767 = verifyRule($acc037323767, $list37323767[0])
121+ if (($size37323767 == 1))
122+ then $acc137323767
121123 else {
122- let $acc334453480 = verifyRule($acc234453480, $list34453480[2])
123- if (($size34453480 == 3))
124- then $acc334453480
124+ let $acc237323767 = verifyRule($acc137323767, $list37323767[1])
125+ if (($size37323767 == 2))
126+ then $acc237323767
125127 else {
126- let $acc434453480 = verifyRule($acc334453480, $list34453480[3])
127- if (($size34453480 == 4))
128- then $acc434453480
128+ let $acc337323767 = verifyRule($acc237323767, $list37323767[2])
129+ if (($size37323767 == 3))
130+ then $acc337323767
129131 else {
130- let $acc534453480 = verifyRule($acc434453480, $list34453480[4])
131- if (($size34453480 == 5))
132- then $acc534453480
132+ let $acc437323767 = verifyRule($acc337323767, $list37323767[3])
133+ if (($size37323767 == 4))
134+ then $acc437323767
133135 else {
134- let $acc634453480 = verifyRule($acc534453480, $list34453480[5])
135- if (($size34453480 == 6))
136- then $acc634453480
136+ let $acc537323767 = verifyRule($acc437323767, $list37323767[4])
137+ if (($size37323767 == 5))
138+ then $acc537323767
137139 else {
138- let $acc734453480 = verifyRule($acc634453480, $list34453480[6])
139- if (($size34453480 == 7))
140- then $acc734453480
140+ let $acc637323767 = verifyRule($acc537323767, $list37323767[5])
141+ if (($size37323767 == 6))
142+ then $acc637323767
141143 else {
142- let $acc834453480 = verifyRule($acc734453480, $list34453480[7])
143- if (($size34453480 == 8))
144- then $acc834453480
144+ let $acc737323767 = verifyRule($acc637323767, $list37323767[6])
145+ if (($size37323767 == 7))
146+ then $acc737323767
145147 else {
146- let $acc934453480 = verifyRule($acc834453480, $list34453480[8])
147- if (($size34453480 == 9))
148- then $acc934453480
148+ let $acc837323767 = verifyRule($acc737323767, $list37323767[7])
149+ if (($size37323767 == 8))
150+ then $acc837323767
149151 else {
150- let $acc1034453480 = verifyRule($acc934453480, $list34453480[9])
151- if (($size34453480 == 10))
152- then $acc1034453480
152+ let $acc937323767 = verifyRule($acc837323767, $list37323767[8])
153+ if (($size37323767 == 9))
154+ then $acc937323767
153155 else {
154- let $acc1134453480 = verifyRule($acc1034453480, $list34453480[10])
155- if (($size34453480 == 11))
156- then $acc1134453480
156+ let $acc1037323767 = verifyRule($acc937323767, $list37323767[9])
157+ if (($size37323767 == 10))
158+ then $acc1037323767
157159 else {
158- let $acc1234453480 = verifyRule($acc1134453480, $list34453480[11])
159- if (($size34453480 == 12))
160- then $acc1234453480
160+ let $acc1137323767 = verifyRule($acc1037323767, $list37323767[10])
161+ if (($size37323767 == 11))
162+ then $acc1137323767
161163 else {
162- let $acc1334453480 = verifyRule($acc1234453480, $list34453480[12])
163- if (($size34453480 == 13))
164- then $acc1334453480
164+ let $acc1237323767 = verifyRule($acc1137323767, $list37323767[11])
165+ if (($size37323767 == 12))
166+ then $acc1237323767
165167 else {
166- let $acc1434453480 = verifyRule($acc1334453480, $list34453480[13])
167- if (($size34453480 == 14))
168- then $acc1434453480
168+ let $acc1337323767 = verifyRule($acc1237323767, $list37323767[12])
169+ if (($size37323767 == 13))
170+ then $acc1337323767
169171 else {
170- let $acc1534453480 = verifyRule($acc1434453480, $list34453480[14])
171- if (($size34453480 == 15))
172- then $acc1534453480
172+ let $acc1437323767 = verifyRule($acc1337323767, $list37323767[13])
173+ if (($size37323767 == 14))
174+ then $acc1437323767
173175 else {
174- let $acc1634453480 = verifyRule($acc1534453480, $list34453480[15])
175- throw("List size exceed 15")
176+ let $acc1537323767 = verifyRule($acc1437323767, $list37323767[14])
177+ if (($size37323767 == 15))
178+ then $acc1537323767
179+ else {
180+ let $acc1637323767 = verifyRule($acc1537323767, $list37323767[15])
181+ throw("List size exceed 15")
182+ }
176183 }
177184 }
178185 }
179186 }
180187 }
181188 }
182189 }
183190 }
184191 }
185192 }
186193 }
187194 }
188195 }
189196 }
190197 }
191198 }
192- }
193- let errorsString = makeString(errorsList, errorsSeparator)
194- let nonce = generateNonce()
195- let rulesSHA256 = toBase58String(sha256(toBytes(rulesString)))
196- let verifierDescription = ((((((((((verifierText1 + " <") + incRulerAddress) + "> ") + verifierText2) + " <") + rulesSHA256) + "> ") + verifierText3) + " ") + errorsString)
197- if ((size(toBytes(verifierDescription)) > maxDescriptionBytes))
198- then throw("ERROR: Too much errors")
199- else {
200- let veriferIssue = Issue(verifierName, verifierDescription, 1, 0, false, unit, nonce)
201- let verifierId = calculateAssetId(veriferIssue)
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)
202208 [IntegerEntry(keyNonceCount, nonce), veriferIssue, ScriptTransfer(i.caller, veriferIssue.quantity, verifierId)]
209+ }
203210 }
204211 }
205212 }
206213
207214
208215
209216 @Callable(i)
210217 func deposit (incRulerAddress,incRulerTag) = if ((genesisHeight > height))
211218 then throw(("ERROR: Deposits are denied until block " + toString(genesisHeight)))
212219 else if ((this == i.caller))
213220 then throw("ERROR: Self-invoke is forbidden")
214221 else if ((size(i.payments) != 1))
215222 then throw("ERROR: Attached Payment != 1")
216223 else if (if ((1 > i.payments[0].amount))
217224 then true
218225 else (i.payments[0].amount > maxInt))
219226 then throw("ERROR: Payment amount")
220227 else {
221228 let contractAssetId = match i.payments[0].assetId {
222229 case isByteVector: ByteVector =>
223230 match assetInfo(isByteVector) {
224231 case isAsset: Asset =>
225232 toBase58String(isAsset.id)
226233 case _ =>
227234 throw("ERROR: Asset not found")
228235 }
229236 case isWaves: Unit =>
230237 wavesId
231238 case _ =>
232239 throw("ERROR: Unknown Asset type")
233240 }
234241 let nonce = generateNonce()
235242 let contractDescription = makeString([contractText, toString(height), toString(i.caller), contractAssetId, toString(i.payments[0].amount)], contractSeparator)
236243 if ((size(toBytes(contractDescription)) > maxDescriptionBytes))
237244 then throw("ERROR: Too long contract")
238245 else {
239246 let contractIssue = Issue(contractName, contractDescription, 1, 0, false, unit, nonce)
240247 let contractId = calculateAssetId(contractIssue)
241248 [IntegerEntry(keyNonceCount, nonce), contractIssue, ScriptTransfer(i.caller, contractIssue.quantity, contractId)]
242249 }
243250 }
244251
245252
246253
247254 @Callable(i)
248255 func withdraw () = if ((this == i.caller))
249256 then throw("ERROR: Self-invoke is forbidden")
250257 else if ((size(i.payments) != 1))
251258 then throw("ERROR: Attached Payment != 1")
252259 else if ((i.payments[0].amount != 1))
253260 then throw("ERROR: Payment amount != 1")
254261 else {
255262 let contractIdByteVector = match i.payments[0].assetId {
256263 case isByteVector: ByteVector =>
257264 isByteVector
258265 case _ =>
259266 throw("ERROR: Contract type")
260267 }
261268 let contractInfo = match assetInfo(contractIdByteVector) {
262269 case isAsset: Asset =>
263270 isAsset
264271 case _ =>
265272 throw("ERROR: Unknown Contract")
266273 }
267274 if ((contractInfo.issuer != this))
268275 then throw("ERROR: Contract Issuer")
269276 else if ((contractInfo.name != contractName))
270277 then throw("ERROR: Contract name")
271278 else if (if (if (if ((contractInfo.decimals != 0))
272279 then true
273280 else (contractInfo.quantity != 1))
274281 then true
275282 else (contractInfo.reissuable != false))
276283 then true
277284 else (contractInfo.scripted != false))
278285 then throw("ERROR: Contract not NFT")
279286 else {
280287 let contractDescription = split(contractInfo.description, contractSeparator)
281288 let contractHeight = parseIntValue(contractDescription[1])
282289 let contractCallerAddress = contractDescription[2]
283290 let contractAssetId = contractDescription[3]
284291 let contractAssetQuantity = parseIntValue(contractDescription[4])
285292 let contractAssetInfo = match assetInfo(fromBase58String(contractAssetId)) {
286293 case isAsset: Asset =>
287294 isAsset
288295 case _ =>
289296 throw("ERROR: Unknown Asset")
290297 }
291298 if ((size(contractDescription) != 5))
292299 then throw("ERROR: Contract description")
293300 else if (if ((genesisHeight >= contractHeight))
294301 then true
295302 else (contractHeight >= height))
296303 then throw("ERROR: Height")
297304 else if (if ((1 > contractAssetQuantity))
298305 then true
299306 else (contractAssetQuantity > contractAssetInfo.quantity))
300307 then throw("ERROR: Asset quantity")
301308 else if ((contractAssetQuantity > assetBalance(this, contractAssetInfo.id)))
302309 then throw("ERROR: Vault balance")
303310 else {
304311 let nonce = generateNonce()
305312 let receiptDescription = makeString([receiptText, toString(contractHeight), toString(height), toBase58String(contractIdByteVector), contractCallerAddress, toString(i.caller), contractAssetId, toString(contractAssetQuantity)], contractSeparator)
306313 let receiptIssue = Issue(receiptName, receiptDescription, 1, 0, false, unit, nonce)
307314 let receiptId = calculateAssetId(receiptIssue)
308315 [IntegerEntry(keyNonceCount, nonce), Burn(contractIdByteVector, 1), receiptIssue, ScriptTransfer(i.caller, receiptIssue.quantity, receiptId), ScriptTransfer(i.caller, contractAssetQuantity, contractAssetInfo.id)]
309316 }
310317 }
311318 }
312319
313320
314321 @Verifier(tx)
315322 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
316323

github/deemru/w8io/169f3d6 
165.07 ms