tx · CZFoU9Vd6MaUbruhuqSdT2sLT4PNUy4JFC4bsTnvtwz5 3P2YBCpek2KbwaxHBSRRa4DWcJUkPu2mCCj: -0.01000000 Waves 2023.04.19 12:40 [3606831] smart account 3P2YBCpek2KbwaxHBSRRa4DWcJUkPu2mCCj > SELF 0.00000000 Waves
{ "type": 13, "id": "CZFoU9Vd6MaUbruhuqSdT2sLT4PNUy4JFC4bsTnvtwz5", "fee": 1000000, "feeAssetId": null, "timestamp": 1681897249992, "version": 2, "chainId": 87, "sender": "3P2YBCpek2KbwaxHBSRRa4DWcJUkPu2mCCj", "senderPublicKey": "3C2anUH59qjkVSB8AuFYGBNhSqcgvJhq1BBRodM74pEf", "proofs": [ "64ZENMsQjXfEQ5HJ5q9mLqkMhNeJvq3rUQwYdE7ZngPxvYb7JqnjirCeesAhsLig5UQeg64HFr62XcdW5hM7AGmd" ], "script": "base64:BgIECAISABcBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFpBQckbWF0Y2gwBQFpCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AA1uZXV0cmlub0Fzc2V0ASC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QAOZG9yYUFkZHJlc3NTdHICIzNQS2tvaktkZDZCQnpUZjFSWGJRVmZVRHJhTkZYWEhLelFGAAtkb3JhQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUOZG9yYUFkZHJlc3NTdHIADXh0blVzZFByaWNlWDYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQtkb3JhQWRkcmVzcwIWJXMlc19fcHJpY2VfX1VTRE4tVVNEVAIkRE9SQSBkb2Vzbid0IGNvbnRhaW4gVVNETi9VU0RUIHByaWNlABF3eF9yZXN0QWRkcmVzc1N0cgIjM1A4TW9QbnNhdXJvZmsxVnloc2RBRmtlUTZpanBKWVhDcFcAC3d4X3Jlc3REYXBwCQERQGV4dHJOYXRpdmUoMTA2MikBBRF3eF9yZXN0QWRkcmVzc1N0cgAMc3dvcFJlc3REYXBwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUDU2ak5RekVDWG5yV3BuYmJTSkt3N0Vvb282ZmtVYU1QcAAFeHRuSWQFDW5ldXRyaW5vQXNzZXQACHh0bklkU3RyCQDYBAEFBXh0bklkAAd3eElkU3RyAixBdHF2NTlFWXpqRkd1aXRLVm5NUms2SDhGdWtqb1Yza3RQb3JiRXlzMjVvbgAEd3hJZAkA2QQBBQd3eElkU3RyAAp2aXJlc0lkU3RyAixEU2JiaExzU1RlRGc1THNpdWZrMkFuZWgzRGpWcUp1UHIyTTl1VTFnd3k1cAAHdmlyZXNJZAkA2QQBBQp2aXJlc0lkU3RyARdmaW5hbGl6ZVZpcmVzVXNkT25jaGFpbgEPd2F2ZXNVc2RQcmljZVg2BBB3eF9WaXJlc1dhdmVzX2xwAixFM1loVVJOc0NtalVhWU5pZ0g2QWF5THhiaDl1ODF1VkdVM1p2SEt6blk1dgQMd3hSZXN0UmVzdWx0CQC1CQIJAQhhc1N0cmluZwEJAPwHBAULd3hfcmVzdERhcHACEXBvb2xTdGF0c1JFQURPTkxZCQDMCAIFEHd4X1ZpcmVzV2F2ZXNfbHAFA25pbAUDbmlsAgJfXwQVd3hfVmlyZXNXYXZlc19XQVZFU3g4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMd3hSZXN0UmVzdWx0AAIEFXd4X1ZpcmVzV2F2ZXNfVklSRVN4OAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDHd4UmVzdFJlc3VsdAABBB13eF9WaXJlc1dhdmVzX1ZpcmVzVXNkUHJpY2VYNgkAawMFFXd4X1ZpcmVzV2F2ZXNfV0FWRVN4OAUPd2F2ZXNVc2RQcmljZVg2BRV3eF9WaXJlc1dhdmVzX1ZJUkVTeDgEFHd4X1ZpcmVzV2F2ZXNfV2VpZ2h0BRV3eF9WaXJlc1dhdmVzX1ZJUkVTeDgEFnd4X1ZpcmVzWHRuX0FkZHJlc3NTdHICIzNQQ0VOcEVLZThhdHdFTFo3b0NTbWNkRWZjUnVLVHJVeDk5BBN3eF9WaXJlc1h0bl9BZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBRZ3eF9WaXJlc1h0bl9BZGRyZXNzU3RyBBF3eF9WaXJlc1h0bl9YVE54NgkA8AcCBRN3eF9WaXJlc1h0bl9BZGRyZXNzBQV4dG5JZAQTd3hfVmlyZXNYdG5fVklSRVN4OAkA8AcCBRN3eF9WaXJlc1h0bl9BZGRyZXNzBQR3eElkBBt3eF9WaXJlc1h0bl9WaXJlc1VzZFByaWNlWDYJAGsDCQBoAgURd3hfVmlyZXNYdG5fWFROeDYAZAUNeHRuVXNkUHJpY2VYNgUTd3hfVmlyZXNYdG5fVklSRVN4OAQSd3hfVmlyZXNYdG5fV2VpZ2h0BRN3eF9WaXJlc1h0bl9WSVJFU3g4BBhzd29wX1ZpcmVzWHRuX0FkZHJlc3NTdHICIzNQSjQ4UDNwMnd2V1VqZ1FhUWlaMmNGYnI4cW14TW9rQkdkBBVzd29wX1ZpcmVzWHRuX0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFGHN3b3BfVmlyZXNYdG5fQWRkcmVzc1N0cgQdc3dvcF9WaXJlc1h0bl9WaXJlc1h0blByaWNlWDYJAQVhc0ludAEJAPwHBAUMc3dvcFJlc3REYXBwAhFjYWxjR2V0QW1vdW50Q1BNTQkAzAgCBRhzd29wX1ZpcmVzWHRuX0FkZHJlc3NTdHIJAMwIAgIjM1A4OHFrMUt6RjFCS2pEN2ZDN0xqTlZBS000ZXpmZjVXRTYJAMwIAgUKdmlyZXNJZFN0cgkAzAgCAIDC1y8FA25pbAUDbmlsBB1zd29wX1ZpcmVzWHRuX1ZpcmVzVXNkUHJpY2VYNgkAawMFHXN3b3BfVmlyZXNYdG5fVmlyZXNYdG5QcmljZVg2BQ14dG5Vc2RQcmljZVg2AMCEPQQUc3dvcF9WaXJlc1h0bl9XZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFFXN3b3BfVmlyZXNYdG5fQWRkcmVzcwIPQV9hc3NldF9iYWxhbmNlBAFXCQBkAgkAZAIFFHd4X1ZpcmVzV2F2ZXNfV2VpZ2h0BRJ3eF9WaXJlc1h0bl9XZWlnaHQFFHN3b3BfVmlyZXNYdG5fV2VpZ2h0BA92aXJlc1VzZFByaWNlWDYJAGQCCQBkAgkAawMFHXd4X1ZpcmVzV2F2ZXNfVmlyZXNVc2RQcmljZVg2BRR3eF9WaXJlc1dhdmVzX1dlaWdodAUBVwkAawMFG3d4X1ZpcmVzWHRuX1ZpcmVzVXNkUHJpY2VYNgUSd3hfVmlyZXNYdG5fV2VpZ2h0BQFXCQBrAwUUc3dvcF9WaXJlc1h0bl9XZWlnaHQFFHN3b3BfVmlyZXNYdG5fV2VpZ2h0BQFXBAVkZWJ1ZwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg54dG5Vc2RQcmljZVg2PQkApAMBBQ14dG5Vc2RQcmljZVg2Ah8gd3hfVmlyZXNXYXZlc19WaXJlc1VzZFByaWNlWDY9CQCkAwEFHXd4X1ZpcmVzV2F2ZXNfVmlyZXNVc2RQcmljZVg2Ah0gd3hfVmlyZXNYdG5fVmlyZXNVc2RQcmljZVg2PQkApAMBBRt3eF9WaXJlc1h0bl9WaXJlc1VzZFByaWNlWDYCHyBzd29wX1ZpcmVzWHRuX1ZpcmVzVXNkUHJpY2VYNj0JAKQDAQUdc3dvcF9WaXJlc1h0bl9WaXJlc1VzZFByaWNlWDYJAJQKAgUPdmlyZXNVc2RQcmljZVg2BQVkZWJ1ZwEWZmluYWxpemVXeFVzZE9uY2hhaW5WMgEPd2F2ZXNVc2RQcmljZVg2BA13eF9XeFdhdmVzX2xwAixCaVN6RmU4blNMNzhvWmFlYmZvaW41dkJaNVB6ZTZkN2thZWlqTHFyNXhaZQQMd3hSZXN0UmVzdWx0CQC1CQIJAQhhc1N0cmluZwEJAPwHBAULd3hfcmVzdERhcHACEXBvb2xTdGF0c1JFQURPTkxZCQDMCAIFDXd4X1d4V2F2ZXNfbHAFA25pbAUDbmlsAgJfXwQRd3hfV3hXYXZlc19XZWlnaHQA0IYDBBJ3eF9XeFdhdmVzX1dBVkVTeDgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQx3eFJlc3RSZXN1bHQAAgQPd3hfV3hXYXZlc19XWHg4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMd3hSZXN0UmVzdWx0AAEEF3d4X1d4V2F2ZXNfV3hVc2RQcmljZVg2CQBrAwUSd3hfV3hXYXZlc19XQVZFU3g4BQ93YXZlc1VzZFByaWNlWDYFD3d4X1d4V2F2ZXNfV1h4OAQTd3hfV3hYdG5fQWRkcmVzc1N0cgIjM1BDRU5wRUtlOGF0d0VMWjdvQ1NtY2RFZmNSdUtUclV4OTkEEHd4X1d4WHRuX0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFE3d4X1d4WHRuX0FkZHJlc3NTdHIED3d4X1d4WHRuX1dlaWdodADQhgMEDnd4X1d4WHRuX1hUTng2CQDwBwIFEHd4X1d4WHRuX0FkZHJlc3MFBXh0bklkBA13eF9XeFh0bl9XWHg4CQDwBwIFEHd4X1d4WHRuX0FkZHJlc3MFBHd4SWQEFXd4X1d4WHRuX1d4VXNkUHJpY2VYNgkAawMJAGgCBQ53eF9XeFh0bl9YVE54NgBkBQ14dG5Vc2RQcmljZVg2BQ13eF9XeFh0bl9XWHg4BBVzd29wX1d4WHRuX0FkZHJlc3NTdHICIzNQS2k0RzNWWDJrNDJaU21OTnJtdmdkREg3SnpSYVVoWTdSBBFzd29wX1d4WHRuX1dlaWdodACIJwQXc3dvcF9XeFh0bl9XeFh0blByaWNlWDYJAQVhc0ludAEJAPwHBAUMc3dvcFJlc3REYXBwAhFjYWxjR2V0QW1vdW50Q1BNTQkAzAgCBRVzd29wX1d4WHRuX0FkZHJlc3NTdHIJAMwIAgIjM1A4OHFrMUt6RjFCS2pEN2ZDN0xqTlZBS000ZXpmZjVXRTYJAMwIAgUHd3hJZFN0cgkAzAgCAIDC1y8FA25pbAUDbmlsBBdzd29wX1d4WHRuX1d4VXNkUHJpY2VYNgkAawMFF3N3b3BfV3hYdG5fV3hYdG5QcmljZVg2BQ14dG5Vc2RQcmljZVg2AMCEPQQBVwkAZAIJAGQCBRF3eF9XeFdhdmVzX1dlaWdodAUPd3hfV3hYdG5fV2VpZ2h0BRFzd29wX1d4WHRuX1dlaWdodAQMd3hVc2RQcmljZVg2CQBkAgkAZAIJAGsDBRd3eF9XeFdhdmVzX1d4VXNkUHJpY2VYNgURd3hfV3hXYXZlc19XZWlnaHQFAVcJAGsDBRV3eF9XeFh0bl9XeFVzZFByaWNlWDYFD3d4X1d4WHRuX1dlaWdodAUBVwkAawMFF3N3b3BfV3hYdG5fV3hVc2RQcmljZVg2BRFzd29wX1d4WHRuX1dlaWdodAUBVwQFZGVidWcJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIOeHRuVXNkUHJpY2VYNj0JAKQDAQUNeHRuVXNkUHJpY2VYNgIZIHd4X1d4V2F2ZXNfV3hVc2RQcmljZVg2PQkApAMBBRd3eF9XeFdhdmVzX1d4VXNkUHJpY2VYNgIXIHd4X1d4WHRuX1d4VXNkUHJpY2VYNj0JAKQDAQUVd3hfV3hYdG5fV3hVc2RQcmljZVg2Ahkgc3dvcF9XeFh0bl9XeFVzZFByaWNlWDY9CQCkAwEFF3N3b3BfV3hYdG5fV3hVc2RQcmljZVg2CQCUCgIFDHd4VXNkUHJpY2VYNgUFZGVidWcBGWZpbmFsaXplVXNkblVzZHRPbmNoYWluVjIABBB3YXZlc1VzZHRQcmljZVg2AIDciAEEDmV0aFVzZHRQcmljZVg2CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhUlcyVzX19wcmljZV9fRVRILVVTRFQEBnN5bWJvbAIJVVNETi1VU0RUBAl1c2R0SWRTdHICLDM0TjlZY0VFVExXbjkzcVlRNjRFc1AxeDg5dFNydUpVNDRSckVNU1hYRVBKBAp1c2RuQW1vdW50AICU69wDBBB3eFVzZHRYdG5Qb29sU3RyAiMzUDhLTXlBSkNQV05jeWVkcXJteW14YWVXb252bWtoR2F1egQUd3hVc2R0WHRuUG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEHd4VXNkdFh0blBvb2xTdHIECnd4VXNkdFh0blcAQwQLJHQwNTU2NDU3MTIKAAFACQD8BwQFFHd4VXNkdFh0blBvb2xBZGRyZXNzAhxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZCQDMCAIFCnVzZG5BbW91bnQJAMwIAgUIeHRuSWRTdHIFA25pbAUDbmlsAwkAAQIFAUACDyhJbnQsIEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACJCBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCwgSW50KQQIbHBBbW91bnQIBQskdDA1NTY0NTcxMgJfMQQKZmVlQW1vdW50MQgFCyR0MDU1NjQ1NzEyAl8yBAVib251cwgFCyR0MDU1NjQ1NzEyAl8zBAskdDA1NzE1NTg0MwoAAUAJAPwHBAUUd3hVc2R0WHRuUG9vbEFkZHJlc3MCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUJdXNkdElkU3RyCQDMCAIFCGxwQW1vdW50BQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQKdXNkdEFtb3VudAgFCyR0MDU3MTU1ODQzAl8xBApmZWVBbW91bnQyCAULJHQwNTcxNTU4NDMCXzIEDnd4VXNkdFh0blByaWNlCQBrAwUKdXNkdEFtb3VudADAhD0FCnVzZG5BbW91bnQEC3d4V2F2ZXNYdG5XAKYEBBF3eFdhdmVzWHRuUG9vbFN0cgIjM1BQWldnRk5SS0hMdk01MXB3UzkzNEM4Vlo3ZDJGNFo1OGcEFXd4V2F2ZXNYdG5Qb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQURd3hXYXZlc1h0blBvb2xTdHIED3dhdmVzV2F2ZXNYdG5YOAgJAO8HAQUVd3hXYXZlc1h0blBvb2xBZGRyZXNzB3JlZ3VsYXIEDXh0bldhdmVzWHRuWDYJAPAHAgUVd3hXYXZlc1h0blBvb2xBZGRyZXNzBQV4dG5JZAQPd2F2ZXNYdG5QcmljZVg2CQBrAwUNeHRuV2F2ZXNYdG5YNgCAwtcvBQ93YXZlc1dhdmVzWHRuWDgEE3d4V2F2ZXNVc2R0WHRuUHJpY2UJAGsDBRB3YXZlc1VzZHRQcmljZVg2AMCEPQUPd2F2ZXNYdG5QcmljZVg2BAl3eEV0aFh0blcABQQIZXRoSWRTdHICLDQ3NGpUZVl4MnIyVmEzNTc5NHRDU2NBWFdKRzloVTJIY2d4ek1vd2FaVW51BAVldGhJZAkA2QQBBQhldGhJZFN0cgQPd3hFdGhYdG5Qb29sU3RyAiMzUEVNcWV0c2FKRGJZTXcxWEdvdm1FMzdGQjhWVWhHblg5QQQTd3hFdGhYdG5Qb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUPd3hFdGhYdG5Qb29sU3RyBAtldGhFdGhYdG5YOAkA8AcCBRN3eEV0aFh0blBvb2xBZGRyZXNzBQVldGhJZAQLeHRuRXRoWHRuWDYJAPAHAgUTd3hFdGhYdG5Qb29sQWRkcmVzcwUFeHRuSWQEDWV0aFh0blByaWNlWDYJAGsDBQt4dG5FdGhYdG5YNgCAwtcvBQtldGhFdGhYdG5YOAQRd3hFdGhVc2R0WHRuUHJpY2UJAGsDBQ5ldGhVc2R0UHJpY2VYNgDAhD0FDWV0aFh0blByaWNlWDYED3N3b3BmaVdhdmVzWHRuVwDCAwQKc3dvcGZpUmVzdAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1A1NmpOUXpFQ1hucldwbmJiU0pLdzdFb29vNmZrVWFNUHAEFXN3b3BmaVdhdmVzWHRuUHJpY2VYNgoAAUAJAPwHBAUKc3dvcGZpUmVzdAIRY2FsY0dldEFtb3VudENQTU0JAMwIAgIjM1BIYU5nb21Ca3J2RUwyUW51SmFyUVZKYTcxd2p3OXFpcUcJAMwIAgIjM1BRSENUcWZ6RThlMUpvOG0xUVZhQ1hBVFNLeU1ta1lhc0YJAMwIAgIFV0FWRVMJAMwIAgCAwtcvBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEF3N3b3BmaVdhdmVzVXNkdFh0blByaWNlCQBrAwUQd2F2ZXNVc2R0UHJpY2VYNgDAhD0FFXN3b3BmaVdhdmVzWHRuUHJpY2VYNgQIbmV3UHJpY2UJAGQCCQBrAwUTd3hXYXZlc1VzZHRYdG5QcmljZQULd3hXYXZlc1h0blcA6AcJAGsDBRdzd29wZmlXYXZlc1VzZHRYdG5QcmljZQUPc3dvcGZpV2F2ZXNYdG5XAOgHBAVkZWJ1ZwkArAICCQCsAgIJAKwCAgIUd3hXYXZlc1VzZHRYdG5QcmljZT0JAKQDAQUTd3hXYXZlc1VzZHRYdG5QcmljZQIZIHN3b3BmaVdhdmVzVXNkdFh0blByaWNlPQkApAMBBRdzd29wZmlXYXZlc1VzZHRYdG5QcmljZQkAlAoCBQhuZXdQcmljZQUFZGVidWcBFGZpbmFsaXplV3hVc2RPbmNoYWluAQ93YXZlc1VzZFByaWNlWDYEFXd4X1d4V2F2ZXNfQWRkcmVzc1N0cgIjM1BGemFIMmdocHdBTkhGZ2pldmE4M04xeXh6RXJFTHgyZWgEEnd4X1d4V2F2ZXNfQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUVd3hfV3hXYXZlc19BZGRyZXNzU3RyBBF3eF9XeFdhdmVzX1dlaWdodADQhgMEEnd4X1d4V2F2ZXNfV0FWRVN4OAgJAO8HAQUSd3hfV3hXYXZlc19BZGRyZXNzB3JlZ3VsYXIED3d4X1d4V2F2ZXNfV1h4OAkA8AcCBRJ3eF9XeFdhdmVzX0FkZHJlc3MFBHd4SWQEF3d4X1d4V2F2ZXNfV3hVc2RQcmljZVg2CQBrAwUSd3hfV3hXYXZlc19XQVZFU3g4BQ93YXZlc1VzZFByaWNlWDYFD3d4X1d4V2F2ZXNfV1h4OAQTd3hfV3hYdG5fQWRkcmVzc1N0cgIjM1BDRU5wRUtlOGF0d0VMWjdvQ1NtY2RFZmNSdUtUclV4OTkEEHd4X1d4WHRuX0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFE3d4X1d4WHRuX0FkZHJlc3NTdHIED3d4X1d4WHRuX1dlaWdodADQhgMEDnd4X1d4WHRuX1hUTng2CQDwBwIFEHd4X1d4WHRuX0FkZHJlc3MFBXh0bklkBA13eF9XeFh0bl9XWHg4CQDwBwIFEHd4X1d4WHRuX0FkZHJlc3MFBHd4SWQEFXd4X1d4WHRuX1d4VXNkUHJpY2VYNgkAawMJAGgCBQ53eF9XeFh0bl9YVE54NgBkBQ14dG5Vc2RQcmljZVg2BQ13eF9XeFh0bl9XWHg4BBVzd29wX1d4WHRuX0FkZHJlc3NTdHICIzNQS2k0RzNWWDJrNDJaU21OTnJtdmdkREg3SnpSYVVoWTdSBBFzd29wX1d4WHRuX1dlaWdodACIJwQXc3dvcF9XeFh0bl9XeFh0blByaWNlWDYKAAFACQD8BwQFDHN3b3BSZXN0RGFwcAIRY2FsY0dldEFtb3VudENQTU0JAMwIAgUVc3dvcF9XeFh0bl9BZGRyZXNzU3RyCQDMCAICIzNQODhxazFLekYxQktqRDdmQzdMak5WQUtNNGV6ZmY1V0U2CQDMCAIFB3d4SWRTdHIJAMwIAgCAwtcvBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEF3N3b3BfV3hYdG5fV3hVc2RQcmljZVg2CQBrAwUXc3dvcF9XeFh0bl9XeFh0blByaWNlWDYFDXh0blVzZFByaWNlWDYAwIQ9BAFXCQBkAgkAZAIFEXd4X1d4V2F2ZXNfV2VpZ2h0BQ93eF9XeFh0bl9XZWlnaHQFEXN3b3BfV3hYdG5fV2VpZ2h0BAx3eFVzZFByaWNlWDYJAGQCCQBkAgkAawMFF3d4X1d4V2F2ZXNfV3hVc2RQcmljZVg2BRF3eF9XeFdhdmVzX1dlaWdodAUBVwkAawMFFXd4X1d4WHRuX1d4VXNkUHJpY2VYNgUPd3hfV3hYdG5fV2VpZ2h0BQFXCQBrAwUXc3dvcF9XeFh0bl9XeFVzZFByaWNlWDYFEXN3b3BfV3hYdG5fV2VpZ2h0BQFXBAVkZWJ1ZwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg54dG5Vc2RQcmljZVg2PQkApAMBBQ14dG5Vc2RQcmljZVg2Ahkgd3hfV3hXYXZlc19XeFVzZFByaWNlWDY9CQCkAwEFF3d4X1d4V2F2ZXNfV3hVc2RQcmljZVg2Ahcgd3hfV3hYdG5fV3hVc2RQcmljZVg2PQkApAMBBRV3eF9XeFh0bl9XeFVzZFByaWNlWDYCGSBzd29wX1d4WHRuX1d4VXNkUHJpY2VYNj0JAKQDAQUXc3dvcF9XeFh0bl9XeFVzZFByaWNlWDYJAJQKAgUMd3hVc2RQcmljZVg2BQVkZWJ1ZwEMZ2V0U3RyT3JFbHNlAwdhZGRyZXNzA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCdCAIFB2FkZHJlc3MFA2tleQUKZGVmYXVsdFZhbAEQa2V5V3hTd2FwQWRkcmVzcwACGCVzJXNfX2NmZ19fd3hTd2FwQWRkcmVzcwERa2V5U2F2aW5nc0FkZHJlc3MAAhklcyVzX19jZmdfX3NhdmluZ3NBZGRyZXNzABBuZXV0cmlub0NvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEM5QmZSd0pXV2l3OUFSRUUyQjNlV3pDa3MzQ1l0ZzR5bwEBaQEIc3dhcFRlc3QABAVNVUxUOACAwtcvBApidXlCYWNrQW10CQBoAgABBQVNVUxUOAQMd3hBc3NldElkU3RyAixBdHF2NTlFWXpqRkd1aXRLVm5NUms2SDhGdWtqb1Yza3RQb3JiRXlzMjVvbgQNd3hTd2FwQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBDGdldFN0ck9yRWxzZQMFBHRoaXMJARBrZXlXeFN3YXBBZGRyZXNzAAIjM1A2OHpOaXVmc3UxdmlacHUxYVkzY2RhaFJSS2N2VjVOOTMECnN3YXBSZXN1bHQJAPwHBAUNd3hTd2FwQWRkcmVzcwIEc3dhcAkAzAgCAAEJAMwIAgUMd3hBc3NldElkU3RyCQDMCAIJAKUIAQUQbmV1dHJpbm9Db250cmFjdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQpidXlCYWNrQW10BQNuaWwDCQAAAgUKc3dhcFJlc3VsdAUKc3dhcFJlc3VsdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAFkMuSg=", "height": 3606831, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2SfeWgmqbXX8b1FK7vVZJYqbZARzEbrcFTxPgSeAYjLz Next: 6tSb9Fkjk1RfowK2iQA9FpJRjMndH2VaEDSKb3N4NHfF Diff:
Old | New | Differences | |
---|---|---|---|
17 | 17 | } | |
18 | 18 | ||
19 | 19 | ||
20 | - | let | |
20 | + | let neutrinoAsset = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p' | |
21 | 21 | ||
22 | - | let xtnId = fromBase58String(xtnIdStr) | |
22 | + | let doraAddressStr = "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF" | |
23 | + | ||
24 | + | let doraAddress = addressFromStringValue(doraAddressStr) | |
25 | + | ||
26 | + | let xtnUsdPriceX6 = valueOrErrorMessage(getInteger(doraAddress, "%s%s__price__USDN-USDT"), "DORA doesn't contain USDN/USDT price") | |
27 | + | ||
28 | + | let wx_restAddressStr = "3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW" | |
29 | + | ||
30 | + | let wx_restDapp = addressFromStringValue(wx_restAddressStr) | |
31 | + | ||
32 | + | let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp") | |
33 | + | ||
34 | + | let xtnId = neutrinoAsset | |
35 | + | ||
36 | + | let xtnIdStr = toBase58String(xtnId) | |
23 | 37 | ||
24 | 38 | let wxIdStr = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on" | |
25 | 39 | ||
26 | 40 | let wxId = fromBase58String(wxIdStr) | |
27 | 41 | ||
42 | + | let viresIdStr = "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p" | |
43 | + | ||
44 | + | let viresId = fromBase58String(viresIdStr) | |
45 | + | ||
46 | + | func finalizeViresUsdOnchain (wavesUsdPriceX6) = { | |
47 | + | let wx_ViresWaves_lp = "E3YhURNsCmjUaYNigH6AayLxbh9u81uVGU3ZvHKznY5v" | |
48 | + | let wxRestResult = split(asString(invoke(wx_restDapp, "poolStatsREADONLY", [wx_ViresWaves_lp], nil)), "__") | |
49 | + | let wx_ViresWaves_WAVESx8 = parseIntValue(wxRestResult[2]) | |
50 | + | let wx_ViresWaves_VIRESx8 = parseIntValue(wxRestResult[1]) | |
51 | + | let wx_ViresWaves_ViresUsdPriceX6 = fraction(wx_ViresWaves_WAVESx8, wavesUsdPriceX6, wx_ViresWaves_VIRESx8) | |
52 | + | let wx_ViresWaves_Weight = wx_ViresWaves_VIRESx8 | |
53 | + | let wx_ViresXtn_AddressStr = "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99" | |
54 | + | let wx_ViresXtn_Address = addressFromStringValue(wx_ViresXtn_AddressStr) | |
55 | + | let wx_ViresXtn_XTNx6 = assetBalance(wx_ViresXtn_Address, xtnId) | |
56 | + | let wx_ViresXtn_VIRESx8 = assetBalance(wx_ViresXtn_Address, wxId) | |
57 | + | let wx_ViresXtn_ViresUsdPriceX6 = fraction((wx_ViresXtn_XTNx6 * 100), xtnUsdPriceX6, wx_ViresXtn_VIRESx8) | |
58 | + | let wx_ViresXtn_Weight = wx_ViresXtn_VIRESx8 | |
59 | + | let swop_ViresXtn_AddressStr = "3PJ48P3p2wvWUjgQaQiZ2cFbr8qmxMokBGd" | |
60 | + | let swop_ViresXtn_Address = addressFromStringValue(swop_ViresXtn_AddressStr) | |
61 | + | let swop_ViresXtn_ViresXtnPriceX6 = asInt(invoke(swopRestDapp, "calcGetAmountCPMM", [swop_ViresXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", viresIdStr, 100000000], nil)) | |
62 | + | let swop_ViresXtn_ViresUsdPriceX6 = fraction(swop_ViresXtn_ViresXtnPriceX6, xtnUsdPriceX6, 1000000) | |
63 | + | let swop_ViresXtn_Weight = getIntegerValue(swop_ViresXtn_Address, "A_asset_balance") | |
64 | + | let W = ((wx_ViresWaves_Weight + wx_ViresXtn_Weight) + swop_ViresXtn_Weight) | |
65 | + | let viresUsdPriceX6 = ((fraction(wx_ViresWaves_ViresUsdPriceX6, wx_ViresWaves_Weight, W) + fraction(wx_ViresXtn_ViresUsdPriceX6, wx_ViresXtn_Weight, W)) + fraction(swop_ViresXtn_Weight, swop_ViresXtn_Weight, W)) | |
66 | + | let debug = ((((((("xtnUsdPriceX6=" + toString(xtnUsdPriceX6)) + " wx_ViresWaves_ViresUsdPriceX6=") + toString(wx_ViresWaves_ViresUsdPriceX6)) + " wx_ViresXtn_ViresUsdPriceX6=") + toString(wx_ViresXtn_ViresUsdPriceX6)) + " swop_ViresXtn_ViresUsdPriceX6=") + toString(swop_ViresXtn_ViresUsdPriceX6)) | |
67 | + | $Tuple2(viresUsdPriceX6, debug) | |
68 | + | } | |
69 | + | ||
70 | + | ||
28 | 71 | func finalizeWxUsdOnchainV2 (wavesUsdPriceX6) = { | |
29 | - | let doraAddressStr = "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF" | |
30 | - | let doraAddress = addressFromStringValue(doraAddressStr) | |
31 | - | let xtnUsdPriceX6 = valueOrErrorMessage(getInteger(doraAddress, "%s%s__price__USDN-USDT"), "DORA doesn't contain USDN/USDT price") | |
32 | 72 | let wx_WxWaves_lp = "BiSzFe8nSL78oZaebfoin5vBZ5Pze6d7kaeijLqr5xZe" | |
33 | - | let wx_restAddressStr = "3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW" | |
34 | - | let wx_restDapp = addressFromStringValue(wx_restAddressStr) | |
35 | 73 | let wxRestResult = split(asString(invoke(wx_restDapp, "poolStatsREADONLY", [wx_WxWaves_lp], nil)), "__") | |
36 | 74 | let wx_WxWaves_Weight = 50000 | |
37 | 75 | let wx_WxWaves_WAVESx8 = parseIntValue(wxRestResult[2]) | |
44 | 82 | let wx_WxXtn_WXx8 = assetBalance(wx_WxXtn_Address, wxId) | |
45 | 83 | let wx_WxXtn_WxUsdPriceX6 = fraction((wx_WxXtn_XTNx6 * 100), xtnUsdPriceX6, wx_WxXtn_WXx8) | |
46 | 84 | let swop_WxXtn_AddressStr = "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R" | |
47 | - | let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp") | |
48 | 85 | let swop_WxXtn_Weight = 5000 | |
49 | 86 | let swop_WxXtn_WxXtnPriceX6 = asInt(invoke(swopRestDapp, "calcGetAmountCPMM", [swop_WxXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", wxIdStr, 100000000], nil)) | |
50 | 87 | let swop_WxXtn_WxUsdPriceX6 = fraction(swop_WxXtn_WxXtnPriceX6, xtnUsdPriceX6, 1000000) | |
64 | 101 | let wxUsdtXtnPoolStr = "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz" | |
65 | 102 | let wxUsdtXtnPoolAddress = addressFromStringValue(wxUsdtXtnPoolStr) | |
66 | 103 | let wxUsdtXtnW = 67 | |
67 | - | let $ | |
104 | + | let $t055645712 = { | |
68 | 105 | let @ = invoke(wxUsdtXtnPoolAddress, "putOneTknV2WithBonusREADONLY", [usdnAmount, xtnIdStr], nil) | |
69 | 106 | if ($isInstanceOf(@, "(Int, Int, Int)")) | |
70 | 107 | then @ | |
71 | 108 | else throw(($getType(@) + " couldn't be cast to (Int, Int, Int)")) | |
72 | 109 | } | |
73 | - | let lpAmount = $ | |
74 | - | let feeAmount1 = $ | |
75 | - | let bonus = $ | |
76 | - | let $ | |
110 | + | let lpAmount = $t055645712._1 | |
111 | + | let feeAmount1 = $t055645712._2 | |
112 | + | let bonus = $t055645712._3 | |
113 | + | let $t057155843 = { | |
77 | 114 | let @ = invoke(wxUsdtXtnPoolAddress, "getOneTknV2READONLY", [usdtIdStr, lpAmount], nil) | |
78 | 115 | if ($isInstanceOf(@, "(Int, Int)")) | |
79 | 116 | then @ | |
80 | 117 | else throw(($getType(@) + " couldn't be cast to (Int, Int)")) | |
81 | 118 | } | |
82 | - | let usdtAmount = $ | |
83 | - | let feeAmount2 = $ | |
119 | + | let usdtAmount = $t057155843._1 | |
120 | + | let feeAmount2 = $t057155843._2 | |
84 | 121 | let wxUsdtXtnPrice = fraction(usdtAmount, 1000000, usdnAmount) | |
85 | 122 | let wxWavesXtnW = 550 | |
86 | 123 | let wxWavesXtnPoolStr = "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g" | |
114 | 151 | ||
115 | 152 | ||
116 | 153 | func finalizeWxUsdOnchain (wavesUsdPriceX6) = { | |
117 | - | let doraAddressStr = "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF" | |
118 | - | let doraAddress = addressFromStringValue(doraAddressStr) | |
119 | - | let xtnUsdPriceX6 = valueOrErrorMessage(getInteger(doraAddress, "%s%s__price__USDN-USDT"), "DORA doesn't contain USDN/USDT price") | |
120 | 154 | let wx_WxWaves_AddressStr = "3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh" | |
121 | 155 | let wx_WxWaves_Address = addressFromStringValue(wx_WxWaves_AddressStr) | |
122 | 156 | let wx_WxWaves_Weight = 50000 | |
130 | 164 | let wx_WxXtn_WXx8 = assetBalance(wx_WxXtn_Address, wxId) | |
131 | 165 | let wx_WxXtn_WxUsdPriceX6 = fraction((wx_WxXtn_XTNx6 * 100), xtnUsdPriceX6, wx_WxXtn_WXx8) | |
132 | 166 | let swop_WxXtn_AddressStr = "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R" | |
133 | - | let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp") | |
134 | 167 | let swop_WxXtn_Weight = 5000 | |
135 | 168 | let swop_WxXtn_WxXtnPriceX6 = { | |
136 | 169 | let @ = invoke(swopRestDapp, "calcGetAmountCPMM", [swop_WxXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", wxIdStr, 100000000], nil) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func asString (v) = match v { | |
5 | 5 | case s: String => | |
6 | 6 | s | |
7 | 7 | case _ => | |
8 | 8 | throw("fail to cast into String") | |
9 | 9 | } | |
10 | 10 | ||
11 | 11 | ||
12 | 12 | func asInt (v) = match v { | |
13 | 13 | case i: Int => | |
14 | 14 | i | |
15 | 15 | case _ => | |
16 | 16 | throw("fail to cast into Int") | |
17 | 17 | } | |
18 | 18 | ||
19 | 19 | ||
20 | - | let | |
20 | + | let neutrinoAsset = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p' | |
21 | 21 | ||
22 | - | let xtnId = fromBase58String(xtnIdStr) | |
22 | + | let doraAddressStr = "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF" | |
23 | + | ||
24 | + | let doraAddress = addressFromStringValue(doraAddressStr) | |
25 | + | ||
26 | + | let xtnUsdPriceX6 = valueOrErrorMessage(getInteger(doraAddress, "%s%s__price__USDN-USDT"), "DORA doesn't contain USDN/USDT price") | |
27 | + | ||
28 | + | let wx_restAddressStr = "3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW" | |
29 | + | ||
30 | + | let wx_restDapp = addressFromStringValue(wx_restAddressStr) | |
31 | + | ||
32 | + | let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp") | |
33 | + | ||
34 | + | let xtnId = neutrinoAsset | |
35 | + | ||
36 | + | let xtnIdStr = toBase58String(xtnId) | |
23 | 37 | ||
24 | 38 | let wxIdStr = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on" | |
25 | 39 | ||
26 | 40 | let wxId = fromBase58String(wxIdStr) | |
27 | 41 | ||
42 | + | let viresIdStr = "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p" | |
43 | + | ||
44 | + | let viresId = fromBase58String(viresIdStr) | |
45 | + | ||
46 | + | func finalizeViresUsdOnchain (wavesUsdPriceX6) = { | |
47 | + | let wx_ViresWaves_lp = "E3YhURNsCmjUaYNigH6AayLxbh9u81uVGU3ZvHKznY5v" | |
48 | + | let wxRestResult = split(asString(invoke(wx_restDapp, "poolStatsREADONLY", [wx_ViresWaves_lp], nil)), "__") | |
49 | + | let wx_ViresWaves_WAVESx8 = parseIntValue(wxRestResult[2]) | |
50 | + | let wx_ViresWaves_VIRESx8 = parseIntValue(wxRestResult[1]) | |
51 | + | let wx_ViresWaves_ViresUsdPriceX6 = fraction(wx_ViresWaves_WAVESx8, wavesUsdPriceX6, wx_ViresWaves_VIRESx8) | |
52 | + | let wx_ViresWaves_Weight = wx_ViresWaves_VIRESx8 | |
53 | + | let wx_ViresXtn_AddressStr = "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99" | |
54 | + | let wx_ViresXtn_Address = addressFromStringValue(wx_ViresXtn_AddressStr) | |
55 | + | let wx_ViresXtn_XTNx6 = assetBalance(wx_ViresXtn_Address, xtnId) | |
56 | + | let wx_ViresXtn_VIRESx8 = assetBalance(wx_ViresXtn_Address, wxId) | |
57 | + | let wx_ViresXtn_ViresUsdPriceX6 = fraction((wx_ViresXtn_XTNx6 * 100), xtnUsdPriceX6, wx_ViresXtn_VIRESx8) | |
58 | + | let wx_ViresXtn_Weight = wx_ViresXtn_VIRESx8 | |
59 | + | let swop_ViresXtn_AddressStr = "3PJ48P3p2wvWUjgQaQiZ2cFbr8qmxMokBGd" | |
60 | + | let swop_ViresXtn_Address = addressFromStringValue(swop_ViresXtn_AddressStr) | |
61 | + | let swop_ViresXtn_ViresXtnPriceX6 = asInt(invoke(swopRestDapp, "calcGetAmountCPMM", [swop_ViresXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", viresIdStr, 100000000], nil)) | |
62 | + | let swop_ViresXtn_ViresUsdPriceX6 = fraction(swop_ViresXtn_ViresXtnPriceX6, xtnUsdPriceX6, 1000000) | |
63 | + | let swop_ViresXtn_Weight = getIntegerValue(swop_ViresXtn_Address, "A_asset_balance") | |
64 | + | let W = ((wx_ViresWaves_Weight + wx_ViresXtn_Weight) + swop_ViresXtn_Weight) | |
65 | + | let viresUsdPriceX6 = ((fraction(wx_ViresWaves_ViresUsdPriceX6, wx_ViresWaves_Weight, W) + fraction(wx_ViresXtn_ViresUsdPriceX6, wx_ViresXtn_Weight, W)) + fraction(swop_ViresXtn_Weight, swop_ViresXtn_Weight, W)) | |
66 | + | let debug = ((((((("xtnUsdPriceX6=" + toString(xtnUsdPriceX6)) + " wx_ViresWaves_ViresUsdPriceX6=") + toString(wx_ViresWaves_ViresUsdPriceX6)) + " wx_ViresXtn_ViresUsdPriceX6=") + toString(wx_ViresXtn_ViresUsdPriceX6)) + " swop_ViresXtn_ViresUsdPriceX6=") + toString(swop_ViresXtn_ViresUsdPriceX6)) | |
67 | + | $Tuple2(viresUsdPriceX6, debug) | |
68 | + | } | |
69 | + | ||
70 | + | ||
28 | 71 | func finalizeWxUsdOnchainV2 (wavesUsdPriceX6) = { | |
29 | - | let doraAddressStr = "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF" | |
30 | - | let doraAddress = addressFromStringValue(doraAddressStr) | |
31 | - | let xtnUsdPriceX6 = valueOrErrorMessage(getInteger(doraAddress, "%s%s__price__USDN-USDT"), "DORA doesn't contain USDN/USDT price") | |
32 | 72 | let wx_WxWaves_lp = "BiSzFe8nSL78oZaebfoin5vBZ5Pze6d7kaeijLqr5xZe" | |
33 | - | let wx_restAddressStr = "3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW" | |
34 | - | let wx_restDapp = addressFromStringValue(wx_restAddressStr) | |
35 | 73 | let wxRestResult = split(asString(invoke(wx_restDapp, "poolStatsREADONLY", [wx_WxWaves_lp], nil)), "__") | |
36 | 74 | let wx_WxWaves_Weight = 50000 | |
37 | 75 | let wx_WxWaves_WAVESx8 = parseIntValue(wxRestResult[2]) | |
38 | 76 | let wx_WxWaves_WXx8 = parseIntValue(wxRestResult[1]) | |
39 | 77 | let wx_WxWaves_WxUsdPriceX6 = fraction(wx_WxWaves_WAVESx8, wavesUsdPriceX6, wx_WxWaves_WXx8) | |
40 | 78 | let wx_WxXtn_AddressStr = "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99" | |
41 | 79 | let wx_WxXtn_Address = addressFromStringValue(wx_WxXtn_AddressStr) | |
42 | 80 | let wx_WxXtn_Weight = 50000 | |
43 | 81 | let wx_WxXtn_XTNx6 = assetBalance(wx_WxXtn_Address, xtnId) | |
44 | 82 | let wx_WxXtn_WXx8 = assetBalance(wx_WxXtn_Address, wxId) | |
45 | 83 | let wx_WxXtn_WxUsdPriceX6 = fraction((wx_WxXtn_XTNx6 * 100), xtnUsdPriceX6, wx_WxXtn_WXx8) | |
46 | 84 | let swop_WxXtn_AddressStr = "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R" | |
47 | - | let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp") | |
48 | 85 | let swop_WxXtn_Weight = 5000 | |
49 | 86 | let swop_WxXtn_WxXtnPriceX6 = asInt(invoke(swopRestDapp, "calcGetAmountCPMM", [swop_WxXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", wxIdStr, 100000000], nil)) | |
50 | 87 | let swop_WxXtn_WxUsdPriceX6 = fraction(swop_WxXtn_WxXtnPriceX6, xtnUsdPriceX6, 1000000) | |
51 | 88 | let W = ((wx_WxWaves_Weight + wx_WxXtn_Weight) + swop_WxXtn_Weight) | |
52 | 89 | 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)) | |
53 | 90 | 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)) | |
54 | 91 | $Tuple2(wxUsdPriceX6, debug) | |
55 | 92 | } | |
56 | 93 | ||
57 | 94 | ||
58 | 95 | func finalizeUsdnUsdtOnchainV2 () = { | |
59 | 96 | let wavesUsdtPriceX6 = 2240000 | |
60 | 97 | let ethUsdtPriceX6 = getIntegerValue(this, "%s%s__price__ETH-USDT") | |
61 | 98 | let symbol = "USDN-USDT" | |
62 | 99 | let usdtIdStr = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ" | |
63 | 100 | let usdnAmount = 1000000000 | |
64 | 101 | let wxUsdtXtnPoolStr = "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz" | |
65 | 102 | let wxUsdtXtnPoolAddress = addressFromStringValue(wxUsdtXtnPoolStr) | |
66 | 103 | let wxUsdtXtnW = 67 | |
67 | - | let $ | |
104 | + | let $t055645712 = { | |
68 | 105 | let @ = invoke(wxUsdtXtnPoolAddress, "putOneTknV2WithBonusREADONLY", [usdnAmount, xtnIdStr], nil) | |
69 | 106 | if ($isInstanceOf(@, "(Int, Int, Int)")) | |
70 | 107 | then @ | |
71 | 108 | else throw(($getType(@) + " couldn't be cast to (Int, Int, Int)")) | |
72 | 109 | } | |
73 | - | let lpAmount = $ | |
74 | - | let feeAmount1 = $ | |
75 | - | let bonus = $ | |
76 | - | let $ | |
110 | + | let lpAmount = $t055645712._1 | |
111 | + | let feeAmount1 = $t055645712._2 | |
112 | + | let bonus = $t055645712._3 | |
113 | + | let $t057155843 = { | |
77 | 114 | let @ = invoke(wxUsdtXtnPoolAddress, "getOneTknV2READONLY", [usdtIdStr, lpAmount], nil) | |
78 | 115 | if ($isInstanceOf(@, "(Int, Int)")) | |
79 | 116 | then @ | |
80 | 117 | else throw(($getType(@) + " couldn't be cast to (Int, Int)")) | |
81 | 118 | } | |
82 | - | let usdtAmount = $ | |
83 | - | let feeAmount2 = $ | |
119 | + | let usdtAmount = $t057155843._1 | |
120 | + | let feeAmount2 = $t057155843._2 | |
84 | 121 | let wxUsdtXtnPrice = fraction(usdtAmount, 1000000, usdnAmount) | |
85 | 122 | let wxWavesXtnW = 550 | |
86 | 123 | let wxWavesXtnPoolStr = "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g" | |
87 | 124 | let wxWavesXtnPoolAddress = addressFromStringValue(wxWavesXtnPoolStr) | |
88 | 125 | let wavesWavesXtnX8 = wavesBalance(wxWavesXtnPoolAddress).regular | |
89 | 126 | let xtnWavesXtnX6 = assetBalance(wxWavesXtnPoolAddress, xtnId) | |
90 | 127 | let wavesXtnPriceX6 = fraction(xtnWavesXtnX6, 100000000, wavesWavesXtnX8) | |
91 | 128 | let wxWavesUsdtXtnPrice = fraction(wavesUsdtPriceX6, 1000000, wavesXtnPriceX6) | |
92 | 129 | let wxEthXtnW = 5 | |
93 | 130 | let ethIdStr = "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu" | |
94 | 131 | let ethId = fromBase58String(ethIdStr) | |
95 | 132 | let wxEthXtnPoolStr = "3PEMqetsaJDbYMw1XGovmE37FB8VUhGnX9A" | |
96 | 133 | let wxEthXtnPoolAddress = addressFromStringValue(wxEthXtnPoolStr) | |
97 | 134 | let ethEthXtnX8 = assetBalance(wxEthXtnPoolAddress, ethId) | |
98 | 135 | let xtnEthXtnX6 = assetBalance(wxEthXtnPoolAddress, xtnId) | |
99 | 136 | let ethXtnPriceX6 = fraction(xtnEthXtnX6, 100000000, ethEthXtnX8) | |
100 | 137 | let wxEthUsdtXtnPrice = fraction(ethUsdtPriceX6, 1000000, ethXtnPriceX6) | |
101 | 138 | let swopfiWavesXtnW = 450 | |
102 | 139 | let swopfiRest = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp") | |
103 | 140 | let swopfiWavesXtnPriceX6 = { | |
104 | 141 | let @ = invoke(swopfiRest, "calcGetAmountCPMM", ["3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG", "3PQHCTqfzE8e1Jo8m1QVaCXATSKyMmkYasF", "WAVES", 100000000], nil) | |
105 | 142 | if ($isInstanceOf(@, "Int")) | |
106 | 143 | then @ | |
107 | 144 | else throw(($getType(@) + " couldn't be cast to Int")) | |
108 | 145 | } | |
109 | 146 | let swopfiWavesUsdtXtnPrice = fraction(wavesUsdtPriceX6, 1000000, swopfiWavesXtnPriceX6) | |
110 | 147 | let newPrice = (fraction(wxWavesUsdtXtnPrice, wxWavesXtnW, 1000) + fraction(swopfiWavesUsdtXtnPrice, swopfiWavesXtnW, 1000)) | |
111 | 148 | let debug = ((("wxWavesUsdtXtnPrice=" + toString(wxWavesUsdtXtnPrice)) + " swopfiWavesUsdtXtnPrice=") + toString(swopfiWavesUsdtXtnPrice)) | |
112 | 149 | $Tuple2(newPrice, debug) | |
113 | 150 | } | |
114 | 151 | ||
115 | 152 | ||
116 | 153 | func finalizeWxUsdOnchain (wavesUsdPriceX6) = { | |
117 | - | let doraAddressStr = "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF" | |
118 | - | let doraAddress = addressFromStringValue(doraAddressStr) | |
119 | - | let xtnUsdPriceX6 = valueOrErrorMessage(getInteger(doraAddress, "%s%s__price__USDN-USDT"), "DORA doesn't contain USDN/USDT price") | |
120 | 154 | let wx_WxWaves_AddressStr = "3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh" | |
121 | 155 | let wx_WxWaves_Address = addressFromStringValue(wx_WxWaves_AddressStr) | |
122 | 156 | let wx_WxWaves_Weight = 50000 | |
123 | 157 | let wx_WxWaves_WAVESx8 = wavesBalance(wx_WxWaves_Address).regular | |
124 | 158 | let wx_WxWaves_WXx8 = assetBalance(wx_WxWaves_Address, wxId) | |
125 | 159 | let wx_WxWaves_WxUsdPriceX6 = fraction(wx_WxWaves_WAVESx8, wavesUsdPriceX6, wx_WxWaves_WXx8) | |
126 | 160 | let wx_WxXtn_AddressStr = "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99" | |
127 | 161 | let wx_WxXtn_Address = addressFromStringValue(wx_WxXtn_AddressStr) | |
128 | 162 | let wx_WxXtn_Weight = 50000 | |
129 | 163 | let wx_WxXtn_XTNx6 = assetBalance(wx_WxXtn_Address, xtnId) | |
130 | 164 | let wx_WxXtn_WXx8 = assetBalance(wx_WxXtn_Address, wxId) | |
131 | 165 | let wx_WxXtn_WxUsdPriceX6 = fraction((wx_WxXtn_XTNx6 * 100), xtnUsdPriceX6, wx_WxXtn_WXx8) | |
132 | 166 | let swop_WxXtn_AddressStr = "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R" | |
133 | - | let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp") | |
134 | 167 | let swop_WxXtn_Weight = 5000 | |
135 | 168 | let swop_WxXtn_WxXtnPriceX6 = { | |
136 | 169 | let @ = invoke(swopRestDapp, "calcGetAmountCPMM", [swop_WxXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", wxIdStr, 100000000], nil) | |
137 | 170 | if ($isInstanceOf(@, "Int")) | |
138 | 171 | then @ | |
139 | 172 | else throw(($getType(@) + " couldn't be cast to Int")) | |
140 | 173 | } | |
141 | 174 | let swop_WxXtn_WxUsdPriceX6 = fraction(swop_WxXtn_WxXtnPriceX6, xtnUsdPriceX6, 1000000) | |
142 | 175 | let W = ((wx_WxWaves_Weight + wx_WxXtn_Weight) + swop_WxXtn_Weight) | |
143 | 176 | 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)) | |
144 | 177 | 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)) | |
145 | 178 | $Tuple2(wxUsdPriceX6, debug) | |
146 | 179 | } | |
147 | 180 | ||
148 | 181 | ||
149 | 182 | func getStrOrElse (address,key,defaultVal) = valueOrElse(getString(address, key), defaultVal) | |
150 | 183 | ||
151 | 184 | ||
152 | 185 | func keyWxSwapAddress () = "%s%s__cfg__wxSwapAddress" | |
153 | 186 | ||
154 | 187 | ||
155 | 188 | func keySavingsAddress () = "%s%s__cfg__savingsAddress" | |
156 | 189 | ||
157 | 190 | ||
158 | 191 | let neutrinoContract = addressFromStringValue("3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo") | |
159 | 192 | ||
160 | 193 | @Callable(i) | |
161 | 194 | func swapTest () = { | |
162 | 195 | let MULT8 = 100000000 | |
163 | 196 | let buyBackAmt = (1 * MULT8) | |
164 | 197 | let wxAssetIdStr = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on" | |
165 | 198 | let wxSwapAddress = addressFromStringValue(getStrOrElse(this, keyWxSwapAddress(), "3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93")) | |
166 | 199 | let swapResult = invoke(wxSwapAddress, "swap", [1, wxAssetIdStr, toString(neutrinoContract)], [AttachedPayment(unit, buyBackAmt)]) | |
167 | 200 | if ((swapResult == swapResult)) | |
168 | 201 | then nil | |
169 | 202 | else throw("Strict value is not equal to itself.") | |
170 | 203 | } | |
171 | 204 | ||
172 | 205 |
github/deemru/w8io/3ef1775 41.12 ms ◑