tx · svqG5bkjW2fiqCx7VqUZftKrb3SLcs2GmCBrCgi2fQJ 3P4AdC9J6MzTEi2LL9xgQN8EimMnbk4d6Nt: -0.01300000 Waves 2024.03.25 15:57 [4099521] smart account 3P4AdC9J6MzTEi2LL9xgQN8EimMnbk4d6Nt > SELF 0.00000000 Waves
{ "type": 13, "id": "svqG5bkjW2fiqCx7VqUZftKrb3SLcs2GmCBrCgi2fQJ", "fee": 1300000, "feeAssetId": null, "timestamp": 1711371470182, "version": 2, "chainId": 87, "sender": "3P4AdC9J6MzTEi2LL9xgQN8EimMnbk4d6Nt", "senderPublicKey": "33BMe2b9KpjJyCQXAKa3DKHqSBjB7q2mEJoiP17cRLAN", "proofs": [ "55shFkY75d7dfLVXqRYawcALNp3Y6Mu976qSpFQn1MTw3psxuHsxHQQscVtbwLHK5mf4uJbv8MsjGAmXkGfNRd2q" ], "script": "base64:BgIYCAISAwoBBBIECgIBCBIAEgASABIDCgEBKwANa2V5SW52b2tlTmV4dAILaW52b2tlIG5leHQAAmQ4AIDC1y8ACHByb2plY3RCCQEHQWRkcmVzcwEBGgFXcGw0ZoYqwwE1OkKAC93DkGP9o1uAAEutAAdyZXdhcmRzCQEHQWRkcmVzcwEBGgFXL67xcGkDY58tIGVFIdRxHf4xnfL4rKNiAAZib3VudHkJAQdBZGRyZXNzAQEaAVe2I6AGGozgWRbvMMr/Xvz4DJHWAJ1rT8MAB3Z2eHRubHABIGyt+ODPiuFxRw0KeWgBdGI46+9tefPNjbO2xkfCuGkHAAZzd2F2ZXMBIAgfyPcWMO1Rwikb7Kwaj/yQcRxZOC3rIYGwN0HwRdFKAAlidXJueHRuSWQBICRPdXlqfjM5uPsM/4SpcVxeyi3eM6DEXWn56kQR7ExUAAhVU0RUZGFwcAkBB0FkZHJlc3MBARoBV/vUnCdwV8wz3/ojSSJAuO9JsGyMCfRFeQAIVVNEQ2RhcHAJAQdBZGRyZXNzAQEaAVfPpo3ezb7Njd2/69fniUZAvbnmA3k/GHIACnplcm9CaWdJbnQJALYCAQAAAARiaWcwCQC2AgEAAAAEYmlnMQkAtgIBAAEABGJpZzIJALYCAQACAARiaWczCQC2AgEAAwAEYmlnNAkAtgIBAAQAC3dhdmVzU3RyaW5nAgVXQVZFUwAFQW11bHQCAzEwMAEPYXNzZXRJZFRvU3RyaW5nAQVpbnB1dAMJAAACBQVpbnB1dAUEdW5pdAULd2F2ZXNTdHJpbmcJANgEAQkBBXZhbHVlAQUFaW5wdXQBCWFic0JpZ0ludAEDdmFsAwkAvwICBQp6ZXJvQmlnSW50BQN2YWwJAL4CAQUDdmFsBQN2YWwABGFtSWQCLDNheUgzUGhXTWtoRnN5U3NVVmNDOEJ2RmYxUXl4R0I1Qlp1VFB5VnRtUDR2AARwcklkAixHNVdXV3p6VnNXUnl6R2YzMnhvamJuZnA3Z1hiV3JncUpUOFJjVldFZkxtQwABQQIEMjAwMAADZmVlAAEACGZlZVNjYWxlAJBOAQ1nZXRBY2NCYWxhbmNlAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQFBGFtSWQJAGQCCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTApAgUIVVNEQ2RhcHAJAKwCAgIJVVNFUl9MUF9fCQClCAEFBHRoaXMJAGQCCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTApAgUIVVNEVGRhcHAJAKwCAgIJVVNFUl9MUF9fCQClCAEFBHRoaXMBDHBhcnNlQXNzZXRJZAEFaW5wdXQDCQAAAgUFaW5wdXQFC3dhdmVzU3RyaW5nBQR1bml0CQDZBAEFBWlucHV0AQRnZXREAQJ4cAQDeHAwCQCRAwIFAnhwAAAEA3hwMQkAkQMCBQJ4cAABBAFzCQC3AgIFA3hwMAUDeHAxAwkAAAIFAXMFBGJpZzAFBGJpZzAEAWEJAQ1wYXJzZUludFZhbHVlAQUBQQQDYW5uCQBoAgUBYQACBAFwCQC8AgMFA3hwMAUDeHAxBQRiaWcxBAt4cDBfeHAxX25fbgkAvAIDBQFwBQRiaWc0BQRiaWcxBAVhbm5fcwkAvAIDCQC2AgEFA2FubgUBcwUEYmlnMQQFYW5uXzEJALYCAQkAZQIFA2FubgABCgEJY2FsY0ROZXh0AQFkBAJkZAkAvAIDBQFkBQFkBQRiaWcxBANkZGQJALwCAwUCZGQFAWQFBGJpZzEEAmRwCQC8AgMFA2RkZAUEYmlnMQULeHAwX3hwMV9uX24JALwCAwkAtwICBQVhbm5fcwkAvAIDBQJkcAUEYmlnMgUEYmlnMQUBZAkAtwICCQC8AgMFBWFubl8xBQFkBQRiaWcxCQC8AgMFBGJpZzMFAmRwBQRiaWcxCgEEY2FsYwIDYWNjAWkDCAUDYWNjAl8yBQNhY2MEAWQIBQNhY2MCXzEEBWROZXh0CQEJY2FsY0ROZXh0AQUBZAQIZERpZmZSYXcJALgCAgUFZE5leHQJAQV2YWx1ZQEFAWQEBWREaWZmAwkAvwICBQRiaWcwBQhkRGlmZlJhdwkAvgIBBQhkRGlmZlJhdwUIZERpZmZSYXcDCQDAAgIFBGJpZzEFBWREaWZmCQCUCgIFBWROZXh0BgkAlAoCBQVkTmV4dAcEA2FycgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJ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ciwgWSA9IAkApgMBBQF5AAxTV0FWRVNfc3Rha2UJAQdBZGRyZXNzAQEaAVd9yXuTFHn/51HxsUrHb/lqHYCVR89YI34BCF9sb2FkSW50AgRrZXlfCGRlZmF1bHRfBAckbWF0Y2gwCQCaCAIFDFNXQVZFU19zdGFrZQUEa2V5XwMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEFCGRlZmF1bHRfAQtfbG9hZEJpZ0ludAIEa2V5XwhkZWZhdWx0XwQHJG1hdGNoMAkAnAgCBQxTV0FWRVNfc3Rha2UFBGtleV8DCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYQUHJG1hdGNoMAkAngMBBQFhBQhkZWZhdWx0XwAQV1hfQlVSTlhUTl9XQVZFUwkBB0FkZHJlc3MBARoBVyvirnF7fckwtSB55xbFa21XQIGlOBY9PgAIbGFzdFJhdGUJAQtfbG9hZEJpZ0ludAICCUxBU1RfUkFURQkAtgIBAICglKWNHQALY3VycmVudFJhdGUJAQtfbG9hZEJpZ0ludAICDENVUlJFTlRfUkFURQkAtgIBAAAACmxhc3RIZWlnaHQJAQhfbG9hZEludAICC0xBU1RfSEVJR0hUAAAADHRhcmdldEhlaWdodAkAlwMBCQDMCAIJAQhfbG9hZEludAICDVRBUkdFVF9IRUlHSFQAAAkAzAgCBQZoZWlnaHQFA25pbAAPbGFzdFJhdGVVcGRhdGVkCQC3AgIFCGxhc3RSYXRlCQC5AgIFC2N1cnJlbnRSYXRlCQC2AgEJAGUCBQx0YXJnZXRIZWlnaHQFCmxhc3RIZWlnaHQACmJhc2VBbW91bnQJAKADAQkAvQIECQC2AgEJAPAHAgUQV1hfQlVSTlhUTl9XQVZFUwUGc3dhdmVzBQ9sYXN0UmF0ZVVwZGF0ZWQJALYCAQCAoJSljR0FBUZMT09SAAl3YXZlc0luV1gJAGQCCAkA7wcBBRBXWF9CVVJOWFROX1dBVkVTB3JlZ3VsYXIFCmJhc2VBbW91bnQAC2J1cm54dG5JbldYCQDwBwIFEFdYX0JVUk5YVE5fV0FWRVMFCWJ1cm54dG5JZAARYnVybnh0bndhdmVzcHJpY2UJAGsDBQJkOAUJd2F2ZXNJbldYBQtidXJueHRuSW5XWAEKaXNTaHV0ZG93bgAEByRtYXRjaDAJAJsIAgUEdGhpcwILaXNfc2h1dGRvd24DCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBeAUHJG1hdGNoMAUBeAcGAWkBCHNodXRkb3duAQhzaHV0ZG93bgMJAAACCAUBaQZjYWxsZXIFBHRoaXMJAMwIAgkBDEJvb2xlYW5FbnRyeQICC2lzX3NodXRkb3duBQhzaHV0ZG93bgUDbmlsCQACAQIKYWRtaW4gb25seQFpAQRzd2FwAgxhbW91bnRPdXRNaW4IQXNzZXRPdXQDAwkAAAIJAQppc1NodXRkb3duAAYJAQIhPQIIBQFpBmNhbGxlcgkBB0FkZHJlc3MBARoBV44d5lHKOCPOw5HDxFaL1YPTb4hW/zbdCwcJAAIBAhRjb250cmFjdCBpcyBzaHV0ZG93bgQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECGFtb3VudEluCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQNZmVlUG9vbEFtb3VudAkAawMFCGFtb3VudEluBQNmZWUFCGZlZVNjYWxlBA1jbGVhbkFtb3VudEluCQBlAgUIYW1vdW50SW4FDWZlZVBvb2xBbW91bnQEB2Fzc2V0SW4JAQ9hc3NldElkVG9TdHJpbmcBCAUDcG10B2Fzc2V0SWQECWlzUmV2ZXJzZQMJAAACBQdhc3NldEluBQRhbUlkBwYECyR0MDc1NjQ3OTQ0AwkAAAIFCWlzUmV2ZXJzZQcECGFzc2V0T3V0BQRwcklkBBNwb29sQW1vdW50SW5CYWxhbmNlCQC3AgIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkCQC2AgEFDWNsZWFuQW1vdW50SW4JAJQKAgUIYXNzZXRPdXQFE3Bvb2xBbW91bnRJbkJhbGFuY2UECGFzc2V0T3V0BQRhbUlkBBNwb29sQW1vdW50SW5CYWxhbmNlCQC3AgIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQRwcklkCQC2AgEFDWNsZWFuQW1vdW50SW4JAJQKAgUIYXNzZXRPdXQFE3Bvb2xBbW91bnRJbkJhbGFuY2UECGFzc2V0T3V0CAULJHQwNzU2NDc5NDQCXzEEE3Bvb2xBbW91bnRJbkJhbGFuY2UIBQskdDA3NTY0Nzk0NAJfMgQCeHADCQAAAgUJaXNSZXZlcnNlBwkAzAgCCQC4AgIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkCQC2AgEICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQRwcklkBQNuaWwJAMwIAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQJAMwIAgkAuAICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDbmlsBAFECQEEZ2V0RAEFAnhwBAF5CQEEZ2V0WQMFCWlzUmV2ZXJzZQUBRAkAtgIBAAAEAmR5CQC4AgIJALgCAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEFCEFzc2V0T3V0BQF5CQC2AgEAAQQLdG90YWxHZXRSYXcJAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJkeQUDbmlsBAhjaGVja01pbgMJAGcCBQt0b3RhbEdldFJhdwUMYW1vdW50T3V0TWluBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFCGNoZWNrTWluBQhjaGVja01pbgQFbmV3WHADCQAAAgUJaXNSZXZlcnNlBwkAzAgCCQC3AgIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkCQC2AgEFDWZlZVBvb2xBbW91bnQJAMwIAgkAuAICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAUCZHkFA25pbAkAzAgCCQC4AgIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBQJkeQkAzAgCCQC3AgIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQRwcklkCQC2AgEFDWZlZVBvb2xBbW91bnQFA25pbAQEbmV3RAkBBGdldEQBBQVuZXdYcAQGY2hlY2tEAwkAwAICBQRuZXdEBQFEBgkAAgECFG5ldyBEIGlzIGZld2VyIGVycm9yAwkAAAIFBmNoZWNrRAUGY2hlY2tEBAd1bnN0YWtlAwkAAAIFCEFzc2V0T3V0BQRhbUlkCQD8BwQFCFVTRENk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QGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAg9BVEggaW4gd2F2ZWxldHMACgAUBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAAKCQD8BwQFCHByb2plY3RCAgtidXJuQlVSTlhUTgUDbmlsBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAAKCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlJbnZva2VOZXh0AAsFA25pbAMJAAACCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rZXlJbnZva2VOZXh0AAsJAPwHBAUIcHJvamVjdEICBWdyb3cxBQNuaWwFA25pbAMJAAACCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rZXlJbnZva2VOZXh0AAsJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleUludm9rZU5leHQADAUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQADAkA/AcEBQhwcm9qZWN0QgIFZ3JvdzIFA25pbAUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQADAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5SW52b2tlTmV4dAANBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAANCQD8BwQFCHByb2plY3RCAgVncm93MwUDbmlsBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAANCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlJbnZva2VOZXh0AA4FA25pbAMJAAACCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rZXlJbnZva2VOZXh0AA4JAPwHBAUIcHJvamVjdEICBWdyb3c0BQNuaWwFA25pbAMJAAACCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rZXlJbnZva2VOZXh0AA4JAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleUludm9rZU5leHQADwUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQADwkA/AcEBQhwcm9qZWN0QgIFZ3JvdzUFA25pbAUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQADwkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5SW52b2tlTmV4dAAQBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAAQCQD8BwQFCHByb2plY3RCAgVncm93NgUDbmlsBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAAQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlJbnZva2VOZXh0AB4FA25pbAMJAAACCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rZXlJbnZva2VOZXh0ABQJAPwHBAUIcHJvamVjdEICBHB1bXAFA25pbAUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQAFAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5SW52b2tlTmV4dAAeBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAAeCQD8BwQFCHByb2plY3RCAgVQWmJiYgUDbmlsBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAAeCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlJbnZva2VOZXh0AB8FA25pbAMJAAACCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rZXlJbnZva2VOZXh0AB8JAPwHBAUIcHJvamVjdEICCGNsYWltQkJCBQNuaWwFA25pbAMJAAACCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rZXlJbnZva2VOZXh0AB8JAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleUludm9rZU5leHQAIAUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQAIAkA/AcEBQhwcm9qZWN0QgIIYnVyblNVUkYFA25pbAUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQAIAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5SW52b2tlTmV4dAAoBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAAhCQD8BwQFCHByb2plY3RCAgtwdXp6bGVQWmJiYgUDbmlsBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAAhCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlJbnZva2VOZXh0ACIFA25pbAMJAAACCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rZXlJbnZva2VOZXh0ACIJAPwHBAUIcHJvamVjdEICCnN0YWtlUFpiYmIFA25pbAUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQAIgkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5SW52b2tlTmV4dAAjBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAAoCQD8BwQFCHByb2plY3RCAgZkRW50cnkFA25pbAUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQAKAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5SW52b2tlTmV4dAAyBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAAyCQD8BwQFB3Jld2FyZHMCDGNsYWltUmV3YXJkcwUDbmlsBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAAyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlJbnZva2VOZXh0ADMFA25pbAMJAAACCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rZXlJbnZva2VOZXh0ADMJAPwHBAUHcmV3YXJkcwIOc2hpbGxlclJld2FyZHMFA25pbAUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQAMwkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5SW52b2tlTmV4dAA0BQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAA0CQD8BwQFB3Jld2FyZHMCDGFkbWluUmV3YXJkcwUDbmlsBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAA0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlJbnZva2VOZXh0ADwFA25pbAMJAAACCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rZXlJbnZva2VOZXh0ADwJAPwHBAUGYm91bnR5AhJ1cGRhdGVCYWxhbmNlRW50cnkFA25pbAUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQAPAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5SW52b2tlTmV4dAA9BQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAA9CQD8BwQFBmJvdW50eQIFY2xhaW0FA25pbAUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQAPQkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5SW52b2tlTmV4dAA+BQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAA+CQD8BwQFBmJvdW50eQIEc3dhcAUDbmlsBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dAA+CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlJbnZva2VOZXh0AD8FA25pbAMJAAACCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rZXlJbnZva2VOZXh0AD8JAPwHBAUGYm91bnR5Ag90b3RhbEJhbGFuY2VBbGwFA25pbAUDbmlsAwkAAAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtleUludm9rZU5leHQAPwkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5SW52b2tlTmV4dABABQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dABACQD8BwQFBmJvdW50eQIKcGF5UmV3YXJkcwUDbmlsBQNuaWwDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa2V5SW52b2tlTmV4dABACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlJbnZva2VOZXh0AEYFA25pbAUEdW5pdAMJAAACBQVpbnYwMAUFaW52MDAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxiYWxhbmNlX2luZm8ACQDMCAIJAQxJbnRlZ2VyRW50cnkCAgRVU0RDCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQJAMwIAgkBDEludGVnZXJFbnRyeQICBFVTRFQJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgIJVVNEIHRvdGFsCQBkAgkBDWdldEFjY0JhbGFuY2UBBQRhbUlkCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQFA25pbAFpAQtjaGFuZ2VFbnRyeQEKSW52b2tlTmV4dAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleUludm9rZU5leHQFCkludm9rZU5leHQFA25pbAD2jrk7", "height": 4099521, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6PZbSwGQ6HbzpAJUC42PKiuZaGrWSjiaCru2QbMrSPvh Next: 9DRZPFsZ7GfcZvAzBQoLRTk3Q3YHDf6Zs4dSiYu6o5dw Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let keyInvokeNext = "invoke next" | |
5 | + | ||
6 | + | let d8 = 100000000 | |
7 | + | ||
8 | + | let projectB = Address(base58'3PCBL2vbjAVFbiCwmGsPmT6QdATutQnM8ov') | |
9 | + | ||
10 | + | let rewards = Address(base58'3P6H24XKLyRX8RKwyA5ARsChE6WhjDcVBiZ') | |
11 | + | ||
12 | + | let bounty = Address(base58'3PJXxPS9FxZsSLyP9gA47dSLwMinoFyfYFC') | |
13 | + | ||
4 | 14 | let vvxtnlp = base58'8KEtor9aSsSj38MknyAE7k1uRThHY9prAXgiE4D7WpyL' | |
15 | + | ||
16 | + | let swaves = base58'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7' | |
17 | + | ||
18 | + | let burnxtnId = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns' | |
5 | 19 | ||
6 | 20 | let USDTdapp = Address(base58'3PQtT2o7g8HmcZLGodx4L7YDe7ngb26wjYk') | |
7 | 21 | ||
88 | 102 | } | |
89 | 103 | ||
90 | 104 | let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] | |
91 | - | let $ | |
105 | + | let $t034793527 = { | |
92 | 106 | let $l = arr | |
93 | 107 | let $s = size($l) | |
94 | 108 | let $acc0 = $Tuple2(s, false) | |
102 | 116 | ||
103 | 117 | $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($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17) | |
104 | 118 | } | |
105 | - | let d = $ | |
106 | - | let found = $ | |
119 | + | let d = $t034793527._1 | |
120 | + | let found = $t034793527._2 | |
107 | 121 | if (found) | |
108 | 122 | then d | |
109 | 123 | else throw(("D calculation error, D = " + toString(d))) | |
124 | 138 | let c = (((((D * D) / (x * n)) * D) * aPrecision) / (ann * n)) | |
125 | 139 | let b = ((s + ((D * aPrecision) / ann)) - D) | |
126 | 140 | func calc (acc,cur) = { | |
127 | - | let $ | |
128 | - | let y = $ | |
129 | - | let found = $ | |
141 | + | let $t051255145 = acc | |
142 | + | let y = $t051255145._1 | |
143 | + | let found = $t051255145._2 | |
130 | 144 | if ((found != unit)) | |
131 | 145 | then acc | |
132 | 146 | else { | |
139 | 153 | } | |
140 | 154 | ||
141 | 155 | let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] | |
142 | - | let $ | |
156 | + | let $t054765523 = { | |
143 | 157 | let $l = arr | |
144 | 158 | let $s = size($l) | |
145 | 159 | let $acc0 = $Tuple2(D, unit) | |
153 | 167 | ||
154 | 168 | $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) | |
155 | 169 | } | |
156 | - | let y = $ | |
157 | - | let found = $ | |
170 | + | let y = $t054765523._1 | |
171 | + | let found = $t054765523._2 | |
158 | 172 | if ((found != unit)) | |
159 | 173 | then y | |
160 | 174 | else throw(("Y calculation error, Y = " + toString(y))) | |
161 | 175 | } | |
162 | 176 | ||
177 | + | ||
178 | + | let SWAVES_stake = Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV') | |
179 | + | ||
180 | + | func _loadInt (key_,default_) = match getInteger(SWAVES_stake, key_) { | |
181 | + | case a: Int => | |
182 | + | a | |
183 | + | case _ => | |
184 | + | default_ | |
185 | + | } | |
186 | + | ||
187 | + | ||
188 | + | func _loadBigInt (key_,default_) = match getBinary(SWAVES_stake, key_) { | |
189 | + | case a: ByteVector => | |
190 | + | toBigInt(a) | |
191 | + | case _ => | |
192 | + | default_ | |
193 | + | } | |
194 | + | ||
195 | + | ||
196 | + | let WX_BURNXTN_WAVES = Address(base58'3P5vwLbXddLWpsRspftMxLuzfsjk3dLT3n5') | |
197 | + | ||
198 | + | let lastRate = _loadBigInt("LAST_RATE", toBigInt(1000000000000)) | |
199 | + | ||
200 | + | let currentRate = _loadBigInt("CURRENT_RATE", toBigInt(0)) | |
201 | + | ||
202 | + | let lastHeight = _loadInt("LAST_HEIGHT", 0) | |
203 | + | ||
204 | + | let targetHeight = min([_loadInt("TARGET_HEIGHT", 0), height]) | |
205 | + | ||
206 | + | let lastRateUpdated = (lastRate + (currentRate * toBigInt((targetHeight - lastHeight)))) | |
207 | + | ||
208 | + | let baseAmount = toInt(fraction(toBigInt(assetBalance(WX_BURNXTN_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR)) | |
209 | + | ||
210 | + | let wavesInWX = (wavesBalance(WX_BURNXTN_WAVES).regular + baseAmount) | |
211 | + | ||
212 | + | let burnxtnInWX = assetBalance(WX_BURNXTN_WAVES, burnxtnId) | |
213 | + | ||
214 | + | let burnxtnwavesprice = fraction(d8, wavesInWX, burnxtnInWX) | |
163 | 215 | ||
164 | 216 | func isShutdown () = match getBoolean(this, "is_shutdown") { | |
165 | 217 | case x: Boolean => | |
190 | 242 | let isReverse = if ((assetIn == amId)) | |
191 | 243 | then false | |
192 | 244 | else true | |
193 | - | let $ | |
245 | + | let $t075647944 = if ((isReverse == false)) | |
194 | 246 | then { | |
195 | 247 | let assetOut = prId | |
196 | 248 | let poolAmountInBalance = (toBigInt(getAccBalance(amId)) + toBigInt(cleanAmountIn)) | |
201 | 253 | let poolAmountInBalance = (toBigInt(getAccBalance(prId)) + toBigInt(cleanAmountIn)) | |
202 | 254 | $Tuple2(assetOut, poolAmountInBalance) | |
203 | 255 | } | |
204 | - | let assetOut = $ | |
205 | - | let poolAmountInBalance = $ | |
256 | + | let assetOut = $t075647944._1 | |
257 | + | let poolAmountInBalance = $t075647944._2 | |
206 | 258 | let xp = if ((isReverse == false)) | |
207 | 259 | then [(toBigInt(getAccBalance(amId)) - toBigInt(value(i.payments[0]).amount)), toBigInt(getAccBalance(prId))] | |
208 | 260 | else [toBigInt(getAccBalance(amId)), (toBigInt(getAccBalance(prId)) - toBigInt(value(i.payments[0]).amount))] | |
233 | 285 | then invoke(USDTdapp, "stake", nil, [AttachedPayment(fromBase58String(prId), assetBalance(this, fromBase58String(prId)))]) | |
234 | 286 | else invoke(USDCdapp, "stake", nil, [AttachedPayment(fromBase58String(amId), assetBalance(this, fromBase58String(amId)))]) | |
235 | 287 | if ((stake == stake)) | |
236 | - | then [ScriptTransfer(i.caller, totalGetRaw, parseAssetId(assetOut))] | |
288 | + | then { | |
289 | + | let selector = invoke(this, "selector", nil, nil) | |
290 | + | if ((selector == selector)) | |
291 | + | then [ScriptTransfer(i.caller, totalGetRaw, parseAssetId(assetOut))] | |
292 | + | else throw("Strict value is not equal to itself.") | |
293 | + | } | |
237 | 294 | else throw("Strict value is not equal to itself.") | |
238 | 295 | } | |
239 | 296 | else throw("Strict value is not equal to itself.") | |
271 | 328 | } | |
272 | 329 | ||
273 | 330 | ||
331 | + | ||
332 | + | @Callable(i) | |
333 | + | func selector () = if ((i.caller != this)) | |
334 | + | then throw("no access") | |
335 | + | else { | |
336 | + | let inv00 = if ((getIntegerValue(this, keyInvokeNext) == 0)) | |
337 | + | then invoke(projectB, "burnXTNandClaim", nil, nil) | |
338 | + | else if ((getIntegerValue(this, keyInvokeNext) == 0)) | |
339 | + | then [IntegerEntry(keyInvokeNext, 1)] | |
340 | + | else if ((getIntegerValue(this, keyInvokeNext) == 1)) | |
341 | + | then invoke(projectB, "SURFandVVXTNLP", nil, nil) | |
342 | + | else if ((getIntegerValue(this, keyInvokeNext) == 1)) | |
343 | + | then [IntegerEntry(keyInvokeNext, if ((burnxtnwavesprice >= getIntegerValue(this, "ATH in wavelets"))) | |
344 | + | then 10 | |
345 | + | else 20)] | |
346 | + | else if ((getIntegerValue(this, keyInvokeNext) == 10)) | |
347 | + | then invoke(projectB, "burnBURNXTN", nil, nil) | |
348 | + | else if ((getIntegerValue(this, keyInvokeNext) == 10)) | |
349 | + | then [IntegerEntry(keyInvokeNext, 11)] | |
350 | + | else if ((getIntegerValue(this, keyInvokeNext) == 11)) | |
351 | + | then invoke(projectB, "grow1", nil, nil) | |
352 | + | else if ((getIntegerValue(this, keyInvokeNext) == 11)) | |
353 | + | then [IntegerEntry(keyInvokeNext, 12)] | |
354 | + | else if ((getIntegerValue(this, keyInvokeNext) == 12)) | |
355 | + | then invoke(projectB, "grow2", nil, nil) | |
356 | + | else if ((getIntegerValue(this, keyInvokeNext) == 12)) | |
357 | + | then [IntegerEntry(keyInvokeNext, 13)] | |
358 | + | else if ((getIntegerValue(this, keyInvokeNext) == 13)) | |
359 | + | then invoke(projectB, "grow3", nil, nil) | |
360 | + | else if ((getIntegerValue(this, keyInvokeNext) == 13)) | |
361 | + | then [IntegerEntry(keyInvokeNext, 14)] | |
362 | + | else if ((getIntegerValue(this, keyInvokeNext) == 14)) | |
363 | + | then invoke(projectB, "grow4", nil, nil) | |
364 | + | else if ((getIntegerValue(this, keyInvokeNext) == 14)) | |
365 | + | then [IntegerEntry(keyInvokeNext, 15)] | |
366 | + | else if ((getIntegerValue(this, keyInvokeNext) == 15)) | |
367 | + | then invoke(projectB, "grow5", nil, nil) | |
368 | + | else if ((getIntegerValue(this, keyInvokeNext) == 15)) | |
369 | + | then [IntegerEntry(keyInvokeNext, 16)] | |
370 | + | else if ((getIntegerValue(this, keyInvokeNext) == 16)) | |
371 | + | then invoke(projectB, "grow6", nil, nil) | |
372 | + | else if ((getIntegerValue(this, keyInvokeNext) == 16)) | |
373 | + | then [IntegerEntry(keyInvokeNext, 30)] | |
374 | + | else if ((getIntegerValue(this, keyInvokeNext) == 20)) | |
375 | + | then invoke(projectB, "pump", nil, nil) | |
376 | + | else if ((getIntegerValue(this, keyInvokeNext) == 20)) | |
377 | + | then [IntegerEntry(keyInvokeNext, 30)] | |
378 | + | else if ((getIntegerValue(this, keyInvokeNext) == 30)) | |
379 | + | then invoke(projectB, "PZbbb", nil, nil) | |
380 | + | else if ((getIntegerValue(this, keyInvokeNext) == 30)) | |
381 | + | then [IntegerEntry(keyInvokeNext, 31)] | |
382 | + | else if ((getIntegerValue(this, keyInvokeNext) == 31)) | |
383 | + | then invoke(projectB, "claimBBB", nil, nil) | |
384 | + | else if ((getIntegerValue(this, keyInvokeNext) == 31)) | |
385 | + | then [IntegerEntry(keyInvokeNext, 32)] | |
386 | + | else if ((getIntegerValue(this, keyInvokeNext) == 32)) | |
387 | + | then invoke(projectB, "burnSURF", nil, nil) | |
388 | + | else if ((getIntegerValue(this, keyInvokeNext) == 32)) | |
389 | + | then [IntegerEntry(keyInvokeNext, 40)] | |
390 | + | else if ((getIntegerValue(this, keyInvokeNext) == 33)) | |
391 | + | then invoke(projectB, "puzzlePZbbb", nil, nil) | |
392 | + | else if ((getIntegerValue(this, keyInvokeNext) == 33)) | |
393 | + | then [IntegerEntry(keyInvokeNext, 34)] | |
394 | + | else if ((getIntegerValue(this, keyInvokeNext) == 34)) | |
395 | + | then invoke(projectB, "stakePZbbb", nil, nil) | |
396 | + | else if ((getIntegerValue(this, keyInvokeNext) == 34)) | |
397 | + | then [IntegerEntry(keyInvokeNext, 35)] | |
398 | + | else if ((getIntegerValue(this, keyInvokeNext) == 40)) | |
399 | + | then invoke(projectB, "dEntry", nil, nil) | |
400 | + | else if ((getIntegerValue(this, keyInvokeNext) == 40)) | |
401 | + | then [IntegerEntry(keyInvokeNext, 50)] | |
402 | + | else if ((getIntegerValue(this, keyInvokeNext) == 50)) | |
403 | + | then invoke(rewards, "claimRewards", nil, nil) | |
404 | + | else if ((getIntegerValue(this, keyInvokeNext) == 50)) | |
405 | + | then [IntegerEntry(keyInvokeNext, 51)] | |
406 | + | else if ((getIntegerValue(this, keyInvokeNext) == 51)) | |
407 | + | then invoke(rewards, "shillerRewards", nil, nil) | |
408 | + | else if ((getIntegerValue(this, keyInvokeNext) == 51)) | |
409 | + | then [IntegerEntry(keyInvokeNext, 52)] | |
410 | + | else if ((getIntegerValue(this, keyInvokeNext) == 52)) | |
411 | + | then invoke(rewards, "adminRewards", nil, nil) | |
412 | + | else if ((getIntegerValue(this, keyInvokeNext) == 52)) | |
413 | + | then [IntegerEntry(keyInvokeNext, 60)] | |
414 | + | else if ((getIntegerValue(this, keyInvokeNext) == 60)) | |
415 | + | then invoke(bounty, "updateBalanceEntry", nil, nil) | |
416 | + | else if ((getIntegerValue(this, keyInvokeNext) == 60)) | |
417 | + | then [IntegerEntry(keyInvokeNext, 61)] | |
418 | + | else if ((getIntegerValue(this, keyInvokeNext) == 61)) | |
419 | + | then invoke(bounty, "claim", nil, nil) | |
420 | + | else if ((getIntegerValue(this, keyInvokeNext) == 61)) | |
421 | + | then [IntegerEntry(keyInvokeNext, 62)] | |
422 | + | else if ((getIntegerValue(this, keyInvokeNext) == 62)) | |
423 | + | then invoke(bounty, "swap", nil, nil) | |
424 | + | else if ((getIntegerValue(this, keyInvokeNext) == 62)) | |
425 | + | then [IntegerEntry(keyInvokeNext, 63)] | |
426 | + | else if ((getIntegerValue(this, keyInvokeNext) == 63)) | |
427 | + | then invoke(bounty, "totalBalanceAll", nil, nil) | |
428 | + | else if ((getIntegerValue(this, keyInvokeNext) == 63)) | |
429 | + | then [IntegerEntry(keyInvokeNext, 64)] | |
430 | + | else if ((getIntegerValue(this, keyInvokeNext) == 64)) | |
431 | + | then invoke(bounty, "payRewards", nil, nil) | |
432 | + | else if ((getIntegerValue(this, keyInvokeNext) == 64)) | |
433 | + | then [IntegerEntry(keyInvokeNext, 70)] | |
434 | + | else unit | |
435 | + | if ((inv00 == inv00)) | |
436 | + | then nil | |
437 | + | else throw("Strict value is not equal to itself.") | |
438 | + | } | |
439 | + | ||
440 | + | ||
441 | + | ||
442 | + | @Callable(i) | |
443 | + | func balance_info () = [IntegerEntry("USDC", getAccBalance(amId)), IntegerEntry("USDT", getAccBalance(prId)), IntegerEntry("USD total", (getAccBalance(amId) + getAccBalance(prId)))] | |
444 | + | ||
445 | + | ||
446 | + | ||
447 | + | @Callable(i) | |
448 | + | func changeEntry (InvokeNext) = if ((i.caller != this)) | |
449 | + | then throw("access only by project owner") | |
450 | + | else [IntegerEntry(keyInvokeNext, InvokeNext)] | |
451 | + | ||
452 | + |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let keyInvokeNext = "invoke next" | |
5 | + | ||
6 | + | let d8 = 100000000 | |
7 | + | ||
8 | + | let projectB = Address(base58'3PCBL2vbjAVFbiCwmGsPmT6QdATutQnM8ov') | |
9 | + | ||
10 | + | let rewards = Address(base58'3P6H24XKLyRX8RKwyA5ARsChE6WhjDcVBiZ') | |
11 | + | ||
12 | + | let bounty = Address(base58'3PJXxPS9FxZsSLyP9gA47dSLwMinoFyfYFC') | |
13 | + | ||
4 | 14 | let vvxtnlp = base58'8KEtor9aSsSj38MknyAE7k1uRThHY9prAXgiE4D7WpyL' | |
15 | + | ||
16 | + | let swaves = base58'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7' | |
17 | + | ||
18 | + | let burnxtnId = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns' | |
5 | 19 | ||
6 | 20 | let USDTdapp = Address(base58'3PQtT2o7g8HmcZLGodx4L7YDe7ngb26wjYk') | |
7 | 21 | ||
8 | 22 | let USDCdapp = Address(base58'3PLrr8LpfYjUadnEQ1ov61uMWHdMopUCNAm') | |
9 | 23 | ||
10 | 24 | let zeroBigInt = toBigInt(0) | |
11 | 25 | ||
12 | 26 | let big0 = toBigInt(0) | |
13 | 27 | ||
14 | 28 | let big1 = toBigInt(1) | |
15 | 29 | ||
16 | 30 | let big2 = toBigInt(2) | |
17 | 31 | ||
18 | 32 | let big3 = toBigInt(3) | |
19 | 33 | ||
20 | 34 | let big4 = toBigInt(4) | |
21 | 35 | ||
22 | 36 | let wavesString = "WAVES" | |
23 | 37 | ||
24 | 38 | let Amult = "100" | |
25 | 39 | ||
26 | 40 | func assetIdToString (input) = if ((input == unit)) | |
27 | 41 | then wavesString | |
28 | 42 | else toBase58String(value(input)) | |
29 | 43 | ||
30 | 44 | ||
31 | 45 | func absBigInt (val) = if ((zeroBigInt > val)) | |
32 | 46 | then -(val) | |
33 | 47 | else val | |
34 | 48 | ||
35 | 49 | ||
36 | 50 | let amId = "3ayH3PhWMkhFsySsUVcC8BvFf1QyxGB5BZuTPyVtmP4v" | |
37 | 51 | ||
38 | 52 | let prId = "G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC" | |
39 | 53 | ||
40 | 54 | let A = "2000" | |
41 | 55 | ||
42 | 56 | let fee = 1 | |
43 | 57 | ||
44 | 58 | let feeScale = 10000 | |
45 | 59 | ||
46 | 60 | func getAccBalance (assetId) = if ((assetId == amId)) | |
47 | 61 | then (assetBalance(this, fromBase58String(assetId)) + getIntegerValue(USDCdapp, ("USER_LP__" + toString(this)))) | |
48 | 62 | else (assetBalance(this, fromBase58String(assetId)) + getIntegerValue(USDTdapp, ("USER_LP__" + toString(this)))) | |
49 | 63 | ||
50 | 64 | ||
51 | 65 | func parseAssetId (input) = if ((input == wavesString)) | |
52 | 66 | then unit | |
53 | 67 | else fromBase58String(input) | |
54 | 68 | ||
55 | 69 | ||
56 | 70 | func getD (xp) = { | |
57 | 71 | let xp0 = xp[0] | |
58 | 72 | let xp1 = xp[1] | |
59 | 73 | let s = (xp0 + xp1) | |
60 | 74 | if ((s == big0)) | |
61 | 75 | then big0 | |
62 | 76 | else { | |
63 | 77 | let a = parseIntValue(A) | |
64 | 78 | let ann = (a * 2) | |
65 | 79 | let p = fraction(xp0, xp1, big1) | |
66 | 80 | let xp0_xp1_n_n = fraction(p, big4, big1) | |
67 | 81 | let ann_s = fraction(toBigInt(ann), s, big1) | |
68 | 82 | let ann_1 = toBigInt((ann - 1)) | |
69 | 83 | func calcDNext (d) = { | |
70 | 84 | let dd = fraction(d, d, big1) | |
71 | 85 | let ddd = fraction(dd, d, big1) | |
72 | 86 | let dp = fraction(ddd, big1, xp0_xp1_n_n) | |
73 | 87 | fraction((ann_s + fraction(dp, big2, big1)), d, (fraction(ann_1, d, big1) + fraction(big3, dp, big1))) | |
74 | 88 | } | |
75 | 89 | ||
76 | 90 | func calc (acc,i) = if (acc._2) | |
77 | 91 | then acc | |
78 | 92 | else { | |
79 | 93 | let d = acc._1 | |
80 | 94 | let dNext = calcDNext(d) | |
81 | 95 | let dDiffRaw = (dNext - value(d)) | |
82 | 96 | let dDiff = if ((big0 > dDiffRaw)) | |
83 | 97 | then -(dDiffRaw) | |
84 | 98 | else dDiffRaw | |
85 | 99 | if ((big1 >= dDiff)) | |
86 | 100 | then $Tuple2(dNext, true) | |
87 | 101 | else $Tuple2(dNext, false) | |
88 | 102 | } | |
89 | 103 | ||
90 | 104 | let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] | |
91 | - | let $ | |
105 | + | let $t034793527 = { | |
92 | 106 | let $l = arr | |
93 | 107 | let $s = size($l) | |
94 | 108 | let $acc0 = $Tuple2(s, false) | |
95 | 109 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
96 | 110 | then $a | |
97 | 111 | else calc($a, $l[$i]) | |
98 | 112 | ||
99 | 113 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
100 | 114 | then $a | |
101 | 115 | else throw("List size exceeds 17") | |
102 | 116 | ||
103 | 117 | $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($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17) | |
104 | 118 | } | |
105 | - | let d = $ | |
106 | - | let found = $ | |
119 | + | let d = $t034793527._1 | |
120 | + | let found = $t034793527._2 | |
107 | 121 | if (found) | |
108 | 122 | then d | |
109 | 123 | else throw(("D calculation error, D = " + toString(d))) | |
110 | 124 | } | |
111 | 125 | } | |
112 | 126 | ||
113 | 127 | ||
114 | 128 | func getY (isReverse,D,poolAmountInBalance) = { | |
115 | 129 | let n = big2 | |
116 | 130 | let aPrecision = parseBigIntValue(Amult) | |
117 | 131 | let a = (parseBigIntValue(A) * aPrecision) | |
118 | 132 | let xp = if ((isReverse == false)) | |
119 | 133 | then [(toBigInt(getAccBalance(amId)) + poolAmountInBalance), toBigInt(getAccBalance(prId))] | |
120 | 134 | else [(toBigInt(getAccBalance(prId)) + poolAmountInBalance), toBigInt(getAccBalance(amId))] | |
121 | 135 | let x = xp[0] | |
122 | 136 | let s = x | |
123 | 137 | let ann = (a * n) | |
124 | 138 | let c = (((((D * D) / (x * n)) * D) * aPrecision) / (ann * n)) | |
125 | 139 | let b = ((s + ((D * aPrecision) / ann)) - D) | |
126 | 140 | func calc (acc,cur) = { | |
127 | - | let $ | |
128 | - | let y = $ | |
129 | - | let found = $ | |
141 | + | let $t051255145 = acc | |
142 | + | let y = $t051255145._1 | |
143 | + | let found = $t051255145._2 | |
130 | 144 | if ((found != unit)) | |
131 | 145 | then acc | |
132 | 146 | else { | |
133 | 147 | let yNext = (((y * y) + c) / ((big2 * y) + b)) | |
134 | 148 | let yDiff = absBigInt((yNext - value(y))) | |
135 | 149 | if ((big1 >= yDiff)) | |
136 | 150 | then $Tuple2(yNext, cur) | |
137 | 151 | else $Tuple2(yNext, unit) | |
138 | 152 | } | |
139 | 153 | } | |
140 | 154 | ||
141 | 155 | let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] | |
142 | - | let $ | |
156 | + | let $t054765523 = { | |
143 | 157 | let $l = arr | |
144 | 158 | let $s = size($l) | |
145 | 159 | let $acc0 = $Tuple2(D, unit) | |
146 | 160 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
147 | 161 | then $a | |
148 | 162 | else calc($a, $l[$i]) | |
149 | 163 | ||
150 | 164 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
151 | 165 | then $a | |
152 | 166 | else throw("List size exceeds 15") | |
153 | 167 | ||
154 | 168 | $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) | |
155 | 169 | } | |
156 | - | let y = $ | |
157 | - | let found = $ | |
170 | + | let y = $t054765523._1 | |
171 | + | let found = $t054765523._2 | |
158 | 172 | if ((found != unit)) | |
159 | 173 | then y | |
160 | 174 | else throw(("Y calculation error, Y = " + toString(y))) | |
161 | 175 | } | |
162 | 176 | ||
177 | + | ||
178 | + | let SWAVES_stake = Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV') | |
179 | + | ||
180 | + | func _loadInt (key_,default_) = match getInteger(SWAVES_stake, key_) { | |
181 | + | case a: Int => | |
182 | + | a | |
183 | + | case _ => | |
184 | + | default_ | |
185 | + | } | |
186 | + | ||
187 | + | ||
188 | + | func _loadBigInt (key_,default_) = match getBinary(SWAVES_stake, key_) { | |
189 | + | case a: ByteVector => | |
190 | + | toBigInt(a) | |
191 | + | case _ => | |
192 | + | default_ | |
193 | + | } | |
194 | + | ||
195 | + | ||
196 | + | let WX_BURNXTN_WAVES = Address(base58'3P5vwLbXddLWpsRspftMxLuzfsjk3dLT3n5') | |
197 | + | ||
198 | + | let lastRate = _loadBigInt("LAST_RATE", toBigInt(1000000000000)) | |
199 | + | ||
200 | + | let currentRate = _loadBigInt("CURRENT_RATE", toBigInt(0)) | |
201 | + | ||
202 | + | let lastHeight = _loadInt("LAST_HEIGHT", 0) | |
203 | + | ||
204 | + | let targetHeight = min([_loadInt("TARGET_HEIGHT", 0), height]) | |
205 | + | ||
206 | + | let lastRateUpdated = (lastRate + (currentRate * toBigInt((targetHeight - lastHeight)))) | |
207 | + | ||
208 | + | let baseAmount = toInt(fraction(toBigInt(assetBalance(WX_BURNXTN_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR)) | |
209 | + | ||
210 | + | let wavesInWX = (wavesBalance(WX_BURNXTN_WAVES).regular + baseAmount) | |
211 | + | ||
212 | + | let burnxtnInWX = assetBalance(WX_BURNXTN_WAVES, burnxtnId) | |
213 | + | ||
214 | + | let burnxtnwavesprice = fraction(d8, wavesInWX, burnxtnInWX) | |
163 | 215 | ||
164 | 216 | func isShutdown () = match getBoolean(this, "is_shutdown") { | |
165 | 217 | case x: Boolean => | |
166 | 218 | x | |
167 | 219 | case _ => | |
168 | 220 | false | |
169 | 221 | } | |
170 | 222 | ||
171 | 223 | ||
172 | 224 | @Callable(i) | |
173 | 225 | func shutdown (shutdown) = if ((i.caller == this)) | |
174 | 226 | then [BooleanEntry("is_shutdown", shutdown)] | |
175 | 227 | else throw("admin only") | |
176 | 228 | ||
177 | 229 | ||
178 | 230 | ||
179 | 231 | @Callable(i) | |
180 | 232 | func swap (amountOutMin,AssetOut) = if (if ((isShutdown() == true)) | |
181 | 233 | then (i.caller != Address(base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk')) | |
182 | 234 | else false) | |
183 | 235 | then throw("contract is shutdown") | |
184 | 236 | else { | |
185 | 237 | let pmt = value(i.payments[0]) | |
186 | 238 | let amountIn = value(i.payments[0].amount) | |
187 | 239 | let feePoolAmount = fraction(amountIn, fee, feeScale) | |
188 | 240 | let cleanAmountIn = (amountIn - feePoolAmount) | |
189 | 241 | let assetIn = assetIdToString(pmt.assetId) | |
190 | 242 | let isReverse = if ((assetIn == amId)) | |
191 | 243 | then false | |
192 | 244 | else true | |
193 | - | let $ | |
245 | + | let $t075647944 = if ((isReverse == false)) | |
194 | 246 | then { | |
195 | 247 | let assetOut = prId | |
196 | 248 | let poolAmountInBalance = (toBigInt(getAccBalance(amId)) + toBigInt(cleanAmountIn)) | |
197 | 249 | $Tuple2(assetOut, poolAmountInBalance) | |
198 | 250 | } | |
199 | 251 | else { | |
200 | 252 | let assetOut = amId | |
201 | 253 | let poolAmountInBalance = (toBigInt(getAccBalance(prId)) + toBigInt(cleanAmountIn)) | |
202 | 254 | $Tuple2(assetOut, poolAmountInBalance) | |
203 | 255 | } | |
204 | - | let assetOut = $ | |
205 | - | let poolAmountInBalance = $ | |
256 | + | let assetOut = $t075647944._1 | |
257 | + | let poolAmountInBalance = $t075647944._2 | |
206 | 258 | let xp = if ((isReverse == false)) | |
207 | 259 | then [(toBigInt(getAccBalance(amId)) - toBigInt(value(i.payments[0]).amount)), toBigInt(getAccBalance(prId))] | |
208 | 260 | else [toBigInt(getAccBalance(amId)), (toBigInt(getAccBalance(prId)) - toBigInt(value(i.payments[0]).amount))] | |
209 | 261 | let D = getD(xp) | |
210 | 262 | let y = getY(isReverse, D, toBigInt(0)) | |
211 | 263 | let dy = ((toBigInt(getAccBalance(AssetOut)) - y) - toBigInt(1)) | |
212 | 264 | let totalGetRaw = max([0, toInt(dy)]) | |
213 | 265 | let checkMin = if ((totalGetRaw >= amountOutMin)) | |
214 | 266 | then true | |
215 | 267 | else throw("Exchange result is fewer coins than expected") | |
216 | 268 | if ((checkMin == checkMin)) | |
217 | 269 | then { | |
218 | 270 | let newXp = if ((isReverse == false)) | |
219 | 271 | then [(toBigInt(getAccBalance(amId)) + toBigInt(feePoolAmount)), (toBigInt(getAccBalance(prId)) - dy)] | |
220 | 272 | else [(toBigInt(getAccBalance(amId)) - dy), (toBigInt(getAccBalance(prId)) + toBigInt(feePoolAmount))] | |
221 | 273 | let newD = getD(newXp) | |
222 | 274 | let checkD = if ((newD >= D)) | |
223 | 275 | then true | |
224 | 276 | else throw("new D is fewer error") | |
225 | 277 | if ((checkD == checkD)) | |
226 | 278 | then { | |
227 | 279 | let unstake = if ((AssetOut == amId)) | |
228 | 280 | then invoke(USDCdapp, "unstake", [totalGetRaw], nil) | |
229 | 281 | else invoke(USDTdapp, "unstake", [totalGetRaw], nil) | |
230 | 282 | if ((unstake == unstake)) | |
231 | 283 | then { | |
232 | 284 | let stake = if ((AssetOut == amId)) | |
233 | 285 | then invoke(USDTdapp, "stake", nil, [AttachedPayment(fromBase58String(prId), assetBalance(this, fromBase58String(prId)))]) | |
234 | 286 | else invoke(USDCdapp, "stake", nil, [AttachedPayment(fromBase58String(amId), assetBalance(this, fromBase58String(amId)))]) | |
235 | 287 | if ((stake == stake)) | |
236 | - | then [ScriptTransfer(i.caller, totalGetRaw, parseAssetId(assetOut))] | |
288 | + | then { | |
289 | + | let selector = invoke(this, "selector", nil, nil) | |
290 | + | if ((selector == selector)) | |
291 | + | then [ScriptTransfer(i.caller, totalGetRaw, parseAssetId(assetOut))] | |
292 | + | else throw("Strict value is not equal to itself.") | |
293 | + | } | |
237 | 294 | else throw("Strict value is not equal to itself.") | |
238 | 295 | } | |
239 | 296 | else throw("Strict value is not equal to itself.") | |
240 | 297 | } | |
241 | 298 | else throw("Strict value is not equal to itself.") | |
242 | 299 | } | |
243 | 300 | else throw("Strict value is not equal to itself.") | |
244 | 301 | } | |
245 | 302 | ||
246 | 303 | ||
247 | 304 | ||
248 | 305 | @Callable(i) | |
249 | 306 | func invoker () = { | |
250 | 307 | let inv1 = invoke(Address(base58'3PAucbbumdUXmhzcR421zGiayphEdo2tRoz'), "withdraw", nil, nil) | |
251 | 308 | if ((inv1 == inv1)) | |
252 | 309 | then { | |
253 | 310 | let inv2 = if ((50 > assetBalance(Address(base58'3PAucbbumdUXmhzcR421zGiayphEdo2tRoz'), vvxtnlp))) | |
254 | 311 | then invoke(Address(base58'3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr'), "withdraw", nil, nil) | |
255 | 312 | else invoke(Address(base58'3PAucbbumdUXmhzcR421zGiayphEdo2tRoz'), "importVVXTNLP", nil, nil) | |
256 | 313 | if ((inv2 == inv2)) | |
257 | 314 | then { | |
258 | 315 | let inv3 = invoke(Address(base58'3PPCzX2doZ7agBNuGSKqjrbdXgGEtE7CpQ3'), "withdraw", nil, nil) | |
259 | 316 | if ((inv3 == inv3)) | |
260 | 317 | then { | |
261 | 318 | let inv4 = invoke(Address(base58'3PHLhWPrs1mrpM1ZDUv1VmUnZRwchADJELc'), "withdraw", nil, nil) | |
262 | 319 | if ((inv4 == inv4)) | |
263 | 320 | then nil | |
264 | 321 | else throw("Strict value is not equal to itself.") | |
265 | 322 | } | |
266 | 323 | else throw("Strict value is not equal to itself.") | |
267 | 324 | } | |
268 | 325 | else throw("Strict value is not equal to itself.") | |
269 | 326 | } | |
270 | 327 | else throw("Strict value is not equal to itself.") | |
271 | 328 | } | |
272 | 329 | ||
273 | 330 | ||
331 | + | ||
332 | + | @Callable(i) | |
333 | + | func selector () = if ((i.caller != this)) | |
334 | + | then throw("no access") | |
335 | + | else { | |
336 | + | let inv00 = if ((getIntegerValue(this, keyInvokeNext) == 0)) | |
337 | + | then invoke(projectB, "burnXTNandClaim", nil, nil) | |
338 | + | else if ((getIntegerValue(this, keyInvokeNext) == 0)) | |
339 | + | then [IntegerEntry(keyInvokeNext, 1)] | |
340 | + | else if ((getIntegerValue(this, keyInvokeNext) == 1)) | |
341 | + | then invoke(projectB, "SURFandVVXTNLP", nil, nil) | |
342 | + | else if ((getIntegerValue(this, keyInvokeNext) == 1)) | |
343 | + | then [IntegerEntry(keyInvokeNext, if ((burnxtnwavesprice >= getIntegerValue(this, "ATH in wavelets"))) | |
344 | + | then 10 | |
345 | + | else 20)] | |
346 | + | else if ((getIntegerValue(this, keyInvokeNext) == 10)) | |
347 | + | then invoke(projectB, "burnBURNXTN", nil, nil) | |
348 | + | else if ((getIntegerValue(this, keyInvokeNext) == 10)) | |
349 | + | then [IntegerEntry(keyInvokeNext, 11)] | |
350 | + | else if ((getIntegerValue(this, keyInvokeNext) == 11)) | |
351 | + | then invoke(projectB, "grow1", nil, nil) | |
352 | + | else if ((getIntegerValue(this, keyInvokeNext) == 11)) | |
353 | + | then [IntegerEntry(keyInvokeNext, 12)] | |
354 | + | else if ((getIntegerValue(this, keyInvokeNext) == 12)) | |
355 | + | then invoke(projectB, "grow2", nil, nil) | |
356 | + | else if ((getIntegerValue(this, keyInvokeNext) == 12)) | |
357 | + | then [IntegerEntry(keyInvokeNext, 13)] | |
358 | + | else if ((getIntegerValue(this, keyInvokeNext) == 13)) | |
359 | + | then invoke(projectB, "grow3", nil, nil) | |
360 | + | else if ((getIntegerValue(this, keyInvokeNext) == 13)) | |
361 | + | then [IntegerEntry(keyInvokeNext, 14)] | |
362 | + | else if ((getIntegerValue(this, keyInvokeNext) == 14)) | |
363 | + | then invoke(projectB, "grow4", nil, nil) | |
364 | + | else if ((getIntegerValue(this, keyInvokeNext) == 14)) | |
365 | + | then [IntegerEntry(keyInvokeNext, 15)] | |
366 | + | else if ((getIntegerValue(this, keyInvokeNext) == 15)) | |
367 | + | then invoke(projectB, "grow5", nil, nil) | |
368 | + | else if ((getIntegerValue(this, keyInvokeNext) == 15)) | |
369 | + | then [IntegerEntry(keyInvokeNext, 16)] | |
370 | + | else if ((getIntegerValue(this, keyInvokeNext) == 16)) | |
371 | + | then invoke(projectB, "grow6", nil, nil) | |
372 | + | else if ((getIntegerValue(this, keyInvokeNext) == 16)) | |
373 | + | then [IntegerEntry(keyInvokeNext, 30)] | |
374 | + | else if ((getIntegerValue(this, keyInvokeNext) == 20)) | |
375 | + | then invoke(projectB, "pump", nil, nil) | |
376 | + | else if ((getIntegerValue(this, keyInvokeNext) == 20)) | |
377 | + | then [IntegerEntry(keyInvokeNext, 30)] | |
378 | + | else if ((getIntegerValue(this, keyInvokeNext) == 30)) | |
379 | + | then invoke(projectB, "PZbbb", nil, nil) | |
380 | + | else if ((getIntegerValue(this, keyInvokeNext) == 30)) | |
381 | + | then [IntegerEntry(keyInvokeNext, 31)] | |
382 | + | else if ((getIntegerValue(this, keyInvokeNext) == 31)) | |
383 | + | then invoke(projectB, "claimBBB", nil, nil) | |
384 | + | else if ((getIntegerValue(this, keyInvokeNext) == 31)) | |
385 | + | then [IntegerEntry(keyInvokeNext, 32)] | |
386 | + | else if ((getIntegerValue(this, keyInvokeNext) == 32)) | |
387 | + | then invoke(projectB, "burnSURF", nil, nil) | |
388 | + | else if ((getIntegerValue(this, keyInvokeNext) == 32)) | |
389 | + | then [IntegerEntry(keyInvokeNext, 40)] | |
390 | + | else if ((getIntegerValue(this, keyInvokeNext) == 33)) | |
391 | + | then invoke(projectB, "puzzlePZbbb", nil, nil) | |
392 | + | else if ((getIntegerValue(this, keyInvokeNext) == 33)) | |
393 | + | then [IntegerEntry(keyInvokeNext, 34)] | |
394 | + | else if ((getIntegerValue(this, keyInvokeNext) == 34)) | |
395 | + | then invoke(projectB, "stakePZbbb", nil, nil) | |
396 | + | else if ((getIntegerValue(this, keyInvokeNext) == 34)) | |
397 | + | then [IntegerEntry(keyInvokeNext, 35)] | |
398 | + | else if ((getIntegerValue(this, keyInvokeNext) == 40)) | |
399 | + | then invoke(projectB, "dEntry", nil, nil) | |
400 | + | else if ((getIntegerValue(this, keyInvokeNext) == 40)) | |
401 | + | then [IntegerEntry(keyInvokeNext, 50)] | |
402 | + | else if ((getIntegerValue(this, keyInvokeNext) == 50)) | |
403 | + | then invoke(rewards, "claimRewards", nil, nil) | |
404 | + | else if ((getIntegerValue(this, keyInvokeNext) == 50)) | |
405 | + | then [IntegerEntry(keyInvokeNext, 51)] | |
406 | + | else if ((getIntegerValue(this, keyInvokeNext) == 51)) | |
407 | + | then invoke(rewards, "shillerRewards", nil, nil) | |
408 | + | else if ((getIntegerValue(this, keyInvokeNext) == 51)) | |
409 | + | then [IntegerEntry(keyInvokeNext, 52)] | |
410 | + | else if ((getIntegerValue(this, keyInvokeNext) == 52)) | |
411 | + | then invoke(rewards, "adminRewards", nil, nil) | |
412 | + | else if ((getIntegerValue(this, keyInvokeNext) == 52)) | |
413 | + | then [IntegerEntry(keyInvokeNext, 60)] | |
414 | + | else if ((getIntegerValue(this, keyInvokeNext) == 60)) | |
415 | + | then invoke(bounty, "updateBalanceEntry", nil, nil) | |
416 | + | else if ((getIntegerValue(this, keyInvokeNext) == 60)) | |
417 | + | then [IntegerEntry(keyInvokeNext, 61)] | |
418 | + | else if ((getIntegerValue(this, keyInvokeNext) == 61)) | |
419 | + | then invoke(bounty, "claim", nil, nil) | |
420 | + | else if ((getIntegerValue(this, keyInvokeNext) == 61)) | |
421 | + | then [IntegerEntry(keyInvokeNext, 62)] | |
422 | + | else if ((getIntegerValue(this, keyInvokeNext) == 62)) | |
423 | + | then invoke(bounty, "swap", nil, nil) | |
424 | + | else if ((getIntegerValue(this, keyInvokeNext) == 62)) | |
425 | + | then [IntegerEntry(keyInvokeNext, 63)] | |
426 | + | else if ((getIntegerValue(this, keyInvokeNext) == 63)) | |
427 | + | then invoke(bounty, "totalBalanceAll", nil, nil) | |
428 | + | else if ((getIntegerValue(this, keyInvokeNext) == 63)) | |
429 | + | then [IntegerEntry(keyInvokeNext, 64)] | |
430 | + | else if ((getIntegerValue(this, keyInvokeNext) == 64)) | |
431 | + | then invoke(bounty, "payRewards", nil, nil) | |
432 | + | else if ((getIntegerValue(this, keyInvokeNext) == 64)) | |
433 | + | then [IntegerEntry(keyInvokeNext, 70)] | |
434 | + | else unit | |
435 | + | if ((inv00 == inv00)) | |
436 | + | then nil | |
437 | + | else throw("Strict value is not equal to itself.") | |
438 | + | } | |
439 | + | ||
440 | + | ||
441 | + | ||
442 | + | @Callable(i) | |
443 | + | func balance_info () = [IntegerEntry("USDC", getAccBalance(amId)), IntegerEntry("USDT", getAccBalance(prId)), IntegerEntry("USD total", (getAccBalance(amId) + getAccBalance(prId)))] | |
444 | + | ||
445 | + | ||
446 | + | ||
447 | + | @Callable(i) | |
448 | + | func changeEntry (InvokeNext) = if ((i.caller != this)) | |
449 | + | then throw("access only by project owner") | |
450 | + | else [IntegerEntry(keyInvokeNext, InvokeNext)] | |
451 | + | ||
452 | + |
github/deemru/w8io/873ac7e 298.70 ms ◑![]()