tx · BENDQ4yDNTxnTX3TqTXTDHr8XNPt4EDzri3Sb22iVfYC

3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e:  -0.01800000 Waves

2023.11.26 10:09 [3925928] smart account 3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e > SELF 0.00000000 Waves

{ "type": 13, "id": "BENDQ4yDNTxnTX3TqTXTDHr8XNPt4EDzri3Sb22iVfYC", "fee": 1800000, "feeAssetId": null, "timestamp": 1700982559427, "version": 2, "chainId": 87, "sender": "3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e", "senderPublicKey": "qv5sHFvV7GyNRm1A2r8BR9oX2nhkc1yNa1QfWLkaja8", "proofs": [ "2FbuyuvNtmBmGBoJxhgfefcVu7kiQcLLcRn5quAS9FqeJytb7Q9fuqa7SnKWgCPDB8axEtmbnD4GZTK15AFZ7gaf" ], "script": "base64:BgIdCAISABIAEgASABIAEgASABIDCgEBEgQKAggBEgBTAQ10cnlHZXRJbnRlZ2VyAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABDHRyeUdldFN0cmluZwIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJ0IAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgIAAAJkOACAwtcvAANkMTYJAGgCBQJkOAUCZDgAC3VubG9ja0Jsb2NrCQBoAgAeAKALAApoZWlyUHViS2V5ASAaFa4tDyIv1uhzDfwRR/IHtg7qNN7P3pYq2N1IFBp+EAAMdW5sb2NrQmxvY2syCQBoAgBaAKALABJQdXp6bGVNYXN0ZXJQdWJLZXkBIDs1TW4/n774VJyWRAeAVqsv4hNgRcR78j8XQ/RCBSZdAAxrZXlBY3RpdmF0ZWQCFUFjdGl2YXRlZCBibG9ja2hlaWdodAASa2V5U3VycGx1c1JlY2VpdmVkAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzABNrZXlXYXZlbGV0c1JlY2VpdmVkAiB0b3RhbCBXQVZFUyByZWNlaXZlZCBpbiB3YXZlbGV0cwAVa2V5V2F2ZWxldHNSZWNlaXZlZEJUAil0b3RhbCB3YXZlbGV0cyByZWNlaXZlZCBmb3IgYmFzZSB0cmVhc3VyeQASa2V5V2F2ZWxldHNQYWlkT3V0AiB0b3RhbCBXQVZFUyBwYWlkIG91dCBpbiB3YXZlbGV0cwAGa2V5Uk9JAhBST0kgYmFzaXMgcG9pbnRzABZrZXlXaGlybHBvb2xJc3N1ZVByaWNlAiFXSElSTFBPT0wgaXNzdWUgcHJpY2UgaW4gd2F2ZWxldHMAEGJ1cm54dG5QUFRwb29sSWQBGgFX9UZoJ4ANaN9OJnV6tKHTKDHgCb/1eXk3AAxwcm9qZWN0T3duZXIBGgFXjh3mUco4I87DkcPEVovVg9NviFb/Nt0LAA93aGlybHBvb2xQb29sSWQBGgFXCUhUqJi1/8xKRtsS/UvJkxlGN0OYh9fNAAl3aGlybHBvb2wBIAnOgNqkhGEBAxbRwocUXSVMmBXtucPLIo6Y3v+QralHAA93aGlybHBvb2xTdHJpbmcJANgEAQEgWeON3MK1I7pKFNzE0K8UCeZk5gS+JQYLJk7lUG2XWccABXdhdmVzAQQTq9kzAAd1c2R0ZXJjASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQAHdXNkY2VyYwEg8b90j2kCa66vzjuwb/Nd8MVKoTFsVrfc+ipKoeuRGkkAB3VzZHRic2MBIIeFKhRdvRvgacOk2tYbd0/cBQSbrAXfQbCvgMBJMOmiAAd1c2RjYnNjASAvN5TEMA7UHoYvTQ14Xf3kXkI8Q97mJBxq1GB3huvltQAHYnVybnh0bgEgJE91eWp+Mzm4+wz/hKlxXF7KLd4zoMRdafnqRBHsTFQAA2V0aAEgJR76/9ghyXCe+8C03j63q4aeBTtm79wH/FHj9agzKHIAA2JuYgEgS7ep4jwDLeZJ/TwoM/wRUkbi6v6x+mu9cBafRBfVHhwABHdidGMBIBKeo3EHNGSP6mN2enCiK9cwBs75vPQVGctmd0xybol/AARidGNiASDIlsraYoy6SPYFNHcPBbtsEP/v2GRaY5157d4CGOemoQAEZWFzdAEgVoJP4wutz64pn/F3h50Vd/r+QUj98n3dRjyfnx8R03QABnN0ZWFzdAEg4Tj7DL+1BlqSS0fgEtOD/O7RI9SQqBlxFRrcq0CylDYABnN3YXZlcwEgCB/I9xYw7VHCKRvsrBqP/JBxHFk4LeshgbA3QfBF0UoABHN1cmYBIJLR9EriEQEr9H7q3iGOPcX7yfJ9zoey7VIZ8DpOJFj1AAtwb29sYm9vc3RTQwEaAVdJth4Q36ANT9jV0A+j44S32V46KbMRqawAB1BMX01haW4JAQdBZGRyZXNzAQEaAVcglFxKrc/0SDk7iECzv9vujFCgp2rP2ugAB1BMX0RlZmkJAQdBZGRyZXNzAQEaAVcZCzuPP83F9QBSQ7jrpozIrL8UOTE+JL4ABlBMX0xvdwkBB0FkZHJlc3MBARoBV65gFNJmcAzwP9x0xdJ05hq+qeBSweoLkAAKRUFTVF9zdGFrZQkBB0FkZHJlc3MBARoBVwh0qdnDd/GCffeig0jz65uzT/yIPOsXbwANV1hfV0FWRVNfRUFTVAkBB0FkZHJlc3MBARoBV7XCP+dwv1AcUXW5CmJm9PY+3NzVnaTo1AAMU1dBVkVTX3N0YWtlCQEHQWRkcmVzcwEBGgFXfcl7kxR5/+dR8bFKx2/5ah2AlUfPWCN+AAxXWF9FVEhfV0FWRVMJAQdBZGRyZXNzAQEaAVcLgNUSD01KXiUxquVDz7RZ2COjQ9sP68EAC3dhdmVzSW5Qb29sCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUQYnVybnh0blBQVHBvb2xJZAkArAICCQCsAgICB2dsb2JhbF8JANgEAQUFd2F2ZXMCCF9iYWxhbmNlAAxwcm9qZWN0U3Rha2UJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBRBidXJueHRuUFBUcG9vbElkCQCsAgIJAKUIAQUEdGhpcwIMX2luZGV4U3Rha2VkAAp0b3RhbFN0YWtlCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUQYnVybnh0blBQVHBvb2xJZAIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQBCFBMX3ZhbHVlAgtkQXBwQWRkcmVzcwVhc3NldAkAawMJAQ10cnlHZXRJbnRlZ2VyAgULZEFwcEFkZHJlc3MJAKwCAgkArAICCQClCAEFBHRoaXMCCl9zdXBwbGllZF8JANgEAQUFYXNzZXQJAQ10cnlHZXRJbnRlZ2VyAgULZEFwcEFkZHJlc3MJAKwCAgkA2AQBBQVhc3NldAIGX3NSYXRlBQNkMTYBCF9sb2FkSW50AgRrZXlfCGRlZmF1bHRfBAckbWF0Y2gwCQCaCAIFDFNXQVZFU19zdGFrZQUEa2V5XwMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEFCGRlZmF1bHRfAQtfbG9hZEJpZ0ludAIEa2V5XwhkZWZhdWx0XwQHJG1hdGNoMAkAnAgCBQxTV0FWRVNfc3Rha2UFBGtleV8DCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYQUHJG1hdGNoMAkAngMBBQFhBQhkZWZhdWx0XwAIbGFzdFJhdGUJAQtfbG9hZEJpZ0ludAICCUxBU1RfUkFURQkAtgIBAICglKWNHQALY3VycmVudFJhdGUJAQtfbG9hZEJpZ0ludAICDENVUlJFTlRfUkFURQkAtgIBAAAACmxhc3RIZWlnaHQJAQhfbG9hZEludAICC0xBU1RfSEVJR0hUAAAADHRhcmdldEhlaWdodAkAlwMBCQDMCAIJAQhfbG9hZEludAICDVRBUkdFVF9IRUlHSFQAAAkAzAgCBQZoZWlnaHQFA25pbAAPbGFzdFJhdGVVcGRhdGVkCQC3AgIFCGxhc3RSYXRlCQC5AgIFC2N1cnJlbnRSYXRlCQC2AgEJAGUCBQx0YXJnZXRIZWlnaHQFCmxhc3RIZWlnaHQACmJhc2VBbW91bnQJAKADAQkAvQIECQC2AgEJAPAHAgUNV1hfV0FWRVNfRUFTVAUGc3dhdmVzBQ9sYXN0UmF0ZVVwZGF0ZWQJALYCAQCAoJSljR0FBUZMT09SAAtiYXNlQW1vdW50MgkAoAMBCQC9AgQJALYCAQkA8AcCBQxXWF9FVEhfV0FWRVMFBnN3YXZlcwUPbGFzdFJhdGVVcGRhdGVkCQC2AgEAgKCUpY0dBQVGTE9PUgAJd2F2ZXNJbldYCQBkAggJAO8HAQUNV1hfV0FWRVNfRUFTVAdyZWd1bGFyBQpiYXNlQW1vdW50AAhlYXN0SW5XWAkA8AcCBQ1XWF9XQVZFU19FQVNUBQRlYXN0AAl3YXZlc0Vhc3QJAGsDCQBoAgUCZDgAZAUIZWFzdEluV1gFCXdhdmVzSW5XWAAKd2F2ZXMySW5XWAkAZAIICQDvBwEFDFdYX0VUSF9XQVZFUwdyZWd1bGFyBQtiYXNlQW1vdW50MgAHZXRoSW5XWAkA8AcCBQxXWF9FVEhfV0FWRVMFA2V0aAAIZXRoV2F2ZXMJAGsDBQJkOAUKd2F2ZXMySW5XWAUHZXRoSW5XWAAQd2F2ZXNJbldoaXJscG9vbAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAkArAICCQCsAgICB2dsb2JhbF8JANgEAQUFd2F2ZXMCCF9iYWxhbmNlABB3aGlybEluV2hpcmxwb29sCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkCQCsAgIJAKwCAgIHZ2xvYmFsXwUPd2hpcmxwb29sU3RyaW5nAghfYmFsYW5jZQARcHJvamVjdFN0YWtlV2hpcmwJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQJAKwCAgkApQgBBQR0aGlzAgxfaW5kZXhTdGFrZWQAD3RvdGFsU3Rha2VXaGlybAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQADXN0RWFzdEluV2F2ZXMJAGgCCQBrAwkAaQIJAG4ECQDwBwIFBHRoaXMFBnN0ZWFzdAkBDXRyeUdldEludGVnZXICBQpFQVNUX3N0YWtlAgglc19fcmF0ZQCAoJSljR0FCEhBTEZFVkVOAGQFAmQ4BQl3YXZlc0Vhc3QAZAANZWFzdEluU3Rha2luZwkAaQIJAG4ECQDwBwIFBHRoaXMFBnN0ZWFzdAkBDXRyeUdldEludGVnZXICBQpFQVNUX3N0YWtlAgglc19fcmF0ZQCAoJSljR0FCEhBTEZFVkVOAGQADWtleVZhdWx0QXNzZXQJAQx0cnlHZXRTdHJpbmcCCQEHQWRkcmVzcwEBGgFX2uOuefvK+c/jAzQhEVGadt14ZVxGW3IYCQCsAgIJAKwCAgIPJXMlcyVzX192YXVsdF9fCQClCAEFBHRoaXMCB19fV0FWRVMAC1dBVkVTaW5FQVNUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQ1rZXlWYXVsdEFzc2V0AgJfXwACAAtkQXBwYWRkcmVzcwkBB0FkZHJlc3MBARoBV6/jkM1C/fh9Eb9nLjCmpdUnA6Fup99jWQAJRVRIYXRva2VuCQENdHJ5R2V0SW50ZWdlcgIFC2RBcHBhZGRyZXNzCQCsAgIJAKUIAQUEdGhpcwIOX2FUb2tlbkJhbGFuY2UADkVUSGF0b2tlblRvdGFsCQENdHJ5R2V0SW50ZWdlcgIFC2RBcHBhZGRyZXNzAhFhVG9rZW5DaXJjdWxhdGlvbgAKcmVzZXJ2ZVN0cgkBDHRyeUdldFN0cmluZwIFC2RBcHBhZGRyZXNzAhFyZXNlcnZlR2xvYmFsRGF0YQAHZ2V0MVN0cgkAkQMCCQC1CQIFCnJlc2VydmVTdHICAXwAAQAIc3RyVG9JbnQJAQ1wYXJzZUludFZhbHVlAQUHZ2V0MVN0cgAPRVRIdG90YWxSZXNlcnZlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQEMdHJ5R2V0U3RyaW5nAgULZEFwcGFkZHJlc3MCEXJlc2VydmVHbG9iYWxEYXRhAgF8AAEACkVUSGluVmlyZXMJAGsDBQlFVEhhdG9rZW4FD0VUSHRvdGFsUmVzZXJ2ZQUORVRIYXRva2VuVG90YWwAEkVUSGluVmlyZXNXYXZlbGV0cwkAawMFCkVUSGluVmlyZXMFCGV0aFdhdmVzBQJkOAAKdHZsSW5XYXZlcwkAZAIJAGQCCQBrAwkAaAIFC3dhdmVzSW5Qb29sAAoFDHByb2plY3RTdGFrZQUKdG90YWxTdGFrZQkAawMJAGgCBRB3YXZlc0luV2hpcmxwb29sAAoFEXByb2plY3RTdGFrZVdoaXJsBQ90b3RhbFN0YWtlV2hpcmwFEkVUSGluVmlyZXNXYXZlbGV0cwAHdG90YWxCVAULV0FWRVNpbkVBU1QADXRvdGFsVHJlYXN1cnkJAGQCBQd0b3RhbEJUBQp0dmxJbldhdmVzAA93aGlybHBvb2xTdXBwbHkEByRtYXRjaDAJAOwHAQUJd2hpcmxwb29sAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAAFcHJpY2UDCQBnAgkAZAIJAGsDCQBkAgUKdHZsSW5XYXZlcwkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQFAmQ4BQ93aGlybHBvb2xTdXBwbHkFAmQ4CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFFmtleVdoaXJscG9vbElzc3VlUHJpY2UJAGQCCQBrAwkAZAIFCnR2bEluV2F2ZXMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQJkOAUPd2hpcmxwb29sU3VwcGx5BQJkOAkBDXRyeUdldEludGVnZXICBQR0aGlzBRZrZXlXaGlybHBvb2xJc3N1ZVByaWNlCgFpARVidXlXSElSTFBPT0x3aXRoV0FWRVMABBZXaGlybHBvb2xCYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMFCXdoaXJscG9vbAMJAAACBRZXaGlybHBvb2xCYWxhbmNlQmVmb3JlBRZXaGlybHBvb2xCYWxhbmNlQmVmb3JlBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHc3VycGx1cwkAawMJAGUCBQVwcmljZQUCZDgIBQNwbXQGYW1vdW50BQJkOAQLSXNzdWVBbW91bnQDCQBnAggFA3BtdAZhbW91bnQJAGsDCAUDcG10BmFtb3VudAUCZDgFBXByaWNlCQBrAwgFA3BtdAZhbW91bnQFAmQ4BQVwcmljZQkAAgECMHBsZWFzZSBjb250YWN0IHByb2plY3Qgb3duZXI6IGlzc3VlIGFtb3VudCBlcnJvcgQNY2xlYW5BbW91bnRJbgkAZQIIBQNwbXQGYW1vdW50CQBrAwgFA3BtdAZhbW91bnQAyAEAkE4ECUFtb3VudE91dAkAbgQFEHdoaXJsSW5XaGlybHBvb2wJAGUCCQBoAgUCZDgFAmQ4CQCgAwEJAHYGCQC9AgQJALYCAQUQd2F2ZXNJbldoaXJscG9vbAkAtgIBCQBoAgUCZDgFAmQ4CQC2AgEJAGQCBRB3YXZlc0luV2hpcmxwb29sBQ1jbGVhbkFtb3VudEluBQZIQUxGVVAAEAkAtgIBCQBrAwCgjQYAkE4AoPc2AAQAEAUHQ0VJTElORwkAaAIFAmQ4BQJkOAUERE9XTgMJAGYCCQBpAgUCZDgAFAgFA3BtdAZhbW91bnQJAAIBAhptaW5pbXVtIHBheW1lbnQgMC4wNSBXQVZFUwMJAQIhPQIIBQNwbXQHYXNzZXRJZAUEdW5pdAkAAgECF2F0dGFjaCBXQVZFUyB0b2tlbiBvbmx5BANidXkDCQBmAgUJQW1vdW50T3V0BQtJc3N1ZUFtb3VudAkA/AcECQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAIEc3dhcAkAzAgCBQ93aGlybHBvb2xTdHJpbmcJAMwIAgkAZAIFC0lzc3VlQW1vdW50AAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAgFA3BtdAZhbW91bnQFA25pbAUEdW5pdAMJAAACBQNidXkFA2J1eQQVV2hpcmxwb29sQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFCXdoaXJscG9vbAQRV2hpcmxwb29sRnJvbVN3YXAJAGUCBRVXaGlybHBvb2xCYWxhbmNlQWZ0ZXIFFldoaXJscG9vbEJhbGFuY2VCZWZvcmUJAMwIAgkBB1JlaXNzdWUDBQl3aGlybHBvb2wDCQBnAgULSXNzdWVBbW91bnQFCUFtb3VudE91dAULSXNzdWVBbW91bnQAAAYJAMwIAgMJAGYCBQlBbW91bnRPdXQFC0lzc3VlQW1vdW50CQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFEVdoaXJscG9vbEZyb21Td2FwBQl3aGlybHBvb2wJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULSXNzdWVBbW91bnQFCXdoaXJscG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUWa2V5V2hpcmxwb29sSXNzdWVQcmljZQUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIDCQBmAgUJQW1vdW50T3V0BQtJc3N1ZUFtb3VudAIVcHJpY2UgV0hJUkxQT09ML1dBVkVTAiBXSElSTFBPT0wvV0FWRVMgbWlkIG1hcmtldCBwcmljZQMJAGYCBQlBbW91bnRPdXQFC0lzc3VlQW1vdW50CQBrAwUCZDgIBQNwbXQGYW1vdW50BRFXaGlybHBvb2xGcm9tU3dhcAkAawMFAmQ4CQBoAgUQd2F2ZXNJbldoaXJscG9vbAAJBRB3aGlybEluV2hpcmxwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlXYXZlbGV0c1JlY2VpdmVkAwkAZwIFC0lzc3VlQW1vdW50BQlBbW91bnRPdXQJAGQCCAUDcG10BmFtb3VudAkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVdhdmVsZXRzUmVjZWl2ZWQDCQBnAgULSXNzdWVBbW91bnQFCUFtb3VudE91dAkAZAIJAGUCCAUDcG10BmFtb3VudAUHc3VycGx1cwkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtleVN1cnBsdXNSZWNlaXZlZAMJAGYCBQlBbW91bnRPdXQFC0lzc3VlQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQJAGQCBQdzdXJwbHVzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVwcmljZUFuZFRyZWFzdXJ5U3RhdHMACQDMCAIJAQxJbnRlZ2VyRW50cnkCAg9FVEgvV0FWRVMgcHJpY2UFCGV0aFdhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZCVCBXQVZFUyBpbiBFQVNUIHZhdWx0BQtXQVZFU2luRUFTVAkAzAgCCQEMSW50ZWdlckVudHJ5AgIiU1QgQlVSTi1YVE4geCBQZXBlVGVhbSBpbiB3YXZlbGV0cwkAawMJAGgCBQt3YXZlc0luUG9vbAAKBQxwcm9qZWN0U3Rha2UFCnRvdGFsU3Rha2UJAMwIAgkBDEludGVnZXJFbnRyeQICHFNUIFdISVJMUE9PTCBBTU0gaW4gd2F2ZWxldHMJAGsDCQBoAgUQd2F2ZXNJbldoaXJscG9vbAAKBRFwcm9qZWN0U3Rha2VXaGlybAUPdG90YWxTdGFrZVdoaXJsCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgdTVCB2RVRIBQpFVEhpblZpcmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhNTVCB2RVRIIGluIHdhdmVsZXRzBRJFVEhpblZpcmVzV2F2ZWxldHMJAMwIAgkBDEludGVnZXJFbnRyeQICFFRvdGFsIFNUIGluIHdhdmVsZXRzBQp0dmxJbldhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZrZXlXaGlybHBvb2xJc3N1ZVByaWNlBQVwcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIgV0hJUkxQT09ML1dBVkVTIG1pZCBtYXJrZXQgcHJpY2UJAGsDBQJkOAkAaAIFEHdhdmVzSW5XaGlybHBvb2wACQUQd2hpcmxJbldoaXJscG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgIWV0hJUkxQT09MIHRvdGFsIHN1cHBseQUPd2hpcmxwb29sU3VwcGx5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAg5Ub3RhbCB0cmVhc3VyeQUNdG90YWxUcmVhc3VyeQkAzAgCCQEMSW50ZWdlckVudHJ5AgINTkFWIFdISVJMUE9PTAkAawMFAmQ4BQ10b3RhbFRyZWFzdXJ5BQ93aGlybHBvb2xTdXBwbHkJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUTa2V5V2F2ZWxldHNSZWNlaXZlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5U3VycGx1c1JlY2VpdmVkCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVN1cnBsdXNSZWNlaXZlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5V2F2ZWxldHNSZWNlaXZlZAkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlXYXZlbGV0c1BhaWRPdXQJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhR0b3RhbCBXQVZFUyByZWNlaXZlZAkAaQIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUTa2V5V2F2ZWxldHNSZWNlaXZlZAUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQICF1RvdGFsIHRyZWFzdXJ5IGluIFdBVkVTCQBpAgUNdG90YWxUcmVhc3VyeQUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQICGXN1cnBsdXMgcmVjZWl2ZWQgaW4gV0FWRVMJAGkCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVN1cnBsdXNSZWNlaXZlZAUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQICJnRvdGFsIFdBVkVTIHJlY2VpdmVkIGZvciBiYXNlIHRyZWFzdXJ5CQBpAgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkBQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgIddG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gV0FWRVMJAGkCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdhdmVsZXRzUGFpZE91dAUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQIFBmtleVJPSQkBDXRyeUdldEludGVnZXICBQR0aGlzBQZrZXlST0kFA25pbAFpAQxib29zdFBvb2xBUFkAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQHYmFsYW5jZQMJAGYCBQJkOAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAhBub3QgZW5vdWdoIFdBVkVTCQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFAmQ4BAdib29zdDgwCQBrAwUHYmFsYW5jZQBQAGQDCQAAAgUHYm9vc3Q4MAUHYm9vc3Q4MAQLYW1vdW50Qm9vc3QJAGsDBQdib29zdDgwAFAAZAMJAAACBQthbW91bnRCb29zdAULYW1vdW50Qm9vc3QEC2Ftb3VudE93bmVyCQBrAwUHYm9vc3Q4MAAUAGQDCQAAAgULYW1vdW50T3duZXIFC2Ftb3VudE93bmVyBAVib29zdAkA/AcECQEHQWRkcmVzcwEFC3Bvb2xib29zdFNDAgthZGRCb29zdGluZwkAzAgCCQDYBAEFD3doaXJscG9vbFBvb2xJZAkAzAgCAAcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAULYW1vdW50Qm9vc3QFA25pbAMJAAACBQVib29zdAUFYm9vc3QJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQxwcm9qZWN0T3duZXIFC2Ftb3VudE93bmVyBQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlXYXZlbGV0c1BhaWRPdXQJAGQCBQthbW91bnRCb29zdAkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlXYXZlbGV0c1BhaWRPdXQJAMwIAgkBDEludGVnZXJFbnRyeQIFBmtleVJPSQkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0AJBOCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtleUFjdGl2YXRlZAUGaGVpZ2h0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQYm9vc3RQb29sQVBZX2FsbAADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBAdiYWxhbmNlAwkAZgIFAmQ4CAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkAAgECEG5vdCBlbm91Z2ggV0FWRVMJAGUCCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQUCZDgEC2Ftb3VudEJvb3N0CQBrAwUHYmFsYW5jZQBQAGQDCQAAAgULYW1vdW50Qm9vc3QFC2Ftb3VudEJvb3N0BAthbW91bnRPd25lcgkAawMFB2JhbGFuY2UAFABkAwkAAAIFC2Ftb3VudE93bmVyBQthbW91bnRPd25lcgQFYm9vc3QJAPwHBAkBB0FkZHJlc3MBBQtwb29sYm9vc3RTQwILYWRkQm9vc3RpbmcJAMwIAgkA2AQBBQ93aGlybHBvb2xQb29sSWQJAMwIAgAHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFC2Ftb3VudEJvb3N0BQNuaWwDCQAAAgUFYm9vc3QFBWJvb3N0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUMcHJvamVjdE93bmVyBQthbW91bnRPd25lcgUEdW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5V2F2ZWxldHNQYWlkT3V0CQBkAgULYW1vdW50Qm9vc3QJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZrZXlST0kJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdhdmVsZXRzUGFpZE91dACQTgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrZXlBY3RpdmF0ZWQFBmhlaWdodAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3RyYW5zZmVyUG9vbEFQWQADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBAdiYWxhbmNlAwkAZgIFAmQ4CAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkAAgECEG5vdCBlbm91Z2ggV0FWRVMJAGUCCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQUCZDgEB2Jvb3N0ODAJAGsDBQdiYWxhbmNlAFAAZAMJAAACBQdib29zdDgwBQdib29zdDgwBAthbW91bnRCb29zdAkAawMFB2Jvb3N0ODAAUABkAwkAAAIFC2Ftb3VudEJvb3N0BQthbW91bnRCb29zdAQLYW1vdW50T3duZXIJAGsDBQdib29zdDgwABQAZAMJAAACBQthbW91bnRPd25lcgULYW1vdW50T3duZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQFC2Ftb3VudEJvb3N0BQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUMcHJvamVjdE93bmVyBQthbW91bnRPd25lcgUEdW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5V2F2ZWxldHNQYWlkT3V0CQBkAgULYW1vdW50Qm9vc3QJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZrZXlST0kJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdhdmVsZXRzUGFpZE91dACQTgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrZXlBY3RpdmF0ZWQFBmhlaWdodAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE3RyYW5zZmVyUG9vbEFQWV9hbGwAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQHYmFsYW5jZQMJAGYCBQJkOAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAhBub3QgZW5vdWdoIFdBVkVTCQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFAmQ4BAthbW91bnRCb29zdAkAawMFB2JhbGFuY2UAUABkAwkAAAIFC2Ftb3VudEJvb3N0BQthbW91bnRCb29zdAQLYW1vdW50T3duZXIJAGsDBQdiYWxhbmNlABQAZAMJAAACBQthbW91bnRPd25lcgULYW1vdW50T3duZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQFC2Ftb3VudEJvb3N0BQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUMcHJvamVjdE93bmVyBQthbW91bnRPd25lcgUEdW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5V2F2ZWxldHNQYWlkT3V0CQBkAgULYW1vdW50Qm9vc3QJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZrZXlST0kJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdhdmVsZXRzUGFpZE91dACQTgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrZXlBY3RpdmF0ZWQFBmhlaWdodAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE3Bvb2xPbmVUb2tlblN1cnBsdXMAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQNc3VycGx1c0Ftb3VudAkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQEE1Bvb2xPbmVUb2tlblN1cnBsdXMJAPwHBAkBB0FkZHJlc3MBARoBV/0lw71OYZRB77peEmOPxTlvSbWIOvXpbQIhZ2VuZXJhdGVJbmRleFdpdGhPbmVUb2tlbkFuZFN0YWtlCQDMCAIJANgEAQUQYnVybnh0blBQVHBvb2xJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQ1zdXJwbHVzQW1vdW50BQNuaWwDCQAAAgUTUG9vbE9uZVRva2VuU3VycGx1cwUTUG9vbE9uZVRva2VuU3VycGx1cwkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5U3VycGx1c1JlY2VpdmVkCQBlAgkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQFDXN1cnBsdXNBbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9zdXJwbHVzSW52ZXN0ZWQBC2Ftb3VudFdBVkVTAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQOaW52ZXN0ZWRBbW91bnQJAGgCBQthbW91bnRXQVZFUwUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtleVN1cnBsdXNSZWNlaXZlZAkAZQIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQ5pbnZlc3RlZEFtb3VudAUDbmlsAWkBEmNoYW5nZUludGVnZXJFbnRyeQIJa2V5U3RyaW5nB2ludGVnZXIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlTdHJpbmcFB2ludGVnZXIFA25pbAFpAQlhY3RpdmF0ZWQAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQITeW91IGFyZSBub3QgYWxsb3dlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMa2V5QWN0aXZhdGVkBQZoZWlnaHQFA25pbAECdHgBBnZlcmlmeQADCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5BgMJAGYCCQBkAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUMa2V5QWN0aXZhdGVkBQt1bmxvY2tCbG9jawUGaGVpZ2h0BwMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCmhlaXJQdWJLZXkGAwkAZgIJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQxrZXlBY3RpdmF0ZWQFDHVubG9ja0Jsb2NrMgUGaGVpZ2h0BwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUSUHV6emxlTWFzdGVyUHViS2V5niSApA==", "height": 3925928, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 79Ch1ZbnU36vBpAxTEe9gWdvZodXYMDBhu4aTiLbPRc3 Next: BfjixFRijMbyFrua6ujJpJH7BoZ2hW1Ks42VKdBYqKtB Diff:
OldNewDifferences
209209 let IssueAmount = if ((pmt.amount >= fraction(pmt.amount, d8, price)))
210210 then fraction(pmt.amount, d8, price)
211211 else throw("please contact project owner: issue amount error")
212- let supplyAmount = ((pmt.amount - surplus) / 3)
213212 let cleanAmountIn = (pmt.amount - fraction(pmt.amount, 200, 10000))
214213 let AmountOut = fraction(whirlInWhirlpool, ((d8 * d8) - toInt(pow(fraction(toBigInt(wavesInWhirlpool), toBigInt((d8 * d8)), toBigInt((wavesInWhirlpool + cleanAmountIn)), HALFUP), 16, toBigInt(fraction(100000, 10000, 900000)), 4, 16, CEILING))), (d8 * d8), DOWN)
215- if ((pmt.assetId != unit))
216- then throw("attach WAVES token only")
217- else {
218- let buy = if ((AmountOut > IssueAmount))
219- then invoke(Address(whirlpoolPoolId), "swap", [whirlpoolString, (IssueAmount + 1)], [AttachedPayment(unit, pmt.amount)])
220- else unit
221- if ((buy == buy))
222- then {
223- let WhirlpoolBalanceAfter = assetBalance(this, whirlpool)
224- let WhirlpoolFromSwap = (WhirlpoolBalanceAfter - WhirlpoolBalanceBefore)
214+ if (((d8 / 20) > pmt.amount))
215+ then throw("minimum payment 0.05 WAVES")
216+ else if ((pmt.assetId != unit))
217+ then throw("attach WAVES token only")
218+ else {
219+ let buy = if ((AmountOut > IssueAmount))
220+ then invoke(Address(whirlpoolPoolId), "swap", [whirlpoolString, (IssueAmount + 1)], [AttachedPayment(unit, pmt.amount)])
221+ else unit
222+ if ((buy == buy))
223+ then {
224+ let WhirlpoolBalanceAfter = assetBalance(this, whirlpool)
225+ let WhirlpoolFromSwap = (WhirlpoolBalanceAfter - WhirlpoolBalanceBefore)
225226 [Reissue(whirlpool, if ((IssueAmount >= AmountOut))
226- then IssueAmount
227- else 0, true), if ((AmountOut > IssueAmount))
228- then ScriptTransfer(i.caller, WhirlpoolFromSwap, whirlpool)
229- else ScriptTransfer(i.caller, IssueAmount, whirlpool), IntegerEntry(keyWhirlpoolIssuePrice, price), IntegerEntry(if ((AmountOut > IssueAmount))
230- then "price WHIRLPOOL/WAVES"
231- else "WHIRLPOOL/WAVES mid market price", if ((AmountOut > IssueAmount))
232- then fraction(d8, pmt.amount, WhirlpoolFromSwap)
233- else fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry(keyWaveletsReceived, if ((IssueAmount >= AmountOut))
234- then (pmt.amount + tryGetInteger(this, keyWaveletsReceived))
235- else tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keyWaveletsReceived, if ((IssueAmount >= AmountOut))
236- then ((pmt.amount - surplus) + tryGetInteger(this, keyWaveletsReceived))
237- else tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keySurplusReceived, if ((AmountOut > IssueAmount))
238- then getIntegerValue(this, keySurplusReceived)
239- else (surplus + getIntegerValue(this, keySurplusReceived)))]
240- }
241- else throw("Strict value is not equal to itself.")
242- }
227+ then IssueAmount
228+ else 0, true), if ((AmountOut > IssueAmount))
229+ then ScriptTransfer(i.caller, WhirlpoolFromSwap, whirlpool)
230+ else ScriptTransfer(i.caller, IssueAmount, whirlpool), IntegerEntry(keyWhirlpoolIssuePrice, price), IntegerEntry(if ((AmountOut > IssueAmount))
231+ then "price WHIRLPOOL/WAVES"
232+ else "WHIRLPOOL/WAVES mid market price", if ((AmountOut > IssueAmount))
233+ then fraction(d8, pmt.amount, WhirlpoolFromSwap)
234+ else fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry(keyWaveletsReceived, if ((IssueAmount >= AmountOut))
235+ then (pmt.amount + tryGetInteger(this, keyWaveletsReceived))
236+ else tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keyWaveletsReceived, if ((IssueAmount >= AmountOut))
237+ then ((pmt.amount - surplus) + tryGetInteger(this, keyWaveletsReceived))
238+ else tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keySurplusReceived, if ((AmountOut > IssueAmount))
239+ then getIntegerValue(this, keySurplusReceived)
240+ else (surplus + getIntegerValue(this, keySurplusReceived)))]
241+ }
242+ else throw("Strict value is not equal to itself.")
243+ }
243244 }
244245 else throw("Strict value is not equal to itself.")
245246 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetInteger (address,key) = match getInteger(address, key) {
55 case b: Int =>
66 b
77 case _ =>
88 0
99 }
1010
1111
1212 func tryGetString (address,key) = match getString(address, key) {
1313 case b: String =>
1414 b
1515 case _ =>
1616 ""
1717 }
1818
1919
2020 let d8 = 100000000
2121
2222 let d16 = (d8 * d8)
2323
2424 let unlockBlock = (30 * 1440)
2525
2626 let heirPubKey = base58'2kpmuzw1ZbrtgAN3BrR7vbEW1XrJoJKCstL7mf7XNf2P'
2727
2828 let unlockBlock2 = (90 * 1440)
2929
3030 let PuzzleMasterPubKey = base58'4z8CKSYQBKkzx7PBb5uBP1YPa6YAHRNTApW1sQVHT5eU'
3131
3232 let keyActivated = "Activated blockheight"
3333
3434 let keySurplusReceived = "surplus received in wavelets"
3535
3636 let keyWaveletsReceived = "total WAVES received in wavelets"
3737
3838 let keyWaveletsReceivedBT = "total wavelets received for base treasury"
3939
4040 let keyWaveletsPaidOut = "total WAVES paid out in wavelets"
4141
4242 let keyROI = "ROI basis points"
4343
4444 let keyWhirlpoolIssuePrice = "WHIRLPOOL issue price in wavelets"
4545
4646 let burnxtnPPTpoolId = base58'3PQHndCUVrv3wBuQjbvVP9SnGmfbfitGxfx'
4747
4848 let projectOwner = base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'
4949
5050 let whirlpoolPoolId = base58'3P2myTbd5zpEHcYmNpdWTp5gXS5B8tL1RCY'
5151
5252 let whirlpool = base58'fHJWWsh2hZAc4Atv8VRhKy3jNbHLeMwQMsLpdaBY51Y'
5353
5454 let whirlpoolString = toBase58String(base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi')
5555
5656 let waves = base58'WAVES'
5757
5858 let usdterc = base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
5959
6060 let usdcerc = base58'HGgabTqUS8WtVFUJzfmrTDMgEccJuZLBPhFgQFxvnsoW'
6161
6262 let usdtbsc = base58'A81p1LTRyoq2rDR2TNxB2dWYxsiNwCSSi8sXef2SEkwb'
6363
6464 let usdcbsc = base58'4BKKSp6NoNcrFHyorZogDyctq1fq6w7114Ym1pw6HUtC'
6565
6666 let burnxtn = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns'
6767
6868 let eth = base58'3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13'
6969
7070 let bnb = base58'66a1br3BrkoaJgP7yEar9hJcSTvJPoH6PYBLqscXcMGo'
7171
7272 let wbtc = base58'2Fge5HEBRD3XTeg7Xg3FW5yiB9HVJFQtMXiWMQo72Up6'
7373
7474 let btcb = base58'EW1uGLVo21Wd9i2Rhq8o4VKDTCQTGCGXE8DqayHGrLg8'
7575
7676 let east = base58'6phK22ztGBW127gUFmdMEHKB3CVd6ZhWox2WtwJkbqTq'
7777
7878 let steast = base58'GAB8JowY9UANZ4TQy2TzJyhxjPqXX3DUrb2cdMWrrJus'
7979
8080 let swaves = base58'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7'
8181
8282 let surf = base58'At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL'
8383
8484 let poolboostSC = base58'3P8eeDzUnoDNbQjW617pAe76cEUDQsP1m1V'
8585
8686 let PL_Main = Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH')
8787
8888 let PL_Defi = Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X')
8989
9090 let PL_Low = Address(base58'3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH')
9191
9292 let EAST_stake = Address(base58'3P2hbtheN5apNppqqUK7L7qAwmRFXy91CNa')
9393
9494 let WX_WAVES_EAST = Address(base58'3PJVwjfi2fF5Jv9AauayU6xLxrYBn8bpGH1')
9595
9696 let SWAVES_stake = Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV')
9797
9898 let WX_ETH_WAVES = Address(base58'3P2yiVnK48evTLr8MAZWavpE4WA4fw1weQg')
9999
100100 let wavesInPool = tryGetInteger(Address(burnxtnPPTpoolId), (("global_" + toBase58String(waves)) + "_balance"))
101101
102102 let projectStake = tryGetInteger(Address(burnxtnPPTpoolId), (toString(this) + "_indexStaked"))
103103
104104 let totalStake = tryGetInteger(Address(burnxtnPPTpoolId), "global_poolToken_amount")
105105
106106 func PL_value (dAppAddress,asset) = fraction(tryGetInteger(dAppAddress, ((toString(this) + "_supplied_") + toBase58String(asset))), tryGetInteger(dAppAddress, (toBase58String(asset) + "_sRate")), d16)
107107
108108
109109 func _loadInt (key_,default_) = match getInteger(SWAVES_stake, key_) {
110110 case a: Int =>
111111 a
112112 case _ =>
113113 default_
114114 }
115115
116116
117117 func _loadBigInt (key_,default_) = match getBinary(SWAVES_stake, key_) {
118118 case a: ByteVector =>
119119 toBigInt(a)
120120 case _ =>
121121 default_
122122 }
123123
124124
125125 let lastRate = _loadBigInt("LAST_RATE", toBigInt(1000000000000))
126126
127127 let currentRate = _loadBigInt("CURRENT_RATE", toBigInt(0))
128128
129129 let lastHeight = _loadInt("LAST_HEIGHT", 0)
130130
131131 let targetHeight = min([_loadInt("TARGET_HEIGHT", 0), height])
132132
133133 let lastRateUpdated = (lastRate + (currentRate * toBigInt((targetHeight - lastHeight))))
134134
135135 let baseAmount = toInt(fraction(toBigInt(assetBalance(WX_WAVES_EAST, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR))
136136
137137 let baseAmount2 = toInt(fraction(toBigInt(assetBalance(WX_ETH_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR))
138138
139139 let wavesInWX = (wavesBalance(WX_WAVES_EAST).regular + baseAmount)
140140
141141 let eastInWX = assetBalance(WX_WAVES_EAST, east)
142142
143143 let wavesEast = fraction((d8 * 100), eastInWX, wavesInWX)
144144
145145 let waves2InWX = (wavesBalance(WX_ETH_WAVES).regular + baseAmount2)
146146
147147 let ethInWX = assetBalance(WX_ETH_WAVES, eth)
148148
149149 let ethWaves = fraction(d8, waves2InWX, ethInWX)
150150
151151 let wavesInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + toBase58String(waves)) + "_balance"))
152152
153153 let whirlInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + whirlpoolString) + "_balance"))
154154
155155 let projectStakeWhirl = tryGetInteger(Address(whirlpoolPoolId), (toString(this) + "_indexStaked"))
156156
157157 let totalStakeWhirl = tryGetInteger(Address(whirlpoolPoolId), "global_poolToken_amount")
158158
159159 let stEastInWaves = (fraction((fraction(assetBalance(this, steast), tryGetInteger(EAST_stake, "%s__rate"), 1000000000000, HALFEVEN) / 100), d8, wavesEast) * 100)
160160
161161 let eastInStaking = (fraction(assetBalance(this, steast), tryGetInteger(EAST_stake, "%s__rate"), 1000000000000, HALFEVEN) / 100)
162162
163163 let keyVaultAsset = tryGetString(Address(base58'3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb'), (("%s%s%s__vault__" + toString(this)) + "__WAVES"))
164164
165165 let WAVESinEAST = parseIntValue(split(keyVaultAsset, "__")[2])
166166
167167 let dAppaddress = Address(base58'3PHxubMUtynEY2AeHq3K1kUizRPN9HUC2rt')
168168
169169 let ETHatoken = tryGetInteger(dAppaddress, (toString(this) + "_aTokenBalance"))
170170
171171 let ETHatokenTotal = tryGetInteger(dAppaddress, "aTokenCirculation")
172172
173173 let reserveStr = tryGetString(dAppaddress, "reserveGlobalData")
174174
175175 let get1Str = split(reserveStr, "|")[1]
176176
177177 let strToInt = parseIntValue(get1Str)
178178
179179 let ETHtotalReserve = parseIntValue(split(tryGetString(dAppaddress, "reserveGlobalData"), "|")[1])
180180
181181 let ETHinVires = fraction(ETHatoken, ETHtotalReserve, ETHatokenTotal)
182182
183183 let ETHinViresWavelets = fraction(ETHinVires, ethWaves, d8)
184184
185185 let tvlInWaves = ((fraction((wavesInPool * 10), projectStake, totalStake) + fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)) + ETHinViresWavelets)
186186
187187 let totalBT = WAVESinEAST
188188
189189 let totalTreasury = (totalBT + tvlInWaves)
190190
191191 let whirlpoolSupply = match assetInfo(whirlpool) {
192192 case asset: Asset =>
193193 asset.quantity
194194 case _ =>
195195 throw("Can't find asset")
196196 }
197197
198198 let price = if (((fraction((tvlInWaves + tryGetInteger(this, keySurplusReceived)), d8, whirlpoolSupply) + d8) >= tryGetInteger(this, keyWhirlpoolIssuePrice)))
199199 then (fraction((tvlInWaves + tryGetInteger(this, keySurplusReceived)), d8, whirlpoolSupply) + d8)
200200 else tryGetInteger(this, keyWhirlpoolIssuePrice)
201201
202202 @Callable(i)
203203 func buyWHIRLPOOLwithWAVES () = {
204204 let WhirlpoolBalanceBefore = assetBalance(this, whirlpool)
205205 if ((WhirlpoolBalanceBefore == WhirlpoolBalanceBefore))
206206 then {
207207 let pmt = value(i.payments[0])
208208 let surplus = fraction((price - d8), pmt.amount, d8)
209209 let IssueAmount = if ((pmt.amount >= fraction(pmt.amount, d8, price)))
210210 then fraction(pmt.amount, d8, price)
211211 else throw("please contact project owner: issue amount error")
212- let supplyAmount = ((pmt.amount - surplus) / 3)
213212 let cleanAmountIn = (pmt.amount - fraction(pmt.amount, 200, 10000))
214213 let AmountOut = fraction(whirlInWhirlpool, ((d8 * d8) - toInt(pow(fraction(toBigInt(wavesInWhirlpool), toBigInt((d8 * d8)), toBigInt((wavesInWhirlpool + cleanAmountIn)), HALFUP), 16, toBigInt(fraction(100000, 10000, 900000)), 4, 16, CEILING))), (d8 * d8), DOWN)
215- if ((pmt.assetId != unit))
216- then throw("attach WAVES token only")
217- else {
218- let buy = if ((AmountOut > IssueAmount))
219- then invoke(Address(whirlpoolPoolId), "swap", [whirlpoolString, (IssueAmount + 1)], [AttachedPayment(unit, pmt.amount)])
220- else unit
221- if ((buy == buy))
222- then {
223- let WhirlpoolBalanceAfter = assetBalance(this, whirlpool)
224- let WhirlpoolFromSwap = (WhirlpoolBalanceAfter - WhirlpoolBalanceBefore)
214+ if (((d8 / 20) > pmt.amount))
215+ then throw("minimum payment 0.05 WAVES")
216+ else if ((pmt.assetId != unit))
217+ then throw("attach WAVES token only")
218+ else {
219+ let buy = if ((AmountOut > IssueAmount))
220+ then invoke(Address(whirlpoolPoolId), "swap", [whirlpoolString, (IssueAmount + 1)], [AttachedPayment(unit, pmt.amount)])
221+ else unit
222+ if ((buy == buy))
223+ then {
224+ let WhirlpoolBalanceAfter = assetBalance(this, whirlpool)
225+ let WhirlpoolFromSwap = (WhirlpoolBalanceAfter - WhirlpoolBalanceBefore)
225226 [Reissue(whirlpool, if ((IssueAmount >= AmountOut))
226- then IssueAmount
227- else 0, true), if ((AmountOut > IssueAmount))
228- then ScriptTransfer(i.caller, WhirlpoolFromSwap, whirlpool)
229- else ScriptTransfer(i.caller, IssueAmount, whirlpool), IntegerEntry(keyWhirlpoolIssuePrice, price), IntegerEntry(if ((AmountOut > IssueAmount))
230- then "price WHIRLPOOL/WAVES"
231- else "WHIRLPOOL/WAVES mid market price", if ((AmountOut > IssueAmount))
232- then fraction(d8, pmt.amount, WhirlpoolFromSwap)
233- else fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry(keyWaveletsReceived, if ((IssueAmount >= AmountOut))
234- then (pmt.amount + tryGetInteger(this, keyWaveletsReceived))
235- else tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keyWaveletsReceived, if ((IssueAmount >= AmountOut))
236- then ((pmt.amount - surplus) + tryGetInteger(this, keyWaveletsReceived))
237- else tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keySurplusReceived, if ((AmountOut > IssueAmount))
238- then getIntegerValue(this, keySurplusReceived)
239- else (surplus + getIntegerValue(this, keySurplusReceived)))]
240- }
241- else throw("Strict value is not equal to itself.")
242- }
227+ then IssueAmount
228+ else 0, true), if ((AmountOut > IssueAmount))
229+ then ScriptTransfer(i.caller, WhirlpoolFromSwap, whirlpool)
230+ else ScriptTransfer(i.caller, IssueAmount, whirlpool), IntegerEntry(keyWhirlpoolIssuePrice, price), IntegerEntry(if ((AmountOut > IssueAmount))
231+ then "price WHIRLPOOL/WAVES"
232+ else "WHIRLPOOL/WAVES mid market price", if ((AmountOut > IssueAmount))
233+ then fraction(d8, pmt.amount, WhirlpoolFromSwap)
234+ else fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry(keyWaveletsReceived, if ((IssueAmount >= AmountOut))
235+ then (pmt.amount + tryGetInteger(this, keyWaveletsReceived))
236+ else tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keyWaveletsReceived, if ((IssueAmount >= AmountOut))
237+ then ((pmt.amount - surplus) + tryGetInteger(this, keyWaveletsReceived))
238+ else tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keySurplusReceived, if ((AmountOut > IssueAmount))
239+ then getIntegerValue(this, keySurplusReceived)
240+ else (surplus + getIntegerValue(this, keySurplusReceived)))]
241+ }
242+ else throw("Strict value is not equal to itself.")
243+ }
243244 }
244245 else throw("Strict value is not equal to itself.")
245246 }
246247
247248
248249
249250 @Callable(i)
250251 func priceAndTreasuryStats () = [IntegerEntry("ETH/WAVES price", ethWaves), IntegerEntry("BT WAVES in EAST vault", WAVESinEAST), IntegerEntry("ST BURN-XTN x PepeTeam in wavelets", fraction((wavesInPool * 10), projectStake, totalStake)), IntegerEntry("ST WHIRLPOOL AMM in wavelets", fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)), IntegerEntry("ST vETH", ETHinVires), IntegerEntry("ST vETH in wavelets", ETHinViresWavelets), IntegerEntry("Total ST in wavelets", tvlInWaves), IntegerEntry(keyWhirlpoolIssuePrice, price), IntegerEntry("WHIRLPOOL/WAVES mid market price", fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry("WHIRLPOOL total supply", whirlpoolSupply), IntegerEntry("Total treasury", totalTreasury), IntegerEntry("NAV WHIRLPOOL", fraction(d8, totalTreasury, whirlpoolSupply)), IntegerEntry(keyWaveletsReceived, tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keySurplusReceived, tryGetInteger(this, keySurplusReceived)), IntegerEntry(keyWaveletsReceived, tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keyWaveletsPaidOut, tryGetInteger(this, keyWaveletsPaidOut)), IntegerEntry("total WAVES received", (tryGetInteger(this, keyWaveletsReceived) / d8)), IntegerEntry("Total treasury in WAVES", (totalTreasury / d8)), IntegerEntry("surplus received in WAVES", (tryGetInteger(this, keySurplusReceived) / d8)), IntegerEntry("total WAVES received for base treasury", (tryGetInteger(this, keyWaveletsReceived) / d8)), IntegerEntry("total WAVES paid out in WAVES", (tryGetInteger(this, keyWaveletsPaidOut) / d8)), IntegerEntry(keyROI, tryGetInteger(this, keyROI))]
251252
252253
253254
254255 @Callable(i)
255256 func boostPoolAPY () = if ((i.caller != this))
256257 then throw("access only by project owner")
257258 else {
258259 let balance = if ((d8 > wavesBalance(this).available))
259260 then throw("not enough WAVES")
260261 else (wavesBalance(this).available - d8)
261262 let boost80 = fraction(balance, 80, 100)
262263 if ((boost80 == boost80))
263264 then {
264265 let amountBoost = fraction(boost80, 80, 100)
265266 if ((amountBoost == amountBoost))
266267 then {
267268 let amountOwner = fraction(boost80, 20, 100)
268269 if ((amountOwner == amountOwner))
269270 then {
270271 let boost = invoke(Address(poolboostSC), "addBoosting", [toBase58String(whirlpoolPoolId), 7], [AttachedPayment(unit, amountBoost)])
271272 if ((boost == boost))
272273 then [ScriptTransfer(Address(projectOwner), amountOwner, unit), IntegerEntry(keyWaveletsPaidOut, (amountBoost + tryGetInteger(this, keyWaveletsPaidOut))), IntegerEntry(keyROI, fraction(tryGetInteger(this, keyWaveletsPaidOut), 10000, tryGetInteger(this, keyWaveletsReceived))), IntegerEntry(keyActivated, height)]
273274 else throw("Strict value is not equal to itself.")
274275 }
275276 else throw("Strict value is not equal to itself.")
276277 }
277278 else throw("Strict value is not equal to itself.")
278279 }
279280 else throw("Strict value is not equal to itself.")
280281 }
281282
282283
283284
284285 @Callable(i)
285286 func boostPoolAPY_all () = if ((i.caller != this))
286287 then throw("access only by project owner")
287288 else {
288289 let balance = if ((d8 > wavesBalance(this).available))
289290 then throw("not enough WAVES")
290291 else (wavesBalance(this).available - d8)
291292 let amountBoost = fraction(balance, 80, 100)
292293 if ((amountBoost == amountBoost))
293294 then {
294295 let amountOwner = fraction(balance, 20, 100)
295296 if ((amountOwner == amountOwner))
296297 then {
297298 let boost = invoke(Address(poolboostSC), "addBoosting", [toBase58String(whirlpoolPoolId), 7], [AttachedPayment(unit, amountBoost)])
298299 if ((boost == boost))
299300 then [ScriptTransfer(Address(projectOwner), amountOwner, unit), IntegerEntry(keyWaveletsPaidOut, (amountBoost + tryGetInteger(this, keyWaveletsPaidOut))), IntegerEntry(keyROI, fraction(tryGetInteger(this, keyWaveletsPaidOut), 10000, tryGetInteger(this, keyWaveletsReceived))), IntegerEntry(keyActivated, height)]
300301 else throw("Strict value is not equal to itself.")
301302 }
302303 else throw("Strict value is not equal to itself.")
303304 }
304305 else throw("Strict value is not equal to itself.")
305306 }
306307
307308
308309
309310 @Callable(i)
310311 func transferPoolAPY () = if ((i.caller != this))
311312 then throw("access only by project owner")
312313 else {
313314 let balance = if ((d8 > wavesBalance(this).available))
314315 then throw("not enough WAVES")
315316 else (wavesBalance(this).available - d8)
316317 let boost80 = fraction(balance, 80, 100)
317318 if ((boost80 == boost80))
318319 then {
319320 let amountBoost = fraction(boost80, 80, 100)
320321 if ((amountBoost == amountBoost))
321322 then {
322323 let amountOwner = fraction(boost80, 20, 100)
323324 if ((amountOwner == amountOwner))
324325 then [ScriptTransfer(Address(whirlpoolPoolId), amountBoost, unit), ScriptTransfer(Address(projectOwner), amountOwner, unit), IntegerEntry(keyWaveletsPaidOut, (amountBoost + tryGetInteger(this, keyWaveletsPaidOut))), IntegerEntry(keyROI, fraction(tryGetInteger(this, keyWaveletsPaidOut), 10000, tryGetInteger(this, keyWaveletsReceived))), IntegerEntry(keyActivated, height)]
325326 else throw("Strict value is not equal to itself.")
326327 }
327328 else throw("Strict value is not equal to itself.")
328329 }
329330 else throw("Strict value is not equal to itself.")
330331 }
331332
332333
333334
334335 @Callable(i)
335336 func transferPoolAPY_all () = if ((i.caller != this))
336337 then throw("access only by project owner")
337338 else {
338339 let balance = if ((d8 > wavesBalance(this).available))
339340 then throw("not enough WAVES")
340341 else (wavesBalance(this).available - d8)
341342 let amountBoost = fraction(balance, 80, 100)
342343 if ((amountBoost == amountBoost))
343344 then {
344345 let amountOwner = fraction(balance, 20, 100)
345346 if ((amountOwner == amountOwner))
346347 then [ScriptTransfer(Address(whirlpoolPoolId), amountBoost, unit), ScriptTransfer(Address(projectOwner), amountOwner, unit), IntegerEntry(keyWaveletsPaidOut, (amountBoost + tryGetInteger(this, keyWaveletsPaidOut))), IntegerEntry(keyROI, fraction(tryGetInteger(this, keyWaveletsPaidOut), 10000, tryGetInteger(this, keyWaveletsReceived))), IntegerEntry(keyActivated, height)]
347348 else throw("Strict value is not equal to itself.")
348349 }
349350 else throw("Strict value is not equal to itself.")
350351 }
351352
352353
353354
354355 @Callable(i)
355356 func poolOneTokenSurplus () = if ((i.caller != this))
356357 then throw("access only by project owner")
357358 else {
358359 let surplusAmount = tryGetInteger(this, keySurplusReceived)
359360 let PoolOneTokenSurplus = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [toBase58String(burnxtnPPTpoolId)], [AttachedPayment(unit, surplusAmount)])
360361 if ((PoolOneTokenSurplus == PoolOneTokenSurplus))
361362 then [IntegerEntry(keySurplusReceived, (tryGetInteger(this, keySurplusReceived) - surplusAmount))]
362363 else throw("Strict value is not equal to itself.")
363364 }
364365
365366
366367
367368 @Callable(i)
368369 func surplusInvested (amountWAVES) = if ((i.caller != this))
369370 then throw("access only by project owner")
370371 else {
371372 let investedAmount = (amountWAVES * d8)
372373 [IntegerEntry(keySurplusReceived, (tryGetInteger(this, keySurplusReceived) - investedAmount))]
373374 }
374375
375376
376377
377378 @Callable(i)
378379 func changeIntegerEntry (keyString,integer) = if ((i.caller != this))
379380 then throw("access only by project owner")
380381 else [IntegerEntry(keyString, integer)]
381382
382383
383384
384385 @Callable(i)
385386 func activated () = if ((i.caller != this))
386387 then throw("you are not allowed")
387388 else [IntegerEntry(keyActivated, height)]
388389
389390
390391 @Verifier(tx)
391392 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
392393 then true
393394 else if (((getIntegerValue(this, keyActivated) + unlockBlock) > height))
394395 then false
395396 else if (sigVerify(tx.bodyBytes, tx.proofs[0], heirPubKey))
396397 then true
397398 else if (((getIntegerValue(this, keyActivated) + unlockBlock2) > height))
398399 then false
399400 else sigVerify(tx.bodyBytes, tx.proofs[0], PuzzleMasterPubKey)
400401

github/deemru/w8io/3ef1775 
115.93 ms