tx · 3sR1NakUHVxvoNCNmqqU2h8sx78j4V9T15kZpV9j4q8J

3PJnGkuMm4LkJQVCT7QCRyzApQiEQ2UWcdx:  -0.03300000 Waves

2022.07.04 20:54 [3190849] smart account 3PJnGkuMm4LkJQVCT7QCRyzApQiEQ2UWcdx > SELF 0.00000000 Waves

{ "type": 13, "id": "3sR1NakUHVxvoNCNmqqU2h8sx78j4V9T15kZpV9j4q8J", "fee": 3300000, "feeAssetId": null, "timestamp": 1656957294931, "version": 2, "chainId": 87, "sender": "3PJnGkuMm4LkJQVCT7QCRyzApQiEQ2UWcdx", "senderPublicKey": "HFbxpbfQDPgt5JitQBtzQnxbTxiAFBQeLKuWvsbMo8Wp", "proofs": [ "4BhU7Who4roSLZBzBgcdFw7dLqf5UcbtE8miYqvNKh9QFtY7CACLcUPWty2btVTmZT1Rsc17bW4ns5v4uP9BBemg" ], "script": "base64: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OAkAATYAAAABCQAAZAAAAAIFAAAACUJhbGFuY2VJbgUAAAAIQW1vdW50SW4FAAAABkhBTEZVUAAAAAAAAAAAEAkAATYAAAABCQAAawAAAAMJAAGRAAAAAgUAAAANQXNzZXRzV2VpZ2h0cwUAAAAHSW5kZXhJbgAAAAAAAAAnEAkAAZEAAAACBQAAAA1Bc3NldHNXZWlnaHRzBQAAAAhJbmRleE91dAAAAAAAAAAABAAAAAAAAAAAEAUAAAAHQ0VJTElORwkAAGgAAAACBQAAAAZTY2FsZTgFAAAABlNjYWxlOAUAAAAERE9XTgEAAAAPZ2V0VG9rZW5CYWxhbmNlAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAF0BQAAAAckbWF0Y2gwCQAD8AAAAAIFAAAABHRoaXMFAAAAAXQICQAD7wAAAAEFAAAABHRoaXMAAAAJYXZhaWxhYmxlAQAAAB1jYWxjdWxhdGVDdXJyZW50QXNzZXRJbnRlcmVzdAAAAAQAAAAHYXNzZXRJZAAAAAphc3NldElkU3RyAAAACGFCYWxhbmNlAAAAFnRva2VuRWFybmluZ3NMYXN0Q2hlY2sEAAAAC3RvdGFsU3Rha2VkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEmdsb2JhbF9pbmRleFN0YWtlZAQAAAAVdG9rZW5CYWxhbmNlTGFzdENoZWNrBQAAABZ0b2tlbkVhcm5pbmdzTGFzdENoZWNrBAAAABNjdXJyZW50QmFsYW5jZURlbHRhCQAAZQAAAAIJAQAAAA9nZXRUb2tlbkJhbGFuY2UAAAABBQAAAAdhc3NldElkBQAAAAhhQmFsYW5jZQQAAAAUY3VycmVudFRva2VuRWFybmluZ3MDCQAAZgAAAAIFAAAAE2N1cnJlbnRCYWxhbmNlRGVsdGEFAAAAFXRva2VuQmFsYW5jZUxhc3RDaGVjawUAAAATY3VycmVudEJhbGFuY2VEZWx0YQUAAAAVdG9rZW5CYWxhbmNlTGFzdENoZWNrBAAAAAtuZXdFYXJuaW5ncwkAAGUAAAACBQAAABRjdXJyZW50VG9rZW5FYXJuaW5ncwUAAAAVdG9rZW5CYWxhbmNlTGFzdENoZWNrBAAAAAtuZXdJbnRlcmVzdAMJAAAAAAAAAgUAAAALdG90YWxTdGFrZWQAAAAAAAAAAAAAAAAAAAAAAAAJAABrAAAAAwUAAAALbmV3RWFybmluZ3MFAAAABlNjYWxlOAUAAAALdG90YWxTdGFrZWQEAAAAEWxhc3RDaGVja0ludGVyZXN0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABFnbG9iYWxfbGFzdENoZWNrXwUAAAAKYXNzZXRJZFN0cgIAAAAJX2ludGVyZXN0CQAAZAAAAAIFAAAAEWxhc3RDaGVja0ludGVyZXN0BQAAAAtuZXdJbnRlcmVzdAEAAAALY2xhaW1SZXN1bHQAAAABAAAAB2FkZHJlc3MEAAAACmFkZHJlc3NTdHIJAAQlAAAAAQUAAAAHYWRkcmVzcwQAAAAMcHV6emxlQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgUAAAAKYWRkcmVzc1N0cgIAAAAMX2luZGV4U3Rha2VkCgEAAAAHaGFuZGxlcgAAAAIAAAAFYWNjdW0AAAAHYXNzZXRJZAQAAAAKYXNzZXRJZFN0cgkBAAAADmdldEFzc2V0U3RyaW5nAAAAAQUAAAAHYXNzZXRJZAQAAAAIYUJhbGFuY2UJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAAB2dsb2JhbF8JAQAAAA5nZXRBc3NldFN0cmluZwAAAAEFAAAAB2Fzc2V0SWQCAAAACF9iYWxhbmNlBAAAABZ0b2tlbkVhcm5pbmdzTGFzdENoZWNrCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABFnbG9iYWxfbGFzdENoZWNrXwUAAAAKYXNzZXRJZFN0cgIAAAAJX2Vhcm5pbmdzBAAAABRjdXJyZW50VG9rZW5JbnRlcmVzdAkBAAAAHWNhbGN1bGF0ZUN1cnJlbnRBc3NldEludGVyZXN0AAAABAUAAAAHYXNzZXRJZAUAAAAKYXNzZXRJZFN0cgUAAAAIYUJhbGFuY2UFAAAAFnRva2VuRWFybmluZ3NMYXN0Q2hlY2sEAAAAFGN1cnJlbnRUb2tlbkVhcm5pbmdzCQAB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FnN0YXRpY19wb29sVG9rZW5faWRTdHIJAQAAAA5nZXRBc3NldFN0cmluZwAAAAEFAAAAC3Bvb2xUb2tlbklkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAARaW5pdGlhbFBvb2xUb2tlbnMFAAAAC3Bvb2xUb2tlbklkBQAAAANuaWwAAAABaQEAAAANZ2VuZXJhdGVJbmRleAAAAAEAAAAKbmVlZENoYW5nZQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMFAAAAAVQJAAACAAAAAQkAASwAAAACAgAAADt5b3UgbmVlZCB0byBhdHRhY2ggYWxsIHBvb2wgdG9rZW5zLiBhbW91bnQgb2YgcG9vbCB0b2tlbnM6IAkAAaQAAAABBQAAAAFUAwkBAAAAASEAAAABCQEAAAATY2hlY2tUb2tlbnNWYWxpZGl0eQAAAAEIBQAAAAFpAAAACHBheW1lbnRzCQAAAgAAAAECAAAAFXdyb25nIGFzc2V0cyBhdHRhY2hlZAQAAAAHUElzc3VlZAkBAAAADWdldE1pblBJc3N1ZWQAAAABCAUAAAABaQAAAAhwYXltZW50cwQAAAAHcmVpc3N1ZQkBAAAAB1JlaXNzdWUAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA1NykAAAABAgAAABNnbG9iYWxfcG9vbFRva2VuX2lkBQAAAAdQSXNzdWVkBgQAAAAGcmVzdWx0CQEAAAATaGFuZGxlUG9vbFRva2Vuc0FkZAAAAAQFAAAAB1BJc3N1ZWQIBQAAAAFpAAAACHBheW1lbnRzCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIFAAAACm5lZWRDaGFuZ2UJAAUUAAAAAgkABE4AAAACBQAAAAZyZXN1bHQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAdQSXNzdWVkCQEAAAAMdHJ5R2V0QmluYXJ5AAAAAQIAAAATZ2xvYmFsX3Bvb2xUb2tlbl9pZAkABEwAAAACBQAAAAdyZWlzc3VlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50BQAAAAdQSXNzdWVkBQAAAANuaWwFAAAAB1BJc3N1ZWQAAAABaQEAAAAKc3Rha2VJbmRleAAAAAAEAAAACmFkZHJlc3NTdHIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBAAAAANwbXQJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAADCQEAAAACIT0AAAACCQEAAAAFdmFsdWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAQAAAAx0cnlHZXRCaW5hcnkAAAABAgAAABNnbG9iYWxfcG9vbFRva2VuX2lkCQAAAgAAAAECAAAAFHdyb25nIGFzc2V0IGF0dGFjaGVkCQEAAAAQaW5kZXhTdGFrZVJlc3VsdAAAAAIFAAAACmFkZHJlc3NTdHIIBQAAAANwbXQAAAAGYW1vdW50AAAAAWkBAAAADHVuc3Rha2VJbmRleAAAAAEAAAAMcHV6emxlQW1vdW50BAAAAAphZGRyZXNzU3RyCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgQAAAAPcHV6emxlQXZhaWxhYmxlCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgUAAAAKYWRkcmVzc1N0cgIAAAAMX2luZGV4U3Rha2VkAwkAAGYAAAACBQAAAAxwdXp6bGVBbW91bnQFAAAAD3B1enpsZUF2YWlsYWJsZQkAAAIAAAABAgAAACV5b3UgZG9uJ3QgaGF2ZSBpbmRleCB0b2tlbnMgYXZhaWxhYmxlCQAETgAAAAIJAQAAAAtjbGFpbVJlc3VsdAAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAphZGRyZXNzU3RyAgAAAAxfaW5kZXhTdGFrZWQJAABlAAAAAgUAAAAPcHV6emxlQXZhaWxhYmxlBQAAAAxwdXp6bGVBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEmdsb2JhbF9pbmRleFN0YWtlZAkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEmdsb2JhbF9pbmRleFN0YWtlZAUAAAAMcHV6emxlQW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMcHV6emxlQW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1NykAAAABAgAAABNnbG9iYWxfcG9vbFRva2VuX2lkBQAAAANuaWwAAAABaQEAAAARY2xhaW1JbmRleFJld2FyZHMAAAAACQEAAAALY2xhaW1SZXN1bHQAAAABCAUAAAABaQAAAAZjYWxsZXIAAAABaQEAAAALcmVkZWVtSW5kZXgAAAABAAAADHNlbmRUb09yaWdpbgQAAAADcG10CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAdhc3NldElkCQEAAAAMdHJ5R2V0QmluYXJ5AAAAAQIAAAATZ2xvYmFsX3Bvb2xUb2tlbl9pZAkAAAIAAAABAgAAAB5wbGVhc2UgYXR0YWNoIHBvb2wgc2hhcmUgdG9rZW4EAAAACVBSZWRlZW1lZAgFAAAAA3BtdAAAAAZhbW91bnQEAAAABnJlc3VsdAkBAAAAFmhhbmRsZVBvb2xUb2tlbnNSZWRlZW0AAAACBQAAAAlQUmVkZWVtZWQDBQAAAAxzZW5kVG9PcmlnaW4IBQAAAAFpAAAADG9yaWdpbkNhbGxlcggFAAAAAWkAAAAGY2FsbGVyCQAETgAAAAIFAAAABnJlc3VsdAkABEwAAAACCQEAAAAEQnVybgAAAAIJAQAAAAx0cnlHZXRCaW5hcnkAAAABAgAAABNnbG9iYWxfcG9vbFRva2VuX2lkBQAAAAlQUmVkZWVtZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50CQAAZQAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQFAAAACVBSZWRlZW1lZAUAAAADbmlsAAAAAWkBAAAABHN3YXAAAAACAAAACGFzc2V0T3V0AAAAB21pbmltdW0EAAAAA3BtdAkBAAAABXZhbHVl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X3ZvbHVtZQkBAAAAEmNhbGN1bGF0ZVVzZG5WYWx1ZQAAAAMFAAAAB0Fzc2V0SW4FAAAACEFtb3VudEluBQAAAA5Bc3NldEluQmFsYW5jZQUAAAADbmlsBQAAAA5jbGVhbkFtb3VudE91dAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAAAAC3VzZG5CYWxhbmNlAwkAAAAAAAACBQAAAAdBc3NldEluBQAAAAt1c2RuQXNzZXRJZAUAAAAMbmV3QmFsYW5jZUluCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAdnbG9iYWxfCQEAAAAOZ2V0QXNzZXRTdHJpbmcAAAABBQAAAAt1c2RuQXNzZXRJZAIAAAAIX2JhbGFuY2UEAAAADXVzZG5GZWVBbW91bnQJAQAAABJjYWxjdWxhdGVPdXRBbW91bnQAAAAFBQAAAAlmZWVBbW91bnQFAAAACEFzc2V0T3V0BQAAAAt1c2RuQXNzZXRJZAUAAAANbmV3QmFsYW5jZU91dAUAAAALdXNkbkJhbGFuY2UEAAAAD3Byb3RvY29sVXNkbkZlZQkAAGsAAAADBQAAAA11c2RuRmVlQW1vdW50AAAAAAAAAAAEAAAAAAAAAAAKBAAAAAxzdGFraW5nVG9wVXAJAAP9AAAABAkBAAAAB0FkZHJlc3MAAAABAQAAABoBV5RojPnuormqn9b1jrypj2canAb0FimJuwIAAAALdG9wVXBSZXdhcmQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAALdXNkbkFzc2V0SWQFAAAAD3Byb3RvY29sVXNkbkZlZQUAAAADbmlsAwkAAAAAAAACBQAAAAxzdGFraW5nVG9wVXAFAAAADHN0YWtpbmdUb3BVcAQAAAAWdXNkbkJhbGFuY2VDaGFuZ2VFbnRyeQkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAdnbG9iYWxfCQACWAAAAAEFAAAAC3VzZG5Bc3NldElkAgAAAAhfYmFsYW5jZQkAAGUAAAACBQAAAAt1c2RuQmFsYW5jZQUAAAANdXNkbkZlZUFtb3VudAQAAAAOYmFsYW5jZUNoYW5nZXMDCQAAAAAAAAIFAAAAB0Fzc2V0SW4FAAAAC3VzZG5Bc3NldElkCQAETAAAAAIFAAAAFnVzZG5CYWxhbmNlQ2hhbmdlRW50cnkFAAAAA25pbAkABEwAAAACBQAAABZ1c2RuQmFsYW5jZUNoYW5nZUVudHJ5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAHZ2xvYmFsXwkBAAAADmdldEFzc2V0U3RyaW5nAAAAAQUAAAAHQXNzZXRJbgIAAAAIX2JhbGFuY2UFAAAADG5ld0JhbGFuY2VJbgUAAAADbmlsCQAFFAAAAAIJAAROAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAAB2dsb2JhbF8FAAAACGFzc2V0T3V0AgAAAAhfYmFsYW5jZQkAAGQAAAACBQAAAA1uZXdCYWxhbmNlT3V0BQAAAAlmZWVBbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA5jbGVhbkFtb3VudE91dAUAAAAIQXNzZXRPdXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADWdsb2JhbF92b2x1bWUJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAA1nbG9iYWxfdm9sdW1lCQEAAAASY2FsY3VsYXRlVXNkblZhbHVlAAAAAwUAAAAHQXNzZXRJbgUAAAAIQW1vdW50SW4FAAAADkFzc2V0SW5CYWxhbmNlBQAAAANuaWwFAAAADmJhbGFuY2VDaGFuZ2VzBQAAAA5jbGVhbkFtb3VudE91dAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAIY2FsY1N3YXAAAAADAAAACWFzc2V0MFN0cgAAAAlhc3NldDFTdHIAAAAGYW1vdW50CQAFFAAAAAIFAAAAA25pbAkBAAAAEmNhbGN1bGF0ZU91dEFtb3VudAAAAAUFAAAABmFtb3VudAkAAlkAAAABBQAAAAlhc3NldDBTdHIJAAJZAAAAAQUAAAAJYXNzZXQxU3RyCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAdnbG9iYWxfBQAAAAlhc3NldDBTdHICAAAACF9iYWxhbmNlCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAdnbG9iYWxfBQAAAAlhc3NldDFTdHICAAAACF9iYWxhbmNlAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAMJAQAAAAppc1NodXRkb3duAAAAAAcJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5Ele57A==", "height": 3190849, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Edk3E6UW5dMtyACAh2KamqZCnuwsrmHVYTXgkf6QQ2yG Next: 6k2RtktJdLiVV45yQv4Dm1xzdCsA2ifbeXdLWnFJTm4G Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
5-
6-let b = base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS'
7-
8-let c = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
9-
10-let d = "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS"
11-
12-let e = Address(base58'3PFDgzu1UtswAkCMxqqQjbTeHaX4cMab8Kh')
13-
14-let f = Address(base58'3PLjwHcz9NEuaTo63NZR9B9okQiKQxZSbmf')
15-
16-let g = base58'4z8CKSYQBKkzx7PBb5uBP1YPa6YAHRNTApW1sQVHT5eU'
17-
18-func h (i) = {
19- let j = getInteger(this, i)
20- if ($isInstanceOf(j, "Int"))
4+func a (b) = {
5+ let c = getInteger(this, b)
6+ if ($isInstanceOf(c, "Int"))
217 then {
22- let k = j
23- k
8+ let d = c
9+ d
2410 }
2511 else 0
2612 }
2713
2814
29-func l (i) = {
30- let j = getBinary(this, i)
31- if ($isInstanceOf(j, "ByteVector"))
15+func e (b) = {
16+ let c = getBinary(this, b)
17+ if ($isInstanceOf(c, "ByteVector"))
3218 then {
33- let k = j
34- k
19+ let d = c
20+ d
3521 }
3622 else base58''
3723 }
3824
3925
40-func m (i) = {
41- let j = getString(this, i)
42- if ($isInstanceOf(j, "String"))
26+func f (b) = {
27+ let c = getString(this, b)
28+ if ($isInstanceOf(c, "String"))
4329 then {
44- let k = j
45- k
30+ let d = c
31+ d
4632 }
4733 else ""
4834 }
4935
5036
51-func n (o) = {
52- let j = o
53- if ($isInstanceOf(j, "ByteVector"))
37+func g (h) = {
38+ let c = h
39+ if ($isInstanceOf(c, "ByteVector"))
5440 then {
55- let k = j
56- toBase58String(k)
41+ let d = c
42+ toBase58String(d)
5743 }
5844 else "WAVES"
5945 }
6046
6147
62-func p (q) = if ((q == "WAVES"))
48+func i (j) = if ((j == "WAVES"))
6349 then unit
64- else fromBase58String(q)
50+ else fromBase58String(j)
6551
6652
67-func r (s,t) = (s ++ [p(t)])
53+func k (l,m) = (l ++ [i(m)])
6854
6955
70-func u (s,t) = (s ++ [h((("static_" + n(t)) + "_weight"))])
56+func n (l,m) = (l ++ [a((("static_" + g(m)) + "_weight"))])
7157
7258
73-func v (s,t) = (s ++ [h((("static_" + n(t)) + "_decimals"))])
59+func o (l,m) = (l ++ [a((("static_" + g(m)) + "_decimals"))])
7460
7561
76-func w (s,t) = (s ++ [h((("static_" + n(t)) + "_scale"))])
62+func p (l,m) = (l ++ [a((("static_" + g(m)) + "_scale"))])
7763
7864
79-func x (s,t) = (s ++ [parseIntValue(t)])
65+func q (l,m) = (l ++ [parseIntValue(m)])
8066
8167
82-let y = h("static_tokensAmount")
68+let r = a("static_tokensAmount")
8369
84-let z = {
85- let A = split(m("static_tokenIds"), ",")
86- let B = size(A)
87- let C = nil
88- func D (E,F) = if ((F >= B))
89- then E
90- else r(E, A[F])
70+let s = {
71+ let t = split(f("static_tokenIds"), ",")
72+ let u = size(t)
73+ let v = nil
74+ func w (x,y) = if ((y >= u))
75+ then x
76+ else k(x, t[y])
9177
92- func G (E,F) = if ((F >= B))
93- then E
78+ func z (x,y) = if ((y >= u))
79+ then x
9480 else throw("List size exceeds 10")
9581
96- G(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
82+ z(w(w(w(w(w(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
9783 }
9884
99-let H = {
100- let A = z
101- let B = size(A)
102- let C = nil
103- func I (E,F) = if ((F >= B))
104- then E
105- else u(E, A[F])
85+let A = {
86+ let t = s
87+ let u = size(t)
88+ let v = nil
89+ func B (x,y) = if ((y >= u))
90+ then x
91+ else n(x, t[y])
10692
107- func J (E,F) = if ((F >= B))
108- then E
93+ func C (x,y) = if ((y >= u))
94+ then x
10995 else throw("List size exceeds 10")
11096
111- J(I(I(I(I(I(I(I(I(I(I(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
97+ C(B(B(B(B(B(B(B(B(B(B(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11298 }
11399
114-let K = {
115- let A = z
116- let B = size(A)
117- let C = nil
118- func L (E,F) = if ((F >= B))
119- then E
120- else v(E, A[F])
100+let D = {
101+ let t = s
102+ let u = size(t)
103+ let v = nil
104+ func E (x,y) = if ((y >= u))
105+ then x
106+ else o(x, t[y])
121107
122- func M (E,F) = if ((F >= B))
123- then E
108+ func F (x,y) = if ((y >= u))
109+ then x
124110 else throw("List size exceeds 10")
125111
126- M(L(L(L(L(L(L(L(L(L(L(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
112+ F(E(E(E(E(E(E(E(E(E(E(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
127113 }
128114
129-let N = {
130- let A = z
131- let B = size(A)
132- let C = nil
133- func O (E,F) = if ((F >= B))
134- then E
135- else w(E, A[F])
115+let G = {
116+ let t = s
117+ let u = size(t)
118+ let v = nil
119+ func H (x,y) = if ((y >= u))
120+ then x
121+ else p(x, t[y])
136122
137- func P (E,F) = if ((F >= B))
138- then E
123+ func I (x,y) = if ((y >= u))
124+ then x
139125 else throw("List size exceeds 10")
140126
141- P(O(O(O(O(O(O(O(O(O(O(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
127+ I(H(H(H(H(H(H(H(H(H(H(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
142128 }
143129
144-let Q = h("static_fee")
130+let J = a("static_fee")
145131
146-let R = 4
132+let K = 2
147133
148-let S = 10000
134+let L = 10000
149135
150-let T = 100000000
136+let M = 100000000
151137
152-let U = 10000
138+let N = 10000
153139
154-let V = 8
140+let O = 8
155141
156-let W = pow(10, 0, V, 0, 0, HALFUP)
142+let P = pow(10, 0, O, 0, 0, HALFUP)
157143
158-let X = z
144+let Q = s
159145
160-func Y () = {
161- let j = getBoolean(Address(base58'3PEpv9hRFWEEBU22WRnLsw1bH4YGtcU728o'), "is_shutdown")
162- if ($isInstanceOf(j, "Boolean"))
146+func R () = {
147+ let c = getBoolean(Address(base58'3PEpv9hRFWEEBU22WRnLsw1bH4YGtcU728o'), "is_shutdown")
148+ if ($isInstanceOf(c, "Boolean"))
163149 then {
164- let Z = j
165- Z
150+ let S = c
151+ S
166152 }
167153 else false
168154 }
169155
170156
171-func aa (ab) = {
172- let ac = n(z[ab])
173- h((("global_" + ac) + "_balance"))
157+func T (U) = {
158+ let V = g(s[U])
159+ a((("global_" + V) + "_balance"))
174160 }
175161
176162
177-func ad (ae,ac) = {
178- let af = h("global_poolToken_amount")
179- let ag = h((("global_" + n(ac)) + "_balance"))
180- fraction(ae, af, ag, DOWN)
163+func W (X,V) = {
164+ let Y = a("global_poolToken_amount")
165+ let Z = a((("global_" + g(V)) + "_balance"))
166+ fraction(X, Y, Z, DOWN)
181167 }
182168
183169
184-func ah (ai) = {
185- func aj (s,ak) = {
186- let al = ad(ak.amount, ak.assetId)
187- if ((al == 0))
170+func aa (ab) = {
171+ func ac (l,ad) = {
172+ let ae = W(ad.amount, ad.assetId)
173+ if ((ae == 0))
188174 then throw("one of the tokens amounts is too low")
189- else if (if ((s == 0))
175+ else if (if ((l == 0))
190176 then true
191- else (s > al))
192- then al
193- else s
177+ else (l > ae))
178+ then ae
179+ else l
194180 }
195181
196- let am = {
197- let A = ai
198- let B = size(A)
199- let C = 0
200- func an (E,F) = if ((F >= B))
201- then E
202- else aj(E, A[F])
182+ let af = {
183+ let t = ab
184+ let u = size(t)
185+ let v = 0
186+ func ag (x,y) = if ((y >= u))
187+ then x
188+ else ac(x, t[y])
203189
204- func ao (E,F) = if ((F >= B))
205- then E
190+ func ah (x,y) = if ((y >= u))
191+ then x
206192 else throw("List size exceeds 10")
207193
208- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
194+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
209195 }
210- am
196+ af
211197 }
212198
213199
214-func ap (o,ae,aq,ar) = {
215- let as = indexOf(z, a)
216- let at = H[value(indexOf(z, o))]
217- if ((as == unit))
218- then {
219- let au = H[value(indexOf(z, b))]
220- let av = h((("global_" + d) + "_balance"))
221- let aw = fraction(ae, (av / au), (aq / at))
222- let ax = getIntegerValue(e, "global_lastPuzzlePrice")
223- fraction((aw * ax), 1, T)
224- }
225- else {
226- let ay = H[value(indexOf(z, a))]
227- let az = {
228- let j = ar
229- if ($isInstanceOf(j, "Int"))
230- then {
231- let Z = j
232- ar
233- }
234- else h((("global_" + n(a)) + "_balance"))
235- }
236- fraction(ae, (value(az) / ay), (aq / at))
237- }
200+func ai (h,X,aj) = {
201+ let ak = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
202+ let al = A[value(indexOf(s, ak))]
203+ let am = A[value(indexOf(s, h))]
204+ let an = a((("global_" + g(ak)) + "_balance"))
205+ fraction(X, (an / al), (aj / am))
238206 }
239207
240208
241-func aA (ai) = {
242- func aB (s,aC) = (s ++ [aC.assetId])
209+func ao (ab) = {
210+ func ap (l,aq) = (l ++ [aq.assetId])
243211
244- let aD = {
245- let A = ai
246- let B = size(A)
247- let C = nil
248- func an (E,F) = if ((F >= B))
249- then E
250- else aB(E, A[F])
212+ let ar = {
213+ let t = ab
214+ let u = size(t)
215+ let v = nil
216+ func ag (x,y) = if ((y >= u))
217+ then x
218+ else ap(x, t[y])
251219
252- func ao (E,F) = if ((F >= B))
253- then E
220+ func ah (x,y) = if ((y >= u))
221+ then x
254222 else throw("List size exceeds 10")
255223
256- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
224+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
257225 }
258- if ((aD == aD))
226+ if ((ar == ar))
259227 then {
260- func aE (s,o) = if ((indexOf(aD, o) != unit))
261- then (s + 1)
262- else throw(("asset not attached: " + n(o)))
228+ func as (l,h) = if ((indexOf(ar, h) != unit))
229+ then (l + 1)
230+ else throw(("asset not attached: " + g(h)))
263231
264- let aF = {
265- let A = z
266- let B = size(A)
267- let C = 0
268- func aG (E,F) = if ((F >= B))
269- then E
270- else aE(E, A[F])
232+ let at = {
233+ let t = s
234+ let u = size(t)
235+ let v = 0
236+ func au (x,y) = if ((y >= u))
237+ then x
238+ else as(x, t[y])
271239
272- func aH (E,F) = if ((F >= B))
273- then E
240+ func av (x,y) = if ((y >= u))
241+ then x
274242 else throw("List size exceeds 10")
275243
276- aH(aG(aG(aG(aG(aG(aG(aG(aG(aG(aG(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
244+ av(au(au(au(au(au(au(au(au(au(au(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
277245 }
278- if ((aF == aF))
246+ if ((at == at))
279247 then true
280248 else throw("Strict value is not equal to itself.")
281249 }
283251 }
284252
285253
286-func aI (al,ai,aJ,aK) = {
287- func aL (ac) = {
288- func aj (s,aC) = if ((aC.assetId == ac))
289- then aC.amount
290- else s
254+func aw (ae,ab,ax,ay) = {
255+ func az (V) = {
256+ func ac (l,aq) = if ((aq.assetId == V))
257+ then aq.amount
258+ else l
291259
292- let A = ai
293- let B = size(A)
294- let C = 0
295- func an (E,F) = if ((F >= B))
296- then E
297- else aj(E, A[F])
260+ let t = ab
261+ let u = size(t)
262+ let v = 0
263+ func ag (x,y) = if ((y >= u))
264+ then x
265+ else ac(x, t[y])
298266
299- func ao (E,F) = if ((F >= B))
300- then E
267+ func ah (x,y) = if ((y >= u))
268+ then x
301269 else throw("List size exceeds 10")
302270
303- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
271+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
304272 }
305273
306- func aM (s,ac) = {
307- let aN = h((("global_" + n(ac)) + "_balance"))
308- let aO = h("global_poolToken_amount")
309- let aP = h((("static_" + n(ac)) + "_scale"))
310- let aQ = fraction((fraction((aO + al), aP, aO, CEILING) - aP), aN, aP, CEILING)
311- let aR = aL(ac)
312- let aS = ((if ((aR != 0))
313- then aR
314- else 0) - aQ)
315- let aT = if (if (aK)
316- then (aS > 0)
274+ func aA (l,V) = {
275+ let aB = a((("global_" + g(V)) + "_balance"))
276+ let aC = a("global_poolToken_amount")
277+ let aD = a((("static_" + g(V)) + "_scale"))
278+ let aE = fraction((fraction((aC + ae), aD, aC, CEILING) - aD), aB, aD, CEILING)
279+ let aF = az(V)
280+ let aG = ((if ((aF != 0))
281+ then aF
282+ else 0) - aE)
283+ let aH = if (if (ay)
284+ then (aG > 0)
317285 else false)
318- then [ScriptTransfer(aJ, aS, ac)]
286+ then [ScriptTransfer(ax, aG, V)]
319287 else nil
320- ((s ++ aT) ++ [IntegerEntry((("global_" + n(ac)) + "_balance"), (aN + aQ))])
288+ ((l ++ aH) ++ [IntegerEntry((("global_" + g(V)) + "_balance"), (aB + aE))])
321289 }
322290
323- let A = z
324- let B = size(A)
325- let C = nil
326- func an (E,F) = if ((F >= B))
327- then E
328- else aM(E, A[F])
291+ let t = s
292+ let u = size(t)
293+ let v = nil
294+ func ag (x,y) = if ((y >= u))
295+ then x
296+ else aA(x, t[y])
329297
330- func ao (E,F) = if ((F >= B))
331- then E
298+ func ah (x,y) = if ((y >= u))
299+ then x
332300 else throw("List size exceeds 10")
333301
334- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
302+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
335303 }
336304
337305
338-func aU (aV,aJ) = {
339- func aW (s,ac) = {
340- let aN = h((("global_" + n(ac)) + "_balance"))
341- let aO = h("global_poolToken_amount")
342- let aP = h((("static_" + n(ac)) + "_scale"))
343- let ae = toInt(fraction((toBigInt(T) - fraction(toBigInt((aO - aV)), toBigInt(T), toBigInt(aO), CEILING)), toBigInt(aN), toBigInt(T), DOWN))
344- (s ++ [IntegerEntry((("global_" + n(ac)) + "_balance"), (aN - ae)), ScriptTransfer(aJ, ae, ac)])
306+func aI (aJ,ax) = {
307+ func aK (l,V) = {
308+ let aB = a((("global_" + g(V)) + "_balance"))
309+ let aC = a("global_poolToken_amount")
310+ let aD = a((("static_" + g(V)) + "_scale"))
311+ let X = toInt(fraction((toBigInt(M) - fraction(toBigInt((aC - aJ)), toBigInt(M), toBigInt(aC), CEILING)), toBigInt(aB), toBigInt(M), DOWN))
312+ (l ++ [IntegerEntry((("global_" + g(V)) + "_balance"), (aB - X)), ScriptTransfer(ax, X, V)])
345313 }
346314
347- let A = z
348- let B = size(A)
349- let C = nil
350- func an (E,F) = if ((F >= B))
351- then E
352- else aW(E, A[F])
315+ let t = s
316+ let u = size(t)
317+ let v = nil
318+ func ag (x,y) = if ((y >= u))
319+ then x
320+ else aK(x, t[y])
353321
354- func ao (E,F) = if ((F >= B))
355- then E
322+ func ah (x,y) = if ((y >= u))
323+ then x
356324 else throw("List size exceeds 10")
357325
358- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
326+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
359327 }
360328
361329
362-func aX (aY,aZ,ba,bb,bc) = {
363- let bd = value(indexOf(z, aZ))
364- let be = value(indexOf(z, ba))
365- if ((bd == be))
366- then aY
367- else fraction(bc, ((T * T) - toInt(pow(fraction(toBigInt(bb), toBigInt((T * T)), toBigInt((bb + aY)), HALFUP), 16, toBigInt(fraction(H[bd], 10000, H[be])), 4, 16, CEILING))), (T * T), DOWN)
330+func aL (aM,aN,aO,aP,aQ) = {
331+ let aR = value(indexOf(s, aN))
332+ let aS = value(indexOf(s, aO))
333+ if ((aR == aS))
334+ then throw("wrong tokens pair")
335+ else fraction(aQ, ((M * M) - toInt(pow(fraction(toBigInt(aP), toBigInt((M * M)), toBigInt((aP + aM)), HALFUP), 16, toBigInt(fraction(A[aR], 10000, A[aS])), 4, 16, CEILING))), (M * M), DOWN)
368336 }
369337
370338
371-func bf (o) = {
372- let j = o
373- if ($isInstanceOf(j, "ByteVector"))
339+func aT (h) = {
340+ let c = h
341+ if ($isInstanceOf(c, "ByteVector"))
374342 then {
375- let aT = j
376- assetBalance(this, aT)
343+ let aH = c
344+ assetBalance(this, aH)
377345 }
378346 else wavesBalance(this).available
379347 }
380348
381349
382-func bg (o,q,aq,bh) = {
383- let bi = h("global_indexStaked")
384- let bj = bh
385- let bk = (bf(o) - aq)
386- let bl = if ((bk > bj))
387- then bk
388- else bj
389- let bm = (bl - bj)
390- let bn = if ((bi == 0))
350+func aU (h,j,aj,aV) = {
351+ let aW = a("global_indexStaked")
352+ let aX = aV
353+ let aY = (aT(h) - aj)
354+ let aZ = if ((aY > aX))
355+ then aY
356+ else aX
357+ let ba = (aZ - aX)
358+ let bb = if ((aW == 0))
391359 then 0
392- else fraction(bm, T, bi)
393- let bo = h((("global_lastCheck_" + q) + "_interest"))
394- (bo + bn)
360+ else fraction(ba, M, aW)
361+ let bc = a((("global_lastCheck_" + j) + "_interest"))
362+ (bc + bb)
395363 }
396364
397365
398-func bp (bq) = {
399- let br = toString(bq)
400- let bs = h((br + "_indexStaked"))
401- func aj (s,o) = {
402- let q = n(o)
403- let aq = h((("global_" + n(o)) + "_balance"))
404- let bh = h((("global_lastCheck_" + q) + "_earnings"))
405- let bt = bg(o, q, aq, bh)
406- let bl = max([bh, (bf(o) - aq)])
407- let bu = fraction(bs, (bt - h((((br + "_lastCheck_") + q) + "_interest"))), T)
408- let bv = if ((bu == 0))
366+func bd (be) = {
367+ let bf = toString(be)
368+ let bg = a((bf + "_indexStaked"))
369+ func ac (l,h) = {
370+ let j = g(h)
371+ let aj = a((("global_" + g(h)) + "_balance"))
372+ let aV = a((("global_lastCheck_" + j) + "_earnings"))
373+ let bh = aU(h, j, aj, aV)
374+ let aZ = max([aV, (aT(h) - aj)])
375+ let bi = fraction(bg, (bh - a((((bf + "_lastCheck_") + j) + "_interest"))), M)
376+ let bj = if ((bi == 0))
409377 then nil
410- else [ScriptTransfer(bq, bu, o)]
411- $Tuple2(((s._1 ++ bv) ++ [IntegerEntry((("global_lastCheck_" + q) + "_earnings"), (bl - bu)), IntegerEntry((("global_lastCheck_" + q) + "_interest"), bt), IntegerEntry((((br + "_lastCheck_") + q) + "_interest"), bt)]), (s._2 + ap(o, bu, aq, unit)))
378+ else [ScriptTransfer(be, bi, h)]
379+ $Tuple2(((l._1 ++ bj) ++ [IntegerEntry((("global_lastCheck_" + j) + "_earnings"), (aZ - bi)), IntegerEntry((("global_lastCheck_" + j) + "_interest"), bh), IntegerEntry((((bf + "_lastCheck_") + j) + "_interest"), bh)]), (l._2 + ai(h, bi, aj)))
412380 }
413381
414- let s = {
415- let A = X
416- let B = size(A)
417- let C = $Tuple2(nil, 0)
418- func an (E,F) = if ((F >= B))
419- then E
420- else aj(E, A[F])
382+ let l = {
383+ let t = Q
384+ let u = size(t)
385+ let v = $Tuple2(nil, 0)
386+ func ag (x,y) = if ((y >= u))
387+ then x
388+ else ac(x, t[y])
421389
422- func ao (E,F) = if ((F >= B))
423- then E
390+ func ah (x,y) = if ((y >= u))
391+ then x
424392 else throw("List size exceeds 10")
425393
426- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
394+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
427395 }
428- (s._1 ++ [IntegerEntry((br + "_claimedRewardValue"), (h((br + "_claimedRewardValue")) + s._2)), IntegerEntry((br + "_lastClaim"), lastBlock.timestamp)])
396+ (l._1 ++ [IntegerEntry((bf + "_claimedRewardValue"), (a((bf + "_claimedRewardValue")) + l._2)), IntegerEntry((bf + "_lastClaim"), lastBlock.timestamp)])
429397 }
430398
431399
432-func bw (br,ae) = {
433- let bx = bp(addressFromStringValue(br))
434- (bx ++ [IntegerEntry((br + "_indexStaked"), (h((br + "_indexStaked")) + ae)), IntegerEntry("global_indexStaked", (h("global_indexStaked") + ae))])
400+func bk (bf,X) = {
401+ let bl = bd(addressFromStringValue(bf))
402+ (bl ++ [IntegerEntry((bf + "_indexStaked"), (a((bf + "_indexStaked")) + X)), IntegerEntry("global_indexStaked", (a("global_indexStaked") + X))])
435403 }
436404
437405
438-func by (s,bz) = (s + parseIntValue(bz))
406+func bm (l,bn) = (l + parseIntValue(bn))
439407
440408
441-@Callable(bA)
442-func preInit (bB,bC,bD,bE,bF,bG) = {
443- let bH = Address(fromBase58String(bF))
444- if ((this != bA.caller))
445- then throw("admin only")
446- else if ((size(bE) > 13))
447- then throw("too large pool domain")
448- else if (if ((bG > 500))
449- then true
450- else (50 > bG))
451- then throw("fee value must be between 50 and 500 (0.5-5%)")
452- else if (if ((indexOf(bB, d) == unit))
453- then (indexOf(bB, c) == unit)
454- else false)
455- then throw("pool must have USDN or PUZZLE in the composition")
456- else {
457- let bI = split(bB, ",")
458- let bJ = {
459- let A = bI
460- let B = size(A)
461- let C = nil
462- func an (E,F) = if ((F >= B))
463- then E
464- else r(E, A[F])
409+@Callable(bo)
410+func preInit (bp,bq,br,bs) = if ((this != bo.caller))
411+ then throw("admin only")
412+ else if ((size(bs) > 13))
413+ then throw("too large pool domain")
414+ else {
415+ let bt = split(bp, ",")
416+ let bu = {
417+ let t = bt
418+ let u = size(t)
419+ let v = nil
420+ func ag (x,y) = if ((y >= u))
421+ then x
422+ else k(x, t[y])
465423
466- func ao (E,F) = if ((F >= B))
467- then E
468- else throw("List size exceeds 10")
424+ func ah (x,y) = if ((y >= u))
425+ then x
426+ else throw("List size exceeds 10")
469427
470- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
471- }
472- let bK = split(bC, ",")
473- let bL = {
474- let A = bK
475- let B = size(A)
476- let C = 0
477- func aG (E,F) = if ((F >= B))
478- then E
479- else by(E, A[F])
428+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
429+ }
430+ let bv = split(bq, ",")
431+ let bw = {
432+ let t = bv
433+ let u = size(t)
434+ let v = 0
435+ func au (x,y) = if ((y >= u))
436+ then x
437+ else bm(x, t[y])
480438
481- func aH (E,F) = if ((F >= B))
482- then E
483- else throw("List size exceeds 10")
439+ func av (x,y) = if ((y >= u))
440+ then x
441+ else throw("List size exceeds 10")
484442
485- aH(aG(aG(aG(aG(aG(aG(aG(aG(aG(aG(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
486- }
487- let bM = if ((indexOf(bB, c) == unit))
488- then d
489- else c
490- func bN (s,bO) = if ((bO >= size(bJ)))
491- then s
492- else {
493- let bP = {
494- let j = bJ[bO]
495- if ($isInstanceOf(j, "ByteVector"))
496- then {
497- let Z = j
498- value(assetInfo(Z)).decimals
499- }
500- else 8
501- }
502- (s ++ [IntegerEntry((("static_" + bI[bO]) + "_scale"), pow(10, 0, bP, 0, 0, DOWN)), IntegerEntry((("static_" + bI[bO]) + "_decimals"), bP), IntegerEntry((("static_" + bI[bO]) + "_weight"), value(parseInt(bK[bO])))])
443+ av(au(au(au(au(au(au(au(au(au(au(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
444+ }
445+ func bx (l,by) = if ((by >= size(bu)))
446+ then l
447+ else {
448+ let bz = {
449+ let c = bu[by]
450+ if ($isInstanceOf(c, "ByteVector"))
451+ then {
452+ let S = c
453+ value(assetInfo(S)).decimals
503454 }
455+ else 8
456+ }
457+ (l ++ [IntegerEntry((("static_" + bt[by]) + "_scale"), pow(10, 0, bz, 0, 0, DOWN)), IntegerEntry((("static_" + bt[by]) + "_decimals"), bz), IntegerEntry((("static_" + bt[by]) + "_weight"), value(parseInt(bv[by])))])
458+ }
504459
505- if ((bL != 10000))
506- then throw("sum of token weights must be equal to 10000")
507- else ({
508- let A = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
509- let B = size(A)
510- let C = nil
511- func bQ (E,F) = if ((F >= B))
512- then E
513- else bN(E, A[F])
460+ if ((bw != 100))
461+ then throw("sum of token weights must be equal to 100")
462+ else ({
463+ let t = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
464+ let u = size(t)
465+ let v = nil
466+ func bA (x,y) = if ((y >= u))
467+ then x
468+ else bx(x, t[y])
514469
515- func bR (E,F) = if ((F >= B))
516- then E
517- else throw("List size exceeds 10")
470+ func bB (x,y) = if ((y >= u))
471+ then x
472+ else throw("List size exceeds 10")
518473
519- bR(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
520- } ++ [StringEntry("static_tokenIds", bB), StringEntry("static_feeToken", bM), StringEntry("static_tokenWeights", bC), IntegerEntry("static_tokensAmount", size(bJ)), StringEntry("static_poolDomain", bE), StringEntry("static_baseTokenId", bD), StringEntry("static_poolOwner", bF), IntegerEntry("static_fee", bG)])
521- }
522- }
474+ bB(bA(bA(bA(bA(bA(bA(bA(bA(bA(bA(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
475+ } ++ [StringEntry("static_tokenIds", bp), StringEntry("static_tokenWeights", bq), IntegerEntry("static_tokensAmount", size(bu)), StringEntry("static_poolDomain", bs), StringEntry("static_baseTokenId", br), IntegerEntry("static_fee", 200)])
476+ }
523477
524478
525479
526-@Callable(bA)
527-func deInit () = if ((bA.caller != this))
480+@Callable(bo)
481+func deInit () = if ((bo.caller != this))
528482 then throw("admin only")
529483 else [IntegerEntry("global_wasInited", 0)]
530484
531485
532486
533-@Callable(bA)
487+@Callable(bo)
534488 func init () = {
535- func bS () = {
536- func aj (s,bz) = (s ++ [IntegerEntry((("global_" + n(bz.assetId)) + "_balance"), bz.amount)])
489+ func bC () = {
490+ func ac (l,bn) = (l ++ [IntegerEntry((("global_" + g(bn.assetId)) + "_balance"), bn.amount)])
537491
538- let A = bA.payments
539- let B = size(A)
540- let C = nil
541- func an (E,F) = if ((F >= B))
542- then E
543- else aj(E, A[F])
492+ let t = bo.payments
493+ let u = size(t)
494+ let v = nil
495+ func ag (x,y) = if ((y >= u))
496+ then x
497+ else ac(x, t[y])
544498
545- func ao (E,F) = if ((F >= B))
546- then E
499+ func ah (x,y) = if ((y >= u))
500+ then x
547501 else throw("List size exceeds 10")
548502
549- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
503+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
550504 }
551505
552- func bT (ai) = {
553- func aj (s,bU) = {
554- let o = bU.assetId
555- func aE (s,bz) = if ((bz == o))
556- then value(indexOf(z, bz))
557- else s
506+ func bD (ab) = {
507+ func ac (l,bE) = {
508+ let h = bE.assetId
509+ func as (l,bn) = if ((bn == h))
510+ then value(indexOf(s, bn))
511+ else l
558512
559- let bV = {
560- let A = z
561- let B = size(A)
562- let C = 1
563- func an (E,F) = if ((F >= B))
564- then E
565- else aE(E, A[F])
513+ let bF = {
514+ let t = s
515+ let u = size(t)
516+ let v = 1
517+ func ag (x,y) = if ((y >= u))
518+ then x
519+ else as(x, t[y])
566520
567- func ao (E,F) = if ((F >= B))
568- then E
521+ func ah (x,y) = if ((y >= u))
522+ then x
569523 else throw("List size exceeds 10")
570524
571- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
525+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
572526 }
573- fraction(s, pow(bU.amount, K[bV], H[bV], R, 8, FLOOR), T)
527+ fraction(l, pow(bE.amount, D[bF], A[bF], K, 8, FLOOR), M)
574528 }
575529
576- let A = ai
577- let B = size(A)
578- let C = W
579- func an (E,F) = if ((F >= B))
580- then E
581- else aj(E, A[F])
530+ let t = ab
531+ let u = size(t)
532+ let v = P
533+ func ag (x,y) = if ((y >= u))
534+ then x
535+ else ac(x, t[y])
582536
583- func ao (E,F) = if ((F >= B))
584- then E
537+ func ah (x,y) = if ((y >= u))
538+ then x
585539 else throw("List size exceeds 10")
586540
587- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
541+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
588542 }
589543
590- if ((h("global_wasInited") > 0))
544+ if ((a("global_wasInited") > 0))
591545 then throw("pool already inited")
592546 else {
593- let bW = bT(bA.payments)
594- if ((bW == 0))
547+ let bG = bD(bo.payments)
548+ if ((bG == 0))
595549 then throw("you need a bigger tokens amount to launch the pool")
596550 else {
597- let bX = Issue(("PZ " + m("static_poolDomain")), "Puzzle Swap: pool index token", bW, V, true, unit, 0)
598- let bY = calculateAssetId(bX)
599- (bS() ++ [bX, IntegerEntry("global_poolToken_amount", bW), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", bY), StringEntry("static_poolToken_idStr", n(bY)), IntegerEntry((toString(bA.caller) + "_indexStaked"), bW), IntegerEntry("global_indexStaked", bW)])
551+ let bH = Issue(("PZ " + f("static_poolDomain")), "Puzzle Swap: pool index token", bG, O, true, unit, 0)
552+ let bI = calculateAssetId(bH)
553+ (bC() ++ [bH, IntegerEntry("global_poolToken_amount", bG), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", bI), StringEntry("static_poolToken_idStr", g(bI)), ScriptTransfer(bo.caller, bG, bI)])
600554 }
601555 }
602556 }
603557
604558
605559
606-@Callable(bA)
607-func generateIndex (aK) = if ((size(bA.payments) != y))
608- then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(y)))
609- else if (!(aA(bA.payments)))
560+@Callable(bo)
561+func generateIndex (ay) = if ((size(bo.payments) != r))
562+ then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(r)))
563+ else if (!(ao(bo.payments)))
610564 then throw("wrong assets attached")
611565 else {
612- let al = ah(bA.payments)
613- let bZ = Reissue(getBinaryValue("global_poolToken_id"), al, true)
614- let ca = aI(al, bA.payments, bA.originCaller, aK)
615- $Tuple2((ca ++ [ScriptTransfer(bA.caller, al, l("global_poolToken_id")), bZ, IntegerEntry("global_poolToken_amount", (h("global_poolToken_amount") + al))]), al)
566+ let ae = aa(bo.payments)
567+ let bJ = Reissue(getBinaryValue("global_poolToken_id"), ae, true)
568+ let bK = aw(ae, bo.payments, bo.originCaller, ay)
569+ $Tuple2((bK ++ [ScriptTransfer(bo.caller, ae, e("global_poolToken_id")), bJ, IntegerEntry("global_poolToken_amount", (a("global_poolToken_amount") + ae))]), ae)
616570 }
617571
618572
619573
620-@Callable(bA)
574+@Callable(bo)
621575 func stakeIndex () = {
622- let br = toString(bA.originCaller)
623- let bU = bA.payments[0]
624- if ((value(bU.assetId) != l("global_poolToken_id")))
576+ let bf = toString(bo.originCaller)
577+ let bE = bo.payments[0]
578+ if ((value(bE.assetId) != e("global_poolToken_id")))
625579 then throw("wrong asset attached")
626- else bw(br, bU.amount)
580+ else bk(bf, bE.amount)
627581 }
628582
629583
630584
631-@Callable(bA)
632-func unstakeIndex (bs) = {
633- let br = toString(bA.originCaller)
634- let cb = h((br + "_indexStaked"))
635- if ((bs > cb))
585+@Callable(bo)
586+func unstakeIndex (bg) = {
587+ let bf = toString(bo.originCaller)
588+ let bL = a((bf + "_indexStaked"))
589+ if ((bg > bL))
636590 then throw("you don't have index tokens available")
637- else if (Y())
638- then throw("contract is on stop")
639- else (bp(bA.originCaller) ++ [IntegerEntry((br + "_indexStaked"), (cb - bs)), IntegerEntry("global_indexStaked", (h("global_indexStaked") - bs)), ScriptTransfer(bA.caller, bs, getBinaryValue("global_poolToken_id"))])
591+ else (bd(bo.originCaller) ++ [IntegerEntry((bf + "_indexStaked"), (bL - bg)), IntegerEntry("global_indexStaked", (a("global_indexStaked") - bg)), ScriptTransfer(bo.caller, bg, getBinaryValue("global_poolToken_id"))])
640592 }
641593
642594
643595
644-@Callable(bA)
645-func claimIndexRewards () = if (Y())
646- then throw("contract is on stop")
647- else bp(bA.caller)
596+@Callable(bo)
597+func claimIndexRewards () = bd(bo.caller)
648598
649599
650600
651-@Callable(bA)
652-func redeemIndex (cc) = {
653- let bU = bA.payments[0]
654- if ((bU.assetId != l("global_poolToken_id")))
601+@Callable(bo)
602+func redeemIndex (bM) = {
603+ let bE = bo.payments[0]
604+ if ((bE.assetId != e("global_poolToken_id")))
655605 then throw("please attach pool share token")
656- else if (Y())
657- then throw("contract is on stop")
606+ else {
607+ let aJ = bE.amount
608+ let bK = aI(aJ, if (bM)
609+ then bo.originCaller
610+ else bo.caller)
611+ (bK ++ [Burn(e("global_poolToken_id"), aJ), IntegerEntry("global_poolToken_amount", (a("global_poolToken_amount") - aJ))])
612+ }
613+ }
614+
615+
616+
617+@Callable(bo)
618+func swap (aO,bN) = {
619+ let bE = value(bo.payments[0])
620+ let aM = value(bo.payments[0].amount)
621+ let bO = bE.assetId
622+ let bP = i(aO)
623+ let bQ = a((("global_" + g(bO)) + "_balance"))
624+ let bR = a((("global_" + aO) + "_balance"))
625+ let bS = aL(aM, bO, bP, bQ, bR)
626+ let bT = fraction(bS, J, N)
627+ let bU = (bS - bT)
628+ if ((bN > bU))
629+ then throw(("amount to recieve is lower than given one: " + toString(bU)))
630+ else if ((0 > (bR - bS)))
631+ then throw("contract is out of reserves")
658632 else {
659- let aV = bU.amount
660- let ca = aU(aV, if (cc)
661- then bA.originCaller
662- else bA.caller)
663- (ca ++ [Burn(l("global_poolToken_id"), aV), IntegerEntry("global_poolToken_amount", (h("global_poolToken_amount") - aV))])
633+ let bV = (bQ + aM)
634+ let bW = (bR - bS)
635+ let bX = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
636+ if ((bX == bP))
637+ then {
638+ let bY = bT
639+ let bZ = fraction(bY, 4, 10)
640+ let ca = reentrantInvoke(Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS'), "topUpReward", nil, [AttachedPayment(bX, bZ)])
641+ if ((ca == ca))
642+ then $Tuple2([IntegerEntry((("global_" + aO) + "_balance"), bW), IntegerEntry((("global_" + g(bO)) + "_balance"), bV), ScriptTransfer(bo.caller, bU, bP), IntegerEntry("global_volume", (a("global_volume") + ai(bO, aM, bQ)))], bU)
643+ else throw("Strict value is not equal to itself.")
644+ }
645+ else {
646+ let an = if ((bO == bX))
647+ then bV
648+ else a((("global_" + g(bX)) + "_balance"))
649+ let bY = aL(bT, bP, bX, bW, an)
650+ let bZ = fraction(bY, 4, 10)
651+ let ca = reentrantInvoke(Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS'), "topUpReward", nil, [AttachedPayment(bX, bZ)])
652+ if ((ca == ca))
653+ then {
654+ let cb = IntegerEntry((("global_" + toBase58String(bX)) + "_balance"), (an - bY))
655+ let cc = if ((bO == bX))
656+ then [cb]
657+ else [cb, IntegerEntry((("global_" + g(bO)) + "_balance"), bV)]
658+ $Tuple2(([IntegerEntry((("global_" + aO) + "_balance"), (bW + bT)), ScriptTransfer(bo.caller, bU, bP), IntegerEntry("global_volume", (a("global_volume") + ai(bO, aM, bQ)))] ++ cc), bU)
659+ }
660+ else throw("Strict value is not equal to itself.")
661+ }
664662 }
665663 }
666664
667665
668666
669-@Callable(bA)
670-func swap (ba,cd) = {
671- let bU = if ((size(bA.payments) == 1))
672- then value(bA.payments[0])
673- else throw("please attach exactly one payment")
674- let aY = value(bA.payments[0].amount)
675- let ce = bU.assetId
676- let cf = p(ba)
677- let cg = ce
678- let ch = m("static_feeToken")
679- let ci = if ((ch == ""))
680- then a
681- else fromBase58String(ch)
682- let cj = h((("global_" + n(ce)) + "_balance"))
683- let ck = h((("global_" + ba) + "_balance"))
684- let cl = h((("global_" + n(ci)) + "_balance"))
685- let cm = fraction(aY, Q, U)
686- let cn = (aY - cm)
687- let co = aX(cn, ce, cf, cj, ck)
688- let cp = aX(cm, ce, ci, cj, cl)
689- if ((cd > co))
690- then throw(("amount to recieve is lower than given one: " + toString(co)))
691- else if ((cf == ce))
692- then throw("this swap is not allowed")
693- else if ((0 > (ck - co)))
694- then throw("contract is out of reserves")
695- else if (Y())
696- then throw("contract is on stop")
697- else {
698- let cq = fraction(cp, 1, 10)
699- let cr = fraction(cp, 4, 10)
700- let cs = if ((ci == a))
701- then reentrantInvoke(Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS'), "topUpReward", nil, [AttachedPayment(ci, cr)])
702- else unit
703- if ((cs == cs))
704- then {
705- let ct = ((cj + aY) - (if ((ce == ci))
706- then cp
707- else 0))
708- let cu = ((ck - co) - (if ((cf == ci))
709- then cp
710- else 0))
711- let cv = if (if ((ci != ce))
712- then (ci != cf)
713- else false)
714- then (cl - cp)
715- else unit
716- let cw = IntegerEntry((("global_" + n(ce)) + "_balance"), ct)
717- let cx = IntegerEntry((("global_" + ba) + "_balance"), cu)
718- let cy = if ((cv != unit))
719- then IntegerEntry((("global_" + n(ci)) + "_balance"), cl)
720- else StringEntry("hello", "world")
721- $Tuple2([cx, cw, cy, ScriptTransfer(bA.caller, co, cf), ScriptTransfer(addressFromStringValue(m("static_poolOwner")), cq, ci), IntegerEntry("global_earnedByOwner", (h("global_earnedByOwner") + cq)), IntegerEntry("global_volume", (h("global_volume") + ap(ce, aY, cj, cl)))], co)
722- }
723- else throw("Strict value is not equal to itself.")
724- }
725- }
667+@Callable(bo)
668+func calcSwap (cd,ce,X) = $Tuple2(nil, aL(X, fromBase58String(cd), fromBase58String(ce), a((("global_" + cd) + "_balance")), a((("global_" + ce) + "_balance"))))
726669
727670
728-@Verifier(cz)
729-func cA () = if (Y())
671+@Verifier(cf)
672+func cg () = if (R())
730673 then false
731- else if (sigVerify(cz.bodyBytes, cz.proofs[0], cz.senderPublicKey))
732- then true
733- else sigVerify(cz.bodyBytes, cz.proofs[0], g)
674+ else sigVerify(cf.bodyBytes, cf.proofs[0], cf.senderPublicKey)
734675
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
5-
6-let b = base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS'
7-
8-let c = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
9-
10-let d = "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS"
11-
12-let e = Address(base58'3PFDgzu1UtswAkCMxqqQjbTeHaX4cMab8Kh')
13-
14-let f = Address(base58'3PLjwHcz9NEuaTo63NZR9B9okQiKQxZSbmf')
15-
16-let g = base58'4z8CKSYQBKkzx7PBb5uBP1YPa6YAHRNTApW1sQVHT5eU'
17-
18-func h (i) = {
19- let j = getInteger(this, i)
20- if ($isInstanceOf(j, "Int"))
4+func a (b) = {
5+ let c = getInteger(this, b)
6+ if ($isInstanceOf(c, "Int"))
217 then {
22- let k = j
23- k
8+ let d = c
9+ d
2410 }
2511 else 0
2612 }
2713
2814
29-func l (i) = {
30- let j = getBinary(this, i)
31- if ($isInstanceOf(j, "ByteVector"))
15+func e (b) = {
16+ let c = getBinary(this, b)
17+ if ($isInstanceOf(c, "ByteVector"))
3218 then {
33- let k = j
34- k
19+ let d = c
20+ d
3521 }
3622 else base58''
3723 }
3824
3925
40-func m (i) = {
41- let j = getString(this, i)
42- if ($isInstanceOf(j, "String"))
26+func f (b) = {
27+ let c = getString(this, b)
28+ if ($isInstanceOf(c, "String"))
4329 then {
44- let k = j
45- k
30+ let d = c
31+ d
4632 }
4733 else ""
4834 }
4935
5036
51-func n (o) = {
52- let j = o
53- if ($isInstanceOf(j, "ByteVector"))
37+func g (h) = {
38+ let c = h
39+ if ($isInstanceOf(c, "ByteVector"))
5440 then {
55- let k = j
56- toBase58String(k)
41+ let d = c
42+ toBase58String(d)
5743 }
5844 else "WAVES"
5945 }
6046
6147
62-func p (q) = if ((q == "WAVES"))
48+func i (j) = if ((j == "WAVES"))
6349 then unit
64- else fromBase58String(q)
50+ else fromBase58String(j)
6551
6652
67-func r (s,t) = (s ++ [p(t)])
53+func k (l,m) = (l ++ [i(m)])
6854
6955
70-func u (s,t) = (s ++ [h((("static_" + n(t)) + "_weight"))])
56+func n (l,m) = (l ++ [a((("static_" + g(m)) + "_weight"))])
7157
7258
73-func v (s,t) = (s ++ [h((("static_" + n(t)) + "_decimals"))])
59+func o (l,m) = (l ++ [a((("static_" + g(m)) + "_decimals"))])
7460
7561
76-func w (s,t) = (s ++ [h((("static_" + n(t)) + "_scale"))])
62+func p (l,m) = (l ++ [a((("static_" + g(m)) + "_scale"))])
7763
7864
79-func x (s,t) = (s ++ [parseIntValue(t)])
65+func q (l,m) = (l ++ [parseIntValue(m)])
8066
8167
82-let y = h("static_tokensAmount")
68+let r = a("static_tokensAmount")
8369
84-let z = {
85- let A = split(m("static_tokenIds"), ",")
86- let B = size(A)
87- let C = nil
88- func D (E,F) = if ((F >= B))
89- then E
90- else r(E, A[F])
70+let s = {
71+ let t = split(f("static_tokenIds"), ",")
72+ let u = size(t)
73+ let v = nil
74+ func w (x,y) = if ((y >= u))
75+ then x
76+ else k(x, t[y])
9177
92- func G (E,F) = if ((F >= B))
93- then E
78+ func z (x,y) = if ((y >= u))
79+ then x
9480 else throw("List size exceeds 10")
9581
96- G(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
82+ z(w(w(w(w(w(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
9783 }
9884
99-let H = {
100- let A = z
101- let B = size(A)
102- let C = nil
103- func I (E,F) = if ((F >= B))
104- then E
105- else u(E, A[F])
85+let A = {
86+ let t = s
87+ let u = size(t)
88+ let v = nil
89+ func B (x,y) = if ((y >= u))
90+ then x
91+ else n(x, t[y])
10692
107- func J (E,F) = if ((F >= B))
108- then E
93+ func C (x,y) = if ((y >= u))
94+ then x
10995 else throw("List size exceeds 10")
11096
111- J(I(I(I(I(I(I(I(I(I(I(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
97+ C(B(B(B(B(B(B(B(B(B(B(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11298 }
11399
114-let K = {
115- let A = z
116- let B = size(A)
117- let C = nil
118- func L (E,F) = if ((F >= B))
119- then E
120- else v(E, A[F])
100+let D = {
101+ let t = s
102+ let u = size(t)
103+ let v = nil
104+ func E (x,y) = if ((y >= u))
105+ then x
106+ else o(x, t[y])
121107
122- func M (E,F) = if ((F >= B))
123- then E
108+ func F (x,y) = if ((y >= u))
109+ then x
124110 else throw("List size exceeds 10")
125111
126- M(L(L(L(L(L(L(L(L(L(L(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
112+ F(E(E(E(E(E(E(E(E(E(E(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
127113 }
128114
129-let N = {
130- let A = z
131- let B = size(A)
132- let C = nil
133- func O (E,F) = if ((F >= B))
134- then E
135- else w(E, A[F])
115+let G = {
116+ let t = s
117+ let u = size(t)
118+ let v = nil
119+ func H (x,y) = if ((y >= u))
120+ then x
121+ else p(x, t[y])
136122
137- func P (E,F) = if ((F >= B))
138- then E
123+ func I (x,y) = if ((y >= u))
124+ then x
139125 else throw("List size exceeds 10")
140126
141- P(O(O(O(O(O(O(O(O(O(O(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
127+ I(H(H(H(H(H(H(H(H(H(H(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
142128 }
143129
144-let Q = h("static_fee")
130+let J = a("static_fee")
145131
146-let R = 4
132+let K = 2
147133
148-let S = 10000
134+let L = 10000
149135
150-let T = 100000000
136+let M = 100000000
151137
152-let U = 10000
138+let N = 10000
153139
154-let V = 8
140+let O = 8
155141
156-let W = pow(10, 0, V, 0, 0, HALFUP)
142+let P = pow(10, 0, O, 0, 0, HALFUP)
157143
158-let X = z
144+let Q = s
159145
160-func Y () = {
161- let j = getBoolean(Address(base58'3PEpv9hRFWEEBU22WRnLsw1bH4YGtcU728o'), "is_shutdown")
162- if ($isInstanceOf(j, "Boolean"))
146+func R () = {
147+ let c = getBoolean(Address(base58'3PEpv9hRFWEEBU22WRnLsw1bH4YGtcU728o'), "is_shutdown")
148+ if ($isInstanceOf(c, "Boolean"))
163149 then {
164- let Z = j
165- Z
150+ let S = c
151+ S
166152 }
167153 else false
168154 }
169155
170156
171-func aa (ab) = {
172- let ac = n(z[ab])
173- h((("global_" + ac) + "_balance"))
157+func T (U) = {
158+ let V = g(s[U])
159+ a((("global_" + V) + "_balance"))
174160 }
175161
176162
177-func ad (ae,ac) = {
178- let af = h("global_poolToken_amount")
179- let ag = h((("global_" + n(ac)) + "_balance"))
180- fraction(ae, af, ag, DOWN)
163+func W (X,V) = {
164+ let Y = a("global_poolToken_amount")
165+ let Z = a((("global_" + g(V)) + "_balance"))
166+ fraction(X, Y, Z, DOWN)
181167 }
182168
183169
184-func ah (ai) = {
185- func aj (s,ak) = {
186- let al = ad(ak.amount, ak.assetId)
187- if ((al == 0))
170+func aa (ab) = {
171+ func ac (l,ad) = {
172+ let ae = W(ad.amount, ad.assetId)
173+ if ((ae == 0))
188174 then throw("one of the tokens amounts is too low")
189- else if (if ((s == 0))
175+ else if (if ((l == 0))
190176 then true
191- else (s > al))
192- then al
193- else s
177+ else (l > ae))
178+ then ae
179+ else l
194180 }
195181
196- let am = {
197- let A = ai
198- let B = size(A)
199- let C = 0
200- func an (E,F) = if ((F >= B))
201- then E
202- else aj(E, A[F])
182+ let af = {
183+ let t = ab
184+ let u = size(t)
185+ let v = 0
186+ func ag (x,y) = if ((y >= u))
187+ then x
188+ else ac(x, t[y])
203189
204- func ao (E,F) = if ((F >= B))
205- then E
190+ func ah (x,y) = if ((y >= u))
191+ then x
206192 else throw("List size exceeds 10")
207193
208- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
194+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
209195 }
210- am
196+ af
211197 }
212198
213199
214-func ap (o,ae,aq,ar) = {
215- let as = indexOf(z, a)
216- let at = H[value(indexOf(z, o))]
217- if ((as == unit))
218- then {
219- let au = H[value(indexOf(z, b))]
220- let av = h((("global_" + d) + "_balance"))
221- let aw = fraction(ae, (av / au), (aq / at))
222- let ax = getIntegerValue(e, "global_lastPuzzlePrice")
223- fraction((aw * ax), 1, T)
224- }
225- else {
226- let ay = H[value(indexOf(z, a))]
227- let az = {
228- let j = ar
229- if ($isInstanceOf(j, "Int"))
230- then {
231- let Z = j
232- ar
233- }
234- else h((("global_" + n(a)) + "_balance"))
235- }
236- fraction(ae, (value(az) / ay), (aq / at))
237- }
200+func ai (h,X,aj) = {
201+ let ak = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
202+ let al = A[value(indexOf(s, ak))]
203+ let am = A[value(indexOf(s, h))]
204+ let an = a((("global_" + g(ak)) + "_balance"))
205+ fraction(X, (an / al), (aj / am))
238206 }
239207
240208
241-func aA (ai) = {
242- func aB (s,aC) = (s ++ [aC.assetId])
209+func ao (ab) = {
210+ func ap (l,aq) = (l ++ [aq.assetId])
243211
244- let aD = {
245- let A = ai
246- let B = size(A)
247- let C = nil
248- func an (E,F) = if ((F >= B))
249- then E
250- else aB(E, A[F])
212+ let ar = {
213+ let t = ab
214+ let u = size(t)
215+ let v = nil
216+ func ag (x,y) = if ((y >= u))
217+ then x
218+ else ap(x, t[y])
251219
252- func ao (E,F) = if ((F >= B))
253- then E
220+ func ah (x,y) = if ((y >= u))
221+ then x
254222 else throw("List size exceeds 10")
255223
256- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
224+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
257225 }
258- if ((aD == aD))
226+ if ((ar == ar))
259227 then {
260- func aE (s,o) = if ((indexOf(aD, o) != unit))
261- then (s + 1)
262- else throw(("asset not attached: " + n(o)))
228+ func as (l,h) = if ((indexOf(ar, h) != unit))
229+ then (l + 1)
230+ else throw(("asset not attached: " + g(h)))
263231
264- let aF = {
265- let A = z
266- let B = size(A)
267- let C = 0
268- func aG (E,F) = if ((F >= B))
269- then E
270- else aE(E, A[F])
232+ let at = {
233+ let t = s
234+ let u = size(t)
235+ let v = 0
236+ func au (x,y) = if ((y >= u))
237+ then x
238+ else as(x, t[y])
271239
272- func aH (E,F) = if ((F >= B))
273- then E
240+ func av (x,y) = if ((y >= u))
241+ then x
274242 else throw("List size exceeds 10")
275243
276- aH(aG(aG(aG(aG(aG(aG(aG(aG(aG(aG(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
244+ av(au(au(au(au(au(au(au(au(au(au(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
277245 }
278- if ((aF == aF))
246+ if ((at == at))
279247 then true
280248 else throw("Strict value is not equal to itself.")
281249 }
282250 else throw("Strict value is not equal to itself.")
283251 }
284252
285253
286-func aI (al,ai,aJ,aK) = {
287- func aL (ac) = {
288- func aj (s,aC) = if ((aC.assetId == ac))
289- then aC.amount
290- else s
254+func aw (ae,ab,ax,ay) = {
255+ func az (V) = {
256+ func ac (l,aq) = if ((aq.assetId == V))
257+ then aq.amount
258+ else l
291259
292- let A = ai
293- let B = size(A)
294- let C = 0
295- func an (E,F) = if ((F >= B))
296- then E
297- else aj(E, A[F])
260+ let t = ab
261+ let u = size(t)
262+ let v = 0
263+ func ag (x,y) = if ((y >= u))
264+ then x
265+ else ac(x, t[y])
298266
299- func ao (E,F) = if ((F >= B))
300- then E
267+ func ah (x,y) = if ((y >= u))
268+ then x
301269 else throw("List size exceeds 10")
302270
303- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
271+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
304272 }
305273
306- func aM (s,ac) = {
307- let aN = h((("global_" + n(ac)) + "_balance"))
308- let aO = h("global_poolToken_amount")
309- let aP = h((("static_" + n(ac)) + "_scale"))
310- let aQ = fraction((fraction((aO + al), aP, aO, CEILING) - aP), aN, aP, CEILING)
311- let aR = aL(ac)
312- let aS = ((if ((aR != 0))
313- then aR
314- else 0) - aQ)
315- let aT = if (if (aK)
316- then (aS > 0)
274+ func aA (l,V) = {
275+ let aB = a((("global_" + g(V)) + "_balance"))
276+ let aC = a("global_poolToken_amount")
277+ let aD = a((("static_" + g(V)) + "_scale"))
278+ let aE = fraction((fraction((aC + ae), aD, aC, CEILING) - aD), aB, aD, CEILING)
279+ let aF = az(V)
280+ let aG = ((if ((aF != 0))
281+ then aF
282+ else 0) - aE)
283+ let aH = if (if (ay)
284+ then (aG > 0)
317285 else false)
318- then [ScriptTransfer(aJ, aS, ac)]
286+ then [ScriptTransfer(ax, aG, V)]
319287 else nil
320- ((s ++ aT) ++ [IntegerEntry((("global_" + n(ac)) + "_balance"), (aN + aQ))])
288+ ((l ++ aH) ++ [IntegerEntry((("global_" + g(V)) + "_balance"), (aB + aE))])
321289 }
322290
323- let A = z
324- let B = size(A)
325- let C = nil
326- func an (E,F) = if ((F >= B))
327- then E
328- else aM(E, A[F])
291+ let t = s
292+ let u = size(t)
293+ let v = nil
294+ func ag (x,y) = if ((y >= u))
295+ then x
296+ else aA(x, t[y])
329297
330- func ao (E,F) = if ((F >= B))
331- then E
298+ func ah (x,y) = if ((y >= u))
299+ then x
332300 else throw("List size exceeds 10")
333301
334- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
302+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
335303 }
336304
337305
338-func aU (aV,aJ) = {
339- func aW (s,ac) = {
340- let aN = h((("global_" + n(ac)) + "_balance"))
341- let aO = h("global_poolToken_amount")
342- let aP = h((("static_" + n(ac)) + "_scale"))
343- let ae = toInt(fraction((toBigInt(T) - fraction(toBigInt((aO - aV)), toBigInt(T), toBigInt(aO), CEILING)), toBigInt(aN), toBigInt(T), DOWN))
344- (s ++ [IntegerEntry((("global_" + n(ac)) + "_balance"), (aN - ae)), ScriptTransfer(aJ, ae, ac)])
306+func aI (aJ,ax) = {
307+ func aK (l,V) = {
308+ let aB = a((("global_" + g(V)) + "_balance"))
309+ let aC = a("global_poolToken_amount")
310+ let aD = a((("static_" + g(V)) + "_scale"))
311+ let X = toInt(fraction((toBigInt(M) - fraction(toBigInt((aC - aJ)), toBigInt(M), toBigInt(aC), CEILING)), toBigInt(aB), toBigInt(M), DOWN))
312+ (l ++ [IntegerEntry((("global_" + g(V)) + "_balance"), (aB - X)), ScriptTransfer(ax, X, V)])
345313 }
346314
347- let A = z
348- let B = size(A)
349- let C = nil
350- func an (E,F) = if ((F >= B))
351- then E
352- else aW(E, A[F])
315+ let t = s
316+ let u = size(t)
317+ let v = nil
318+ func ag (x,y) = if ((y >= u))
319+ then x
320+ else aK(x, t[y])
353321
354- func ao (E,F) = if ((F >= B))
355- then E
322+ func ah (x,y) = if ((y >= u))
323+ then x
356324 else throw("List size exceeds 10")
357325
358- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
326+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
359327 }
360328
361329
362-func aX (aY,aZ,ba,bb,bc) = {
363- let bd = value(indexOf(z, aZ))
364- let be = value(indexOf(z, ba))
365- if ((bd == be))
366- then aY
367- else fraction(bc, ((T * T) - toInt(pow(fraction(toBigInt(bb), toBigInt((T * T)), toBigInt((bb + aY)), HALFUP), 16, toBigInt(fraction(H[bd], 10000, H[be])), 4, 16, CEILING))), (T * T), DOWN)
330+func aL (aM,aN,aO,aP,aQ) = {
331+ let aR = value(indexOf(s, aN))
332+ let aS = value(indexOf(s, aO))
333+ if ((aR == aS))
334+ then throw("wrong tokens pair")
335+ else fraction(aQ, ((M * M) - toInt(pow(fraction(toBigInt(aP), toBigInt((M * M)), toBigInt((aP + aM)), HALFUP), 16, toBigInt(fraction(A[aR], 10000, A[aS])), 4, 16, CEILING))), (M * M), DOWN)
368336 }
369337
370338
371-func bf (o) = {
372- let j = o
373- if ($isInstanceOf(j, "ByteVector"))
339+func aT (h) = {
340+ let c = h
341+ if ($isInstanceOf(c, "ByteVector"))
374342 then {
375- let aT = j
376- assetBalance(this, aT)
343+ let aH = c
344+ assetBalance(this, aH)
377345 }
378346 else wavesBalance(this).available
379347 }
380348
381349
382-func bg (o,q,aq,bh) = {
383- let bi = h("global_indexStaked")
384- let bj = bh
385- let bk = (bf(o) - aq)
386- let bl = if ((bk > bj))
387- then bk
388- else bj
389- let bm = (bl - bj)
390- let bn = if ((bi == 0))
350+func aU (h,j,aj,aV) = {
351+ let aW = a("global_indexStaked")
352+ let aX = aV
353+ let aY = (aT(h) - aj)
354+ let aZ = if ((aY > aX))
355+ then aY
356+ else aX
357+ let ba = (aZ - aX)
358+ let bb = if ((aW == 0))
391359 then 0
392- else fraction(bm, T, bi)
393- let bo = h((("global_lastCheck_" + q) + "_interest"))
394- (bo + bn)
360+ else fraction(ba, M, aW)
361+ let bc = a((("global_lastCheck_" + j) + "_interest"))
362+ (bc + bb)
395363 }
396364
397365
398-func bp (bq) = {
399- let br = toString(bq)
400- let bs = h((br + "_indexStaked"))
401- func aj (s,o) = {
402- let q = n(o)
403- let aq = h((("global_" + n(o)) + "_balance"))
404- let bh = h((("global_lastCheck_" + q) + "_earnings"))
405- let bt = bg(o, q, aq, bh)
406- let bl = max([bh, (bf(o) - aq)])
407- let bu = fraction(bs, (bt - h((((br + "_lastCheck_") + q) + "_interest"))), T)
408- let bv = if ((bu == 0))
366+func bd (be) = {
367+ let bf = toString(be)
368+ let bg = a((bf + "_indexStaked"))
369+ func ac (l,h) = {
370+ let j = g(h)
371+ let aj = a((("global_" + g(h)) + "_balance"))
372+ let aV = a((("global_lastCheck_" + j) + "_earnings"))
373+ let bh = aU(h, j, aj, aV)
374+ let aZ = max([aV, (aT(h) - aj)])
375+ let bi = fraction(bg, (bh - a((((bf + "_lastCheck_") + j) + "_interest"))), M)
376+ let bj = if ((bi == 0))
409377 then nil
410- else [ScriptTransfer(bq, bu, o)]
411- $Tuple2(((s._1 ++ bv) ++ [IntegerEntry((("global_lastCheck_" + q) + "_earnings"), (bl - bu)), IntegerEntry((("global_lastCheck_" + q) + "_interest"), bt), IntegerEntry((((br + "_lastCheck_") + q) + "_interest"), bt)]), (s._2 + ap(o, bu, aq, unit)))
378+ else [ScriptTransfer(be, bi, h)]
379+ $Tuple2(((l._1 ++ bj) ++ [IntegerEntry((("global_lastCheck_" + j) + "_earnings"), (aZ - bi)), IntegerEntry((("global_lastCheck_" + j) + "_interest"), bh), IntegerEntry((((bf + "_lastCheck_") + j) + "_interest"), bh)]), (l._2 + ai(h, bi, aj)))
412380 }
413381
414- let s = {
415- let A = X
416- let B = size(A)
417- let C = $Tuple2(nil, 0)
418- func an (E,F) = if ((F >= B))
419- then E
420- else aj(E, A[F])
382+ let l = {
383+ let t = Q
384+ let u = size(t)
385+ let v = $Tuple2(nil, 0)
386+ func ag (x,y) = if ((y >= u))
387+ then x
388+ else ac(x, t[y])
421389
422- func ao (E,F) = if ((F >= B))
423- then E
390+ func ah (x,y) = if ((y >= u))
391+ then x
424392 else throw("List size exceeds 10")
425393
426- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
394+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
427395 }
428- (s._1 ++ [IntegerEntry((br + "_claimedRewardValue"), (h((br + "_claimedRewardValue")) + s._2)), IntegerEntry((br + "_lastClaim"), lastBlock.timestamp)])
396+ (l._1 ++ [IntegerEntry((bf + "_claimedRewardValue"), (a((bf + "_claimedRewardValue")) + l._2)), IntegerEntry((bf + "_lastClaim"), lastBlock.timestamp)])
429397 }
430398
431399
432-func bw (br,ae) = {
433- let bx = bp(addressFromStringValue(br))
434- (bx ++ [IntegerEntry((br + "_indexStaked"), (h((br + "_indexStaked")) + ae)), IntegerEntry("global_indexStaked", (h("global_indexStaked") + ae))])
400+func bk (bf,X) = {
401+ let bl = bd(addressFromStringValue(bf))
402+ (bl ++ [IntegerEntry((bf + "_indexStaked"), (a((bf + "_indexStaked")) + X)), IntegerEntry("global_indexStaked", (a("global_indexStaked") + X))])
435403 }
436404
437405
438-func by (s,bz) = (s + parseIntValue(bz))
406+func bm (l,bn) = (l + parseIntValue(bn))
439407
440408
441-@Callable(bA)
442-func preInit (bB,bC,bD,bE,bF,bG) = {
443- let bH = Address(fromBase58String(bF))
444- if ((this != bA.caller))
445- then throw("admin only")
446- else if ((size(bE) > 13))
447- then throw("too large pool domain")
448- else if (if ((bG > 500))
449- then true
450- else (50 > bG))
451- then throw("fee value must be between 50 and 500 (0.5-5%)")
452- else if (if ((indexOf(bB, d) == unit))
453- then (indexOf(bB, c) == unit)
454- else false)
455- then throw("pool must have USDN or PUZZLE in the composition")
456- else {
457- let bI = split(bB, ",")
458- let bJ = {
459- let A = bI
460- let B = size(A)
461- let C = nil
462- func an (E,F) = if ((F >= B))
463- then E
464- else r(E, A[F])
409+@Callable(bo)
410+func preInit (bp,bq,br,bs) = if ((this != bo.caller))
411+ then throw("admin only")
412+ else if ((size(bs) > 13))
413+ then throw("too large pool domain")
414+ else {
415+ let bt = split(bp, ",")
416+ let bu = {
417+ let t = bt
418+ let u = size(t)
419+ let v = nil
420+ func ag (x,y) = if ((y >= u))
421+ then x
422+ else k(x, t[y])
465423
466- func ao (E,F) = if ((F >= B))
467- then E
468- else throw("List size exceeds 10")
424+ func ah (x,y) = if ((y >= u))
425+ then x
426+ else throw("List size exceeds 10")
469427
470- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
471- }
472- let bK = split(bC, ",")
473- let bL = {
474- let A = bK
475- let B = size(A)
476- let C = 0
477- func aG (E,F) = if ((F >= B))
478- then E
479- else by(E, A[F])
428+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
429+ }
430+ let bv = split(bq, ",")
431+ let bw = {
432+ let t = bv
433+ let u = size(t)
434+ let v = 0
435+ func au (x,y) = if ((y >= u))
436+ then x
437+ else bm(x, t[y])
480438
481- func aH (E,F) = if ((F >= B))
482- then E
483- else throw("List size exceeds 10")
439+ func av (x,y) = if ((y >= u))
440+ then x
441+ else throw("List size exceeds 10")
484442
485- aH(aG(aG(aG(aG(aG(aG(aG(aG(aG(aG(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
486- }
487- let bM = if ((indexOf(bB, c) == unit))
488- then d
489- else c
490- func bN (s,bO) = if ((bO >= size(bJ)))
491- then s
492- else {
493- let bP = {
494- let j = bJ[bO]
495- if ($isInstanceOf(j, "ByteVector"))
496- then {
497- let Z = j
498- value(assetInfo(Z)).decimals
499- }
500- else 8
501- }
502- (s ++ [IntegerEntry((("static_" + bI[bO]) + "_scale"), pow(10, 0, bP, 0, 0, DOWN)), IntegerEntry((("static_" + bI[bO]) + "_decimals"), bP), IntegerEntry((("static_" + bI[bO]) + "_weight"), value(parseInt(bK[bO])))])
443+ av(au(au(au(au(au(au(au(au(au(au(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
444+ }
445+ func bx (l,by) = if ((by >= size(bu)))
446+ then l
447+ else {
448+ let bz = {
449+ let c = bu[by]
450+ if ($isInstanceOf(c, "ByteVector"))
451+ then {
452+ let S = c
453+ value(assetInfo(S)).decimals
503454 }
455+ else 8
456+ }
457+ (l ++ [IntegerEntry((("static_" + bt[by]) + "_scale"), pow(10, 0, bz, 0, 0, DOWN)), IntegerEntry((("static_" + bt[by]) + "_decimals"), bz), IntegerEntry((("static_" + bt[by]) + "_weight"), value(parseInt(bv[by])))])
458+ }
504459
505- if ((bL != 10000))
506- then throw("sum of token weights must be equal to 10000")
507- else ({
508- let A = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
509- let B = size(A)
510- let C = nil
511- func bQ (E,F) = if ((F >= B))
512- then E
513- else bN(E, A[F])
460+ if ((bw != 100))
461+ then throw("sum of token weights must be equal to 100")
462+ else ({
463+ let t = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
464+ let u = size(t)
465+ let v = nil
466+ func bA (x,y) = if ((y >= u))
467+ then x
468+ else bx(x, t[y])
514469
515- func bR (E,F) = if ((F >= B))
516- then E
517- else throw("List size exceeds 10")
470+ func bB (x,y) = if ((y >= u))
471+ then x
472+ else throw("List size exceeds 10")
518473
519- bR(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
520- } ++ [StringEntry("static_tokenIds", bB), StringEntry("static_feeToken", bM), StringEntry("static_tokenWeights", bC), IntegerEntry("static_tokensAmount", size(bJ)), StringEntry("static_poolDomain", bE), StringEntry("static_baseTokenId", bD), StringEntry("static_poolOwner", bF), IntegerEntry("static_fee", bG)])
521- }
522- }
474+ bB(bA(bA(bA(bA(bA(bA(bA(bA(bA(bA(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
475+ } ++ [StringEntry("static_tokenIds", bp), StringEntry("static_tokenWeights", bq), IntegerEntry("static_tokensAmount", size(bu)), StringEntry("static_poolDomain", bs), StringEntry("static_baseTokenId", br), IntegerEntry("static_fee", 200)])
476+ }
523477
524478
525479
526-@Callable(bA)
527-func deInit () = if ((bA.caller != this))
480+@Callable(bo)
481+func deInit () = if ((bo.caller != this))
528482 then throw("admin only")
529483 else [IntegerEntry("global_wasInited", 0)]
530484
531485
532486
533-@Callable(bA)
487+@Callable(bo)
534488 func init () = {
535- func bS () = {
536- func aj (s,bz) = (s ++ [IntegerEntry((("global_" + n(bz.assetId)) + "_balance"), bz.amount)])
489+ func bC () = {
490+ func ac (l,bn) = (l ++ [IntegerEntry((("global_" + g(bn.assetId)) + "_balance"), bn.amount)])
537491
538- let A = bA.payments
539- let B = size(A)
540- let C = nil
541- func an (E,F) = if ((F >= B))
542- then E
543- else aj(E, A[F])
492+ let t = bo.payments
493+ let u = size(t)
494+ let v = nil
495+ func ag (x,y) = if ((y >= u))
496+ then x
497+ else ac(x, t[y])
544498
545- func ao (E,F) = if ((F >= B))
546- then E
499+ func ah (x,y) = if ((y >= u))
500+ then x
547501 else throw("List size exceeds 10")
548502
549- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
503+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
550504 }
551505
552- func bT (ai) = {
553- func aj (s,bU) = {
554- let o = bU.assetId
555- func aE (s,bz) = if ((bz == o))
556- then value(indexOf(z, bz))
557- else s
506+ func bD (ab) = {
507+ func ac (l,bE) = {
508+ let h = bE.assetId
509+ func as (l,bn) = if ((bn == h))
510+ then value(indexOf(s, bn))
511+ else l
558512
559- let bV = {
560- let A = z
561- let B = size(A)
562- let C = 1
563- func an (E,F) = if ((F >= B))
564- then E
565- else aE(E, A[F])
513+ let bF = {
514+ let t = s
515+ let u = size(t)
516+ let v = 1
517+ func ag (x,y) = if ((y >= u))
518+ then x
519+ else as(x, t[y])
566520
567- func ao (E,F) = if ((F >= B))
568- then E
521+ func ah (x,y) = if ((y >= u))
522+ then x
569523 else throw("List size exceeds 10")
570524
571- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
525+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
572526 }
573- fraction(s, pow(bU.amount, K[bV], H[bV], R, 8, FLOOR), T)
527+ fraction(l, pow(bE.amount, D[bF], A[bF], K, 8, FLOOR), M)
574528 }
575529
576- let A = ai
577- let B = size(A)
578- let C = W
579- func an (E,F) = if ((F >= B))
580- then E
581- else aj(E, A[F])
530+ let t = ab
531+ let u = size(t)
532+ let v = P
533+ func ag (x,y) = if ((y >= u))
534+ then x
535+ else ac(x, t[y])
582536
583- func ao (E,F) = if ((F >= B))
584- then E
537+ func ah (x,y) = if ((y >= u))
538+ then x
585539 else throw("List size exceeds 10")
586540
587- ao(an(an(an(an(an(an(an(an(an(an(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
541+ ah(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(v, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
588542 }
589543
590- if ((h("global_wasInited") > 0))
544+ if ((a("global_wasInited") > 0))
591545 then throw("pool already inited")
592546 else {
593- let bW = bT(bA.payments)
594- if ((bW == 0))
547+ let bG = bD(bo.payments)
548+ if ((bG == 0))
595549 then throw("you need a bigger tokens amount to launch the pool")
596550 else {
597- let bX = Issue(("PZ " + m("static_poolDomain")), "Puzzle Swap: pool index token", bW, V, true, unit, 0)
598- let bY = calculateAssetId(bX)
599- (bS() ++ [bX, IntegerEntry("global_poolToken_amount", bW), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", bY), StringEntry("static_poolToken_idStr", n(bY)), IntegerEntry((toString(bA.caller) + "_indexStaked"), bW), IntegerEntry("global_indexStaked", bW)])
551+ let bH = Issue(("PZ " + f("static_poolDomain")), "Puzzle Swap: pool index token", bG, O, true, unit, 0)
552+ let bI = calculateAssetId(bH)
553+ (bC() ++ [bH, IntegerEntry("global_poolToken_amount", bG), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", bI), StringEntry("static_poolToken_idStr", g(bI)), ScriptTransfer(bo.caller, bG, bI)])
600554 }
601555 }
602556 }
603557
604558
605559
606-@Callable(bA)
607-func generateIndex (aK) = if ((size(bA.payments) != y))
608- then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(y)))
609- else if (!(aA(bA.payments)))
560+@Callable(bo)
561+func generateIndex (ay) = if ((size(bo.payments) != r))
562+ then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(r)))
563+ else if (!(ao(bo.payments)))
610564 then throw("wrong assets attached")
611565 else {
612- let al = ah(bA.payments)
613- let bZ = Reissue(getBinaryValue("global_poolToken_id"), al, true)
614- let ca = aI(al, bA.payments, bA.originCaller, aK)
615- $Tuple2((ca ++ [ScriptTransfer(bA.caller, al, l("global_poolToken_id")), bZ, IntegerEntry("global_poolToken_amount", (h("global_poolToken_amount") + al))]), al)
566+ let ae = aa(bo.payments)
567+ let bJ = Reissue(getBinaryValue("global_poolToken_id"), ae, true)
568+ let bK = aw(ae, bo.payments, bo.originCaller, ay)
569+ $Tuple2((bK ++ [ScriptTransfer(bo.caller, ae, e("global_poolToken_id")), bJ, IntegerEntry("global_poolToken_amount", (a("global_poolToken_amount") + ae))]), ae)
616570 }
617571
618572
619573
620-@Callable(bA)
574+@Callable(bo)
621575 func stakeIndex () = {
622- let br = toString(bA.originCaller)
623- let bU = bA.payments[0]
624- if ((value(bU.assetId) != l("global_poolToken_id")))
576+ let bf = toString(bo.originCaller)
577+ let bE = bo.payments[0]
578+ if ((value(bE.assetId) != e("global_poolToken_id")))
625579 then throw("wrong asset attached")
626- else bw(br, bU.amount)
580+ else bk(bf, bE.amount)
627581 }
628582
629583
630584
631-@Callable(bA)
632-func unstakeIndex (bs) = {
633- let br = toString(bA.originCaller)
634- let cb = h((br + "_indexStaked"))
635- if ((bs > cb))
585+@Callable(bo)
586+func unstakeIndex (bg) = {
587+ let bf = toString(bo.originCaller)
588+ let bL = a((bf + "_indexStaked"))
589+ if ((bg > bL))
636590 then throw("you don't have index tokens available")
637- else if (Y())
638- then throw("contract is on stop")
639- else (bp(bA.originCaller) ++ [IntegerEntry((br + "_indexStaked"), (cb - bs)), IntegerEntry("global_indexStaked", (h("global_indexStaked") - bs)), ScriptTransfer(bA.caller, bs, getBinaryValue("global_poolToken_id"))])
591+ else (bd(bo.originCaller) ++ [IntegerEntry((bf + "_indexStaked"), (bL - bg)), IntegerEntry("global_indexStaked", (a("global_indexStaked") - bg)), ScriptTransfer(bo.caller, bg, getBinaryValue("global_poolToken_id"))])
640592 }
641593
642594
643595
644-@Callable(bA)
645-func claimIndexRewards () = if (Y())
646- then throw("contract is on stop")
647- else bp(bA.caller)
596+@Callable(bo)
597+func claimIndexRewards () = bd(bo.caller)
648598
649599
650600
651-@Callable(bA)
652-func redeemIndex (cc) = {
653- let bU = bA.payments[0]
654- if ((bU.assetId != l("global_poolToken_id")))
601+@Callable(bo)
602+func redeemIndex (bM) = {
603+ let bE = bo.payments[0]
604+ if ((bE.assetId != e("global_poolToken_id")))
655605 then throw("please attach pool share token")
656- else if (Y())
657- then throw("contract is on stop")
606+ else {
607+ let aJ = bE.amount
608+ let bK = aI(aJ, if (bM)
609+ then bo.originCaller
610+ else bo.caller)
611+ (bK ++ [Burn(e("global_poolToken_id"), aJ), IntegerEntry("global_poolToken_amount", (a("global_poolToken_amount") - aJ))])
612+ }
613+ }
614+
615+
616+
617+@Callable(bo)
618+func swap (aO,bN) = {
619+ let bE = value(bo.payments[0])
620+ let aM = value(bo.payments[0].amount)
621+ let bO = bE.assetId
622+ let bP = i(aO)
623+ let bQ = a((("global_" + g(bO)) + "_balance"))
624+ let bR = a((("global_" + aO) + "_balance"))
625+ let bS = aL(aM, bO, bP, bQ, bR)
626+ let bT = fraction(bS, J, N)
627+ let bU = (bS - bT)
628+ if ((bN > bU))
629+ then throw(("amount to recieve is lower than given one: " + toString(bU)))
630+ else if ((0 > (bR - bS)))
631+ then throw("contract is out of reserves")
658632 else {
659- let aV = bU.amount
660- let ca = aU(aV, if (cc)
661- then bA.originCaller
662- else bA.caller)
663- (ca ++ [Burn(l("global_poolToken_id"), aV), IntegerEntry("global_poolToken_amount", (h("global_poolToken_amount") - aV))])
633+ let bV = (bQ + aM)
634+ let bW = (bR - bS)
635+ let bX = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
636+ if ((bX == bP))
637+ then {
638+ let bY = bT
639+ let bZ = fraction(bY, 4, 10)
640+ let ca = reentrantInvoke(Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS'), "topUpReward", nil, [AttachedPayment(bX, bZ)])
641+ if ((ca == ca))
642+ then $Tuple2([IntegerEntry((("global_" + aO) + "_balance"), bW), IntegerEntry((("global_" + g(bO)) + "_balance"), bV), ScriptTransfer(bo.caller, bU, bP), IntegerEntry("global_volume", (a("global_volume") + ai(bO, aM, bQ)))], bU)
643+ else throw("Strict value is not equal to itself.")
644+ }
645+ else {
646+ let an = if ((bO == bX))
647+ then bV
648+ else a((("global_" + g(bX)) + "_balance"))
649+ let bY = aL(bT, bP, bX, bW, an)
650+ let bZ = fraction(bY, 4, 10)
651+ let ca = reentrantInvoke(Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS'), "topUpReward", nil, [AttachedPayment(bX, bZ)])
652+ if ((ca == ca))
653+ then {
654+ let cb = IntegerEntry((("global_" + toBase58String(bX)) + "_balance"), (an - bY))
655+ let cc = if ((bO == bX))
656+ then [cb]
657+ else [cb, IntegerEntry((("global_" + g(bO)) + "_balance"), bV)]
658+ $Tuple2(([IntegerEntry((("global_" + aO) + "_balance"), (bW + bT)), ScriptTransfer(bo.caller, bU, bP), IntegerEntry("global_volume", (a("global_volume") + ai(bO, aM, bQ)))] ++ cc), bU)
659+ }
660+ else throw("Strict value is not equal to itself.")
661+ }
664662 }
665663 }
666664
667665
668666
669-@Callable(bA)
670-func swap (ba,cd) = {
671- let bU = if ((size(bA.payments) == 1))
672- then value(bA.payments[0])
673- else throw("please attach exactly one payment")
674- let aY = value(bA.payments[0].amount)
675- let ce = bU.assetId
676- let cf = p(ba)
677- let cg = ce
678- let ch = m("static_feeToken")
679- let ci = if ((ch == ""))
680- then a
681- else fromBase58String(ch)
682- let cj = h((("global_" + n(ce)) + "_balance"))
683- let ck = h((("global_" + ba) + "_balance"))
684- let cl = h((("global_" + n(ci)) + "_balance"))
685- let cm = fraction(aY, Q, U)
686- let cn = (aY - cm)
687- let co = aX(cn, ce, cf, cj, ck)
688- let cp = aX(cm, ce, ci, cj, cl)
689- if ((cd > co))
690- then throw(("amount to recieve is lower than given one: " + toString(co)))
691- else if ((cf == ce))
692- then throw("this swap is not allowed")
693- else if ((0 > (ck - co)))
694- then throw("contract is out of reserves")
695- else if (Y())
696- then throw("contract is on stop")
697- else {
698- let cq = fraction(cp, 1, 10)
699- let cr = fraction(cp, 4, 10)
700- let cs = if ((ci == a))
701- then reentrantInvoke(Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS'), "topUpReward", nil, [AttachedPayment(ci, cr)])
702- else unit
703- if ((cs == cs))
704- then {
705- let ct = ((cj + aY) - (if ((ce == ci))
706- then cp
707- else 0))
708- let cu = ((ck - co) - (if ((cf == ci))
709- then cp
710- else 0))
711- let cv = if (if ((ci != ce))
712- then (ci != cf)
713- else false)
714- then (cl - cp)
715- else unit
716- let cw = IntegerEntry((("global_" + n(ce)) + "_balance"), ct)
717- let cx = IntegerEntry((("global_" + ba) + "_balance"), cu)
718- let cy = if ((cv != unit))
719- then IntegerEntry((("global_" + n(ci)) + "_balance"), cl)
720- else StringEntry("hello", "world")
721- $Tuple2([cx, cw, cy, ScriptTransfer(bA.caller, co, cf), ScriptTransfer(addressFromStringValue(m("static_poolOwner")), cq, ci), IntegerEntry("global_earnedByOwner", (h("global_earnedByOwner") + cq)), IntegerEntry("global_volume", (h("global_volume") + ap(ce, aY, cj, cl)))], co)
722- }
723- else throw("Strict value is not equal to itself.")
724- }
725- }
667+@Callable(bo)
668+func calcSwap (cd,ce,X) = $Tuple2(nil, aL(X, fromBase58String(cd), fromBase58String(ce), a((("global_" + cd) + "_balance")), a((("global_" + ce) + "_balance"))))
726669
727670
728-@Verifier(cz)
729-func cA () = if (Y())
671+@Verifier(cf)
672+func cg () = if (R())
730673 then false
731- else if (sigVerify(cz.bodyBytes, cz.proofs[0], cz.senderPublicKey))
732- then true
733- else sigVerify(cz.bodyBytes, cz.proofs[0], g)
674+ else sigVerify(cf.bodyBytes, cf.proofs[0], cf.senderPublicKey)
734675

github/deemru/w8io/3ef1775 
256.08 ms