tx · 69ysPdCVGZFawLKhuouPBETMhPfG8Xgwzbbq3o9Z5Ri1

3N95taAsiWcVMmXdVShZ2ann6MAboXrFT1b:  -0.01400000 Waves

2021.07.20 16:53 [1622025] smart account 3N95taAsiWcVMmXdVShZ2ann6MAboXrFT1b > SELF 0.00000000 Waves

{ "type": 13, "id": "69ysPdCVGZFawLKhuouPBETMhPfG8Xgwzbbq3o9Z5Ri1", "fee": 1400000, "feeAssetId": null, "timestamp": 1626789276271, "version": 2, "chainId": 84, "sender": "3N95taAsiWcVMmXdVShZ2ann6MAboXrFT1b", "senderPublicKey": "EDQ1awBPdPh8m86bDaSLf5pynLiRVX4kcPLMxYLRScq5", "proofs": [ "5kKXNhKHtB6kLUDCifY4RPfZ7H4EzqNz6CEhGSTpg3zpJUf9uuHrQgjq7TdtPVeXqHxjv7jFtKkfa4MLZBWinCu3", "5yqCSm5AukbrBktVAZCNL9sjyfsBT9pFbH2afbjbBVUpSQF9b4KTUZ7pCLHtu9kMnrkWsXBPnTbDoPhSBhdCnbaC" ], "script": "base64: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AAAEdGhpcwAAAAlhdmFpbGFibGUJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAADHN0YWtlZEFtb3VudAAAAAIAAAAOc3Rha2luZ0FkZHJlc3MAAAAFYXNzZXQEAAAAFnN0YWtlZEFtb3VudENhbGN1bGF0ZWQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAOc3Rha2luZ0FkZHJlc3MJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADHJwZF9iYWxhbmNlXwUAAAAFYXNzZXQCAAAAAV8JAAQlAAAAAQUAAAAEdGhpcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAZzdGFrZWQFAAAAByRtYXRjaDAFAAAABnN0YWtlZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAAAAAAAAAAAAAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgUAAAAWc3Rha2VkQW1vdW50Q2FsY3VsYXRlZAAAAAANc3Rha2VkQW1vdW50QQkBAAAADHN0YWtlZEFtb3VudAAAAAIFAAAAEnN0YWtpbmdBZGRyZXNzVVNETgUAAAALc3RyQXNzZXRJZEEAAAAADXN0YWtlZEFtb3VudEIJAQAAAAxzdGFrZWRBbW91bnQAAAACBQAAABJzdGFraW5nQWRkcmVzc1VTRE4FAAAAC3N0ckFzc2V0SWRCAAAAABFhdmFpbGFibGVCYWxhbmNlQQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAANc3Rha2VkQW1vdW50QQAAAAARYXZhaWxhYmxlQmFsYW5jZUIJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAADXN0YWtlZEFtb3VudEIAAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEEJAABkAAAAAgkBAAAADmFjY291bnRCYWxhbmNlAAAAAQUAAAAIYXNzZXRJZEEFAAAADXN0YWtlZEFtb3VudEEAAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEIJAABkAAAAAgkBAAAADmFjY291bnRCYWxhbmNlAAAAAQUAAAAIYXNzZXRJZEIFAAAADXN0YWtlZEFtb3VudEIAAAAAEGhhc0Vub3VnaEJhbGFuY2UDCQAAZwAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEEFAAAACGJhbGFuY2VBCQAAZwAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEIFAAAACGJhbGFuY2VCBwEAAAAMZ2V0QXNzZXRJbmZvAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAQAAAAIc3RyaW5nSWQJAAJYAAAAAQUAAAACaWQEAAAABGluZm8JAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABBQAAAAJpZAkAASwAAAACCQABLAAAAAICAAAABkFzc2V0IAUAAAAIc3RyaW5nSWQCAAAADiBkb2Vzbid0IGV4aXN0CQAFFQAAAAMFAAAACHN0cmluZ0lkCAUAAAAEaW5mbwAAAARuYW1lCAUAAAAEaW5mbwAAAAhkZWNpbWFscwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDAJAAUVAAAAAwIAAAAFV0FWRVMCAAAABVdBVkVTAAAAAAAAAAAICQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAAdzdXNwZW5kAAAAAQAAAAVjYXVzZQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAhrZXlDYXVzZQUAAAAFY2F1c2UFAAAAA25pbAEAAAAQc3Rha2VkVG9rZW5Db3VudAAAAAAEAAAACWlzU3Rha2VkQQMJAABmAAAAAgUAAAANc3Rha2VkQW1vdW50QQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAQAAAAJaXNTdGFrZWRCAwkAAGYAAAACBQAAAA1zdGFrZWRBbW91bnRCAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAACQAAZAAAAAIFAAAACWlzU3Rha2VkQQUAAAAJaXNTdGFrZWRCAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgAAAAZhbW91bnQAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAAEVVNETgQAAAAGcmVzdWx0CQAAZQAAAAIFAAAABmFtb3VudAkAAGgAAAACCQEAAAAQc3Rha2VkVG9rZW5Db3VudAAAAAAFAAAAEHN0YWtpbmdGZWVJblVTRE4DCQAAZwAAAAIAAAAAAAAAAAAFAAAABnJlc3VsdAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFEluc3VmZmljaWVudCBhbW91bnQgCQABpAAAAAEFAAAABmFtb3VudAIAAAAXIHRvIGRlZHVjdCBzdGFraW5nIGZlZSAJAAGkAAAAAQUAAAAQc3Rha2luZ0ZlZUluVVNETgIAAAAGIFVTRC1OBQAAAAZyZXN1bHQFAAAABmFtb3VudAEAAAAhdGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlAAAAAwAAAAZhbW91bnQAAAAJYXZhaWxhYmxlAAAACWFzc2V0TmFtZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAhSW5zdWZmaWNpZW50IERBcHAgYmFsYW5jZSB0byBwYXkgCQABpAAAAAEFAAAABmFtb3VudAIAAAABIAUAAAAJYXNzZXROYW1lAgAAABwgZHVlIHRvIHN0YWtpbmcuIEF2YWlsYWJsZTogCQABpAAAAAEFAAAACWF2YWlsYWJsZQIAAAABIAUAAAAJYXNzZXROYW1lAgAAAEAuIFBsZWFzZSBjb250YWN0IHN1cHBvcnQgaW4gVGVsZWdyYW06IGh0dHBzOi8vdC5tZS9zd29wZmlzdXBwb3J0AQAAACJ0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2VzAAAAAgAAAAdhbW91bnRBAAAAB2Ftb3VudEIJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACFJbnN1ZmZpY2llbnQgREFwcCBiYWxhbmNlIHRvIHBheSAJAAGkAAAAAQUAAAAHYW1vdW50QQIAAAABIAUAAAAKYXNzZXROYW1lQQIAAAAFIGFuZCAJAAGkAAAAAQUAAAAHYW1vdW50QgIAAAABIAUAAAAKYXNzZXROYW1lQgIAAAAcIGR1ZSB0byBzdGFraW5nLiBBdmFpbGFibGU6IAkAAaQAAAABBQAAABFhdmFpbGFibGVCYWxhbmNlQQIAAAABIAUAAAAKYXNzZXROYW1lQQIAAAAFIGFuZCAJAAGkAAAAAQUAAAARYXZhaWxhYmxlQmFsYW5jZUICAAAAASAFAAAACmFzc2V0TmFtZUICAAAAQC4gUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBpbiBUZWxlZ3JhbTogaHR0cHM6Ly90Lm1lL3N3b3BmaXN1cHBvcnQBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAkBAAAAB3N1c3BlbmQAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACNTdXNwaWNpb3VzIHN0YXRlLiBBY3R1YWwgYmFsYW5jZXM6IAkAAaQAAAABBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRBAgAAAAEgBQAAAAphc3NldE5hbWVBAgAAAAIsIAkAAaQAAAABBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRCAgAAAAEgBQAAAAphc3NldE5hbWVCAgAAAAkuIFN0YXRlOiAJAAGkAAAAAQUAAAAIYmFsYW5jZUECAAAAASAFAAAACmFzc2V0TmFtZUECAAAAAiwgCQABpAAAAAEFAAAACGJhbGFuY2VCAgAAAAEgBQAAAAphc3NldE5hbWVCAAAABwAAAAFpAQAAAARpbml0AAAAAAQAAAALJHQwNTYxMzU2OTAJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAApwbXRBbW91bnRBCAUAAAALJHQwNTYxMzU2OTAAAAACXzEEAAAAC3BtdEFzc2V0SWRBCAUAAAALJHQwNTYxMzU2OTAAAAACXzIEAAAACyR0MDU2OTU1NzcyCQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAHYXNzZXRJZAQAAAAKcG10QW1vdW50QggFAAAACyR0MDU2OTU1NzcyAAAAAl8xBAAAAAtwbXRBc3NldElkQggFAAAACyR0MDU2OTU1NzcyAAAAAl8yBAAAAAskdDA1Nzc3NTg1NAkBAAAADGdldEFzc2V0SW5mbwAAAAEFAAAAC3BtdEFzc2V0SWRBBAAAAA5wbXRTdHJBc3NldElkQQgFAAAACyR0MDU3Nzc1ODU0AAAAAl8xBAAAAA1wbXRBc3NldE5hbWVBCAUAAAALJHQwNTc3NzU4NTQAAAACXzIEAAAADHBtdERlY2ltYWxzQQgFAAAACyR0MDU3Nzc1ODU0AAAAAl8zBAAAAAskdDA1ODU5NTkzNgkBAAAADGdldEFzc2V0SW5mbwAAAAEFAAAAC3BtdEFzc2V0SWRCBAAAAA5wbXRTdHJBc3NldElkQggFAAAACyR0MDU4NTk1OTM2AAAAAl8xBAAAAA1wbXRBc3NldE5hbWVCCAUAAAALJHQwNTg1OTU5MzYAAAACXzIEAAAADHBtdERlY2ltYWxzQggFAAAACyR0MDU4NTk1OTM2AAAAAl8zAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQbAAAAAgUAAAAEdGhpcwUAAAAJa2V5QWN0aXZlCQAAAgAAAAECAAAAFkRBcHAgaXMgYWxyZWFkeSBhY3RpdmUDCQAAAAAAAAIFAAAAC3BtdEFzc2V0SWRBBQAAAAtwbXRBc3NldElkQgkAAAIAAAABAgAAABhBc3NldHMgbXVzdCBiZSBkaWZmZXJlbnQEAAAACXNoYXJlTmFtZQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAABcwkAAS8AAAACBQAAAA1wbXRBc3NldE5hbWVBAAAAAAAAAAAHAgAAAAFfCQABLwAAAAIFAAAADXBtdEFzc2V0TmFtZUIAAAAAAAAAAAcEAAAAEHNoYXJlRGVzY3JpcHRpb24JAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACJTaGFyZVRva2VuIG9mIFN3b3BGaSBwcm90b2NvbCBmb3IgBQAAAA1wbXRBc3NldE5hbWVBAgAAAAUgYW5kIAUAAAANcG10QXNzZXROYW1lQgIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAABHRoaXMEAAAADXNoYXJlRGVjaW1hbHMJAABpAAAAAgkAAGQAAAACBQAAAAxwbXREZWNpbWFsc0EFAAAADHBtdERlY2ltYWxzQgAAAAAAAAAAAgQAAAASc2hhcmVJbml0aWFsU3VwcGx5CQAAawAAAAMJAABsAAAABgUAAAAKcG10QW1vdW50QQUAAAAMcG10RGVjaW1hbHNBAAAAAAAAAAAFAAAAAAAAAAABBQAAAAxwbXREZWNpbWFsc0EFAAAACEhBTEZET1dOCQAAbAAAAAYFAAAACnBtdEFtb3VudEIFAAAADHBtdERlY2ltYWxzQgAAAAAAAAAABQAAAAAAAAAAAQUAAAAMcG10RGVjaW1hbHNCBQAAAAhIQUxGRE9XTgkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAA1zaGFyZURlY2ltYWxzAAAAAAAAAAAAAAAAAAAAAAAABQAAAAhIQUxGRE9XTgQAAAAKc2hhcmVJc3N1ZQkABEIAAAAFBQAAAAlzaGFyZU5hbWUFAAAAEHNoYXJlRGVzY3JpcHRpb24FAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAANc2hhcmVEZWNpbWFscwYEAAAADHNoYXJlSXNzdWVJZAkABDgAAAABBQAAAApzaGFyZUlzc3VlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACmtleVZlcnNpb24FAAAAB3ZlcnNpb24JAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAACWtleUFjdGl2ZQYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEEFAAAADnBtdFN0ckFzc2V0SWRBCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAC2tleUFzc2V0SWRCBQAAAA5wbXRTdHJBc3NldElkQgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUEFAAAACnBtdEFtb3VudEEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAApwbXRBbW91bnRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA1rZXlDb21taXNzaW9uBQAAAApjb21taXNzaW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABtrZXlDb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgkABEwAAAACBQAAAApzaGFyZUlzc3VlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAD2tleVNoYXJlQXNzZXRJZAkAAlgAAAABBQAAAAxzaGFyZUlzc3VlSWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tleVNoYXJlQXNzZXRTdXBwbHkFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAAMc2hhcmVJc3N1ZUlkBQAAAANuaWwAAAABaQEAAAAWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwAAAAEAAAARc2xpcHBhZ2VUb2xlcmFuY2UEAAAAC3BtdEFzc2V0SWRBCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAtwbXRBc3NldElkQggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAHYXNzZXRJZAQAAAAKcG10QW1vdW50QQkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQFAAAAC3BtdEFzc2V0SWRBBAAAAApwbXRBbW91bnRCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAAAABmFtb3VudAUAAAALcG10QXNzZXRJZEIEAAAACnRva2VuUmF0aW8JAABrAAAAAwkAAGsAAAADBQAAAAhiYWxhbmNlQQUAAAALc2NhbGVWYWx1ZTgFAAAACnBtdEFtb3VudEEFAAAAC3NjYWxlVmFsdWUzCQAAawAAAAMFAAAACGJhbGFuY2VCBQAAAAtzY2FsZVZhbHVlOAUAAAAKcG10QW1vdW50QgQAAAATcmF0aW9TaGFyZVRva2Vuc0luQQkAAGsAAAADBQAAAApwbXRBbW91bnRBBQAAAAtzY2FsZVZhbHVlOAUAAAAIYmFsYW5jZUEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwUAAAAKcG10QW1vdW50QgUAAAALc2NhbGVWYWx1ZTgFAAAACGJhbGFuY2VCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAtzY2FsZVZhbHVlOAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBgkAAGYAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAApU2xpcHBhZ2UgdG9sZXJhbmNlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAJAAGkAAAAAQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXICAAAAFiBpbmNsdXNpdmVseS4gQWN0dWFsOiAJAAGkAAAAAQUAAAARc2xpcHBhZ2VUb2xlcmFuY2UDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAACCQAAAgAAAAECAAAAHFR3byBhdHRhY2hlZCBhc3NldHMgZXhwZWN0ZWQDAwkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEEFAAAACGFzc2V0SWRBBgkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEIFAAAACGFzc2V0SWRCCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJUluY29ycmVjdCBhc3NldHMgYXR0YWNoZWQuIEV4cGVjdGVkOiAFAAAAC3N0ckFzc2V0SWRBAgAAAAUgYW5kIAUAAAALc3RyQXNzZXRJZEIDAwkAAGYAAAACCQAAaQAAAAIJAABoAAAAAgUAAAALc2NhbGVWYWx1ZTMJAABlAAAAAgUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgUAAAAKdG9rZW5SYXRpbwYJAABmAAAAAgUAAAAKdG9rZW5SYXRpbwkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWUzCQAAZAAAAAIFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIJAAACAAAAAQIAAAA9SW5jb3JyZWN0IGFzc2V0cyBhbW91bnQ6IGFtb3VudHMgbXVzdCBoYXZlIHRoZSBjb250cmFjdCByYXRpbwMJAAAAAAAAAgUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAAHVRvbyBzbWFsbCBhbW91bnQgdG8gcmVwbGVuaXNoAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAApwbXRBbW91bnRBBQAAAAtwbXRBc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACnBtdEFtb3VudEIFAAAAC3BtdEFzc2V0SWRCBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQkAAGQAAAACBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAAQAAAANJHQwMTAwMDkxMDE1OQkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDEwMDA5MTAxNTkAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxMDAwOTEwMTU5AAAAAl8yBAAAAAxhbW91bnRUb1BheUEJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VBBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAhhc3NldElkQQQAAAAMYW1vdW50VG9QYXlCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIJAABrAAAAAwUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAIYXNzZXRJZEIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAMc2hhcmVBc3NldElkCQAAAgAAAAEJAAEsAAAAAgIAAAAkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogCQACWAAAAAEFAAAADHNoYXJlQXNzZXRJZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkAAGYAAAACBQAAAAxhbW91bnRUb1BheUEFAAAAEWF2YWlsYWJsZUJhbGFuY2VBBgkAAGYAAAACBQAAAAxhbW91bnRUb1BheUIFAAAAEWF2YWlsYWJsZUJhbGFuY2VCCQEAAAAidGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlcwAAAAIFAAAADGFtb3VudFRvUGF5QQUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9QYXlBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrZXlTaGFyZUFzc2V0U3VwcGx5CQAAZQAAAAIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAADHNoYXJlQXNzZXRJZAUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9QYXlBBQAAAAhhc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADGFtb3VudFRvUGF5QgUAAAAIYXNzZXRJZEIFAAAAA25pbAAAAAFpAQAAAAhleGNoYW5nZQAAAAEAAAASbWluQW1vdW50VG9SZWNlaXZlBAAAAA0kdDAxMTM2NTExNDQwCQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTEzNjUxMTQ0MAAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDExMzY1MTE0NDAAAAACXzIKAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgAAAAl0b2tlbkZyb20AAAAHdG9rZW5UbwQAAAAQYW1vdW50V2l0aG91dEZlZQkAAGsAAAADBQAAAAd0b2tlblRvBQAAAAlwbXRBbW91bnQJAABkAAAAAgUAAAAJcG10QW1vdW50BQAAAAl0b2tlbkZyb20EAAAADWFtb3VudFdpdGhGZWUJAABrAAAAAwUAAAAQYW1vdW50V2l0aG91dEZlZQkAAGUAAAACBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACmNvbW1pc3Npb24FAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgQAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGsAAAADBQAAABBhbW91bnRXaXRob3V0RmVlBQAAABRjb21taXNzaW9uR292ZXJuYW5jZQUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyAwkAAGYAAAACBQAAABJtaW5BbW91bnRUb1JlY2VpdmUFAAAADWFtb3VudFdpdGhGZWUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAdQ2FsY3VsYXRlZCBhbW91bnQgdG8gcmVjZWl2ZSAJAAGkAAAAAQUAAAANYW1vdW50V2l0aEZlZQIAAAAgIGlzIGxlc3MgdGhhbiBzcGVjaWZpZWQgbWluaW11bSAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlCQAFFQAAAAMFAAAAEGFtb3VudFdpdGhvdXRGZWUFAAAADWFtb3VudFdpdGhGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQkAAAIAAAABCQABLAAAAAICAAAANE1pbmltYWwgYW1vdW50IHRvIHJlY2VpdmUgbXVzdCBiZSBwb3NpdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRBBAAAAAthc3NldElkU2VuZAUAAAAIYXNzZXRJZEIEAAAADSR0MDEyNjE1MTI3MDYJAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgUAAAAIYmFsYW5jZUEFAAAACGJhbGFuY2VCBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMTI2MTUxMjcwNgAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDEyNjE1MTI3MDYAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAxMjYxNTEyNzA2AAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BAAAAAtuZXdCYWxhbmNlQgkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkAwMJAABnAAAAAgUAAAANc3Rha2VkQW1vdW50QQUAAAALbmV3QmFsYW5jZUEGCQAAZwAAAAIFAAAADXN0YWtlZEFtb3VudEIFAAAAC25ld0JhbGFuY2VCCQEAAAAhdGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlAAAAAwUAAAANYW1vdW50V2l0aEZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUIFAAAACmFzc2V0TmFtZUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAAC25ld0JhbGFuY2VCCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAANYW1vdW50V2l0aEZlZQUAAAALYXNzZXRJZFNlbmQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARZ292ZXJuYW5jZUFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBAAAAAthc3NldElkU2VuZAUAAAAIYXNzZXRJZEEEAAAADSR0MDEzNTI5MTM2MjAJAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgUAAAAIYmFsYW5jZUIFAAAACGJhbGFuY2VBBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMTM1MjkxMzYyMAAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDEzNTI5MTM2MjAAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAxMzUyOTEzNjIwAAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkBAAAAAtuZXdCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50AwMJAABnAAAAAgUAAAANc3Rha2VkQW1vdW50QQUAAAALbmV3QmFsYW5jZUEGCQAAZwAAAAIFAAAADXN0YWtlZEFtb3VudEIFAAAAC25ld0JhbGFuY2VCCQEAAAAhdGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlAAAAAwUAAAANYW1vdW50V2l0aEZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUEFAAAACmFzc2V0TmFtZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAAC25ld0JhbGFuY2VCCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAANYW1vdW50V2l0aEZlZQUAAAALYXNzZXRJZFNlbmQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARZ292ZXJuYW5jZUFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogBQAAAAtzdHJBc3NldElkQQIAAAAEIG9yIAUAAAALc3RyQXNzZXRJZEIAAAABaQEAAAAIc2h1dGRvd24AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAIa2V5Q2F1c2UCAAAAGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQEAAAAHc3VzcGVuZAAAAAECAAAAD1BhdXNlZCBieSBhZG1pbgAAAAFpAQAAAAhhY3RpdmF0ZQAAAAADBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAACGtleUNhdXNlBQAAAANuaWwAAAABaQEAAAAZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwAAAAEAAAALYW1vdW50TGVhdmUEAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRBCQAAZQAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEEFAAAACGJhbGFuY2VBBAAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QgkAAGUAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRCBQAAAAhiYWxhbmNlQgQAAAANYW1vdW50RW5yb2xsQQkAAGUAAAACBQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABHVuaXQFAAAAC2Ftb3VudExlYXZlAAAAAAAAAAAABAAAAA1hbW91bnRFbnJvbGxCCQAAZQAAAAIFAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRCAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAEdW5pdAUAAAALYW1vdW50TGVhdmUAAAAAAAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAArT25seSB0aGUgREFwcCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAABmAAAAAgAAAAAAAAAAAAUAAAALYW1vdW50TGVhdmUJAAACAAAAAQkAASwAAAACAgAAADNBcmd1bWVudCAnYW1vdW50TGVhdmUnIGNhbm5vdCBiZSBuZWdhdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAALYW1vdW50TGVhdmUDAwkAAGYAAAACAAAAAAAAAAAABQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQYJAABmAAAAAgAAAAAAAAAAAAUAAAAddW5jb3VudGFibGVBbW91bnRFbnJvbGxBc3NldEIJAQAAAAdzdXNwZW5kAAAAAQIAAAAWRW5yb2xsIGFtb3VudCBuZWdhdGl2ZQMDCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFtb3VudEVucm9sbEEGCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFtb3VudEVucm9sbEIJAAACAAAAAQIAAAAVVG9vIGxhcmdlIGFtb3VudExlYXZlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAANYW1v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", "height": 1622025, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Gp1B9iArShJ62KJUTrSrA5H9GNXnr9qeVMJ8fTLxe7in Next: none Diff:
OldNewDifferences
1515
1616 let g = "B_asset_balance"
1717
18-let h = "A_asset_init"
18+let h = "share_asset_id"
1919
20-let i = "B_asset_init"
20+let i = "share_asset_supply"
2121
22-let j = "share_asset_id"
22+let j = "commission"
2323
24-let k = "share_asset_supply"
24+let k = "commission_scale_delimiter"
2525
26-let l = "commission"
26+let l = "shutdown_cause"
2727
28-let m = "commission_scale_delimiter"
28+let m = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
2929
30-let n = "shutdown_cause"
30+let n = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3131
32-let o = "first_harvest"
32+let o = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3333
34-let p = "first_harvest_height"
34+let p = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3535
36-let q = "share_limit_on_first_harvest"
36+let q = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3737
38-let r = "base_period"
38+let r = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
3939
40-let s = "period_length"
40+let s = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
4141
42-let t = "start_height"
42+let t = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
4343
44-let u = "first_harvest_height"
44+let u = base58'36mg8NZTaFRDygiVwb8uBnLR51hetJruUCZcxhaVcHj9'
4545
46-let v = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
46+let v = base58'2HAJrwa8q4SxBx9cHYaBTQdBjdk5wwqdof7ccpAx2uhZ'
4747
48-let w = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
48+let w = Address(base58'3N3g1MVp6DXyfqhq8sMPA6CRRkTTPtBsZeh')
4949
50-let x = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
50+let x = Address(base58'3N95taAsiWcVMmXdVShZ2ann6MAboXrFT1b')
5151
52-let y = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
52+let y = 270000
5353
54-let z = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
54+let z = getBooleanValue(this, c)
5555
56-let A = base58'5CqqMkmtXXt35KRH9LdWA3ap6TffPvTT5SHQzYrVFbBw'
56+let A = getStringValue(this, d)
5757
58-let B = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
58+let B = getStringValue(this, e)
5959
60-let C = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
60+let C = if ((A == "WAVES"))
61+ then unit
62+ else fromBase58String(A)
6163
62-let D = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
64+let D = if ((B == "WAVES"))
65+ then unit
66+ else fromBase58String(B)
6367
64-let E = Address(base58'3N3g1MVp6DXyfqhq8sMPA6CRRkTTPtBsZeh')
65-
66-let F = valueOrErrorMessage(getInteger(C, r), "Empty kBasePeriod")
67-
68-let G = valueOrErrorMessage(getInteger(C, t), "Empty kStartHeight")
69-
70-let H = valueOrErrorMessage(getInteger(C, s), "Empty kPeriodLength")
71-
72-let I = ((F + ((height - G) / H)) + 3)
73-
74-let J = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
75-
76-let K = 270000
77-
78-let L = getBooleanValue(this, c)
79-
80-let M = getStringValue(this, d)
81-
82-let N = getStringValue(this, e)
83-
84-let O = if ((M == "WAVES"))
85- then unit
86- else fromBase58String(M)
87-
88-let P = if ((N == "WAVES"))
89- then unit
90- else fromBase58String(N)
91-
92-let Q = {
93- let R = O
94- if ($isInstanceOf(R, "ByteVector"))
68+let E = {
69+ let F = C
70+ if ($isInstanceOf(F, "ByteVector"))
9571 then {
96- let S = R
97- value(assetInfo(S)).name
72+ let G = F
73+ value(assetInfo(G)).name
9874 }
99- else if ($isInstanceOf(R, "Unit"))
75+ else if ($isInstanceOf(F, "Unit"))
10076 then {
101- let T = R
77+ let H = F
10278 "WAVES"
10379 }
10480 else throw("Match error")
10581 }
10682
107-let U = {
108- let R = P
109- if ($isInstanceOf(R, "ByteVector"))
83+let I = {
84+ let F = D
85+ if ($isInstanceOf(F, "ByteVector"))
11086 then {
111- let S = R
112- value(assetInfo(S)).name
87+ let G = F
88+ value(assetInfo(G)).name
11389 }
114- else if ($isInstanceOf(R, "Unit"))
90+ else if ($isInstanceOf(F, "Unit"))
11591 then {
116- let T = R
92+ let H = F
11793 "WAVES"
11894 }
11995 else throw("Match error")
12096 }
12197
122-let V = getIntegerValue(this, f)
98+let J = getIntegerValue(this, f)
12399
124-let W = getIntegerValue(this, g)
100+let K = getIntegerValue(this, g)
125101
126-let X = fromBase58String(getStringValue(this, j))
102+let L = fromBase58String(getStringValue(this, h))
127103
128-let Y = getIntegerValue(this, k)
104+let M = getIntegerValue(this, i)
129105
130-let Z = 3000
106+let N = 3000
131107
132-let aa = 1200
108+let O = 1200
133109
134-let ab = 1000000
110+let P = 1000000
135111
136-let ac = 1000
112+let Q = 1000
137113
138-let ad = 100000000
114+let R = 100000000
139115
140-let ae = 1000
116+let S = 1000
141117
142-let af = 8
118+let T = 8
143119
144-func ag (ah) = {
145- let R = ah
146- if ($isInstanceOf(R, "ByteVector"))
120+func U (V) = {
121+ let F = V
122+ if ($isInstanceOf(F, "ByteVector"))
147123 then {
148- let S = R
149- assetBalance(this, S)
124+ let G = F
125+ assetBalance(this, G)
150126 }
151- else if ($isInstanceOf(R, "Unit"))
127+ else if ($isInstanceOf(F, "Unit"))
152128 then {
153- let T = R
129+ let H = F
154130 wavesBalance(this).available
155131 }
156132 else throw("Match error")
157133 }
158134
159135
160-let ai = {
161- let R = getInteger(D, ((("rpd_balance_" + toBase58String(J)) + "_") + toString(this)))
162- if ($isInstanceOf(R, "Int"))
163- then {
164- let aj = R
165- aj
166- }
167- else if ($isInstanceOf(R, "Unit"))
136+func W (X,Y) = {
137+ let Z = {
138+ let F = getInteger(X, ((("rpd_balance_" + Y) + "_") + toString(this)))
139+ if ($isInstanceOf(F, "Int"))
168140 then {
169- let ak = R
170- 0
141+ let aa = F
142+ aa
171143 }
172- else throw("Match error")
144+ else if ($isInstanceOf(F, "Unit"))
145+ then {
146+ let ab = F
147+ 0
148+ }
149+ else throw("Match error")
150+ }
151+ Z
173152 }
174153
175-let al = getIntegerValue(this, h)
176154
177-let am = getIntegerValue(this, i)
155+let ac = W(s, A)
178156
179-let an = (V - (if ((O == J))
180- then ai
181- else 0))
157+let ad = W(s, B)
182158
183-let ao = (W - (if ((P == J))
184- then ai
185- else 0))
159+let ae = (J - ac)
186160
187-let ap = (ag(O) + (if ((O == J))
188- then ai
189- else 0))
161+let af = (K - ad)
190162
191-let aq = (ag(P) + (if ((P == J))
192- then ai
193- else 0))
163+let ag = (U(C) + ac)
194164
195-let ar = if ((ap >= V))
196- then (aq >= W)
165+let ah = (U(D) + ad)
166+
167+let ai = if ((ag >= J))
168+ then (ah >= K)
197169 else false
198170
199-func as (ah) = {
200- let R = ah
201- if ($isInstanceOf(R, "ByteVector"))
171+func aj (V) = {
172+ let F = V
173+ if ($isInstanceOf(F, "ByteVector"))
202174 then {
203- let S = R
204- let at = toBase58String(S)
205- let au = valueOrErrorMessage(assetInfo(S), (("Asset " + at) + " doesn't exist"))
206- $Tuple3(at, au.name, au.decimals)
175+ let G = F
176+ let ak = toBase58String(G)
177+ let al = valueOrErrorMessage(assetInfo(G), (("Asset " + ak) + " doesn't exist"))
178+ $Tuple3(ak, al.name, al.decimals)
207179 }
208- else if ($isInstanceOf(R, "Unit"))
180+ else if ($isInstanceOf(F, "Unit"))
209181 then {
210- let T = R
182+ let H = F
211183 $Tuple3("WAVES", "WAVES", 8)
212184 }
213185 else throw("Match error")
214186 }
215187
216188
217-func av (aw) = if ((aw == "WAVES"))
218- then $Tuple3("WAVES", "WAVES", 8)
219- else {
220- let at = aw
221- let S = fromBase58String(aw)
222- let au = valueOrErrorMessage(assetInfo(S), (("Asset " + at) + " doesn't exist"))
223- $Tuple3(at, au.name, au.decimals)
224- }
189+func am (an) = [BooleanEntry(c, false), StringEntry(l, an)]
225190
226191
227-func ax (ay) = [BooleanEntry(c, false), StringEntry(n, ay)]
192+func ao () = {
193+ let ap = if ((ac > 0))
194+ then 1
195+ else 0
196+ let aq = if ((ad > 0))
197+ then 1
198+ else 0
199+ (ap + aq)
200+ }
228201
229202
230-func az (aA,ah) = if ((ah == J))
203+func ar (as,V) = if ((V == t))
231204 then {
232- let aB = (aA - K)
233- if ((0 >= aB))
234- then throw((((("Insufficient amount " + toString(aA)) + " to deduct staking fee ") + toString(K)) + " USD-N"))
235- else aB
205+ let at = (as - (ao() * y))
206+ if ((0 >= at))
207+ then throw((((("Insufficient amount " + toString(as)) + " to deduct staking fee ") + toString(y)) + " USD-N"))
208+ else at
236209 }
237- else aA
210+ else as
238211
239212
240-func aC (aA,aD,aE) = throw((((((((("Insufficient DApp balance to pay " + toString(aA)) + " ") + aE) + " due to staking. Available: ") + toString(aD)) + " ") + aE) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
213+func au (as,av,aw) = throw((((((((("Insufficient DApp balance to pay " + toString(as)) + " ") + aw) + " due to staking. Available: ") + toString(av)) + " ") + aw) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
241214
242215
243-func aF (aG,aH) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(aG)) + " ") + Q) + " and ") + toString(aH)) + " ") + U) + " due to staking. Available: ") + toString(an)) + " ") + Q) + " and ") + toString(ao)) + " ") + U) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
216+func ax (ay,az) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(ay)) + " ") + E) + " and ") + toString(az)) + " ") + I) + " due to staking. Available: ") + toString(ae)) + " ") + E) + " and ") + toString(af)) + " ") + I) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
244217
245218
246-func aI () = ax(((((((((((((((("Suspicious state. Actual balances: " + toString(ap)) + " ") + Q) + ", ") + toString(aq)) + " ") + U) + ". State: ") + toString(V)) + " ") + Q) + ", ") + toString(W)) + " ") + U))
219+func aA () = am(((((((((((((((("Suspicious state. Actual balances: " + toString(ag)) + " ") + E) + ", ") + toString(ah)) + " ") + I) + ". State: ") + toString(J)) + " ") + E) + ", ") + toString(K)) + " ") + I))
247220
248221
249-@Callable(aJ)
250-func init (aK) = {
251- let aL = $Tuple2(aJ.payments[0].amount, aJ.payments[0].assetId)
252- let aM = aL._1
253- let aN = aL._2
254- let aO = $Tuple2(aJ.payments[1].amount, aJ.payments[1].assetId)
255- let aP = aO._1
256- let aQ = aO._2
257- let aR = as(aN)
258- let aS = aR._1
259- let aT = aR._2
260- let aU = aR._3
261- let aV = as(aQ)
262- let aW = aV._1
263- let aX = aV._2
264- let aY = aV._3
265- if (!(containsElement([v, w, x, z], aJ.callerPublicKey)))
266- then throw("Only admin can call this function")
267- else if (isDefined(getBoolean(this, c)))
268- then throw("DApp is already active")
269- else if ((aN == aQ))
270- then throw("Assets must be different")
271- else {
272- let aZ = ((("s" + take(aT, 7)) + "_") + take(aX, 7))
273- let ba = ((((("ShareToken of SwopFi protocol for " + aT) + " and ") + aX) + " at address ") + toString(this))
274- let bb = ((aU + aY) / 2)
275- let bc = fraction(pow(aM, aU, 5, 1, aU, HALFDOWN), pow(aP, aY, 5, 1, aY, HALFDOWN), pow(10, 0, bb, 0, 0, HALFDOWN))
276- let bd = Issue(aZ, ba, bc, bb, true)
277- let be = calculateAssetId(bd)
278- let bf = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aS), StringEntry(e, aW), IntegerEntry(f, aM), IntegerEntry(g, aP), IntegerEntry(l, Z), IntegerEntry(m, ab), bd, StringEntry(j, toBase58String(be)), IntegerEntry(k, bc), ScriptTransfer(aJ.caller, bc, be)]
279- if (aK)
280- then (bf ++ [BooleanEntry(o, aK), IntegerEntry(p, (G + (I * H)))])
281- else bf
282- }
222+@Callable(aB)
223+func init () = {
224+ let aC = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
225+ let aD = aC._1
226+ let aE = aC._2
227+ let aF = $Tuple2(aB.payments[1].amount, aB.payments[1].assetId)
228+ let aG = aF._1
229+ let aH = aF._2
230+ let aI = aj(aE)
231+ let aJ = aI._1
232+ let aK = aI._2
233+ let aL = aI._3
234+ let aM = aj(aH)
235+ let aN = aM._1
236+ let aO = aM._2
237+ let aP = aM._3
238+ if (isDefined(getBoolean(this, c)))
239+ then throw("DApp is already active")
240+ else if ((aE == aH))
241+ then throw("Assets must be different")
242+ else {
243+ let aQ = ((("s" + take(aK, 7)) + "_") + take(aO, 7))
244+ let aR = ((((("ShareToken of SwopFi protocol for " + aK) + " and ") + aO) + " at address ") + toString(this))
245+ let aS = ((aL + aP) / 2)
246+ let aT = fraction(pow(aD, aL, 5, 1, aL, HALFDOWN), pow(aG, aP, 5, 1, aP, HALFDOWN), pow(10, 0, aS, 0, 0, HALFDOWN))
247+ let aU = Issue(aQ, aR, aT, aS, true)
248+ let aV = calculateAssetId(aU)
249+[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aJ), StringEntry(e, aN), IntegerEntry(f, aD), IntegerEntry(g, aG), IntegerEntry(j, N), IntegerEntry(k, P), aU, StringEntry(h, toBase58String(aV)), IntegerEntry(i, aT), ScriptTransfer(aB.caller, aT, aV)]
250+ }
283251 }
284252
285253
286254
287-@Callable(aJ)
288-func initWithInitRatio (bg,bh,M,N,aK) = {
289- let bi = av(M)
290- let aS = bi._1
291- let aT = bi._2
292- let aU = bi._3
293- let bj = av(N)
294- let aW = bj._1
295- let aX = bj._2
296- let aY = bj._3
297- if (!(containsElement([v, w, x, z], aJ.callerPublicKey)))
298- then throw("Only admin can call this function")
299- else if (isDefined(getBoolean(this, c)))
300- then throw("DApp is already active")
301- else if ((M == N))
302- then throw("Assets must be different")
303- else {
304- let aZ = ((("s" + take(aT, 7)) + "_") + take(aX, 7))
305- let ba = ((((("ShareToken of SwopFi protocol for " + aT) + " and ") + aX) + " at address ") + toString(this))
306- let bb = ((aU + aY) / 2)
307- let bc = 0
308- let bd = Issue(aZ, ba, bc, bb, true)
309- let be = calculateAssetId(bd)
310- let bf = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aS), StringEntry(e, aW), IntegerEntry(h, bg), IntegerEntry(i, bh), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, Z), IntegerEntry(m, ab), bd, StringEntry(j, toBase58String(be)), IntegerEntry(k, bc)]
311- if (aK)
312- then (bf ++ [BooleanEntry(o, aK), IntegerEntry(p, (G + (I * H)))])
313- else bf
314- }
255+@Callable(aB)
256+func replenishWithTwoTokens (aW) = {
257+ let aE = aB.payments[0].assetId
258+ let aH = aB.payments[1].assetId
259+ let aD = ar(aB.payments[0].amount, aE)
260+ let aG = ar(aB.payments[1].amount, aH)
261+ let aX = fraction(fraction(J, R, aD), Q, fraction(K, R, aG))
262+ let aY = fraction(aD, R, J)
263+ let aZ = fraction(aG, R, K)
264+ let ba = fraction(min([aY, aZ]), M, R)
265+ if (!(z))
266+ then throw("DApp is inactive at this moment")
267+ else if (if ((0 > aW))
268+ then true
269+ else (aW > S))
270+ then throw(((("Slippage tolerance must be between 0 and " + toString(S)) + " inclusively. Actual: ") + toString(aW)))
271+ else if ((size(aB.payments) != 2))
272+ then throw("Two attached assets expected")
273+ else if (if ((aE != C))
274+ then true
275+ else (aH != D))
276+ then throw(((("Incorrect assets attached. Expected: " + A) + " and ") + B))
277+ else if (if ((((Q * (S - aW)) / S) > aX))
278+ then true
279+ else (aX > ((Q * (S + aW)) / S)))
280+ then throw("Incorrect assets amount: amounts must have the contract ratio")
281+ else if ((ba == 0))
282+ then throw("Too small amount to replenish")
283+ else if (!(ai))
284+ then ([ScriptTransfer(aB.caller, aD, aE), ScriptTransfer(aB.caller, aG, aH)] ++ aA())
285+ else [IntegerEntry(f, (J + aD)), IntegerEntry(g, (K + aG)), IntegerEntry(i, (M + ba)), Reissue(L, ba, true), ScriptTransfer(aB.caller, ba, L)]
315286 }
316287
317288
318289
319-@Callable(aJ)
320-func keepLimitForFirstHarvest (bk) = if (!(L))
321- then throw("DApp is inactive at this moment")
322- else if (!(containsElement([v, w, x, z], aJ.callerPublicKey)))
323- then throw("Only admin can call this function")
324- else [IntegerEntry(q, bk)]
325-
326-
327-
328-@Callable(aJ)
329-func replenishWithTwoTokens (bl) = {
330- let aN = aJ.payments[0].assetId
331- let aQ = aJ.payments[1].assetId
332- let aM = az(aJ.payments[0].amount, aN)
333- let aP = az(aJ.payments[1].amount, aQ)
334- if (if ((V == 0))
335- then (W == 0)
336- else false)
337- then {
338- let bm = as(aN)
339- let aS = bm._1
340- let aT = bm._2
341- let aU = bm._3
342- let bn = as(aQ)
343- let aW = bn._1
344- let aX = bn._2
345- let aY = bn._3
346- let bo = fraction(fraction(al, ad, aM), ac, fraction(am, ad, aP))
347- if ((aN == aQ))
348- then throw("Assets must be different")
349- else {
350- let bb = ((aU + aY) / 2)
351- let bc = fraction(pow(aM, aU, 5, 1, aU, HALFDOWN), pow(aP, aY, 5, 1, aY, HALFDOWN), pow(10, 0, bb, 0, 0, HALFDOWN))
352- if (!(L))
353- then throw("DApp is inactive at this moment")
354- else if (if ((0 > bl))
355- then true
356- else (bl > ae))
357- then throw(((("Slippage tolerance must be between 0 and " + toString(ae)) + " inclusively. Actual: ") + toString(bl)))
358- else if ((size(aJ.payments) != 2))
359- then throw("Two attached assets expected")
360- else if (if ((((ac * (ae - bl)) / ae) > bo))
361- then true
362- else (bo > ((ac * (ae + bl)) / ae)))
363- then throw("Incorrect assets amount: amounts must have the contract ratio")
364- else if (if ((aN != O))
365- then true
366- else (aQ != P))
367- then throw(((("Incorrect assets attached. Expected: " + M) + " and ") + N))
368- else if ((bc == 0))
369- then throw("Too small amount to replenish")
370- else if (!(ar))
371- then ([ScriptTransfer(aJ.caller, aM, aN), ScriptTransfer(aJ.caller, aP, aQ)] ++ aI())
372- else [Reissue(X, bc, true), IntegerEntry(f, aM), IntegerEntry(g, aP), IntegerEntry(k, bc), ScriptTransfer(aJ.caller, bc, X)]
373- }
374- }
375- else {
376- let bo = fraction(fraction(V, ad, aM), ac, fraction(W, ad, aP))
377- let bp = fraction(aM, ad, V)
378- let bq = fraction(aP, ad, W)
379- let br = fraction(min([bp, bq]), Y, ad)
380- if (!(L))
381- then throw("DApp is inactive at this moment")
382- else if (if ((0 > bl))
383- then true
384- else (bl > ae))
385- then throw(((("Slippage tolerance must be between 0 and " + toString(ae)) + " inclusively. Actual: ") + toString(bl)))
386- else if ((size(aJ.payments) != 2))
387- then throw("Two attached assets expected")
388- else if (if ((aN != O))
389- then true
390- else (aQ != P))
391- then throw(((("Incorrect assets attached. Expected: " + M) + " and ") + N))
392- else if (if ((((ac * (ae - bl)) / ae) > bo))
393- then true
394- else (bo > ((ac * (ae + bl)) / ae)))
395- then throw("Incorrect assets amount: amounts must have the contract ratio")
396- else if ((br == 0))
397- then throw("Too small amount to replenish")
398- else if (!(ar))
399- then ([ScriptTransfer(aJ.caller, aM, aN), ScriptTransfer(aJ.caller, aP, aQ)] ++ aI())
400- else [IntegerEntry(f, (V + aM)), IntegerEntry(g, (W + aP)), IntegerEntry(k, (Y + br)), Reissue(X, br, true), ScriptTransfer(aJ.caller, br, X)]
401- }
290+@Callable(aB)
291+func withdraw () = {
292+ let bb = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
293+ let bc = bb._1
294+ let bd = bb._2
295+ let be = ar(fraction(bc, J, M), C)
296+ let bf = ar(fraction(bc, K, M), D)
297+ if (!(z))
298+ then throw("DApp is inactive at this moment")
299+ else if ((size(aB.payments) != 1))
300+ then throw("One attached payment expected")
301+ else if ((bd != L))
302+ then throw(("Incorrect asset attached. Expected: " + toBase58String(L)))
303+ else if (!(ai))
304+ then ([ScriptTransfer(aB.caller, bc, bd)] ++ aA())
305+ else if (if ((be > ae))
306+ then true
307+ else (bf > af))
308+ then ax(be, bf)
309+ else [IntegerEntry(f, (J - be)), IntegerEntry(g, (K - bf)), IntegerEntry(i, (M - bc)), Burn(L, bc), ScriptTransfer(aB.caller, be, C), ScriptTransfer(aB.caller, bf, D)]
402310 }
403311
404312
405313
406-@Callable(aJ)
407-func withdraw () = {
408- let bs = $Tuple2(aJ.payments[0].amount, aJ.payments[0].assetId)
409- let bt = bs._1
410- let bu = bs._2
411- let bv = az(fraction(bt, V, Y), O)
412- let bw = az(fraction(bt, W, Y), P)
413- if (!(L))
314+@Callable(aB)
315+func exchange (bg) = {
316+ let bh = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
317+ let bc = bh._1
318+ let bd = bh._2
319+ func bi (bj,bk) = {
320+ let bl = fraction(bk, bc, (bc + bj))
321+ let bm = fraction(bl, (P - N), P)
322+ let bn = fraction(bl, O, P)
323+ if ((bg > bm))
324+ then throw(((("Calculated amount to receive " + toString(bm)) + " is less than specified minimum ") + toString(bg)))
325+ else $Tuple3(bl, bm, bn)
326+ }
327+
328+ if (!(z))
414329 then throw("DApp is inactive at this moment")
415- else if ((size(aJ.payments) != 1))
416- then throw("One attached payment expected")
417- else if ((bu != X))
418- then throw(("Incorrect asset attached. Expected: " + toBase58String(X)))
419- else if (!(ar))
420- then ([ScriptTransfer(aJ.caller, bt, bu)] ++ aI())
421- else if (if ((bv > an))
422- then true
423- else (bw > ao))
424- then aF(bv, bw)
425- else [IntegerEntry(f, (V - bv)), IntegerEntry(g, (W - bw)), IntegerEntry(k, (Y - bt)), Burn(X, bt), ScriptTransfer(aJ.caller, bv, O), ScriptTransfer(aJ.caller, bw, P)]
330+ else if ((0 >= bg))
331+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(bg)))
332+ else if ((size(aB.payments) != 1))
333+ then throw("One attached payment expected")
334+ else if (!(ai))
335+ then ([ScriptTransfer(aB.caller, bc, bd)] ++ aA())
336+ else if ((bd == C))
337+ then {
338+ let bo = D
339+ let bp = bi(J, K)
340+ let bl = bp._1
341+ let bm = bp._2
342+ let bn = bp._3
343+ let bq = (J + bc)
344+ let br = ((K - bm) - bn)
345+ if (if ((ac >= bq))
346+ then true
347+ else (ad >= br))
348+ then au(bm, af, I)
349+ else [IntegerEntry(f, bq), IntegerEntry(g, br), ScriptTransfer(aB.caller, bm, bo), ScriptTransfer(r, bn, bo)]
350+ }
351+ else if ((bd == D))
352+ then {
353+ let bo = C
354+ let bs = bi(K, J)
355+ let bl = bs._1
356+ let bm = bs._2
357+ let bn = bs._3
358+ let bq = ((J - bm) - bn)
359+ let br = (K + bc)
360+ if (if ((ac >= bq))
361+ then true
362+ else (ad >= br))
363+ then au(bm, ae, E)
364+ else [IntegerEntry(f, bq), IntegerEntry(g, br), ScriptTransfer(aB.caller, bm, bo), ScriptTransfer(r, bn, bo)]
365+ }
366+ else throw(((("Incorrect asset attached. Expected: " + A) + " or ") + B))
426367 }
427368
428369
429370
430-@Callable(aJ)
431-func exchange (bx) = {
432- let by = $Tuple2(aJ.payments[0].amount, aJ.payments[0].assetId)
433- let bt = by._1
434- let bu = by._2
435- func bz (bA,bB) = {
436- let bC = fraction(bB, bt, (bt + bA))
437- let bD = fraction(bC, (ab - Z), ab)
438- let bE = fraction(bC, aa, ab)
439- if ((bx > bD))
440- then throw(((("Calculated amount to receive " + toString(bD)) + " is less than specified minimum ") + toString(bx)))
441- else $Tuple3(bC, bD, bE)
442- }
371+@Callable(aB)
372+func shutdown () = if (!(z))
373+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, l), "the cause wasn't specified")))
374+ else if (!(containsElement([m, n, o, p], aB.callerPublicKey)))
375+ then throw("Only admin can call this function")
376+ else am("Paused by admin")
443377
444- if (!(L))
378+
379+
380+@Callable(aB)
381+func activate () = if (z)
382+ then throw("DApp is already active")
383+ else if (!(containsElement([m, n, o, p], aB.callerPublicKey)))
384+ then throw("Only admin can call this function")
385+ else [BooleanEntry(c, true), DeleteEntry(l)]
386+
387+
388+
389+@Callable(aB)
390+func takeIntoAccountExtraFunds (bt) = {
391+ let bu = (ag - J)
392+ let bv = (ah - K)
393+ let bw = (bu - (if ((C == unit))
394+ then bt
395+ else 0))
396+ let bx = (bv - (if ((D == unit))
397+ then bt
398+ else 0))
399+ if (!(z))
445400 then throw("DApp is inactive at this moment")
446- else if (if ((V == 0))
447- then true
448- else (W == 0))
449- then throw("Can't exchange with zero balance")
450- else if ((0 >= bx))
451- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bx)))
452- else if ((size(aJ.payments) != 1))
453- then throw("One attached payment expected")
454- else if (!(ar))
455- then ([ScriptTransfer(aJ.caller, bt, bu)] ++ aI())
456- else if ((bu == O))
457- then {
458- let bF = P
459- let bG = bz(V, W)
460- let bC = bG._1
461- let bD = bG._2
462- let bE = bG._3
463- let bH = (V + bt)
464- let bI = ((W - bD) - bE)
465- if (if (if ((O == J))
466- then (ai >= bH)
467- else false)
468- then true
469- else if ((P == J))
470- then (ai >= bI)
471- else false)
472- then aC(bD, ao, U)
473- else [IntegerEntry(f, bH), IntegerEntry(g, bI), ScriptTransfer(aJ.caller, bD, bF), ScriptTransfer(B, bE, bF)]
474- }
475- else if ((bu == P))
476- then {
477- let bF = O
478- let bJ = bz(W, V)
479- let bC = bJ._1
480- let bD = bJ._2
481- let bE = bJ._3
482- let bH = ((V - bD) - bE)
483- let bI = (W + bt)
484- if (if (if ((O == J))
485- then (ai >= bH)
486- else false)
487- then true
488- else if ((P == J))
489- then (ai >= bI)
490- else false)
491- then aC(bD, an, Q)
492- else [IntegerEntry(f, bH), IntegerEntry(g, bI), ScriptTransfer(aJ.caller, bD, bF), ScriptTransfer(B, bE, bF)]
493- }
494- else throw(((("Incorrect asset attached. Expected: " + M) + " or ") + N))
401+ else if ((aB.caller != this))
402+ then throw("Only the DApp itself can call this function")
403+ else if ((0 > bt))
404+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bt)))
405+ else if (if ((0 > bu))
406+ then true
407+ else (0 > bv))
408+ then am("Enroll amount negative")
409+ else if (if ((0 > bw))
410+ then true
411+ else (0 > bx))
412+ then throw("Too large amountLeave")
413+ else [IntegerEntry(f, (J + bw)), IntegerEntry(g, (K + bx)), IntegerEntry(("last_income_" + A), bw), IntegerEntry(("last_income_" + B), bx)]
495414 }
496415
497416
498-
499-@Callable(aJ)
500-func shutdown () = if (!(L))
501- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, n), "the cause wasn't specified")))
502- else if (!(containsElement([v, w, x, y], aJ.callerPublicKey)))
503- then throw("Only admin can call this function")
504- else ax("Paused by admin")
505-
506-
507-
508-@Callable(aJ)
509-func activate () = if (L)
510- then throw("DApp is already active")
511- else if (!(containsElement([v, w, x, y], aJ.callerPublicKey)))
512- then throw("Only admin can call this function")
513- else [BooleanEntry(c, true), DeleteEntry(n)]
514-
515-
516-
517-@Callable(aJ)
518-func takeIntoAccountExtraFunds (bK) = {
519- let bL = (ap - V)
520- let bM = (aq - W)
521- let bN = (bL - (if ((O == unit))
522- then bK
523- else 0))
524- let bO = (bM - (if ((P == unit))
525- then bK
526- else 0))
527- if (!(L))
528- then throw("DApp is inactive at this moment")
529- else if ((aJ.caller != this))
530- then throw("Only the DApp itself can call this function")
531- else if ((0 > bK))
532- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bK)))
533- else if (if ((0 > bL))
534- then true
535- else (0 > bM))
536- then ax("Enroll amount negative")
537- else if (if ((0 > bN))
538- then true
539- else (0 > bO))
540- then throw("Too large amountLeave")
541- else [IntegerEntry(f, (V + bN)), IntegerEntry(g, (W + bO)), IntegerEntry(("last_income_" + M), bN), IntegerEntry(("last_income_" + N), bO)]
542- }
543-
544-
545-@Verifier(bP)
546-func bQ () = {
547- let R = bP
548- if ($isInstanceOf(R, "InvokeScriptTransaction"))
417+@Verifier(by)
418+func bz () = {
419+ let F = by
420+ if ($isInstanceOf(F, "InvokeScriptTransaction"))
549421 then {
550- let bR = R
551- let bS = if ((bR.dApp == this))
552- then (bR.function == "takeIntoAccountExtraFunds")
553- else false
554- let bT = if ((bR.dApp == D))
555- then if (if (if ((bR.function == "lockNeutrino"))
556- then (size(bR.payments) == 1)
557- else false)
558- then (bR.payments[0].assetId == J)
559- else false)
560- then true
561- else if ((bR.function == "unlockNeutrino"))
562- then (size(bR.payments) == 0)
563- else false
564- else false
565- let bU = if (if (if ((bR.dApp == E))
566- then (bR.function == "exchange")
567- else false)
568- then (O == J)
422+ let bA = F
423+ if (if (if (sigVerify(bA.bodyBytes, bA.proofs[0], q))
424+ then (bA.dApp == s)
569425 else false)
570426 then true
571- else if ((P == J))
572- then (bR.payments[0].assetId == J)
427+ else if (if (sigVerify(bA.bodyBytes, bA.proofs[0], q))
428+ then (bA.function == "exchange")
429+ else false)
430+ then if (if (if (if ((C == u))
431+ then (D == t)
432+ else false)
433+ then (bA.dApp == w)
434+ else false)
435+ then if ((bA.payments[0].assetId == unit))
436+ then true
437+ else (bA.payments[0].assetId == t)
438+ else false)
439+ then true
440+ else if (if ((C == u))
441+ then (D == v)
442+ else false)
443+ then if (if ((bA.dApp == x))
444+ then (bA.payments[0].assetId == t)
445+ else false)
446+ then true
447+ else if ((bA.dApp == w))
448+ then if ((bA.payments[0].assetId == unit))
449+ then true
450+ else (bA.payments[0].assetId == t)
451+ else false
452+ else false
453+ else false)
454+ then true
455+ else if (if (sigVerify(bA.bodyBytes, bA.proofs[0], q))
456+ then (bA.dApp == this)
457+ else false)
458+ then (bA.function == "takeIntoAccountExtraFunds")
573459 else false
574- let bV = if (if (if (sigVerify(bP.bodyBytes, bP.proofs[0], v))
575- then true
576- else sigVerify(bP.bodyBytes, bP.proofs[0], w))
577- then true
578- else sigVerify(bP.bodyBytes, bP.proofs[0], x))
579- then true
580- else sigVerify(bP.bodyBytes, bP.proofs[0], z)
581- if (if (if (bS)
582- then true
583- else bT)
584- then true
585- else bU)
586- then bV
587- else false
588460 }
589461 else {
590- let bW = if (sigVerify(bP.bodyBytes, bP.proofs[0], v))
462+ let bB = if (sigVerify(by.bodyBytes, by.proofs[0], m))
591463 then 1
592464 else 0
593- let bX = if (sigVerify(bP.bodyBytes, bP.proofs[1], w))
465+ let bC = if (sigVerify(by.bodyBytes, by.proofs[1], n))
594466 then 1
595467 else 0
596- let bY = if (sigVerify(bP.bodyBytes, bP.proofs[2], x))
468+ let bD = if (sigVerify(by.bodyBytes, by.proofs[2], o))
597469 then 1
598470 else 0
599- (((bW + bX) + bY) >= 2)
471+ (((bB + bC) + bD) >= 2)
600472 }
601473 }
602474
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 let b = "version"
77
88 let c = "active"
99
1010 let d = "A_asset_id"
1111
1212 let e = "B_asset_id"
1313
1414 let f = "A_asset_balance"
1515
1616 let g = "B_asset_balance"
1717
18-let h = "A_asset_init"
18+let h = "share_asset_id"
1919
20-let i = "B_asset_init"
20+let i = "share_asset_supply"
2121
22-let j = "share_asset_id"
22+let j = "commission"
2323
24-let k = "share_asset_supply"
24+let k = "commission_scale_delimiter"
2525
26-let l = "commission"
26+let l = "shutdown_cause"
2727
28-let m = "commission_scale_delimiter"
28+let m = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
2929
30-let n = "shutdown_cause"
30+let n = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3131
32-let o = "first_harvest"
32+let o = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3333
34-let p = "first_harvest_height"
34+let p = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3535
36-let q = "share_limit_on_first_harvest"
36+let q = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3737
38-let r = "base_period"
38+let r = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
3939
40-let s = "period_length"
40+let s = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
4141
42-let t = "start_height"
42+let t = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
4343
44-let u = "first_harvest_height"
44+let u = base58'36mg8NZTaFRDygiVwb8uBnLR51hetJruUCZcxhaVcHj9'
4545
46-let v = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
46+let v = base58'2HAJrwa8q4SxBx9cHYaBTQdBjdk5wwqdof7ccpAx2uhZ'
4747
48-let w = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
48+let w = Address(base58'3N3g1MVp6DXyfqhq8sMPA6CRRkTTPtBsZeh')
4949
50-let x = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
50+let x = Address(base58'3N95taAsiWcVMmXdVShZ2ann6MAboXrFT1b')
5151
52-let y = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
52+let y = 270000
5353
54-let z = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
54+let z = getBooleanValue(this, c)
5555
56-let A = base58'5CqqMkmtXXt35KRH9LdWA3ap6TffPvTT5SHQzYrVFbBw'
56+let A = getStringValue(this, d)
5757
58-let B = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
58+let B = getStringValue(this, e)
5959
60-let C = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
60+let C = if ((A == "WAVES"))
61+ then unit
62+ else fromBase58String(A)
6163
62-let D = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
64+let D = if ((B == "WAVES"))
65+ then unit
66+ else fromBase58String(B)
6367
64-let E = Address(base58'3N3g1MVp6DXyfqhq8sMPA6CRRkTTPtBsZeh')
65-
66-let F = valueOrErrorMessage(getInteger(C, r), "Empty kBasePeriod")
67-
68-let G = valueOrErrorMessage(getInteger(C, t), "Empty kStartHeight")
69-
70-let H = valueOrErrorMessage(getInteger(C, s), "Empty kPeriodLength")
71-
72-let I = ((F + ((height - G) / H)) + 3)
73-
74-let J = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
75-
76-let K = 270000
77-
78-let L = getBooleanValue(this, c)
79-
80-let M = getStringValue(this, d)
81-
82-let N = getStringValue(this, e)
83-
84-let O = if ((M == "WAVES"))
85- then unit
86- else fromBase58String(M)
87-
88-let P = if ((N == "WAVES"))
89- then unit
90- else fromBase58String(N)
91-
92-let Q = {
93- let R = O
94- if ($isInstanceOf(R, "ByteVector"))
68+let E = {
69+ let F = C
70+ if ($isInstanceOf(F, "ByteVector"))
9571 then {
96- let S = R
97- value(assetInfo(S)).name
72+ let G = F
73+ value(assetInfo(G)).name
9874 }
99- else if ($isInstanceOf(R, "Unit"))
75+ else if ($isInstanceOf(F, "Unit"))
10076 then {
101- let T = R
77+ let H = F
10278 "WAVES"
10379 }
10480 else throw("Match error")
10581 }
10682
107-let U = {
108- let R = P
109- if ($isInstanceOf(R, "ByteVector"))
83+let I = {
84+ let F = D
85+ if ($isInstanceOf(F, "ByteVector"))
11086 then {
111- let S = R
112- value(assetInfo(S)).name
87+ let G = F
88+ value(assetInfo(G)).name
11389 }
114- else if ($isInstanceOf(R, "Unit"))
90+ else if ($isInstanceOf(F, "Unit"))
11591 then {
116- let T = R
92+ let H = F
11793 "WAVES"
11894 }
11995 else throw("Match error")
12096 }
12197
122-let V = getIntegerValue(this, f)
98+let J = getIntegerValue(this, f)
12399
124-let W = getIntegerValue(this, g)
100+let K = getIntegerValue(this, g)
125101
126-let X = fromBase58String(getStringValue(this, j))
102+let L = fromBase58String(getStringValue(this, h))
127103
128-let Y = getIntegerValue(this, k)
104+let M = getIntegerValue(this, i)
129105
130-let Z = 3000
106+let N = 3000
131107
132-let aa = 1200
108+let O = 1200
133109
134-let ab = 1000000
110+let P = 1000000
135111
136-let ac = 1000
112+let Q = 1000
137113
138-let ad = 100000000
114+let R = 100000000
139115
140-let ae = 1000
116+let S = 1000
141117
142-let af = 8
118+let T = 8
143119
144-func ag (ah) = {
145- let R = ah
146- if ($isInstanceOf(R, "ByteVector"))
120+func U (V) = {
121+ let F = V
122+ if ($isInstanceOf(F, "ByteVector"))
147123 then {
148- let S = R
149- assetBalance(this, S)
124+ let G = F
125+ assetBalance(this, G)
150126 }
151- else if ($isInstanceOf(R, "Unit"))
127+ else if ($isInstanceOf(F, "Unit"))
152128 then {
153- let T = R
129+ let H = F
154130 wavesBalance(this).available
155131 }
156132 else throw("Match error")
157133 }
158134
159135
160-let ai = {
161- let R = getInteger(D, ((("rpd_balance_" + toBase58String(J)) + "_") + toString(this)))
162- if ($isInstanceOf(R, "Int"))
163- then {
164- let aj = R
165- aj
166- }
167- else if ($isInstanceOf(R, "Unit"))
136+func W (X,Y) = {
137+ let Z = {
138+ let F = getInteger(X, ((("rpd_balance_" + Y) + "_") + toString(this)))
139+ if ($isInstanceOf(F, "Int"))
168140 then {
169- let ak = R
170- 0
141+ let aa = F
142+ aa
171143 }
172- else throw("Match error")
144+ else if ($isInstanceOf(F, "Unit"))
145+ then {
146+ let ab = F
147+ 0
148+ }
149+ else throw("Match error")
150+ }
151+ Z
173152 }
174153
175-let al = getIntegerValue(this, h)
176154
177-let am = getIntegerValue(this, i)
155+let ac = W(s, A)
178156
179-let an = (V - (if ((O == J))
180- then ai
181- else 0))
157+let ad = W(s, B)
182158
183-let ao = (W - (if ((P == J))
184- then ai
185- else 0))
159+let ae = (J - ac)
186160
187-let ap = (ag(O) + (if ((O == J))
188- then ai
189- else 0))
161+let af = (K - ad)
190162
191-let aq = (ag(P) + (if ((P == J))
192- then ai
193- else 0))
163+let ag = (U(C) + ac)
194164
195-let ar = if ((ap >= V))
196- then (aq >= W)
165+let ah = (U(D) + ad)
166+
167+let ai = if ((ag >= J))
168+ then (ah >= K)
197169 else false
198170
199-func as (ah) = {
200- let R = ah
201- if ($isInstanceOf(R, "ByteVector"))
171+func aj (V) = {
172+ let F = V
173+ if ($isInstanceOf(F, "ByteVector"))
202174 then {
203- let S = R
204- let at = toBase58String(S)
205- let au = valueOrErrorMessage(assetInfo(S), (("Asset " + at) + " doesn't exist"))
206- $Tuple3(at, au.name, au.decimals)
175+ let G = F
176+ let ak = toBase58String(G)
177+ let al = valueOrErrorMessage(assetInfo(G), (("Asset " + ak) + " doesn't exist"))
178+ $Tuple3(ak, al.name, al.decimals)
207179 }
208- else if ($isInstanceOf(R, "Unit"))
180+ else if ($isInstanceOf(F, "Unit"))
209181 then {
210- let T = R
182+ let H = F
211183 $Tuple3("WAVES", "WAVES", 8)
212184 }
213185 else throw("Match error")
214186 }
215187
216188
217-func av (aw) = if ((aw == "WAVES"))
218- then $Tuple3("WAVES", "WAVES", 8)
219- else {
220- let at = aw
221- let S = fromBase58String(aw)
222- let au = valueOrErrorMessage(assetInfo(S), (("Asset " + at) + " doesn't exist"))
223- $Tuple3(at, au.name, au.decimals)
224- }
189+func am (an) = [BooleanEntry(c, false), StringEntry(l, an)]
225190
226191
227-func ax (ay) = [BooleanEntry(c, false), StringEntry(n, ay)]
192+func ao () = {
193+ let ap = if ((ac > 0))
194+ then 1
195+ else 0
196+ let aq = if ((ad > 0))
197+ then 1
198+ else 0
199+ (ap + aq)
200+ }
228201
229202
230-func az (aA,ah) = if ((ah == J))
203+func ar (as,V) = if ((V == t))
231204 then {
232- let aB = (aA - K)
233- if ((0 >= aB))
234- then throw((((("Insufficient amount " + toString(aA)) + " to deduct staking fee ") + toString(K)) + " USD-N"))
235- else aB
205+ let at = (as - (ao() * y))
206+ if ((0 >= at))
207+ then throw((((("Insufficient amount " + toString(as)) + " to deduct staking fee ") + toString(y)) + " USD-N"))
208+ else at
236209 }
237- else aA
210+ else as
238211
239212
240-func aC (aA,aD,aE) = throw((((((((("Insufficient DApp balance to pay " + toString(aA)) + " ") + aE) + " due to staking. Available: ") + toString(aD)) + " ") + aE) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
213+func au (as,av,aw) = throw((((((((("Insufficient DApp balance to pay " + toString(as)) + " ") + aw) + " due to staking. Available: ") + toString(av)) + " ") + aw) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
241214
242215
243-func aF (aG,aH) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(aG)) + " ") + Q) + " and ") + toString(aH)) + " ") + U) + " due to staking. Available: ") + toString(an)) + " ") + Q) + " and ") + toString(ao)) + " ") + U) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
216+func ax (ay,az) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(ay)) + " ") + E) + " and ") + toString(az)) + " ") + I) + " due to staking. Available: ") + toString(ae)) + " ") + E) + " and ") + toString(af)) + " ") + I) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
244217
245218
246-func aI () = ax(((((((((((((((("Suspicious state. Actual balances: " + toString(ap)) + " ") + Q) + ", ") + toString(aq)) + " ") + U) + ". State: ") + toString(V)) + " ") + Q) + ", ") + toString(W)) + " ") + U))
219+func aA () = am(((((((((((((((("Suspicious state. Actual balances: " + toString(ag)) + " ") + E) + ", ") + toString(ah)) + " ") + I) + ". State: ") + toString(J)) + " ") + E) + ", ") + toString(K)) + " ") + I))
247220
248221
249-@Callable(aJ)
250-func init (aK) = {
251- let aL = $Tuple2(aJ.payments[0].amount, aJ.payments[0].assetId)
252- let aM = aL._1
253- let aN = aL._2
254- let aO = $Tuple2(aJ.payments[1].amount, aJ.payments[1].assetId)
255- let aP = aO._1
256- let aQ = aO._2
257- let aR = as(aN)
258- let aS = aR._1
259- let aT = aR._2
260- let aU = aR._3
261- let aV = as(aQ)
262- let aW = aV._1
263- let aX = aV._2
264- let aY = aV._3
265- if (!(containsElement([v, w, x, z], aJ.callerPublicKey)))
266- then throw("Only admin can call this function")
267- else if (isDefined(getBoolean(this, c)))
268- then throw("DApp is already active")
269- else if ((aN == aQ))
270- then throw("Assets must be different")
271- else {
272- let aZ = ((("s" + take(aT, 7)) + "_") + take(aX, 7))
273- let ba = ((((("ShareToken of SwopFi protocol for " + aT) + " and ") + aX) + " at address ") + toString(this))
274- let bb = ((aU + aY) / 2)
275- let bc = fraction(pow(aM, aU, 5, 1, aU, HALFDOWN), pow(aP, aY, 5, 1, aY, HALFDOWN), pow(10, 0, bb, 0, 0, HALFDOWN))
276- let bd = Issue(aZ, ba, bc, bb, true)
277- let be = calculateAssetId(bd)
278- let bf = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aS), StringEntry(e, aW), IntegerEntry(f, aM), IntegerEntry(g, aP), IntegerEntry(l, Z), IntegerEntry(m, ab), bd, StringEntry(j, toBase58String(be)), IntegerEntry(k, bc), ScriptTransfer(aJ.caller, bc, be)]
279- if (aK)
280- then (bf ++ [BooleanEntry(o, aK), IntegerEntry(p, (G + (I * H)))])
281- else bf
282- }
222+@Callable(aB)
223+func init () = {
224+ let aC = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
225+ let aD = aC._1
226+ let aE = aC._2
227+ let aF = $Tuple2(aB.payments[1].amount, aB.payments[1].assetId)
228+ let aG = aF._1
229+ let aH = aF._2
230+ let aI = aj(aE)
231+ let aJ = aI._1
232+ let aK = aI._2
233+ let aL = aI._3
234+ let aM = aj(aH)
235+ let aN = aM._1
236+ let aO = aM._2
237+ let aP = aM._3
238+ if (isDefined(getBoolean(this, c)))
239+ then throw("DApp is already active")
240+ else if ((aE == aH))
241+ then throw("Assets must be different")
242+ else {
243+ let aQ = ((("s" + take(aK, 7)) + "_") + take(aO, 7))
244+ let aR = ((((("ShareToken of SwopFi protocol for " + aK) + " and ") + aO) + " at address ") + toString(this))
245+ let aS = ((aL + aP) / 2)
246+ let aT = fraction(pow(aD, aL, 5, 1, aL, HALFDOWN), pow(aG, aP, 5, 1, aP, HALFDOWN), pow(10, 0, aS, 0, 0, HALFDOWN))
247+ let aU = Issue(aQ, aR, aT, aS, true)
248+ let aV = calculateAssetId(aU)
249+[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aJ), StringEntry(e, aN), IntegerEntry(f, aD), IntegerEntry(g, aG), IntegerEntry(j, N), IntegerEntry(k, P), aU, StringEntry(h, toBase58String(aV)), IntegerEntry(i, aT), ScriptTransfer(aB.caller, aT, aV)]
250+ }
283251 }
284252
285253
286254
287-@Callable(aJ)
288-func initWithInitRatio (bg,bh,M,N,aK) = {
289- let bi = av(M)
290- let aS = bi._1
291- let aT = bi._2
292- let aU = bi._3
293- let bj = av(N)
294- let aW = bj._1
295- let aX = bj._2
296- let aY = bj._3
297- if (!(containsElement([v, w, x, z], aJ.callerPublicKey)))
298- then throw("Only admin can call this function")
299- else if (isDefined(getBoolean(this, c)))
300- then throw("DApp is already active")
301- else if ((M == N))
302- then throw("Assets must be different")
303- else {
304- let aZ = ((("s" + take(aT, 7)) + "_") + take(aX, 7))
305- let ba = ((((("ShareToken of SwopFi protocol for " + aT) + " and ") + aX) + " at address ") + toString(this))
306- let bb = ((aU + aY) / 2)
307- let bc = 0
308- let bd = Issue(aZ, ba, bc, bb, true)
309- let be = calculateAssetId(bd)
310- let bf = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aS), StringEntry(e, aW), IntegerEntry(h, bg), IntegerEntry(i, bh), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, Z), IntegerEntry(m, ab), bd, StringEntry(j, toBase58String(be)), IntegerEntry(k, bc)]
311- if (aK)
312- then (bf ++ [BooleanEntry(o, aK), IntegerEntry(p, (G + (I * H)))])
313- else bf
314- }
255+@Callable(aB)
256+func replenishWithTwoTokens (aW) = {
257+ let aE = aB.payments[0].assetId
258+ let aH = aB.payments[1].assetId
259+ let aD = ar(aB.payments[0].amount, aE)
260+ let aG = ar(aB.payments[1].amount, aH)
261+ let aX = fraction(fraction(J, R, aD), Q, fraction(K, R, aG))
262+ let aY = fraction(aD, R, J)
263+ let aZ = fraction(aG, R, K)
264+ let ba = fraction(min([aY, aZ]), M, R)
265+ if (!(z))
266+ then throw("DApp is inactive at this moment")
267+ else if (if ((0 > aW))
268+ then true
269+ else (aW > S))
270+ then throw(((("Slippage tolerance must be between 0 and " + toString(S)) + " inclusively. Actual: ") + toString(aW)))
271+ else if ((size(aB.payments) != 2))
272+ then throw("Two attached assets expected")
273+ else if (if ((aE != C))
274+ then true
275+ else (aH != D))
276+ then throw(((("Incorrect assets attached. Expected: " + A) + " and ") + B))
277+ else if (if ((((Q * (S - aW)) / S) > aX))
278+ then true
279+ else (aX > ((Q * (S + aW)) / S)))
280+ then throw("Incorrect assets amount: amounts must have the contract ratio")
281+ else if ((ba == 0))
282+ then throw("Too small amount to replenish")
283+ else if (!(ai))
284+ then ([ScriptTransfer(aB.caller, aD, aE), ScriptTransfer(aB.caller, aG, aH)] ++ aA())
285+ else [IntegerEntry(f, (J + aD)), IntegerEntry(g, (K + aG)), IntegerEntry(i, (M + ba)), Reissue(L, ba, true), ScriptTransfer(aB.caller, ba, L)]
315286 }
316287
317288
318289
319-@Callable(aJ)
320-func keepLimitForFirstHarvest (bk) = if (!(L))
321- then throw("DApp is inactive at this moment")
322- else if (!(containsElement([v, w, x, z], aJ.callerPublicKey)))
323- then throw("Only admin can call this function")
324- else [IntegerEntry(q, bk)]
325-
326-
327-
328-@Callable(aJ)
329-func replenishWithTwoTokens (bl) = {
330- let aN = aJ.payments[0].assetId
331- let aQ = aJ.payments[1].assetId
332- let aM = az(aJ.payments[0].amount, aN)
333- let aP = az(aJ.payments[1].amount, aQ)
334- if (if ((V == 0))
335- then (W == 0)
336- else false)
337- then {
338- let bm = as(aN)
339- let aS = bm._1
340- let aT = bm._2
341- let aU = bm._3
342- let bn = as(aQ)
343- let aW = bn._1
344- let aX = bn._2
345- let aY = bn._3
346- let bo = fraction(fraction(al, ad, aM), ac, fraction(am, ad, aP))
347- if ((aN == aQ))
348- then throw("Assets must be different")
349- else {
350- let bb = ((aU + aY) / 2)
351- let bc = fraction(pow(aM, aU, 5, 1, aU, HALFDOWN), pow(aP, aY, 5, 1, aY, HALFDOWN), pow(10, 0, bb, 0, 0, HALFDOWN))
352- if (!(L))
353- then throw("DApp is inactive at this moment")
354- else if (if ((0 > bl))
355- then true
356- else (bl > ae))
357- then throw(((("Slippage tolerance must be between 0 and " + toString(ae)) + " inclusively. Actual: ") + toString(bl)))
358- else if ((size(aJ.payments) != 2))
359- then throw("Two attached assets expected")
360- else if (if ((((ac * (ae - bl)) / ae) > bo))
361- then true
362- else (bo > ((ac * (ae + bl)) / ae)))
363- then throw("Incorrect assets amount: amounts must have the contract ratio")
364- else if (if ((aN != O))
365- then true
366- else (aQ != P))
367- then throw(((("Incorrect assets attached. Expected: " + M) + " and ") + N))
368- else if ((bc == 0))
369- then throw("Too small amount to replenish")
370- else if (!(ar))
371- then ([ScriptTransfer(aJ.caller, aM, aN), ScriptTransfer(aJ.caller, aP, aQ)] ++ aI())
372- else [Reissue(X, bc, true), IntegerEntry(f, aM), IntegerEntry(g, aP), IntegerEntry(k, bc), ScriptTransfer(aJ.caller, bc, X)]
373- }
374- }
375- else {
376- let bo = fraction(fraction(V, ad, aM), ac, fraction(W, ad, aP))
377- let bp = fraction(aM, ad, V)
378- let bq = fraction(aP, ad, W)
379- let br = fraction(min([bp, bq]), Y, ad)
380- if (!(L))
381- then throw("DApp is inactive at this moment")
382- else if (if ((0 > bl))
383- then true
384- else (bl > ae))
385- then throw(((("Slippage tolerance must be between 0 and " + toString(ae)) + " inclusively. Actual: ") + toString(bl)))
386- else if ((size(aJ.payments) != 2))
387- then throw("Two attached assets expected")
388- else if (if ((aN != O))
389- then true
390- else (aQ != P))
391- then throw(((("Incorrect assets attached. Expected: " + M) + " and ") + N))
392- else if (if ((((ac * (ae - bl)) / ae) > bo))
393- then true
394- else (bo > ((ac * (ae + bl)) / ae)))
395- then throw("Incorrect assets amount: amounts must have the contract ratio")
396- else if ((br == 0))
397- then throw("Too small amount to replenish")
398- else if (!(ar))
399- then ([ScriptTransfer(aJ.caller, aM, aN), ScriptTransfer(aJ.caller, aP, aQ)] ++ aI())
400- else [IntegerEntry(f, (V + aM)), IntegerEntry(g, (W + aP)), IntegerEntry(k, (Y + br)), Reissue(X, br, true), ScriptTransfer(aJ.caller, br, X)]
401- }
290+@Callable(aB)
291+func withdraw () = {
292+ let bb = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
293+ let bc = bb._1
294+ let bd = bb._2
295+ let be = ar(fraction(bc, J, M), C)
296+ let bf = ar(fraction(bc, K, M), D)
297+ if (!(z))
298+ then throw("DApp is inactive at this moment")
299+ else if ((size(aB.payments) != 1))
300+ then throw("One attached payment expected")
301+ else if ((bd != L))
302+ then throw(("Incorrect asset attached. Expected: " + toBase58String(L)))
303+ else if (!(ai))
304+ then ([ScriptTransfer(aB.caller, bc, bd)] ++ aA())
305+ else if (if ((be > ae))
306+ then true
307+ else (bf > af))
308+ then ax(be, bf)
309+ else [IntegerEntry(f, (J - be)), IntegerEntry(g, (K - bf)), IntegerEntry(i, (M - bc)), Burn(L, bc), ScriptTransfer(aB.caller, be, C), ScriptTransfer(aB.caller, bf, D)]
402310 }
403311
404312
405313
406-@Callable(aJ)
407-func withdraw () = {
408- let bs = $Tuple2(aJ.payments[0].amount, aJ.payments[0].assetId)
409- let bt = bs._1
410- let bu = bs._2
411- let bv = az(fraction(bt, V, Y), O)
412- let bw = az(fraction(bt, W, Y), P)
413- if (!(L))
314+@Callable(aB)
315+func exchange (bg) = {
316+ let bh = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
317+ let bc = bh._1
318+ let bd = bh._2
319+ func bi (bj,bk) = {
320+ let bl = fraction(bk, bc, (bc + bj))
321+ let bm = fraction(bl, (P - N), P)
322+ let bn = fraction(bl, O, P)
323+ if ((bg > bm))
324+ then throw(((("Calculated amount to receive " + toString(bm)) + " is less than specified minimum ") + toString(bg)))
325+ else $Tuple3(bl, bm, bn)
326+ }
327+
328+ if (!(z))
414329 then throw("DApp is inactive at this moment")
415- else if ((size(aJ.payments) != 1))
416- then throw("One attached payment expected")
417- else if ((bu != X))
418- then throw(("Incorrect asset attached. Expected: " + toBase58String(X)))
419- else if (!(ar))
420- then ([ScriptTransfer(aJ.caller, bt, bu)] ++ aI())
421- else if (if ((bv > an))
422- then true
423- else (bw > ao))
424- then aF(bv, bw)
425- else [IntegerEntry(f, (V - bv)), IntegerEntry(g, (W - bw)), IntegerEntry(k, (Y - bt)), Burn(X, bt), ScriptTransfer(aJ.caller, bv, O), ScriptTransfer(aJ.caller, bw, P)]
330+ else if ((0 >= bg))
331+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(bg)))
332+ else if ((size(aB.payments) != 1))
333+ then throw("One attached payment expected")
334+ else if (!(ai))
335+ then ([ScriptTransfer(aB.caller, bc, bd)] ++ aA())
336+ else if ((bd == C))
337+ then {
338+ let bo = D
339+ let bp = bi(J, K)
340+ let bl = bp._1
341+ let bm = bp._2
342+ let bn = bp._3
343+ let bq = (J + bc)
344+ let br = ((K - bm) - bn)
345+ if (if ((ac >= bq))
346+ then true
347+ else (ad >= br))
348+ then au(bm, af, I)
349+ else [IntegerEntry(f, bq), IntegerEntry(g, br), ScriptTransfer(aB.caller, bm, bo), ScriptTransfer(r, bn, bo)]
350+ }
351+ else if ((bd == D))
352+ then {
353+ let bo = C
354+ let bs = bi(K, J)
355+ let bl = bs._1
356+ let bm = bs._2
357+ let bn = bs._3
358+ let bq = ((J - bm) - bn)
359+ let br = (K + bc)
360+ if (if ((ac >= bq))
361+ then true
362+ else (ad >= br))
363+ then au(bm, ae, E)
364+ else [IntegerEntry(f, bq), IntegerEntry(g, br), ScriptTransfer(aB.caller, bm, bo), ScriptTransfer(r, bn, bo)]
365+ }
366+ else throw(((("Incorrect asset attached. Expected: " + A) + " or ") + B))
426367 }
427368
428369
429370
430-@Callable(aJ)
431-func exchange (bx) = {
432- let by = $Tuple2(aJ.payments[0].amount, aJ.payments[0].assetId)
433- let bt = by._1
434- let bu = by._2
435- func bz (bA,bB) = {
436- let bC = fraction(bB, bt, (bt + bA))
437- let bD = fraction(bC, (ab - Z), ab)
438- let bE = fraction(bC, aa, ab)
439- if ((bx > bD))
440- then throw(((("Calculated amount to receive " + toString(bD)) + " is less than specified minimum ") + toString(bx)))
441- else $Tuple3(bC, bD, bE)
442- }
371+@Callable(aB)
372+func shutdown () = if (!(z))
373+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, l), "the cause wasn't specified")))
374+ else if (!(containsElement([m, n, o, p], aB.callerPublicKey)))
375+ then throw("Only admin can call this function")
376+ else am("Paused by admin")
443377
444- if (!(L))
378+
379+
380+@Callable(aB)
381+func activate () = if (z)
382+ then throw("DApp is already active")
383+ else if (!(containsElement([m, n, o, p], aB.callerPublicKey)))
384+ then throw("Only admin can call this function")
385+ else [BooleanEntry(c, true), DeleteEntry(l)]
386+
387+
388+
389+@Callable(aB)
390+func takeIntoAccountExtraFunds (bt) = {
391+ let bu = (ag - J)
392+ let bv = (ah - K)
393+ let bw = (bu - (if ((C == unit))
394+ then bt
395+ else 0))
396+ let bx = (bv - (if ((D == unit))
397+ then bt
398+ else 0))
399+ if (!(z))
445400 then throw("DApp is inactive at this moment")
446- else if (if ((V == 0))
447- then true
448- else (W == 0))
449- then throw("Can't exchange with zero balance")
450- else if ((0 >= bx))
451- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bx)))
452- else if ((size(aJ.payments) != 1))
453- then throw("One attached payment expected")
454- else if (!(ar))
455- then ([ScriptTransfer(aJ.caller, bt, bu)] ++ aI())
456- else if ((bu == O))
457- then {
458- let bF = P
459- let bG = bz(V, W)
460- let bC = bG._1
461- let bD = bG._2
462- let bE = bG._3
463- let bH = (V + bt)
464- let bI = ((W - bD) - bE)
465- if (if (if ((O == J))
466- then (ai >= bH)
467- else false)
468- then true
469- else if ((P == J))
470- then (ai >= bI)
471- else false)
472- then aC(bD, ao, U)
473- else [IntegerEntry(f, bH), IntegerEntry(g, bI), ScriptTransfer(aJ.caller, bD, bF), ScriptTransfer(B, bE, bF)]
474- }
475- else if ((bu == P))
476- then {
477- let bF = O
478- let bJ = bz(W, V)
479- let bC = bJ._1
480- let bD = bJ._2
481- let bE = bJ._3
482- let bH = ((V - bD) - bE)
483- let bI = (W + bt)
484- if (if (if ((O == J))
485- then (ai >= bH)
486- else false)
487- then true
488- else if ((P == J))
489- then (ai >= bI)
490- else false)
491- then aC(bD, an, Q)
492- else [IntegerEntry(f, bH), IntegerEntry(g, bI), ScriptTransfer(aJ.caller, bD, bF), ScriptTransfer(B, bE, bF)]
493- }
494- else throw(((("Incorrect asset attached. Expected: " + M) + " or ") + N))
401+ else if ((aB.caller != this))
402+ then throw("Only the DApp itself can call this function")
403+ else if ((0 > bt))
404+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bt)))
405+ else if (if ((0 > bu))
406+ then true
407+ else (0 > bv))
408+ then am("Enroll amount negative")
409+ else if (if ((0 > bw))
410+ then true
411+ else (0 > bx))
412+ then throw("Too large amountLeave")
413+ else [IntegerEntry(f, (J + bw)), IntegerEntry(g, (K + bx)), IntegerEntry(("last_income_" + A), bw), IntegerEntry(("last_income_" + B), bx)]
495414 }
496415
497416
498-
499-@Callable(aJ)
500-func shutdown () = if (!(L))
501- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, n), "the cause wasn't specified")))
502- else if (!(containsElement([v, w, x, y], aJ.callerPublicKey)))
503- then throw("Only admin can call this function")
504- else ax("Paused by admin")
505-
506-
507-
508-@Callable(aJ)
509-func activate () = if (L)
510- then throw("DApp is already active")
511- else if (!(containsElement([v, w, x, y], aJ.callerPublicKey)))
512- then throw("Only admin can call this function")
513- else [BooleanEntry(c, true), DeleteEntry(n)]
514-
515-
516-
517-@Callable(aJ)
518-func takeIntoAccountExtraFunds (bK) = {
519- let bL = (ap - V)
520- let bM = (aq - W)
521- let bN = (bL - (if ((O == unit))
522- then bK
523- else 0))
524- let bO = (bM - (if ((P == unit))
525- then bK
526- else 0))
527- if (!(L))
528- then throw("DApp is inactive at this moment")
529- else if ((aJ.caller != this))
530- then throw("Only the DApp itself can call this function")
531- else if ((0 > bK))
532- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bK)))
533- else if (if ((0 > bL))
534- then true
535- else (0 > bM))
536- then ax("Enroll amount negative")
537- else if (if ((0 > bN))
538- then true
539- else (0 > bO))
540- then throw("Too large amountLeave")
541- else [IntegerEntry(f, (V + bN)), IntegerEntry(g, (W + bO)), IntegerEntry(("last_income_" + M), bN), IntegerEntry(("last_income_" + N), bO)]
542- }
543-
544-
545-@Verifier(bP)
546-func bQ () = {
547- let R = bP
548- if ($isInstanceOf(R, "InvokeScriptTransaction"))
417+@Verifier(by)
418+func bz () = {
419+ let F = by
420+ if ($isInstanceOf(F, "InvokeScriptTransaction"))
549421 then {
550- let bR = R
551- let bS = if ((bR.dApp == this))
552- then (bR.function == "takeIntoAccountExtraFunds")
553- else false
554- let bT = if ((bR.dApp == D))
555- then if (if (if ((bR.function == "lockNeutrino"))
556- then (size(bR.payments) == 1)
557- else false)
558- then (bR.payments[0].assetId == J)
559- else false)
560- then true
561- else if ((bR.function == "unlockNeutrino"))
562- then (size(bR.payments) == 0)
563- else false
564- else false
565- let bU = if (if (if ((bR.dApp == E))
566- then (bR.function == "exchange")
567- else false)
568- then (O == J)
422+ let bA = F
423+ if (if (if (sigVerify(bA.bodyBytes, bA.proofs[0], q))
424+ then (bA.dApp == s)
569425 else false)
570426 then true
571- else if ((P == J))
572- then (bR.payments[0].assetId == J)
427+ else if (if (sigVerify(bA.bodyBytes, bA.proofs[0], q))
428+ then (bA.function == "exchange")
429+ else false)
430+ then if (if (if (if ((C == u))
431+ then (D == t)
432+ else false)
433+ then (bA.dApp == w)
434+ else false)
435+ then if ((bA.payments[0].assetId == unit))
436+ then true
437+ else (bA.payments[0].assetId == t)
438+ else false)
439+ then true
440+ else if (if ((C == u))
441+ then (D == v)
442+ else false)
443+ then if (if ((bA.dApp == x))
444+ then (bA.payments[0].assetId == t)
445+ else false)
446+ then true
447+ else if ((bA.dApp == w))
448+ then if ((bA.payments[0].assetId == unit))
449+ then true
450+ else (bA.payments[0].assetId == t)
451+ else false
452+ else false
453+ else false)
454+ then true
455+ else if (if (sigVerify(bA.bodyBytes, bA.proofs[0], q))
456+ then (bA.dApp == this)
457+ else false)
458+ then (bA.function == "takeIntoAccountExtraFunds")
573459 else false
574- let bV = if (if (if (sigVerify(bP.bodyBytes, bP.proofs[0], v))
575- then true
576- else sigVerify(bP.bodyBytes, bP.proofs[0], w))
577- then true
578- else sigVerify(bP.bodyBytes, bP.proofs[0], x))
579- then true
580- else sigVerify(bP.bodyBytes, bP.proofs[0], z)
581- if (if (if (bS)
582- then true
583- else bT)
584- then true
585- else bU)
586- then bV
587- else false
588460 }
589461 else {
590- let bW = if (sigVerify(bP.bodyBytes, bP.proofs[0], v))
462+ let bB = if (sigVerify(by.bodyBytes, by.proofs[0], m))
591463 then 1
592464 else 0
593- let bX = if (sigVerify(bP.bodyBytes, bP.proofs[1], w))
465+ let bC = if (sigVerify(by.bodyBytes, by.proofs[1], n))
594466 then 1
595467 else 0
596- let bY = if (sigVerify(bP.bodyBytes, bP.proofs[2], x))
468+ let bD = if (sigVerify(by.bodyBytes, by.proofs[2], o))
597469 then 1
598470 else 0
599- (((bW + bX) + bY) >= 2)
471+ (((bB + bC) + bD) >= 2)
600472 }
601473 }
602474

github/deemru/w8io/169f3d6 
115.69 ms