tx · 6S3TC95aBtpxf23LeBSeRCD6dM9kQnPYHQP8yLgx6aQw

3PHMz1nGiPAHCFHfPQcW18ovsb5VgCCGzfJ:  -0.01200000 Waves

2023.08.14 13:47 [3775844] smart account 3PHMz1nGiPAHCFHfPQcW18ovsb5VgCCGzfJ > SELF 0.00000000 Waves

{ "type": 13, "id": "6S3TC95aBtpxf23LeBSeRCD6dM9kQnPYHQP8yLgx6aQw", "fee": 1200000, "feeAssetId": null, "timestamp": 1692010094622, "version": 2, "chainId": 87, "sender": "3PHMz1nGiPAHCFHfPQcW18ovsb5VgCCGzfJ", "senderPublicKey": "75XcdocCZDdHda5bUegEwkcDk2Tt4i8yZcUzZmwS1ooA", "proofs": [ "2NtkyMtjSCvyZaX1HR5Z8JBkWPQagjuDMogdauNKQcJH8Q8rw4pnqNNEC2Gs1NR523YoVA174xL8Pbg29W6UmbbV" ], "script": "base64:BgIPCAISBAoCCAQSAwoBCBIAHwANYmFja2VuZENhbGxlcgkBB0FkZHJlc3MBARoBV8kc195MXwsDgJyvvJU7iFrMf5ysRK6jZwAPb3JkZXJib29rT3JhY2xlCQEHQWRkcmVzcwEBGgFX7OWpiUb9o6qleBLz1RqaNYPdZ7CfxaJ2AAV4dG5JZAEgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEACHh0bklkU3RyAixERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAAGZXRoU3RyAiwzVnVWNVdUbUR6NDdEbWRuM1FwY1lqemJTZGlwalFFNEpNZE5lMXhacFgxMwAIdG9rZW5JZHMJAMwIAgIsNm5TcFZ5Tkg3eU02OWVnNDQ2d3JRUjk0aXBiYmNtWk1VMUVOUHdhbkM5N2cJAMwIAgIsRWhpZTV4WXBlTjhvcDFDY3RjNmFHVXJxeDhqcTNqdGYxRFNqWERiZm03YVQJAMwIAgIsNExISHZZR05LSlVnNWhqNjVhR0Q1dmdTY3ZDQm1McGRSRnRqb2t2Q2pTTDgJAMwIAgIsQzFpV3NLR3FMd2pIVW5kaVE3aVhwZG1QdW05UGVDREZmeVhCZEpKb3NEUlMJAMwIAgIsMzROOVljRUVUTFduOTNxWVE2NEVzUDF4ODl0U3J1SlU0NFJyRU1TWFhFUEoJAMwIAgIsNlh0SGpwWGJzOVJSSlAyU3I5R1V5VnF6QUNjYnk5VGtUaEhYbmpWQzVDREoJAMwIAgIsSEVCOFFhdzl4cldwV3M4dEhzaUFUWUdCV0RCdFAyUzdrY1BBTHJNdTQzQVMJAMwIAgIsQWpzbzZuVFRqcHR1MlVITHg2aGZTWFZ0SEZ0UkJKQ2tLWWQ1U0F5ajd6ZjUJAMwIAgIsRFNiYmhMc1NUZURnNUxzaXVmazJBbmVoM0RqVnFKdVByMk05dVUxZ3d5NXAJAMwIAgIsQXRxdjU5RVl6akZHdWl0S1ZuTVJrNkg4RnVram9WM2t0UG9yYkV5czI1b24JAMwIAgIsMnRoc0FDdUhtekRNdU5lelBNMzJ3ZzlhM0J3VXpCV0RlU0tha2d6M2N3MjEJAMwIAgIrWWlOYm9mRnpDMTdqRUhIQ013clJjcHk5TXJyamFiTU1MWnhnOGc1eG1mNwkAzAgCAiw4dDREUFdUd1B6cGF0SEE5QWtUeFdBQjQ3VEhuWXpCc0Rub1k3ZlFxYkc5MQkAzAgCAixBdDhENk5GRnBoZUNidktWbmpWb2VMTDg0RW84TlpuNm92TWFueGZMYUZXTAkAzAgCAiw2cGhLMjJ6dEdCVzEyN2dVRm1kTUVIS0IzQ1ZkNlpoV294Mld0d0prYnFUcQkAzAgCAiwzVnVWNVdUbUR6NDdEbWRuM1FwY1lqemJTZGlwalFFNEpNZE5lMXhacFgxMwUDbmlsABB0b2tlbklzQmFzZUFzc2V0CQDMCAIHCQDMCAIHCQDMCAIHCQDMCAIHCQDMCAIGCQDMCAIGCQDMCAIHCQDMCAIHCQDMCAIHCQDMCAIHCQDMCAIHCQDMCAIHCQDMCAIHCQDMCAIHCQDMCAIGCQDMCAIHBQNuaWwADXRva2VuRGVjaW1hbHMJAMwIAgDAhD0JAMwIAgCAwtcvCQDMCAIAgMLXLwkAzAgCAIDC1y8JAMwIAgDAhD0JAMwIAgDAhD0JAMwIAgCAwtcvCQDMCAIAgMLXLwkAzAgCAIDC1y8JAMwIAgCAwtcvCQDMCAIAgMLXLwkAzAgCAIDC1y8JAMwIAgCAwtcvCQDMCAIAwIQ9CQDMCAIAwIQ9CQDMCAIAgMLXLwUDbmlsAA90b2tlbldYV2F2ZXNMUHMJAMwIAgIsRFplQTdSYlZhYjk4cjYxaFZINXpjRlpYd05BTFBKR2dxMWV5SGFuZHNLS1cJAMwIAgIsNzJFNE1NRkhuZ3NpeHFBa05aQ1JKTUxUbWdBUDludWZkc1hleG5TNXF4VngJAMwIAgIsRlRUSm5CNnhHNENLWkVKTWdzZ3FqbWdiemN5SDh5YTN0VjhMUVAyR0NEczcJAMwIAgIsM1VueXRObmtkNDhmSG9mSFBCcDU5QmtwWkExdU1TSjhQZGhXVUN1ZXJpY3MJAMwIAgIsQnlKdFZ1WWk1OEN0ZGp0YXNEdVRxdGdldjhxV2tkSnliRjdyWTF4b3NtaEUJAMwIAgIsQm9YdWY5ZXdKU0UxVU1yS2liWm1pZ3pDNnRCenY4UkZUZVptb2ZFb3MyWkoJAMwIAgIsN0c2ODd1aTNtNTlvQWQ2cWt5bmkydnQ3N2JIRjRiYkE2eGNQZkRvM3VpVHUJAMwIAgIsRU1zWnBxY1Q4TnVNWVpDRVBIenZyaFFDUUtoZlhqZGVla1p2Y1dwSHNOdmgJAMwIAgIsRTNZaFVSTnNDbWpVYVlOaWdINkFheUx4Ymg5dTgxdVZHVTNadkhLem5ZNXYJAMwIAgIsQmlTekZlOG5TTDc4b1phZWJmb2luNXZCWjVQemU2ZDdrYWVpakxxcjV4WmUJAMwIAgIsQUtRc0VRb2VpbktSRnRkeDZyaEtXY3BrQU11NmNiRExkdFNXblI4dHBCQ3EJAMwIAgIsRGpnd1c0Q01KRWZwemo3U0xGRlBpQ3FmMXpmbUFnZjFNRDVnQVM4U2pLdDQJAMwIAgIACQDMCAICLEYzczkyVlJkcHBFdExWQVA2OTdDVE02QXpaSkVDUmNvTXg1a2oyRmtHdjRNCQDMCAICLDZpTUI2TEtTcmd2OXdhRXZFbk42WWR5eDdkZnhQbkdjVHc4MzE4V1ZtNWJSCQDMCAICLEU2TVVHU1VpZVNzcTZRaUpjYnA2UkVkUVh5anA2dVBXTGl0bnA5R2R0c3VoBQNuaWwAD3Rva2VuV1hYVE5Qb29scwkAzAgCAgAJAMwIAgIACQDMCAICAAkAzAgCAixFc0dzM3hRTFc4UVNSaUFCZnp0ZlZMZTh1NWEycHZOZmtkdGk0VlllczFtcwkAzAgCAgAJAMwIAgIACQDMCAICIzNQNjE1eVhlUTlRdTRxQk0xUUdpbUd6aXh5TVM1VzRLdHVnCQDMCAICIzNQRWtENUx1SEdXaFVmZ0JXMW93WkZ4VnlkWW9XalY2SmlhCQDMCAICIzNQNUhqUG93Z2lwaVZCM1V2WHBoRGlQdktzNDI0V0M5eFF3CQDMCAICIzNQQ0VOcEVLZThhdHdFTFo3b0NTbWNkRWZjUnVLVHJVeDk5CQDMCAICAAkAzAgCAgAJAMwIAgIjM1BIODMyZUtudzY3UEZ2SmZVZzlLbno2QkhNODdRdmpNZUwJAMwIAgIACQDMCAICIzNQR2NZem9VZlFFUWtoUmdyQnFtRzVXcGM3QTFuY0Z2UnRNCQDMCAICAAUDbmlsAA50b2tlblN3b3BQb29scwkAzAgCAiMzUDJWNjNYZDZCdmlEa2VNenhoVXcyU0p5b2pCeVJ6OGE4bQkAzAgCAiMzUDI3UzlWMzZrdzJNY2pXUlozN0F4VHg4aXdrZDdIWHc2VwkAzAgCAiMzUDZETGRKVFAyRXlTcTlNRmRKdTZiZVVldnJRZDJzVlZCaAkAzAgCAgAJAMwIAgIACQDMCAICAAkAzAgCAiMzUEJIeUV3bUVSUjFDRWtyVE5iUGoyYmd5aXNUZlBScWZlZQkAzAgCAiMzUERTWHd3QTJ4QXRteGVvMmJlYkRQM0FBNXluWjJLcmdudwkAzAgCAiMzUEo0OFAzcDJ3dldVamdRYVFpWjJjRmJyOHFteE1va0JHZAkAzAgCAiMzUEtpNEczVlgyazQyWlNtTk5ybXZnZERIN0p6UmFVaFk3UgkAzAgCAgAJAMwIAgIACQDMCAICIzNQQ3d2bnMyZG5tb2JENlo0Y1I4NnY5OHM3TGdNWll5Z0V5CQDMCAICIzNQTHA5S3JkcmJXQXZTRkhHSlZFYXN6VXVicXV6M002bWZlCQDMCAICAAkAzAgCAgAFA25pbAARd3hfcmVzdEFkZHJlc3NTdHICIzNQOE1vUG5zYXVyb2ZrMVZ5aHNkQUZrZVE2aWpwSllYQ3BXAAt3eF9yZXN0RGFwcAkBEUBleHRyTmF0aXZlKDEwNjIpAQURd3hfcmVzdEFkZHJlc3NTdHIADHN3b3BSZXN0RGFwcAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1A1NmpOUXpFQ1hucldwbmJiU0pLdzdFb29vNmZrVWFNUHAAD29yYWNsZVRvbGVyYW5jZQDoBwALcmV2aXNpb25OdW0CAAADU0VQAgJfXwEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAWkFByRtYXRjaDAFAWkJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBDXRyeUdldEludGVnZXIBA2tleQQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAAADmRvcmFBZGRyZXNzU3RyAiMzUEtrb2pLZGQ2QkJ6VGYxUlhiUVZmVURyYU5GWFhIS3pRRgALZG9yYUFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDmRvcmFBZGRyZXNzU3RyAA14dG5Vc2RQcmljZVg2CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgULZG9yYUFkZHJlc3MCFiVzJXNfX3ByaWNlX19VU0ROLVVTRFQCJERPUkEgZG9lc24ndCBjb250YWluIFVTRE4vVVNEVCBwcmljZQENZ2V0VG9rZW5QcmljZQIIdG9rZW5OdW0Pd2F2ZXNVc2RQcmljZVg2BAp0b2tlbklkU3RyCQCRAwIFCHRva2VuSWRzBQh0b2tlbk51bQQHdG9rZW5JZAkA2QQBBQp0b2tlbklkU3RyBA13eF9UMVdhdmVzX2xwCQCRAwIFD3Rva2VuV1hXYXZlc0xQcwUIdG9rZW5OdW0ECyR0MDQyNjc0OTYzAwkAAAIFDXd4X1QxV2F2ZXNfbHACAAkAlAoCAAAAAAQMd3hSZXN0UmVzdWx0CQC1CQIJAQhhc1N0cmluZwEJAPwHBAULd3hfcmVzdERhcHACEXBvb2xTdGF0c1JFQURPTkxZCQDMCAIFDXd4X1QxV2F2ZXNfbHAFA25pbAUDbmlsAgJfXwQLJHQwNDQ4MzQ1NzUDCQCRAwIFEHRva2VuSXNCYXNlQXNzZXQFCHRva2VuTnVtCQCUCgIAAQACCQCUCgIAAgABBA53YXZlc0luUGFpck51bQgFCyR0MDQ0ODM0NTc1Al8xBA50b2tlbkluUGFpck51bQgFCyR0MDQ0ODM0NTc1Al8yBBJ3eF9UMVdhdmVzX1dBVkVTeDgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQx3eFJlc3RSZXN1bHQFDndhdmVzSW5QYWlyTnVtBA93eF9UMVdhdmVzX1QxeDgJAGsDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMd3hSZXN0UmVzdWx0BQ50b2tlbkluUGFpck51bQCAwtcvCQCRAwIFDXRva2VuRGVjaW1hbHMFCHRva2VuTnVtBBd3eF9UMVdhdmVzX1QxVXNkUHJpY2VYNgkAawMFEnd4X1QxV2F2ZXNfV0FWRVN4OAUPd2F2ZXNVc2RQcmljZVg2BQ93eF9UMVdhdmVzX1QxeDgEEXd4X1QxV2F2ZXNfV2VpZ2h0BQ93eF9UMVdhdmVzX1QxeDgJAJQKAgUXd3hfVDFXYXZlc19UMVVzZFByaWNlWDYFEXd4X1QxV2F2ZXNfV2VpZ2h0BBd3eF9UMVdhdmVzX1QxVXNkUHJpY2VYNggFCyR0MDQyNjc0OTYzAl8xBBF3eF9UMVdhdmVzX1dlaWdodAgFCyR0MDQyNjc0OTYzAl8yBBN3eF9UMVh0bl9BZGRyZXNzU3RyCQCRAwIFD3Rva2VuV1hYVE5Qb29scwUIdG9rZW5OdW0ECyR0MDUwMjE1NDM4AwkAAAIFE3d4X1QxWHRuX0FkZHJlc3NTdHICAAkAlAoCAAAAAAQQd3hfVDFYdG5fQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUTd3hfVDFYdG5fQWRkcmVzc1N0cgQOd3hfVDFYdG5fWFROeDYJAPAHAgUQd3hfVDFYdG5fQWRkcmVzcwUFeHRuSWQEDXd4X1QxWHRuX1QxeDgJAPAHAgUQd3hfVDFYdG5fQWRkcmVzcwUHdG9rZW5JZAkAlAoCCQBrAwkAaAIFDnd4X1QxWHRuX1hUTng2CQBpAgkAkQMCBQ10b2tlbkRlY2ltYWxzBQh0b2tlbk51bQDAhD0FDXh0blVzZFByaWNlWDYFDXd4X1QxWHRuX1QxeDgFDXd4X1QxWHRuX1QxeDgEFXd4X1QxWHRuX1QxVXNkUHJpY2VYNggFCyR0MDUwMjE1NDM4Al8xBA93eF9UMVh0bl9XZWlnaHQIBQskdDA1MDIxNTQzOAJfMgQVc3dvcF9UMVh0bl9BZGRyZXNzU3RyCQCRAwIFDnRva2VuU3dvcFBvb2xzBQh0b2tlbk51bQQLJHQwNTQ5NzYwOTkDCQAAAgUVc3dvcF9UMVh0bl9BZGRyZXNzU3RyAgAJAJQKAgAAAAAEEnN3b3BfVDFYdG5fQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUVc3dvcF9UMVh0bl9BZGRyZXNzU3RyBBdzd29wX1QxWHRuX1QxWHRuUHJpY2VYNgkBBWFzSW50AQkA/AcEBQxzd29wUmVzdERhcHACEWNhbGNHZXRBbW91bnRDUE1NCQDMCAIFFXN3b3BfVDFYdG5fQWRkcmVzc1N0cgkAzAgCAiMzUDg4cWsxS3pGMUJLakQ3ZkM3TGpOVkFLTTRlemZmNVdFNgkAzAgCBQp0b2tlbklkU3RyCQDMCAIJAJEDAgUNdG9rZW5EZWNpbWFscwUIdG9rZW5OdW0FA25pbAUDbmlsBBdzd29wX1QxWHRuX1QxVXNkUHJpY2VYNgkAawMFF3N3b3BfVDFYdG5fVDFYdG5QcmljZVg2BQ14dG5Vc2RQcmljZVg2AMCEPQQRc3dvcF9UMVh0bl9XZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFEnN3b3BfVDFYdG5fQWRkcmVzcwIPQV9hc3NldF9iYWxhbmNlCQCUCgIFF3N3b3BfVDFYdG5fVDFVc2RQcmljZVg2BRFzd29wX1QxWHRuX1dlaWdodAQXc3dvcF9UMVh0bl9UMVVzZFByaWNlWDYIBQskdDA1NDk3NjA5OQJfMQQRc3dvcF9UMVh0bl9XZWlnaHQIBQskdDA1NDk3NjA5OQJfMgQBVwkAZAIJAGQCBRF3eF9UMVdhdmVzX1dlaWdodAUPd3hfVDFYdG5fV2VpZ2h0BRFzd29wX1QxWHRuX1dlaWdodAQMVDFVc2RQcmljZVg2CQBkAgkAZAIJAGsDBRd3eF9UMVdhdmVzX1QxVXNkUHJpY2VYNgURd3hfVDFXYXZlc19XZWlnaHQFAVcJAGsDBRV3eF9UMVh0bl9UMVVzZFByaWNlWDYFD3d4X1QxWHRuX1dlaWdodAUBVwkAawMFF3N3b3BfVDFYdG5fVDFVc2RQcmljZVg2BRFzd29wX1QxWHRuX1dlaWdodAUBVwQFZGVidWcJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINVDFVc2RQcmljZVg2PQkApAMBBQxUMVVzZFByaWNlWDYCGSB3eF9UMVdhdmVzX1QxVXNkUHJpY2VYNj0JAKQDAQUXd3hfVDFXYXZlc19UMVVzZFByaWNlWDYCFyB3eF9UMVh0bl9UMVVzZFByaWNlWDY9CQCkAwEFFXd4X1QxWHRuX1QxVXNkUHJpY2VYNgIZIHN3b3BfVDFYdG5fVDFVc2RQcmljZVg2PQkApAMBBRdzd29wX1QxWHRuX1QxVXNkUHJpY2VYNgkAlAoCBQxUMVVzZFByaWNlWDYFBWRlYnVnABNsYXN0VXBkYXRlZEJsb2NrS2V5AhBsYXN0VXBkYXRlZEJsb2NrAAduMTVMaXN0CQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABBQNuaWwBD2dldFByaWNlRGF0YUtleQIFYmxvY2sHdG9rZW5JZAkArAICCQCsAgIJAKwCAgIGYmxvY2tfCQCkAwEFBWJsb2NrAgFfBQd0b2tlbklkAQ1nZXRQcmljZVZhbHVlAgd0b2tlbklkBWJsb2NrCQELdmFsdWVPckVsc2UCCQCaCAIFD29yZGVyYm9va09yYWNsZQkBD2dldFByaWNlRGF0YUtleQIFBWJsb2NrBQd0b2tlbklkAAABE2dldExhc3RVcGRhdGVkQmxvY2sABBBsYXN0VXBkYXRlZEJsb2NrCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUPb3JkZXJib29rT3JhY2xlBRNsYXN0VXBkYXRlZEJsb2NrS2V5AiBMYXN0IHVwZGF0ZWQgYmxvY2sga2V5IG5vdCBmb3VuZAMJAGcCAAAFEGxhc3RVcGRhdGVkQmxvY2sJAAIBAhNJbnZhbGlkIGJsb2NrIHZhbHVlAwkAZgIJAGUCBQZoZWlnaHQFEGxhc3RVcGRhdGVkQmxvY2sACgkAAgECLlRoZSBwcmljZSBoYXMgbm90IGJlZW4gdXBkYXRlZCBmb3IgYSBsb25nIHRpbWUFEGxhc3RVcGRhdGVkQmxvY2sBDGdldFByaWNlTGlzdAIFYWNjdW0EbmV4dAQLJHQwNzUxNTc1NTYFBWFjY3VtBAZyZXN1bHQIBQskdDA3NTE1NzU1NgJfMQQFYmxvY2sIBQskdDA3NTE1NzU1NgJfMgQHdG9rZW5JZAgFCyR0MDc1MTU3NTU2Al8zBANzdW0IBQskdDA3NTE1NzU1NgJfNAQKcHJpY2VWYWx1ZQkBDWdldFByaWNlVmFsdWUCBQd0b2tlbklkBQVibG9jawQJbmV4dEJsb2NrCQBlAgUFYmxvY2sFBG5leHQDCQBmAgUKcHJpY2VWYWx1ZQAACQCWCgQJAM0IAgUGcmVzdWx0BQpwcmljZVZhbHVlBQluZXh0QmxvY2sFB3Rva2VuSWQJAGQCBQNzdW0FCnByaWNlVmFsdWUJAJYKBAUGcmVzdWx0BQluZXh0QmxvY2sFB3Rva2VuSWQFA3N1bQEQZ2V0T3JkZXJib29rVHdhcAEKdG9rZW5JZFN0cgQDaW52CQD8BwQFBHRoaXMCEmdldE9yZGVyYm9va1R3YXAxNQkAzAgCBQp0b2tlbklkU3RyCQDMCAIHBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgQOb3JkZXJib29rUHJpY2UKAAFABQNpbnYDCQABAgUBQAIOKEludCwgQm9vbGVhbikFAUAJAAIBCQCsAgIJAAMBBQFAAiMgY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBCb29sZWFuKQMJAAACBQ5vcmRlcmJvb2tQcmljZQUOb3JkZXJib29rUHJpY2UFDm9yZGVyYm9va1ByaWNlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwFpARJnZXRPcmRlcmJvb2tUd2FwMTUCB3Rva2VuSWQFZGVidWcEEGxhc3RVcGRhdGVkQmxvY2sJARNnZXRMYXN0VXBkYXRlZEJsb2NrAAQFdHVwbGUKAAIkbAUHbjE1TGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAUDbmlsBRBsYXN0VXBkYXRlZEJsb2NrBQd0b2tlbklkAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGdldFByaWNlTGlzdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8ECnByaWNlc0xpc3QIBQV0dXBsZQJfMQQDc3VtCAUFdHVwbGUCXzQEB2F2ZXJhZ2UJAGsDBQNzdW0AwIQ9CQBrAwkAkAMBBQpwcmljZXNMaXN0AMCEPQABBAhpc0xvY2tlZAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQ9vcmRlcmJvb2tPcmFjbGUJAKwCAgUHdG9rZW5JZAIHX2xvY2tlZAcDBQVkZWJ1ZwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglhdmVyYWdlOiAJAKQDAQUHYXZlcmFnZQIMLCBpc0xvY2tlZDogCQClAwEFCGlzTG9ja2VkAgIsIAIPcHJpY2VMaXN0U2l6ZTogCQCkAwEJAJADAQUKcHJpY2VzTGlzdAIHLCBzdW06IAkApAMBBQNzdW0JAJQKAgUDbmlsCQCUCgIFB2F2ZXJhZ2UFCGlzTG9ja2VkAWkBEHVwZGF0ZVRva2VuUHJpY2UBCmFzc2V0SWRTdHIECndhdmVzUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFC2RvcmFBZGRyZXNzAhclcyVzX19wcmljZV9fV0FWRVMtVVNEVAQKdG9rZW5QcmljZQMJAAACBQphc3NldElkU3RyAgVXQVZFUwUKd2F2ZXNQcmljZQMJAAACBQphc3NldElkU3RyBQh4dG5JZFN0cgUNeHRuVXNkUHJpY2VYNgQMcHJpY2VJblBvb2xzCAkBDWdldFRva2VuUHJpY2UCCQEFdmFsdWUBCQDPCAIFCHRva2VuSWRzBQphc3NldElkU3RyBQp3YXZlc1ByaWNlAl8xAwkAAAIFCmFzc2V0SWRTdHIFBmV0aFN0cgQIZXRoUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFC2RvcmFBZGRyZXNzAhUlcyVzX19wcmljZV9fRVRILVVTRFQEBGNvbXAJAGsDBQxwcmljZUluUG9vbHMAkE4FCGV0aFByaWNlAwMJAGYCBQRjb21wCQBlAgCQTgUPb3JhY2xlVG9sZXJhbmNlCQBmAgkAZAIAkE4FD29yYWNsZVRvbGVyYW5jZQUEY29tcAcFDHByaWNlSW5Qb29scwkAAgECMmludGVybmFsIEVUSCBwcmljZSBkb2Vzbid0IG1hdGNoIHdpdGggZ2xvYmFsIHByaWNlBQxwcmljZUluUG9vbHMECGxhc3RUd2FwCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgUKYXNzZXRJZFN0cgIHX3R3YXA1QgQKbGFzdEhlaWdodAkBDXRyeUdldEludGVnZXIBCQCsAgIFCmFzc2V0SWRTdHICCl9sYXN0QmxvY2sDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDWJhY2tlbmRDYWxsZXIJAAIBAhphdmFpbGFibGUgZm9yIGJhY2tlbmQgb25seQMJAGYCAAIJAGUCBQZoZWlnaHQFCmxhc3RIZWlnaHQFA25pbAMDCQAAAgUKbGFzdEhlaWdodAAABgkAZgIJAGUCBQZoZWlnaHQFCmxhc3RIZWlnaHQAHgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQphc3NldElkU3RyAgdfdHdhcDVCBQp0b2tlblByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCmFzc2V0SWRTdHICCl9sYXN0QmxvY2sFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCmFzc2V0SWRTdHICC19sYXN0UHJpY2VzCQCkAwEFCnRva2VuUHJpY2UFA25pbAQKbGFzdFByaWNlcwkAtQkCCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIFCmFzc2V0SWRTdHICC19sYXN0UHJpY2VzAgEsBAluZXdQcmljZXMJAMwIAgkApAMBBQp0b2tlblByaWNlBQpsYXN0UHJpY2VzCgEKc3VtSGFuZGxlcgIFYWNjdW0EbmV4dAkAZAIFBWFjY3VtCQENcGFyc2VJbnRWYWx1ZQEFBG5leHQEB25ld1R3YXAJAGkCCgACJGwFCW5ld1ByaWNlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VtSGFuZGxlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAkAMBBQluZXdQcmljZXMEE29yZGVyYm9va1R3YXBSZXN1bHQJARBnZXRPcmRlcmJvb2tUd2FwAQUKYXNzZXRJZFN0cgMJAAACBRNvcmRlcmJvb2tUd2FwUmVzdWx0BRNvcmRlcmJvb2tUd2FwUmVzdWx0BA0kdDAxMDI3ODEwMzM2BRNvcmRlcmJvb2tUd2FwUmVzdWx0BA1vcmRlcmJvb2tUd2FwCAUNJHQwMTAyNzgxMDMzNgJfMQQPb3JkZXJib29rTG9ja2VkCAUNJHQwMTAyNzgxMDMzNgJfMgQPdHdhcHNDb21wYXJpc29uCQBrAwUHbmV3VHdhcACQTgUNb3JkZXJib29rVHdhcAQMdHdhcHNTaW1pbGFyAwkAZgIFD3R3YXBzQ29tcGFyaXNvbgkAZQIAkE4FD29yYWNsZVRvbGVyYW5jZQkAZgIJAGQCAJBOBQ9vcmFjbGVUb2xlcmFuY2UFD3R3YXBzQ29tcGFyaXNvbgcECXJpc2tMZXZlbAMFDHR3YXBzU2ltaWxhcgABCQBkAgACAwUPb3JkZXJib29rTG9ja2VkAAEAAAMJAQEhAQUMdHdhcHNTaW1pbGFyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCmFzc2V0SWRTdHICCl9yaXNrTGV2ZWwFCXJpc2tMZXZlbAUDbmlsAwkAZwIABQkAkAMBBQluZXdQcmljZXMECXVwZFByaWNlcwkAuQkCBQluZXdQcmljZXMCASwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUKYXNzZXRJZFN0cgIHX3R3YXA1QgUHbmV3VHdhcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQphc3NldElkU3RyAgpfbGFzdEJsb2NrBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQphc3NldElkU3RyAgtfbGFzdFByaWNlcwUJdXBkUHJpY2VzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCmFzc2V0SWRTdHICCl9yaXNrTGV2ZWwFCXJpc2tMZXZlbAUDbmlsBAl1cGRQcmljZXMJALkJAgkA0QgCBQluZXdQcmljZXMJAGUCCQCQAwEFCW5ld1ByaWNlcwABAgEsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCmFzc2V0SWRTdHICB190d2FwNUIFB25ld1R3YXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUKYXNzZXRJZFN0cgIKX2xhc3RCbG9jawUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUKYXNzZXRJZFN0cgILX2xhc3RQcmljZXMFCXVwZFByaWNlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQphc3NldElkU3RyAgpfcmlza0xldmVsBQlyaXNrTGV2ZWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQx1cGRhdGVUb2tlbnMAAwkBAiE9AggFAWkMb3JpZ2luQ2FsbGVyBQ1iYWNrZW5kQ2FsbGVyCQACAQIaYXZhaWxhYmxlIGZvciBiYWNrZW5kIG9ubHkEAmkxCQD8BwQFBHRoaXMCEHVwZGF0ZVRva2VuUHJpY2UJAMwIAgIFV0FWRVMFA25pbAUDbmlsAwkAAAIFAmkxBQJpMQQCaTIJAPwHBAUEdGhpcwIQdXBkYXRlVG9rZW5QcmljZQkAzAgCBQh4dG5JZFN0cgUDbmlsBQNuaWwDCQAAAgUCaTIFAmkyCgEFY2FsbHUCBWFjY3VtBG5leHQEAmkzCQD8BwQFBHRoaXMCEHVwZGF0ZVRva2VuUHJpY2UJAMwIAgUEbmV4dAUDbmlsBQNuaWwDCQAAAgUCaTMFAmkzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4KAAIkbAUIdG9rZW5JZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWNhbGx1AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXnCGsgo", "height": 3775844, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3v5KGEDcsPFnSemwpHuEPbfGB88pV7HjuZmCtDZ8zakD Next: 9meczckqK8Cs7oDbcGG3CYGkbYWcU4Ej8N6XpREw9uis Diff:
OldNewDifferences
1111
1212 let ethStr = "3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13"
1313
14-let tokenIds = ["34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ", "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ", "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS", "Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5", "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p", "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on", "2thsACuHmzDMuNezPM32wg9a3BwUzBWDeSKakgz3cw21", "YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7", "8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91", "At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL", "6phK22ztGBW127gUFmdMEHKB3CVd6ZhWox2WtwJkbqTq", "3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13"]
14+let tokenIds = ["6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g", "Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT", "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8", "C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS", "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ", "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ", "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS", "Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5", "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p", "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on", "2thsACuHmzDMuNezPM32wg9a3BwUzBWDeSKakgz3cw21", "YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7", "8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91", "At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL", "6phK22ztGBW127gUFmdMEHKB3CVd6ZhWox2WtwJkbqTq", "3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13"]
1515
16-let tokenIsBaseAsset = [true, true, false, false, false, false, false, false, false, false, true, false]
16+let tokenIsBaseAsset = [false, false, false, false, true, true, false, false, false, false, false, false, false, false, true, false]
1717
18-let tokenDecimals = [1000000, 1000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 1000000, 1000000, 100000000]
18+let tokenDecimals = [1000000, 100000000, 100000000, 100000000, 1000000, 1000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 1000000, 1000000, 100000000]
1919
20-let tokenWXWavesLPs = ["ByJtVuYi58CtdjtasDuTqtgev8qWkdJybF7rY1xosmhE", "BoXuf9ewJSE1UMrKibZmigzC6tBzv8RFTeZmofEos2ZJ", "7G687ui3m59oAd6qkyni2vt77bHF4bbA6xcPfDo3uiTu", "EMsZpqcT8NuMYZCEPHzvrhQCQKhfXjdeekZvcWpHsNvh", "E3YhURNsCmjUaYNigH6AayLxbh9u81uVGU3ZvHKznY5v", "BiSzFe8nSL78oZaebfoin5vBZ5Pze6d7kaeijLqr5xZe", "AKQsEQoeinKRFtdx6rhKWcpkAMu6cbDLdtSWnR8tpBCq", "DjgwW4CMJEfpzj7SLFFPiCqf1zfmAgf1MD5gAS8SjKt4", "", "F3s92VRdppEtLVAP697CTM6AzZJECRcoMx5kj2FkGv4M", "6iMB6LKSrgv9waEvEnN6Ydyx7dfxPnGcTw8318WVm5bR", "E6MUGSUieSsq6QiJcbp6REdQXyjp6uPWLitnp9Gdtsuh"]
20+let tokenWXWavesLPs = ["DZeA7RbVab98r61hVH5zcFZXwNALPJGgq1eyHandsKKW", "72E4MMFHngsixqAkNZCRJMLTmgAP9nufdsXexnS5qxVx", "FTTJnB6xG4CKZEJMgsgqjmgbzcyH8ya3tV8LQP2GCDs7", "3UnytNnkd48fHofHPBp59BkpZA1uMSJ8PdhWUCuerics", "ByJtVuYi58CtdjtasDuTqtgev8qWkdJybF7rY1xosmhE", "BoXuf9ewJSE1UMrKibZmigzC6tBzv8RFTeZmofEos2ZJ", "7G687ui3m59oAd6qkyni2vt77bHF4bbA6xcPfDo3uiTu", "EMsZpqcT8NuMYZCEPHzvrhQCQKhfXjdeekZvcWpHsNvh", "E3YhURNsCmjUaYNigH6AayLxbh9u81uVGU3ZvHKznY5v", "BiSzFe8nSL78oZaebfoin5vBZ5Pze6d7kaeijLqr5xZe", "AKQsEQoeinKRFtdx6rhKWcpkAMu6cbDLdtSWnR8tpBCq", "DjgwW4CMJEfpzj7SLFFPiCqf1zfmAgf1MD5gAS8SjKt4", "", "F3s92VRdppEtLVAP697CTM6AzZJECRcoMx5kj2FkGv4M", "6iMB6LKSrgv9waEvEnN6Ydyx7dfxPnGcTw8318WVm5bR", "E6MUGSUieSsq6QiJcbp6REdQXyjp6uPWLitnp9Gdtsuh"]
2121
22-let tokenWXXTNPools = ["", "", "3P615yXeQ9Qu4qBM1QGimGzixyMS5W4Ktug", "3PEkD5LuHGWhUfgBW1owZFxVydYoWjV6Jia", "3P5HjPowgipiVB3UvXphDiPvKs424WC9xQw", "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99", "", "", "3PH832eKnw67PFvJfUg9Knz6BHM87QvjMeL", "", "3PGcYzoUfQEQkhRgrBqmG5Wpc7A1ncFvRtM", ""]
22+let tokenWXXTNPools = ["", "", "", "EsGs3xQLW8QSRiABfztfVLe8u5a2pvNfkdti4VYes1ms", "", "", "3P615yXeQ9Qu4qBM1QGimGzixyMS5W4Ktug", "3PEkD5LuHGWhUfgBW1owZFxVydYoWjV6Jia", "3P5HjPowgipiVB3UvXphDiPvKs424WC9xQw", "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99", "", "", "3PH832eKnw67PFvJfUg9Knz6BHM87QvjMeL", "", "3PGcYzoUfQEQkhRgrBqmG5Wpc7A1ncFvRtM", ""]
2323
24-let tokenSwopPools = ["", "", "3PBHyEwmERR1CEkrTNbPj2bgyisTfPRqfee", "3PDSXwwA2xAtmxeo2bebDP3AA5ynZ2Krgnw", "3PJ48P3p2wvWUjgQaQiZ2cFbr8qmxMokBGd", "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R", "", "", "3PCwvns2dnmobD6Z4cR86v98s7LgMZYygEy", "3PLp9KrdrbWAvSFHGJVEaszUubquz3M6mfe", "", ""]
24+let tokenSwopPools = ["3P2V63Xd6BviDkeMzxhUw2SJyojByRz8a8m", "3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W", "3P6DLdJTP2EySq9MFdJu6beUevrQd2sVVBh", "", "", "", "3PBHyEwmERR1CEkrTNbPj2bgyisTfPRqfee", "3PDSXwwA2xAtmxeo2bebDP3AA5ynZ2Krgnw", "3PJ48P3p2wvWUjgQaQiZ2cFbr8qmxMokBGd", "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R", "", "", "3PCwvns2dnmobD6Z4cR86v98s7LgMZYygEy", "3PLp9KrdrbWAvSFHGJVEaszUubquz3M6mfe", "", ""]
2525
2626 let wx_restAddressStr = "3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW"
2727
6969 let tokenIdStr = tokenIds[tokenNum]
7070 let tokenId = fromBase58String(tokenIdStr)
7171 let wx_T1Waves_lp = tokenWXWavesLPs[tokenNum]
72- let $t036054301 = if ((wx_T1Waves_lp == ""))
72+ let $t042674963 = if ((wx_T1Waves_lp == ""))
7373 then $Tuple2(0, 0)
7474 else {
7575 let wxRestResult = split(asString(invoke(wx_restDapp, "poolStatsREADONLY", [wx_T1Waves_lp], nil)), "__")
76- let $t038213913 = if (tokenIsBaseAsset[tokenNum])
76+ let $t044834575 = if (tokenIsBaseAsset[tokenNum])
7777 then $Tuple2(1, 2)
7878 else $Tuple2(2, 1)
79- let wavesInPairNum = $t038213913._1
80- let tokenInPairNum = $t038213913._2
79+ let wavesInPairNum = $t044834575._1
80+ let tokenInPairNum = $t044834575._2
8181 let wx_T1Waves_WAVESx8 = parseIntValue(wxRestResult[wavesInPairNum])
8282 let wx_T1Waves_T1x8 = fraction(parseIntValue(wxRestResult[tokenInPairNum]), 100000000, tokenDecimals[tokenNum])
8383 let wx_T1Waves_T1UsdPriceX6 = fraction(wx_T1Waves_WAVESx8, wavesUsdPriceX6, wx_T1Waves_T1x8)
8484 let wx_T1Waves_Weight = wx_T1Waves_T1x8
8585 $Tuple2(wx_T1Waves_T1UsdPriceX6, wx_T1Waves_Weight)
8686 }
87- let wx_T1Waves_T1UsdPriceX6 = $t036054301._1
88- let wx_T1Waves_Weight = $t036054301._2
87+ let wx_T1Waves_T1UsdPriceX6 = $t042674963._1
88+ let wx_T1Waves_Weight = $t042674963._2
8989 let wx_T1Xtn_AddressStr = tokenWXXTNPools[tokenNum]
90- let $t043594776 = if ((wx_T1Xtn_AddressStr == ""))
90+ let $t050215438 = if ((wx_T1Xtn_AddressStr == ""))
9191 then $Tuple2(0, 0)
9292 else {
9393 let wx_T1Xtn_Address = addressFromStringValue(wx_T1Xtn_AddressStr)
9595 let wx_T1Xtn_T1x8 = assetBalance(wx_T1Xtn_Address, tokenId)
9696 $Tuple2(fraction((wx_T1Xtn_XTNx6 * (tokenDecimals[tokenNum] / 1000000)), xtnUsdPriceX6, wx_T1Xtn_T1x8), wx_T1Xtn_T1x8)
9797 }
98- let wx_T1Xtn_T1UsdPriceX6 = $t043594776._1
99- let wx_T1Xtn_Weight = $t043594776._2
98+ let wx_T1Xtn_T1UsdPriceX6 = $t050215438._1
99+ let wx_T1Xtn_Weight = $t050215438._2
100100 let swop_T1Xtn_AddressStr = tokenSwopPools[tokenNum]
101- let $t048355437 = if ((swop_T1Xtn_AddressStr == ""))
101+ let $t054976099 = if ((swop_T1Xtn_AddressStr == ""))
102102 then $Tuple2(0, 0)
103103 else {
104104 let swop_T1Xtn_Address = addressFromStringValue(swop_T1Xtn_AddressStr)
107107 let swop_T1Xtn_Weight = getIntegerValue(swop_T1Xtn_Address, "A_asset_balance")
108108 $Tuple2(swop_T1Xtn_T1UsdPriceX6, swop_T1Xtn_Weight)
109109 }
110- let swop_T1Xtn_T1UsdPriceX6 = $t048355437._1
111- let swop_T1Xtn_Weight = $t048355437._2
110+ let swop_T1Xtn_T1UsdPriceX6 = $t054976099._1
111+ let swop_T1Xtn_Weight = $t054976099._2
112112 let W = ((wx_T1Waves_Weight + wx_T1Xtn_Weight) + swop_T1Xtn_Weight)
113113 let T1UsdPriceX6 = ((fraction(wx_T1Waves_T1UsdPriceX6, wx_T1Waves_Weight, W) + fraction(wx_T1Xtn_T1UsdPriceX6, wx_T1Xtn_Weight, W)) + fraction(swop_T1Xtn_T1UsdPriceX6, swop_T1Xtn_Weight, W))
114114 let debug = ((((((("T1UsdPriceX6=" + toString(T1UsdPriceX6)) + " wx_T1Waves_T1UsdPriceX6=") + toString(wx_T1Waves_T1UsdPriceX6)) + " wx_T1Xtn_T1UsdPriceX6=") + toString(wx_T1Xtn_T1UsdPriceX6)) + " swop_T1Xtn_T1UsdPriceX6=") + toString(swop_T1Xtn_T1UsdPriceX6))
137137
138138
139139 func getPriceList (accum,next) = {
140- let $t068536894 = accum
141- let result = $t068536894._1
142- let block = $t068536894._2
143- let tokenId = $t068536894._3
144- let sum = $t068536894._4
140+ let $t075157556 = accum
141+ let result = $t075157556._1
142+ let block = $t075157556._2
143+ let tokenId = $t075157556._3
144+ let sum = $t075157556._4
145145 let priceValue = getPriceValue(tokenId, block)
146146 let nextBlock = (block - next)
147147 if ((priceValue > 0))
249249 let orderbookTwapResult = getOrderbookTwap(assetIdStr)
250250 if ((orderbookTwapResult == orderbookTwapResult))
251251 then {
252- let $t096169674 = orderbookTwapResult
253- let orderbookTwap = $t096169674._1
254- let orderbookLocked = $t096169674._2
252+ let $t01027810336 = orderbookTwapResult
253+ let orderbookTwap = $t01027810336._1
254+ let orderbookLocked = $t01027810336._2
255255 let twapsComparison = fraction(newTwap, 10000, orderbookTwap)
256256 let twapsSimilar = if ((twapsComparison > (10000 - oracleTolerance)))
257257 then ((10000 + oracleTolerance) > twapsComparison)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let backendCaller = Address(base58'3PLGH6sG6ND59GU6gFXHKQRuL5bdpWFs6U6')
55
66 let orderbookOracle = Address(base58'3PPXVKjN6nRMzXeegcYhfiic96pd2c98Ekm')
77
88 let xtnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
99
1010 let xtnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
1111
1212 let ethStr = "3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13"
1313
14-let tokenIds = ["34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ", "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ", "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS", "Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5", "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p", "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on", "2thsACuHmzDMuNezPM32wg9a3BwUzBWDeSKakgz3cw21", "YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7", "8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91", "At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL", "6phK22ztGBW127gUFmdMEHKB3CVd6ZhWox2WtwJkbqTq", "3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13"]
14+let tokenIds = ["6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g", "Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT", "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8", "C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS", "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ", "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ", "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS", "Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5", "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p", "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on", "2thsACuHmzDMuNezPM32wg9a3BwUzBWDeSKakgz3cw21", "YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7", "8t4DPWTwPzpatHA9AkTxWAB47THnYzBsDnoY7fQqbG91", "At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL", "6phK22ztGBW127gUFmdMEHKB3CVd6ZhWox2WtwJkbqTq", "3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13"]
1515
16-let tokenIsBaseAsset = [true, true, false, false, false, false, false, false, false, false, true, false]
16+let tokenIsBaseAsset = [false, false, false, false, true, true, false, false, false, false, false, false, false, false, true, false]
1717
18-let tokenDecimals = [1000000, 1000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 1000000, 1000000, 100000000]
18+let tokenDecimals = [1000000, 100000000, 100000000, 100000000, 1000000, 1000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 1000000, 1000000, 100000000]
1919
20-let tokenWXWavesLPs = ["ByJtVuYi58CtdjtasDuTqtgev8qWkdJybF7rY1xosmhE", "BoXuf9ewJSE1UMrKibZmigzC6tBzv8RFTeZmofEos2ZJ", "7G687ui3m59oAd6qkyni2vt77bHF4bbA6xcPfDo3uiTu", "EMsZpqcT8NuMYZCEPHzvrhQCQKhfXjdeekZvcWpHsNvh", "E3YhURNsCmjUaYNigH6AayLxbh9u81uVGU3ZvHKznY5v", "BiSzFe8nSL78oZaebfoin5vBZ5Pze6d7kaeijLqr5xZe", "AKQsEQoeinKRFtdx6rhKWcpkAMu6cbDLdtSWnR8tpBCq", "DjgwW4CMJEfpzj7SLFFPiCqf1zfmAgf1MD5gAS8SjKt4", "", "F3s92VRdppEtLVAP697CTM6AzZJECRcoMx5kj2FkGv4M", "6iMB6LKSrgv9waEvEnN6Ydyx7dfxPnGcTw8318WVm5bR", "E6MUGSUieSsq6QiJcbp6REdQXyjp6uPWLitnp9Gdtsuh"]
20+let tokenWXWavesLPs = ["DZeA7RbVab98r61hVH5zcFZXwNALPJGgq1eyHandsKKW", "72E4MMFHngsixqAkNZCRJMLTmgAP9nufdsXexnS5qxVx", "FTTJnB6xG4CKZEJMgsgqjmgbzcyH8ya3tV8LQP2GCDs7", "3UnytNnkd48fHofHPBp59BkpZA1uMSJ8PdhWUCuerics", "ByJtVuYi58CtdjtasDuTqtgev8qWkdJybF7rY1xosmhE", "BoXuf9ewJSE1UMrKibZmigzC6tBzv8RFTeZmofEos2ZJ", "7G687ui3m59oAd6qkyni2vt77bHF4bbA6xcPfDo3uiTu", "EMsZpqcT8NuMYZCEPHzvrhQCQKhfXjdeekZvcWpHsNvh", "E3YhURNsCmjUaYNigH6AayLxbh9u81uVGU3ZvHKznY5v", "BiSzFe8nSL78oZaebfoin5vBZ5Pze6d7kaeijLqr5xZe", "AKQsEQoeinKRFtdx6rhKWcpkAMu6cbDLdtSWnR8tpBCq", "DjgwW4CMJEfpzj7SLFFPiCqf1zfmAgf1MD5gAS8SjKt4", "", "F3s92VRdppEtLVAP697CTM6AzZJECRcoMx5kj2FkGv4M", "6iMB6LKSrgv9waEvEnN6Ydyx7dfxPnGcTw8318WVm5bR", "E6MUGSUieSsq6QiJcbp6REdQXyjp6uPWLitnp9Gdtsuh"]
2121
22-let tokenWXXTNPools = ["", "", "3P615yXeQ9Qu4qBM1QGimGzixyMS5W4Ktug", "3PEkD5LuHGWhUfgBW1owZFxVydYoWjV6Jia", "3P5HjPowgipiVB3UvXphDiPvKs424WC9xQw", "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99", "", "", "3PH832eKnw67PFvJfUg9Knz6BHM87QvjMeL", "", "3PGcYzoUfQEQkhRgrBqmG5Wpc7A1ncFvRtM", ""]
22+let tokenWXXTNPools = ["", "", "", "EsGs3xQLW8QSRiABfztfVLe8u5a2pvNfkdti4VYes1ms", "", "", "3P615yXeQ9Qu4qBM1QGimGzixyMS5W4Ktug", "3PEkD5LuHGWhUfgBW1owZFxVydYoWjV6Jia", "3P5HjPowgipiVB3UvXphDiPvKs424WC9xQw", "3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99", "", "", "3PH832eKnw67PFvJfUg9Knz6BHM87QvjMeL", "", "3PGcYzoUfQEQkhRgrBqmG5Wpc7A1ncFvRtM", ""]
2323
24-let tokenSwopPools = ["", "", "3PBHyEwmERR1CEkrTNbPj2bgyisTfPRqfee", "3PDSXwwA2xAtmxeo2bebDP3AA5ynZ2Krgnw", "3PJ48P3p2wvWUjgQaQiZ2cFbr8qmxMokBGd", "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R", "", "", "3PCwvns2dnmobD6Z4cR86v98s7LgMZYygEy", "3PLp9KrdrbWAvSFHGJVEaszUubquz3M6mfe", "", ""]
24+let tokenSwopPools = ["3P2V63Xd6BviDkeMzxhUw2SJyojByRz8a8m", "3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W", "3P6DLdJTP2EySq9MFdJu6beUevrQd2sVVBh", "", "", "", "3PBHyEwmERR1CEkrTNbPj2bgyisTfPRqfee", "3PDSXwwA2xAtmxeo2bebDP3AA5ynZ2Krgnw", "3PJ48P3p2wvWUjgQaQiZ2cFbr8qmxMokBGd", "3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R", "", "", "3PCwvns2dnmobD6Z4cR86v98s7LgMZYygEy", "3PLp9KrdrbWAvSFHGJVEaszUubquz3M6mfe", "", ""]
2525
2626 let wx_restAddressStr = "3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW"
2727
2828 let wx_restDapp = addressFromStringValue(wx_restAddressStr)
2929
3030 let swopRestDapp = addressFromStringValue("3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp")
3131
3232 let oracleTolerance = 1000
3333
3434 let revisionNum = ""
3535
3636 let SEP = "__"
3737
3838 func asString (v) = match v {
3939 case s: String =>
4040 s
4141 case _ =>
4242 throw("fail to cast into String")
4343 }
4444
4545
4646 func asInt (v) = match v {
4747 case i: Int =>
4848 i
4949 case _ =>
5050 throw("fail to cast into Int")
5151 }
5252
5353
5454 func tryGetInteger (key) = match getInteger(this, key) {
5555 case b: Int =>
5656 b
5757 case _ =>
5858 0
5959 }
6060
6161
6262 let doraAddressStr = "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF"
6363
6464 let doraAddress = addressFromStringValue(doraAddressStr)
6565
6666 let xtnUsdPriceX6 = valueOrErrorMessage(getInteger(doraAddress, "%s%s__price__USDN-USDT"), "DORA doesn't contain USDN/USDT price")
6767
6868 func getTokenPrice (tokenNum,wavesUsdPriceX6) = {
6969 let tokenIdStr = tokenIds[tokenNum]
7070 let tokenId = fromBase58String(tokenIdStr)
7171 let wx_T1Waves_lp = tokenWXWavesLPs[tokenNum]
72- let $t036054301 = if ((wx_T1Waves_lp == ""))
72+ let $t042674963 = if ((wx_T1Waves_lp == ""))
7373 then $Tuple2(0, 0)
7474 else {
7575 let wxRestResult = split(asString(invoke(wx_restDapp, "poolStatsREADONLY", [wx_T1Waves_lp], nil)), "__")
76- let $t038213913 = if (tokenIsBaseAsset[tokenNum])
76+ let $t044834575 = if (tokenIsBaseAsset[tokenNum])
7777 then $Tuple2(1, 2)
7878 else $Tuple2(2, 1)
79- let wavesInPairNum = $t038213913._1
80- let tokenInPairNum = $t038213913._2
79+ let wavesInPairNum = $t044834575._1
80+ let tokenInPairNum = $t044834575._2
8181 let wx_T1Waves_WAVESx8 = parseIntValue(wxRestResult[wavesInPairNum])
8282 let wx_T1Waves_T1x8 = fraction(parseIntValue(wxRestResult[tokenInPairNum]), 100000000, tokenDecimals[tokenNum])
8383 let wx_T1Waves_T1UsdPriceX6 = fraction(wx_T1Waves_WAVESx8, wavesUsdPriceX6, wx_T1Waves_T1x8)
8484 let wx_T1Waves_Weight = wx_T1Waves_T1x8
8585 $Tuple2(wx_T1Waves_T1UsdPriceX6, wx_T1Waves_Weight)
8686 }
87- let wx_T1Waves_T1UsdPriceX6 = $t036054301._1
88- let wx_T1Waves_Weight = $t036054301._2
87+ let wx_T1Waves_T1UsdPriceX6 = $t042674963._1
88+ let wx_T1Waves_Weight = $t042674963._2
8989 let wx_T1Xtn_AddressStr = tokenWXXTNPools[tokenNum]
90- let $t043594776 = if ((wx_T1Xtn_AddressStr == ""))
90+ let $t050215438 = if ((wx_T1Xtn_AddressStr == ""))
9191 then $Tuple2(0, 0)
9292 else {
9393 let wx_T1Xtn_Address = addressFromStringValue(wx_T1Xtn_AddressStr)
9494 let wx_T1Xtn_XTNx6 = assetBalance(wx_T1Xtn_Address, xtnId)
9595 let wx_T1Xtn_T1x8 = assetBalance(wx_T1Xtn_Address, tokenId)
9696 $Tuple2(fraction((wx_T1Xtn_XTNx6 * (tokenDecimals[tokenNum] / 1000000)), xtnUsdPriceX6, wx_T1Xtn_T1x8), wx_T1Xtn_T1x8)
9797 }
98- let wx_T1Xtn_T1UsdPriceX6 = $t043594776._1
99- let wx_T1Xtn_Weight = $t043594776._2
98+ let wx_T1Xtn_T1UsdPriceX6 = $t050215438._1
99+ let wx_T1Xtn_Weight = $t050215438._2
100100 let swop_T1Xtn_AddressStr = tokenSwopPools[tokenNum]
101- let $t048355437 = if ((swop_T1Xtn_AddressStr == ""))
101+ let $t054976099 = if ((swop_T1Xtn_AddressStr == ""))
102102 then $Tuple2(0, 0)
103103 else {
104104 let swop_T1Xtn_Address = addressFromStringValue(swop_T1Xtn_AddressStr)
105105 let swop_T1Xtn_T1XtnPriceX6 = asInt(invoke(swopRestDapp, "calcGetAmountCPMM", [swop_T1Xtn_AddressStr, "3P88qk1KzF1BKjD7fC7LjNVAKM4ezff5WE6", tokenIdStr, tokenDecimals[tokenNum]], nil))
106106 let swop_T1Xtn_T1UsdPriceX6 = fraction(swop_T1Xtn_T1XtnPriceX6, xtnUsdPriceX6, 1000000)
107107 let swop_T1Xtn_Weight = getIntegerValue(swop_T1Xtn_Address, "A_asset_balance")
108108 $Tuple2(swop_T1Xtn_T1UsdPriceX6, swop_T1Xtn_Weight)
109109 }
110- let swop_T1Xtn_T1UsdPriceX6 = $t048355437._1
111- let swop_T1Xtn_Weight = $t048355437._2
110+ let swop_T1Xtn_T1UsdPriceX6 = $t054976099._1
111+ let swop_T1Xtn_Weight = $t054976099._2
112112 let W = ((wx_T1Waves_Weight + wx_T1Xtn_Weight) + swop_T1Xtn_Weight)
113113 let T1UsdPriceX6 = ((fraction(wx_T1Waves_T1UsdPriceX6, wx_T1Waves_Weight, W) + fraction(wx_T1Xtn_T1UsdPriceX6, wx_T1Xtn_Weight, W)) + fraction(swop_T1Xtn_T1UsdPriceX6, swop_T1Xtn_Weight, W))
114114 let debug = ((((((("T1UsdPriceX6=" + toString(T1UsdPriceX6)) + " wx_T1Waves_T1UsdPriceX6=") + toString(wx_T1Waves_T1UsdPriceX6)) + " wx_T1Xtn_T1UsdPriceX6=") + toString(wx_T1Xtn_T1UsdPriceX6)) + " swop_T1Xtn_T1UsdPriceX6=") + toString(swop_T1Xtn_T1UsdPriceX6))
115115 $Tuple2(T1UsdPriceX6, debug)
116116 }
117117
118118
119119 let lastUpdatedBlockKey = "lastUpdatedBlock"
120120
121121 let n15List = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
122122
123123 func getPriceDataKey (block,tokenId) = ((("block_" + toString(block)) + "_") + tokenId)
124124
125125
126126 func getPriceValue (tokenId,block) = valueOrElse(getInteger(orderbookOracle, getPriceDataKey(block, tokenId)), 0)
127127
128128
129129 func getLastUpdatedBlock () = {
130130 let lastUpdatedBlock = valueOrErrorMessage(getInteger(orderbookOracle, lastUpdatedBlockKey), "Last updated block key not found")
131131 if ((0 >= lastUpdatedBlock))
132132 then throw("Invalid block value")
133133 else if (((height - lastUpdatedBlock) > 10))
134134 then throw("The price has not been updated for a long time")
135135 else lastUpdatedBlock
136136 }
137137
138138
139139 func getPriceList (accum,next) = {
140- let $t068536894 = accum
141- let result = $t068536894._1
142- let block = $t068536894._2
143- let tokenId = $t068536894._3
144- let sum = $t068536894._4
140+ let $t075157556 = accum
141+ let result = $t075157556._1
142+ let block = $t075157556._2
143+ let tokenId = $t075157556._3
144+ let sum = $t075157556._4
145145 let priceValue = getPriceValue(tokenId, block)
146146 let nextBlock = (block - next)
147147 if ((priceValue > 0))
148148 then $Tuple4((result :+ priceValue), nextBlock, tokenId, (sum + priceValue))
149149 else $Tuple4(result, nextBlock, tokenId, sum)
150150 }
151151
152152
153153 func getOrderbookTwap (tokenIdStr) = {
154154 let inv = invoke(this, "getOrderbookTwap15", [tokenIdStr, false], nil)
155155 if ((inv == inv))
156156 then {
157157 let orderbookPrice = {
158158 let @ = inv
159159 if ($isInstanceOf(@, "(Int, Boolean)"))
160160 then @
161161 else throw(($getType(@) + " couldn't be cast to (Int, Boolean)"))
162162 }
163163 if ((orderbookPrice == orderbookPrice))
164164 then orderbookPrice
165165 else throw("Strict value is not equal to itself.")
166166 }
167167 else throw("Strict value is not equal to itself.")
168168 }
169169
170170
171171 @Callable(i)
172172 func getOrderbookTwap15 (tokenId,debug) = {
173173 let lastUpdatedBlock = getLastUpdatedBlock()
174174 let tuple = {
175175 let $l = n15List
176176 let $s = size($l)
177177 let $acc0 = $Tuple4(nil, lastUpdatedBlock, tokenId, 0)
178178 func $f0_1 ($a,$i) = if (($i >= $s))
179179 then $a
180180 else getPriceList($a, $l[$i])
181181
182182 func $f0_2 ($a,$i) = if (($i >= $s))
183183 then $a
184184 else throw("List size exceeds 15")
185185
186186 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
187187 }
188188 let pricesList = tuple._1
189189 let sum = tuple._4
190190 let average = fraction(sum, 1000000, fraction(size(pricesList), 1000000, 1))
191191 let isLocked = valueOrElse(getBoolean(orderbookOracle, (tokenId + "_locked")), false)
192192 if (debug)
193193 then throw((((((((("average: " + toString(average)) + ", isLocked: ") + toString(isLocked)) + ", ") + "priceListSize: ") + toString(size(pricesList))) + ", sum: ") + toString(sum)))
194194 else $Tuple2(nil, $Tuple2(average, isLocked))
195195 }
196196
197197
198198
199199 @Callable(i)
200200 func updateTokenPrice (assetIdStr) = {
201201 let wavesPrice = getIntegerValue(doraAddress, "%s%s__price__WAVES-USDT")
202202 let tokenPrice = if ((assetIdStr == "WAVES"))
203203 then wavesPrice
204204 else if ((assetIdStr == xtnIdStr))
205205 then xtnUsdPriceX6
206206 else {
207207 let priceInPools = getTokenPrice(value(indexOf(tokenIds, assetIdStr)), wavesPrice)._1
208208 if ((assetIdStr == ethStr))
209209 then {
210210 let ethPrice = getIntegerValue(doraAddress, "%s%s__price__ETH-USDT")
211211 let comp = fraction(priceInPools, 10000, ethPrice)
212212 if (if ((comp > (10000 - oracleTolerance)))
213213 then ((10000 + oracleTolerance) > comp)
214214 else false)
215215 then priceInPools
216216 else throw("internal ETH price doesn't match with global price")
217217 }
218218 else priceInPools
219219 }
220220 let lastTwap = tryGetInteger((assetIdStr + "_twap5B"))
221221 let lastHeight = tryGetInteger((assetIdStr + "_lastBlock"))
222222 if ((i.originCaller != backendCaller))
223223 then throw("available for backend only")
224224 else if ((2 > (height - lastHeight)))
225225 then nil
226226 else if (if ((lastHeight == 0))
227227 then true
228228 else ((height - lastHeight) > 30))
229229 then [IntegerEntry((assetIdStr + "_twap5B"), tokenPrice), IntegerEntry((assetIdStr + "_lastBlock"), height), StringEntry((assetIdStr + "_lastPrices"), toString(tokenPrice))]
230230 else {
231231 let lastPrices = split(getStringValue((assetIdStr + "_lastPrices")), ",")
232232 let newPrices = toString(tokenPrice) :: lastPrices
233233 func sumHandler (accum,next) = (accum + parseIntValue(next))
234234
235235 let newTwap = ({
236236 let $l = newPrices
237237 let $s = size($l)
238238 let $acc0 = 0
239239 func $f0_1 ($a,$i) = if (($i >= $s))
240240 then $a
241241 else sumHandler($a, $l[$i])
242242
243243 func $f0_2 ($a,$i) = if (($i >= $s))
244244 then $a
245245 else throw("List size exceeds 6")
246246
247247 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
248248 } / size(newPrices))
249249 let orderbookTwapResult = getOrderbookTwap(assetIdStr)
250250 if ((orderbookTwapResult == orderbookTwapResult))
251251 then {
252- let $t096169674 = orderbookTwapResult
253- let orderbookTwap = $t096169674._1
254- let orderbookLocked = $t096169674._2
252+ let $t01027810336 = orderbookTwapResult
253+ let orderbookTwap = $t01027810336._1
254+ let orderbookLocked = $t01027810336._2
255255 let twapsComparison = fraction(newTwap, 10000, orderbookTwap)
256256 let twapsSimilar = if ((twapsComparison > (10000 - oracleTolerance)))
257257 then ((10000 + oracleTolerance) > twapsComparison)
258258 else false
259259 let riskLevel = if (twapsSimilar)
260260 then 1
261261 else (2 + (if (orderbookLocked)
262262 then 1
263263 else 0))
264264 if (!(twapsSimilar))
265265 then [IntegerEntry((assetIdStr + "_riskLevel"), riskLevel)]
266266 else if ((5 >= size(newPrices)))
267267 then {
268268 let updPrices = makeString(newPrices, ",")
269269 [IntegerEntry((assetIdStr + "_twap5B"), newTwap), IntegerEntry((assetIdStr + "_lastBlock"), height), StringEntry((assetIdStr + "_lastPrices"), updPrices), IntegerEntry((assetIdStr + "_riskLevel"), riskLevel)]
270270 }
271271 else {
272272 let updPrices = makeString(removeByIndex(newPrices, (size(newPrices) - 1)), ",")
273273 [IntegerEntry((assetIdStr + "_twap5B"), newTwap), IntegerEntry((assetIdStr + "_lastBlock"), height), StringEntry((assetIdStr + "_lastPrices"), updPrices), IntegerEntry((assetIdStr + "_riskLevel"), riskLevel)]
274274 }
275275 }
276276 else throw("Strict value is not equal to itself.")
277277 }
278278 }
279279
280280
281281
282282 @Callable(i)
283283 func updateTokens () = if ((i.originCaller != backendCaller))
284284 then throw("available for backend only")
285285 else {
286286 let i1 = invoke(this, "updateTokenPrice", ["WAVES"], nil)
287287 if ((i1 == i1))
288288 then {
289289 let i2 = invoke(this, "updateTokenPrice", [xtnIdStr], nil)
290290 if ((i2 == i2))
291291 then {
292292 func callu (accum,next) = {
293293 let i3 = invoke(this, "updateTokenPrice", [next], nil)
294294 if ((i3 == i3))
295295 then nil
296296 else throw("Strict value is not equal to itself.")
297297 }
298298
299299 let $l = tokenIds
300300 let $s = size($l)
301301 let $acc0 = nil
302302 func $f0_1 ($a,$i) = if (($i >= $s))
303303 then $a
304304 else callu($a, $l[$i])
305305
306306 func $f0_2 ($a,$i) = if (($i >= $s))
307307 then $a
308308 else throw("List size exceeds 12")
309309
310310 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12)
311311 }
312312 else throw("Strict value is not equal to itself.")
313313 }
314314 else throw("Strict value is not equal to itself.")
315315 }
316316
317317
318318 @Verifier(tx)
319319 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
320320

github/deemru/w8io/3ef1775 
71.00 ms