tx · 2K5dFPXuSnBigJ9tSbhn8XSG86zCYDFYvrUgMW7GXWKm 3P9VVzzkP1Cfsk3LtTeuUaQqUt5D7sLthLe: -0.01100000 Waves 2022.08.06 17:08 [3238235] smart account 3P9VVzzkP1Cfsk3LtTeuUaQqUt5D7sLthLe > SELF 0.00000000 Waves
{ "type": 13, "id": "2K5dFPXuSnBigJ9tSbhn8XSG86zCYDFYvrUgMW7GXWKm", "fee": 1100000, "feeAssetId": null, "timestamp": 1659794952974, "version": 2, "chainId": 87, "sender": "3P9VVzzkP1Cfsk3LtTeuUaQqUt5D7sLthLe", "senderPublicKey": "HiH9eknsCZ417kt2aJnJ9HrnrWCYcdRoGsFi8yANmYx8", "proofs": [ "2iYtaUtBNuRdXp85msegdaXkNnKLwNeREpXdWa1TpWZE6KYaG35xnmftfhw6uNwHqFScQdDqwoU2QWcrV45Zg9YF" ], "script": "base64:AAIFAAAAAAAAAA4IAhIDCgEEEgUKAwQIAQAAAA4AAAAAB3BsdXRvSWQBAAAAIAgLS31S8qASJW+T7s99SrIspsrLF1j9hxE9vHm2pxfdAAAAAApwbHV0b0lkU3RyAgAAACtZUUZZb013QVJNUXpaczN3cXVjQlRkSk5XU2JzWWszR0F3N3dzcVU0Z3lBAAAAABFwYXJhbWV0ZXJzQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBV+7WJYtq2Ae0X0s1eNtV5rMlFw/bMdew9AAAAAAOc3Rha2luZ0FkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVeLUO7DeRdqLE5bu+tJgOeuQ/CF8GxmH1wAAAAADWlzc3VlckFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVeQ2vEGuhKb4rJE7aJ51glAjlqSLZbroBYAAAAAD3RyZWFzdXJ5QWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBV1+Rpd7Pm8BtrouF5KfCv9sVtrVAjPeXYgAAAAALdGVhbUFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVfX4SNRjnyriFrV1yiXddiIddOPriMFpuEAAAAABlNjYWxlOAAAAAAABfXhAAEAAAANdHJ5R2V0SW50ZWdlcgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAF4BQAAAAckbWF0Y2gwBQAAAAF4AAAAAAAAAAAAAQAAABJ0cnlHZXRJbnRQYXJhbWV0ZXIAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAABFwYXJhbWV0ZXJzQWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAXgFAAAAByRtYXRjaDAFAAAAAXgAAAAAAAAAAAABAAAAEnRyeUdldFN0clBhcmFtZXRlcgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAAEXBhcmFtZXRlcnNBZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABeAUAAAAHJG1hdGNoMAUAAAABeAIAAAAAAQAAABJjYWxjdWxhdGVQb29sUHJpY2UAAAACAAAAC3Bvb2xBZGRyZXNzAAAACGFzc2V0U3RyBAAAAAhhMFdlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAALcG9vbEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAAAdzdGF0aWNfBQAAAAhhc3NldFN0cgIAAAAHX3dlaWdodAQAAAAIYTFXZWlnaHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAAC3Bvb2xBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAAHc3RhdGljXwUAAAAKcGx1dG9JZFN0cgIAAAAHX3dlaWdodAQAAAAJYTBCYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAtwb29sQWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAB2dsb2JhbF8FAAAACGFzc2V0U3RyAgAAAAhfYmFsYW5jZQQAAAAJYTFCYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAtwb29sQWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAB2dsb2JhbF8FAAAACnBsdXRvSWRTdHICAAAACF9iYWxhbmNlCQAAawAAAAMFAAAABlNjYWxlOAkAAGgAAAACBQAAAAlhMUJhbGFuY2UFAAAACGEwV2VpZ2h0CQAAaAAAAAIFAAAACWEwQmFsYW5jZQUAAAAIYTFXZWlnaHQBAAAAFmNhbGN1bGF0ZVBvb2xBbW91bnRPdXQAAAADAAAAC3Bvb2xBZGRyZXNzAAAACGFzc2V0U3RyAAAABmFtb3VudAQAAAAIYTBXZWlnaHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAAC3Bvb2xBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAAHc3RhdGljXwUAAAAIYXNzZXRTdHICAAAAB193ZWlnaHQEAAAACGExV2VpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAtwb29sQWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAB3N0YXRpY18FAAAACnBsdXRvSWRTdHICAAAAB193ZWlnaHQEAAAACWEwQmFsYW5jZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAALcG9vbEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAAAdnbG9iYWxfBQAAAAhhc3NldFN0cgIAAAAIX2JhbGFuY2UEAAAACWExQmFsYW5jZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAALcG9vbEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAAAdnbG9iYWxfBQAAAApwbHV0b0lkU3RyAgAAAAhfYmFsYW5jZQQAAAAHYW1vdW50MQkBAAAACGZyYWN0aW9uAAAABAUAAAAJYTFCYWxhbmNlCQAAZQAAAAIJAABoAAAAAgUAAAAGU2NhbGU4BQAAAAZTY2FsZTgJAAGgAAAAAQkAAHYAAAAGCQABPQAAAAQJAAE2AAAAAQUAAAAJYTBCYWxhbmNlCQABNgAAAAEJAABoAAAAAgUAAAAGU2NhbGU4BQAAAAZTY2FsZTgJAAE2AAAAAQkAAGQAAAACBQAAAAlhMEJhbGFuY2UFAAAABmFtb3VudAUAAAAGSEFMRlVQAAAAAAAAAAAQCQABNgAAAAEJAABrAAAAAwUAAAAIYTBXZWlnaHQAAAAAAAAAJxAFAAAACGExV2VpZ2h0AAAAAAAAAAAEAAAAAAAAAAAQBQAAAAdDRUlMSU5HCQAAaAAAAAIFAAAABlNjYWxlOAUAAAAGU2NhbGU4BQAAAARET1dOCQAAawAAAAMFAAAAB2Ftb3VudDEAAAAAAAAAAGIAAAAAAAAAAGQBAAAAE2NhbGN1bGF0ZUlzc3VlUGx1dG8AAAADAAAAB2Fzc2V0SWQAAAAGYW1vdW50AAAACmV2YWx1YXRpb24EAAAAFG9uYm9hcmRpbmdQYXJhbWV0ZXJzBAAAAAckbWF0Y2gwCQAD/AAAAAQFAAAAEXBhcmFtZXRlcnNBZGRyZXNzAgAAABdnZXRPbmJvYXJkaW5nUGFyYW1ldGVycwkABEwAAAACBwUAAAADbmlsBQAAAANuaWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACUxpc3RbQW55XQQAAAACaW4FAAAAByRtYXRjaDAFAAAAAmluCQAAAgAAAAECAAAAFmNhbm5vdCBsb2FkIHBhcmFtZXRlcnMDCQAAAAAAAAIFAAAAFG9uYm9hcmRpbmdQYXJhbWV0ZXJzBQAAABRvbmJvYXJkaW5nUGFyYW1ldGVycwQAAAAMYnV5YmFja1JhdGlvBAAAAAckbWF0Y2gwCQABkQAAAAIFAAAAFG9uYm9hcmRpbmdQYXJhbWV0ZXJzAAAAAAAAAAAEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAXgFAAAAByRtYXRjaDAFAAAAAXgJAAACAAAAAQIAAAAXY2Fubm90IHBhcnNlIHBhcmFtZXRlcnMEAAAAB3ByZW1pdW0EAAAAByRtYXRjaDAJAAGRAAAAAgUAAAAUb25ib2FyZGluZ1BhcmFtZXRlcnMAAAAAAAAAAAEDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABeAUAAAAHJG1hdGNoMAUAAAABeAkAAAIAAAABAgAAABdjYW5ub3QgcGFyc2UgcGFyYW1ldGVycwQAAAALdGVhbVByZW1pdW0EAAAAByRtYXRjaDAJAAGRAAAAAgUAAAAUb25ib2FyZGluZ1BhcmFtZXRlcnMAAAAAAAAAAAMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABeAUAAAAHJG1hdGNoMAUAAAABeAkAAAIAAAABAgAAABdjYW5ub3QgcGFyc2UgcGFyYW1ldGVycwQAAAAGcGVyaW9kBAAAAAckbWF0Y2gwCQABkQAAAAIFAAAAFG9uYm9hcmRpbmdQYXJhbWV0ZXJzAAAAAAAAAAACAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAXgFAAAAByRtYXRjaDAFAAAAAXgJAAACAAAAAQIAAAAXY2Fubm90IHBhcnNlIHBhcmFtZXRlcnMEAAAACmFzc2V0SWRTdHIJAAJYAAAAAQUAAAAHYXNzZXRJZAQAAAAHcG9vbFN0cgkBAAAAEnRyeUdldFN0clBhcmFtZXRlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZhc3NldF8FAAAACmFzc2V0SWRTdHICAAAABV9wb29sBAAAAAtwb29sQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBV7jYyH909s3aUPtUxIZ5hR/OpH6dbeAMYwQAAAAPYW1vdW50VG9CdXliYWNrCQAAawAAAAMFAAAABmFtb3VudAUAAAAMYnV5YmFja1JhdGlvAAAAAAAAACcQBAAAAA1hbW91bnRUb0lzc3VlCQAAZQAAAAIFAAAABmFtb3VudAUAAAAPYW1vdW50VG9CdXliYWNrBAAAABFhc3NldFByaWNlVG9QbHV0bwkBAAAAEmNhbGN1bGF0ZVBvb2xQcmljZQAAAAIFAAAAC3Bvb2xBZGRyZXNzBQAAAAphc3NldElkU3RyBAAAAAtwbHV0b0lzc3VlZAkAAGsAAAADBQAAAA1hbW91bnRUb0lzc3VlBQAAABFhc3NldFByaWNlVG9QbHV0bwUAAAAGU2NhbGU4BAAAAANpbnYDBQAAAApldmFsdWF0aW9uCQAD/AAAAAQFAAAAC3Bvb2xBZGRyZXNzAgAAAAhjYWxjU3dhcAkABEwAAAACBQAAAAphc3NldElkU3RyCQAETAAAAAIFAAAACnBsdXRvSWRTdHIJAARMAAAAAgUAAAAPYW1vdW50VG9CdXliYWNrBQAAAANuaWwFAAAAA25pbAkAA/wAAAAEBQAAAAtwb29sQWRkcmVzcwIAAAAEc3dhcAkABEwAAAACBQAAAApwbHV0b0lkU3RyCQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAHYXNzZXRJZAUAAAAPYW1vdW50VG9CdXliYWNrBQAAAANuaWwDCQAAAAAAAAIFAAAAA2ludgUAAAADaW52BAAAAAtwbHV0b0JvdWdodAQAAAAHJG1hdGNoMAUAAAADaW52AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAXgFAAAAByRtYXRjaDAFAAAAAXgAAAAAAAAAAAAEAAAACnRvdGFsUGx1dG8JAABkAAAAAgUAAAALcGx1dG9Cb3VnaHQFAAAAC3BsdXRvSXNzdWVkBAAAABJwcmVtaXVtUGx1dG9Jc3N1ZWQJAABrAAAAAwUAAAAKdG90YWxQbHV0bwUAAAAHcHJlbWl1bQAAAAAAAAAnEAQAAAAPdGVhbVBsdXRvSXNzdWVkCQAAawAAAAMFAAAACnRvdGFsUGx1dG8FAAAAC3RlYW1QcmVtaXVtAAAAAAAAACcQBAAAAARpbnYyCQAD/AAAAAQFAAAADWlzc3VlckFkZHJlc3MCAAAADHJlcXVlc3RJc3N1ZQkABEwAAAACCQAAZAAAAAIJAABkAAAAAgUAAAALcGx1dG9Jc3N1ZWQFAAAAEnByZW1pdW1QbHV0b0lzc3VlZAUAAAAPdGVhbVBsdXRvSXNzdWVkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAEaW52MgUAAAAEaW52MgkABEwAAAACBQAAAAtwbHV0b0lzc3VlZAkABEwAAAACBQAAAAtwbHV0b0JvdWdodAkABEwAAAACBQAAABJwcmVtaXVtUGx1dG9Jc3N1ZWQJAARMAAAAAgUAAAAPdGVhbVBsdXRvSXNzdWVkCQAETAAAAAIFAAAADWFtb3VudFRvSXNzdWUJAARMAAAAAgUAAAAHcHJlbWl1bQkABEwAAAACBQAAAAZwZXJpb2QFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAIAAAABaQEAAAAKaXNzdWVQbHV0bwAAAAEAAAAFZGVidWcEAAAAB2Fzc2V0SWQJAQAAAAV2YWx1ZQAAAAEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAABnJlc3VsdAkBAAAAE2NhbGN1bGF0ZUlzc3VlUGx1dG8AAAADBQAAAAdhc3NldElkCQEAAAAFdmFsdWUAAAABCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQHAwkAAAAAAAACBQAAAAZyZXN1bHQFAAAABnJlc3VsdAQAAAAGbG9ja3VwCQAD/AAAAAQFAAAADnN0YWtpbmdBZGRyZXNzAgAAAA9zdGFydE9uYm9hcmRpbmcJAARMAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAARMAAAAAgkAAGQAAAACCQABkQAAAAIFAAAABnJlc3VsdAAAAAAAAAAAAAkAAZEAAAACBQAAAAZyZXN1bHQAAAAAAAAAAAEJAARMAAAAAgkAAZEAAAACBQAAAAZyZXN1bHQAAAAAAAAAAAIJAARMAAAAAgkAAZEAAAACBQAAAAZyZXN1bHQAAAAAAAAAAAYJAARMAAAAAgkAAZEAAAACBQAAAAZyZXN1bHQAAAAAAAAAAAUJAARMAAAAAgkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAAB3BsdXRvSWQJAABkAAAAAgkAAGQAAAACCQABkQAAAAIFAAAABnJlc3VsdAAAAAAAAAAAAAkAAZEAAAACBQAAAAZyZXN1bHQAAAAAAAAAAAEJAAGRAAAAAgUAAAAGcmVzdWx0AAAAAAAAAAACBQAAAANuaWwDCQAAAAAAAAIFAAAABmxvY2t1cAUAAAAGbG9ja3VwAwUAAAAFZGVidWcJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhpc3N1ZWQ6IAkAAaQAAAABCQABkQAAAAIFAAAABnJlc3VsdAAAAAAAAAAAAAIAAAAKOyBib3VnaHQ6IAkAAaQAAAABCQABkQAAAAIFAAAABnJlc3VsdAAAAAAAAAAAAQIAAAALOyBwcmVtaXVtOiAJAAGkAAAAAQkAAZEAAAACBQAAAAZyZXN1bHQAAAAAAAAAAAICAAAACDsgdGVhbTogCQABpAAAAAEJAAGRAAAAAgUAAAAGcmVzdWx0AAAAAAAAAAADCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAD3RyZWFzdXJ5QWRkcmVzcwkAAZEAAAACBQAAAAZyZXN1bHQAAAAAAAAAAAQFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdGVhbUFkZHJlc3MJAAGRAAAAAgUAAAAGcmVzdWx0AAAAAAAAAAADBQAAAAdwbHV0b0lkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABJldmFsdWF0ZUlzc3VlUGx1dG8AAAADAAAABWRlYnVnAAAACmFzc2V0SWRTdHIAAAAGYW1vdW50BAAAAAdhc3NldElkCQACWQAAAAEFAAAACmFzc2V0SWRTdHIEAAAABnJlc3VsdAkBAAAAE2NhbGN1bGF0ZUlzc3VlUGx1dG8AAAADBQAAAAdhc3NldElkBQAAAAZhbW91bnQGAwkAAAAAAAACBQAAAAZyZXN1bHQFAAAABnJlc3VsdAMFAAAABWRlYnVnCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIaXNzdWVkOiAJAAGkAAAAAQkAAZEAAAACBQAAAAZyZXN1bHQAAAAAAAAAAAACAAAACjsgYm91Z2h0OiAJAAGkAAAAAQkAAZEAAAACBQAAAAZyZXN1bHQAAAAAAAAAAAECAAAACzsgcHJlbWl1bTogCQABpAAAAAEJAAGRAAAAAgUAAAAGcmVzdWx0AAAAAAAAAAACAgAAAAg7IHRlYW06IAkAAaQAAAABCQABkQAAAAIFAAAABnJlc3VsdAAAAAAAAAAAAwkABRQAAAACBQAAAANuaWwJAARMAAAAAgkAAGQAAAACCQABkQAAAAIFAAAABnJlc3VsdAAAAAAAAAAAAAkAAZEAAAACBQAAAAZyZXN1bHQAAAAAAAAAAAEJAARMAAAAAgkAAZEAAAACBQAAAAZyZXN1bHQAAAAAAAAAAAMFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tledfg3Ps=", "height": 3238235, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4bUVN93tHrezMcAnCdFL4RFRGUzJ2eDkVfrdLQLVrKMD Next: 6vMmkWrq4Ws53Ak38UVZkCCco4Tw4QhqqHNM7vx1rPs5 Diff:
Old | New | Differences | |
---|---|---|---|
95 | 95 | } | |
96 | 96 | let assetIdStr = toBase58String(assetId) | |
97 | 97 | let poolStr = tryGetStrParameter((("asset_" + assetIdStr) + "_pool")) | |
98 | - | let poolAddress = | |
98 | + | let poolAddress = Address(base58'3PJnGkuMm4LkJQVCT7QCRyzApQiEQ2UWcdx') | |
99 | 99 | let amountToBuyback = fraction(amount, buybackRatio, 10000) | |
100 | 100 | let amountToIssue = (amount - amountToBuyback) | |
101 | 101 | let assetPriceToPluto = calculatePoolPrice(poolAddress, assetIdStr) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let plutoId = base58'YQFYoMwARMQzZs3wqucBTdJNWSbsYk3GAw7wsqU4gyA' | |
5 | 5 | ||
6 | 6 | let plutoIdStr = "YQFYoMwARMQzZs3wqucBTdJNWSbsYk3GAw7wsqU4gyA" | |
7 | 7 | ||
8 | 8 | let parametersAddress = Address(base58'3PPhk65Ab4UDgbxYUDW7YSXkzHfWtj7WBrB') | |
9 | 9 | ||
10 | 10 | let stakingAddress = Address(base58'3PEdXcDCs3wzcWQsusvq92cLb7deRpgR4J7') | |
11 | 11 | ||
12 | 12 | let issuerAddress = Address(base58'3PF8pKC8CdmW9sEJUxQVSfezYRSJeThoNR3') | |
13 | 13 | ||
14 | 14 | let treasuryAddress = Address(base58'3PAeDQGNbYa3W2EacZkJG3dSiDnHsQarqzZ') | |
15 | 15 | ||
16 | 16 | let teamAddress = Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL') | |
17 | 17 | ||
18 | 18 | let Scale8 = 100000000 | |
19 | 19 | ||
20 | 20 | func tryGetInteger (key) = match getInteger(this, key) { | |
21 | 21 | case x: Int => | |
22 | 22 | x | |
23 | 23 | case _ => | |
24 | 24 | 0 | |
25 | 25 | } | |
26 | 26 | ||
27 | 27 | ||
28 | 28 | func tryGetIntParameter (key) = match getInteger(parametersAddress, key) { | |
29 | 29 | case x: Int => | |
30 | 30 | x | |
31 | 31 | case _ => | |
32 | 32 | 0 | |
33 | 33 | } | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | func tryGetStrParameter (key) = match getString(parametersAddress, key) { | |
37 | 37 | case x: String => | |
38 | 38 | x | |
39 | 39 | case _ => | |
40 | 40 | "" | |
41 | 41 | } | |
42 | 42 | ||
43 | 43 | ||
44 | 44 | func calculatePoolPrice (poolAddress,assetStr) = { | |
45 | 45 | let a0Weight = getIntegerValue(poolAddress, (("static_" + assetStr) + "_weight")) | |
46 | 46 | let a1Weight = getIntegerValue(poolAddress, (("static_" + plutoIdStr) + "_weight")) | |
47 | 47 | let a0Balance = getIntegerValue(poolAddress, (("global_" + assetStr) + "_balance")) | |
48 | 48 | let a1Balance = getIntegerValue(poolAddress, (("global_" + plutoIdStr) + "_balance")) | |
49 | 49 | fraction(Scale8, (a1Balance * a0Weight), (a0Balance * a1Weight)) | |
50 | 50 | } | |
51 | 51 | ||
52 | 52 | ||
53 | 53 | func calculatePoolAmountOut (poolAddress,assetStr,amount) = { | |
54 | 54 | let a0Weight = getIntegerValue(poolAddress, (("static_" + assetStr) + "_weight")) | |
55 | 55 | let a1Weight = getIntegerValue(poolAddress, (("static_" + plutoIdStr) + "_weight")) | |
56 | 56 | let a0Balance = getIntegerValue(poolAddress, (("global_" + assetStr) + "_balance")) | |
57 | 57 | let a1Balance = getIntegerValue(poolAddress, (("global_" + plutoIdStr) + "_balance")) | |
58 | 58 | let amount1 = fraction(a1Balance, ((Scale8 * Scale8) - toInt(pow(fraction(toBigInt(a0Balance), toBigInt((Scale8 * Scale8)), toBigInt((a0Balance + amount)), HALFUP), 16, toBigInt(fraction(a0Weight, 10000, a1Weight)), 4, 16, CEILING))), (Scale8 * Scale8), DOWN) | |
59 | 59 | fraction(amount1, 98, 100) | |
60 | 60 | } | |
61 | 61 | ||
62 | 62 | ||
63 | 63 | func calculateIssuePluto (assetId,amount,evaluation) = { | |
64 | 64 | let onboardingParameters = match invoke(parametersAddress, "getOnboardingParameters", [false], nil) { | |
65 | 65 | case in: List[Any] => | |
66 | 66 | in | |
67 | 67 | case _ => | |
68 | 68 | throw("cannot load parameters") | |
69 | 69 | } | |
70 | 70 | if ((onboardingParameters == onboardingParameters)) | |
71 | 71 | then { | |
72 | 72 | let buybackRatio = match onboardingParameters[4] { | |
73 | 73 | case x: Int => | |
74 | 74 | x | |
75 | 75 | case _ => | |
76 | 76 | throw("cannot parse parameters") | |
77 | 77 | } | |
78 | 78 | let premium = match onboardingParameters[1] { | |
79 | 79 | case x: Int => | |
80 | 80 | x | |
81 | 81 | case _ => | |
82 | 82 | throw("cannot parse parameters") | |
83 | 83 | } | |
84 | 84 | let teamPremium = match onboardingParameters[3] { | |
85 | 85 | case x: Int => | |
86 | 86 | x | |
87 | 87 | case _ => | |
88 | 88 | throw("cannot parse parameters") | |
89 | 89 | } | |
90 | 90 | let period = match onboardingParameters[2] { | |
91 | 91 | case x: Int => | |
92 | 92 | x | |
93 | 93 | case _ => | |
94 | 94 | throw("cannot parse parameters") | |
95 | 95 | } | |
96 | 96 | let assetIdStr = toBase58String(assetId) | |
97 | 97 | let poolStr = tryGetStrParameter((("asset_" + assetIdStr) + "_pool")) | |
98 | - | let poolAddress = | |
98 | + | let poolAddress = Address(base58'3PJnGkuMm4LkJQVCT7QCRyzApQiEQ2UWcdx') | |
99 | 99 | let amountToBuyback = fraction(amount, buybackRatio, 10000) | |
100 | 100 | let amountToIssue = (amount - amountToBuyback) | |
101 | 101 | let assetPriceToPluto = calculatePoolPrice(poolAddress, assetIdStr) | |
102 | 102 | let plutoIssued = fraction(amountToIssue, assetPriceToPluto, Scale8) | |
103 | 103 | let inv = if (evaluation) | |
104 | 104 | then invoke(poolAddress, "calcSwap", [assetIdStr, plutoIdStr, amountToBuyback], nil) | |
105 | 105 | else invoke(poolAddress, "swap", [plutoIdStr, 0], [AttachedPayment(assetId, amountToBuyback)]) | |
106 | 106 | if ((inv == inv)) | |
107 | 107 | then { | |
108 | 108 | let plutoBought = match inv { | |
109 | 109 | case x: Int => | |
110 | 110 | x | |
111 | 111 | case _ => | |
112 | 112 | 0 | |
113 | 113 | } | |
114 | 114 | let totalPluto = (plutoBought + plutoIssued) | |
115 | 115 | let premiumPlutoIssued = fraction(totalPluto, premium, 10000) | |
116 | 116 | let teamPlutoIssued = fraction(totalPluto, teamPremium, 10000) | |
117 | 117 | let inv2 = invoke(issuerAddress, "requestIssue", [((plutoIssued + premiumPlutoIssued) + teamPlutoIssued)], nil) | |
118 | 118 | if ((inv2 == inv2)) | |
119 | 119 | then [plutoIssued, plutoBought, premiumPlutoIssued, teamPlutoIssued, amountToIssue, premium, period] | |
120 | 120 | else throw("Strict value is not equal to itself.") | |
121 | 121 | } | |
122 | 122 | else throw("Strict value is not equal to itself.") | |
123 | 123 | } | |
124 | 124 | else throw("Strict value is not equal to itself.") | |
125 | 125 | } | |
126 | 126 | ||
127 | 127 | ||
128 | 128 | @Callable(i) | |
129 | 129 | func issuePluto (debug) = { | |
130 | 130 | let assetId = value(i.payments[0].assetId) | |
131 | 131 | let result = calculateIssuePluto(assetId, value(i.payments[0].amount), false) | |
132 | 132 | if ((result == result)) | |
133 | 133 | then { | |
134 | 134 | let lockup = invoke(stakingAddress, "startOnboarding", [toString(i.caller), (result[0] + result[1]), result[2], result[6], result[5], toBase58String(value(i.payments[0].assetId))], [AttachedPayment(plutoId, ((result[0] + result[1]) + result[2]))]) | |
135 | 135 | if ((lockup == lockup)) | |
136 | 136 | then if (debug) | |
137 | 137 | then throw(((((((("issued: " + toString(result[0])) + "; bought: ") + toString(result[1])) + "; premium: ") + toString(result[2])) + "; team: ") + toString(result[3]))) | |
138 | 138 | else [ScriptTransfer(treasuryAddress, result[4], assetId), ScriptTransfer(teamAddress, result[3], plutoId)] | |
139 | 139 | else throw("Strict value is not equal to itself.") | |
140 | 140 | } | |
141 | 141 | else throw("Strict value is not equal to itself.") | |
142 | 142 | } | |
143 | 143 | ||
144 | 144 | ||
145 | 145 | ||
146 | 146 | @Callable(i) | |
147 | 147 | func evaluateIssuePluto (debug,assetIdStr,amount) = { | |
148 | 148 | let assetId = fromBase58String(assetIdStr) | |
149 | 149 | let result = calculateIssuePluto(assetId, amount, true) | |
150 | 150 | if ((result == result)) | |
151 | 151 | then if (debug) | |
152 | 152 | then throw(((((((("issued: " + toString(result[0])) + "; bought: ") + toString(result[1])) + "; premium: ") + toString(result[2])) + "; team: ") + toString(result[3]))) | |
153 | 153 | else $Tuple2(nil, [(result[0] + result[1]), result[3]]) | |
154 | 154 | else throw("Strict value is not equal to itself.") | |
155 | 155 | } | |
156 | 156 | ||
157 | 157 | ||
158 | 158 | @Verifier(tx) | |
159 | 159 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
160 | 160 |
github/deemru/w8io/6500d08 40.13 ms ◑