tx · 6TPcFqN6ay2f4VK454xT1rFybx3knUMM4fLH3MMANeE8
3MxN27tyS9DuFsab1QSfM5Q2BfauiyVCr4M: -0.03700000 Waves
2023.04.17 20:05 [2538841] smart account 3MxN27tyS9DuFsab1QSfM5Q2BfauiyVCr4M > SELF 0.00000000 Waves
{
"type": 13,
"id": "6TPcFqN6ay2f4VK454xT1rFybx3knUMM4fLH3MMANeE8",
"fee": 3700000,
"feeAssetId": null,
"timestamp": 1681751195328,
"version": 2,
"chainId": 84,
"sender": "3MxN27tyS9DuFsab1QSfM5Q2BfauiyVCr4M",
"senderPublicKey": "6PjNBLx8VTTNLWTS5y6zecyVfYCUC9ZCrAULFnLQU4XM",
"proofs": [
"MqjTTAoitV1Mzfjk9HkLU2c2o3ikkNoDtVnnFKnJrmbTzXKT6rR3ogiRd7LwyGTZsCxpEaxTFw1s1JMA6pkcEeB"
],
"script": "base64:BgIXCAISABIECgIICBIDCgEIEgASBAoCCAErABBrX3JlZl9saW5rX293bmVyAhBrX3JlZl9saW5rX293bmVyABZrX3JlZl9saW5rX293bmVyX2NvdW50AhZrX3JlZl9saW5rX293bmVyX2NvdW50ABBrX3JlZl9vd25lcl9saW5rAhBrX3JlZl9vd25lcl9saW5rAAprX3JlZmVycmVyAgprX3JlZmVycmVyAAhrX2FjdGl2ZQIIa19hY3RpdmUADGtfZGVmYXVsdEZlZQIMa19kZWZhdWx0RmVlABRrX3JlZmVycmVyX3JlZl9jb3VudAIUa19yZWZlcnJlcl9yZWZfY291bnQAEWtfcmVmZXJyZXJfZWFybmVkAhFrX3JlZmVycmVyX2Vhcm5lZAASa19yZWZlcnJlcl9jbGFpbWVkAhJrX3JlZmVycmVyX2NsYWltZWQADWtfaW5pdGlhbGl6ZWQCDWtfaW5pdGlhbGl6ZWQAFGtfY29vcmRpbmF0b3JBZGRyZXNzAhRrX2Nvb3JkaW5hdG9yQWRkcmVzcwAHa19jaGlsZAIHa19jaGlsZAASa19nb3Zlcm5hbmNlX2Fzc2V0AgtrX2dvdl9hc3NldAAPa19hZG1pbl9hZGRyZXNzAg9rX2FkbWluX2FkZHJlc3MABWtfYW1tAgVrX2FtbQAOa19zd2FwX2FkZHJlc3MCDmtfc3dhcF9hZGRyZXNzAQ50b0NvbXBvc2l0ZUtleQIEX2tleQhfYWRkcmVzcwkArAICCQCsAgIFBF9rZXkCAV8FCF9hZGRyZXNzARJnZXRSZWZlcnJlckxpbmtLZXkBBV9saW5rCQCsAgIJAKwCAgUQa19yZWZfbGlua19vd25lcgIBXwUFX2xpbmsBDmdldFJlZmVycmVyS2V5AQdfdHJhZGVyCQCsAgIJAKwCAgUKa19yZWZlcnJlcgIBXwUHX3RyYWRlcgEWZ2V0UmVmZXJyZXJSZWZDb3VudEtleQEJX3JlZmVycmVyCQCsAgIJAKwCAgUUa19yZWZlcnJlcl9yZWZfY291bnQCAV8FCV9yZWZlcnJlcgEXZ2V0UmVmZXJyZXJMaW5rQ291bnRLZXkBCV9yZWZlcnJlcgkArAICCQCsAgIFFmtfcmVmX2xpbmtfb3duZXJfY291bnQCAV8FCV9yZWZlcnJlcgEUZ2V0UmVmZXJyZXJMaW5rS2V5QXQCCV9yZWZlcnJlcgdfbGlua0lkCQCsAgIJAKwCAgkArAICCQCsAgIFEGtfcmVmX293bmVyX2xpbmsCAV8FCV9yZWZlcnJlcgIBXwkApAMBBQdfbGlua0lkARRnZXRSZWZlcnJlckVhcm5lZEtleQEJX3JlZmVycmVyCQCsAgIJAKwCAgURa19yZWZlcnJlcl9lYXJuZWQCAV8FCV9yZWZlcnJlcgEVZ2V0UmVmZXJyZXJDbGFpbWVkS2V5AQlfcmVmZXJyZXIJAKwCAgkArAICBRJrX3JlZmVycmVyX2NsYWltZWQCAV8FCV9yZWZlcnJlcgEMZ2V0QWN0aXZlS2V5AQdfdHJhZGVyCQCsAgIJAKwCAgUIa19hY3RpdmUCAV8FB190cmFkZXIBC2Nvb3JkaW5hdG9yAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwITQ29vcmRpbmF0b3Igbm90IHNldAIbQ29vcmRpbmF0b3IgYWRkcmVzcyBpbnZhbGlkAQxhZG1pbkFkZHJlc3MACQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQELY29vcmRpbmF0b3IABQ9rX2FkbWluX2FkZHJlc3MCFUFkbWluIGFkZHJlc3Mgbm90IHNldAEPZ292ZXJuYW5jZUFzc2V0AAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUSa19nb3Zlcm5hbmNlX2Fzc2V0AhhHb3Zlcm5hbmNlIGFzc2V0IG5vdCBzZXQBC3N3YXBBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQELY29vcmRpbmF0b3IABQ5rX3N3YXBfYWRkcmVzcwIUU3dhcCBhZGRyZXNzIG5vdCBzZXQCFFN3YXAgYWRkcmVzcyBpbnZhbGlkAQtpc1doaXRlbGlzdAEIX2FkZHJlc3MED3Jvb3RDb29yZGluYXRvcgkBC2Nvb3JkaW5hdG9yAAQOYW1tQ29vcmRpbmF0b3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQhfYWRkcmVzcwUUa19jb29yZGluYXRvckFkZHJlc3MJAKwCAgIkTm8gY29vcmRpbmF0b3Igc2V0IGZvciBwb3NzaWJsZSBBTU0gBQhfYWRkcmVzcwQVYW1tQ29vcmRpbmF0b3JIYXZlQW1tCQELdmFsdWVPckVsc2UCCQCbCAIFDmFtbUNvb3JkaW5hdG9yCQEOdG9Db21wb3NpdGVLZXkCBQVrX2FtbQUIX2FkZHJlc3MHBBJpc1ZhbGlkQ29vcmRpbmF0b3IDCQAAAgUPcm9vdENvb3JkaW5hdG9yBQ5hbW1Db29yZGluYXRvcgYJAQt2YWx1ZU9yRWxzZQIJAJsIAgUPcm9vdENvb3JkaW5hdG9yCQEOdG9Db21wb3NpdGVLZXkCBQdrX2NoaWxkCQClCAEFDmFtbUNvb3JkaW5hdG9yBwMFFWFtbUNvb3JkaW5hdG9ySGF2ZUFtbQUSaXNWYWxpZENvb3JkaW5hdG9yBwAMREVDSU1BTF9VTklUCQBoAgABCQBoAgkAaAIJAGgCCQBoAgkAaAIACgAKAAoACgAKAAoBBG11bGQCAl94Al95CQBuBAUCX3gFAl95BQxERUNJTUFMX1VOSVQFCEhBTEZFVkVOAQNpbnQBAWsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQFrCQCsAgICDW5vIHZhbHVlIGZvciAFAWsBC2luaXRpYWxpemVkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ1rX2luaXRpYWxpemVkBwEPZ2V0TGlua1JlZmVycmVyAQVfbGluawkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQESZ2V0UmVmZXJyZXJMaW5rS2V5AQUFX2xpbmsCAAELZ2V0UmVmZXJyZXIBB190cmFkZXIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmdldFJlZmVycmVyS2V5AQUHX3RyYWRlcgIAAQppc1JlZmVycmFsAQdfdHJhZGVyCQECIT0CCQELZ2V0UmVmZXJyZXIBBQdfdHJhZGVyAgABC2lzRmlyc3RUaW1lAQdfdHJhZGVyCQAAAgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQEMZ2V0QWN0aXZlS2V5AQUHX3RyYWRlcgcHAQ1nZXREZWZhdWx0RmVlAAkBA2ludAEFDGtfZGVmYXVsdEZlZQETZ2V0UmVmZXJyZXJSZWZDb3VudAEJX3JlZmVycmVyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARZnZXRSZWZlcnJlclJlZkNvdW50S2V5AQUJX3JlZmVycmVyAAABFGdldFJlZmVycmVyTGlua0NvdW50AQlfcmVmZXJyZXIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBF2dldFJlZmVycmVyTGlua0NvdW50S2V5AQUJX3JlZmVycmVyAAABEWdldFJlZmVycmVyRWFybmVkAQlfcmVmZXJyZXIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBFGdldFJlZmVycmVyRWFybmVkS2V5AQUJX3JlZmVycmVyAAABEmdldFJlZmVycmVyQ2xhaW1lZAEJX3JlZmVycmVyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARVnZXRSZWZlcnJlckNsYWltZWRLZXkBBQlfcmVmZXJyZXIAAAUBaQESY3JlYXRlUmVmZXJyYWxMaW5rAAQDcmF3CQCsAgIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBCAUBaQ9jYWxsZXJQdWJsaWNLZXkEBWJ5dGVzCQCbAwEFA3JhdwQEbG9uZwkA2AQBCQD3AwEFBWJ5dGVzBAVzaG9ydAkArwICBQRsb25nAAoEA2tleQkBEmdldFJlZmVycmVyTGlua0tleQEFBXNob3J0BAZsaW5rSWQJAGQCCQEUZ2V0UmVmZXJyZXJMaW5rQ291bnQBCQClCAEIBQFpBmNhbGxlcgABAwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwUDa2V5CQACAQIqU2hvcnQgbGluayBleGlzdHMsIHRyeSBnZW5lcmF0aW5nIGl0IGFnYWluCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRnZXRSZWZlcnJlckxpbmtLZXlBdAIJAKUIAQgFAWkGY2FsbGVyBQZsaW5rSWQFBXNob3J0CQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQkApQgBCAUBaQZjYWxsZXIFA25pbAFpARVhY2NlcHRQYXltZW50V2l0aExpbmsCB190cmFkZXIIX3JlZkxpbmsECl9yYXdBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BANhbW0JAKUIAQgFAWkGY2FsbGVyAwMDCQEBIQEJAQtpc1doaXRlbGlzdAEFA2FtbQYJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQEhAQkBC2luaXRpYWxpemVkAAkAAgECJEludmFsaWQgYWNjZXB0UGF5bWVudFdpdGhMaW5rIHBhcmFtcwQLX2lzUmVmZXJyYWwJAQppc1JlZmVycmFsAQUHX3RyYWRlcgQMX2lzRmlyc3RUaW1lCQELaXNGaXJzdFRpbWUBBQdfdHJhZGVyAwMFC19pc1JlZmVycmFsBgUMX2lzRmlyc3RUaW1lAwULX2lzUmVmZXJyYWwECHJlZmVycmVyCQELZ2V0UmVmZXJyZXIBBQdfdHJhZGVyBANmZWUJAQ1nZXREZWZhdWx0RmVlAAQQYW1vdW50VG9SZWZlcnJlcgkBBG11bGQCBQpfcmF3QW1vdW50BQNmZWUECmJlZm9yZVN3YXAJAPAHAgUEdGhpcwkBD2dvdmVybmFuY2VBc3NldAADCQAAAgUKYmVmb3JlU3dhcAUKYmVmb3JlU3dhcAQGZG9Td2FwCQD8BwQJAQtzd2FwQWRkcmVzcwACBHN3YXAJAMwIAgkA2AQBCQEPZ292ZXJuYW5jZUFzc2V0AAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBRBhbW91bnRUb1JlZmVycmVyBQNuaWwDCQAAAgUGZG9Td2FwBQZkb1N3YXAECWFmdGVyU3dhcAkA8AcCBQR0aGlzCQEPZ292ZXJuYW5jZUFzc2V0AAMJAAACBQlhZnRlclN3YXAFCWFmdGVyU3dhcAQTYW1vdW50R292VG9SZWZlcnJlcgkAZQIFCWFmdGVyU3dhcAUKYmVmb3JlU3dhcAMJAAACBRNhbW91bnRHb3ZUb1JlZmVycmVyBRNhbW91bnRHb3ZUb1JlZmVycmVyCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARRnZXRSZWZlcnJlckVhcm5lZEtleQEFCHJlZmVycmVyCQBkAgkBEWdldFJlZmVycmVyRWFybmVkAQUIcmVmZXJyZXIFE2Ftb3VudEdvdlRvUmVmZXJyZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFEGFtb3VudFRvUmVmZXJyZXIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDbmlsBRBhbW91bnRUb1JlZmVycmVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAhyZWZlcnJlcgkBD2dldExpbmtSZWZlcnJlcgEFCF9yZWZMaW5rAwMJAAACBQhyZWZlcnJlcgIABgkAAAIFCHJlZmVycmVyBQdfdHJhZGVyCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEMZ2V0QWN0aXZlS2V5AQUHX3RyYWRlcgYFA25pbAAABANmZWUJAQ1nZXREZWZhdWx0RmVlAAQQYW1vdW50VG9SZWZlcnJlcgkBBG11bGQCBQpfcmF3QW1vdW50BQNmZWUECmJlZm9yZVN3YXAJAPAHAgUEdGhpcwkBD2dvdmVybmFuY2VBc3NldAADCQAAAgUKYmVmb3JlU3dhcAUKYmVmb3JlU3dhcAQGZG9Td2FwCQD8BwQJAQtzd2FwQWRkcmVzcwACBHN3YXAJAMwIAgkA2AQBCQEPZ292ZXJuYW5jZUFzc2V0AAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBRBhbW91bnRUb1JlZmVycmVyBQNuaWwDCQAAAgUGZG9Td2FwBQZkb1N3YXAECWFmdGVyU3dhcAkA8AcCBQR0aGlzCQEPZ292ZXJuYW5jZUFzc2V0AAMJAAACBQlhZnRlclN3YXAFCWFmdGVyU3dhcAQTYW1vdW50R292VG9SZWZlcnJlcgkAZQIFCWFmdGVyU3dhcAUKYmVmb3JlU3dhcAMJAAACBRNhbW91bnRHb3ZUb1JlZmVycmVyBRNhbW91bnRHb3ZUb1JlZmVycmVyCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZnZXRSZWZlcnJlclJlZkNvdW50S2V5AQUIcmVmZXJyZXIJAGQCCQETZ2V0UmVmZXJyZXJSZWZDb3VudAEFCHJlZmVycmVyAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJARRnZXRSZWZlcnJlckVhcm5lZEtleQEFCHJlZmVycmVyCQBkAgkBEWdldFJlZmVycmVyRWFybmVkAQUIcmVmZXJyZXIFE2Ftb3VudEdvdlRvUmVmZXJyZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmdldFJlZmVycmVyS2V5AQUHX3RyYWRlcgUIcmVmZXJyZXIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQxnZXRBY3RpdmVLZXkBBQdfdHJhZGVyBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUQYW1vdW50VG9SZWZlcnJlcggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNuaWwFEGFtb3VudFRvUmVmZXJyZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA25pbAAAAWkBDWFjY2VwdFBheW1lbnQBB190cmFkZXIECl9yYXdBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BANhbW0JAKUIAQgFAWkGY2FsbGVyAwMDCQEBIQEJAQtpc1doaXRlbGlzdAEFA2FtbQYJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQEhAQkBC2luaXRpYWxpemVkAAkAAgECHEludmFsaWQgYWNjZXB0UGF5bWVudCBwYXJhbXMEC19pc1JlZmVycmFsCQEKaXNSZWZlcnJhbAEFB190cmFkZXIDBQtfaXNSZWZlcnJhbAQIcmVmZXJyZXIJAQtnZXRSZWZlcnJlcgEFB190cmFkZXIEA2ZlZQkBDWdldERlZmF1bHRGZWUABBBhbW91bnRUb1JlZmVycmVyCQEEbXVsZAIFCl9yYXdBbW91bnQFA2ZlZQQKYmVmb3JlU3dhcAkA8AcCBQR0aGlzCQEPZ292ZXJuYW5jZUFzc2V0AAMJAAACBQpiZWZvcmVTd2FwBQpiZWZvcmVTd2FwBAZkb1N3YXAJAPwHBAkBC3N3YXBBZGRyZXNzAAIEc3dhcAkAzAgCCQDYBAEJAQ9nb3Zlcm5hbmNlQXNzZXQACQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFEGFtb3VudFRvUmVmZXJyZXIFA25pbAMJAAACBQZkb1N3YXAFBmRvU3dhcAQJYWZ0ZXJTd2FwCQDwBwIFBHRoaXMJAQ9nb3Zlcm5hbmNlQXNzZXQAAwkAAAIFCWFmdGVyU3dhcAUJYWZ0ZXJTd2FwBBNhbW91bnRHb3ZUb1JlZmVycmVyCQBlAgUJYWZ0ZXJTd2FwBQpiZWZvcmVTd2FwAwkAAAIFE2Ftb3VudEdvdlRvUmVmZXJyZXIFE2Ftb3VudEdvdlRvUmVmZXJyZXIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGdldFJlZmVycmVyRWFybmVkS2V5AQUIcmVmZXJyZXIJAGQCCQERZ2V0UmVmZXJyZXJFYXJuZWQBBQhyZWZlcnJlcgUTYW1vdW50R292VG9SZWZlcnJlcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUQYW1vdW50VG9SZWZlcnJlcggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNuaWwFEGFtb3VudFRvUmVmZXJyZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA25pbAAAAWkBDGNsYWltUmV3YXJkcwAECHJlZmVycmVyCQClCAEIBQFpBmNhbGxlcgQMdG90YWxSZXdhcmRzCQERZ2V0UmVmZXJyZXJFYXJuZWQBBQhyZWZlcnJlcgQMdG90YWxDbGFpbWVkCQESZ2V0UmVmZXJyZXJDbGFpbWVkAQUIcmVmZXJyZXIEB3RvQ2xhaW0JAGUCBQx0b3RhbFJld2FyZHMFDHRvdGFsQ2xhaW1lZAMJAGYCBQd0b0NsYWltAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJARVnZXRSZWZlcnJlckNsYWltZWRLZXkBBQhyZWZlcnJlcgkAZAIJARJnZXRSZWZlcnJlckNsYWltZWQBBQhyZWZlcnJlcgUHdG9DbGFpbQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB3RvQ2xhaW0JAQ9nb3Zlcm5hbmNlQXNzZXQABQNuaWwJAAIBAhBOb3RoaW5nIHRvIGNsYWltAWkBCmluaXRpYWxpemUCDF9jb29yZGluYXRvcgtfZGVmYXVsdEZlZQMDCQELaW5pdGlhbGl6ZWQABgkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIUVW5hYmxlIHRvIGluaXRpYWxpemUJAMwIAgkBC1N0cmluZ0VudHJ5AgUUa19jb29yZGluYXRvckFkZHJlc3MJAKUIAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUMX2Nvb3JkaW5hdG9yCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrX2RlZmF1bHRGZWUFC19kZWZhdWx0RmVlCQDMCAIJAQxCb29sZWFuRW50cnkCBQ1rX2luaXRpYWxpemVkBgUDbmlsAQJ0eAEGdmVyaWZ5AAQOY29vcmRpbmF0b3JTdHIJAJ0IAgUEdGhpcwUUa19jb29yZGluYXRvckFkZHJlc3MDCQEJaXNEZWZpbmVkAQUOY29vcmRpbmF0b3JTdHIEBWFkbWluCQCdCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEFDmNvb3JkaW5hdG9yU3RyBQ9rX2FkbWluX2FkZHJlc3MDCQEJaXNEZWZpbmVkAQUFYWRtaW4JAQt2YWx1ZU9yRWxzZQIJAJsIAgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUFYWRtaW4JAKwCAgkArAICCQCsAgICB3N0YXR1c18JAKUIAQUEdGhpcwIBXwkA2AQBCAUCdHgCaWQHCQACAQIudW5hYmxlIHRvIHZlcmlmeTogYWRtaW4gbm90IHNldCBpbiBjb29yZGluYXRvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleR6+FKw=",
"height": 2538841,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: A8RoaNxuSWcg7X6G1ECVao2vPNb8X7HoNqjsizy2tZpq
Next: none
Diff:
Old | New | | Differences |
---|
13 | 13 | | |
---|
14 | 14 | | let f = "k_defaultFee" |
---|
15 | 15 | | |
---|
16 | | - | let g = "k_swapAddress" |
---|
| 16 | + | let g = "k_referrer_ref_count" |
---|
17 | 17 | | |
---|
18 | | - | let h = "k_referrer_ref_count" |
---|
| 18 | + | let h = "k_referrer_earned" |
---|
19 | 19 | | |
---|
20 | | - | let i = "k_referrer_earned" |
---|
| 20 | + | let i = "k_referrer_claimed" |
---|
21 | 21 | | |
---|
22 | | - | let j = "k_referrer_claimed" |
---|
| 22 | + | let j = "k_initialized" |
---|
23 | 23 | | |
---|
24 | | - | let k = "k_initialized" |
---|
| 24 | + | let k = "k_coordinatorAddress" |
---|
25 | 25 | | |
---|
26 | | - | let l = "k_coordinatorAddress" |
---|
| 26 | + | let l = "k_child" |
---|
27 | 27 | | |
---|
28 | 28 | | let m = "k_gov_asset" |
---|
29 | 29 | | |
---|
30 | | - | let n = "k_quote_asset" |
---|
| 30 | + | let n = "k_admin_address" |
---|
31 | 31 | | |
---|
32 | | - | let o = "k_admin_public_key" |
---|
| 32 | + | let o = "k_amm" |
---|
33 | 33 | | |
---|
34 | | - | let p = "k_admin_address" |
---|
| 34 | + | let p = "k_swap_address" |
---|
35 | 35 | | |
---|
36 | | - | let q = "k_amm" |
---|
37 | | - | |
---|
38 | | - | func r (s,t) = ((s + "_") + t) |
---|
| 36 | + | func q (r,s) = ((r + "_") + s) |
---|
39 | 37 | | |
---|
40 | 38 | | |
---|
41 | | - | func u (v) = ((a + "_") + v) |
---|
| 39 | + | func t (u) = ((a + "_") + u) |
---|
42 | 40 | | |
---|
43 | 41 | | |
---|
44 | | - | func w (x) = ((d + "_") + x) |
---|
| 42 | + | func v (w) = ((d + "_") + w) |
---|
45 | 43 | | |
---|
46 | 44 | | |
---|
47 | | - | func y (z) = ((h + "_") + z) |
---|
| 45 | + | func x (y) = ((g + "_") + y) |
---|
48 | 46 | | |
---|
49 | 47 | | |
---|
50 | | - | func A (z) = ((b + "_") + z) |
---|
| 48 | + | func z (y) = ((b + "_") + y) |
---|
51 | 49 | | |
---|
52 | 50 | | |
---|
53 | | - | func B (z,C) = ((((c + "_") + z) + "_") + toString(C)) |
---|
| 51 | + | func A (y,B) = ((((c + "_") + y) + "_") + toString(B)) |
---|
54 | 52 | | |
---|
55 | 53 | | |
---|
56 | | - | func D (z) = ((i + "_") + z) |
---|
| 54 | + | func C (y) = ((h + "_") + y) |
---|
57 | 55 | | |
---|
58 | 56 | | |
---|
59 | | - | func E (z) = ((j + "_") + z) |
---|
| 57 | + | func D (y) = ((i + "_") + y) |
---|
60 | 58 | | |
---|
61 | 59 | | |
---|
62 | | - | func F (x) = ((e + "_") + x) |
---|
| 60 | + | func E (w) = ((e + "_") + w) |
---|
63 | 61 | | |
---|
64 | 62 | | |
---|
65 | | - | func G () = valueOrErrorMessage(addressFromString(getStringValue(this, l)), "Coordinator not set") |
---|
| 63 | + | func F () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, k), "Coordinator not set")), "Coordinator address invalid") |
---|
66 | 64 | | |
---|
67 | 65 | | |
---|
68 | | - | func H () = fromBase58String(getStringValue(G(), o)) |
---|
| 66 | + | func G () = addressFromString(valueOrErrorMessage(getString(F(), n), "Admin address not set")) |
---|
69 | 67 | | |
---|
70 | 68 | | |
---|
71 | | - | func I () = addressFromString(getStringValue(G(), p)) |
---|
| 69 | + | func H () = fromBase58String(valueOrErrorMessage(getString(F(), m), "Governance asset not set")) |
---|
72 | 70 | | |
---|
73 | 71 | | |
---|
74 | | - | func J () = fromBase58String(getStringValue(G(), m)) |
---|
| 72 | + | func I () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(F(), p), "Swap address not set")), "Swap address invalid") |
---|
75 | 73 | | |
---|
76 | 74 | | |
---|
77 | | - | func K () = fromBase58String(getStringValue(G(), n)) |
---|
| 75 | + | func J (s) = { |
---|
| 76 | + | let K = F() |
---|
| 77 | + | let L = addressFromStringValue(valueOrErrorMessage(getString(addressFromStringValue(s), k), ("No coordinator set for possible AMM " + s))) |
---|
| 78 | + | let M = valueOrElse(getBoolean(L, q(o, s)), false) |
---|
| 79 | + | let N = if ((K == L)) |
---|
| 80 | + | then true |
---|
| 81 | + | else valueOrElse(getBoolean(K, q(l, toString(L))), false) |
---|
| 82 | + | if (M) |
---|
| 83 | + | then N |
---|
| 84 | + | else false |
---|
| 85 | + | } |
---|
78 | 86 | | |
---|
79 | 87 | | |
---|
80 | | - | func L (t) = valueOrElse(getBoolean(G(), r(q, t)), false) |
---|
| 88 | + | let O = (1 * (((((10 * 10) * 10) * 10) * 10) * 10)) |
---|
| 89 | + | |
---|
| 90 | + | func P (Q,R) = fraction(Q, R, O, HALFEVEN) |
---|
81 | 91 | | |
---|
82 | 92 | | |
---|
83 | | - | let M = (1 * (((((10 * 10) * 10) * 10) * 10) * 10)) |
---|
84 | | - | |
---|
85 | | - | func N () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, g), "Now swap address")), "Invalid swap address") |
---|
| 93 | + | func S (T) = valueOrErrorMessage(getInteger(this, T), ("no value for " + T)) |
---|
86 | 94 | | |
---|
87 | 95 | | |
---|
88 | | - | func O (P) = (P / 100) |
---|
| 96 | + | func U () = valueOrElse(getBoolean(this, j), false) |
---|
89 | 97 | | |
---|
90 | 98 | | |
---|
91 | | - | func Q (P) = (P * 100) |
---|
| 99 | + | func V (u) = valueOrElse(getString(this, t(u)), "") |
---|
92 | 100 | | |
---|
93 | 101 | | |
---|
94 | | - | func R (S,T) = fraction(S, M, T, HALFEVEN) |
---|
| 102 | + | func W (w) = valueOrElse(getString(this, v(w)), "") |
---|
95 | 103 | | |
---|
96 | 104 | | |
---|
97 | | - | func U (S,T) = fraction(S, T, M, HALFEVEN) |
---|
| 105 | + | func X (w) = (W(w) != "") |
---|
98 | 106 | | |
---|
99 | 107 | | |
---|
100 | | - | func V (S) = if ((S > 0)) |
---|
101 | | - | then S |
---|
102 | | - | else -(S) |
---|
| 108 | + | func Y (w) = (valueOrElse(getBoolean(this, E(w)), false) == false) |
---|
103 | 109 | | |
---|
104 | 110 | | |
---|
105 | | - | func W (S,T) = if ((S > T)) |
---|
106 | | - | then T |
---|
107 | | - | else S |
---|
| 111 | + | func Z () = S(f) |
---|
108 | 112 | | |
---|
109 | 113 | | |
---|
110 | | - | func X (Y) = valueOrErrorMessage(getInteger(this, Y), ("no value for " + Y)) |
---|
| 114 | + | func aa (y) = valueOrElse(getInteger(this, x(y)), 0) |
---|
111 | 115 | | |
---|
112 | 116 | | |
---|
113 | | - | func Z (Y) = valueOrElse(getInteger(this, Y), 0) |
---|
| 117 | + | func ab (y) = valueOrElse(getInteger(this, z(y)), 0) |
---|
114 | 118 | | |
---|
115 | 119 | | |
---|
116 | | - | func aa () = valueOrElse(getBoolean(this, k), false) |
---|
| 120 | + | func ac (y) = valueOrElse(getInteger(this, C(y)), 0) |
---|
117 | 121 | | |
---|
118 | 122 | | |
---|
119 | | - | func ab (v) = valueOrElse(getString(this, u(v)), "") |
---|
| 123 | + | func ad (y) = valueOrElse(getInteger(this, D(y)), 0) |
---|
120 | 124 | | |
---|
121 | 125 | | |
---|
122 | | - | func ac (x) = valueOrElse(getString(this, w(x)), "") |
---|
123 | | - | |
---|
124 | | - | |
---|
125 | | - | func ad (x) = (ac(x) != "") |
---|
126 | | - | |
---|
127 | | - | |
---|
128 | | - | func ae (x) = (valueOrElse(getBoolean(this, F(x)), false) == false) |
---|
129 | | - | |
---|
130 | | - | |
---|
131 | | - | func af () = X(f) |
---|
132 | | - | |
---|
133 | | - | |
---|
134 | | - | func ag (z) = valueOrElse(getInteger(this, y(z)), 0) |
---|
135 | | - | |
---|
136 | | - | |
---|
137 | | - | func ah (z) = valueOrElse(getInteger(this, A(z)), 0) |
---|
138 | | - | |
---|
139 | | - | |
---|
140 | | - | func ai (z) = valueOrElse(getInteger(this, D(z)), 0) |
---|
141 | | - | |
---|
142 | | - | |
---|
143 | | - | func aj (z) = valueOrElse(getInteger(this, E(z)), 0) |
---|
144 | | - | |
---|
145 | | - | |
---|
146 | | - | @Callable(ak) |
---|
| 126 | + | @Callable(ae) |
---|
147 | 127 | | func createReferralLink () = { |
---|
148 | | - | let al = (toBase58String(ak.transactionId) + toBase58String(ak.callerPublicKey)) |
---|
149 | | - | let am = toBytes(al) |
---|
150 | | - | let an = toBase58String(sha256(am)) |
---|
151 | | - | let ao = take(an, 10) |
---|
152 | | - | let ap = u(ao) |
---|
153 | | - | let aq = (ah(toString(ak.caller)) + 1) |
---|
154 | | - | if (isDefined(getString(this, ap))) |
---|
| 128 | + | let af = (toBase58String(ae.transactionId) + toBase58String(ae.callerPublicKey)) |
---|
| 129 | + | let ag = toBytes(af) |
---|
| 130 | + | let ah = toBase58String(sha256(ag)) |
---|
| 131 | + | let ai = take(ah, 10) |
---|
| 132 | + | let aj = t(ai) |
---|
| 133 | + | let ak = (ab(toString(ae.caller)) + 1) |
---|
| 134 | + | if (isDefined(getString(this, aj))) |
---|
155 | 135 | | then throw("Short link exists, try generating it again") |
---|
156 | | - | else [StringEntry(B(toString(ak.caller), aq), ao), StringEntry(ap, toString(ak.caller))] |
---|
| 136 | + | else [StringEntry(A(toString(ae.caller), ak), ai), StringEntry(aj, toString(ae.caller))] |
---|
157 | 137 | | } |
---|
158 | 138 | | |
---|
159 | 139 | | |
---|
160 | 140 | | |
---|
161 | | - | @Callable(ak) |
---|
162 | | - | func acceptPaymentWithLink (x,ar) = { |
---|
163 | | - | let as = ak.payments[0].amount |
---|
164 | | - | let at = toString(ak.caller) |
---|
165 | | - | if (if (!(L(at))) |
---|
| 141 | + | @Callable(ae) |
---|
| 142 | + | func acceptPaymentWithLink (w,al) = { |
---|
| 143 | + | let am = ae.payments[0].amount |
---|
| 144 | + | let an = toString(ae.caller) |
---|
| 145 | + | if (if (if (!(J(an))) |
---|
166 | 146 | | then true |
---|
167 | | - | else !(aa())) |
---|
| 147 | + | else (size(ae.payments) != 1)) |
---|
| 148 | + | then true |
---|
| 149 | + | else !(U())) |
---|
168 | 150 | | then throw("Invalid acceptPaymentWithLink params") |
---|
169 | 151 | | else { |
---|
170 | | - | let au = ad(x) |
---|
171 | | - | let av = ae(x) |
---|
172 | | - | if (if (au) |
---|
| 152 | + | let ao = X(w) |
---|
| 153 | + | let ap = Y(w) |
---|
| 154 | + | if (if (ao) |
---|
173 | 155 | | then true |
---|
174 | | - | else av) |
---|
175 | | - | then if (au) |
---|
| 156 | + | else ap) |
---|
| 157 | + | then if (ao) |
---|
176 | 158 | | then { |
---|
177 | | - | let aw = ac(x) |
---|
178 | | - | let ax = af() |
---|
179 | | - | let ay = U(as, ax) |
---|
180 | | - | let az = assetBalance(this, J()) |
---|
181 | | - | if ((az == az)) |
---|
| 159 | + | let aq = W(w) |
---|
| 160 | + | let ar = Z() |
---|
| 161 | + | let as = P(am, ar) |
---|
| 162 | + | let at = assetBalance(this, H()) |
---|
| 163 | + | if ((at == at)) |
---|
182 | 164 | | then { |
---|
183 | | - | let aA = invoke(N(), "swap", [toBase58String(J()), 0], [AttachedPayment(K(), ay)]) |
---|
184 | | - | if ((aA == aA)) |
---|
| 165 | + | let au = invoke(I(), "swap", [toBase58String(H()), 0], [AttachedPayment(ae.payments[0].assetId, as)]) |
---|
| 166 | + | if ((au == au)) |
---|
185 | 167 | | then { |
---|
186 | | - | let aB = assetBalance(this, J()) |
---|
187 | | - | if ((aB == aB)) |
---|
| 168 | + | let av = assetBalance(this, H()) |
---|
| 169 | + | if ((av == av)) |
---|
188 | 170 | | then { |
---|
189 | | - | let aC = (aB - az) |
---|
190 | | - | if ((aC == aC)) |
---|
191 | | - | then $Tuple2([IntegerEntry(D(aw), (ai(aw) + aC)), ScriptTransfer(ak.caller, (ak.payments[0].amount - ay), ak.payments[0].assetId)], ay) |
---|
| 171 | + | let aw = (av - at) |
---|
| 172 | + | if ((aw == aw)) |
---|
| 173 | + | then $Tuple2([IntegerEntry(C(aq), (ac(aq) + aw)), ScriptTransfer(ae.caller, (ae.payments[0].amount - as), ae.payments[0].assetId)], as) |
---|
192 | 174 | | else throw("Strict value is not equal to itself.") |
---|
193 | 175 | | } |
---|
194 | 176 | | else throw("Strict value is not equal to itself.") |
---|
|
198 | 180 | | else throw("Strict value is not equal to itself.") |
---|
199 | 181 | | } |
---|
200 | 182 | | else { |
---|
201 | | - | let aw = ab(ar) |
---|
202 | | - | if (if ((aw == "")) |
---|
| 183 | + | let aq = V(al) |
---|
| 184 | + | if (if ((aq == "")) |
---|
203 | 185 | | then true |
---|
204 | | - | else (aw == x)) |
---|
205 | | - | then $Tuple2([ScriptTransfer(ak.caller, ak.payments[0].amount, ak.payments[0].assetId), BooleanEntry(F(x), true)], 0) |
---|
| 186 | + | else (aq == w)) |
---|
| 187 | + | then $Tuple2([ScriptTransfer(ae.caller, ae.payments[0].amount, ae.payments[0].assetId), BooleanEntry(E(w), true)], 0) |
---|
206 | 188 | | else { |
---|
207 | | - | let ax = af() |
---|
208 | | - | let ay = U(as, ax) |
---|
209 | | - | let az = assetBalance(this, J()) |
---|
210 | | - | if ((az == az)) |
---|
| 189 | + | let ar = Z() |
---|
| 190 | + | let as = P(am, ar) |
---|
| 191 | + | let at = assetBalance(this, H()) |
---|
| 192 | + | if ((at == at)) |
---|
211 | 193 | | then { |
---|
212 | | - | let aA = invoke(N(), "swap", [toBase58String(J()), 0], [AttachedPayment(K(), ay)]) |
---|
213 | | - | if ((aA == aA)) |
---|
| 194 | + | let au = invoke(I(), "swap", [toBase58String(H()), 0], [AttachedPayment(ae.payments[0].assetId, as)]) |
---|
| 195 | + | if ((au == au)) |
---|
214 | 196 | | then { |
---|
215 | | - | let aB = assetBalance(this, J()) |
---|
216 | | - | if ((aB == aB)) |
---|
| 197 | + | let av = assetBalance(this, H()) |
---|
| 198 | + | if ((av == av)) |
---|
217 | 199 | | then { |
---|
218 | | - | let aC = (aB - az) |
---|
219 | | - | if ((aC == aC)) |
---|
220 | | - | then $Tuple2([IntegerEntry(y(aw), (ag(aw) + 1)), IntegerEntry(D(aw), (ai(aw) + aC)), StringEntry(w(x), aw), BooleanEntry(F(x), true), ScriptTransfer(ak.caller, (ak.payments[0].amount - ay), ak.payments[0].assetId)], ay) |
---|
| 200 | + | let aw = (av - at) |
---|
| 201 | + | if ((aw == aw)) |
---|
| 202 | + | then $Tuple2([IntegerEntry(x(aq), (aa(aq) + 1)), IntegerEntry(C(aq), (ac(aq) + aw)), StringEntry(v(w), aq), BooleanEntry(E(w), true), ScriptTransfer(ae.caller, (ae.payments[0].amount - as), ae.payments[0].assetId)], as) |
---|
221 | 203 | | else throw("Strict value is not equal to itself.") |
---|
222 | 204 | | } |
---|
223 | 205 | | else throw("Strict value is not equal to itself.") |
---|
|
227 | 209 | | else throw("Strict value is not equal to itself.") |
---|
228 | 210 | | } |
---|
229 | 211 | | } |
---|
230 | | - | else $Tuple2([ScriptTransfer(ak.caller, ak.payments[0].amount, ak.payments[0].assetId)], 0) |
---|
| 212 | + | else $Tuple2([ScriptTransfer(ae.caller, ae.payments[0].amount, ae.payments[0].assetId)], 0) |
---|
231 | 213 | | } |
---|
232 | 214 | | } |
---|
233 | 215 | | |
---|
234 | 216 | | |
---|
235 | 217 | | |
---|
236 | | - | @Callable(ak) |
---|
237 | | - | func acceptPayment (x) = { |
---|
238 | | - | let as = ak.payments[0].amount |
---|
239 | | - | let at = toString(ak.caller) |
---|
240 | | - | if (if (!(L(at))) |
---|
| 218 | + | @Callable(ae) |
---|
| 219 | + | func acceptPayment (w) = { |
---|
| 220 | + | let am = ae.payments[0].amount |
---|
| 221 | + | let an = toString(ae.caller) |
---|
| 222 | + | if (if (if (!(J(an))) |
---|
241 | 223 | | then true |
---|
242 | | - | else !(aa())) |
---|
| 224 | + | else (size(ae.payments) != 1)) |
---|
| 225 | + | then true |
---|
| 226 | + | else !(U())) |
---|
243 | 227 | | then throw("Invalid acceptPayment params") |
---|
244 | 228 | | else { |
---|
245 | | - | let au = ad(x) |
---|
246 | | - | if (au) |
---|
| 229 | + | let ao = X(w) |
---|
| 230 | + | if (ao) |
---|
247 | 231 | | then { |
---|
248 | | - | let aw = ac(x) |
---|
249 | | - | let ax = af() |
---|
250 | | - | let ay = U(as, ax) |
---|
251 | | - | let az = assetBalance(this, J()) |
---|
252 | | - | if ((az == az)) |
---|
| 232 | + | let aq = W(w) |
---|
| 233 | + | let ar = Z() |
---|
| 234 | + | let as = P(am, ar) |
---|
| 235 | + | let at = assetBalance(this, H()) |
---|
| 236 | + | if ((at == at)) |
---|
253 | 237 | | then { |
---|
254 | | - | let aA = invoke(N(), "swap", [toBase58String(J()), 0], [AttachedPayment(K(), ay)]) |
---|
255 | | - | if ((aA == aA)) |
---|
| 238 | + | let au = invoke(I(), "swap", [toBase58String(H()), 0], [AttachedPayment(ae.payments[0].assetId, as)]) |
---|
| 239 | + | if ((au == au)) |
---|
256 | 240 | | then { |
---|
257 | | - | let aB = assetBalance(this, J()) |
---|
258 | | - | if ((aB == aB)) |
---|
| 241 | + | let av = assetBalance(this, H()) |
---|
| 242 | + | if ((av == av)) |
---|
259 | 243 | | then { |
---|
260 | | - | let aC = (aB - az) |
---|
261 | | - | if ((aC == aC)) |
---|
262 | | - | then $Tuple2([IntegerEntry(D(aw), (ai(aw) + aC)), ScriptTransfer(ak.caller, (ak.payments[0].amount - ay), ak.payments[0].assetId)], ay) |
---|
| 244 | + | let aw = (av - at) |
---|
| 245 | + | if ((aw == aw)) |
---|
| 246 | + | then $Tuple2([IntegerEntry(C(aq), (ac(aq) + aw)), ScriptTransfer(ae.caller, (ae.payments[0].amount - as), ae.payments[0].assetId)], as) |
---|
263 | 247 | | else throw("Strict value is not equal to itself.") |
---|
264 | 248 | | } |
---|
265 | 249 | | else throw("Strict value is not equal to itself.") |
---|
|
268 | 252 | | } |
---|
269 | 253 | | else throw("Strict value is not equal to itself.") |
---|
270 | 254 | | } |
---|
271 | | - | else $Tuple2([ScriptTransfer(ak.caller, ak.payments[0].amount, ak.payments[0].assetId)], 0) |
---|
| 255 | + | else $Tuple2([ScriptTransfer(ae.caller, ae.payments[0].amount, ae.payments[0].assetId)], 0) |
---|
272 | 256 | | } |
---|
273 | 257 | | } |
---|
274 | 258 | | |
---|
275 | 259 | | |
---|
276 | 260 | | |
---|
277 | | - | @Callable(ak) |
---|
| 261 | + | @Callable(ae) |
---|
278 | 262 | | func claimRewards () = { |
---|
279 | | - | let aw = toString(ak.caller) |
---|
280 | | - | let aD = ai(aw) |
---|
281 | | - | let aE = aj(aw) |
---|
282 | | - | let aF = (aD - aE) |
---|
283 | | - | if ((aF > 0)) |
---|
284 | | - | then [IntegerEntry(E(aw), (aj(aw) + aF)), ScriptTransfer(ak.caller, aF, J())] |
---|
| 263 | + | let aq = toString(ae.caller) |
---|
| 264 | + | let ax = ac(aq) |
---|
| 265 | + | let ay = ad(aq) |
---|
| 266 | + | let az = (ax - ay) |
---|
| 267 | + | if ((az > 0)) |
---|
| 268 | + | then [IntegerEntry(D(aq), (ad(aq) + az)), ScriptTransfer(ae.caller, az, H())] |
---|
285 | 269 | | else throw("Nothing to claim") |
---|
286 | 270 | | } |
---|
287 | 271 | | |
---|
288 | 272 | | |
---|
289 | 273 | | |
---|
290 | | - | @Callable(ak) |
---|
291 | | - | func initialize (aG,aH,aI) = if (aa()) |
---|
292 | | - | then throw("Already initialized") |
---|
293 | | - | else [StringEntry(l, aG), StringEntry(g, aI), IntegerEntry(f, aH), BooleanEntry(k, true)] |
---|
| 274 | + | @Callable(ae) |
---|
| 275 | + | func initialize (aA,aB) = if (if (U()) |
---|
| 276 | + | then true |
---|
| 277 | + | else (ae.caller != this)) |
---|
| 278 | + | then throw("Unable to initialize") |
---|
| 279 | + | else [StringEntry(k, toString(addressFromStringValue(aA))), IntegerEntry(f, aB), BooleanEntry(j, true)] |
---|
294 | 280 | | |
---|
295 | 281 | | |
---|
296 | | - | |
---|
297 | | - | @Callable(ak) |
---|
298 | | - | func setSwapAddress (aI) = if ((ak.caller != I())) |
---|
299 | | - | then throw("Invalid setSwapAddress params") |
---|
300 | | - | else [StringEntry(g, aI)] |
---|
301 | | - | |
---|
302 | | - | |
---|
303 | | - | @Verifier(aJ) |
---|
304 | | - | func aK () = sigVerify(aJ.bodyBytes, aJ.proofs[0], H()) |
---|
| 282 | + | @Verifier(aC) |
---|
| 283 | + | func aD () = { |
---|
| 284 | + | let aE = getString(this, k) |
---|
| 285 | + | if (isDefined(aE)) |
---|
| 286 | + | then { |
---|
| 287 | + | let aF = getString(addressFromStringValue(value(aE)), n) |
---|
| 288 | + | if (isDefined(aF)) |
---|
| 289 | + | then valueOrElse(getBoolean(addressFromStringValue(value(aF)), ((("status_" + toString(this)) + "_") + toBase58String(aC.id))), false) |
---|
| 290 | + | else throw("unable to verify: admin not set in coordinator") |
---|
| 291 | + | } |
---|
| 292 | + | else sigVerify(aC.bodyBytes, aC.proofs[0], aC.senderPublicKey) |
---|
| 293 | + | } |
---|
305 | 294 | | |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 6 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let a = "k_ref_link_owner" |
---|
5 | 5 | | |
---|
6 | 6 | | let b = "k_ref_link_owner_count" |
---|
7 | 7 | | |
---|
8 | 8 | | let c = "k_ref_owner_link" |
---|
9 | 9 | | |
---|
10 | 10 | | let d = "k_referrer" |
---|
11 | 11 | | |
---|
12 | 12 | | let e = "k_active" |
---|
13 | 13 | | |
---|
14 | 14 | | let f = "k_defaultFee" |
---|
15 | 15 | | |
---|
16 | | - | let g = "k_swapAddress" |
---|
| 16 | + | let g = "k_referrer_ref_count" |
---|
17 | 17 | | |
---|
18 | | - | let h = "k_referrer_ref_count" |
---|
| 18 | + | let h = "k_referrer_earned" |
---|
19 | 19 | | |
---|
20 | | - | let i = "k_referrer_earned" |
---|
| 20 | + | let i = "k_referrer_claimed" |
---|
21 | 21 | | |
---|
22 | | - | let j = "k_referrer_claimed" |
---|
| 22 | + | let j = "k_initialized" |
---|
23 | 23 | | |
---|
24 | | - | let k = "k_initialized" |
---|
| 24 | + | let k = "k_coordinatorAddress" |
---|
25 | 25 | | |
---|
26 | | - | let l = "k_coordinatorAddress" |
---|
| 26 | + | let l = "k_child" |
---|
27 | 27 | | |
---|
28 | 28 | | let m = "k_gov_asset" |
---|
29 | 29 | | |
---|
30 | | - | let n = "k_quote_asset" |
---|
| 30 | + | let n = "k_admin_address" |
---|
31 | 31 | | |
---|
32 | | - | let o = "k_admin_public_key" |
---|
| 32 | + | let o = "k_amm" |
---|
33 | 33 | | |
---|
34 | | - | let p = "k_admin_address" |
---|
| 34 | + | let p = "k_swap_address" |
---|
35 | 35 | | |
---|
36 | | - | let q = "k_amm" |
---|
37 | | - | |
---|
38 | | - | func r (s,t) = ((s + "_") + t) |
---|
| 36 | + | func q (r,s) = ((r + "_") + s) |
---|
39 | 37 | | |
---|
40 | 38 | | |
---|
41 | | - | func u (v) = ((a + "_") + v) |
---|
| 39 | + | func t (u) = ((a + "_") + u) |
---|
42 | 40 | | |
---|
43 | 41 | | |
---|
44 | | - | func w (x) = ((d + "_") + x) |
---|
| 42 | + | func v (w) = ((d + "_") + w) |
---|
45 | 43 | | |
---|
46 | 44 | | |
---|
47 | | - | func y (z) = ((h + "_") + z) |
---|
| 45 | + | func x (y) = ((g + "_") + y) |
---|
48 | 46 | | |
---|
49 | 47 | | |
---|
50 | | - | func A (z) = ((b + "_") + z) |
---|
| 48 | + | func z (y) = ((b + "_") + y) |
---|
51 | 49 | | |
---|
52 | 50 | | |
---|
53 | | - | func B (z,C) = ((((c + "_") + z) + "_") + toString(C)) |
---|
| 51 | + | func A (y,B) = ((((c + "_") + y) + "_") + toString(B)) |
---|
54 | 52 | | |
---|
55 | 53 | | |
---|
56 | | - | func D (z) = ((i + "_") + z) |
---|
| 54 | + | func C (y) = ((h + "_") + y) |
---|
57 | 55 | | |
---|
58 | 56 | | |
---|
59 | | - | func E (z) = ((j + "_") + z) |
---|
| 57 | + | func D (y) = ((i + "_") + y) |
---|
60 | 58 | | |
---|
61 | 59 | | |
---|
62 | | - | func F (x) = ((e + "_") + x) |
---|
| 60 | + | func E (w) = ((e + "_") + w) |
---|
63 | 61 | | |
---|
64 | 62 | | |
---|
65 | | - | func G () = valueOrErrorMessage(addressFromString(getStringValue(this, l)), "Coordinator not set") |
---|
| 63 | + | func F () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, k), "Coordinator not set")), "Coordinator address invalid") |
---|
66 | 64 | | |
---|
67 | 65 | | |
---|
68 | | - | func H () = fromBase58String(getStringValue(G(), o)) |
---|
| 66 | + | func G () = addressFromString(valueOrErrorMessage(getString(F(), n), "Admin address not set")) |
---|
69 | 67 | | |
---|
70 | 68 | | |
---|
71 | | - | func I () = addressFromString(getStringValue(G(), p)) |
---|
| 69 | + | func H () = fromBase58String(valueOrErrorMessage(getString(F(), m), "Governance asset not set")) |
---|
72 | 70 | | |
---|
73 | 71 | | |
---|
74 | | - | func J () = fromBase58String(getStringValue(G(), m)) |
---|
| 72 | + | func I () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(F(), p), "Swap address not set")), "Swap address invalid") |
---|
75 | 73 | | |
---|
76 | 74 | | |
---|
77 | | - | func K () = fromBase58String(getStringValue(G(), n)) |
---|
| 75 | + | func J (s) = { |
---|
| 76 | + | let K = F() |
---|
| 77 | + | let L = addressFromStringValue(valueOrErrorMessage(getString(addressFromStringValue(s), k), ("No coordinator set for possible AMM " + s))) |
---|
| 78 | + | let M = valueOrElse(getBoolean(L, q(o, s)), false) |
---|
| 79 | + | let N = if ((K == L)) |
---|
| 80 | + | then true |
---|
| 81 | + | else valueOrElse(getBoolean(K, q(l, toString(L))), false) |
---|
| 82 | + | if (M) |
---|
| 83 | + | then N |
---|
| 84 | + | else false |
---|
| 85 | + | } |
---|
78 | 86 | | |
---|
79 | 87 | | |
---|
80 | | - | func L (t) = valueOrElse(getBoolean(G(), r(q, t)), false) |
---|
| 88 | + | let O = (1 * (((((10 * 10) * 10) * 10) * 10) * 10)) |
---|
| 89 | + | |
---|
| 90 | + | func P (Q,R) = fraction(Q, R, O, HALFEVEN) |
---|
81 | 91 | | |
---|
82 | 92 | | |
---|
83 | | - | let M = (1 * (((((10 * 10) * 10) * 10) * 10) * 10)) |
---|
84 | | - | |
---|
85 | | - | func N () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, g), "Now swap address")), "Invalid swap address") |
---|
| 93 | + | func S (T) = valueOrErrorMessage(getInteger(this, T), ("no value for " + T)) |
---|
86 | 94 | | |
---|
87 | 95 | | |
---|
88 | | - | func O (P) = (P / 100) |
---|
| 96 | + | func U () = valueOrElse(getBoolean(this, j), false) |
---|
89 | 97 | | |
---|
90 | 98 | | |
---|
91 | | - | func Q (P) = (P * 100) |
---|
| 99 | + | func V (u) = valueOrElse(getString(this, t(u)), "") |
---|
92 | 100 | | |
---|
93 | 101 | | |
---|
94 | | - | func R (S,T) = fraction(S, M, T, HALFEVEN) |
---|
| 102 | + | func W (w) = valueOrElse(getString(this, v(w)), "") |
---|
95 | 103 | | |
---|
96 | 104 | | |
---|
97 | | - | func U (S,T) = fraction(S, T, M, HALFEVEN) |
---|
| 105 | + | func X (w) = (W(w) != "") |
---|
98 | 106 | | |
---|
99 | 107 | | |
---|
100 | | - | func V (S) = if ((S > 0)) |
---|
101 | | - | then S |
---|
102 | | - | else -(S) |
---|
| 108 | + | func Y (w) = (valueOrElse(getBoolean(this, E(w)), false) == false) |
---|
103 | 109 | | |
---|
104 | 110 | | |
---|
105 | | - | func W (S,T) = if ((S > T)) |
---|
106 | | - | then T |
---|
107 | | - | else S |
---|
| 111 | + | func Z () = S(f) |
---|
108 | 112 | | |
---|
109 | 113 | | |
---|
110 | | - | func X (Y) = valueOrErrorMessage(getInteger(this, Y), ("no value for " + Y)) |
---|
| 114 | + | func aa (y) = valueOrElse(getInteger(this, x(y)), 0) |
---|
111 | 115 | | |
---|
112 | 116 | | |
---|
113 | | - | func Z (Y) = valueOrElse(getInteger(this, Y), 0) |
---|
| 117 | + | func ab (y) = valueOrElse(getInteger(this, z(y)), 0) |
---|
114 | 118 | | |
---|
115 | 119 | | |
---|
116 | | - | func aa () = valueOrElse(getBoolean(this, k), false) |
---|
| 120 | + | func ac (y) = valueOrElse(getInteger(this, C(y)), 0) |
---|
117 | 121 | | |
---|
118 | 122 | | |
---|
119 | | - | func ab (v) = valueOrElse(getString(this, u(v)), "") |
---|
| 123 | + | func ad (y) = valueOrElse(getInteger(this, D(y)), 0) |
---|
120 | 124 | | |
---|
121 | 125 | | |
---|
122 | | - | func ac (x) = valueOrElse(getString(this, w(x)), "") |
---|
123 | | - | |
---|
124 | | - | |
---|
125 | | - | func ad (x) = (ac(x) != "") |
---|
126 | | - | |
---|
127 | | - | |
---|
128 | | - | func ae (x) = (valueOrElse(getBoolean(this, F(x)), false) == false) |
---|
129 | | - | |
---|
130 | | - | |
---|
131 | | - | func af () = X(f) |
---|
132 | | - | |
---|
133 | | - | |
---|
134 | | - | func ag (z) = valueOrElse(getInteger(this, y(z)), 0) |
---|
135 | | - | |
---|
136 | | - | |
---|
137 | | - | func ah (z) = valueOrElse(getInteger(this, A(z)), 0) |
---|
138 | | - | |
---|
139 | | - | |
---|
140 | | - | func ai (z) = valueOrElse(getInteger(this, D(z)), 0) |
---|
141 | | - | |
---|
142 | | - | |
---|
143 | | - | func aj (z) = valueOrElse(getInteger(this, E(z)), 0) |
---|
144 | | - | |
---|
145 | | - | |
---|
146 | | - | @Callable(ak) |
---|
| 126 | + | @Callable(ae) |
---|
147 | 127 | | func createReferralLink () = { |
---|
148 | | - | let al = (toBase58String(ak.transactionId) + toBase58String(ak.callerPublicKey)) |
---|
149 | | - | let am = toBytes(al) |
---|
150 | | - | let an = toBase58String(sha256(am)) |
---|
151 | | - | let ao = take(an, 10) |
---|
152 | | - | let ap = u(ao) |
---|
153 | | - | let aq = (ah(toString(ak.caller)) + 1) |
---|
154 | | - | if (isDefined(getString(this, ap))) |
---|
| 128 | + | let af = (toBase58String(ae.transactionId) + toBase58String(ae.callerPublicKey)) |
---|
| 129 | + | let ag = toBytes(af) |
---|
| 130 | + | let ah = toBase58String(sha256(ag)) |
---|
| 131 | + | let ai = take(ah, 10) |
---|
| 132 | + | let aj = t(ai) |
---|
| 133 | + | let ak = (ab(toString(ae.caller)) + 1) |
---|
| 134 | + | if (isDefined(getString(this, aj))) |
---|
155 | 135 | | then throw("Short link exists, try generating it again") |
---|
156 | | - | else [StringEntry(B(toString(ak.caller), aq), ao), StringEntry(ap, toString(ak.caller))] |
---|
| 136 | + | else [StringEntry(A(toString(ae.caller), ak), ai), StringEntry(aj, toString(ae.caller))] |
---|
157 | 137 | | } |
---|
158 | 138 | | |
---|
159 | 139 | | |
---|
160 | 140 | | |
---|
161 | | - | @Callable(ak) |
---|
162 | | - | func acceptPaymentWithLink (x,ar) = { |
---|
163 | | - | let as = ak.payments[0].amount |
---|
164 | | - | let at = toString(ak.caller) |
---|
165 | | - | if (if (!(L(at))) |
---|
| 141 | + | @Callable(ae) |
---|
| 142 | + | func acceptPaymentWithLink (w,al) = { |
---|
| 143 | + | let am = ae.payments[0].amount |
---|
| 144 | + | let an = toString(ae.caller) |
---|
| 145 | + | if (if (if (!(J(an))) |
---|
166 | 146 | | then true |
---|
167 | | - | else !(aa())) |
---|
| 147 | + | else (size(ae.payments) != 1)) |
---|
| 148 | + | then true |
---|
| 149 | + | else !(U())) |
---|
168 | 150 | | then throw("Invalid acceptPaymentWithLink params") |
---|
169 | 151 | | else { |
---|
170 | | - | let au = ad(x) |
---|
171 | | - | let av = ae(x) |
---|
172 | | - | if (if (au) |
---|
| 152 | + | let ao = X(w) |
---|
| 153 | + | let ap = Y(w) |
---|
| 154 | + | if (if (ao) |
---|
173 | 155 | | then true |
---|
174 | | - | else av) |
---|
175 | | - | then if (au) |
---|
| 156 | + | else ap) |
---|
| 157 | + | then if (ao) |
---|
176 | 158 | | then { |
---|
177 | | - | let aw = ac(x) |
---|
178 | | - | let ax = af() |
---|
179 | | - | let ay = U(as, ax) |
---|
180 | | - | let az = assetBalance(this, J()) |
---|
181 | | - | if ((az == az)) |
---|
| 159 | + | let aq = W(w) |
---|
| 160 | + | let ar = Z() |
---|
| 161 | + | let as = P(am, ar) |
---|
| 162 | + | let at = assetBalance(this, H()) |
---|
| 163 | + | if ((at == at)) |
---|
182 | 164 | | then { |
---|
183 | | - | let aA = invoke(N(), "swap", [toBase58String(J()), 0], [AttachedPayment(K(), ay)]) |
---|
184 | | - | if ((aA == aA)) |
---|
| 165 | + | let au = invoke(I(), "swap", [toBase58String(H()), 0], [AttachedPayment(ae.payments[0].assetId, as)]) |
---|
| 166 | + | if ((au == au)) |
---|
185 | 167 | | then { |
---|
186 | | - | let aB = assetBalance(this, J()) |
---|
187 | | - | if ((aB == aB)) |
---|
| 168 | + | let av = assetBalance(this, H()) |
---|
| 169 | + | if ((av == av)) |
---|
188 | 170 | | then { |
---|
189 | | - | let aC = (aB - az) |
---|
190 | | - | if ((aC == aC)) |
---|
191 | | - | then $Tuple2([IntegerEntry(D(aw), (ai(aw) + aC)), ScriptTransfer(ak.caller, (ak.payments[0].amount - ay), ak.payments[0].assetId)], ay) |
---|
| 171 | + | let aw = (av - at) |
---|
| 172 | + | if ((aw == aw)) |
---|
| 173 | + | then $Tuple2([IntegerEntry(C(aq), (ac(aq) + aw)), ScriptTransfer(ae.caller, (ae.payments[0].amount - as), ae.payments[0].assetId)], as) |
---|
192 | 174 | | else throw("Strict value is not equal to itself.") |
---|
193 | 175 | | } |
---|
194 | 176 | | else throw("Strict value is not equal to itself.") |
---|
195 | 177 | | } |
---|
196 | 178 | | else throw("Strict value is not equal to itself.") |
---|
197 | 179 | | } |
---|
198 | 180 | | else throw("Strict value is not equal to itself.") |
---|
199 | 181 | | } |
---|
200 | 182 | | else { |
---|
201 | | - | let aw = ab(ar) |
---|
202 | | - | if (if ((aw == "")) |
---|
| 183 | + | let aq = V(al) |
---|
| 184 | + | if (if ((aq == "")) |
---|
203 | 185 | | then true |
---|
204 | | - | else (aw == x)) |
---|
205 | | - | then $Tuple2([ScriptTransfer(ak.caller, ak.payments[0].amount, ak.payments[0].assetId), BooleanEntry(F(x), true)], 0) |
---|
| 186 | + | else (aq == w)) |
---|
| 187 | + | then $Tuple2([ScriptTransfer(ae.caller, ae.payments[0].amount, ae.payments[0].assetId), BooleanEntry(E(w), true)], 0) |
---|
206 | 188 | | else { |
---|
207 | | - | let ax = af() |
---|
208 | | - | let ay = U(as, ax) |
---|
209 | | - | let az = assetBalance(this, J()) |
---|
210 | | - | if ((az == az)) |
---|
| 189 | + | let ar = Z() |
---|
| 190 | + | let as = P(am, ar) |
---|
| 191 | + | let at = assetBalance(this, H()) |
---|
| 192 | + | if ((at == at)) |
---|
211 | 193 | | then { |
---|
212 | | - | let aA = invoke(N(), "swap", [toBase58String(J()), 0], [AttachedPayment(K(), ay)]) |
---|
213 | | - | if ((aA == aA)) |
---|
| 194 | + | let au = invoke(I(), "swap", [toBase58String(H()), 0], [AttachedPayment(ae.payments[0].assetId, as)]) |
---|
| 195 | + | if ((au == au)) |
---|
214 | 196 | | then { |
---|
215 | | - | let aB = assetBalance(this, J()) |
---|
216 | | - | if ((aB == aB)) |
---|
| 197 | + | let av = assetBalance(this, H()) |
---|
| 198 | + | if ((av == av)) |
---|
217 | 199 | | then { |
---|
218 | | - | let aC = (aB - az) |
---|
219 | | - | if ((aC == aC)) |
---|
220 | | - | then $Tuple2([IntegerEntry(y(aw), (ag(aw) + 1)), IntegerEntry(D(aw), (ai(aw) + aC)), StringEntry(w(x), aw), BooleanEntry(F(x), true), ScriptTransfer(ak.caller, (ak.payments[0].amount - ay), ak.payments[0].assetId)], ay) |
---|
| 200 | + | let aw = (av - at) |
---|
| 201 | + | if ((aw == aw)) |
---|
| 202 | + | then $Tuple2([IntegerEntry(x(aq), (aa(aq) + 1)), IntegerEntry(C(aq), (ac(aq) + aw)), StringEntry(v(w), aq), BooleanEntry(E(w), true), ScriptTransfer(ae.caller, (ae.payments[0].amount - as), ae.payments[0].assetId)], as) |
---|
221 | 203 | | else throw("Strict value is not equal to itself.") |
---|
222 | 204 | | } |
---|
223 | 205 | | else throw("Strict value is not equal to itself.") |
---|
224 | 206 | | } |
---|
225 | 207 | | else throw("Strict value is not equal to itself.") |
---|
226 | 208 | | } |
---|
227 | 209 | | else throw("Strict value is not equal to itself.") |
---|
228 | 210 | | } |
---|
229 | 211 | | } |
---|
230 | | - | else $Tuple2([ScriptTransfer(ak.caller, ak.payments[0].amount, ak.payments[0].assetId)], 0) |
---|
| 212 | + | else $Tuple2([ScriptTransfer(ae.caller, ae.payments[0].amount, ae.payments[0].assetId)], 0) |
---|
231 | 213 | | } |
---|
232 | 214 | | } |
---|
233 | 215 | | |
---|
234 | 216 | | |
---|
235 | 217 | | |
---|
236 | | - | @Callable(ak) |
---|
237 | | - | func acceptPayment (x) = { |
---|
238 | | - | let as = ak.payments[0].amount |
---|
239 | | - | let at = toString(ak.caller) |
---|
240 | | - | if (if (!(L(at))) |
---|
| 218 | + | @Callable(ae) |
---|
| 219 | + | func acceptPayment (w) = { |
---|
| 220 | + | let am = ae.payments[0].amount |
---|
| 221 | + | let an = toString(ae.caller) |
---|
| 222 | + | if (if (if (!(J(an))) |
---|
241 | 223 | | then true |
---|
242 | | - | else !(aa())) |
---|
| 224 | + | else (size(ae.payments) != 1)) |
---|
| 225 | + | then true |
---|
| 226 | + | else !(U())) |
---|
243 | 227 | | then throw("Invalid acceptPayment params") |
---|
244 | 228 | | else { |
---|
245 | | - | let au = ad(x) |
---|
246 | | - | if (au) |
---|
| 229 | + | let ao = X(w) |
---|
| 230 | + | if (ao) |
---|
247 | 231 | | then { |
---|
248 | | - | let aw = ac(x) |
---|
249 | | - | let ax = af() |
---|
250 | | - | let ay = U(as, ax) |
---|
251 | | - | let az = assetBalance(this, J()) |
---|
252 | | - | if ((az == az)) |
---|
| 232 | + | let aq = W(w) |
---|
| 233 | + | let ar = Z() |
---|
| 234 | + | let as = P(am, ar) |
---|
| 235 | + | let at = assetBalance(this, H()) |
---|
| 236 | + | if ((at == at)) |
---|
253 | 237 | | then { |
---|
254 | | - | let aA = invoke(N(), "swap", [toBase58String(J()), 0], [AttachedPayment(K(), ay)]) |
---|
255 | | - | if ((aA == aA)) |
---|
| 238 | + | let au = invoke(I(), "swap", [toBase58String(H()), 0], [AttachedPayment(ae.payments[0].assetId, as)]) |
---|
| 239 | + | if ((au == au)) |
---|
256 | 240 | | then { |
---|
257 | | - | let aB = assetBalance(this, J()) |
---|
258 | | - | if ((aB == aB)) |
---|
| 241 | + | let av = assetBalance(this, H()) |
---|
| 242 | + | if ((av == av)) |
---|
259 | 243 | | then { |
---|
260 | | - | let aC = (aB - az) |
---|
261 | | - | if ((aC == aC)) |
---|
262 | | - | then $Tuple2([IntegerEntry(D(aw), (ai(aw) + aC)), ScriptTransfer(ak.caller, (ak.payments[0].amount - ay), ak.payments[0].assetId)], ay) |
---|
| 244 | + | let aw = (av - at) |
---|
| 245 | + | if ((aw == aw)) |
---|
| 246 | + | then $Tuple2([IntegerEntry(C(aq), (ac(aq) + aw)), ScriptTransfer(ae.caller, (ae.payments[0].amount - as), ae.payments[0].assetId)], as) |
---|
263 | 247 | | else throw("Strict value is not equal to itself.") |
---|
264 | 248 | | } |
---|
265 | 249 | | else throw("Strict value is not equal to itself.") |
---|
266 | 250 | | } |
---|
267 | 251 | | else throw("Strict value is not equal to itself.") |
---|
268 | 252 | | } |
---|
269 | 253 | | else throw("Strict value is not equal to itself.") |
---|
270 | 254 | | } |
---|
271 | | - | else $Tuple2([ScriptTransfer(ak.caller, ak.payments[0].amount, ak.payments[0].assetId)], 0) |
---|
| 255 | + | else $Tuple2([ScriptTransfer(ae.caller, ae.payments[0].amount, ae.payments[0].assetId)], 0) |
---|
272 | 256 | | } |
---|
273 | 257 | | } |
---|
274 | 258 | | |
---|
275 | 259 | | |
---|
276 | 260 | | |
---|
277 | | - | @Callable(ak) |
---|
| 261 | + | @Callable(ae) |
---|
278 | 262 | | func claimRewards () = { |
---|
279 | | - | let aw = toString(ak.caller) |
---|
280 | | - | let aD = ai(aw) |
---|
281 | | - | let aE = aj(aw) |
---|
282 | | - | let aF = (aD - aE) |
---|
283 | | - | if ((aF > 0)) |
---|
284 | | - | then [IntegerEntry(E(aw), (aj(aw) + aF)), ScriptTransfer(ak.caller, aF, J())] |
---|
| 263 | + | let aq = toString(ae.caller) |
---|
| 264 | + | let ax = ac(aq) |
---|
| 265 | + | let ay = ad(aq) |
---|
| 266 | + | let az = (ax - ay) |
---|
| 267 | + | if ((az > 0)) |
---|
| 268 | + | then [IntegerEntry(D(aq), (ad(aq) + az)), ScriptTransfer(ae.caller, az, H())] |
---|
285 | 269 | | else throw("Nothing to claim") |
---|
286 | 270 | | } |
---|
287 | 271 | | |
---|
288 | 272 | | |
---|
289 | 273 | | |
---|
290 | | - | @Callable(ak) |
---|
291 | | - | func initialize (aG,aH,aI) = if (aa()) |
---|
292 | | - | then throw("Already initialized") |
---|
293 | | - | else [StringEntry(l, aG), StringEntry(g, aI), IntegerEntry(f, aH), BooleanEntry(k, true)] |
---|
| 274 | + | @Callable(ae) |
---|
| 275 | + | func initialize (aA,aB) = if (if (U()) |
---|
| 276 | + | then true |
---|
| 277 | + | else (ae.caller != this)) |
---|
| 278 | + | then throw("Unable to initialize") |
---|
| 279 | + | else [StringEntry(k, toString(addressFromStringValue(aA))), IntegerEntry(f, aB), BooleanEntry(j, true)] |
---|
294 | 280 | | |
---|
295 | 281 | | |
---|
296 | | - | |
---|
297 | | - | @Callable(ak) |
---|
298 | | - | func setSwapAddress (aI) = if ((ak.caller != I())) |
---|
299 | | - | then throw("Invalid setSwapAddress params") |
---|
300 | | - | else [StringEntry(g, aI)] |
---|
301 | | - | |
---|
302 | | - | |
---|
303 | | - | @Verifier(aJ) |
---|
304 | | - | func aK () = sigVerify(aJ.bodyBytes, aJ.proofs[0], H()) |
---|
| 282 | + | @Verifier(aC) |
---|
| 283 | + | func aD () = { |
---|
| 284 | + | let aE = getString(this, k) |
---|
| 285 | + | if (isDefined(aE)) |
---|
| 286 | + | then { |
---|
| 287 | + | let aF = getString(addressFromStringValue(value(aE)), n) |
---|
| 288 | + | if (isDefined(aF)) |
---|
| 289 | + | then valueOrElse(getBoolean(addressFromStringValue(value(aF)), ((("status_" + toString(this)) + "_") + toBase58String(aC.id))), false) |
---|
| 290 | + | else throw("unable to verify: admin not set in coordinator") |
---|
| 291 | + | } |
---|
| 292 | + | else sigVerify(aC.bodyBytes, aC.proofs[0], aC.senderPublicKey) |
---|
| 293 | + | } |
---|
305 | 294 | | |
---|