tx · 3JtEJx9pBWM7vCTfezhaDCRWejPnbjZGzykLz4mQXzYa 3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr: -0.01000000 Waves 2023.09.07 16:56 [3810782] smart account 3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr > SELF 0.00000000 Waves
{ "type": 13, "id": "3JtEJx9pBWM7vCTfezhaDCRWejPnbjZGzykLz4mQXzYa", "fee": 1000000, "feeAssetId": null, "timestamp": 1694095022445, "version": 2, "chainId": 87, "sender": "3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr", "senderPublicKey": "A5AvSRrbVauQKBhPtuWTLTQdE5ka4nVCSDaVANpFur26", "proofs": [ "5DhFnHPWTzHWGuP8G1TjS2uswDrH7shg9bZutzAfMKwiuVscUVk7StRgwFNuYomC3YiMjLyGTgLHZq7QEMGUvzpB" ], "script": "base64:BgIMCAISABIAEgASABIAFwACZDgAgMLXLwAGcG9vbElkARoBV/VGaCeADWjfTiZ1erSh0ygx4Am/9Xl5NwAKcG9vbFN0cmluZwkA2AQBBQZwb29sSWQADHByb2plY3Rvd25lcgEaAVeOHeZRyjgjzsORw8RWi9WD02+IVv823QsAD3doaXJscG9vbFBvb2xJZAEFBXSj9tcACXdoaXJscG9vbAEgWeON3MK1I7pKFNzE0K8UCeZk5gS+JQYLJk7lUG2XWccABnN3YXZlcwEgCB/I9xYw7VHCKRvsrBqP/JBxHFk4LeshgbA3QfBF0UoABXdhdmVzAQQTq9kzAAd1c2R0ZXJjASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQAHdXNkY2VyYwEg8b90j2kCa66vzjuwb/Nd8MVKoTFsVrfc+ipKoeuRGkkAB3VzZHRic2MBIIeFKhRdvRvgacOk2tYbd0/cBQSbrAXfQbCvgMBJMOmiAAd1c2RjYnNjASAvN5TEMA7UHoYvTQ14Xf3kXkI8Q97mJBxq1GB3huvltQAJYnVybnh0bklkASAkT3V5an4zObj7DP+EqXFcXsot3jOgxF1p+epEEexMVAADZXRoASAlHvr/2CHJcJ77wLTePrerhp4FO2bv3Af8UeP1qDMocgADYm5iASBLt6niPAMt5kn9PCgz/BFSRuLq/rH6a71wFp9EF9UeHAAEd2J0YwEgEp6jcQc0ZI/qY3Z6cKIr1zAGzvm89BUZy2Z3THJuiX8ABGJ0Y2IBIMiWytpijLpI9gU0dw8Fu2wQ/+/YZFpjnXnt3gIY56ahAAt3YXZlc2lucG9vbAkBEUBleHRyTmF0aXZlKDEwNTApAgkBB0FkZHJlc3MBBQZwb29sSWQJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFBXdhdmVzAghfYmFsYW5jZQAMcHJvamVjdHN0YWtlCQERQGV4dHJOYXRpdmUoMTA1MCkCCQEHQWRkcmVzcwEFBnBvb2xJZAkArAICAiMzUEFrbUpuaU1nbm5BZWo1cFlmMmpGWWtDYlpvdzVwdDl0cgIMX2luZGV4U3Rha2VkAAp0b3RhbHN0YWtlCQERQGV4dHJOYXRpdmUoMTA1MCkCCQEHQWRkcmVzcwEFBnBvb2xJZAIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQACnR2bGlud2F2ZXMJAGsDCQBoAgULd2F2ZXNpbnBvb2wACgUMcHJvamVjdHN0YWtlBQp0b3RhbHN0YWtlAA93aGlybHBvb2xzdXBwbHkEByRtYXRjaDAJAOwHAQUJd2hpcmxwb29sAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAAFcHJpY2UDCQBnAgkAZAIJAGsDCQBkAgUKdHZsaW53YXZlcwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwUCZDgFD3doaXJscG9vbHN1cHBseQUCZDgJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCIVdISVJMUE9PTCBpc3N1ZSBwcmljZSBpbiB3YXZlbGV0cwkAZAIJAGsDCQBkAgUKdHZsaW53YXZlcwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwUCZDgFD3doaXJscG9vbHN1cHBseQUCZDgJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCIVdISVJMUE9PTCBpc3N1ZSBwcmljZSBpbiB3YXZlbGV0cwUBaQEVYnV5V0hJUkxQT09Md2l0aFdBVkVTAAMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAQIhPQIIBQFpBmNhbGxlcgkBB0FkZHJlc3MBARoBV+lmISrSBuDcForrCFqX1J+dYqN/98JaTAcJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHc3VycGx1cwkAawMJAGUCBQVwcmljZQUCZDgIBQNwbXQGYW1vdW50BQJkOAQGYW1vdW50CQBrAwgFA3BtdAZhbW91bnQFAmQ4BQVwcmljZQQMc3VwcGx5YW1vdW50CQBpAgkAZQIIBQNwbXQGYW1vdW50BQdzdXJwbHVzAAMEE3N3YXZlc0JhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwUGc3dhdmVzAwkAAAIFE3N3YXZlc0JhbGFuY2VCZWZvcmUFE3N3YXZlc0JhbGFuY2VCZWZvcmUDCQECIT0CCAUDcG10B2Fzc2V0SWQFBHVuaXQJAAIBAhdhdHRhY2ggV0FWRVMgdG9rZW4gb25seQQTU3VwcGx5V2F2ZXNNYWluUG9vbAkA/AcECQEHQWRkcmVzcwEBGgFXIJRcSq3P9Eg5O4hAs7/b7oxQoKdqz9roAgZzdXBwbHkFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUMc3VwcGx5YW1vdW50BQNuaWwDCQAAAgUTU3VwcGx5V2F2ZXNNYWluUG9vbAUTU3VwcGx5V2F2ZXNNYWluUG9vbAQYU3VwcGx5V2F2ZXNXYXZlc0RlZmlQb29sCQD8BwQJAQdBZGRyZXNzAQEaAVcZCzuPP83F9QBSQ7jrpozIrL8UOTE+JL4CBnN1cHBseQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQxzdXBwbHlhbW91bnQFA25pbAMJAAACBRhTdXBwbHlXYXZlc1dhdmVzRGVmaVBvb2wFGFN1cHBseVdhdmVzV2F2ZXNEZWZpUG9vbAQRU3VwcGx5V2F2ZXNMb3dDYXAJAPwHBAkBB0FkZHJlc3MBARoBV65gFNJmcAzwP9x0xdJ05hq+qeBSweoLkAIGc3VwcGx5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFDHN1cHBseWFtb3VudAUDbmlsAwkAAAIFEVN1cHBseVdhdmVzTG93Q2FwBRFTdXBwbHlXYXZlc0xvd0NhcAkAzAgCCQEHUmVpc3N1ZQMFCXdoaXJscG9vbAUGYW1vdW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAUJd2hpcmxwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCAiFXSElSTFBPT0wgaXNzdWUgcHJpY2UgaW4gd2F2ZWxldHMFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAiJzdXJwbHVzIHRyZWFzdXJ5IHZhbHVlIGluIHdhdmVsZXRzBQp0dmxpbndhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZXSElSTFBPT0wgdG90YWwgc3VwcGx5BQ93aGlybHBvb2xzdXBwbHkJAMwIAgkBDEludGVnZXJFbnRyeQICIHRvdGFsIFdBVkVTIHJlY2VpdmVkIGluIHdhdmVsZXRzCQBkAggFA3BtdAZhbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCIHRvdGFsIFdBVkVTIHJlY2VpdmVkIGluIHdhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzCQBkAgUHc3VycGx1cwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwkAzAgCCQEMSW50ZWdlckVudHJ5AgIed2F2ZWxldHMgcmVjZWl2ZWQgZm9yIHRyZWFzdXJ5CQBlAgUGYW1vdW50BQdzdXJwbHVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAiB0b3RhbCBXQVZFUyBwYWlkIG91dCBpbiB3YXZlbGV0cwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMJAMwIAgkBDEludGVnZXJFbnRyeQICEFJPSSBiYXNpcyBwb2ludHMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCEFJPSSBiYXNpcyBwb2ludHMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJQcmljZVN1cnBsdXNTdXBwbHkACQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1XQVZFUyBpbiBwb29sBQt3YXZlc2lucG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgIMcHJvamVjdHN0YWtlBQxwcm9qZWN0c3Rha2UJAMwIAgkBDEludGVnZXJFbnRyeQICCnRvdGFsc3Rha2UFCnRvdGFsc3Rha2UJAMwIAgkBDEludGVnZXJFbnRyeQICIVdISVJMUE9PTCBpc3N1ZSBwcmljZSBpbiB3YXZlbGV0cwUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQICInN1cnBsdXMgdHJlYXN1cnkgdmFsdWUgaW4gd2F2ZWxldHMFCnR2bGlud2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICFldISVJMUE9PTCB0b3RhbCBzdXBwbHkFD3doaXJscG9vbHN1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgIgdG90YWwgV0FWRVMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCIHRvdGFsIFdBVkVTIHJlY2VpdmVkIGluIHdhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAh53YXZlbGV0cyByZWNlaXZlZCBmb3IgdHJlYXN1cnkJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCH3N3YXZlbGV0cyByZWNlaXZlZCBmb3IgdHJlYXN1cnkFA25pbAFpARNQb29sT25lVG9rZW5TdXJwbHVzAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEDXN1cnBsdXNhbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMEE1Bvb2xPbmVUb2tlblN1cnBsdXMJAPwHBAkBB0FkZHJlc3MBARoBV/0lw71OYZRB77peEmOPxTlvSbWIOvXpbQIhZ2VuZXJhdGVJbmRleFdpdGhPbmVUb2tlbkFuZFN0YWtlCQDMCAIFCnBvb2xTdHJpbmcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUNc3VycGx1c2Ftb3VudAUDbmlsAwkAAAIFE1Bvb2xPbmVUb2tlblN1cnBsdXMFE1Bvb2xPbmVUb2tlblN1cnBsdXMJAMwIAgkBDEludGVnZXJFbnRyeQICHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMJAGUCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzBQ1zdXJwbHVzYW1vdW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMQm9vc3RQb29sQVBZAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEE3N3YXZlc0JhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwUGc3dhdmVzAwkAAAIFE3N3YXZlc0JhbGFuY2VCZWZvcmUFE3N3YXZlc0JhbGFuY2VCZWZvcmUEEndhdmVzQmFsYW5jZUJlZm9yZQgJAO8HAQUEdGhpcwlhdmFpbGFibGUDCQAAAgUSd2F2ZXNCYWxhbmNlQmVmb3JlBRJ3YXZlc0JhbGFuY2VCZWZvcmUEC3N3YXBidXJueHRuCQD8BwQJAQdBZGRyZXNzAQUGcG9vbElkAgRzd2FwCQDMCAICBXdhdmVzCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlidXJueHRuSWQJAPAHAgUEdGhpcwUJYnVybnh0bklkBQNuaWwDCQAAAgULc3dhcGJ1cm54dG4FC3N3YXBidXJueHRuBAtzd2FwdXNkdGVyYwkA/AcECQEHQWRkcmVzcwEFBnBvb2xJZAIEc3dhcAkAzAgCAgV3YXZlcwkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHdXNkdGVyYwkA8AcCBQR0aGlzBQd1c2R0ZXJjBQNuaWwDCQAAAgULc3dhcHVzZHRlcmMFC3N3YXB1c2R0ZXJjBAtzd2FwdXNkdGJzYwkA/AcECQEHQWRkcmVzcwEFBnBvb2xJZAIEc3dhcAkAzAgCAgV3YXZlcwkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHdXNkdGJzYwkA8AcCBQR0aGlzBQd1c2R0YnNjBQNuaWwDCQAAAgULc3dhcHVzZHRic2MFC3N3YXB1c2R0YnNjBAtzd2FwdXNkY2VyYwkA/AcECQEHQWRkcmVzcwEFBnBvb2xJZAIEc3dhcAkAzAgCAgV3YXZlcwkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHdXNkY2VyYwkA8AcCBQR0aGlzBQd1c2RjZXJjBQNuaWwDCQAAAgULc3dhcHVzZGNlcmMFC3N3YXB1c2RjZXJjBAtzd2FwdXNkY2JzYwkA/AcECQEHQWRkcmVzcwEFBnBvb2xJZAIEc3dhcAkAzAgCAgV3YXZlcwkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHdXNkY2JzYwkA8AcCBQR0aGlzBQd1c2RjYnNjBQNuaWwDCQAAAgULc3dhcHVzZGNic2MFC3N3YXB1c2RjYnNjBAdzd2FwZXRoCQD8BwQJAQdBZGRyZXNzAQUGcG9vbElkAgRzd2FwCQDMCAICBXdhdmVzCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQNldGgJAPAHAgUEdGhpcwUDZXRoBQNuaWwDCQAAAgUHc3dhcGV0aAUHc3dhcGV0aAQHc3dhcGJuYgkA/AcECQEHQWRkcmVzcwEFBnBvb2xJZAIEc3dhcAkAzAgCAgV3YXZlcwkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUDYm5iCQDwBwIFBHRoaXMFA2JuYgUDbmlsAwkAAAIFB3N3YXBibmIFB3N3YXBibmIECHN3YXB3YnRjCQD8BwQJAQdBZGRyZXNzAQUGcG9vbElkAgRzd2FwCQDMCAICBXdhdmVzCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR3YnRjCQDwBwIFBHRoaXMFBHdidGMFA25pbAMJAAACBQhzd2Fwd2J0YwUIc3dhcHdidGMECHN3YXBidGNiCQD8BwQJAQdBZGRyZXNzAQUGcG9vbElkAgRzd2FwCQDMCAICBXdhdmVzCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRidGNiCQDwBwIFBHRoaXMFBGJ0Y2IFA25pbAMJAAACBQhzd2FwYnRjYgUIc3dhcGJ0Y2IEEXdhdmVzQmFsYW5jZUFmdGVyCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQQPd2F2ZXNEaWZmZXJlbmNlCQBlAgURd2F2ZXNCYWxhbmNlQWZ0ZXIFEndhdmVzQmFsYW5jZUJlZm9yZQQQd2F2ZXNBbW91bnRCb29zdAkAawMFD3dhdmVzRGlmZmVyZW5jZQBQAGQEDVN3YXZlc0RlcG9zaXQJAPwHBAkBB0FkZHJlc3MBARoBV33Je5MUef/nUfGxSsdv+WodgJVHz1gjfgIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0AwkAZgIJAGUCCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQUCZDgAAAkAZQIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQJkOAAABQNuaWwDCQAAAgUNU3dhdmVzRGVwb3NpdAUNU3dhdmVzRGVwb3NpdAQSc3dhdmVzQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFBnN3YXZlcwQQc3dhdmVzRGlmZmVyZW5jZQkAZQIFEnN3YXZlc0JhbGFuY2VBZnRlcgUTc3dhdmVzQmFsYW5jZUJlZm9yZQQLYW1vdW50Qm9vc3QJAGsDBRBzd2F2ZXNEaWZmZXJlbmNlAFAAZAQLYW1vdW50T3duZXIJAGsDBRBzd2F2ZXNEaWZmZXJlbmNlABQAZAQFYm9vc3QJAPwHBAkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQCC2FkZEJvb3N0aW5nCQDMCAIAHgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQZzd2F2ZXMFC2Ftb3VudEJvb3N0BQNuaWwDCQAAAgUFYm9vc3QFBWJvb3N0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUMcHJvamVjdG93bmVyBQthbW91bnRPd25lcgUGc3dhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAiB0b3RhbCBXQVZFUyBwYWlkIG91dCBpbiB3YXZlbGV0cwkAZAIFEHdhdmVzQW1vdW50Qm9vc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCIHRvdGFsIFdBVkVTIHBhaWQgb3V0IGluIHdhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBST0kgYmFzaXMgcG9pbnRzCQBrAwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMAkE4JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCIHRvdGFsIFdBVkVTIHJlY2VpdmVkIGluIHdhdmVsZXRzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELZEVudHJ5UmVzZXQAAwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFX6WYhKtIG4NwWiusIWpfUn51io3/3wlpMBwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIJAMwIAgkBDEludGVnZXJFbnRyeQICIVdISVJMUE9PTCBpc3N1ZSBwcmljZSBpbiB3YXZlbGV0cwkAaAIAAQUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQICInN1cnBsdXMgdHJlYXN1cnkgdmFsdWUgaW4gd2F2ZWxldHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgIWV0hJUkxQT09MIHRvdGFsIHN1cHBseQUPd2hpcmxwb29sc3VwcGx5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQICHndhdmVsZXRzIHJlY2VpdmVkIGZvciB0cmVhc3VyeQkAaQIJAGgCAAIFAmQ4AAoJAMwIAgkBDEludGVnZXJFbnRyeQICIHRvdGFsIFdBVkVTIHJlY2VpdmVkIGluIHdhdmVsZXRzCQBpAgkAaAIAAgUCZDgACgkAzAgCCQEMSW50ZWdlckVudHJ5AgIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMAAAUDbmlsAEuTZSQ=", "height": 3810782, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 41RNHBvuosf2s6SkdGvQc7Kp6Et5MH1pBWtTmi8DLDba Next: GR6c2qyo6zApyaHp2mYRMZfwBvFkE6JFjwUBfLT62gDt Diff:
Old | New | Differences | |
---|---|---|---|
193 | 193 | then (i.caller != Address(base58'3PPCzX2doZ7agBNuGSKqjrbdXgGEtE7CpQ3')) | |
194 | 194 | else false) | |
195 | 195 | then throw("access only by project owner") | |
196 | - | else [IntegerEntry("WHIRLPOOL issue price in wavelets", (1 * d8)), IntegerEntry("surplus treasury value in wavelets", 0), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", 0), IntegerEntry("wavelets received for treasury", | |
196 | + | else [IntegerEntry("WHIRLPOOL issue price in wavelets", (1 * d8)), IntegerEntry("surplus treasury value in wavelets", 0), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", 0), IntegerEntry("wavelets received for treasury", ((2 * d8) / 10)), IntegerEntry("total WAVES received in wavelets", ((2 * d8) / 10)), IntegerEntry("total WAVES paid out in wavelets", 0)] | |
197 | 197 | ||
198 | 198 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let d8 = 100000000 | |
5 | 5 | ||
6 | 6 | let poolId = base58'3PQHndCUVrv3wBuQjbvVP9SnGmfbfitGxfx' | |
7 | 7 | ||
8 | 8 | let poolString = toBase58String(poolId) | |
9 | 9 | ||
10 | 10 | let projectowner = base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk' | |
11 | 11 | ||
12 | 12 | let whirlpoolPoolId = base58'change' | |
13 | 13 | ||
14 | 14 | let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi' | |
15 | 15 | ||
16 | 16 | let swaves = base58'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7' | |
17 | 17 | ||
18 | 18 | let waves = base58'WAVES' | |
19 | 19 | ||
20 | 20 | let usdterc = base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
21 | 21 | ||
22 | 22 | let usdcerc = base58'HGgabTqUS8WtVFUJzfmrTDMgEccJuZLBPhFgQFxvnsoW' | |
23 | 23 | ||
24 | 24 | let usdtbsc = base58'A81p1LTRyoq2rDR2TNxB2dWYxsiNwCSSi8sXef2SEkwb' | |
25 | 25 | ||
26 | 26 | let usdcbsc = base58'4BKKSp6NoNcrFHyorZogDyctq1fq6w7114Ym1pw6HUtC' | |
27 | 27 | ||
28 | 28 | let burnxtnId = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns' | |
29 | 29 | ||
30 | 30 | let eth = base58'3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13' | |
31 | 31 | ||
32 | 32 | let bnb = base58'66a1br3BrkoaJgP7yEar9hJcSTvJPoH6PYBLqscXcMGo' | |
33 | 33 | ||
34 | 34 | let wbtc = base58'2Fge5HEBRD3XTeg7Xg3FW5yiB9HVJFQtMXiWMQo72Up6' | |
35 | 35 | ||
36 | 36 | let btcb = base58'EW1uGLVo21Wd9i2Rhq8o4VKDTCQTGCGXE8DqayHGrLg8' | |
37 | 37 | ||
38 | 38 | let wavesinpool = getIntegerValue(Address(poolId), (("global_" + toBase58String(waves)) + "_balance")) | |
39 | 39 | ||
40 | 40 | let projectstake = getIntegerValue(Address(poolId), ("3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr" + "_indexStaked")) | |
41 | 41 | ||
42 | 42 | let totalstake = getIntegerValue(Address(poolId), "global_poolToken_amount") | |
43 | 43 | ||
44 | 44 | let tvlinwaves = fraction((wavesinpool * 10), projectstake, totalstake) | |
45 | 45 | ||
46 | 46 | let whirlpoolsupply = match assetInfo(whirlpool) { | |
47 | 47 | case asset: Asset => | |
48 | 48 | asset.quantity | |
49 | 49 | case _ => | |
50 | 50 | throw("Can't find asset") | |
51 | 51 | } | |
52 | 52 | ||
53 | 53 | let price = if (((fraction((tvlinwaves + getIntegerValue(this, "surplus received in wavelets")), d8, whirlpoolsupply) + d8) >= getIntegerValue(this, "WHIRLPOOL issue price in wavelets"))) | |
54 | 54 | then (fraction((tvlinwaves + getIntegerValue(this, "surplus received in wavelets")), d8, whirlpoolsupply) + d8) | |
55 | 55 | else getIntegerValue(this, "WHIRLPOOL issue price in wavelets") | |
56 | 56 | ||
57 | 57 | @Callable(i) | |
58 | 58 | func buyWHIRLPOOLwithWAVES () = if (if ((i.caller != this)) | |
59 | 59 | then (i.caller != Address(base58'3PPCzX2doZ7agBNuGSKqjrbdXgGEtE7CpQ3')) | |
60 | 60 | else false) | |
61 | 61 | then throw("access only by project owner") | |
62 | 62 | else { | |
63 | 63 | let pmt = value(i.payments[0]) | |
64 | 64 | let surplus = fraction((price - d8), pmt.amount, d8) | |
65 | 65 | let amount = fraction(pmt.amount, d8, price) | |
66 | 66 | let supplyamount = ((pmt.amount - surplus) / 3) | |
67 | 67 | let swavesBalanceBefore = assetBalance(this, swaves) | |
68 | 68 | if ((swavesBalanceBefore == swavesBalanceBefore)) | |
69 | 69 | then if ((pmt.assetId != unit)) | |
70 | 70 | then throw("attach WAVES token only") | |
71 | 71 | else { | |
72 | 72 | let SupplyWavesMainPool = invoke(Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
73 | 73 | if ((SupplyWavesMainPool == SupplyWavesMainPool)) | |
74 | 74 | then { | |
75 | 75 | let SupplyWavesWavesDefiPool = invoke(Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
76 | 76 | if ((SupplyWavesWavesDefiPool == SupplyWavesWavesDefiPool)) | |
77 | 77 | then { | |
78 | 78 | let SupplyWavesLowCap = invoke(Address(base58'3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
79 | 79 | if ((SupplyWavesLowCap == SupplyWavesLowCap)) | |
80 | 80 | then [Reissue(whirlpool, amount, true), ScriptTransfer(i.caller, amount, whirlpool), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry("surplus treasury value in wavelets", tvlinwaves), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("total WAVES received in wavelets", (pmt.amount + getIntegerValue(this, "total WAVES received in wavelets"))), IntegerEntry("surplus received in wavelets", (surplus + getIntegerValue(this, "surplus received in wavelets"))), IntegerEntry("wavelets received for treasury", (amount - surplus)), IntegerEntry("total WAVES paid out in wavelets", getIntegerValue(this, "total WAVES paid out in wavelets")), IntegerEntry("ROI basis points", getIntegerValue(this, "ROI basis points"))] | |
81 | 81 | else throw("Strict value is not equal to itself.") | |
82 | 82 | } | |
83 | 83 | else throw("Strict value is not equal to itself.") | |
84 | 84 | } | |
85 | 85 | else throw("Strict value is not equal to itself.") | |
86 | 86 | } | |
87 | 87 | else throw("Strict value is not equal to itself.") | |
88 | 88 | } | |
89 | 89 | ||
90 | 90 | ||
91 | 91 | ||
92 | 92 | @Callable(i) | |
93 | 93 | func PriceSurplusSupply () = [IntegerEntry("WAVES in pool", wavesinpool), IntegerEntry("projectstake", projectstake), IntegerEntry("totalstake", totalstake), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry("surplus treasury value in wavelets", tvlinwaves), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("total WAVES received in wavelets", getIntegerValue(this, "total WAVES received in wavelets")), IntegerEntry("surplus received in wavelets", getIntegerValue(this, "surplus received in wavelets")), IntegerEntry("wavelets received for treasury", getIntegerValue(this, "swavelets received for treasury"))] | |
94 | 94 | ||
95 | 95 | ||
96 | 96 | ||
97 | 97 | @Callable(i) | |
98 | 98 | func PoolOneTokenSurplus () = if ((i.caller != this)) | |
99 | 99 | then throw("access only by project owner") | |
100 | 100 | else { | |
101 | 101 | let surplusamount = getIntegerValue(this, "surplus received in wavelets") | |
102 | 102 | let PoolOneTokenSurplus = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [poolString], [AttachedPayment(unit, surplusamount)]) | |
103 | 103 | if ((PoolOneTokenSurplus == PoolOneTokenSurplus)) | |
104 | 104 | then [IntegerEntry("surplus received in wavelets", (getIntegerValue(this, "surplus received in wavelets") - surplusamount))] | |
105 | 105 | else throw("Strict value is not equal to itself.") | |
106 | 106 | } | |
107 | 107 | ||
108 | 108 | ||
109 | 109 | ||
110 | 110 | @Callable(i) | |
111 | 111 | func BoostPoolAPY () = if ((i.caller != this)) | |
112 | 112 | then throw("access only by project owner") | |
113 | 113 | else { | |
114 | 114 | let swavesBalanceBefore = assetBalance(this, swaves) | |
115 | 115 | if ((swavesBalanceBefore == swavesBalanceBefore)) | |
116 | 116 | then { | |
117 | 117 | let wavesBalanceBefore = wavesBalance(this).available | |
118 | 118 | if ((wavesBalanceBefore == wavesBalanceBefore)) | |
119 | 119 | then { | |
120 | 120 | let swapburnxtn = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(burnxtnId, assetBalance(this, burnxtnId))]) | |
121 | 121 | if ((swapburnxtn == swapburnxtn)) | |
122 | 122 | then { | |
123 | 123 | let swapusdterc = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(usdterc, assetBalance(this, usdterc))]) | |
124 | 124 | if ((swapusdterc == swapusdterc)) | |
125 | 125 | then { | |
126 | 126 | let swapusdtbsc = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(usdtbsc, assetBalance(this, usdtbsc))]) | |
127 | 127 | if ((swapusdtbsc == swapusdtbsc)) | |
128 | 128 | then { | |
129 | 129 | let swapusdcerc = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(usdcerc, assetBalance(this, usdcerc))]) | |
130 | 130 | if ((swapusdcerc == swapusdcerc)) | |
131 | 131 | then { | |
132 | 132 | let swapusdcbsc = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(usdcbsc, assetBalance(this, usdcbsc))]) | |
133 | 133 | if ((swapusdcbsc == swapusdcbsc)) | |
134 | 134 | then { | |
135 | 135 | let swapeth = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(eth, assetBalance(this, eth))]) | |
136 | 136 | if ((swapeth == swapeth)) | |
137 | 137 | then { | |
138 | 138 | let swapbnb = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(bnb, assetBalance(this, bnb))]) | |
139 | 139 | if ((swapbnb == swapbnb)) | |
140 | 140 | then { | |
141 | 141 | let swapwbtc = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(wbtc, assetBalance(this, wbtc))]) | |
142 | 142 | if ((swapwbtc == swapwbtc)) | |
143 | 143 | then { | |
144 | 144 | let swapbtcb = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(btcb, assetBalance(this, btcb))]) | |
145 | 145 | if ((swapbtcb == swapbtcb)) | |
146 | 146 | then { | |
147 | 147 | let wavesBalanceAfter = wavesBalance(this).available | |
148 | 148 | let wavesDifference = (wavesBalanceAfter - wavesBalanceBefore) | |
149 | 149 | let wavesAmountBoost = fraction(wavesDifference, 80, 100) | |
150 | 150 | let SwavesDeposit = invoke(Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV'), "deposit", nil, [AttachedPayment(unit, if (((wavesBalance(this).available - d8) > 0)) | |
151 | 151 | then (wavesBalance(this).available - d8) | |
152 | 152 | else 0)]) | |
153 | 153 | if ((SwavesDeposit == SwavesDeposit)) | |
154 | 154 | then { | |
155 | 155 | let swavesBalanceAfter = assetBalance(this, swaves) | |
156 | 156 | let swavesDifference = (swavesBalanceAfter - swavesBalanceBefore) | |
157 | 157 | let amountBoost = fraction(swavesDifference, 80, 100) | |
158 | 158 | let amountOwner = fraction(swavesDifference, 20, 100) | |
159 | 159 | let boost = invoke(Address(whirlpoolPoolId), "addBoosting", [30], [AttachedPayment(swaves, amountBoost)]) | |
160 | 160 | if ((boost == boost)) | |
161 | 161 | then [ScriptTransfer(Address(projectowner), amountOwner, swaves), IntegerEntry("total WAVES paid out in wavelets", (wavesAmountBoost + getIntegerValue(this, "total WAVES paid out in wavelets"))), IntegerEntry("ROI basis points", fraction(getIntegerValue(this, "total WAVES paid out in wavelets"), 10000, getIntegerValue(this, "total WAVES received in wavelets")))] | |
162 | 162 | else throw("Strict value is not equal to itself.") | |
163 | 163 | } | |
164 | 164 | else throw("Strict value is not equal to itself.") | |
165 | 165 | } | |
166 | 166 | else throw("Strict value is not equal to itself.") | |
167 | 167 | } | |
168 | 168 | else throw("Strict value is not equal to itself.") | |
169 | 169 | } | |
170 | 170 | else throw("Strict value is not equal to itself.") | |
171 | 171 | } | |
172 | 172 | else throw("Strict value is not equal to itself.") | |
173 | 173 | } | |
174 | 174 | else throw("Strict value is not equal to itself.") | |
175 | 175 | } | |
176 | 176 | else throw("Strict value is not equal to itself.") | |
177 | 177 | } | |
178 | 178 | else throw("Strict value is not equal to itself.") | |
179 | 179 | } | |
180 | 180 | else throw("Strict value is not equal to itself.") | |
181 | 181 | } | |
182 | 182 | else throw("Strict value is not equal to itself.") | |
183 | 183 | } | |
184 | 184 | else throw("Strict value is not equal to itself.") | |
185 | 185 | } | |
186 | 186 | else throw("Strict value is not equal to itself.") | |
187 | 187 | } | |
188 | 188 | ||
189 | 189 | ||
190 | 190 | ||
191 | 191 | @Callable(i) | |
192 | 192 | func dEntryReset () = if (if ((i.caller != this)) | |
193 | 193 | then (i.caller != Address(base58'3PPCzX2doZ7agBNuGSKqjrbdXgGEtE7CpQ3')) | |
194 | 194 | else false) | |
195 | 195 | then throw("access only by project owner") | |
196 | - | else [IntegerEntry("WHIRLPOOL issue price in wavelets", (1 * d8)), IntegerEntry("surplus treasury value in wavelets", 0), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", 0), IntegerEntry("wavelets received for treasury", | |
196 | + | else [IntegerEntry("WHIRLPOOL issue price in wavelets", (1 * d8)), IntegerEntry("surplus treasury value in wavelets", 0), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", 0), IntegerEntry("wavelets received for treasury", ((2 * d8) / 10)), IntegerEntry("total WAVES received in wavelets", ((2 * d8) / 10)), IntegerEntry("total WAVES paid out in wavelets", 0)] | |
197 | 197 | ||
198 | 198 |
github/deemru/w8io/6500d08 76.05 ms ◑