tx · 7xFchdX4EnwvMVvBUeWubHZG7qJkxL2xTEv8YKoYsvAt

3Mvv4Qmio7P85Br7t9httZfdaLBXzrXM538:  -0.01400000 Waves

2024.04.01 18:26 [3043891] smart account 3Mvv4Qmio7P85Br7t9httZfdaLBXzrXM538 > SELF 0.00000000 Waves

{ "type": 13, "id": "7xFchdX4EnwvMVvBUeWubHZG7qJkxL2xTEv8YKoYsvAt", "fee": 1400000, "feeAssetId": null, "timestamp": 1711985198050, "version": 2, "chainId": 84, "sender": "3Mvv4Qmio7P85Br7t9httZfdaLBXzrXM538", "senderPublicKey": "6g48VSdUCvENRsNXmBm7cF8aTARRXFVoDpemzzjC69xH", "proofs": [ "5EhRDL8tBA9ptcMsRKn894Q2ZQUMJeNhKtX2cyJBFUpmRRo8epg2nyn2mE6koRVhfhnbDf82txjf28CMmdQaVHgf" ], "script": "base64:BwI9CAISBAoCCAgSBQoDCAgIEgcKBQgICAgIEgUKAwgICBIFCgMICAgSCQoHCAgICAgICBIFCgMICAgSAwoBCCcACVNFUEFSQVRPUgICX18ADEtFWV9NVUxUSVNJRwIITVVMVElTSUcACktFWV9TVEFUVVMCBlNUQVRVUwAIS0VZX0lOSVQCBElOSVQAFEtFWV9HQVRFV0FZX0NPTlRSQUNUAhBHQVRFV0FZX0NPTlRSQUNUABRLRVlfTUFUQ0hFUl9DT05UUkFDVAIQTUFUQ0hFUl9DT05UUkFDVAAQS0VZX1VTRVJfQkFMQU5DRQIMVVNFUl9CQUxBTkNFABFLRVlfVE9UQUxfQkFMQU5DRQINVE9UQUxfQkFMQU5DRQAPS0VZX0dMT0JBTF9SQVRFAgtHTE9CQUxfUkFURQALU1BPVF9XQUxMRVQCBFNQT1QAEldJVEhEUkFXQUxTX1dBTExFVAILV0lUSERSQVdBTFMAC1pFUk9fQklHSU5UCQC2AgEAAAAKT05FX0JJR0lOVAkAtgIBAAEADlBFUkNFTlRfRkFDVE9SCQC2AgEAgICQu7rWrfANARBfdmFsaWRhdGVBZGRyZXNzAghhZGRyZXNzXwRlcnJfBAckbWF0Y2gwCQCmCAEFCGFkZHJlc3NfAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAGCQACAQUEZXJyXwEPX3ZhbGlkYXRlQmlnSW50AwR2YWxfDmxvd2VyQm91bmRhcnlfBGVycl8DCQC/AgIFDmxvd2VyQm91bmRhcnlfBQR2YWxfCQACAQUEZXJyXwYBD192YWxpZGF0ZVN0cmluZwIEdmFsXwRlcnJfAwMJAGcCAAAJALECAQUEdmFsXwYJAQhjb250YWlucwIFBHZhbF8FCVNFUEFSQVRPUgkAAgEFBGVycl8GARRfdmFsaWRhdGVTdHJpbmdFcXVhbAMFdmFsMV8FdmFsMl8EZXJyXwMJAQIhPQIFBXZhbDFfBQV2YWwyXwkAAgEFBGVycl8GAQlfbG9hZEluaXQABAckbWF0Y2gwCQCgCAEFCEtFWV9JTklUAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWEFByRtYXRjaDAFAWEHAQlfc2F2ZUluaXQBB2lzSW5pdF8JAMwIAgkBDEJvb2xlYW5FbnRyeQIFCEtFWV9JTklUBQdpc0luaXRfBQNuaWwBDV9sb2FkTXVsdGlzaWcABAckbWF0Y2gwCQCiCAEFDEtFWV9NVUxUSVNJRwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQ1fc2F2ZU11bHRpc2lnAQltdWx0aXNpZ18JAMwIAgkBC1N0cmluZ0VudHJ5AgUMS0VZX01VTFRJU0lHCQClCAEFCW11bHRpc2lnXwUDbmlsARRfbG9hZEdhdGV3YXlDb250cmFjdAAEByRtYXRjaDAJAKIIAQUUS0VZX0dBVEVXQVlfQ09OVFJBQ1QDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAEUX3NhdmVHYXRld2F5Q29udHJhY3QBEGdhdGV3YXlDb250cmFjdF8JAMwIAgkBC1N0cmluZ0VudHJ5AgUUS0VZX0dBVEVXQVlfQ09OVFJBQ1QJAKUIAQUQZ2F0ZXdheUNvbnRyYWN0XwUDbmlsARRfbG9hZE1hdGNoZXJDb250cmFjdAAEByRtYXRjaDAJAKIIAQUUS0VZX01BVENIRVJfQ09OVFJBQ1QDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAEUX3NhdmVNYXRjaGVyQ29udHJhY3QBEG1hdGNoZXJDb250cmFjdF8JAMwIAgkBC1N0cmluZ0VudHJ5AgUUS0VZX01BVENIRVJfQ09OVFJBQ1QJAKUIAQUQbWF0Y2hlckNvbnRyYWN0XwUDbmlsARBfbG9hZFVzZXJCYWxhbmNlAwV1c2VyXwd3YWxsZXRfCWN1cnJlbmN5XwQHJG1hdGNoMAkAoggBCQC5CQIJAMwIAgUQS0VZX1VTRVJfQkFMQU5DRQkAzAgCBQV1c2VyXwkAzAgCBQd3YWxsZXRfCQDMCAIFCWN1cnJlbmN5XwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBAZzdHJ1Y3QJALUJAgUBYQUJU0VQQVJBVE9SCQCUCgIJAKcDAQkAkQMCBQZzdHJ1Y3QAAAkApwMBCQCRAwIFBnN0cnVjdAABCQCUCgIFC1pFUk9fQklHSU5UBQ5QRVJDRU5UX0ZBQ1RPUgEQX3NhdmVVc2VyQmFsYW5jZQUFdXNlcl8Hd2FsbGV0XwljdXJyZW5jeV8IYmFsYW5jZV8FcmF0ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFEEtFWV9VU0VSX0JBTEFOQ0UJAMwIAgUFdXNlcl8JAMwIAgUHd2FsbGV0XwkAzAgCBQljdXJyZW5jeV8FA25pbAUJU0VQQVJBVE9SCQC5CQIJAMwIAgkApgMBBQhiYWxhbmNlXwkAzAgCCQCmAwEFBXJhdGVfBQNuaWwFCVNFUEFSQVRPUgUDbmlsARFfbG9hZFRvdGFsQmFsYW5jZQEJY3VycmVuY3lfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBRFLRVlfVE9UQUxfQkFMQU5DRQkAzAgCBQljdXJyZW5jeV8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAERX3NhdmVUb3RhbEJhbGFuY2UCCWN1cnJlbmN5XwhiYWxhbmNlXwkAzAgCCQELU3RyaW5nRW50cnkCCQC5CQIJAMwIAgURS0VZX1RPVEFMX0JBTEFOQ0UJAMwIAgUJY3VycmVuY3lfBQNuaWwFCVNFUEFSQVRPUgkApgMBBQhiYWxhbmNlXwUDbmlsAQ9fbG9hZEdsb2JhbFJhdGUCB3dhbGxldF8JY3VycmVuY3lfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBQ9LRVlfR0xPQkFMX1JBVEUJAMwIAgUHd2FsbGV0XwkAzAgCBQljdXJyZW5jeV8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQ5QRVJDRU5UX0ZBQ1RPUgEPX3NhdmVHbG9iYWxSYXRlAwd3YWxsZXRfCWN1cnJlbmN5XwVyYXRlXwkAzAgCCQELU3RyaW5nRW50cnkCCQC5CQIJAMwIAgUPS0VZX0dMT0JBTF9SQVRFCQDMCAIFB3dhbGxldF8JAMwIAgUJY3VycmVuY3lfBQNuaWwFCVNFUEFSQVRPUgkApgMBBQVyYXRlXwUDbmlsARFfb25seVRoaXNDb250cmFjdAEHY2FsbGVyXwMJAQIhPQIFB2NhbGxlcl8FBHRoaXMJAAIBAhlfb25seVRoaXNDb250cmFjdDogcmV2ZXJ0BgEQX3doZW5NdWx0aXNpZ1NldAADCQAAAgkBDV9sb2FkTXVsdGlzaWcACQEHQWRkcmVzcwEBAAkAAgECGF93aGVuTXVsdGlzaWdTZXQ6IHJldmVydAYBE193aGVuTm90SW5pdGlhbGl6ZWQAAwkBCV9sb2FkSW5pdAAJAAIBAhtfd2hlbk5vdEluaXRpYWxpemVkOiByZXZlcnQGARBfd2hlbkluaXRpYWxpemVkAAMJAQEhAQkBCV9sb2FkSW5pdAAJAAIBAhhfd2hlbkluaXRpYWxpemVkOiByZXZlcnQGARBfdmFsaWRhdGVHYXRld2F5AgZjYWxsZXIEZXJyXwMJAQIhPQIJARRfbG9hZEdhdGV3YXlDb250cmFjdAAFBmNhbGxlcgkAAgEFBGVycl8GARBfdmFsaWRhdGVNYXRjaGVyAgZjYWxsZXIEZXJyXwMJAQIhPQIJARRfbG9hZE1hdGNoZXJDb250cmFjdAAFBmNhbGxlcgkAAgEFBGVycl8GAQpfYmFsYW5jZU9mAwV1c2VyXwd3YWxsZXRfCWN1cnJlbmN5XwQLJHQwNDgyNDQ5MDUJARBfbG9hZFVzZXJCYWxhbmNlAwUFdXNlcl8FB3dhbGxldF8FCWN1cnJlbmN5XwQPcHJldlVzZXJCYWxhbmNlCAULJHQwNDgyNDQ5MDUCXzEEDHByZXZVc2VyUmF0ZQgFCyR0MDQ4MjQ0OTA1Al8yBAtjdXJyZW50UmF0ZQkBD19sb2FkR2xvYmFsUmF0ZQIFB3dhbGxldF8FCWN1cnJlbmN5XwkAlAoCCQC9AgQFD3ByZXZVc2VyQmFsYW5jZQULY3VycmVudFJhdGUFDHByZXZVc2VyUmF0ZQUERE9XTgULY3VycmVudFJhdGUIAWkBBGluaXQCEGdhdGV3YXlDb250cmFjdF8QbWF0Y2hlckNvbnRyYWN0XwQDZXJyAwMDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQETX3doZW5Ob3RJbml0aWFsaXplZAAHCQEQX3doZW5NdWx0aXNpZ1NldAAHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFEGdhdGV3YXlDb250cmFjdF8CHWluaXQ6IGludmFsaWQgZ2F0ZXdheUNvbnRyYWN0BwkBEF92YWxpZGF0ZUFkZHJlc3MCBRBtYXRjaGVyQ29udHJhY3RfAh1pbml0OiBpbnZhbGlkIG1hdGNoZXJDb250cmFjdAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkAzggCCQDOCAIJAQlfc2F2ZUluaXQBBgkBFF9zYXZlR2F0ZXdheUNvbnRyYWN0AQkBEUBleHRyTmF0aXZlKDEwNjIpAQUQZ2F0ZXdheUNvbnRyYWN0XwkBFF9zYXZlTWF0Y2hlckNvbnRyYWN0AQkBEUBleHRyTmF0aXZlKDEwNjIpAQUQbWF0Y2hlckNvbnRyYWN0XwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdkZXBvc2l0AwV1c2VyXwljdXJyZW5jeV8HYW1vdW50XwQGYW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQUHYW1vdW50XwIXZGVwb3NpdDogYW1vdW50IG5vdCBpbnQEA2VycgMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBD192YWxpZGF0ZVN0cmluZwIFBXVzZXJfAhVkZXBvc2l0OiBpbnZhbGlkIHVzZXIHCQEPX3ZhbGlkYXRlU3RyaW5nAgUJY3VycmVuY3lfAhlkZXBvc2l0OiBpbnZhbGlkIGN1cnJlbmN5BwkBD192YWxpZGF0ZUJpZ0ludAMFBmFtb3VudAULWkVST19CSUdJTlQCF2RlcG9zaXQ6IGludmFsaWQgYW1vdW50BwkBEF92YWxpZGF0ZUdhdGV3YXkCCAUBaQZjYWxsZXICF2RlcG9zaXQ6IGludmFsaWQgY2FsbGVyBwMJAAACBQNlcnIFA2VycgQLJHQwNjEzNjYyMDcJAQpfYmFsYW5jZU9mAwUFdXNlcl8FC1NQT1RfV0FMTEVUBQljdXJyZW5jeV8EC3VzZXJCYWxhbmNlCAULJHQwNjEzNjYyMDcCXzEECHVzZXJSYXRlCAULJHQwNjEzNjYyMDcCXzIJAJQKAgkAzggCCQEQX3NhdmVVc2VyQmFsYW5jZQUFBXVzZXJfBQtTUE9UX1dBTExFVAUJY3VycmVuY3lfCQC3AgIFC3VzZXJCYWxhbmNlBQZhbW91bnQFCHVzZXJSYXRlCQERX3NhdmVUb3RhbEJhbGFuY2UCBQljdXJyZW5jeV8JALcCAgkBEV9sb2FkVG90YWxCYWxhbmNlAQUJY3VycmVuY3lfBQZhbW91bnQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQaW50ZXJuYWxUcmFuc2ZlcgUFdXNlcl8Nc291cmNlV2FsbGV0Xw10YXJnZXRXYWxsZXRfCWN1cnJlbmN5XwdhbW91bnRfBAZhbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBBQdhbW91bnRfAiBpbnRlcm5hbFRyYW5zZmVyOiBhbW91bnQgbm90IGludAQDZXJyAwMDAwMDCQEQX3doZW5Jbml0aWFsaXplZAAJAQ9fdmFsaWRhdGVTdHJpbmcCBQV1c2VyXwIeaW50ZXJuYWxUcmFuc2ZlcjogaW52YWxpZCB1c2VyBwkBD192YWxpZGF0ZVN0cmluZwIFDXNvdXJjZVdhbGxldF8CJmludGVybmFsVHJhbnNmZXI6IGludmFsaWQgc291cmNlV2FsbGV0BwkBD192YWxpZGF0ZVN0cmluZwIFDXRhcmdldFdhbGxldF8CJmludGVybmFsVHJhbnNmZXI6IGludmFsaWQgdGFyZ2V0V2FsbGV0BwkBD192YWxpZGF0ZVN0cmluZwIFCWN1cnJlbmN5XwIiaW50ZXJuYWxUcmFuc2ZlcjogaW52YWxpZCBjdXJyZW5jeQcJAQ9fdmFsaWRhdGVCaWdJbnQDBQZhbW91bnQFC1pFUk9fQklHSU5UAiBpbnRlcm5hbFRyYW5zZmVyOiBpbnZhbGlkIGFtb3VudAcDCQAAAgUNdGFyZ2V0V2FsbGV0XwUSV0lUSERSQVdBTFNfV0FMTEVUCQEQX3ZhbGlkYXRlR2F0ZXdheQIIBQFpBmNhbGxlcgIjaW50ZXJuYWxUcmFuc2ZlcjogaW52YWxpZCBndyBjYWxsZXIJARBfdmFsaWRhdGVNYXRjaGVyAggFAWkGY2FsbGVyAihpbnRlcm5hbFRyYW5zZmVyOiBpbnZhbGlkIG1hdGNoZXIgY2FsbGVyBwMJAAACBQNlcnIFA2VycgQLJHQwNzMxMTczOTYJAQpfYmFsYW5jZU9mAwUFdXNlcl8FDXNvdXJjZVdhbGxldF8FCWN1cnJlbmN5XwQRdXNlclNvdXJjZUJhbGFuY2UIBQskdDA3MzExNzM5NgJfMQQOdXNlclNvdXJjZVJhdGUIBQskdDA3MzExNzM5NgJfMgQLJHQwNzQwMTc0ODYJAQpfYmFsYW5jZU9mAwUFdXNlcl8FDXRhcmdldFdhbGxldF8FCWN1cnJlbmN5XwQRdXNlclRhcmdldEJhbGFuY2UIBQskdDA3NDAxNzQ4NgJfMQQOdXNlclRhcmdldFJhdGUIBQskdDA3NDAxNzQ4NgJfMgQUbmV3VXNlclNvdXJjZUJhbGFuY2UJALgCAgURdXNlclNvdXJjZUJhbGFuY2UFBmFtb3VudAQUbmV3VXNlclRhcmdldEJhbGFuY2UJALcCAgURdXNlclRhcmdldEJhbGFuY2UFBmFtb3VudAQEZXJyMQkBD192YWxpZGF0ZUJpZ0ludAMFFG5ld1VzZXJTb3VyY2VCYWxhbmNlBQtaRVJPX0JJR0lOVAIlaW50ZXJuYWxUcmFuc2ZlcjogaW5zdWZmaWNpZW50IGFtb3VudAMJAAACBQRlcnIxBQRlcnIxCQCUCgIJAM4IAgkBEF9zYXZlVXNlckJhbGFuY2UFBQV1c2VyXwUNc291cmNlV2FsbGV0XwUJY3VycmVuY3lfBRRuZXdVc2VyU291cmNlQmFsYW5jZQUOdXNlclNvdXJjZVJhdGUJARBfc2F2ZVVzZXJCYWxhbmNlBQUFdXNlcl8FDXRhcmdldFdhbGxldF8FCWN1cnJlbmN5XwUUbmV3VXNlclRhcmdldEJhbGFuY2UFDnVzZXJUYXJnZXRSYXRlBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3AwV1c2VyXwljdXJyZW5jeV8HYW1vdW50XwQGYW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQUHYW1vdW50XwIYd2l0aGRyYXc6IGFtb3VudCBub3QgaW50BANlcnIDAwMDCQEQX3doZW5Jbml0aWFsaXplZAAJAQ9fdmFsaWRhdGVTdHJpbmcCBQV1c2VyXwIWd2l0aGRyYXc6IGludmFsaWQgdXNlcgcJAQ9fdmFsaWRhdGVTdHJpbmcCBQljdXJyZW5jeV8CGndpdGhkcmF3OiBpbnZhbGlkIGN1cnJlbmN5BwkBD192YWxpZGF0ZUJpZ0ludAMFBmFtb3VudAULWkVST19CSUdJTlQCGHdpdGhkcmF3OiBpbnZhbGlkIGFtb3VudAcJARBfdmFsaWRhdGVHYXRld2F5AggFAWkGY2FsbGVyAhh3aXRoZHJhdzogaW52YWxpZCBjYWxsZXIHAwkAAAIFA2VycgUDZXJyBAskdDA4NDI4ODUwNgkBCl9iYWxhbmNlT2YDBQV1c2VyXwUSV0lUSERSQVdBTFNfV0FMTEVUBQljdXJyZW5jeV8EC3VzZXJCYWxhbmNlCAULJHQwODQyODg1MDYCXzEECHVzZXJSYXRlCAULJHQwODQyODg1MDYCXzIEDm5ld1VzZXJCYWxhbmNlCQC4AgIFC3VzZXJCYWxhbmNlBQZhbW91bnQED25ld1RvdGFsQmFsYW5jZQkAuAICCQERX2xvYWRUb3RhbEJhbGFuY2UBBQljdXJyZW5jeV8FBmFtb3VudAQEZXJyMQMJAQ9fdmFsaWRhdGVCaWdJbnQDBQ5uZXdVc2VyQmFsYW5jZQULWkVST19CSUdJTlQCHXdpdGhkcmF3OiBpbnN1ZmZpY2llbnQgYW1vdW50CQEPX3ZhbGlkYXRlQmlnSW50AwUPbmV3VG90YWxCYWxhbmNlBQtaRVJPX0JJR0lOVAIgd2l0aGRyYXc6IG5lZ2F0aXZlIHRvdGFsIGJhbGFuY2UHAwkAAAIFBGVycjEFBGVycjEJAJQKAgkAzggCCQEQX3NhdmVVc2VyQmFsYW5jZQUFBXVzZXJfBRJXSVRIRFJBV0FMU19XQUxMRVQFCWN1cnJlbmN5XwUObmV3VXNlckJhbGFuY2UFCHVzZXJSYXRlCQERX3NhdmVUb3RhbEJhbGFuY2UCBQljdXJyZW5jeV8FD25ld1RvdGFsQmFsYW5jZQUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBhZGRTdGFraW5nUmV3YXJkAwd3YWxsZXRfCWN1cnJlbmN5XwdhbW91bnRfCQCUCgIFA25pbAUEdW5pdAFpARBleHRlcm5hbFRyYW5zZmVyBwd3YWxsZXRfCWN1cnJlbmN5XwVmcm9tXwN0b18HYW1vdW50XwRmZWVfBGRleF8EBmFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEFB2Ftb3VudF8CIGV4dGVybmFsVHJhbnNmZXI6IGFtb3VudCBub3QgaW50BANmZWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBBQRmZWVfAh1leHRlcm5hbFRyYW5zZmVyOiBmZWUgbm90IGludAQDZXJyAwMDAwMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBD192YWxpZGF0ZVN0cmluZwIFB3dhbGxldF8CIGV4dGVybmFsVHJhbnNmZXI6IGludmFsaWQgd2FsbGV0BwkBD192YWxpZGF0ZVN0cmluZwIFCWN1cnJlbmN5XwIiZXh0ZXJuYWxUcmFuc2ZlcjogaW52YWxpZCBjdXJyZW5jeQcJAQ9fdmFsaWRhdGVTdHJpbmcCBQVmcm9tXwIeZXh0ZXJuYWxUcmFuc2ZlcjogaW52YWxpZCBmcm9tBwkBD192YWxpZGF0ZVN0cmluZwIFA3RvXwIcZXh0ZXJuYWxUcmFuc2ZlcjogaW52YWxpZCB0bwcJAQ9fdmFsaWRhdGVCaWdJbnQDBQZhbW91bnQFC1pFUk9fQklHSU5UAiBleHRlcm5hbFRyYW5zZmVyOiBpbnZhbGlkIGFtb3VudAcJAQ9fdmFsaWRhdGVCaWdJbnQDBQNmZWUFC1pFUk9fQklHSU5UAh1leHRlcm5hbFRyYW5zZmVyOiBpbnZhbGlkIGZlZQcJAQ9fdmFsaWRhdGVTdHJpbmcCBQRkZXhfAh1leHRlcm5hbFRyYW5zZmVyOiBpbnZhbGlkIGRleAcJARBfdmFsaWRhdGVNYXRjaGVyAggFAWkGY2FsbGVyAihleHRlcm5hbFRyYW5zZmVyOiBpbnZhbGlkIG1hdGNoZXIgY2FsbGVyBwMJAAACBQNlcnIFA2VycgQNJHQwMTAxMTAxMDE4OQkBCl9iYWxhbmNlT2YDBQVmcm9tXwUHd2FsbGV0XwUJY3VycmVuY3lfBBF1c2VyU291cmNlQmFsYW5jZQgFDSR0MDEwMTEwMTAxODkCXzEEDnVzZXJTb3VyY2VSYXRlCAUNJHQwMTAxMTAxMDE4OQJfMgQNJHQwMTAxOTQxMDI3MQkBCl9iYWxhbmNlT2YDBQN0b18FB3dhbGxldF8FCWN1cnJlbmN5XwQRdXNlclRhcmdldEJhbGFuY2UIBQ0kdDAxMDE5NDEwMjcxAl8xBA51c2VyVGFyZ2V0UmF0ZQgFDSR0MDEwMTk0MTAyNzECXzIEDSR0MDEwMjc2MTAzNTIJAQpfYmFsYW5jZU9mAwUEZGV4XwUHd2FsbGV0XwUJY3VycmVuY3lfBBBkZXhUYXJnZXRCYWxhbmNlCAUNJHQwMTAyNzYxMDM1MgJfMQQNZGV4VGFyZ2V0UmF0ZQgFDSR0MDEwMjc2MTAzNTICXzIEFG5ld1VzZXJTb3VyY2VCYWxhbmNlCQC4AgIJALgCAgURdXNlclNvdXJjZUJhbGFuY2UFBmFtb3VudAUDZmVlBBRuZXdVc2VyVGFyZ2V0QmFsYW5jZQkAtwICBRF1c2VyVGFyZ2V0QmFsYW5jZQUGYW1vdW50BBNuZXdEZXhUYXJnZXRCYWxhbmNlCQC3AgIFEGRleFRhcmdldEJhbGFuY2UFA2ZlZQQEZXJyMQkBD192YWxpZGF0ZUJpZ0ludAMFFG5ld1VzZXJTb3VyY2VCYWxhbmNlBQtaRVJPX0JJR0lOVAIlZXh0ZXJuYWxUcmFuc2ZlcjogaW5zdWZmaWNpZW50IGFtb3VudAMJAAACBQRlcnIxBQRlcnIxCQCUCgIJAM4IAgkAzggCCQEQX3NhdmVVc2VyQmFsYW5jZQUFBWZyb21fBQd3YWxsZXRfBQljdXJyZW5jeV8FFG5ld1VzZXJTb3VyY2VCYWxhbmNlBQ51c2VyU291cmNlUmF0ZQkBEF9zYXZlVXNlckJhbGFuY2UFBQN0b18FB3dhbGxldF8FCWN1cnJlbmN5XwUUbmV3VXNlclRhcmdldEJhbGFuY2UFDnVzZXJUYXJnZXRSYXRlCQEQX3NhdmVVc2VyQmFsYW5jZQUFBGRleF8FB3dhbGxldF8FCWN1cnJlbmN5XwUTbmV3RGV4VGFyZ2V0QmFsYW5jZQUNZGV4VGFyZ2V0UmF0ZQUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5nZXRVc2VyQmFsYW5jZQMFdXNlcl8Hd2FsbGV0XwljdXJyZW5jeV8EDSR0MDExMzg0MTE0NTEJAQpfYmFsYW5jZU9mAwUFdXNlcl8FB3dhbGxldF8FCWN1cnJlbmN5XwQLdXNlckJhbGFuY2UIBQ0kdDAxMTM4NDExNDUxAl8xBAh1c2VyUmF0ZQgFDSR0MDExMzg0MTE0NTECXzIJAJQKAgUDbmlsCQCmAwEFC3VzZXJCYWxhbmNlAWkBC3NldE11bHRpc2lnAQltdWx0aXNpZ18EA2VycgMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF92YWxpZGF0ZUFkZHJlc3MCBQltdWx0aXNpZ18CHXNldE11bHRpc2lnOiBpbnZhbGlkIG11bHRpc2lnBwMJAAACBQNlcnIFA2VycgkAlAoCCQENX3NhdmVNdWx0aXNpZwEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCW11bHRpc2lnXwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAEByRtYXRjaDAFAnR4BAckbWF0Y2gxCQCiCAEFDEtFWV9NVUxUSVNJRwMJAAECBQckbWF0Y2gxAgZTdHJpbmcECG11bHRpc2lnBQckbWF0Y2gxCQELdmFsdWVPckVsc2UCCQCbCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCG11bHRpc2lnCQC5CQIJAMwIAgUKS0VZX1NUQVRVUwkAzAgCCQClCAEFBHRoaXMJAMwIAgkA2AQBCAUCdHgCaWQFA25pbAUJU0VQQVJBVE9SBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleaxQe6Y=", "height": 3043891, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 7 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = "__"
5+
6+let b = "MULTISIG"
7+
8+let c = "STATUS"
9+
10+let d = "INIT"
11+
12+let e = "GATEWAY_CONTRACT"
13+
14+let f = "MATCHER_CONTRACT"
15+
16+let g = "USER_BALANCE"
17+
18+let h = "TOTAL_BALANCE"
19+
20+let i = "GLOBAL_RATE"
21+
22+let j = "SPOT"
23+
24+let k = "WITHDRAWALS"
25+
26+let l = toBigInt(0)
27+
28+let m = toBigInt(1)
29+
30+let n = toBigInt(1000000000000000000)
31+
32+func o (p,q) = {
33+ let r = addressFromString(p)
34+ if ($isInstanceOf(r, "Address"))
35+ then {
36+ let s = r
37+ true
38+ }
39+ else throw(q)
40+ }
41+
42+
43+func t (u,v,q) = if ((v > u))
44+ then throw(q)
45+ else true
46+
47+
48+func w (u,q) = if (if ((0 >= size(u)))
49+ then true
50+ else contains(u, a))
51+ then throw(q)
52+ else true
53+
54+
55+func x (y,z,q) = if ((y != z))
56+ then throw(q)
57+ else true
58+
59+
60+func A () = {
61+ let r = getBoolean(d)
62+ if ($isInstanceOf(r, "Boolean"))
63+ then {
64+ let s = r
65+ s
66+ }
67+ else false
68+ }
69+
70+
71+func B (C) = [BooleanEntry(d, C)]
72+
73+
74+func D () = {
75+ let r = getString(b)
76+ if ($isInstanceOf(r, "String"))
77+ then {
78+ let s = r
79+ addressFromStringValue(s)
80+ }
81+ else Address(base58'')
82+ }
83+
84+
85+func E (F) = [StringEntry(b, toString(F))]
86+
87+
88+func G () = {
89+ let r = getString(e)
90+ if ($isInstanceOf(r, "String"))
91+ then {
92+ let s = r
93+ addressFromStringValue(s)
94+ }
95+ else Address(base58'')
96+ }
97+
98+
99+func H (I) = [StringEntry(e, toString(I))]
100+
101+
102+func J () = {
103+ let r = getString(f)
104+ if ($isInstanceOf(r, "String"))
105+ then {
106+ let s = r
107+ addressFromStringValue(s)
108+ }
109+ else Address(base58'')
110+ }
111+
112+
113+func K (L) = [StringEntry(f, toString(L))]
114+
115+
116+func M (N,O,P) = {
117+ let r = getString(makeString([g, N, O, P], a))
118+ if ($isInstanceOf(r, "String"))
119+ then {
120+ let s = r
121+ let Q = split(s, a)
122+ $Tuple2(parseBigIntValue(Q[0]), parseBigIntValue(Q[1]))
123+ }
124+ else $Tuple2(l, n)
125+ }
126+
127+
128+func R (N,O,P,S,T) = [StringEntry(makeString([g, N, O, P], a), makeString([toString(S), toString(T)], a))]
129+
130+
131+func U (P) = {
132+ let r = getString(makeString([h, P], a))
133+ if ($isInstanceOf(r, "String"))
134+ then {
135+ let s = r
136+ parseBigIntValue(s)
137+ }
138+ else l
139+ }
140+
141+
142+func V (P,S) = [StringEntry(makeString([h, P], a), toString(S))]
143+
144+
145+func W (O,P) = {
146+ let r = getString(makeString([i, O, P], a))
147+ if ($isInstanceOf(r, "String"))
148+ then {
149+ let s = r
150+ parseBigIntValue(s)
151+ }
152+ else n
153+ }
154+
155+
156+func X (O,P,T) = [StringEntry(makeString([i, O, P], a), toString(T))]
157+
158+
159+func Y (Z) = if ((Z != this))
160+ then throw("_onlyThisContract: revert")
161+ else true
162+
163+
164+func aa () = if ((D() == Address(base58'')))
165+ then throw("_whenMultisigSet: revert")
166+ else true
167+
168+
169+func ab () = if (A())
170+ then throw("_whenNotInitialized: revert")
171+ else true
172+
173+
174+func ac () = if (!(A()))
175+ then throw("_whenInitialized: revert")
176+ else true
177+
178+
179+func ad (ae,q) = if ((G() != ae))
180+ then throw(q)
181+ else true
182+
183+
184+func af (ae,q) = if ((J() != ae))
185+ then throw(q)
186+ else true
187+
188+
189+func ag (N,O,P) = {
190+ let ah = M(N, O, P)
191+ let ai = ah._1
192+ let aj = ah._2
193+ let ak = W(O, P)
194+ $Tuple2(fraction(ai, ak, aj, DOWN), ak)
195+ }
196+
197+
198+@Callable(al)
199+func init (I,L) = {
200+ let am = if (if (if (if (Y(al.caller))
201+ then ab()
202+ else false)
203+ then aa()
204+ else false)
205+ then o(I, "init: invalid gatewayContract")
206+ else false)
207+ then o(L, "init: invalid matcherContract")
208+ else false
209+ if ((am == am))
210+ then $Tuple2(((B(true) ++ H(addressFromStringValue(I))) ++ K(addressFromStringValue(L))), unit)
211+ else throw("Strict value is not equal to itself.")
212+ }
213+
214+
215+
216+@Callable(al)
217+func deposit (N,P,an) = {
218+ let ao = valueOrErrorMessage(parseBigInt(an), "deposit: amount not int")
219+ let am = if (if (if (if (ac())
220+ then w(N, "deposit: invalid user")
221+ else false)
222+ then w(P, "deposit: invalid currency")
223+ else false)
224+ then t(ao, l, "deposit: invalid amount")
225+ else false)
226+ then ad(al.caller, "deposit: invalid caller")
227+ else false
228+ if ((am == am))
229+ then {
230+ let ap = ag(N, j, P)
231+ let aq = ap._1
232+ let ar = ap._2
233+ $Tuple2((R(N, j, P, (aq + ao), ar) ++ V(P, (U(P) + ao))), unit)
234+ }
235+ else throw("Strict value is not equal to itself.")
236+ }
237+
238+
239+
240+@Callable(al)
241+func internalTransfer (N,as,at,P,an) = {
242+ let ao = valueOrErrorMessage(parseBigInt(an), "internalTransfer: amount not int")
243+ let am = if (if (if (if (if (if (ac())
244+ then w(N, "internalTransfer: invalid user")
245+ else false)
246+ then w(as, "internalTransfer: invalid sourceWallet")
247+ else false)
248+ then w(at, "internalTransfer: invalid targetWallet")
249+ else false)
250+ then w(P, "internalTransfer: invalid currency")
251+ else false)
252+ then t(ao, l, "internalTransfer: invalid amount")
253+ else false)
254+ then if ((at == k))
255+ then ad(al.caller, "internalTransfer: invalid gw caller")
256+ else af(al.caller, "internalTransfer: invalid matcher caller")
257+ else false
258+ if ((am == am))
259+ then {
260+ let au = ag(N, as, P)
261+ let av = au._1
262+ let aw = au._2
263+ let ax = ag(N, at, P)
264+ let ay = ax._1
265+ let az = ax._2
266+ let aA = (av - ao)
267+ let aB = (ay + ao)
268+ let aC = t(aA, l, "internalTransfer: insufficient amount")
269+ if ((aC == aC))
270+ then $Tuple2((R(N, as, P, aA, aw) ++ R(N, at, P, aB, az)), unit)
271+ else throw("Strict value is not equal to itself.")
272+ }
273+ else throw("Strict value is not equal to itself.")
274+ }
275+
276+
277+
278+@Callable(al)
279+func withdraw (N,P,an) = {
280+ let ao = valueOrErrorMessage(parseBigInt(an), "withdraw: amount not int")
281+ let am = if (if (if (if (ac())
282+ then w(N, "withdraw: invalid user")
283+ else false)
284+ then w(P, "withdraw: invalid currency")
285+ else false)
286+ then t(ao, l, "withdraw: invalid amount")
287+ else false)
288+ then ad(al.caller, "withdraw: invalid caller")
289+ else false
290+ if ((am == am))
291+ then {
292+ let aD = ag(N, k, P)
293+ let aq = aD._1
294+ let ar = aD._2
295+ let aE = (aq - ao)
296+ let aF = (U(P) - ao)
297+ let aC = if (t(aE, l, "withdraw: insufficient amount"))
298+ then t(aF, l, "withdraw: negative total balance")
299+ else false
300+ if ((aC == aC))
301+ then $Tuple2((R(N, k, P, aE, ar) ++ V(P, aF)), unit)
302+ else throw("Strict value is not equal to itself.")
303+ }
304+ else throw("Strict value is not equal to itself.")
305+ }
306+
307+
308+
309+@Callable(al)
310+func addStakingReward (O,P,an) = $Tuple2(nil, unit)
311+
312+
313+
314+@Callable(al)
315+func externalTransfer (O,P,aG,aH,an,aI,aJ) = {
316+ let ao = valueOrErrorMessage(parseBigInt(an), "externalTransfer: amount not int")
317+ let aK = valueOrErrorMessage(parseBigInt(aI), "externalTransfer: fee not int")
318+ let am = if (if (if (if (if (if (if (if (ac())
319+ then w(O, "externalTransfer: invalid wallet")
320+ else false)
321+ then w(P, "externalTransfer: invalid currency")
322+ else false)
323+ then w(aG, "externalTransfer: invalid from")
324+ else false)
325+ then w(aH, "externalTransfer: invalid to")
326+ else false)
327+ then t(ao, l, "externalTransfer: invalid amount")
328+ else false)
329+ then t(aK, l, "externalTransfer: invalid fee")
330+ else false)
331+ then w(aJ, "externalTransfer: invalid dex")
332+ else false)
333+ then af(al.caller, "externalTransfer: invalid matcher caller")
334+ else false
335+ if ((am == am))
336+ then {
337+ let aL = ag(aG, O, P)
338+ let av = aL._1
339+ let aw = aL._2
340+ let aM = ag(aH, O, P)
341+ let ay = aM._1
342+ let az = aM._2
343+ let aN = ag(aJ, O, P)
344+ let aO = aN._1
345+ let aP = aN._2
346+ let aA = ((av - ao) - aK)
347+ let aB = (ay + ao)
348+ let aQ = (aO + aK)
349+ let aC = t(aA, l, "externalTransfer: insufficient amount")
350+ if ((aC == aC))
351+ then $Tuple2(((R(aG, O, P, aA, aw) ++ R(aH, O, P, aB, az)) ++ R(aJ, O, P, aQ, aP)), unit)
352+ else throw("Strict value is not equal to itself.")
353+ }
354+ else throw("Strict value is not equal to itself.")
355+ }
356+
357+
358+
359+@Callable(al)
360+func getUserBalance (N,O,P) = {
361+ let aR = ag(N, O, P)
362+ let aq = aR._1
363+ let ar = aR._2
364+ $Tuple2(nil, toString(aq))
365+ }
366+
367+
368+
369+@Callable(al)
370+func setMultisig (F) = {
371+ let am = if (Y(al.caller))
372+ then o(F, "setMultisig: invalid multisig")
373+ else false
374+ if ((am == am))
375+ then $Tuple2(E(addressFromStringValue(F)), unit)
376+ else throw("Strict value is not equal to itself.")
377+ }
378+
379+
380+@Verifier(aS)
381+func aT () = {
382+ let r = aS
383+ let aU = getString(b)
384+ if ($isInstanceOf(aU, "String"))
385+ then {
386+ let aV = aU
387+ valueOrElse(getBoolean(addressFromStringValue(aV), makeString([c, toString(this), toBase58String(aS.id)], a)), false)
388+ }
389+ else sigVerify(aS.bodyBytes, aS.proofs[0], aS.senderPublicKey)
390+ }
391+

github/deemru/w8io/3ef1775 
30.06 ms