tx · J7anBe2wxDgDYeysV1N7mvcH1STpU7xENFR5i7yZ1NEh

3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr:  -0.01300000 Waves

2024.03.12 09:01 [4080260] smart account 3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr > SELF 0.00000000 Waves

{ "type": 13, "id": "J7anBe2wxDgDYeysV1N7mvcH1STpU7xENFR5i7yZ1NEh", "fee": 1300000, "feeAssetId": null, "timestamp": 1710223294348, "version": 2, "chainId": 87, "sender": "3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr", "senderPublicKey": "A5AvSRrbVauQKBhPtuWTLTQdE5ka4nVCSDaVANpFur26", "proofs": [ "2iUBxhQLHdDfxbvh4D67tfceQ2Hf75aYZHbRjrMYsK2Fff7zjakefNzGAfGqwUcQyxTCzBrXvneyZ1vgTmvJNeSq" ], "script": "base64:BgIXCAISABIAEgMKAQESAwoBARIDCgEBEgBPAQ10cnlHZXRJbnRlZ2VyAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABDHRyeUdldFN0cmluZwIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJ0IAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgIAAAJkOACAwtcvAAt1bmxvY2tCbG9jawkAaAIAHgCgCwAKaGVpclB1YktleQEgGhWuLQ8iL9bocw38EUfyB7YO6jTez96WKtjdSBQafhAADHVubG9ja0Jsb2NrMgkAaAIAWgCgCwASUHV6emxlTWFzdGVyUHViS2V5ASA7NU1uP5+++FSclkQHgFarL+ITYEXEe/I/F0P0QgUmXQAMa2V5QWN0aXZhdGVkAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQAEmtleVN1cnBsdXNSZWNlaXZlZAIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwATa2V5V2F2ZWxldHNSZWNlaXZlZAIgdG90YWwgV0FWRVMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMAFWtleVdhdmVsZXRzUmVjZWl2ZWRCVAIpdG90YWwgd2F2ZWxldHMgcmVjZWl2ZWQgZm9yIGJhc2UgdHJlYXN1cnkAEmtleVdhdmVsZXRzUGFpZE91dAIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMABmtleVJPSQIQUk9JIGJhc2lzIHBvaW50cwAWa2V5V2hpcmxwb29sSXNzdWVQcmljZQIhV0hJUkxQT09MIGlzc3VlIHByaWNlIGluIHdhdmVsZXRzABBidXJueHRuUFBUcG9vbElkARoBV/VGaCeADWjfTiZ1erSh0ygx4Am/9Xl5NwAMcHJvamVjdE93bmVyARoBV44d5lHKOCPOw5HDxFaL1YPTb4hW/zbdCwAPd2hpcmxwb29sUG9vbElkARoBVwlIVKiYtf/MSkbbEv1LyZMZRjdDmIfXzQAJYmJiUG9vbElkARoBV1Luk1YUTX4HjNKFD+Z+XFc3fhyf7zyCHQAMd2F2ZXM1cG9vbElkARoBV3d/C10uHsD5Iu4ETQIKuwPrdpc7IIHrJgAJd2hpcmxwb29sASBZ443cwrUjukoU3MTQrxQJ5mTmBL4lBgsmTuVQbZdZxwAPd2hpcmxwb29sU3RyaW5nCQDYBAEBIFnjjdzCtSO6ShTcxNCvFAnmZOYEviUGCyZO5VBtl1nHAAV3YXZlcwEEE6vZMwADZXRoASAlHvr/2CHJcJ77wLTePrerhp4FO2bv3Af8UeP1qDMocgAGc3dhdmVzASAIH8j3FjDtUcIpG+ysGo/8kHEcWTgt6yGBsDdB8EXRSgAGcHV6emxlASDxGv4l/vaZOPRpKsTf4RLWR7LGyg66Nwmvd20fjqLlYwACd3gBIJMBHKupx24lV85mnnG2vapr+DzoWAsq7tmgTrs83BSxAAtwb29sYm9vc3RTQwEaAVdJth4Q36ANT9jV0A+j44S32V46KbMRqawADFNXQVZFU19zdGFrZQkBB0FkZHJlc3MBARoBV33Je5MUef/nUfGxSsdv+WodgJVHz1gjfgAMV1hfRVRIX1dBVkVTCQEHQWRkcmVzcwEBGgFXC4DVEg9NSl4lMarlQ8+0Wdgjo0PbD+vBAA9XWF9QVVpaTEVfV0FWRVMJAQdBZGRyZXNzAQEaAVf4ceejCfpl3qKBvq915B89rMuUynWtBK8AC1dYX1dYX1dBVkVTCQEHQWRkcmVzcwEBGgFXmkQFmJm8tKiQ5rdVb7cYKMuIhtMFfR9WAAt3YXZlc0luUG9vbAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFEGJ1cm54dG5QUFRwb29sSWQJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFBXdhdmVzAghfYmFsYW5jZQAMcHJvamVjdFN0YWtlCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUQYnVybnh0blBQVHBvb2xJZAkArAICCQClCAEFBHRoaXMCDF9pbmRleFN0YWtlZAAKdG90YWxTdGFrZQkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFEGJ1cm54dG5QUFRwb29sSWQCF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50AQhfbG9hZEludAIEa2V5XwhkZWZhdWx0XwQHJG1hdGNoMAkAmggCBQxTV0FWRVNfc3Rha2UFBGtleV8DCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhBQhkZWZhdWx0XwELX2xvYWRCaWdJbnQCBGtleV8IZGVmYXVsdF8EByRtYXRjaDAJAJwIAgUMU1dBVkVTX3N0YWtlBQRrZXlfAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWEFByRtYXRjaDAJAJ4DAQUBYQUIZGVmYXVsdF8ACGxhc3RSYXRlCQELX2xvYWRCaWdJbnQCAglMQVNUX1JBVEUJALYCAQCAoJSljR0AC2N1cnJlbnRSYXRlCQELX2xvYWRCaWdJbnQCAgxDVVJSRU5UX1JBVEUJALYCAQAAAApsYXN0SGVpZ2h0CQEIX2xvYWRJbnQCAgtMQVNUX0hFSUdIVAAAAAx0YXJnZXRIZWlnaHQJAJcDAQkAzAgCCQEIX2xvYWRJbnQCAg1UQVJHRVRfSEVJR0hUAAAJAMwIAgUGaGVpZ2h0BQNuaWwAD2xhc3RSYXRlVXBkYXRlZAkAtwICBQhsYXN0UmF0ZQkAuQICBQtjdXJyZW50UmF0ZQkAtgIBCQBlAgUMdGFyZ2V0SGVpZ2h0BQpsYXN0SGVpZ2h0AAtiYXNlQW1vdW50MgkAoAMBCQC9AgQJALYCAQkA8AcCBQxXWF9FVEhfV0FWRVMFBnN3YXZlcwUPbGFzdFJhdGVVcGRhdGVkCQC2AgEAgKCUpY0dBQVGTE9PUgALYmFzZUFtb3VudDMJAKADAQkAvQIECQC2AgEJAPAHAgUPV1hfUFVaWkxFX1dBVkVTBQZzd2F2ZXMFD2xhc3RSYXRlVXBkYXRlZAkAtgIBAICglKWNHQUFRkxPT1IAC2Jhc2VBbW91bnQ0CQCgAwEJAL0CBAkAtgIBCQDwBwIFC1dYX1dYX1dBVkVTBQZzd2F2ZXMFD2xhc3RSYXRlVXBkYXRlZAkAtgIBAICglKWNHQUFRkxPT1IACndhdmVzMkluV1gJAGQCCAkA7wcBBQxXWF9FVEhfV0FWRVMHcmVndWxhcgULYmFzZUFtb3VudDIAB2V0aEluV1gJAPAHAgUMV1hfRVRIX1dBVkVTBQNldGgACGV0aFdhdmVzCQBrAwUCZDgFCndhdmVzMkluV1gFB2V0aEluV1gACnB1enpsZUluV1gJAPAHAgUPV1hfUFVaWkxFX1dBVkVTBQZwdXp6bGUACndhdmVzM0luV1gJAGQCCAkA7wcBBQ9XWF9QVVpaTEVfV0FWRVMHcmVndWxhcgULYmFzZUFtb3VudDMAC3B1enpsZVdhdmVzCQBrAwUCZDgFCndhdmVzM0luV1gFCnB1enpsZUluV1gABnd4SW5XWAkA8AcCBQtXWF9XWF9XQVZFUwUCd3gACndhdmVzNEluV1gJAGQCCAkA7wcBBQtXWF9XWF9XQVZFUwdyZWd1bGFyBQtiYXNlQW1vdW50NAAHd3hXYXZlcwkAawMFAmQ4BQp3YXZlczRJbldYBQZ3eEluV1gAEHdhdmVzSW5XaGlybHBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFBXdhdmVzAghfYmFsYW5jZQAQd2hpcmxJbldoaXJscG9vbAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAkArAICCQCsAgICB2dsb2JhbF8FD3doaXJscG9vbFN0cmluZwIIX2JhbGFuY2UAEXByb2plY3RTdGFrZVdoaXJsCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkCQCsAgIJAKUIAQUEdGhpcwIMX2luZGV4U3Rha2VkAA90b3RhbFN0YWtlV2hpcmwJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQCF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50AAp3aGlybEluQkJCCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUJYmJiUG9vbElkCQCsAgIJAKwCAgIHZ2xvYmFsXwUPd2hpcmxwb29sU3RyaW5nAghfYmFsYW5jZQAKdG90YWxXaGlybAkAZAIFEHdoaXJsSW5XaGlybHBvb2wFCndoaXJsSW5CQkIADXdhdmVzSW5XNXBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQx3YXZlczVwb29sSWQJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFBXdhdmVzAghfYmFsYW5jZQAScHJvamVjdFN0YWtlVzVwb29sCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUMd2F2ZXM1cG9vbElkCQCsAgIJAKUIAQUEdGhpcwIMX2luZGV4U3Rha2VkABB0b3RhbFN0YWtlVzVwb29sCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUMd2F2ZXM1cG9vbElkAhdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAANa2V5VmF1bHRBc3NldAkBDHRyeUdldFN0cmluZwIJAQdBZGRyZXNzAQEaAVfa4655+8r5z+MDNCERUZp23XhlXEZbchgJAKwCAgkArAICAg8lcyVzJXNfX3ZhdWx0X18JAKUIAQUEdGhpcwIHX19XQVZFUwALV0FWRVNpbkVBU1QJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFDWtleVZhdWx0QXNzZXQCAl9fAAIADmtleVZhdWx0QXNzZXQyCQEMdHJ5R2V0U3RyaW5nAgkBB0FkZHJlc3MBARoBV9rjrnn7yvnP4wM0IRFRmnbdeGVcRltyGAkArAICCQCsAgICDyVzJXMlc19fdmF1bHRfXwkApQgBBQR0aGlzAi5fXzNWdVY1V1RtRHo0N0RtZG4zUXBjWWp6YlNkaXBqUUU0Sk1kTmUxeFpwWDEzAAlFVEhpbkVBU1QJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFDmtleVZhdWx0QXNzZXQyAgJfXwACABFFVEhpbkVBU1R3YXZlbGV0cwkAawMFCUVUSGluRUFTVAUIZXRoV2F2ZXMFAmQ4AA1wdXp6bGVTdGFraW5nCQEHQWRkcmVzcwEBGgFXlGiM+e6iuaqf1vWOvKmPZxqcBvQWKYm7AAxwdXp6bGVTdGFrZWQJAQ10cnlHZXRJbnRlZ2VyAgUNcHV6emxlU3Rha2luZwkArAICCQClCAEFBHRoaXMCB19zdGFrZWQAEFBVWlpMRWluV2F2ZWxldHMJAGsDBQxwdXp6bGVTdGFrZWQFC3B1enpsZVdhdmVzBQJkOAAJV1hzdGFraW5nCQEHQWRkcmVzcwEBGgFXs+bmVRgRabDkMw+IUUOknK7W1UsDSxFYAAVrZXlXWAIlJXMlZCVzX19wYXJhbUJ5VXNlck51bV9fMTM0NDVfX2Ftb3VudAAIV1hhbW91bnQJAQ10cnlHZXRJbnRlZ2VyAgUJV1hzdGFraW5nBQVrZXlXWAAMV1hpbldhdmVsZXRzCQBrAwUIV1hhbW91bnQFB3d4V2F2ZXMFAmQ4AAp0dmxJbldhdmVzCQBkAgkAZAIJAGQCCQBkAgkAZAIJAGsDCQBoAgULd2F2ZXNJblBvb2wACgUMcHJvamVjdFN0YWtlBQp0b3RhbFN0YWtlCQBrAwkAaAIFEHdhdmVzSW5XaGlybHBvb2wACgURcHJvamVjdFN0YWtlV2hpcmwFD3RvdGFsU3Rha2VXaGlybAURRVRIaW5FQVNUd2F2ZWxldHMFEFBVWlpMRWluV2F2ZWxldHMJAGsDCQBoAgUNd2F2ZXNJblc1cG9vbAAFBRJwcm9qZWN0U3Rha2VXNXBvb2wFEHRvdGFsU3Rha2VXNXBvb2wFDFdYaW5XYXZlbGV0cwAHdG90YWxCVAULV0FWRVNpbkVBU1QADXRvdGFsVHJlYXN1cnkJAGQCBQd0b3RhbEJUBQp0dmxJbldhdmVzAA93aGlybHBvb2xTdXBwbHkEByRtYXRjaDAJAOwHAQUJd2hpcmxwb29sAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAAFcHJpY2UDCQBnAgkAZAIJAGsDCQBkAgUKdHZsSW5XYXZlcwkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQFAmQ4BQ93aGlybHBvb2xTdXBwbHkFAmQ4CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFFmtleVdoaXJscG9vbElzc3VlUHJpY2UJAGQCCQBrAwkAZAIFCnR2bEluV2F2ZXMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQJkOAUPd2hpcmxwb29sU3VwcGx5BQJkOAkBDXRyeUdldEludGVnZXICBQR0aGlzBRZrZXlXaGlybHBvb2xJc3N1ZVByaWNlBgFpARVidXlXSElSTFBPT0x3aXRoV0FWRVMABBZXaGlybHBvb2xCYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMFCXdoaXJscG9vbAMJAAACBRZXaGlybHBvb2xCYWxhbmNlQmVmb3JlBRZXaGlybHBvb2xCYWxhbmNlQmVmb3JlBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHc3VycGx1cwkAawMJAGUCBQVwcmljZQUCZDgIBQNwbXQGYW1vdW50BQJkOAQLSXNzdWVBbW91bnQDCQBnAggFA3BtdAZhbW91bnQJAGsDCAUDcG10BmFtb3VudAUCZDgFBXByaWNlCQBrAwgFA3BtdAZhbW91bnQFAmQ4BQVwcmljZQkAAgECMHBsZWFzZSBjb250YWN0IHByb2plY3Qgb3duZXI6IGlzc3VlIGFtb3VudCBlcnJvcgQNY2xlYW5BbW91bnRJbgkAZQIIBQNwbXQGYW1vdW50CQBrAwgFA3BtdAZhbW91bnQAyAEAkE4ECUFtb3VudE91dAkAbgQFEHdoaXJsSW5XaGlybHBvb2wJAGUCCQBoAgUCZDgFAmQ4CQCgAwEJAHYGCQC9AgQJALYCAQUQd2F2ZXNJbldoaXJscG9vbAkAtgIBCQBoAgUCZDgFAmQ4CQC2AgEJAGQCBRB3YXZlc0luV2hpcmxwb29sBQ1jbGVhbkFtb3VudEluBQZIQUxGVVAAEAkAtgIBCQBrAwCgjQYAkE4AoPc2AAQAEAUHQ0VJTElORwkAaAIFAmQ4BQJkOAUERE9XTgMJAGYCCQBpAgUCZDgAFAgFA3BtdAZhbW91bnQJAAIBAhptaW5pbXVtIHBheW1lbnQgMC4wNSBXQVZFUwMJAQIhPQIIBQNwbXQHYXNzZXRJZAUEdW5pdAkAAgECF2F0dGFjaCBXQVZFUyB0b2tlbiBvbmx5BANidXkDCQBmAgUJQW1vdW50T3V0BQtJc3N1ZUFtb3VudAkA/AcECQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAIEc3dhcAkAzAgCBQ93aGlybHBvb2xTdHJpbmcJAMwIAgkAZAIFC0lzc3VlQW1vdW50AAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAgFA3BtdAZhbW91bnQFA25pbAUEdW5pdAMJAAACBQNidXkFA2J1eQQVV2hpcmxwb29sQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFCXdoaXJscG9vbAQRV2hpcmxwb29sRnJvbVN3YXAJAGUCBRVXaGlybHBvb2xCYWxhbmNlQWZ0ZXIFFldoaXJscG9vbEJhbGFuY2VCZWZvcmUJAMwIAgkBB1JlaXNzdWUDBQl3aGlybHBvb2wDCQBnAgULSXNzdWVBbW91bnQFCUFtb3VudE91dAULSXNzdWVBbW91bnQAAAYJAMwIAgMJAGYCBQlBbW91bnRPdXQFC0lzc3VlQW1vdW50CQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFEVdoaXJscG9vbEZyb21Td2FwBQl3aGlybHBvb2wJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULSXNzdWVBbW91bnQFCXdoaXJscG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUWa2V5V2hpcmxwb29sSXNzdWVQcmljZQUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIDCQBmAgUJQW1vdW50T3V0BQtJc3N1ZUFtb3VudAIVcHJpY2UgV0hJUkxQT09ML1dBVkVTAiBXSElSTFBPT0wvV0FWRVMgbWlkIG1hcmtldCBwcmljZQMJAGYCBQlBbW91bnRPdXQFC0lzc3VlQW1vdW50CQBrAwUCZDgIBQNwbXQGYW1vdW50BRFXaGlybHBvb2xGcm9tU3dhcAkAawMFAmQ4CQBoAgUQd2F2ZXNJbldoaXJscG9vbAAJBRB3aGlybEluV2hpcmxwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlXYXZlbGV0c1JlY2VpdmVkAwkAZwIFC0lzc3VlQW1vdW50BQlBbW91bnRPdXQJAGQCCAUDcG10BmFtb3VudAkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFFWtleVdhdmVsZXRzUmVjZWl2ZWRCVAMJAGcCBQtJc3N1ZUFtb3VudAUJQW1vdW50T3V0CQBkAgkAZQIIBQNwbXQGYW1vdW50BQdzdXJwbHVzCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFFWtleVdhdmVsZXRzUmVjZWl2ZWRCVAkBDXRyeUdldEludGVnZXICBQR0aGlzBRVrZXlXYXZlbGV0c1JlY2VpdmVkQlQJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtleVN1cnBsdXNSZWNlaXZlZAMJAGYCBQlBbW91bnRPdXQFC0lzc3VlQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQJAGQCBQdzdXJwbHVzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVwcmljZUFuZFRyZWFzdXJ5U3RhdHMACQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZCVCBXQVZFUyBpbiBFQVNUIHZhdWx0BQtXQVZFU2luRUFTVAkAzAgCCQEMSW50ZWdlckVudHJ5AgIiU1QgQlVSTi1YVE4geCBQZXBlVGVhbSBpbiB3YXZlbGV0cwkAawMJAGgCBQt3YXZlc0luUG9vbAAKBQxwcm9qZWN0U3Rha2UFCnRvdGFsU3Rha2UJAMwIAgkBDEludGVnZXJFbnRyeQICHFNUIFdISVJMUE9PTCBBTU0gaW4gd2F2ZWxldHMJAGsDCQBoAgUQd2F2ZXNJbldoaXJscG9vbAAKBRFwcm9qZWN0U3Rha2VXaGlybAUPdG90YWxTdGFrZVdoaXJsCQDMCAIJAQxJbnRlZ2VyRW50cnkCAh5TVCBXYXZlcyA1cG9vbCBBTU0gaW4gd2F2ZWxldHMJAGsDCQBoAgUNd2F2ZXNJblc1cG9vbAAFBRJwcm9qZWN0U3Rha2VXNXBvb2wFEHRvdGFsU3Rha2VXNXBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQICB1NUIGVFVEgFCUVUSGluRUFTVAkAzAgCCQEMSW50ZWdlckVudHJ5AgITU1QgZUVUSCBpbiB3YXZlbGV0cwURRVRIaW5FQVNUd2F2ZWxldHMJAMwIAgkBDEludGVnZXJFbnRyeQICCVNUIFBVWlpMRQUMcHV6emxlU3Rha2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhVTVCBQVVpaTEUgaW4gd2F2ZWxldHMFEFBVWlpMRWluV2F2ZWxldHMJAMwIAgkBDEludGVnZXJFbnRyeQICGFNUIFdYIGluIGdXWCBpbiB3YXZlbGV0cwUMV1hpbldhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhRUb3RhbCBTVCBpbiB3YXZlbGV0cwUKdHZsSW5XYXZlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUWa2V5V2hpcmxwb29sSXNzdWVQcmljZQUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQICIFdISVJMUE9PTC9XQVZFUyBtaWQgbWFya2V0IHByaWNlCQBrAwUCZDgJAGgCBRB3YXZlc0luV2hpcmxwb29sAAkFEHdoaXJsSW5XaGlybHBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQICFldISVJMUE9PTCB0b3RhbCBzdXBwbHkFD3doaXJscG9vbFN1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgIOVG90YWwgdHJlYXN1cnkFDXRvdGFsVHJlYXN1cnkJAMwIAgkBDEludGVnZXJFbnRyeQICDU5BViBXSElSTFBPT0wJAGsDBQJkOAkAZAIFDXRvdGFsVHJlYXN1cnkJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQ93aGlybHBvb2xTdXBwbHkJAMwIAgkBDEludGVnZXJFbnRyeQICJGJ1eWJhY2smaW52ZXN0IFdISVJMUE9PTCBBTU0gPDUlIE5BVgkAawMJAGsDBQJkOAkAZAIFDXRvdGFsVHJlYXN1cnkJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQ93aGlybHBvb2xTdXBwbHkAXwBkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtleVN1cnBsdXNSZWNlaXZlZAkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFFWtleVdhdmVsZXRzUmVjZWl2ZWRCVAkBDXRyeUdldEludGVnZXICBQR0aGlzBRVrZXlXYXZlbGV0c1JlY2VpdmVkQlQJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtleVdhdmVsZXRzUGFpZE91dAkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlXYXZlbGV0c1BhaWRPdXQJAMwIAgkBDEludGVnZXJFbnRyeQICFHRvdGFsIFdBVkVTIHJlY2VpdmVkCQBpAgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkBQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgIXVG90YWwgdHJlYXN1cnkgaW4gV0FWRVMJAGkCBQ10b3RhbFRyZWFzdXJ5BQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgIZc3VycGx1cyByZWNlaXZlZCBpbiBXQVZFUwkAaQIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgImdG90YWwgV0FWRVMgcmVjZWl2ZWQgZm9yIGJhc2UgdHJlYXN1cnkJAGkCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFFWtleVdhdmVsZXRzUmVjZWl2ZWRCVAUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQICHXRvdGFsIFdBVkVTIHBhaWQgb3V0IGluIFdBVkVTCQBpAgkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlXYXZlbGV0c1BhaWRPdXQFAmQ4CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZrZXlST0kJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdhdmVsZXRzUGFpZE91dACQTgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkBQNuaWwBaQEMYm9vc3RQb29sQVBZAQZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBAthbW91bnRCb29zdAkAawMJAGgCBQZhbW91bnQFAmQ4AFAAZAMJAAACBQthbW91bnRCb29zdAULYW1vdW50Qm9vc3QEB3RvV2hpcmwJAGsDBQthbW91bnRCb29zdAUQd2hpcmxJbldoaXJscG9vbAUKdG90YWxXaGlybAMJAAACBQd0b1doaXJsBQd0b1doaXJsBAV0b0JCQgkAawMFC2Ftb3VudEJvb3N0BQp3aGlybEluQkJCBQp0b3RhbFdoaXJsAwkAAAIFBXRvQkJCBQV0b0JCQgQLYW1vdW50T3duZXIJAGsDCQBoAgUGYW1vdW50BQJkOAAUAGQDCQAAAgULYW1vdW50T3duZXIFC2Ftb3VudE93bmVyBAZib29zdFcJAPwHBAkBB0FkZHJlc3MBBQtwb29sYm9vc3RTQwILYWRkQm9vc3RpbmcJAMwIAgkA2AQBBQ93aGlybHBvb2xQb29sSWQJAMwIAgAHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFB3RvV2hpcmwFA25pbAMJAAACBQZib29zdFcFBmJvb3N0VwQIYm9vc3RCQkIJAPwHBAkBB0FkZHJlc3MBBQtwb29sYm9vc3RTQwILYWRkQm9vc3RpbmcJAMwIAgkA2AQBBQliYmJQb29sSWQJAMwIAgAHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFBXRvQkJCBQNuaWwDCQAAAgUIYm9vc3RCQkIFCGJvb3N0QkJCBAVjbGFpbQkA/AcECQEHQWRkcmVzcwEBGgFXL67xcGkDY58tIGVFIdRxHf4xnfL4rKNiAhNjbGFpbUxveWFsdHlSZXdhcmRzBQNuaWwFA25pbAMJAAACBQVjbGFpbQUFY2xhaW0JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQxwcm9qZWN0T3duZXIFC2Ftb3VudE93bmVyBQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlXYXZlbGV0c1BhaWRPdXQJAGQCBQthbW91bnRCb29zdAkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlXYXZlbGV0c1BhaWRPdXQJAMwIAgkBDEludGVnZXJFbnRyeQIFBmtleVJPSQkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0AJBOCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtleUFjdGl2YXRlZAUGaGVpZ2h0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPdHJhbnNmZXJQb29sQVBZAQZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBAthbW91bnRCb29zdAkAawMJAGgCBQZhbW91bnQFAmQ4AFAAZAMJAAACBQthbW91bnRCb29zdAULYW1vdW50Qm9vc3QEB3RvV2hpcmwJAGsDBQthbW91bnRCb29zdAUQd2hpcmxJbldoaXJscG9vbAUKdG90YWxXaGlybAMJAAACBQd0b1doaXJsBQd0b1doaXJsBAV0b0JCQgkAawMFC2Ftb3VudEJvb3N0BQp3aGlybEluQkJCBQp0b3RhbFdoaXJsAwkAAAIFBXRvQkJCBQV0b0JCQgQLYW1vdW50T3duZXIJAGsDCQBoAgUGYW1vdW50BQJkOAAUAGQDCQAAAgULYW1vdW50T3duZXIFC2Ftb3VudE93bmVyBAVjbGFpbQkA/AcECQEHQWRkcmVzcwEBGgFXL67xcGkDY58tIGVFIdRxHf4xnfL4rKNiAhNjbGFpbUxveWFsdHlSZXdhcmRzBQNuaWwFA25pbAMJAAACBQVjbGFpbQUFY2xhaW0JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQFB3RvV2hpcmwFBHVuaXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQliYmJQb29sSWQFBXRvQkJCBQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUMcHJvamVjdE93bmVyBQthbW91bnRPd25lcgUEdW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5V2F2ZWxldHNQYWlkT3V0CQBkAgULYW1vdW50Qm9vc3QJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZrZXlST0kJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdhdmVsZXRzUGFpZE91dACQTgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrZXlBY3RpdmF0ZWQFBmhlaWdodAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3N1cnBsdXNJbnZlc3RlZAELYW1vdW50V0FWRVMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBA5pbnZlc3RlZEFtb3VudAkAaAIFC2Ftb3VudFdBVkVTBQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5U3VycGx1c1JlY2VpdmVkCQBlAgkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQFDmludmVzdGVkQW1vdW50BQNuaWwBaQEId2l0aGRyYXcAAwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFXGIkbJG0v4kSlsrku0GQjUC4p33Iw2jJZCQACAQIJbm8gYWNjZXNzBAh3aXRoZHJhdwkA/AcECQEHQWRkcmVzcwEBGgFXdRLdk4IPW94ldhU5y0nVH1MoCcTocV4nAhV3aXRoZHJhd1Zlc3RlZEFsbFVTRE4JAMwIAgcJAMwIAgYFA25pbAUDbmlsAwkAAAIFCHdpdGhkcmF3BQh3aXRoZHJhdwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAMJAMUTAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkGAwkAZgIJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQxrZXlBY3RpdmF0ZWQFC3VubG9ja0Jsb2NrBQZoZWlnaHQHAwkAxRMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUKaGVpclB1YktleQYDCQBmAgkAZAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDGtleUFjdGl2YXRlZAUMdW5sb2NrQmxvY2syBQZoZWlnaHQHCQDFEwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABRJQdXp6bGVNYXN0ZXJQdWJLZXnYHnaS", "height": 4080260, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GG95N1r4Hwjh3idZRKDnaun9tHqZieebCaSLxL2KKLVP Next: DxdCdKm4iv9JVee7SAMQEiaBX3KYfSSKgrWST7gD8LmE Diff:
OldNewDifferences
153153
154154 let WAVESinEAST = parseIntValue(split(keyVaultAsset, "__")[2])
155155
156-let dAppaddress = Address(base58'3PHxubMUtynEY2AeHq3K1kUizRPN9HUC2rt')
156+let keyVaultAsset2 = tryGetString(Address(base58'3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb'), (("%s%s%s__vault__" + toString(this)) + "__3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13"))
157157
158-let ETHatoken = tryGetInteger(dAppaddress, (toString(this) + "_aTokenBalance"))
158+let ETHinEAST = parseIntValue(split(keyVaultAsset2, "__")[2])
159159
160-let ETHatokenTotal = tryGetInteger(dAppaddress, "aTokenCirculation")
161-
162-let ETHtotalReserve = parseIntValue(split(tryGetString(dAppaddress, "reserveGlobalData"), "|")[1])
163-
164-let ETHinVires = fraction(ETHatoken, ETHtotalReserve, ETHatokenTotal)
165-
166-let ETHinViresWavelets = fraction(ETHinVires, ethWaves, d8)
160+let ETHinEASTwavelets = fraction(ETHinEAST, ethWaves, d8)
167161
168162 let puzzleStaking = Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS')
169163
179173
180174 let WXinWavelets = fraction(WXamount, wxWaves, d8)
181175
182-let tvlInWaves = (((((fraction((wavesInPool * 10), projectStake, totalStake) + fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)) + ETHinViresWavelets) + PUZZLEinWavelets) + fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)) + WXinWavelets)
176+let tvlInWaves = (((((fraction((wavesInPool * 10), projectStake, totalStake) + fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)) + ETHinEASTwavelets) + PUZZLEinWavelets) + fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)) + WXinWavelets)
183177
184178 let totalBT = WAVESinEAST
185179
245239
246240
247241 @Callable(i)
248-func priceAndTreasuryStats () = [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 Waves 5pool AMM in wavelets", fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)), IntegerEntry("ST vETH", ETHinVires), IntegerEntry("ST vETH in wavelets", ETHinViresWavelets), IntegerEntry("ST PUZZLE", puzzleStaked), IntegerEntry("ST PUZZLE in wavelets", PUZZLEinWavelets), IntegerEntry("ST WX in gWX in wavelets", WXinWavelets), 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 + tryGetInteger(this, keySurplusReceived)), whirlpoolSupply)), IntegerEntry("buyback&invest WHIRLPOOL AMM <5% NAV", fraction(fraction(d8, (totalTreasury + tryGetInteger(this, keySurplusReceived)), whirlpoolSupply), 95, 100)), IntegerEntry(keyWaveletsReceived, tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keySurplusReceived, tryGetInteger(this, keySurplusReceived)), IntegerEntry(keyWaveletsReceivedBT, tryGetInteger(this, keyWaveletsReceivedBT)), 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, keyWaveletsReceivedBT) / d8)), IntegerEntry("total WAVES paid out in WAVES", (tryGetInteger(this, keyWaveletsPaidOut) / d8)), IntegerEntry(keyROI, fraction(tryGetInteger(this, keyWaveletsPaidOut), 10000, tryGetInteger(this, keyWaveletsReceived)))]
242+func priceAndTreasuryStats () = [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 Waves 5pool AMM in wavelets", fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)), IntegerEntry("ST eETH", ETHinEAST), IntegerEntry("ST eETH in wavelets", ETHinEASTwavelets), IntegerEntry("ST PUZZLE", puzzleStaked), IntegerEntry("ST PUZZLE in wavelets", PUZZLEinWavelets), IntegerEntry("ST WX in gWX in wavelets", WXinWavelets), 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 + tryGetInteger(this, keySurplusReceived)), whirlpoolSupply)), IntegerEntry("buyback&invest WHIRLPOOL AMM <5% NAV", fraction(fraction(d8, (totalTreasury + tryGetInteger(this, keySurplusReceived)), whirlpoolSupply), 95, 100)), IntegerEntry(keyWaveletsReceived, tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keySurplusReceived, tryGetInteger(this, keySurplusReceived)), IntegerEntry(keyWaveletsReceivedBT, tryGetInteger(this, keyWaveletsReceivedBT)), 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, keyWaveletsReceivedBT) / d8)), IntegerEntry("total WAVES paid out in WAVES", (tryGetInteger(this, keyWaveletsPaidOut) / d8)), IntegerEntry(keyROI, fraction(tryGetInteger(this, keyWaveletsPaidOut), 10000, tryGetInteger(this, keyWaveletsReceived)))]
249243
250244
251245
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 unlockBlock = (30 * 1440)
2323
2424 let heirPubKey = base58'2kpmuzw1ZbrtgAN3BrR7vbEW1XrJoJKCstL7mf7XNf2P'
2525
2626 let unlockBlock2 = (90 * 1440)
2727
2828 let PuzzleMasterPubKey = base58'4z8CKSYQBKkzx7PBb5uBP1YPa6YAHRNTApW1sQVHT5eU'
2929
3030 let keyActivated = "Activated blockheight"
3131
3232 let keySurplusReceived = "surplus received in wavelets"
3333
3434 let keyWaveletsReceived = "total WAVES received in wavelets"
3535
3636 let keyWaveletsReceivedBT = "total wavelets received for base treasury"
3737
3838 let keyWaveletsPaidOut = "total WAVES paid out in wavelets"
3939
4040 let keyROI = "ROI basis points"
4141
4242 let keyWhirlpoolIssuePrice = "WHIRLPOOL issue price in wavelets"
4343
4444 let burnxtnPPTpoolId = base58'3PQHndCUVrv3wBuQjbvVP9SnGmfbfitGxfx'
4545
4646 let projectOwner = base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'
4747
4848 let whirlpoolPoolId = base58'3P2myTbd5zpEHcYmNpdWTp5gXS5B8tL1RCY'
4949
5050 let bbbPoolId = base58'3P9VPwVfNj3dDevQZt1Z951A4K57cmQmCgk'
5151
5252 let waves5poolId = base58'3PCpjLGo4wDuv23kjmGF6mHs86Bf3soYvAq'
5353
5454 let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi'
5555
5656 let whirlpoolString = toBase58String(base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi')
5757
5858 let waves = base58'WAVES'
5959
6060 let eth = base58'3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13'
6161
6262 let swaves = base58'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7'
6363
6464 let puzzle = base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS'
6565
6666 let wx = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on'
6767
6868 let poolboostSC = base58'3P8eeDzUnoDNbQjW617pAe76cEUDQsP1m1V'
6969
7070 let SWAVES_stake = Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV')
7171
7272 let WX_ETH_WAVES = Address(base58'3P2yiVnK48evTLr8MAZWavpE4WA4fw1weQg')
7373
7474 let WX_PUZZLE_WAVES = Address(base58'3PQaYm4pbRVrNTTnL8pDJZTxhcmD4jRskrz')
7575
7676 let WX_WX_WAVES = Address(base58'3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh')
7777
7878 let wavesInPool = tryGetInteger(Address(burnxtnPPTpoolId), (("global_" + toBase58String(waves)) + "_balance"))
7979
8080 let projectStake = tryGetInteger(Address(burnxtnPPTpoolId), (toString(this) + "_indexStaked"))
8181
8282 let totalStake = tryGetInteger(Address(burnxtnPPTpoolId), "global_poolToken_amount")
8383
8484 func _loadInt (key_,default_) = match getInteger(SWAVES_stake, key_) {
8585 case a: Int =>
8686 a
8787 case _ =>
8888 default_
8989 }
9090
9191
9292 func _loadBigInt (key_,default_) = match getBinary(SWAVES_stake, key_) {
9393 case a: ByteVector =>
9494 toBigInt(a)
9595 case _ =>
9696 default_
9797 }
9898
9999
100100 let lastRate = _loadBigInt("LAST_RATE", toBigInt(1000000000000))
101101
102102 let currentRate = _loadBigInt("CURRENT_RATE", toBigInt(0))
103103
104104 let lastHeight = _loadInt("LAST_HEIGHT", 0)
105105
106106 let targetHeight = min([_loadInt("TARGET_HEIGHT", 0), height])
107107
108108 let lastRateUpdated = (lastRate + (currentRate * toBigInt((targetHeight - lastHeight))))
109109
110110 let baseAmount2 = toInt(fraction(toBigInt(assetBalance(WX_ETH_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR))
111111
112112 let baseAmount3 = toInt(fraction(toBigInt(assetBalance(WX_PUZZLE_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR))
113113
114114 let baseAmount4 = toInt(fraction(toBigInt(assetBalance(WX_WX_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR))
115115
116116 let waves2InWX = (wavesBalance(WX_ETH_WAVES).regular + baseAmount2)
117117
118118 let ethInWX = assetBalance(WX_ETH_WAVES, eth)
119119
120120 let ethWaves = fraction(d8, waves2InWX, ethInWX)
121121
122122 let puzzleInWX = assetBalance(WX_PUZZLE_WAVES, puzzle)
123123
124124 let waves3InWX = (wavesBalance(WX_PUZZLE_WAVES).regular + baseAmount3)
125125
126126 let puzzleWaves = fraction(d8, waves3InWX, puzzleInWX)
127127
128128 let wxInWX = assetBalance(WX_WX_WAVES, wx)
129129
130130 let waves4InWX = (wavesBalance(WX_WX_WAVES).regular + baseAmount4)
131131
132132 let wxWaves = fraction(d8, waves4InWX, wxInWX)
133133
134134 let wavesInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + toBase58String(waves)) + "_balance"))
135135
136136 let whirlInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + whirlpoolString) + "_balance"))
137137
138138 let projectStakeWhirl = tryGetInteger(Address(whirlpoolPoolId), (toString(this) + "_indexStaked"))
139139
140140 let totalStakeWhirl = tryGetInteger(Address(whirlpoolPoolId), "global_poolToken_amount")
141141
142142 let whirlInBBB = tryGetInteger(Address(bbbPoolId), (("global_" + whirlpoolString) + "_balance"))
143143
144144 let totalWhirl = (whirlInWhirlpool + whirlInBBB)
145145
146146 let wavesInW5pool = tryGetInteger(Address(waves5poolId), (("global_" + toBase58String(waves)) + "_balance"))
147147
148148 let projectStakeW5pool = tryGetInteger(Address(waves5poolId), (toString(this) + "_indexStaked"))
149149
150150 let totalStakeW5pool = tryGetInteger(Address(waves5poolId), "global_poolToken_amount")
151151
152152 let keyVaultAsset = tryGetString(Address(base58'3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb'), (("%s%s%s__vault__" + toString(this)) + "__WAVES"))
153153
154154 let WAVESinEAST = parseIntValue(split(keyVaultAsset, "__")[2])
155155
156-let dAppaddress = Address(base58'3PHxubMUtynEY2AeHq3K1kUizRPN9HUC2rt')
156+let keyVaultAsset2 = tryGetString(Address(base58'3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb'), (("%s%s%s__vault__" + toString(this)) + "__3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13"))
157157
158-let ETHatoken = tryGetInteger(dAppaddress, (toString(this) + "_aTokenBalance"))
158+let ETHinEAST = parseIntValue(split(keyVaultAsset2, "__")[2])
159159
160-let ETHatokenTotal = tryGetInteger(dAppaddress, "aTokenCirculation")
161-
162-let ETHtotalReserve = parseIntValue(split(tryGetString(dAppaddress, "reserveGlobalData"), "|")[1])
163-
164-let ETHinVires = fraction(ETHatoken, ETHtotalReserve, ETHatokenTotal)
165-
166-let ETHinViresWavelets = fraction(ETHinVires, ethWaves, d8)
160+let ETHinEASTwavelets = fraction(ETHinEAST, ethWaves, d8)
167161
168162 let puzzleStaking = Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS')
169163
170164 let puzzleStaked = tryGetInteger(puzzleStaking, (toString(this) + "_staked"))
171165
172166 let PUZZLEinWavelets = fraction(puzzleStaked, puzzleWaves, d8)
173167
174168 let WXstaking = Address(base58'3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP')
175169
176170 let keyWX = "%s%d%s__paramByUserNum__13445__amount"
177171
178172 let WXamount = tryGetInteger(WXstaking, keyWX)
179173
180174 let WXinWavelets = fraction(WXamount, wxWaves, d8)
181175
182-let tvlInWaves = (((((fraction((wavesInPool * 10), projectStake, totalStake) + fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)) + ETHinViresWavelets) + PUZZLEinWavelets) + fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)) + WXinWavelets)
176+let tvlInWaves = (((((fraction((wavesInPool * 10), projectStake, totalStake) + fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)) + ETHinEASTwavelets) + PUZZLEinWavelets) + fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)) + WXinWavelets)
183177
184178 let totalBT = WAVESinEAST
185179
186180 let totalTreasury = (totalBT + tvlInWaves)
187181
188182 let whirlpoolSupply = match assetInfo(whirlpool) {
189183 case asset: Asset =>
190184 asset.quantity
191185 case _ =>
192186 throw("Can't find asset")
193187 }
194188
195189 let price = if (((fraction((tvlInWaves + tryGetInteger(this, keySurplusReceived)), d8, whirlpoolSupply) + d8) >= tryGetInteger(this, keyWhirlpoolIssuePrice)))
196190 then (fraction((tvlInWaves + tryGetInteger(this, keySurplusReceived)), d8, whirlpoolSupply) + d8)
197191 else tryGetInteger(this, keyWhirlpoolIssuePrice)
198192
199193 @Callable(i)
200194 func buyWHIRLPOOLwithWAVES () = {
201195 let WhirlpoolBalanceBefore = assetBalance(this, whirlpool)
202196 if ((WhirlpoolBalanceBefore == WhirlpoolBalanceBefore))
203197 then {
204198 let pmt = value(i.payments[0])
205199 let surplus = fraction((price - d8), pmt.amount, d8)
206200 let IssueAmount = if ((pmt.amount >= fraction(pmt.amount, d8, price)))
207201 then fraction(pmt.amount, d8, price)
208202 else throw("please contact project owner: issue amount error")
209203 let cleanAmountIn = (pmt.amount - fraction(pmt.amount, 200, 10000))
210204 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)
211205 if (((d8 / 20) > pmt.amount))
212206 then throw("minimum payment 0.05 WAVES")
213207 else if ((pmt.assetId != unit))
214208 then throw("attach WAVES token only")
215209 else {
216210 let buy = if ((AmountOut > IssueAmount))
217211 then invoke(Address(whirlpoolPoolId), "swap", [whirlpoolString, (IssueAmount + 1)], [AttachedPayment(unit, pmt.amount)])
218212 else unit
219213 if ((buy == buy))
220214 then {
221215 let WhirlpoolBalanceAfter = assetBalance(this, whirlpool)
222216 let WhirlpoolFromSwap = (WhirlpoolBalanceAfter - WhirlpoolBalanceBefore)
223217 [Reissue(whirlpool, if ((IssueAmount >= AmountOut))
224218 then IssueAmount
225219 else 0, true), if ((AmountOut > IssueAmount))
226220 then ScriptTransfer(i.caller, WhirlpoolFromSwap, whirlpool)
227221 else ScriptTransfer(i.caller, IssueAmount, whirlpool), IntegerEntry(keyWhirlpoolIssuePrice, price), IntegerEntry(if ((AmountOut > IssueAmount))
228222 then "price WHIRLPOOL/WAVES"
229223 else "WHIRLPOOL/WAVES mid market price", if ((AmountOut > IssueAmount))
230224 then fraction(d8, pmt.amount, WhirlpoolFromSwap)
231225 else fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry(keyWaveletsReceived, if ((IssueAmount >= AmountOut))
232226 then (pmt.amount + tryGetInteger(this, keyWaveletsReceived))
233227 else tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keyWaveletsReceivedBT, if ((IssueAmount >= AmountOut))
234228 then ((pmt.amount - surplus) + tryGetInteger(this, keyWaveletsReceivedBT))
235229 else tryGetInteger(this, keyWaveletsReceivedBT)), IntegerEntry(keySurplusReceived, if ((AmountOut > IssueAmount))
236230 then getIntegerValue(this, keySurplusReceived)
237231 else (surplus + getIntegerValue(this, keySurplusReceived)))]
238232 }
239233 else throw("Strict value is not equal to itself.")
240234 }
241235 }
242236 else throw("Strict value is not equal to itself.")
243237 }
244238
245239
246240
247241 @Callable(i)
248-func priceAndTreasuryStats () = [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 Waves 5pool AMM in wavelets", fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)), IntegerEntry("ST vETH", ETHinVires), IntegerEntry("ST vETH in wavelets", ETHinViresWavelets), IntegerEntry("ST PUZZLE", puzzleStaked), IntegerEntry("ST PUZZLE in wavelets", PUZZLEinWavelets), IntegerEntry("ST WX in gWX in wavelets", WXinWavelets), 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 + tryGetInteger(this, keySurplusReceived)), whirlpoolSupply)), IntegerEntry("buyback&invest WHIRLPOOL AMM <5% NAV", fraction(fraction(d8, (totalTreasury + tryGetInteger(this, keySurplusReceived)), whirlpoolSupply), 95, 100)), IntegerEntry(keyWaveletsReceived, tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keySurplusReceived, tryGetInteger(this, keySurplusReceived)), IntegerEntry(keyWaveletsReceivedBT, tryGetInteger(this, keyWaveletsReceivedBT)), 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, keyWaveletsReceivedBT) / d8)), IntegerEntry("total WAVES paid out in WAVES", (tryGetInteger(this, keyWaveletsPaidOut) / d8)), IntegerEntry(keyROI, fraction(tryGetInteger(this, keyWaveletsPaidOut), 10000, tryGetInteger(this, keyWaveletsReceived)))]
242+func priceAndTreasuryStats () = [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 Waves 5pool AMM in wavelets", fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)), IntegerEntry("ST eETH", ETHinEAST), IntegerEntry("ST eETH in wavelets", ETHinEASTwavelets), IntegerEntry("ST PUZZLE", puzzleStaked), IntegerEntry("ST PUZZLE in wavelets", PUZZLEinWavelets), IntegerEntry("ST WX in gWX in wavelets", WXinWavelets), 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 + tryGetInteger(this, keySurplusReceived)), whirlpoolSupply)), IntegerEntry("buyback&invest WHIRLPOOL AMM <5% NAV", fraction(fraction(d8, (totalTreasury + tryGetInteger(this, keySurplusReceived)), whirlpoolSupply), 95, 100)), IntegerEntry(keyWaveletsReceived, tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keySurplusReceived, tryGetInteger(this, keySurplusReceived)), IntegerEntry(keyWaveletsReceivedBT, tryGetInteger(this, keyWaveletsReceivedBT)), 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, keyWaveletsReceivedBT) / d8)), IntegerEntry("total WAVES paid out in WAVES", (tryGetInteger(this, keyWaveletsPaidOut) / d8)), IntegerEntry(keyROI, fraction(tryGetInteger(this, keyWaveletsPaidOut), 10000, tryGetInteger(this, keyWaveletsReceived)))]
249243
250244
251245
252246 @Callable(i)
253247 func boostPoolAPY (amount) = if ((i.caller != this))
254248 then throw("access only by project owner")
255249 else {
256250 let amountBoost = fraction((amount * d8), 80, 100)
257251 if ((amountBoost == amountBoost))
258252 then {
259253 let toWhirl = fraction(amountBoost, whirlInWhirlpool, totalWhirl)
260254 if ((toWhirl == toWhirl))
261255 then {
262256 let toBBB = fraction(amountBoost, whirlInBBB, totalWhirl)
263257 if ((toBBB == toBBB))
264258 then {
265259 let amountOwner = fraction((amount * d8), 20, 100)
266260 if ((amountOwner == amountOwner))
267261 then {
268262 let boostW = invoke(Address(poolboostSC), "addBoosting", [toBase58String(whirlpoolPoolId), 7], [AttachedPayment(unit, toWhirl)])
269263 if ((boostW == boostW))
270264 then {
271265 let boostBBB = invoke(Address(poolboostSC), "addBoosting", [toBase58String(bbbPoolId), 7], [AttachedPayment(unit, toBBB)])
272266 if ((boostBBB == boostBBB))
273267 then {
274268 let claim = invoke(Address(base58'3P6H24XKLyRX8RKwyA5ARsChE6WhjDcVBiZ'), "claimLoyaltyRewards", nil, nil)
275269 if ((claim == claim))
276270 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)]
277271 else throw("Strict value is not equal to itself.")
278272 }
279273 else throw("Strict value is not equal to itself.")
280274 }
281275 else throw("Strict value is not equal to itself.")
282276 }
283277 else throw("Strict value is not equal to itself.")
284278 }
285279 else throw("Strict value is not equal to itself.")
286280 }
287281 else throw("Strict value is not equal to itself.")
288282 }
289283 else throw("Strict value is not equal to itself.")
290284 }
291285
292286
293287
294288 @Callable(i)
295289 func transferPoolAPY (amount) = if ((i.caller != this))
296290 then throw("access only by project owner")
297291 else {
298292 let amountBoost = fraction((amount * d8), 80, 100)
299293 if ((amountBoost == amountBoost))
300294 then {
301295 let toWhirl = fraction(amountBoost, whirlInWhirlpool, totalWhirl)
302296 if ((toWhirl == toWhirl))
303297 then {
304298 let toBBB = fraction(amountBoost, whirlInBBB, totalWhirl)
305299 if ((toBBB == toBBB))
306300 then {
307301 let amountOwner = fraction((amount * d8), 20, 100)
308302 if ((amountOwner == amountOwner))
309303 then {
310304 let claim = invoke(Address(base58'3P6H24XKLyRX8RKwyA5ARsChE6WhjDcVBiZ'), "claimLoyaltyRewards", nil, nil)
311305 if ((claim == claim))
312306 then [ScriptTransfer(Address(whirlpoolPoolId), toWhirl, unit), ScriptTransfer(Address(bbbPoolId), toBBB, 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)]
313307 else throw("Strict value is not equal to itself.")
314308 }
315309 else throw("Strict value is not equal to itself.")
316310 }
317311 else throw("Strict value is not equal to itself.")
318312 }
319313 else throw("Strict value is not equal to itself.")
320314 }
321315 else throw("Strict value is not equal to itself.")
322316 }
323317
324318
325319
326320 @Callable(i)
327321 func surplusInvested (amountWAVES) = if ((i.caller != this))
328322 then throw("access only by project owner")
329323 else {
330324 let investedAmount = (amountWAVES * d8)
331325 [IntegerEntry(keySurplusReceived, (tryGetInteger(this, keySurplusReceived) - investedAmount))]
332326 }
333327
334328
335329
336330 @Callable(i)
337331 func withdraw () = if ((i.caller != Address(base58'3P4AdC9J6MzTEi2LL9xgQN8EimMnbk4d6Nt')))
338332 then throw("no access")
339333 else {
340334 let withdraw = invoke(Address(base58'3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk'), "withdrawVestedAllUSDN", [false, true], nil)
341335 if ((withdraw == withdraw))
342336 then nil
343337 else throw("Strict value is not equal to itself.")
344338 }
345339
346340
347341 @Verifier(tx)
348342 func verify () = if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
349343 then true
350344 else if (((getIntegerValue(this, keyActivated) + unlockBlock) > height))
351345 then false
352346 else if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], heirPubKey))
353347 then true
354348 else if (((getIntegerValue(this, keyActivated) + unlockBlock2) > height))
355349 then false
356350 else sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], PuzzleMasterPubKey)
357351

github/deemru/w8io/3ef1775 
90.25 ms