tx · 2SfeWgmqbXX8b1FK7vVZJYqbZARzEbrcFTxPgSeAYjLz 3P2YBCpek2KbwaxHBSRRa4DWcJUkPu2mCCj: -0.01000000 Waves 2023.04.14 17:12 [3599929] smart account 3P2YBCpek2KbwaxHBSRRa4DWcJUkPu2mCCj > SELF 0.00000000 Waves
{ "type": 13, "id": "2SfeWgmqbXX8b1FK7vVZJYqbZARzEbrcFTxPgSeAYjLz", "fee": 1000000, "feeAssetId": null, "timestamp": 1681481615442, "version": 2, "chainId": 87, "sender": "3P2YBCpek2KbwaxHBSRRa4DWcJUkPu2mCCj", "senderPublicKey": "3C2anUH59qjkVSB8AuFYGBNhSqcgvJhq1BBRodM74pEf", "proofs": [ "4B9raDGS4R7fappiyBF8uLtBNHSR9T3SwAtake2pUKFySD2d8nkyaoVsb5n4LYkDLfspAdz5cNokEJvBMs1SjwUs" ], "script": "base64:BgIECAISAA0BCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFpBQckbWF0Y2gwBQFpCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AAh4dG5JZFN0cgIsREcyeEZrUGREd0tVb0JrekdBaFF0THBTR3pmWExpQ1lQRXplS0gyQWQyNHAABXh0bklkCQDZBAEFCHh0bklkU3RyAAd3eElkU3RyAixBdHF2NTlFWXpqRkd1aXRLVm5NUms2SDhGdWtqb1Yza3RQb3JiRXlzMjVvbgAEd3hJZAkA2QQBBQd3eElkU3RyARZmaW5hbGl6ZVd4VXNkT25jaGFpblYyAQ93YXZlc1VzZFByaWNlWDYEDmRvcmFBZGRyZXNzU3RyAiMzUEtrb2pLZGQ2QkJ6VGYxUlhiUVZmVURyYU5GWFhIS3pRRgQLZG9yYUFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDmRvcmFBZGRyZXNzU3RyBA14dG5Vc2RQcmljZVg2CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgULZG9yYUFkZHJlc3MCFiVzJXNfX3ByaWNlX19VU0ROLVVTRFQCJERPUkEgZG9lc24ndCBjb250YWluIFVTRE4vVVNEVCBwcmljZQQNd3hfV3hXYXZlc19scAIsQmlTekZlOG5TTDc4b1phZWJmb2luNXZCWjVQemU2ZDdrYWVpakxxcjV4WmUEEXd4X3Jlc3RBZGRyZXNzU3RyAiMzUDhNb1Buc2F1cm9mazFWeWhzZEFGa2VRNmlqcEpZWENwVwQLd3hfcmVzdERhcHAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEXd4X3Jlc3RBZGRyZXNzU3RyBAx3eFJlc3RSZXN1bHQJALUJAgkBCGFzU3RyaW5nAQkA/AcEBQt3eF9yZXN0RGFwcAIRcG9vbFN0YXRzUkVBRE9OTFkJAMwIAgUNd3hfV3hXYXZlc19scAUDbmlsBQNuaWwCAl9fBBF3eF9XeFdhdmVzX1dlaWdodADQhgMEEnd4X1d4V2F2ZXNfV0FWRVN4OAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDHd4UmVzdFJlc3VsdAACBA93eF9XeFdhdmVzX1dYeDgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQx3eFJlc3RSZXN1bHQAAQQXd3hfV3hXYXZlc19XeFVzZFByaWNlWDYJAGsDBRJ3eF9XeFdhdmVzX1dBVkVTeDgFD3dhdmVzVXNkUHJpY2VYNgUPd3hfV3hXYXZlc19XWHg4BBN3eF9XeFh0bl9BZGRyZXNzU3RyAiMzUENFTnBFS2U4YXR3RUxaN29DU21jZEVmY1J1S1RyVXg5OQQQd3hfV3hYdG5fQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUTd3hfV3hYdG5fQWRkcmVzc1N0cgQPd3hfV3hYdG5fV2VpZ2h0ANCGAwQOd3hfV3hYdG5fWFROeDYJAPAHAgUQd3hfV3hYdG5fQWRkcmVzcwUFeHRuSWQEDXd4X1d4WHRuX1dYeDgJAPAHAgUQd3hfV3hYdG5fQWRkcmVzcwUEd3hJZAQVd3hfV3hYdG5fV3hVc2RQcmljZVg2CQBrAwkAaAIFDnd4X1d4WHRuX1hUTng2AGQFDXh0blVzZFByaWNlWDYFDXd4X1d4WHRuX1dYeDgEFXN3b3BfV3hYdG5fQWRkcmVzc1N0cgIjM1BLaTRHM1ZYMms0MlpTbU5Ocm12Z2RESDdKelJhVWhZN1IEDHN3b3BSZXN0RGFwcAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1A1NmpOUXpFQ1hucldwbmJiU0pLdzdFb29vNmZrVWFNUHAEEXN3b3BfV3hYdG5fV2VpZ2h0AIgnBBdzd29wX1d4WHRuX1d4WHRuUHJpY2VYNgkBBWFzSW50AQkA/AcEBQxzd29wUmVzdERhcHACEWNhbGNHZXRBbW91bnRDUE1NCQDMCAIFFXN3b3BfV3hYdG5fQWRkcmVzc1N0cgkAzAgCAiMzUDg4cWsxS3pGMUJLakQ3ZkM3TGpOVkFLTTRlemZmNVdFNgkAzAgCBQd3eElkU3RyCQDMCAIAgMLXLwUDbmlsBQNuaWwEF3N3b3BfV3hYdG5fV3hVc2RQcmljZVg2CQBrAwUXc3dvcF9XeFh0bl9XeFh0blByaWNlWDYFDXh0blVzZFByaWNlWDYAwIQ9BAFXCQBkAgkAZAIFEXd4X1d4V2F2ZXNfV2VpZ2h0BQ93eF9XeFh0bl9XZWlnaHQFEXN3b3BfV3hYdG5fV2VpZ2h0BAx3eFVzZFByaWNlWDYJAGQCCQBkAgkAawMFF3d4X1d4V2F2ZXNfV3hVc2RQcmljZVg2BRF3eF9XeFdhdmVzX1dlaWdodAUBVwkAawMFFXd4X1d4WHRuX1d4VXNkUHJpY2VYNgUPd3hfV3hYdG5fV2VpZ2h0BQFXCQBrAwUXc3dvcF9XeFh0bl9XeFVzZFByaWNlWDYFEXN3b3BfV3hYdG5fV2VpZ2h0BQFXBAVkZWJ1ZwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg54dG5Vc2RQcmljZVg2PQkApAMBBQ14dG5Vc2RQcmljZVg2Ahkgd3hfV3hXYXZlc19XeFVzZFByaWNlWDY9CQCkAwEFF3d4X1d4V2F2ZXNfV3hVc2RQcmljZVg2Ahcgd3hfV3hYdG5fV3hVc2RQcmljZVg2PQkApAMBBRV3eF9XeFh0bl9XeFVzZFByaWNlWDYCGSBzd29wX1d4WHRuX1d4VXNkUHJpY2VYNj0JAKQDAQUXc3dvcF9XeFh0bl9XeFVzZFByaWNlWDYJAJQKAgUMd3hVc2RQcmljZVg2BQVkZWJ1ZwEZZmluYWxpemVVc2RuVXNkdE9uY2hhaW5WMgAEEHdhdmVzVXNkdFByaWNlWDYAgNyIAQQOZXRoVXNkdFByaWNlWDYJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCFSVzJXNfX3ByaWNlX19FVEgtVVNEVAQGc3ltYm9sAglVU0ROLVVTRFQECXVzZHRJZFN0cgIsMzROOVljRUVUTFduOTNxWVE2NEVzUDF4ODl0U3J1SlU0NFJyRU1TWFhFUEoECnVzZG5BbW91bnQAgJTr3AMEEHd4VXNkdFh0blBvb2xTdHICIzNQOEtNeUFKQ1BXTmN5ZWRxcm15bXhhZVdvbnZta2hHYXV6BBR3eFVzZHRYdG5Qb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUQd3hVc2R0WHRuUG9vbFN0cgQKd3hVc2R0WHRuVwBDBAskdDAzMjUyMzQwMAoAAUAJAPwHBAUUd3hVc2R0WHRuUG9vbEFkZHJlc3MCHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkJAMwIAgUKdXNkbkFtb3VudAkAzAgCBQh4dG5JZFN0cgUDbmlsBQNuaWwDCQABAgUBQAIPKEludCwgSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIkIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50LCBJbnQpBAhscEFtb3VudAgFCyR0MDMyNTIzNDAwAl8xBApmZWVBbW91bnQxCAULJHQwMzI1MjM0MDACXzIEBWJvbnVzCAULJHQwMzI1MjM0MDACXzMECyR0MDM0MDMzNTMxCgABQAkA/AcEBRR3eFVzZHRYdG5Qb29sQWRkcmVzcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQl1c2R0SWRTdHIJAMwIAgUIbHBBbW91bnQFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAp1c2R0QW1vdW50CAULJHQwMzQwMzM1MzECXzEECmZlZUFtb3VudDIIBQskdDAzNDAzMzUzMQJfMgQOd3hVc2R0WHRuUHJpY2UJAGsDBQp1c2R0QW1vdW50AMCEPQUKdXNkbkFtb3VudAQLd3hXYXZlc1h0blcApgQEEXd4V2F2ZXNYdG5Qb29sU3RyAiMzUFBaV2dGTlJLSEx2TTUxcHdTOTM0QzhWWjdkMkY0WjU4ZwQVd3hXYXZlc1h0blBvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBRF3eFdhdmVzWHRuUG9vbFN0cgQPd2F2ZXNXYXZlc1h0blg4CAkA7wcBBRV3eFdhdmVzWHRuUG9vbEFkZHJlc3MHcmVndWxhcgQNeHRuV2F2ZXNYdG5YNgkA8AcCBRV3eFdhdmVzWHRuUG9vbEFkZHJlc3MFBXh0bklkBA93YXZlc1h0blByaWNlWDYJAGsDBQ14dG5XYXZlc1h0blg2AIDC1y8FD3dhdmVzV2F2ZXNYdG5YOAQTd3hXYXZlc1VzZHRYdG5QcmljZQkAawMFEHdhdmVzVXNkdFByaWNlWDYAwIQ9BQ93YXZlc1h0blByaWNlWDYECXd4RXRoWHRuVwAFBAhldGhJZFN0cgIsNDc0alRlWXgycjJWYTM1Nzk0dENTY0FYV0pHOWhVMkhjZ3h6TW93YVpVbnUEBWV0aElkCQDZBAEFCGV0aElkU3RyBA93eEV0aFh0blBvb2xTdHICIzNQRU1xZXRzYUpEYllNdzFYR292bUUzN0ZCOFZVaEduWDlBBBN3eEV0aFh0blBvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQ93eEV0aFh0blBvb2xTdHIEC2V0aEV0aFh0blg4CQDwBwIFE3d4RXRoWHRuUG9vbEFkZHJlc3MFBWV0aElkBAt4dG5FdGhYdG5YNgkA8AcCBRN3eEV0aFh0blBvb2xBZGRyZXNzBQV4dG5JZAQNZXRoWHRuUHJpY2VYNgkAawMFC3h0bkV0aFh0blg2AIDC1y8FC2V0aEV0aFh0blg4BBF3eEV0aFVzZHRYdG5QcmljZQkAawMFDmV0aFVzZHRQcmljZVg2AMCEPQUNZXRoWHRuUHJpY2VYNgQPc3dvcGZpV2F2ZXNYdG5XAMIDBApzd29wZmlSZXN0CQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUDU2ak5RekVDWG5yV3BuYmJTSkt3N0Vvb282ZmtVYU1QcAQVc3dvcGZpV2F2ZXNYdG5QcmljZVg2CgABQAkA/AcEBQpzd29wZmlSZXN0AhFjYWxjR2V0QW1vdW50Q1BNTQkAzAgCAiMzUEhhTmdvbUJrcnZFTDJRbnVKYXJRVkphNzF3anc5cWlxRwkAzAgCAiMzUFFIQ1RxZnpFOGUxSm84bTFRVmFDWEFUU0t5TW1rWWFzRgkAzAgCAgVXQVZFUwkAzAgCAIDC1y8FA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQXc3dvcGZpV2F2ZXNVc2R0WHRuUHJpY2UJAGsDBRB3YXZlc1VzZHRQcmljZVg2AMCEPQUVc3dvcGZpV2F2ZXNYdG5QcmljZVg2BAhuZXdQcmljZQkAZAIJAGsDBRN3eFdhdmVzVXNkdFh0blByaWNlBQt3eFdhdmVzWHRuVwDoBwkAawMFF3N3b3BmaVdhdmVzVXNkdFh0blByaWNlBQ9zd29wZmlXYXZlc1h0blcA6AcEBWRlYnVnCQCsAgIJAKwCAgkArAICAhR3eFdhdmVzVXNkdFh0blByaWNlPQkApAMBBRN3eFdhdmVzVXNkdFh0blByaWNlAhkgc3dvcGZpV2F2ZXNVc2R0WHRuUHJpY2U9CQCkAwEFF3N3b3BmaVdhdmVzVXNkdFh0blByaWNlCQCUCgIFCG5ld1ByaWNlBQVkZWJ1ZwEUZmluYWxpemVXeFVzZE9uY2hhaW4BD3dhdmVzVXNkUHJpY2VYNgQOZG9yYUFkZHJlc3NTdHICIzNQS2tvaktkZDZCQnpUZjFSWGJRVmZVRHJhTkZYWEhLelFGBAtkb3JhQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUOZG9yYUFkZHJlc3NTdHIEDXh0blVzZFByaWNlWDYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQtkb3JhQWRkcmVzcwIWJXMlc19fcHJpY2VfX1VTRE4tVVNEVAIkRE9SQSBkb2Vzbid0IGNvbnRhaW4gVVNETi9VU0RUIHByaWNlBBV3eF9XeFdhdmVzX0FkZHJlc3NTdHICIzNQRnphSDJnaHB3QU5IRmdqZXZhODNOMXl4ekVyRUx4MmVoBBJ3eF9XeFdhdmVzX0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFFXd4X1d4V2F2ZXNfQWRkcmVzc1N0cgQRd3hfV3hXYXZlc19XZWlnaHQA0IYDBBJ3eF9XeFdhdmVzX1dBVkVTeDgICQDvBwEFEnd4X1d4V2F2ZXNfQWRkcmVzcwdyZWd1bGFyBA93eF9XeFdhdmVzX1dYeDgJAPAHAgUSd3hfV3hXYXZlc19BZGRyZXNzBQR3eElkBBd3eF9XeFdhdmVzX1d4VXNkUHJpY2VYNgkAawMFEnd4X1d4V2F2ZXNfV0FWRVN4OAUPd2F2ZXNVc2RQcmljZVg2BQ93eF9XeFdhdmVzX1dYeDgEE3d4X1d4WHRuX0FkZHJlc3NTdHICIzNQQ0VOcEVLZThhdHdFTFo3b0NTbWNkRWZjUnVLVHJVeDk5BBB3eF9XeFh0bl9BZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBRN3eF9XeFh0bl9BZGRyZXNzU3RyBA93eF9XeFh0bl9XZWlnaHQA0IYDBA53eF9XeFh0bl9YVE54NgkA8AcCBRB3eF9XeFh0bl9BZGRyZXNzBQV4dG5JZAQNd3hfV3hYdG5fV1h4OAkA8AcCBRB3eF9XeFh0bl9BZGRyZXNzBQR3eElkBBV3eF9XeFh0bl9XeFVzZFByaWNlWDYJAGsDCQBoAgUOd3hfV3hYdG5fWFROeDYAZAUNeHRuVXNkUHJpY2VYNgUNd3hfV3hYdG5fV1h4OAQVc3dvcF9XeFh0bl9BZGRyZXNzU3RyAiMzUEtpNEczVlgyazQyWlNtTk5ybXZnZERIN0p6UmFVaFk3UgQMc3dvcFJlc3REYXBwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUDU2ak5RekVDWG5yV3BuYmJTSkt3N0Vvb282ZmtVYU1QcAQRc3dvcF9XeFh0bl9XZWlnaHQAiCcEF3N3b3BfV3hYdG5fV3hYdG5QcmljZVg2CgABQAkA/AcEBQxzd29wUmVzdERhcHACEWNhbGNHZXRBbW91bnRDUE1NCQDMCAIFFXN3b3BfV3hYdG5fQWRkcmVzc1N0cgkAzAgCAiMzUDg4cWsxS3pGMUJLakQ3ZkM3TGpOVkFLTTRlemZmNVdFNgkAzAgCBQd3eElkU3RyCQDMCAIAgMLXLwUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BBdzd29wX1d4WHRuX1d4VXNkUHJpY2VYNgkAawMFF3N3b3BfV3hYdG5fV3hYdG5QcmljZVg2BQ14dG5Vc2RQcmljZVg2AMCEPQQBVwkAZAIJAGQCBRF3eF9XeFdhdmVzX1dlaWdodAUPd3hfV3hYdG5fV2VpZ2h0BRFzd29wX1d4WHRuX1dlaWdodAQMd3hVc2RQcmljZVg2CQBkAgkAZAIJAGsDBRd3eF9XeFdhdmVzX1d4VXNkUHJpY2VYNgURd3hfV3hXYXZlc19XZWlnaHQFAVcJAGsDBRV3eF9XeFh0bl9XeFVzZFByaWNlWDYFD3d4X1d4WHRuX1dlaWdodAUBVwkAawMFF3N3b3BfV3hYdG5fV3hVc2RQcmljZVg2BRFzd29wX1d4WHRuX1dlaWdodAUBVwQFZGVidWcJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIOeHRuVXNkUHJpY2VYNj0JAKQDAQUNeHRuVXNkUHJpY2VYNgIZIHd4X1d4V2F2ZXNfV3hVc2RQcmljZVg2PQkApAMBBRd3eF9XeFdhdmVzX1d4VXNkUHJpY2VYNgIXIHd4X1d4WHRuX1d4VXNkUHJpY2VYNj0JAKQDAQUVd3hfV3hYdG5fV3hVc2RQcmljZVg2Ahkgc3dvcF9XeFh0bl9XeFVzZFByaWNlWDY9CQCkAwEFF3N3b3BfV3hYdG5fV3hVc2RQcmljZVg2CQCUCgIFDHd4VXNkUHJpY2VYNgUFZGVidWcBDGdldFN0ck9yRWxzZQMHYWRkcmVzcwNrZXkKZGVmYXVsdFZhbAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQdhZGRyZXNzBQNrZXkFCmRlZmF1bHRWYWwBEGtleVd4U3dhcEFkZHJlc3MAAhglcyVzX19jZmdfX3d4U3dhcEFkZHJlc3MBEWtleVNhdmluZ3NBZGRyZXNzAAIZJXMlc19fY2ZnX19zYXZpbmdzQWRkcmVzcwAQbmV1dHJpbm9Db250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BDOUJmUndKV1dpdzlBUkVFMkIzZVd6Q2tzM0NZdGc0eW8BAWkBCHN3YXBUZXN0AAQFTVVMVDgAgMLXLwQKYnV5QmFja0FtdAkAaAIAAQUFTVVMVDgEDHd4QXNzZXRJZFN0cgIsQXRxdjU5RVl6akZHdWl0S1ZuTVJrNkg4RnVram9WM2t0UG9yYkV5czI1b24EDXd4U3dhcEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckVsc2UDBQR0aGlzCQEQa2V5V3hTd2FwQWRkcmVzcwACIzNQNjh6Tml1ZnN1MXZpWnB1MWFZM2NkYWhSUktjdlY1TjkzBApzd2FwUmVzdWx0CQD8BwQFDXd4U3dhcEFkZHJlc3MCBHN3YXAJAMwIAgABCQDMCAIFDHd4QXNzZXRJZFN0cgkAzAgCCQClCAEFEG5ldXRyaW5vQ29udHJhY3QFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUKYnV5QmFja0FtdAUDbmlsAwkAAAIFCnN3YXBSZXN1bHQFCnN3YXBSZXN1bHQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAJG0UH", "height": 3599929, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: CZFoU9Vd6MaUbruhuqSdT2sLT4PNUy4JFC4bsTnvtwz5 Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func asString (v) = match v { | |
5 | + | case s: String => | |
6 | + | s | |
7 | + | case _ => | |
8 | + | throw("fail to cast into String") | |
9 | + | } | |
10 | + | ||
11 | + | ||
12 | + | func asInt (v) = match v { | |
13 | + | case i: Int => | |
14 | + | i | |
15 | + | case _ => | |
16 | + | throw("fail to cast into Int") | |
17 | + | } | |
18 | + | ||
19 | + | ||
20 | + | let xtnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p" | |
21 | + | ||
22 | + | let xtnId = fromBase58String(xtnIdStr) | |
23 | + | ||
24 | + | let wxIdStr = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on" | |
25 | + | ||
26 | + | let wxId = fromBase58String(wxIdStr) | |
27 | + | ||
28 | + | 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 | + | let wx_WxWaves_lp = "BiSzFe8nSL78oZaebfoin5vBZ5Pze6d7kaeijLqr5xZe" | |
33 | + | let wx_restAddressStr = "3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW" | |
34 | + | let wx_restDapp = addressFromStringValue(wx_restAddressStr) | |
35 | + | let wxRestResult = split(asString(invoke(wx_restDapp, "poolStatsREADONLY", [wx_WxWaves_lp], nil)), "__") | |
36 | + | let wx_WxWaves_Weight = 50000 | |
37 | + | let wx_WxWaves_WAVESx8 = parseIntValue(wxRestResult[2]) | |
38 | + | let wx_WxWaves_WXx8 = parseIntValue(wxRestResult[1]) | |
39 | + | let wx_WxWaves_WxUsdPriceX6 = fraction(wx_WxWaves_WAVESx8, wavesUsdPriceX6, wx_WxWaves_WXx8) | |
40 | + | let wx_WxXtn_AddressStr = "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99" | |
41 | + | let wx_WxXtn_Address = addressFromStringValue(wx_WxXtn_AddressStr) | |
42 | + | let wx_WxXtn_Weight = 50000 | |
43 | + | let wx_WxXtn_XTNx6 = assetBalance(wx_WxXtn_Address, xtnId) | |
44 | + | let wx_WxXtn_WXx8 = assetBalance(wx_WxXtn_Address, wxId) | |
45 | + | let wx_WxXtn_WxUsdPriceX6 = fraction((wx_WxXtn_XTNx6 * 100), xtnUsdPriceX6, wx_WxXtn_WXx8) | |
46 | + | let swop_WxXtn_AddressStr = "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R" | |
47 | + | let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp") | |
48 | + | let swop_WxXtn_Weight = 5000 | |
49 | + | let swop_WxXtn_WxXtnPriceX6 = asInt(invoke(swopRestDapp, "calcGetAmountCPMM", [swop_WxXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", wxIdStr, 100000000], nil)) | |
50 | + | let swop_WxXtn_WxUsdPriceX6 = fraction(swop_WxXtn_WxXtnPriceX6, xtnUsdPriceX6, 1000000) | |
51 | + | let W = ((wx_WxWaves_Weight + wx_WxXtn_Weight) + swop_WxXtn_Weight) | |
52 | + | 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 | + | 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 | + | $Tuple2(wxUsdPriceX6, debug) | |
55 | + | } | |
56 | + | ||
57 | + | ||
58 | + | func finalizeUsdnUsdtOnchainV2 () = { | |
59 | + | let wavesUsdtPriceX6 = 2240000 | |
60 | + | let ethUsdtPriceX6 = getIntegerValue(this, "%s%s__price__ETH-USDT") | |
61 | + | let symbol = "USDN-USDT" | |
62 | + | let usdtIdStr = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ" | |
63 | + | let usdnAmount = 1000000000 | |
64 | + | let wxUsdtXtnPoolStr = "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz" | |
65 | + | let wxUsdtXtnPoolAddress = addressFromStringValue(wxUsdtXtnPoolStr) | |
66 | + | let wxUsdtXtnW = 67 | |
67 | + | let $t032523400 = { | |
68 | + | let @ = invoke(wxUsdtXtnPoolAddress, "putOneTknV2WithBonusREADONLY", [usdnAmount, xtnIdStr], nil) | |
69 | + | if ($isInstanceOf(@, "(Int, Int, Int)")) | |
70 | + | then @ | |
71 | + | else throw(($getType(@) + " couldn't be cast to (Int, Int, Int)")) | |
72 | + | } | |
73 | + | let lpAmount = $t032523400._1 | |
74 | + | let feeAmount1 = $t032523400._2 | |
75 | + | let bonus = $t032523400._3 | |
76 | + | let $t034033531 = { | |
77 | + | let @ = invoke(wxUsdtXtnPoolAddress, "getOneTknV2READONLY", [usdtIdStr, lpAmount], nil) | |
78 | + | if ($isInstanceOf(@, "(Int, Int)")) | |
79 | + | then @ | |
80 | + | else throw(($getType(@) + " couldn't be cast to (Int, Int)")) | |
81 | + | } | |
82 | + | let usdtAmount = $t034033531._1 | |
83 | + | let feeAmount2 = $t034033531._2 | |
84 | + | let wxUsdtXtnPrice = fraction(usdtAmount, 1000000, usdnAmount) | |
85 | + | let wxWavesXtnW = 550 | |
86 | + | let wxWavesXtnPoolStr = "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g" | |
87 | + | let wxWavesXtnPoolAddress = addressFromStringValue(wxWavesXtnPoolStr) | |
88 | + | let wavesWavesXtnX8 = wavesBalance(wxWavesXtnPoolAddress).regular | |
89 | + | let xtnWavesXtnX6 = assetBalance(wxWavesXtnPoolAddress, xtnId) | |
90 | + | let wavesXtnPriceX6 = fraction(xtnWavesXtnX6, 100000000, wavesWavesXtnX8) | |
91 | + | let wxWavesUsdtXtnPrice = fraction(wavesUsdtPriceX6, 1000000, wavesXtnPriceX6) | |
92 | + | let wxEthXtnW = 5 | |
93 | + | let ethIdStr = "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu" | |
94 | + | let ethId = fromBase58String(ethIdStr) | |
95 | + | let wxEthXtnPoolStr = "3PEMqetsaJDbYMw1XGovmE37FB8VUhGnX9A" | |
96 | + | let wxEthXtnPoolAddress = addressFromStringValue(wxEthXtnPoolStr) | |
97 | + | let ethEthXtnX8 = assetBalance(wxEthXtnPoolAddress, ethId) | |
98 | + | let xtnEthXtnX6 = assetBalance(wxEthXtnPoolAddress, xtnId) | |
99 | + | let ethXtnPriceX6 = fraction(xtnEthXtnX6, 100000000, ethEthXtnX8) | |
100 | + | let wxEthUsdtXtnPrice = fraction(ethUsdtPriceX6, 1000000, ethXtnPriceX6) | |
101 | + | let swopfiWavesXtnW = 450 | |
102 | + | let swopfiRest = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp") | |
103 | + | let swopfiWavesXtnPriceX6 = { | |
104 | + | let @ = invoke(swopfiRest, "calcGetAmountCPMM", ["3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG", "3PQHCTqfzE8e1Jo8m1QVaCXATSKyMmkYasF", "WAVES", 100000000], nil) | |
105 | + | if ($isInstanceOf(@, "Int")) | |
106 | + | then @ | |
107 | + | else throw(($getType(@) + " couldn't be cast to Int")) | |
108 | + | } | |
109 | + | let swopfiWavesUsdtXtnPrice = fraction(wavesUsdtPriceX6, 1000000, swopfiWavesXtnPriceX6) | |
110 | + | let newPrice = (fraction(wxWavesUsdtXtnPrice, wxWavesXtnW, 1000) + fraction(swopfiWavesUsdtXtnPrice, swopfiWavesXtnW, 1000)) | |
111 | + | let debug = ((("wxWavesUsdtXtnPrice=" + toString(wxWavesUsdtXtnPrice)) + " swopfiWavesUsdtXtnPrice=") + toString(swopfiWavesUsdtXtnPrice)) | |
112 | + | $Tuple2(newPrice, debug) | |
113 | + | } | |
114 | + | ||
115 | + | ||
116 | + | 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 | + | let wx_WxWaves_AddressStr = "3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh" | |
121 | + | let wx_WxWaves_Address = addressFromStringValue(wx_WxWaves_AddressStr) | |
122 | + | let wx_WxWaves_Weight = 50000 | |
123 | + | let wx_WxWaves_WAVESx8 = wavesBalance(wx_WxWaves_Address).regular | |
124 | + | let wx_WxWaves_WXx8 = assetBalance(wx_WxWaves_Address, wxId) | |
125 | + | let wx_WxWaves_WxUsdPriceX6 = fraction(wx_WxWaves_WAVESx8, wavesUsdPriceX6, wx_WxWaves_WXx8) | |
126 | + | let wx_WxXtn_AddressStr = "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99" | |
127 | + | let wx_WxXtn_Address = addressFromStringValue(wx_WxXtn_AddressStr) | |
128 | + | let wx_WxXtn_Weight = 50000 | |
129 | + | let wx_WxXtn_XTNx6 = assetBalance(wx_WxXtn_Address, xtnId) | |
130 | + | let wx_WxXtn_WXx8 = assetBalance(wx_WxXtn_Address, wxId) | |
131 | + | let wx_WxXtn_WxUsdPriceX6 = fraction((wx_WxXtn_XTNx6 * 100), xtnUsdPriceX6, wx_WxXtn_WXx8) | |
132 | + | let swop_WxXtn_AddressStr = "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R" | |
133 | + | let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp") | |
134 | + | let swop_WxXtn_Weight = 5000 | |
135 | + | let swop_WxXtn_WxXtnPriceX6 = { | |
136 | + | let @ = invoke(swopRestDapp, "calcGetAmountCPMM", [swop_WxXtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", wxIdStr, 100000000], nil) | |
137 | + | if ($isInstanceOf(@, "Int")) | |
138 | + | then @ | |
139 | + | else throw(($getType(@) + " couldn't be cast to Int")) | |
140 | + | } | |
141 | + | let swop_WxXtn_WxUsdPriceX6 = fraction(swop_WxXtn_WxXtnPriceX6, xtnUsdPriceX6, 1000000) | |
142 | + | let W = ((wx_WxWaves_Weight + wx_WxXtn_Weight) + swop_WxXtn_Weight) | |
143 | + | 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 | + | 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 | + | $Tuple2(wxUsdPriceX6, debug) | |
146 | + | } | |
147 | + | ||
148 | + | ||
149 | + | func getStrOrElse (address,key,defaultVal) = valueOrElse(getString(address, key), defaultVal) | |
150 | + | ||
151 | + | ||
152 | + | func keyWxSwapAddress () = "%s%s__cfg__wxSwapAddress" | |
153 | + | ||
154 | + | ||
155 | + | func keySavingsAddress () = "%s%s__cfg__savingsAddress" | |
156 | + | ||
157 | + | ||
158 | + | let neutrinoContract = addressFromStringValue("3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo") | |
159 | + | ||
160 | + | @Callable(i) | |
161 | + | func swapTest () = { | |
162 | + | let MULT8 = 100000000 | |
163 | + | let buyBackAmt = (1 * MULT8) | |
164 | + | let wxAssetIdStr = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on" | |
165 | + | let wxSwapAddress = addressFromStringValue(getStrOrElse(this, keyWxSwapAddress(), "3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93")) | |
166 | + | let swapResult = invoke(wxSwapAddress, "swap", [1, wxAssetIdStr, toString(neutrinoContract)], [AttachedPayment(unit, buyBackAmt)]) | |
167 | + | if ((swapResult == swapResult)) | |
168 | + | then nil | |
169 | + | else throw("Strict value is not equal to itself.") | |
170 | + | } | |
171 | + | ||
172 | + |
github/deemru/w8io/6500d08 25.94 ms ◑