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:
OldNewDifferences
1717 }
1818
1919
20-let xtnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
20+let neutrinoAsset = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
2121
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)
2337
2438 let wxIdStr = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on"
2539
2640 let wxId = fromBase58String(wxIdStr)
2741
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+
2871 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")
3272 let wx_WxWaves_lp = "BiSzFe8nSL78oZaebfoin5vBZ5Pze6d7kaeijLqr5xZe"
33- let wx_restAddressStr = "3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW"
34- let wx_restDapp = addressFromStringValue(wx_restAddressStr)
3573 let wxRestResult = split(asString(invoke(wx_restDapp, "poolStatsREADONLY", [wx_WxWaves_lp], nil)), "__")
3674 let wx_WxWaves_Weight = 50000
3775 let wx_WxWaves_WAVESx8 = parseIntValue(wxRestResult[2])
4482 let wx_WxXtn_WXx8 = assetBalance(wx_WxXtn_Address, wxId)
4583 let wx_WxXtn_WxUsdPriceX6 = fraction((wx_WxXtn_XTNx6 * 100), xtnUsdPriceX6, wx_WxXtn_WXx8)
4684 let swop_WxXtn_AddressStr = "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R"
47- let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp")
4885 let swop_WxXtn_Weight = 5000
4986 let swop_WxXtn_WxXtnPriceX6 = asInt(invoke(swopRestDapp, "calcGetAmountCPMM", [swop_WxXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", wxIdStr, 100000000], nil))
5087 let swop_WxXtn_WxUsdPriceX6 = fraction(swop_WxXtn_WxXtnPriceX6, xtnUsdPriceX6, 1000000)
64101 let wxUsdtXtnPoolStr = "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz"
65102 let wxUsdtXtnPoolAddress = addressFromStringValue(wxUsdtXtnPoolStr)
66103 let wxUsdtXtnW = 67
67- let $t032523400 = {
104+ let $t055645712 = {
68105 let @ = invoke(wxUsdtXtnPoolAddress, "putOneTknV2WithBonusREADONLY", [usdnAmount, xtnIdStr], nil)
69106 if ($isInstanceOf(@, "(Int, Int, Int)"))
70107 then @
71108 else throw(($getType(@) + " couldn't be cast to (Int, Int, Int)"))
72109 }
73- let lpAmount = $t032523400._1
74- let feeAmount1 = $t032523400._2
75- let bonus = $t032523400._3
76- let $t034033531 = {
110+ let lpAmount = $t055645712._1
111+ let feeAmount1 = $t055645712._2
112+ let bonus = $t055645712._3
113+ let $t057155843 = {
77114 let @ = invoke(wxUsdtXtnPoolAddress, "getOneTknV2READONLY", [usdtIdStr, lpAmount], nil)
78115 if ($isInstanceOf(@, "(Int, Int)"))
79116 then @
80117 else throw(($getType(@) + " couldn't be cast to (Int, Int)"))
81118 }
82- let usdtAmount = $t034033531._1
83- let feeAmount2 = $t034033531._2
119+ let usdtAmount = $t057155843._1
120+ let feeAmount2 = $t057155843._2
84121 let wxUsdtXtnPrice = fraction(usdtAmount, 1000000, usdnAmount)
85122 let wxWavesXtnW = 550
86123 let wxWavesXtnPoolStr = "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g"
114151
115152
116153 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")
120154 let wx_WxWaves_AddressStr = "3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh"
121155 let wx_WxWaves_Address = addressFromStringValue(wx_WxWaves_AddressStr)
122156 let wx_WxWaves_Weight = 50000
130164 let wx_WxXtn_WXx8 = assetBalance(wx_WxXtn_Address, wxId)
131165 let wx_WxXtn_WxUsdPriceX6 = fraction((wx_WxXtn_XTNx6 * 100), xtnUsdPriceX6, wx_WxXtn_WXx8)
132166 let swop_WxXtn_AddressStr = "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R"
133- let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp")
134167 let swop_WxXtn_Weight = 5000
135168 let swop_WxXtn_WxXtnPriceX6 = {
136169 let @ = invoke(swopRestDapp, "calcGetAmountCPMM", [swop_WxXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", wxIdStr, 100000000], nil)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func asString (v) = match v {
55 case s: String =>
66 s
77 case _ =>
88 throw("fail to cast into String")
99 }
1010
1111
1212 func asInt (v) = match v {
1313 case i: Int =>
1414 i
1515 case _ =>
1616 throw("fail to cast into Int")
1717 }
1818
1919
20-let xtnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
20+let neutrinoAsset = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
2121
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)
2337
2438 let wxIdStr = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on"
2539
2640 let wxId = fromBase58String(wxIdStr)
2741
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+
2871 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")
3272 let wx_WxWaves_lp = "BiSzFe8nSL78oZaebfoin5vBZ5Pze6d7kaeijLqr5xZe"
33- let wx_restAddressStr = "3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW"
34- let wx_restDapp = addressFromStringValue(wx_restAddressStr)
3573 let wxRestResult = split(asString(invoke(wx_restDapp, "poolStatsREADONLY", [wx_WxWaves_lp], nil)), "__")
3674 let wx_WxWaves_Weight = 50000
3775 let wx_WxWaves_WAVESx8 = parseIntValue(wxRestResult[2])
3876 let wx_WxWaves_WXx8 = parseIntValue(wxRestResult[1])
3977 let wx_WxWaves_WxUsdPriceX6 = fraction(wx_WxWaves_WAVESx8, wavesUsdPriceX6, wx_WxWaves_WXx8)
4078 let wx_WxXtn_AddressStr = "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99"
4179 let wx_WxXtn_Address = addressFromStringValue(wx_WxXtn_AddressStr)
4280 let wx_WxXtn_Weight = 50000
4381 let wx_WxXtn_XTNx6 = assetBalance(wx_WxXtn_Address, xtnId)
4482 let wx_WxXtn_WXx8 = assetBalance(wx_WxXtn_Address, wxId)
4583 let wx_WxXtn_WxUsdPriceX6 = fraction((wx_WxXtn_XTNx6 * 100), xtnUsdPriceX6, wx_WxXtn_WXx8)
4684 let swop_WxXtn_AddressStr = "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R"
47- let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp")
4885 let swop_WxXtn_Weight = 5000
4986 let swop_WxXtn_WxXtnPriceX6 = asInt(invoke(swopRestDapp, "calcGetAmountCPMM", [swop_WxXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", wxIdStr, 100000000], nil))
5087 let swop_WxXtn_WxUsdPriceX6 = fraction(swop_WxXtn_WxXtnPriceX6, xtnUsdPriceX6, 1000000)
5188 let W = ((wx_WxWaves_Weight + wx_WxXtn_Weight) + swop_WxXtn_Weight)
5289 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))
5390 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))
5491 $Tuple2(wxUsdPriceX6, debug)
5592 }
5693
5794
5895 func finalizeUsdnUsdtOnchainV2 () = {
5996 let wavesUsdtPriceX6 = 2240000
6097 let ethUsdtPriceX6 = getIntegerValue(this, "%s%s__price__ETH-USDT")
6198 let symbol = "USDN-USDT"
6299 let usdtIdStr = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
63100 let usdnAmount = 1000000000
64101 let wxUsdtXtnPoolStr = "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz"
65102 let wxUsdtXtnPoolAddress = addressFromStringValue(wxUsdtXtnPoolStr)
66103 let wxUsdtXtnW = 67
67- let $t032523400 = {
104+ let $t055645712 = {
68105 let @ = invoke(wxUsdtXtnPoolAddress, "putOneTknV2WithBonusREADONLY", [usdnAmount, xtnIdStr], nil)
69106 if ($isInstanceOf(@, "(Int, Int, Int)"))
70107 then @
71108 else throw(($getType(@) + " couldn't be cast to (Int, Int, Int)"))
72109 }
73- let lpAmount = $t032523400._1
74- let feeAmount1 = $t032523400._2
75- let bonus = $t032523400._3
76- let $t034033531 = {
110+ let lpAmount = $t055645712._1
111+ let feeAmount1 = $t055645712._2
112+ let bonus = $t055645712._3
113+ let $t057155843 = {
77114 let @ = invoke(wxUsdtXtnPoolAddress, "getOneTknV2READONLY", [usdtIdStr, lpAmount], nil)
78115 if ($isInstanceOf(@, "(Int, Int)"))
79116 then @
80117 else throw(($getType(@) + " couldn't be cast to (Int, Int)"))
81118 }
82- let usdtAmount = $t034033531._1
83- let feeAmount2 = $t034033531._2
119+ let usdtAmount = $t057155843._1
120+ let feeAmount2 = $t057155843._2
84121 let wxUsdtXtnPrice = fraction(usdtAmount, 1000000, usdnAmount)
85122 let wxWavesXtnW = 550
86123 let wxWavesXtnPoolStr = "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g"
87124 let wxWavesXtnPoolAddress = addressFromStringValue(wxWavesXtnPoolStr)
88125 let wavesWavesXtnX8 = wavesBalance(wxWavesXtnPoolAddress).regular
89126 let xtnWavesXtnX6 = assetBalance(wxWavesXtnPoolAddress, xtnId)
90127 let wavesXtnPriceX6 = fraction(xtnWavesXtnX6, 100000000, wavesWavesXtnX8)
91128 let wxWavesUsdtXtnPrice = fraction(wavesUsdtPriceX6, 1000000, wavesXtnPriceX6)
92129 let wxEthXtnW = 5
93130 let ethIdStr = "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu"
94131 let ethId = fromBase58String(ethIdStr)
95132 let wxEthXtnPoolStr = "3PEMqetsaJDbYMw1XGovmE37FB8VUhGnX9A"
96133 let wxEthXtnPoolAddress = addressFromStringValue(wxEthXtnPoolStr)
97134 let ethEthXtnX8 = assetBalance(wxEthXtnPoolAddress, ethId)
98135 let xtnEthXtnX6 = assetBalance(wxEthXtnPoolAddress, xtnId)
99136 let ethXtnPriceX6 = fraction(xtnEthXtnX6, 100000000, ethEthXtnX8)
100137 let wxEthUsdtXtnPrice = fraction(ethUsdtPriceX6, 1000000, ethXtnPriceX6)
101138 let swopfiWavesXtnW = 450
102139 let swopfiRest = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp")
103140 let swopfiWavesXtnPriceX6 = {
104141 let @ = invoke(swopfiRest, "calcGetAmountCPMM", ["3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG", "3PQHCTqfzE8e1Jo8m1QVaCXATSKyMmkYasF", "WAVES", 100000000], nil)
105142 if ($isInstanceOf(@, "Int"))
106143 then @
107144 else throw(($getType(@) + " couldn't be cast to Int"))
108145 }
109146 let swopfiWavesUsdtXtnPrice = fraction(wavesUsdtPriceX6, 1000000, swopfiWavesXtnPriceX6)
110147 let newPrice = (fraction(wxWavesUsdtXtnPrice, wxWavesXtnW, 1000) + fraction(swopfiWavesUsdtXtnPrice, swopfiWavesXtnW, 1000))
111148 let debug = ((("wxWavesUsdtXtnPrice=" + toString(wxWavesUsdtXtnPrice)) + " swopfiWavesUsdtXtnPrice=") + toString(swopfiWavesUsdtXtnPrice))
112149 $Tuple2(newPrice, debug)
113150 }
114151
115152
116153 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")
120154 let wx_WxWaves_AddressStr = "3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh"
121155 let wx_WxWaves_Address = addressFromStringValue(wx_WxWaves_AddressStr)
122156 let wx_WxWaves_Weight = 50000
123157 let wx_WxWaves_WAVESx8 = wavesBalance(wx_WxWaves_Address).regular
124158 let wx_WxWaves_WXx8 = assetBalance(wx_WxWaves_Address, wxId)
125159 let wx_WxWaves_WxUsdPriceX6 = fraction(wx_WxWaves_WAVESx8, wavesUsdPriceX6, wx_WxWaves_WXx8)
126160 let wx_WxXtn_AddressStr = "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99"
127161 let wx_WxXtn_Address = addressFromStringValue(wx_WxXtn_AddressStr)
128162 let wx_WxXtn_Weight = 50000
129163 let wx_WxXtn_XTNx6 = assetBalance(wx_WxXtn_Address, xtnId)
130164 let wx_WxXtn_WXx8 = assetBalance(wx_WxXtn_Address, wxId)
131165 let wx_WxXtn_WxUsdPriceX6 = fraction((wx_WxXtn_XTNx6 * 100), xtnUsdPriceX6, wx_WxXtn_WXx8)
132166 let swop_WxXtn_AddressStr = "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R"
133- let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp")
134167 let swop_WxXtn_Weight = 5000
135168 let swop_WxXtn_WxXtnPriceX6 = {
136169 let @ = invoke(swopRestDapp, "calcGetAmountCPMM", [swop_WxXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", wxIdStr, 100000000], nil)
137170 if ($isInstanceOf(@, "Int"))
138171 then @
139172 else throw(($getType(@) + " couldn't be cast to Int"))
140173 }
141174 let swop_WxXtn_WxUsdPriceX6 = fraction(swop_WxXtn_WxXtnPriceX6, xtnUsdPriceX6, 1000000)
142175 let W = ((wx_WxWaves_Weight + wx_WxXtn_Weight) + swop_WxXtn_Weight)
143176 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))
144177 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))
145178 $Tuple2(wxUsdPriceX6, debug)
146179 }
147180
148181
149182 func getStrOrElse (address,key,defaultVal) = valueOrElse(getString(address, key), defaultVal)
150183
151184
152185 func keyWxSwapAddress () = "%s%s__cfg__wxSwapAddress"
153186
154187
155188 func keySavingsAddress () = "%s%s__cfg__savingsAddress"
156189
157190
158191 let neutrinoContract = addressFromStringValue("3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo")
159192
160193 @Callable(i)
161194 func swapTest () = {
162195 let MULT8 = 100000000
163196 let buyBackAmt = (1 * MULT8)
164197 let wxAssetIdStr = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on"
165198 let wxSwapAddress = addressFromStringValue(getStrOrElse(this, keyWxSwapAddress(), "3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93"))
166199 let swapResult = invoke(wxSwapAddress, "swap", [1, wxAssetIdStr, toString(neutrinoContract)], [AttachedPayment(unit, buyBackAmt)])
167200 if ((swapResult == swapResult))
168201 then nil
169202 else throw("Strict value is not equal to itself.")
170203 }
171204
172205

github/deemru/w8io/3ef1775 
41.12 ms