tx · B6indvFJbuKB4BjFMSP4ePxkUNewDHUVQJ69e1HnmgYH 3P4KBJT1v7EKubb5Dvij88FgpDBmJ21RPBR: -0.01000000 Waves 2023.04.14 13:25 [3599715] smart account 3P4KBJT1v7EKubb5Dvij88FgpDBmJ21RPBR > SELF 0.00000000 Waves
{ "type": 13, "id": "B6indvFJbuKB4BjFMSP4ePxkUNewDHUVQJ69e1HnmgYH", "fee": 1000000, "feeAssetId": null, "timestamp": 1681467949006, "version": 2, "chainId": 87, "sender": "3P4KBJT1v7EKubb5Dvij88FgpDBmJ21RPBR", "senderPublicKey": "EJ6kVs5NZQFA4cCHHhvVMfrvHXu4RdB1RiVHNrGkYYsU", "proofs": [ "2azFdqcTPMKpfiuQfEm7d8DtjXFyhUTRvZuGcCUrujPWnTfyGNmE7r4RCcbSLXjPr7hPTjEnSLvqmZN1SJusmUeT" ], "script": "base64:BgIECAISAAYBGWZpbmFsaXplVXNkblVzZHRPbmNoYWluVjIABBB3YXZlc1VzZHRQcmljZVg2AIDciAEEDmV0aFVzZHRQcmljZVg2CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhUlcyVzX19wcmljZV9fRVRILVVTRFQEBnN5bWJvbAIJVVNETi1VU0RUBAh4dG5JZFN0cgIsREcyeEZrUGREd0tVb0JrekdBaFF0THBTR3pmWExpQ1lQRXplS0gyQWQyNHAEBXh0bklkCQDZBAEFCHh0bklkU3RyBAl1c2R0SWRTdHICLDM0TjlZY0VFVExXbjkzcVlRNjRFc1AxeDg5dFNydUpVNDRSckVNU1hYRVBKBAp1c2RuQW1vdW50AICU69wDBBB3eFVzZHRYdG5Qb29sU3RyAiMzUDhLTXlBSkNQV05jeWVkcXJteW14YWVXb252bWtoR2F1egQUd3hVc2R0WHRuUG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEHd4VXNkdFh0blBvb2xTdHIECnd4VXNkdFh0blcAQwQJJHQwNjExNzU5CgABQAkA/AcEBRR3eFVzZHRYdG5Qb29sQWRkcmVzcwIccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQkAzAgCBQp1c2RuQW1vdW50CQDMCAIFCHh0bklkU3RyBQNuaWwFA25pbAMJAAECBQFAAg8oSW50LCBJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAiQgY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQsIEludCkECGxwQW1vdW50CAUJJHQwNjExNzU5Al8xBApmZWVBbW91bnQxCAUJJHQwNjExNzU5Al8yBAVib251cwgFCSR0MDYxMTc1OQJfMwQJJHQwNzYyODkwCgABQAkA/AcEBRR3eFVzZHRYdG5Qb29sQWRkcmVzcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQl1c2R0SWRTdHIJAMwIAgUIbHBBbW91bnQFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAp1c2R0QW1vdW50CAUJJHQwNzYyODkwAl8xBApmZWVBbW91bnQyCAUJJHQwNzYyODkwAl8yBA53eFVzZHRYdG5QcmljZQkAawMFCnVzZHRBbW91bnQAwIQ9BQp1c2RuQW1vdW50BAt3eFdhdmVzWHRuVwCmBAQRd3hXYXZlc1h0blBvb2xTdHICIzNQUFpXZ0ZOUktITHZNNTFwd1M5MzRDOFZaN2QyRjRaNThnBBV3eFdhdmVzWHRuUG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEXd4V2F2ZXNYdG5Qb29sU3RyBA93YXZlc1dhdmVzWHRuWDgICQDvBwEFFXd4V2F2ZXNYdG5Qb29sQWRkcmVzcwdyZWd1bGFyBA14dG5XYXZlc1h0blg2CQDwBwIFFXd4V2F2ZXNYdG5Qb29sQWRkcmVzcwUFeHRuSWQED3dhdmVzWHRuUHJpY2VYNgkAawMFDXh0bldhdmVzWHRuWDYAgMLXLwUPd2F2ZXNXYXZlc1h0blg4BBN3eFdhdmVzVXNkdFh0blByaWNlCQBrAwUQd2F2ZXNVc2R0UHJpY2VYNgDAhD0FD3dhdmVzWHRuUHJpY2VYNgQJd3hFdGhYdG5XAAUECGV0aElkU3RyAiw0NzRqVGVZeDJyMlZhMzU3OTR0Q1NjQVhXSkc5aFUySGNneHpNb3dhWlVudQQFZXRoSWQJANkEAQUIZXRoSWRTdHIED3d4RXRoWHRuUG9vbFN0cgIjM1BFTXFldHNhSkRiWU13MVhHb3ZtRTM3RkI4VlVoR25YOUEEE3d4RXRoWHRuUG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFD3d4RXRoWHRuUG9vbFN0cgQLZXRoRXRoWHRuWDgJAPAHAgUTd3hFdGhYdG5Qb29sQWRkcmVzcwUFZXRoSWQEC3h0bkV0aFh0blg2CQDwBwIFE3d4RXRoWHRuUG9vbEFkZHJlc3MFBXh0bklkBA1ldGhYdG5QcmljZVg2CQBrAwULeHRuRXRoWHRuWDYAgMLXLwULZXRoRXRoWHRuWDgEEXd4RXRoVXNkdFh0blByaWNlCQBrAwUOZXRoVXNkdFByaWNlWDYAwIQ9BQ1ldGhYdG5QcmljZVg2BA9zd29wZmlXYXZlc1h0blcAwgMECnN3b3BmaVJlc3QJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQNTZqTlF6RUNYbnJXcG5iYlNKS3c3RW9vbzZma1VhTVBwBBVzd29wZmlXYXZlc1h0blByaWNlWDYKAAFACQD8BwQFCnN3b3BmaVJlc3QCEWNhbGNHZXRBbW91bnRDUE1NCQDMCAICIzNQSGFOZ29tQmtydkVMMlFudUphclFWSmE3MXdqdzlxaXFHCQDMCAICIzNQUUhDVHFmekU4ZTFKbzhtMVFWYUNYQVRTS3lNbWtZYXNGCQDMCAICBVdBVkVTCQDMCAIAgMLXLwUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BBdzd29wZmlXYXZlc1VzZHRYdG5QcmljZQkAawMFEHdhdmVzVXNkdFByaWNlWDYAwIQ9BRVzd29wZmlXYXZlc1h0blByaWNlWDYECG5ld1ByaWNlCQBkAgkAawMFE3d4V2F2ZXNVc2R0WHRuUHJpY2UFC3d4V2F2ZXNYdG5XAOgHCQBrAwUXc3dvcGZpV2F2ZXNVc2R0WHRuUHJpY2UFD3N3b3BmaVdhdmVzWHRuVwDoBwQFZGVidWcJAKwCAgkArAICCQCsAgICFHd4V2F2ZXNVc2R0WHRuUHJpY2U9CQCkAwEFE3d4V2F2ZXNVc2R0WHRuUHJpY2UCGSBzd29wZmlXYXZlc1VzZHRYdG5QcmljZT0JAKQDAQUXc3dvcGZpV2F2ZXNVc2R0WHRuUHJpY2UJAJQKAgUIbmV3UHJpY2UFBWRlYnVnARRmaW5hbGl6ZVd4VXNkT25jaGFpbgEPd2F2ZXNVc2RQcmljZVg2BA5kb3JhQWRkcmVzc1N0cgIjM1BLa29qS2RkNkJCelRmMVJYYlFWZlVEcmFORlhYSEt6UUYEC2RvcmFBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQ5kb3JhQWRkcmVzc1N0cgQNeHRuVXNkUHJpY2VYNgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFC2RvcmFBZGRyZXNzAhYlcyVzX19wcmljZV9fVVNETi1VU0RUAiRET1JBIGRvZXNuJ3QgY29udGFpbiBVU0ROL1VTRFQgcHJpY2UECHh0bklkU3RyAixERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAQHd3hJZFN0cgIsQXRxdjU5RVl6akZHdWl0S1ZuTVJrNkg4RnVram9WM2t0UG9yYkV5czI1b24EBXh0bklkCQDZBAEFCHh0bklkU3RyBAR3eElkCQDZBAEFB3d4SWRTdHIEFXd4X1d4V2F2ZXNfQWRkcmVzc1N0cgIjM1BGemFIMmdocHdBTkhGZ2pldmE4M04xeXh6RXJFTHgyZWgEEnd4X1d4V2F2ZXNfQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUVd3hfV3hXYXZlc19BZGRyZXNzU3RyBBF3eF9XeFdhdmVzX1dlaWdodADQhgMEEnd4X1d4V2F2ZXNfV0FWRVN4OAgJAO8HAQUSd3hfV3hXYXZlc19BZGRyZXNzB3JlZ3VsYXIED3d4X1d4V2F2ZXNfV1h4OAkA8AcCBRJ3eF9XeFdhdmVzX0FkZHJlc3MFBHd4SWQEF3d4X1d4V2F2ZXNfV3hVc2RQcmljZVg2CQBrAwUSd3hfV3hXYXZlc19XQVZFU3g4BQ93YXZlc1VzZFByaWNlWDYFD3d4X1d4V2F2ZXNfV1h4OAQTd3hfV3hYdG5fQWRkcmVzc1N0cgIjM1BDRU5wRUtlOGF0d0VMWjdvQ1NtY2RFZmNSdUtUclV4OTkEEHd4X1d4WHRuX0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFE3d4X1d4WHRuX0FkZHJlc3NTdHIED3d4X1d4WHRuX1dlaWdodADQhgMEDnd4X1d4WHRuX1hUTng2CQDwBwIFEHd4X1d4WHRuX0FkZHJlc3MFBXh0bklkBA13eF9XeFh0bl9XWHg4CQDwBwIFEHd4X1d4WHRuX0FkZHJlc3MFBHd4SWQEFXd4X1d4WHRuX1d4VXNkUHJpY2VYNgkAawMJAGgCBQ53eF9XeFh0bl9YVE54NgBkBQ14dG5Vc2RQcmljZVg2BQ13eF9XeFh0bl9XWHg4BBVzd29wX1d4WHRuX0FkZHJlc3NTdHICIzNQS2k0RzNWWDJrNDJaU21OTnJtdmdkREg3SnpSYVVoWTdSBAxzd29wUmVzdERhcHAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQNTZqTlF6RUNYbnJXcG5iYlNKS3c3RW9vbzZma1VhTVBwBBFzd29wX1d4WHRuX1dlaWdodACIJwQXc3dvcF9XeFh0bl9XeFh0blByaWNlWDYKAAFACQD8BwQFDHN3b3BSZXN0RGFwcAIRY2FsY0dldEFtb3VudENQTU0JAMwIAgUVc3dvcF9XeFh0bl9BZGRyZXNzU3RyCQDMCAICIzNQODhxazFLekYxQktqRDdmQzdMak5WQUtNNGV6ZmY1V0U2CQDMCAIFB3d4SWRTdHIJAMwIAgCAwtcvBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEF3N3b3BfV3hYdG5fV3hVc2RQcmljZVg2CQBrAwUXc3dvcF9XeFh0bl9XeFh0blByaWNlWDYFDXh0blVzZFByaWNlWDYAwIQ9BAFXCQBkAgkAZAIFEXd4X1d4V2F2ZXNfV2VpZ2h0BQ93eF9XeFh0bl9XZWlnaHQFEXN3b3BfV3hYdG5fV2VpZ2h0BAx3eFVzZFByaWNlWDYJAGQCCQBkAgkAawMFF3d4X1d4V2F2ZXNfV3hVc2RQcmljZVg2BRF3eF9XeFdhdmVzX1dlaWdodAUBVwkAawMFFXd4X1d4WHRuX1d4VXNkUHJpY2VYNgUPd3hfV3hYdG5fV2VpZ2h0BQFXCQBrAwUXc3dvcF9XeFh0bl9XeFVzZFByaWNlWDYFEXN3b3BfV3hYdG5fV2VpZ2h0BQFXBAVkZWJ1ZwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg54dG5Vc2RQcmljZVg2PQkApAMBBQ14dG5Vc2RQcmljZVg2Ahkgd3hfV3hXYXZlc19XeFVzZFByaWNlWDY9CQCkAwEFF3d4X1d4V2F2ZXNfV3hVc2RQcmljZVg2Ahcgd3hfV3hYdG5fV3hVc2RQcmljZVg2PQkApAMBBRV3eF9XeFh0bl9XeFVzZFByaWNlWDYCGSBzd29wX1d4WHRuX1d4VXNkUHJpY2VYNj0JAKQDAQUXc3dvcF9XeFh0bl9XeFVzZFByaWNlWDYJAJQKAgUMd3hVc2RQcmljZVg2BQVkZWJ1ZwEMZ2V0U3RyT3JFbHNlAwdhZGRyZXNzA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCdCAIFB2FkZHJlc3MFA2tleQUKZGVmYXVsdFZhbAEQa2V5V3hTd2FwQWRkcmVzcwACGCVzJXNfX2NmZ19fd3hTd2FwQWRkcmVzcwERa2V5U2F2aW5nc0FkZHJlc3MAAhklcyVzX19jZmdfX3NhdmluZ3NBZGRyZXNzABBuZXV0cmlub0NvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEM5QmZSd0pXV2l3OUFSRUUyQjNlV3pDa3MzQ1l0ZzR5bwEBaQEIc3dhcFRlc3QABAVNVUxUOACAwtcvBApidXlCYWNrQW10CQBoAgABBQVNVUxUOAQMd3hBc3NldElkU3RyAixBdHF2NTlFWXpqRkd1aXRLVm5NUms2SDhGdWtqb1Yza3RQb3JiRXlzMjVvbgQNd3hTd2FwQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBDGdldFN0ck9yRWxzZQMFBHRoaXMJARBrZXlXeFN3YXBBZGRyZXNzAAIjM1A2OHpOaXVmc3UxdmlacHUxYVkzY2RhaFJSS2N2VjVOOTMECnN3YXBSZXN1bHQJAPwHBAUNd3hTd2FwQWRkcmVzcwIEc3dhcAkAzAgCAAEJAMwIAgUMd3hBc3NldElkU3RyCQDMCAIJAKUIAQUQbmV1dHJpbm9Db250cmFjdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQpidXlCYWNrQW10BQNuaWwDCQAAAgUKc3dhcFJlc3VsdAUKc3dhcFJlc3VsdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAGzygWM=", "height": 3599715, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AmY8SZLXGfVACeUfrn5K1scaEJhpXovv2ZuBedtTbcMR Next: DBZhgVRSzYQLoT7dq3Xv4YaA74E7SxkAAFAsR3uxZDqJ Diff:
Old | New | Differences | |
---|---|---|---|
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func finalizeUsdnUsdtOnchainV2 () = { | |
5 | - | let wavesUsdtPriceX6 = | |
5 | + | let wavesUsdtPriceX6 = 2240000 | |
6 | 6 | let ethUsdtPriceX6 = getIntegerValue(this, "%s%s__price__ETH-USDT") | |
7 | 7 | let symbol = "USDN-USDT" | |
8 | 8 | let xtnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p" | |
12 | 12 | let wxUsdtXtnPoolStr = "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz" | |
13 | 13 | let wxUsdtXtnPoolAddress = addressFromStringValue(wxUsdtXtnPoolStr) | |
14 | 14 | let wxUsdtXtnW = 67 | |
15 | - | let $ | |
15 | + | let $t0611759 = { | |
16 | 16 | let @ = invoke(wxUsdtXtnPoolAddress, "putOneTknV2WithBonusREADONLY", [usdnAmount, xtnIdStr], nil) | |
17 | 17 | if ($isInstanceOf(@, "(Int, Int, Int)")) | |
18 | 18 | then @ | |
19 | 19 | else throw(($getType(@) + " couldn't be cast to (Int, Int, Int)")) | |
20 | 20 | } | |
21 | - | let lpAmount = $ | |
22 | - | let feeAmount1 = $ | |
23 | - | let bonus = $ | |
24 | - | let $ | |
21 | + | let lpAmount = $t0611759._1 | |
22 | + | let feeAmount1 = $t0611759._2 | |
23 | + | let bonus = $t0611759._3 | |
24 | + | let $t0762890 = { | |
25 | 25 | let @ = invoke(wxUsdtXtnPoolAddress, "getOneTknV2READONLY", [usdtIdStr, lpAmount], nil) | |
26 | 26 | if ($isInstanceOf(@, "(Int, Int)")) | |
27 | 27 | then @ | |
28 | 28 | else throw(($getType(@) + " couldn't be cast to (Int, Int)")) | |
29 | 29 | } | |
30 | - | let usdtAmount = $ | |
31 | - | let feeAmount2 = $ | |
30 | + | let usdtAmount = $t0762890._1 | |
31 | + | let feeAmount2 = $t0762890._2 | |
32 | 32 | let wxUsdtXtnPrice = fraction(usdtAmount, 1000000, usdnAmount) | |
33 | 33 | let wxWavesXtnW = 550 | |
34 | 34 | let wxWavesXtnPoolStr = "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g" |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func finalizeUsdnUsdtOnchainV2 () = { | |
5 | - | let wavesUsdtPriceX6 = | |
5 | + | let wavesUsdtPriceX6 = 2240000 | |
6 | 6 | let ethUsdtPriceX6 = getIntegerValue(this, "%s%s__price__ETH-USDT") | |
7 | 7 | let symbol = "USDN-USDT" | |
8 | 8 | let xtnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p" | |
9 | 9 | let xtnId = fromBase58String(xtnIdStr) | |
10 | 10 | let usdtIdStr = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ" | |
11 | 11 | let usdnAmount = 1000000000 | |
12 | 12 | let wxUsdtXtnPoolStr = "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz" | |
13 | 13 | let wxUsdtXtnPoolAddress = addressFromStringValue(wxUsdtXtnPoolStr) | |
14 | 14 | let wxUsdtXtnW = 67 | |
15 | - | let $ | |
15 | + | let $t0611759 = { | |
16 | 16 | let @ = invoke(wxUsdtXtnPoolAddress, "putOneTknV2WithBonusREADONLY", [usdnAmount, xtnIdStr], nil) | |
17 | 17 | if ($isInstanceOf(@, "(Int, Int, Int)")) | |
18 | 18 | then @ | |
19 | 19 | else throw(($getType(@) + " couldn't be cast to (Int, Int, Int)")) | |
20 | 20 | } | |
21 | - | let lpAmount = $ | |
22 | - | let feeAmount1 = $ | |
23 | - | let bonus = $ | |
24 | - | let $ | |
21 | + | let lpAmount = $t0611759._1 | |
22 | + | let feeAmount1 = $t0611759._2 | |
23 | + | let bonus = $t0611759._3 | |
24 | + | let $t0762890 = { | |
25 | 25 | let @ = invoke(wxUsdtXtnPoolAddress, "getOneTknV2READONLY", [usdtIdStr, lpAmount], nil) | |
26 | 26 | if ($isInstanceOf(@, "(Int, Int)")) | |
27 | 27 | then @ | |
28 | 28 | else throw(($getType(@) + " couldn't be cast to (Int, Int)")) | |
29 | 29 | } | |
30 | - | let usdtAmount = $ | |
31 | - | let feeAmount2 = $ | |
30 | + | let usdtAmount = $t0762890._1 | |
31 | + | let feeAmount2 = $t0762890._2 | |
32 | 32 | let wxUsdtXtnPrice = fraction(usdtAmount, 1000000, usdnAmount) | |
33 | 33 | let wxWavesXtnW = 550 | |
34 | 34 | let wxWavesXtnPoolStr = "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g" | |
35 | 35 | let wxWavesXtnPoolAddress = addressFromStringValue(wxWavesXtnPoolStr) | |
36 | 36 | let wavesWavesXtnX8 = wavesBalance(wxWavesXtnPoolAddress).regular | |
37 | 37 | let xtnWavesXtnX6 = assetBalance(wxWavesXtnPoolAddress, xtnId) | |
38 | 38 | let wavesXtnPriceX6 = fraction(xtnWavesXtnX6, 100000000, wavesWavesXtnX8) | |
39 | 39 | let wxWavesUsdtXtnPrice = fraction(wavesUsdtPriceX6, 1000000, wavesXtnPriceX6) | |
40 | 40 | let wxEthXtnW = 5 | |
41 | 41 | let ethIdStr = "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu" | |
42 | 42 | let ethId = fromBase58String(ethIdStr) | |
43 | 43 | let wxEthXtnPoolStr = "3PEMqetsaJDbYMw1XGovmE37FB8VUhGnX9A" | |
44 | 44 | let wxEthXtnPoolAddress = addressFromStringValue(wxEthXtnPoolStr) | |
45 | 45 | let ethEthXtnX8 = assetBalance(wxEthXtnPoolAddress, ethId) | |
46 | 46 | let xtnEthXtnX6 = assetBalance(wxEthXtnPoolAddress, xtnId) | |
47 | 47 | let ethXtnPriceX6 = fraction(xtnEthXtnX6, 100000000, ethEthXtnX8) | |
48 | 48 | let wxEthUsdtXtnPrice = fraction(ethUsdtPriceX6, 1000000, ethXtnPriceX6) | |
49 | 49 | let swopfiWavesXtnW = 450 | |
50 | 50 | let swopfiRest = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp") | |
51 | 51 | let swopfiWavesXtnPriceX6 = { | |
52 | 52 | let @ = invoke(swopfiRest, "calcGetAmountCPMM", ["3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG", "3PQHCTqfzE8e1Jo8m1QVaCXATSKyMmkYasF", "WAVES", 100000000], nil) | |
53 | 53 | if ($isInstanceOf(@, "Int")) | |
54 | 54 | then @ | |
55 | 55 | else throw(($getType(@) + " couldn't be cast to Int")) | |
56 | 56 | } | |
57 | 57 | let swopfiWavesUsdtXtnPrice = fraction(wavesUsdtPriceX6, 1000000, swopfiWavesXtnPriceX6) | |
58 | 58 | let newPrice = (fraction(wxWavesUsdtXtnPrice, wxWavesXtnW, 1000) + fraction(swopfiWavesUsdtXtnPrice, swopfiWavesXtnW, 1000)) | |
59 | 59 | let debug = ((("wxWavesUsdtXtnPrice=" + toString(wxWavesUsdtXtnPrice)) + " swopfiWavesUsdtXtnPrice=") + toString(swopfiWavesUsdtXtnPrice)) | |
60 | 60 | $Tuple2(newPrice, debug) | |
61 | 61 | } | |
62 | 62 | ||
63 | 63 | ||
64 | 64 | func finalizeWxUsdOnchain (wavesUsdPriceX6) = { | |
65 | 65 | let doraAddressStr = "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF" | |
66 | 66 | let doraAddress = addressFromStringValue(doraAddressStr) | |
67 | 67 | let xtnUsdPriceX6 = valueOrErrorMessage(getInteger(doraAddress, "%s%s__price__USDN-USDT"), "DORA doesn't contain USDN/USDT price") | |
68 | 68 | let xtnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p" | |
69 | 69 | let wxIdStr = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on" | |
70 | 70 | let xtnId = fromBase58String(xtnIdStr) | |
71 | 71 | let wxId = fromBase58String(wxIdStr) | |
72 | 72 | let wx_WxWaves_AddressStr = "3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh" | |
73 | 73 | let wx_WxWaves_Address = addressFromStringValue(wx_WxWaves_AddressStr) | |
74 | 74 | let wx_WxWaves_Weight = 50000 | |
75 | 75 | let wx_WxWaves_WAVESx8 = wavesBalance(wx_WxWaves_Address).regular | |
76 | 76 | let wx_WxWaves_WXx8 = assetBalance(wx_WxWaves_Address, wxId) | |
77 | 77 | let wx_WxWaves_WxUsdPriceX6 = fraction(wx_WxWaves_WAVESx8, wavesUsdPriceX6, wx_WxWaves_WXx8) | |
78 | 78 | let wx_WxXtn_AddressStr = "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99" | |
79 | 79 | let wx_WxXtn_Address = addressFromStringValue(wx_WxXtn_AddressStr) | |
80 | 80 | let wx_WxXtn_Weight = 50000 | |
81 | 81 | let wx_WxXtn_XTNx6 = assetBalance(wx_WxXtn_Address, xtnId) | |
82 | 82 | let wx_WxXtn_WXx8 = assetBalance(wx_WxXtn_Address, wxId) | |
83 | 83 | let wx_WxXtn_WxUsdPriceX6 = fraction((wx_WxXtn_XTNx6 * 100), xtnUsdPriceX6, wx_WxXtn_WXx8) | |
84 | 84 | let swop_WxXtn_AddressStr = "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R" | |
85 | 85 | let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp") | |
86 | 86 | let swop_WxXtn_Weight = 5000 | |
87 | 87 | let swop_WxXtn_WxXtnPriceX6 = { | |
88 | 88 | let @ = invoke(swopRestDapp, "calcGetAmountCPMM", [swop_WxXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", wxIdStr, 100000000], nil) | |
89 | 89 | if ($isInstanceOf(@, "Int")) | |
90 | 90 | then @ | |
91 | 91 | else throw(($getType(@) + " couldn't be cast to Int")) | |
92 | 92 | } | |
93 | 93 | let swop_WxXtn_WxUsdPriceX6 = fraction(swop_WxXtn_WxXtnPriceX6, xtnUsdPriceX6, 1000000) | |
94 | 94 | let W = ((wx_WxWaves_Weight + wx_WxXtn_Weight) + swop_WxXtn_Weight) | |
95 | 95 | let wxUsdPriceX6 = ((fraction(wx_WxWaves_WxUsdPriceX6, wx_WxWaves_Weight, W) + fraction(wx_WxXtn_WxUsdPriceX6, wx_WxXtn_Weight, W)) + fraction(swop_WxXtn_WxUsdPriceX6, swop_WxXtn_Weight, W)) | |
96 | 96 | let debug = ((((((("xtnUsdPriceX6=" + toString(xtnUsdPriceX6)) + " wx_WxWaves_WxUsdPriceX6=") + toString(wx_WxWaves_WxUsdPriceX6)) + " wx_WxXtn_WxUsdPriceX6=") + toString(wx_WxXtn_WxUsdPriceX6)) + " swop_WxXtn_WxUsdPriceX6=") + toString(swop_WxXtn_WxUsdPriceX6)) | |
97 | 97 | $Tuple2(wxUsdPriceX6, debug) | |
98 | 98 | } | |
99 | 99 | ||
100 | 100 | ||
101 | 101 | func getStrOrElse (address,key,defaultVal) = valueOrElse(getString(address, key), defaultVal) | |
102 | 102 | ||
103 | 103 | ||
104 | 104 | func keyWxSwapAddress () = "%s%s__cfg__wxSwapAddress" | |
105 | 105 | ||
106 | 106 | ||
107 | 107 | func keySavingsAddress () = "%s%s__cfg__savingsAddress" | |
108 | 108 | ||
109 | 109 | ||
110 | 110 | let neutrinoContract = addressFromStringValue("3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo") | |
111 | 111 | ||
112 | 112 | @Callable(i) | |
113 | 113 | func swapTest () = { | |
114 | 114 | let MULT8 = 100000000 | |
115 | 115 | let buyBackAmt = (1 * MULT8) | |
116 | 116 | let wxAssetIdStr = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on" | |
117 | 117 | let wxSwapAddress = addressFromStringValue(getStrOrElse(this, keyWxSwapAddress(), "3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93")) | |
118 | 118 | let swapResult = invoke(wxSwapAddress, "swap", [1, wxAssetIdStr, toString(neutrinoContract)], [AttachedPayment(unit, buyBackAmt)]) | |
119 | 119 | if ((swapResult == swapResult)) | |
120 | 120 | then nil | |
121 | 121 | else throw("Strict value is not equal to itself.") | |
122 | 122 | } | |
123 | 123 | ||
124 | 124 |
github/deemru/w8io/3ef1775 42.57 ms ◑