tx · 5XNLrUjkMeNvEW6B8gjd6vU73TELXQUpaMdUvBo8n62s

3Mr7HCJPTazuYjJbfbbpRMvZX8xrNTjT1Kx:  -0.01000000 Waves

2023.02.21 17:12 [2459518] smart account 3Mr7HCJPTazuYjJbfbbpRMvZX8xrNTjT1Kx > SELF 0.00000000 Waves

{ "type": 13, "id": "5XNLrUjkMeNvEW6B8gjd6vU73TELXQUpaMdUvBo8n62s", "fee": 1000000, "feeAssetId": null, "timestamp": 1676988781464, "version": 2, "chainId": 84, "sender": "3Mr7HCJPTazuYjJbfbbpRMvZX8xrNTjT1Kx", "senderPublicKey": "D35PGQCSSdrp9pvujggj7b2DaCK1BhcU3kho7tikKJYs", "proofs": [ "39PYGKa8SR1eUtJnpswRNYfWdnCagWsZVD8U8tEE2Sdda9w68yVTNzZY9zmj8yoEjVX5fa19gUWD9Ro1XNcJVufK" ], "script": "base64:BgIfCAISAwoBARIAEgMKAQESBAoCGBESBAoCCAESAwoBCAIADG9wdGlvbnNfYWRkcgkBB0FkZHJlc3MBARoBVEFb+Cv2F+oqocvEivH7x7uyIGEx/ocgwQAEdFVTRAEgqyRKarZCRuvS/ON5sGG6w65pV01SespFHKdAHRGwKQ4GAWkBCWlzc3VlQmlsbAEJcHJvdmlkaW5nBApjdXJyZW50S2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEDWN1cnJlbnRBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwUKY3VycmVudEtleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQRbWluQmlsbERlcG9zaXRTdHIEByRtYXRjaDAJAJ0IAgUMb3B0aW9uc19hZGRyAhBtaW5fYmlsbF9kZXBvc2l0AwkAAQIFByRtYXRjaDACBFVuaXQCATADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAF4BQckbWF0Y2gwBQF4CQACAQILTWF0Y2ggZXJyb3IEDm1pbkJpbGxEZXBvc2l0BAckbWF0Y2gwCQC2CQEJAJEDAgkAtQkCBRFtaW5CaWxsRGVwb3NpdFN0cgIBLgAAAwkAAQIFByRtYXRjaDACBFVuaXQAAAMJAAECBQckbWF0Y2gwAgNJbnQEAXQFByRtYXRjaDAFAXQJAAIBAgtNYXRjaCBlcnJvcgQJbmV3QW1vdW50CQBlAgUNY3VycmVudEFtb3VudAUJcHJvdmlkaW5nAwkAZgIJAGgCBQ5taW5CaWxsRGVwb3NpdABkBQlwcm92aWRpbmcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICJ1RoZSBzZWN1cml0eSBkZXBvc2l0IG11c3QgYmUgbW9yZSB0aGFuIAURbWluQmlsbERlcG9zaXRTdHICFC4gWW91IHNldCB0aGUgc2l6ZTogCQCkAwEJAGkCBQlwcm92aWRpbmcAZAIDLjAwAwkAZgIAAAUJbmV3QW1vdW50CQACAQISTm90IGVub3VnaCBiYWxhbmNlBAVpc3N1ZQkAwggFCQCsAgICCWJpbGwgZm9yOgkApAMBCQBpAgUJcHJvdmlkaW5nAGQFCmN1cnJlbnRLZXkAAQAABwQCaWQJALgIAQUFaXNzdWUJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUKY3VycmVudEtleQUJbmV3QW1vdW50CQDMCAIFBWlzc3VlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQJpZAUDbmlsBQR1bml0AWkBB2RlcG9zaXQAAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFFBheW1lbnQgbm90IGF0dGFjaGVkBANwbXQJAJEDAgkBBXZhbHVlAQgFAWkIcGF5bWVudHMAAAQNbWluRGVwb3NpdFN0cgQHJG1hdGNoMAkAnQgCBQxvcHRpb25zX2FkZHICEG1pbl9iaWxsX2RlcG9zaXQDCQABAgUHJG1hdGNoMAIEVW5pdAIBMAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAFAXgJAAIBAgtNYXRjaCBlcnJvcgQKbWluRGVwb3NpdAQHJG1hdGNoMAkAtgkBCQCRAwIJALUJAgUNbWluRGVwb3NpdFN0cgIBLgAAAwkAAQIFByRtYXRjaDACBFVuaXQAAAMJAAECBQckbWF0Y2gwAgNJbnQEAXQFByRtYXRjaDAFAXQJAAIBAgtNYXRjaCBlcnJvcgMJAQIhPQIIBQNwbXQHYXNzZXRJZAUEdFVTRAkAAgECF2hvbGRlZCBwYXltZW50IG5vdCB0VVNEAwkAZgIJAGgCBQptaW5EZXBvc2l0AGQIBQNwbXQGYW1vdW50CQACAQkArAICCQCsAgIJAKwCAgkArAICAiNZb3UgaGF2ZSBzZXQgdGhlIGRlcG9zaXQgYW1vdW50IHRvIAkApAMBCQBpAggFA3BtdAZhbW91bnQAZAIlLjAwLCB3aGljaCBpcyBsZXNzIHRoYW4gdGhlIG1pbmltdW0gKAUNbWluRGVwb3NpdFN0cgIBKQQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBA1jdXJyZW50QW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFCmN1cnJlbnRLZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAECW5ld0Ftb3VudAkAZAIFDWN1cnJlbnRBbW91bnQIBQNwbXQGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpjdXJyZW50S2V5BQluZXdBbW91bnQFA25pbAFpAQh3aXRoZHJhdwEGYW1vdW50BApjdXJyZW50S2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEDWN1cnJlbnRBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwUKY3VycmVudEtleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQJbmV3QW1vdW50CQBlAgUNY3VycmVudEFtb3VudAUGYW1vdW50AwkAZgIAAAUGYW1vdW50CQACAQIeQ2FuJ3Qgd2l0aGRyYXcgbmVnYXRpdmUgYW1vdW50AwkAZgIAAAUJbmV3QW1vdW50CQACAQISTm90IGVub3VnaCBiYWxhbmNlCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmN1cnJlbnRLZXkFCW5ld0Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAUEdFVTRAUDbmlsBQR1bml0AWkBCnNldE9wdGlvbnMCBG9wdHMEdmFscwQIb3B0X3NpemUJAJADAQUEb3B0cwMJAGcCAGQFCG9wdF9zaXplBAlhZG1pbkxpc3QEByRtYXRjaDAJAJ0IAgUMb3B0aW9uc19hZGRyAgphZG1pbl9saXN0AwkAAQIFByRtYXRjaDACBFVuaXQCBXVuc2V0AwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAkAAgECC01hdGNoIGVycm9yCgEOYWRkU3RyaW5nRW50cnkCBWFjY3VtCW5leHRWYWx1ZQQLJHQwNDU3MjQ1OTUFBWFjY3VtBAZyZXN1bHQIBQskdDA0NTcyNDU5NQJfMQQBaggFCyR0MDQ1NzI0NTk1Al8yCQCUCgIJAM0IAgUGcmVzdWx0CQEMSW50ZWdlckVudHJ5AgkAkQMCBQRvcHRzBQFqBQluZXh0VmFsdWUJAGQCBQFqAAEEAXIKAAIkbAUEdmFscwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDmFkZFN0cmluZ0VudHJ5AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAQQY2FsbGVyQWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIDCQECIT0CBQlhZG1pbkxpc3QCBXVuc2V0BAR0ZXN0CQCdCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCWFkbWluTGlzdAUQY2FsbGVyQWRkcmVzc1N0cgQHaXNBZG1pbgQHJG1hdGNoMAUEdGVzdAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAFAXgDCQABAgUHJG1hdGNoMAIEVW5pdAIIbm8gYWRtaW4JAAIBAgtNYXRjaCBlcnJvcgoBB2FkZF9lbG0BB29wdGlvbnMEA29wdAkAtQkCBQdvcHRpb25zAgF8CQELU3RyaW5nRW50cnkCCQCRAwIFA29wdAAACQCRAwIFA29wdAABAwkBAiE9AgUHaXNBZG1pbgIIbm8gYWRtaW4FAXIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9Zb3Ugbm90IGFkbWluOiAFCWFkbWluTGlzdAILLCBpc0FkbWluOiAFB2lzQWRtaW4CFCwgY2FsbGVyQWRkcmVzc1N0cjogBRBjYWxsZXJBZGRyZXNzU3RyAgIsIAkAAgECEFVuc2V0IGFkbWluIGxpc3QJAAIBAi9UaGUgbnVtYmVyIG9mIGxpc3QgZWxlbWVudHMgbXVzdCBub3QgZXhjZWVkIDEwMAFpAQlzZXRPcHRpb24CCHZhcmlhYmxlBXZhbHVlBAlhZG1pbkxpc3QEByRtYXRjaDAJAJ0IAgUMb3B0aW9uc19hZGRyAgphZG1pbl9saXN0AwkAAQIFByRtYXRjaDACBFVuaXQCBXVuc2V0AwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAkAAgECC01hdGNoIGVycm9yBBBjYWxsZXJBZGRyZXNzU3RyCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIFCWFkbWluTGlzdAIFdW5zZXQEBHRlc3QJAJ0IAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUJYWRtaW5MaXN0BRBjYWxsZXJBZGRyZXNzU3RyBAdpc0FkbWluBAckbWF0Y2gwBQR0ZXN0AwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAMJAAECBQckbWF0Y2gwAgRVbml0AghubyBhZG1pbgkAAgECC01hdGNoIGVycm9yAwkBAiE9AgUHaXNBZG1pbgIIbm8gYWRtaW4JAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIdmFyaWFibGUFBXZhbHVlBQNuaWwFBHVuaXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9Zb3Ugbm90IGFkbWluOiAFCWFkbWluTGlzdAILLCBpc0FkbWluOiAFB2lzQWRtaW4CFCwgY2FsbGVyQWRkcmVzc1N0cjogBRBjYWxsZXJBZGRyZXNzU3RyAgIsIAkAAgECEFVuc2V0IGFkbWluIGxpc3QBaQEJZGVsT3B0aW9uAQh2YXJpYWJsZQQJYWRtaW5MaXN0BAckbWF0Y2gwCQCdCAIFDG9wdGlvbnNfYWRkcgIKYWRtaW5fbGlzdAMJAAECBQckbWF0Y2gwAgRVbml0AgV1bnNldAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAFAXgJAAIBAgtNYXRjaCBlcnJvcgQQY2FsbGVyQWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIDCQECIT0CBQlhZG1pbkxpc3QCBXVuc2V0BAR0ZXN0CQCdCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCWFkbWluTGlzdAUQY2FsbGVyQWRkcmVzc1N0cgQHaXNBZG1pbgQHJG1hdGNoMAUEdGVzdAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAFAXgDCQABAgUHJG1hdGNoMAIEVW5pdAIIbm8gYWRtaW4JAAIBAgtNYXRjaCBlcnJvcgMJAQIhPQIFB2lzQWRtaW4CCG5vIGFkbWluCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUIdmFyaWFibGUFA25pbAUEdW5pdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD1lvdSBub3QgYWRtaW46IAUJYWRtaW5MaXN0AgssIGlzQWRtaW46IAUHaXNBZG1pbgIULCBjYWxsZXJBZGRyZXNzU3RyOiAFEGNhbGxlckFkZHJlc3NTdHICAiwgCQACAQIQVW5zZXQgYWRtaW4gbGlzdAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkkqdnH", "height": 2459518, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5Lxx2ix89E1uLtrmG482sBLVTd5JzZHzhsS9pj2fzkym Next: 4f2TFHQyqoZsoDgKMBuwUBpLa6FczAvDu8XYDrQ1RrqF Diff:
OldNewDifferences
5959 else {
6060 let p = value(c.payments)[0]
6161 let q = {
62- let g = getString(a, "admin_list")
62+ let g = getString(a, "min_bill_deposit")
6363 if ($isInstanceOf(g, "Unit"))
64- then "unset"
64+ then "0"
6565 else if ($isInstanceOf(g, "String"))
6666 then {
6767 let j = g
6969 }
7070 else throw("Match error")
7171 }
72+ let r = {
73+ let g = parseInt(split(q, ".")[0])
74+ if ($isInstanceOf(g, "Unit"))
75+ then 0
76+ else if ($isInstanceOf(g, "Int"))
77+ then {
78+ let l = g
79+ l
80+ }
81+ else throw("Match error")
82+ }
7283 if ((p.assetId != b))
7384 then throw("holded payment not tUSD")
74- else if ((1000 > p.amount))
75- then throw("holded payment < 10.00")
85+ else if (((r * 100) > p.amount))
86+ then throw((((("You have set the deposit amount to " + toString((p.amount / 100))) + ".00, which is less than the minimum (") + q) + ")"))
7687 else {
7788 let e = toBase58String(c.caller.bytes)
7889 let f = {
92103
93104
94105 @Callable(c)
95-func withdraw (r) = {
106+func withdraw (s) = {
96107 let e = toBase58String(c.caller.bytes)
97108 let f = {
98109 let g = getInteger(this, e)
103114 }
104115 else 0
105116 }
106- let m = (f - r)
107- if ((0 > r))
117+ let m = (f - s)
118+ if ((0 > s))
108119 then throw("Can't withdraw negative amount")
109120 else if ((0 > m))
110121 then throw("Not enough balance")
111- else $Tuple2([IntegerEntry(e, m), ScriptTransfer(c.caller, r, b)], unit)
122+ else $Tuple2([IntegerEntry(e, m), ScriptTransfer(c.caller, s, b)], unit)
112123 }
113124
114125
115126
116127 @Callable(c)
117-func setOptions (s,t) = {
118- let u = size(s)
119- if ((100 >= u))
128+func setOptions (t,u) = {
129+ let v = size(t)
130+ if ((100 >= v))
120131 then {
121- let q = {
132+ let w = {
122133 let g = getString(a, "admin_list")
123134 if ($isInstanceOf(g, "Unit"))
124135 then "unset"
129140 }
130141 else throw("Match error")
131142 }
132- func v (w,x) = {
133- let y = w
134- let z = y._1
135- let A = y._2
136- $Tuple2((z :+ IntegerEntry(s[A], x)), (A + 1))
143+ func x (y,z) = {
144+ let A = y
145+ let B = A._1
146+ let C = A._2
147+ $Tuple2((B :+ IntegerEntry(t[C], z)), (C + 1))
137148 }
138149
139- let B = {
140- let C = t
141- let D = size(C)
142- let E = $Tuple2(nil, 0)
143- func F (G,H) = if ((H >= D))
144- then G
145- else v(G, C[H])
150+ let D = {
151+ let E = u
152+ let F = size(E)
153+ let G = $Tuple2(nil, 0)
154+ func H (I,J) = if ((J >= F))
155+ then I
156+ else x(I, E[J])
146157
147- func I (G,H) = if ((H >= D))
148- then G
158+ func K (I,J) = if ((J >= F))
159+ then I
149160 else throw("List size exceeds 100")
150161
151- I(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
162+ K(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(G, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
152163 }
153- let J = toString(c.caller)
154- if ((q != "unset"))
164+ let L = toString(c.caller)
165+ if ((w != "unset"))
155166 then {
156- let K = getString(addressFromStringValue(q), J)
157- let L = {
158- let g = K
167+ let M = getString(addressFromStringValue(w), L)
168+ let N = {
169+ let g = M
159170 if ($isInstanceOf(g, "String"))
160171 then {
161172 let j = g
165176 then "no admin"
166177 else throw("Match error")
167178 }
168- func M (N) = {
169- let O = split(N, "|")
170- StringEntry(O[0], O[1])
179+ func O (P) = {
180+ let Q = split(P, "|")
181+ StringEntry(Q[0], Q[1])
171182 }
172183
173- if ((L != "no admin"))
174- then B
175- else throw((((((("You not admin: " + q) + ", isAdmin: ") + L) + ", callerAddressStr: ") + J) + ", "))
184+ if ((N != "no admin"))
185+ then D
186+ else throw((((((("You not admin: " + w) + ", isAdmin: ") + N) + ", callerAddressStr: ") + L) + ", "))
176187 }
177188 else throw("Unset admin list")
178189 }
182193
183194
184195 @Callable(c)
185-func setOption (P,Q) = {
186- let q = {
196+func setOption (R,S) = {
197+ let w = {
187198 let g = getString(a, "admin_list")
188199 if ($isInstanceOf(g, "Unit"))
189200 then "unset"
194205 }
195206 else throw("Match error")
196207 }
197- let J = toString(c.caller)
198- if ((q != "unset"))
208+ let L = toString(c.caller)
209+ if ((w != "unset"))
199210 then {
200- let K = getString(addressFromStringValue(q), J)
201- let L = {
202- let g = K
211+ let M = getString(addressFromStringValue(w), L)
212+ let N = {
213+ let g = M
203214 if ($isInstanceOf(g, "String"))
204215 then {
205216 let j = g
209220 then "no admin"
210221 else throw("Match error")
211222 }
212- if ((L != "no admin"))
213- then $Tuple2([IntegerEntry(P, Q)], unit)
214- else throw((((((("You not admin: " + q) + ", isAdmin: ") + L) + ", callerAddressStr: ") + J) + ", "))
223+ if ((N != "no admin"))
224+ then $Tuple2([IntegerEntry(R, S)], unit)
225+ else throw((((((("You not admin: " + w) + ", isAdmin: ") + N) + ", callerAddressStr: ") + L) + ", "))
215226 }
216227 else throw("Unset admin list")
217228 }
219230
220231
221232 @Callable(c)
222-func delOption (P) = {
223- let q = {
233+func delOption (R) = {
234+ let w = {
224235 let g = getString(a, "admin_list")
225236 if ($isInstanceOf(g, "Unit"))
226237 then "unset"
231242 }
232243 else throw("Match error")
233244 }
234- let J = toString(c.caller)
235- if ((q != "unset"))
245+ let L = toString(c.caller)
246+ if ((w != "unset"))
236247 then {
237- let K = getString(addressFromStringValue(q), J)
238- let L = {
239- let g = K
248+ let M = getString(addressFromStringValue(w), L)
249+ let N = {
250+ let g = M
240251 if ($isInstanceOf(g, "String"))
241252 then {
242253 let j = g
246257 then "no admin"
247258 else throw("Match error")
248259 }
249- if ((L != "no admin"))
250- then $Tuple2([DeleteEntry(P)], unit)
251- else throw((((((("You not admin: " + q) + ", isAdmin: ") + L) + ", callerAddressStr: ") + J) + ", "))
260+ if ((N != "no admin"))
261+ then $Tuple2([DeleteEntry(R)], unit)
262+ else throw((((((("You not admin: " + w) + ", isAdmin: ") + N) + ", callerAddressStr: ") + L) + ", "))
252263 }
253264 else throw("Unset admin list")
254265 }
255266
256267
257-@Verifier(R)
258-func S () = sigVerify(R.bodyBytes, R.proofs[0], R.senderPublicKey)
268+@Verifier(T)
269+func U () = sigVerify(T.bodyBytes, T.proofs[0], T.senderPublicKey)
259270
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = Address(base58'3MusfsY6PqDh1YnF7YyTi5ffVT16Dm2bqf6')
55
66 let b = base58'CX4p6XcuSBUvv44r1avCqYka5PYAVzBK5hSXaT7maU85'
77
88 @Callable(c)
99 func issueBill (d) = {
1010 let e = toBase58String(c.caller.bytes)
1111 let f = {
1212 let g = getInteger(this, e)
1313 if ($isInstanceOf(g, "Int"))
1414 then {
1515 let h = g
1616 h
1717 }
1818 else 0
1919 }
2020 let i = {
2121 let g = getString(a, "min_bill_deposit")
2222 if ($isInstanceOf(g, "Unit"))
2323 then "0"
2424 else if ($isInstanceOf(g, "String"))
2525 then {
2626 let j = g
2727 j
2828 }
2929 else throw("Match error")
3030 }
3131 let k = {
3232 let g = parseInt(split(i, ".")[0])
3333 if ($isInstanceOf(g, "Unit"))
3434 then 0
3535 else if ($isInstanceOf(g, "Int"))
3636 then {
3737 let l = g
3838 l
3939 }
4040 else throw("Match error")
4141 }
4242 let m = (f - d)
4343 if (((k * 100) > d))
4444 then throw((((("The security deposit must be more than " + i) + ". You set the size: ") + toString((d / 100))) + ".00"))
4545 else if ((0 > m))
4646 then throw("Not enough balance")
4747 else {
4848 let n = Issue(("bill for:" + toString((d / 100))), e, 1, 0, false)
4949 let o = calculateAssetId(n)
5050 $Tuple2([IntegerEntry(e, m), n, ScriptTransfer(c.caller, 1, o)], unit)
5151 }
5252 }
5353
5454
5555
5656 @Callable(c)
5757 func deposit () = if ((size(c.payments) == 0))
5858 then throw("Payment not attached")
5959 else {
6060 let p = value(c.payments)[0]
6161 let q = {
62- let g = getString(a, "admin_list")
62+ let g = getString(a, "min_bill_deposit")
6363 if ($isInstanceOf(g, "Unit"))
64- then "unset"
64+ then "0"
6565 else if ($isInstanceOf(g, "String"))
6666 then {
6767 let j = g
6868 j
6969 }
7070 else throw("Match error")
7171 }
72+ let r = {
73+ let g = parseInt(split(q, ".")[0])
74+ if ($isInstanceOf(g, "Unit"))
75+ then 0
76+ else if ($isInstanceOf(g, "Int"))
77+ then {
78+ let l = g
79+ l
80+ }
81+ else throw("Match error")
82+ }
7283 if ((p.assetId != b))
7384 then throw("holded payment not tUSD")
74- else if ((1000 > p.amount))
75- then throw("holded payment < 10.00")
85+ else if (((r * 100) > p.amount))
86+ then throw((((("You have set the deposit amount to " + toString((p.amount / 100))) + ".00, which is less than the minimum (") + q) + ")"))
7687 else {
7788 let e = toBase58String(c.caller.bytes)
7889 let f = {
7990 let g = getInteger(this, e)
8091 if ($isInstanceOf(g, "Int"))
8192 then {
8293 let h = g
8394 h
8495 }
8596 else 0
8697 }
8798 let m = (f + p.amount)
8899 [IntegerEntry(e, m)]
89100 }
90101 }
91102
92103
93104
94105 @Callable(c)
95-func withdraw (r) = {
106+func withdraw (s) = {
96107 let e = toBase58String(c.caller.bytes)
97108 let f = {
98109 let g = getInteger(this, e)
99110 if ($isInstanceOf(g, "Int"))
100111 then {
101112 let h = g
102113 h
103114 }
104115 else 0
105116 }
106- let m = (f - r)
107- if ((0 > r))
117+ let m = (f - s)
118+ if ((0 > s))
108119 then throw("Can't withdraw negative amount")
109120 else if ((0 > m))
110121 then throw("Not enough balance")
111- else $Tuple2([IntegerEntry(e, m), ScriptTransfer(c.caller, r, b)], unit)
122+ else $Tuple2([IntegerEntry(e, m), ScriptTransfer(c.caller, s, b)], unit)
112123 }
113124
114125
115126
116127 @Callable(c)
117-func setOptions (s,t) = {
118- let u = size(s)
119- if ((100 >= u))
128+func setOptions (t,u) = {
129+ let v = size(t)
130+ if ((100 >= v))
120131 then {
121- let q = {
132+ let w = {
122133 let g = getString(a, "admin_list")
123134 if ($isInstanceOf(g, "Unit"))
124135 then "unset"
125136 else if ($isInstanceOf(g, "String"))
126137 then {
127138 let j = g
128139 j
129140 }
130141 else throw("Match error")
131142 }
132- func v (w,x) = {
133- let y = w
134- let z = y._1
135- let A = y._2
136- $Tuple2((z :+ IntegerEntry(s[A], x)), (A + 1))
143+ func x (y,z) = {
144+ let A = y
145+ let B = A._1
146+ let C = A._2
147+ $Tuple2((B :+ IntegerEntry(t[C], z)), (C + 1))
137148 }
138149
139- let B = {
140- let C = t
141- let D = size(C)
142- let E = $Tuple2(nil, 0)
143- func F (G,H) = if ((H >= D))
144- then G
145- else v(G, C[H])
150+ let D = {
151+ let E = u
152+ let F = size(E)
153+ let G = $Tuple2(nil, 0)
154+ func H (I,J) = if ((J >= F))
155+ then I
156+ else x(I, E[J])
146157
147- func I (G,H) = if ((H >= D))
148- then G
158+ func K (I,J) = if ((J >= F))
159+ then I
149160 else throw("List size exceeds 100")
150161
151- I(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
162+ K(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(G, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
152163 }
153- let J = toString(c.caller)
154- if ((q != "unset"))
164+ let L = toString(c.caller)
165+ if ((w != "unset"))
155166 then {
156- let K = getString(addressFromStringValue(q), J)
157- let L = {
158- let g = K
167+ let M = getString(addressFromStringValue(w), L)
168+ let N = {
169+ let g = M
159170 if ($isInstanceOf(g, "String"))
160171 then {
161172 let j = g
162173 j
163174 }
164175 else if ($isInstanceOf(g, "Unit"))
165176 then "no admin"
166177 else throw("Match error")
167178 }
168- func M (N) = {
169- let O = split(N, "|")
170- StringEntry(O[0], O[1])
179+ func O (P) = {
180+ let Q = split(P, "|")
181+ StringEntry(Q[0], Q[1])
171182 }
172183
173- if ((L != "no admin"))
174- then B
175- else throw((((((("You not admin: " + q) + ", isAdmin: ") + L) + ", callerAddressStr: ") + J) + ", "))
184+ if ((N != "no admin"))
185+ then D
186+ else throw((((((("You not admin: " + w) + ", isAdmin: ") + N) + ", callerAddressStr: ") + L) + ", "))
176187 }
177188 else throw("Unset admin list")
178189 }
179190 else throw("The number of list elements must not exceed 100")
180191 }
181192
182193
183194
184195 @Callable(c)
185-func setOption (P,Q) = {
186- let q = {
196+func setOption (R,S) = {
197+ let w = {
187198 let g = getString(a, "admin_list")
188199 if ($isInstanceOf(g, "Unit"))
189200 then "unset"
190201 else if ($isInstanceOf(g, "String"))
191202 then {
192203 let j = g
193204 j
194205 }
195206 else throw("Match error")
196207 }
197- let J = toString(c.caller)
198- if ((q != "unset"))
208+ let L = toString(c.caller)
209+ if ((w != "unset"))
199210 then {
200- let K = getString(addressFromStringValue(q), J)
201- let L = {
202- let g = K
211+ let M = getString(addressFromStringValue(w), L)
212+ let N = {
213+ let g = M
203214 if ($isInstanceOf(g, "String"))
204215 then {
205216 let j = g
206217 j
207218 }
208219 else if ($isInstanceOf(g, "Unit"))
209220 then "no admin"
210221 else throw("Match error")
211222 }
212- if ((L != "no admin"))
213- then $Tuple2([IntegerEntry(P, Q)], unit)
214- else throw((((((("You not admin: " + q) + ", isAdmin: ") + L) + ", callerAddressStr: ") + J) + ", "))
223+ if ((N != "no admin"))
224+ then $Tuple2([IntegerEntry(R, S)], unit)
225+ else throw((((((("You not admin: " + w) + ", isAdmin: ") + N) + ", callerAddressStr: ") + L) + ", "))
215226 }
216227 else throw("Unset admin list")
217228 }
218229
219230
220231
221232 @Callable(c)
222-func delOption (P) = {
223- let q = {
233+func delOption (R) = {
234+ let w = {
224235 let g = getString(a, "admin_list")
225236 if ($isInstanceOf(g, "Unit"))
226237 then "unset"
227238 else if ($isInstanceOf(g, "String"))
228239 then {
229240 let j = g
230241 j
231242 }
232243 else throw("Match error")
233244 }
234- let J = toString(c.caller)
235- if ((q != "unset"))
245+ let L = toString(c.caller)
246+ if ((w != "unset"))
236247 then {
237- let K = getString(addressFromStringValue(q), J)
238- let L = {
239- let g = K
248+ let M = getString(addressFromStringValue(w), L)
249+ let N = {
250+ let g = M
240251 if ($isInstanceOf(g, "String"))
241252 then {
242253 let j = g
243254 j
244255 }
245256 else if ($isInstanceOf(g, "Unit"))
246257 then "no admin"
247258 else throw("Match error")
248259 }
249- if ((L != "no admin"))
250- then $Tuple2([DeleteEntry(P)], unit)
251- else throw((((((("You not admin: " + q) + ", isAdmin: ") + L) + ", callerAddressStr: ") + J) + ", "))
260+ if ((N != "no admin"))
261+ then $Tuple2([DeleteEntry(R)], unit)
262+ else throw((((((("You not admin: " + w) + ", isAdmin: ") + N) + ", callerAddressStr: ") + L) + ", "))
252263 }
253264 else throw("Unset admin list")
254265 }
255266
256267
257-@Verifier(R)
258-func S () = sigVerify(R.bodyBytes, R.proofs[0], R.senderPublicKey)
268+@Verifier(T)
269+func U () = sigVerify(T.bodyBytes, T.proofs[0], T.senderPublicKey)
259270

github/deemru/w8io/873ac7e 
194.00 ms