tx · GdRDG4FERNwYEZXQdtJEFqsvew4UEMy2rQGNrWmJXbSW

3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e:  -0.01500000 Waves

2024.04.11 09:45 [4123736] smart account 3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e > SELF 0.00000000 Waves

{ "type": 13, "id": "GdRDG4FERNwYEZXQdtJEFqsvew4UEMy2rQGNrWmJXbSW", "fee": 1500000, "feeAssetId": null, "timestamp": 1712817951984, "version": 2, "chainId": 87, "sender": "3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e", "senderPublicKey": "qv5sHFvV7GyNRm1A2r8BR9oX2nhkc1yNa1QfWLkaja8", "proofs": [ "2J8TjAR9CvFBDhJ4tTfpbHuuXB75wum7jL1HHQWSemtgjStm2bhvMaFJdjtzgAFvA2wM76B4CgYnD9rbMkZVc2bx" ], "script": "base64:BgIXCAISABIAEgMKAQESAwoBARIDCgEBEgBZAQ10cnlHZXRJbnRlZ2VyAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABDHRyeUdldFN0cmluZwIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJ0IAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgIAAAJkOACAwtcvAAt1bmxvY2tCbG9jawkAaAIAHgCgCwAKaGVpclB1YktleQEgGhWuLQ8iL9bocw38EUfyB7YO6jTez96WKtjdSBQafhAADHVubG9ja0Jsb2NrMgkAaAIAWgCgCwASUHV6emxlTWFzdGVyUHViS2V5ASA7NU1uP5+++FSclkQHgFarL+ITYEXEe/I/F0P0QgUmXQAMa2V5QWN0aXZhdGVkAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQAEmtleVN1cnBsdXNSZWNlaXZlZAIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwATa2V5V2F2ZWxldHNSZWNlaXZlZAIgdG90YWwgV0FWRVMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMAFWtleVdhdmVsZXRzUmVjZWl2ZWRCVAIpdG90YWwgd2F2ZWxldHMgcmVjZWl2ZWQgZm9yIGJhc2UgdHJlYXN1cnkAEmtleVdhdmVsZXRzUGFpZE91dAIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMABmtleVJPSQIQUk9JIGJhc2lzIHBvaW50cwAWa2V5V2hpcmxwb29sSXNzdWVQcmljZQIhV0hJUkxQT09MIGlzc3VlIHByaWNlIGluIHdhdmVsZXRzABBidXJueHRuUFBUcG9vbElkARoBV/VGaCeADWjfTiZ1erSh0ygx4Am/9Xl5NwAMcHJvamVjdE93bmVyARoBV44d5lHKOCPOw5HDxFaL1YPTb4hW/zbdCwAPd2hpcmxwb29sUG9vbElkARoBVwlIVKiYtf/MSkbbEv1LyZMZRjdDmIfXzQAJYmJiUG9vbElkARoBV1Luk1YUTX4HjNKFD+Z+XFc3fhyf7zyCHQAMd2F2ZXM1cG9vbElkARoBV3d/C10uHsD5Iu4ETQIKuwPrdpc7IIHrJgAJd2hpcmxwb29sASBZ443cwrUjukoU3MTQrxQJ5mTmBL4lBgsmTuVQbZdZxwAPd2hpcmxwb29sU3RyaW5nCQDYBAEBIFnjjdzCtSO6ShTcxNCvFAnmZOYEviUGCyZO5VBtl1nHAAV3YXZlcwEEE6vZMwADZXRoASAlHvr/2CHJcJ77wLTePrerhp4FO2bv3Af8UeP1qDMocgAGc3dhdmVzASAIH8j3FjDtUcIpG+ysGo/8kHEcWTgt6yGBsDdB8EXRSgAGcHV6emxlASDxGv4l/vaZOPRpKsTf4RLWR7LGyg66Nwmvd20fjqLlYwACd3gBIJMBHKupx24lV85mnnG2vapr+DzoWAsq7tmgTrs83BSxAAVwbHV0bwEgkLUCnPWP/clF2lOVDD+6tK9TJl1IbjM1wqFMZx8tGPQAC3Bvb2xib29zdFNDARoBV0m2HhDfoA1P2NXQD6PjhLfZXjopsxGprAAMU1dBVkVTX3N0YWtlCQEHQWRkcmVzcwEBGgFXfcl7kxR5/+dR8bFKx2/5ah2AlUfPWCN+AAxXWF9FVEhfV0FWRVMJAQdBZGRyZXNzAQEaAVcLgNUSD01KXiUxquVDz7RZ2COjQ9sP68EAD1dYX1BVWlpMRV9XQVZFUwkBB0FkZHJlc3MBARoBV/hx56MJ+mXeooG+r3XkHz2sy5TKda0ErwALV1hfV1hfV0FWRVMJAQdBZGRyZXNzAQEaAVeaRAWYmby0qJDmt1Vvtxgoy4iG0wV9H1YADldYX1BMVVRPX1dBVkVTCQEHQWRkcmVzcwEBGgFXMteee3KvATuEFzD/oiqRDSscqNQWq22DAAt3YXZlc0luUG9vbAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFEGJ1cm54dG5QUFRwb29sSWQJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFBXdhdmVzAghfYmFsYW5jZQAMcHJvamVjdFN0YWtlCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUQYnVybnh0blBQVHBvb2xJZAkArAICCQClCAEFBHRoaXMCDF9pbmRleFN0YWtlZAAKdG90YWxTdGFrZQkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFEGJ1cm54dG5QUFRwb29sSWQCF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50AQhfbG9hZEludAIEa2V5XwhkZWZhdWx0XwQHJG1hdGNoMAkAmggCBQxTV0FWRVNfc3Rha2UFBGtleV8DCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhBQhkZWZhdWx0XwELX2xvYWRCaWdJbnQCBGtleV8IZGVmYXVsdF8EByRtYXRjaDAJAJwIAgUMU1dBVkVTX3N0YWtlBQRrZXlfAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWEFByRtYXRjaDAJAJ4DAQUBYQUIZGVmYXVsdF8ACGxhc3RSYXRlCQELX2xvYWRCaWdJbnQCAglMQVNUX1JBVEUJALYCAQCAoJSljR0AC2N1cnJlbnRSYXRlCQELX2xvYWRCaWdJbnQCAgxDVVJSRU5UX1JBVEUJALYCAQAAAApsYXN0SGVpZ2h0CQEIX2xvYWRJbnQCAgtMQVNUX0hFSUdIVAAAAAx0YXJnZXRIZWlnaHQJAJcDAQkAzAgCCQEIX2xvYWRJbnQCAg1UQVJHRVRfSEVJR0hUAAAJAMwIAgUGaGVpZ2h0BQNuaWwAD2xhc3RSYXRlVXBkYXRlZAkAtwICBQhsYXN0UmF0ZQkAuQICBQtjdXJyZW50UmF0ZQkAtgIBCQBlAgUMdGFyZ2V0SGVpZ2h0BQpsYXN0SGVpZ2h0AAtiYXNlQW1vdW50MgkAoAMBCQC9AgQJALYCAQkA8AcCBQxXWF9FVEhfV0FWRVMFBnN3YXZlcwUPbGFzdFJhdGVVcGRhdGVkCQC2AgEAgKCUpY0dBQVGTE9PUgALYmFzZUFtb3VudDMJAKADAQkAvQIECQC2AgEJAPAHAgUPV1hfUFVaWkxFX1dBVkVTBQZzd2F2ZXMFD2xhc3RSYXRlVXBkYXRlZAkAtgIBAICglKWNHQUFRkxPT1IAC2Jhc2VBbW91bnQ0CQCgAwEJAL0CBAkAtgIBCQDwBwIFC1dYX1dYX1dBVkVTBQZzd2F2ZXMFD2xhc3RSYXRlVXBkYXRlZAkAtgIBAICglKWNHQUFRkxPT1IAC2Jhc2VBbW91bnQ1CQCgAwEJAL0CBAkAtgIBCQDwBwIFDldYX1BMVVRPX1dBVkVTBQZzd2F2ZXMFD2xhc3RSYXRlVXBkYXRlZAkAtgIBAICglKWNHQUFRkxPT1IACndhdmVzMkluV1gJAGQCCAkA7wcBBQxXWF9FVEhfV0FWRVMHcmVndWxhcgULYmFzZUFtb3VudDIAB2V0aEluV1gJAPAHAgUMV1hfRVRIX1dBVkVTBQNldGgACGV0aFdhdmVzCQBrAwUCZDgFCndhdmVzMkluV1gFB2V0aEluV1gACnB1enpsZUluV1gJAPAHAgUPV1hfUFVaWkxFX1dBVkVTBQZwdXp6bGUACndhdmVzM0luV1gJAGQCCAkA7wcBBQ9XWF9QVVpaTEVfV0FWRVMHcmVndWxhcgULYmFzZUFtb3VudDMAC3B1enpsZVdhdmVzCQBrAwUCZDgFCndhdmVzM0luV1gFCnB1enpsZUluV1gABnd4SW5XWAkA8AcCBQtXWF9XWF9XQVZFUwUCd3gACndhdmVzNEluV1gJAGQCCAkA7wcBBQtXWF9XWF9XQVZFUwdyZWd1bGFyBQtiYXNlQW1vdW50NAAHd3hXYXZlcwkAawMFAmQ4BQp3YXZlczRJbldYBQZ3eEluV1gACXBsdXRvSW5XWAkA8AcCBQ5XWF9QTFVUT19XQVZFUwUFcGx1dG8ACndhdmVzNUluV1gJAGQCCAkA7wcBBQ5XWF9QTFVUT19XQVZFUwdyZWd1bGFyBQtiYXNlQW1vdW50NQAKcGx1dG9XYXZlcwkAawMFAmQ4BQp3YXZlczVJbldYBQlwbHV0b0luV1gAEHdhdmVzSW5XaGlybHBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFBXdhdmVzAghfYmFsYW5jZQAQd2hpcmxJbldoaXJscG9vbAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAkArAICCQCsAgICB2dsb2JhbF8FD3doaXJscG9vbFN0cmluZwIIX2JhbGFuY2UAEXByb2plY3RTdGFrZVdoaXJsCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkCQCsAgIJAKUIAQUEdGhpcwIMX2luZGV4U3Rha2VkAA90b3RhbFN0YWtlV2hpcmwJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQCF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50AAp3aGlybEluQkJCCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUJYmJiUG9vbElkCQCsAgIJAKwCAgIHZ2xvYmFsXwUPd2hpcmxwb29sU3RyaW5nAghfYmFsYW5jZQAKdG90YWxXaGlybAkAZAIFEHdoaXJsSW5XaGlybHBvb2wFCndoaXJsSW5CQkIADXdhdmVzSW5XNXBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQx3YXZlczVwb29sSWQJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFBXdhdmVzAghfYmFsYW5jZQAScHJvamVjdFN0YWtlVzVwb29sCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUMd2F2ZXM1cG9vbElkCQCsAgIJAKUIAQUEdGhpcwIMX2luZGV4U3Rha2VkABB0b3RhbFN0YWtlVzVwb29sCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUMd2F2ZXM1cG9vbElkAhdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAANa2V5VmF1bHRBc3NldAkBDHRyeUdldFN0cmluZwIJAQdBZGRyZXNzAQEaAVfa4655+8r5z+MDNCERUZp23XhlXEZbchgJAKwCAgkArAICAg8lcyVzJXNfX3ZhdWx0X18JAKUIAQUEdGhpcwIHX19XQVZFUwALV0FWRVNpbkVBU1QJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFDWtleVZhdWx0QXNzZXQCAl9fAAIADmtleVZhdWx0QXNzZXQyCQEMdHJ5R2V0U3RyaW5nAgkBB0FkZHJlc3MBARoBV9rjrnn7yvnP4wM0IRFRmnbdeGVcRltyGAkArAICCQCsAgICDyVzJXMlc19fdmF1bHRfXwkApQgBBQR0aGlzAi5fXzNWdVY1V1RtRHo0N0RtZG4zUXBjWWp6YlNkaXBqUUU0Sk1kTmUxeFpwWDEzAAlFVEhpbkVBU1QJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFDmtleVZhdWx0QXNzZXQyAgJfXwACABFFVEhpbkVBU1R3YXZlbGV0cwkAawMFCUVUSGluRUFTVAUIZXRoV2F2ZXMFAmQ4AA1wdXp6bGVTdGFraW5nCQEHQWRkcmVzcwEBGgFXlGiM+e6iuaqf1vWOvKmPZxqcBvQWKYm7AAxwdXp6bGVTdGFrZWQJAQ10cnlHZXRJbnRlZ2VyAgUNcHV6emxlU3Rha2luZwkArAICCQClCAEFBHRoaXMCB19zdGFrZWQAEFBVWlpMRWluV2F2ZWxldHMJAGsDBQxwdXp6bGVTdGFrZWQFC3B1enpsZVdhdmVzBQJkOAAJV1hzdGFraW5nCQEHQWRkcmVzcwEBGgFXs+bmVRgRabDkMw+IUUOknK7W1UsDSxFYAAVrZXlXWAIlJXMlZCVzX19wYXJhbUJ5VXNlck51bV9fMTM0NDVfX2Ftb3VudAAIV1hhbW91bnQJAQ10cnlHZXRJbnRlZ2VyAgUJV1hzdGFraW5nBQVrZXlXWAAMV1hpbldhdmVsZXRzCQBrAwUIV1hhbW91bnQFB3d4V2F2ZXMFAmQ4AAxwbHV0b1N0YWtpbmcJAQdBZGRyZXNzAQEaAVc+e2fEjG9uYKjSzY/ueZ8xTkeorkMU/bAACWtleVNwbHV0bwkArAICCQClCAEFBHRoaXMCB19zUGx1dG8AC3BsdXRvU3Rha2VkCQBrAwkBDXRyeUdldEludGVnZXICBQxwbHV0b1N0YWtpbmcFCWtleVNwbHV0bwkBDXRyeUdldEludGVnZXICBQxwbHV0b1N0YWtpbmcCFWdsb2JhbF9sYXN0Q2hlY2tTUmF0ZQUCZDgAD1BMVVRPaW5XYXZlbGV0cwkAawMFC3BsdXRvU3Rha2VkBQpwbHV0b1dhdmVzBQJkOAAKdHZsSW5XYXZlcwkAZAIJAGQCCQBkAgkAZAIJAGQCCQBrAwkAaAIFC3dhdmVzSW5Qb29sAAoFDHByb2plY3RTdGFrZQUKdG90YWxTdGFrZQkAawMJAGgCBRB3YXZlc0luV2hpcmxwb29sAAoFEXByb2plY3RTdGFrZVdoaXJsBQ90b3RhbFN0YWtlV2hpcmwFEUVUSGluRUFTVHdhdmVsZXRzBRBQVVpaTEVpbldhdmVsZXRzCQBrAwkAaAIFDXdhdmVzSW5XNXBvb2wABQUScHJvamVjdFN0YWtlVzVwb29sBRB0b3RhbFN0YWtlVzVwb29sBQxXWGluV2F2ZWxldHMAB3RvdGFsQlQFC1dBVkVTaW5FQVNUAA10b3RhbFRyZWFzdXJ5CQBkAgUHdG90YWxCVAUKdHZsSW5XYXZlcwAPd2hpcmxwb29sU3VwcGx5BAckbWF0Y2gwCQDsBwEFCXdoaXJscG9vbAMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhxdWFudGl0eQkAAgECEENhbid0IGZpbmQgYXNzZXQABXByaWNlAwkAZwIJAGQCCQBrAwkAZAIFCnR2bEluV2F2ZXMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQJkOAUPd2hpcmxwb29sU3VwcGx5BQJkOAkBDXRyeUdldEludGVnZXICBQR0aGlzBRZrZXlXaGlybHBvb2xJc3N1ZVByaWNlCQBkAgkAawMJAGQCBQp0dmxJbldhdmVzCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVN1cnBsdXNSZWNlaXZlZAUCZDgFD3doaXJscG9vbFN1cHBseQUCZDgJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUWa2V5V2hpcmxwb29sSXNzdWVQcmljZQYBaQEVYnV5V0hJUkxQT09Md2l0aFdBVkVTAAMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAQIhPQIIBQFpBmNhbGxlcgkBB0FkZHJlc3MBARoBV44d5lHKOCPOw5HDxFaL1YPTb4hW/zbdCwcJAAIBAiBzbWFydCBjb250cmFjdCB1bmRlciBtYWludGVuYW5jZQQWV2hpcmxwb29sQmFsYW5jZUJlZm9yZQkA8AcCBQR0aGlzBQl3aGlybHBvb2wDCQAAAgUWV2hpcmxwb29sQmFsYW5jZUJlZm9yZQUWV2hpcmxwb29sQmFsYW5jZUJlZm9yZQQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB3N1cnBsdXMJAGsDCQBlAgUFcHJpY2UFAmQ4CAUDcG10BmFtb3VudAUCZDgEC0lzc3VlQW1vdW50AwkAZwIIBQNwbXQGYW1vdW50CQBrAwgFA3BtdAZhbW91bnQFAmQ4BQVwcmljZQkAawMIBQNwbXQGYW1vdW50BQJkOAUFcHJpY2UJAAIBAjBwbGVhc2UgY29udGFjdCBwcm9qZWN0IG93bmVyOiBpc3N1ZSBhbW91bnQgZXJyb3IEDWNsZWFuQW1vdW50SW4JAGUCCAUDcG10BmFtb3VudAkAawMIBQNwbXQGYW1vdW50AMgBAJBOBAlBbW91bnRPdXQJAG4EBRB3aGlybEluV2hpcmxwb29sCQBlAgkAaAIFAmQ4BQJkOAkAoAMBCQB2BgkAvQIECQC2AgEFEHdhdmVzSW5XaGlybHBvb2wJALYCAQkAaAIFAmQ4BQJkOAkAtgIBCQBkAgUQd2F2ZXNJbldoaXJscG9vbAUNY2xlYW5BbW91bnRJbgUGSEFMRlVQABAJALYCAQkAawMAoI0GAJBOAKD3NgAEABAFB0NFSUxJTkcJAGgCBQJkOAUCZDgFBERPV04DCQBmAgkAaQIFAmQ4ABQIBQNwbXQGYW1vdW50CQACAQIabWluaW11bSBwYXltZW50IDAuMDUgV0FWRVMDCQECIT0CCAUDcG10B2Fzc2V0SWQFBHVuaXQJAAIBAhdhdHRhY2ggV0FWRVMgdG9rZW4gb25seQQDYnV5AwkAZgIFCUFtb3VudE91dAULSXNzdWVBbW91bnQJAPwHBAkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQCBHN3YXAJAMwIAgUPd2hpcmxwb29sU3RyaW5nCQDMCAIJAGQCBQtJc3N1ZUFtb3VudAABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQIBQNwbXQGYW1vdW50BQNuaWwFBHVuaXQDCQAAAgUDYnV5BQNidXkEFVdoaXJscG9vbEJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzBQl3aGlybHBvb2wEEVdoaXJscG9vbEZyb21Td2FwCQBlAgUVV2hpcmxwb29sQmFsYW5jZUFmdGVyBRZXaGlybHBvb2xCYWxhbmNlQmVmb3JlCQDMCAIJAQdSZWlzc3VlAwUJd2hpcmxwb29sAwkAZwIFC0lzc3VlQW1vdW50BQlBbW91bnRPdXQFC0lzc3VlQW1vdW50AAAGCQDMCAIDCQBmAgUJQW1vdW50T3V0BQtJc3N1ZUFtb3VudAkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRFXaGlybHBvb2xGcm9tU3dhcAUJd2hpcmxwb29sCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC0lzc3VlQW1vdW50BQl3aGlybHBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQIFFmtleVdoaXJscG9vbElzc3VlUHJpY2UFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAwkAZgIFCUFtb3VudE91dAULSXNzdWVBbW91bnQCFXByaWNlIFdISVJMUE9PTC9XQVZFUwIgV0hJUkxQT09ML1dBVkVTIG1pZCBtYXJrZXQgcHJpY2UDCQBmAgUJQW1vdW50T3V0BQtJc3N1ZUFtb3VudAkAawMFAmQ4CAUDcG10BmFtb3VudAURV2hpcmxwb29sRnJvbVN3YXAJAGsDBQJkOAkAaAIFEHdhdmVzSW5XaGlybHBvb2wACQUQd2hpcmxJbldoaXJscG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5V2F2ZWxldHNSZWNlaXZlZAMJAGcCBQtJc3N1ZUFtb3VudAUJQW1vdW50T3V0CQBkAggFA3BtdAZhbW91bnQJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUTa2V5V2F2ZWxldHNSZWNlaXZlZAkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrZXlXYXZlbGV0c1JlY2VpdmVkQlQDCQBnAgULSXNzdWVBbW91bnQFCUFtb3VudE91dAkAZAIJAGUCCAUDcG10BmFtb3VudAUHc3VycGx1cwkBDXRyeUdldEludGVnZXICBQR0aGlzBRVrZXlXYXZlbGV0c1JlY2VpdmVkQlQJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUVa2V5V2F2ZWxldHNSZWNlaXZlZEJUCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlTdXJwbHVzUmVjZWl2ZWQDCQBmAgUJQW1vdW50T3V0BQtJc3N1ZUFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkCQBkAgUHc3VycGx1cwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVcHJpY2VBbmRUcmVhc3VyeVN0YXRzAAkAzAgCCQEMSW50ZWdlckVudHJ5AgIWQlQgV0FWRVMgaW4gRUFTVCB2YXVsdAULV0FWRVNpbkVBU1QJAMwIAgkBDEludGVnZXJFbnRyeQICIlNUIEJVUk4tWFROIHggUGVwZVRlYW0gaW4gd2F2ZWxldHMJAGsDCQBoAgULd2F2ZXNJblBvb2wACgUMcHJvamVjdFN0YWtlBQp0b3RhbFN0YWtlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhR0ZXN0IHBvb2wgd2VpZ2h0IHBwdAkAawMJAGkCCQBoAgULd2F2ZXNJblBvb2wAkE4JAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBRBidXJueHRuUFBUcG9vbElkCQCsAgIJAKwCAgIHc3RhdGljXwkA2AQBBQV3YXZlcwIHX3dlaWdodAUMcHJvamVjdFN0YWtlBQp0b3RhbFN0YWtlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhxTVCBXSElSTFBPT0wgQU1NIGluIHdhdmVsZXRzCQBrAwkAaAIFEHdhdmVzSW5XaGlybHBvb2wACgURcHJvamVjdFN0YWtlV2hpcmwFD3RvdGFsU3Rha2VXaGlybAkAzAgCCQEMSW50ZWdlckVudHJ5AgIWdGVzdCBwb29sIHdlaWdodCB3aGlybAkAawMJAGkCCQBoAgUQd2F2ZXNJbldoaXJscG9vbACQTgkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFCXdoaXJscG9vbAkArAICCQCsAgICB3N0YXRpY18JANgEAQUFd2F2ZXMCB193ZWlnaHQFEXByb2plY3RTdGFrZVdoaXJsBQ90b3RhbFN0YWtlV2hpcmwJAMwIAgkBDEludGVnZXJFbnRyeQICHlNUIFdhdmVzIDVwb29sIEFNTSBpbiB3YXZlbGV0cwkAawMJAGgCBQ13YXZlc0luVzVwb29sAAUFEnByb2plY3RTdGFrZVc1cG9vbAUQdG90YWxTdGFrZVc1cG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgIWdGVzdCBwb29sIHdlaWdodCA1cG9vbAkAawMJAGkCCQBoAgUNd2F2ZXNJblc1cG9vbACQTgkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFDHdhdmVzNXBvb2xJZAkArAICCQCsAgICB3N0YXRpY18JANgEAQUFd2F2ZXMCB193ZWlnaHQFEnByb2plY3RTdGFrZVc1cG9vbAUQdG90YWxTdGFrZVc1cG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgIHU1QgZUVUSAUJRVRIaW5FQVNUCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhNTVCBlRVRIIGluIHdhdmVsZXRzBRFFVEhpbkVBU1R3YXZlbGV0cwkAzAgCCQEMSW50ZWdlckVudHJ5AgIJU1QgUFVaWkxFBQxwdXp6bGVTdGFrZWQJAMwIAgkBDEludGVnZXJFbnRyeQICFVNUIFBVWlpMRSBpbiB3YXZlbGV0cwUQUFVaWkxFaW5XYXZlbGV0cwkAzAgCCQEMSW50ZWdlckVudHJ5AgIYU1QgV1ggaW4gZ1dYIGluIHdhdmVsZXRzBQxXWGluV2F2ZWxldHMJAMwIAgkBDEludGVnZXJFbnRyeQICD1NUIFBMVVRPIHN0YWtlZAULcGx1dG9TdGFrZWQJAMwIAgkBDEludGVnZXJFbnRyeQICFFNUIFBMVVRPIGluIHdhdmVsZXRzBQ9QTFVUT2luV2F2ZWxldHMJAMwIAgkBDEludGVnZXJFbnRyeQICFFRvdGFsIFNUIGluIHdhdmVsZXRzBQp0dmxJbldhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZrZXlXaGlybHBvb2xJc3N1ZVByaWNlBQVwcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIgV0hJUkxQT09ML1dBVkVTIG1pZCBtYXJrZXQgcHJpY2UJAGsDBQJkOAkAaAIFEHdhdmVzSW5XaGlybHBvb2wACQUQd2hpcmxJbldoaXJscG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgIadGVzdCBwb29sIHdlaWdodCBtaWQgcHJpY2UJAGsDBQJkOAkAaQIJAGgCBRB3YXZlc0luV2hpcmxwb29sCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkCQCsAgIJAKwCAgIHc3RhdGljXwkA2AQBBQl3aGlybHBvb2wCB193ZWlnaHQA6AcFEHdoaXJsSW5XaGlybHBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQICFldISVJMUE9PTCB0b3RhbCBzdXBwbHkFD3doaXJscG9vbFN1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgIOVG90YWwgdHJlYXN1cnkFDXRvdGFsVHJlYXN1cnkJAMwIAgkBDEludGVnZXJFbnRyeQICDU5BViBXSElSTFBPT0wJAGsDBQJkOAkAZAIFDXRvdGFsVHJlYXN1cnkJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQ93aGlybHBvb2xTdXBwbHkJAMwIAgkBDEludGVnZXJFbnRyeQICJGJ1eWJhY2smaW52ZXN0IFdISVJMUE9PTCBBTU0gPDUlIE5BVgkAawMJAGsDBQJkOAkAZAIFDXRvdGFsVHJlYXN1cnkJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQ93aGlybHBvb2xTdXBwbHkAXwBkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtleVN1cnBsdXNSZWNlaXZlZAkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFFWtleVdhdmVsZXRzUmVjZWl2ZWRCVAkBDXRyeUdldEludGVnZXICBQR0aGlzBRVrZXlXYXZlbGV0c1JlY2VpdmVkQlQJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtleVdhdmVsZXRzUGFpZE91dAkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlXYXZlbGV0c1BhaWRPdXQJAMwIAgkBDEludGVnZXJFbnRyeQICFHRvdGFsIFdBVkVTIHJlY2VpdmVkCQBpAgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkBQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgIXVG90YWwgdHJlYXN1cnkgaW4gV0FWRVMJAGkCBQ10b3RhbFRyZWFzdXJ5BQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgIZc3VycGx1cyByZWNlaXZlZCBpbiBXQVZFUwkAaQIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgImdG90YWwgV0FWRVMgcmVjZWl2ZWQgZm9yIGJhc2UgdHJlYXN1cnkJAGkCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFFWtleVdhdmVsZXRzUmVjZWl2ZWRCVAUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQICHXRvdGFsIFdBVkVTIHBhaWQgb3V0IGluIFdBVkVTCQBpAgkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlXYXZlbGV0c1BhaWRPdXQFAmQ4CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZrZXlST0kJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdhdmVsZXRzUGFpZE91dACQTgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkBQNuaWwBaQEMYm9vc3RQb29sQVBZAQZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBAthbW91bnRCb29zdAkAawMJAGgCBQZhbW91bnQFAmQ4AFAAZAMJAAACBQthbW91bnRCb29zdAULYW1vdW50Qm9vc3QEB3RvV2hpcmwJAGsDBQthbW91bnRCb29zdAUQd2hpcmxJbldoaXJscG9vbAUKdG90YWxXaGlybAMJAAACBQd0b1doaXJsBQd0b1doaXJsBAV0b0JCQgkAawMFC2Ftb3VudEJvb3N0BQp3aGlybEluQkJCBQp0b3RhbFdoaXJsAwkAAAIFBXRvQkJCBQV0b0JCQgQLYW1vdW50T3duZXIJAGsDCQBoAgUGYW1vdW50BQJkOAAUAGQDCQAAAgULYW1vdW50T3duZXIFC2Ftb3VudE93bmVyBAZib29zdFcJAPwHBAkBB0FkZHJlc3MBBQtwb29sYm9vc3RTQwILYWRkQm9vc3RpbmcJAMwIAgkA2AQBBQ93aGlybHBvb2xQb29sSWQJAMwIAgAHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFB3RvV2hpcmwFA25pbAMJAAACBQZib29zdFcFBmJvb3N0VwQIYm9vc3RCQkIJAPwHBAkBB0FkZHJlc3MBBQtwb29sYm9vc3RTQwILYWRkQm9vc3RpbmcJAMwIAgkA2AQBBQliYmJQb29sSWQJAMwIAgAHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFBXRvQkJCBQNuaWwDCQAAAgUIYm9vc3RCQkIFCGJvb3N0QkJCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUMcHJvamVjdE93bmVyBQthbW91bnRPd25lcgUEdW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5V2F2ZWxldHNQYWlkT3V0CQBkAgULYW1vdW50Qm9vc3QJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZrZXlST0kJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdhdmVsZXRzUGFpZE91dACQTgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrZXlBY3RpdmF0ZWQFBmhlaWdodAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3RyYW5zZmVyUG9vbEFQWQEGYW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQLYW1vdW50Qm9vc3QJAGsDCQBoAgUGYW1vdW50BQJkOABQAGQDCQAAAgULYW1vdW50Qm9vc3QFC2Ftb3VudEJvb3N0BAd0b1doaXJsCQBrAwULYW1vdW50Qm9vc3QFEHdoaXJsSW5XaGlybHBvb2wFCnRvdGFsV2hpcmwDCQAAAgUHdG9XaGlybAUHdG9XaGlybAQFdG9CQkIJAGsDBQthbW91bnRCb29zdAUKd2hpcmxJbkJCQgUKdG90YWxXaGlybAMJAAACBQV0b0JCQgUFdG9CQkIEC2Ftb3VudE93bmVyCQBrAwkAaAIFBmFtb3VudAUCZDgAFABkAwkAAAIFC2Ftb3VudE93bmVyBQthbW91bnRPd25lcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAUHdG9XaGlybAUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFCWJiYlBvb2xJZAUFdG9CQkIFBHVuaXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQxwcm9qZWN0T3duZXIFC2Ftb3VudE93bmVyBQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlXYXZlbGV0c1BhaWRPdXQJAGQCBQthbW91bnRCb29zdAkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlXYXZlbGV0c1BhaWRPdXQJAMwIAgkBDEludGVnZXJFbnRyeQIFBmtleVJPSQkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0AJBOCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtleUFjdGl2YXRlZAUGaGVpZ2h0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPc3VycGx1c0ludmVzdGVkAQthbW91bnRXQVZFUwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEDmludmVzdGVkQW1vdW50CQBoAgULYW1vdW50V0FWRVMFAmQ4CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlTdXJwbHVzUmVjZWl2ZWQJAGUCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVN1cnBsdXNSZWNlaXZlZAUOaW52ZXN0ZWRBbW91bnQFA25pbAFpAQh3aXRoZHJhdwADCQECIT0CCAUBaQZjYWxsZXIJAQdBZGRyZXNzAQEaAVcYiRskbS/iRKWyuS7QZCNQLinfcjDaMlkJAAIBAglubyBhY2Nlc3MECHdpdGhkcmF3CQD8BwQJAQdBZGRyZXNzAQEaAVd1Et2Tgg9b3iV2FTnLSdUfUygJxOhxXicCFXdpdGhkcmF3VmVzdGVkQWxsVVNETgkAzAgCBwkAzAgCBgUDbmlsBQNuaWwDCQAAAgUId2l0aGRyYXcFCHdpdGhkcmF3BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkAAwkAxRMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQYDCQBmAgkAZAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDGtleUFjdGl2YXRlZAULdW5sb2NrQmxvY2sFBmhlaWdodAcDCQDFEwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQpoZWlyUHViS2V5BgMJAGYCCQBkAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUMa2V5QWN0aXZhdGVkBQx1bmxvY2tCbG9jazIFBmhlaWdodAcJAMUTAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFElB1enpsZU1hc3RlclB1YktleVpN5vY=", "height": 4123736, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8D3cjcq8byaDAYKtLm5ck8bKVMbQY7aswkMfmSobjniE Next: AxqkWeJHeo3d6kaCbY9W422azULDMCfWHoBKs395JjFh Diff:
OldNewDifferences
6565
6666 let wx = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on'
6767
68+let pluto = base58'Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5'
69+
6870 let poolboostSC = base58'3P8eeDzUnoDNbQjW617pAe76cEUDQsP1m1V'
6971
7072 let SWAVES_stake = Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV')
7476 let WX_PUZZLE_WAVES = Address(base58'3PQaYm4pbRVrNTTnL8pDJZTxhcmD4jRskrz')
7577
7678 let WX_WX_WAVES = Address(base58'3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh')
79+
80+let WX_PLUTO_WAVES = Address(base58'3P6ZipK8ydb4qHmufCquh98g9KW6EwaeJfk')
7781
7882 let wavesInPool = tryGetInteger(Address(burnxtnPPTpoolId), (("global_" + toBase58String(waves)) + "_balance"))
7983
113117
114118 let baseAmount4 = toInt(fraction(toBigInt(assetBalance(WX_WX_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR))
115119
120+let baseAmount5 = toInt(fraction(toBigInt(assetBalance(WX_PLUTO_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR))
121+
116122 let waves2InWX = (wavesBalance(WX_ETH_WAVES).regular + baseAmount2)
117123
118124 let ethInWX = assetBalance(WX_ETH_WAVES, eth)
131137
132138 let wxWaves = fraction(d8, waves4InWX, wxInWX)
133139
140+let plutoInWX = assetBalance(WX_PLUTO_WAVES, pluto)
141+
142+let waves5InWX = (wavesBalance(WX_PLUTO_WAVES).regular + baseAmount5)
143+
144+let plutoWaves = fraction(d8, waves5InWX, plutoInWX)
145+
134146 let wavesInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + toBase58String(waves)) + "_balance"))
135147
136148 let whirlInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + whirlpoolString) + "_balance"))
148160 let projectStakeW5pool = tryGetInteger(Address(waves5poolId), (toString(this) + "_indexStaked"))
149161
150162 let totalStakeW5pool = tryGetInteger(Address(waves5poolId), "global_poolToken_amount")
163+
164+let keyVaultAsset = tryGetString(Address(base58'3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb'), (("%s%s%s__vault__" + toString(this)) + "__WAVES"))
165+
166+let WAVESinEAST = parseIntValue(split(keyVaultAsset, "__")[2])
151167
152168 let keyVaultAsset2 = tryGetString(Address(base58'3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb'), (("%s%s%s__vault__" + toString(this)) + "__3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13"))
153169
169185
170186 let WXinWavelets = fraction(WXamount, wxWaves, d8)
171187
188+let plutoStaking = Address(base58'3P7dGTVZp8VLDYy3XEaUQbiqfi9cMK1Ly5q')
189+
190+let keySpluto = (toString(this) + "_sPluto")
191+
192+let plutoStaked = fraction(tryGetInteger(plutoStaking, keySpluto), tryGetInteger(plutoStaking, "global_lastCheckSRate"), d8)
193+
194+let PLUTOinWavelets = fraction(plutoStaked, plutoWaves, d8)
195+
172196 let tvlInWaves = (((((fraction((wavesInPool * 10), projectStake, totalStake) + fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)) + ETHinEASTwavelets) + PUZZLEinWavelets) + fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)) + WXinWavelets)
197+
198+let totalBT = WAVESinEAST
199+
200+let totalTreasury = (totalBT + tvlInWaves)
173201
174202 let whirlpoolSupply = match assetInfo(whirlpool) {
175203 case asset: Asset =>
235263
236264
237265 @Callable(i)
238-func priceAndTreasuryStats () = [IntegerEntry("ST BURN-XTN x PepeTeam in wavelets", fraction((wavesInPool * 10), projectStake, totalStake)), IntegerEntry("test pool weight ppt", fraction(((wavesInPool * 10000) / tryGetInteger(Address(burnxtnPPTpoolId), (("static_" + toBase58String(waves)) + "_weight"))), projectStake, totalStake)), IntegerEntry("pool weight", tryGetInteger(Address(burnxtnPPTpoolId), (("static_" + toBase58String(waves)) + "_weight")))]
266+func priceAndTreasuryStats () = [IntegerEntry("BT WAVES in EAST vault", WAVESinEAST), IntegerEntry("ST BURN-XTN x PepeTeam in wavelets", fraction((wavesInPool * 10), projectStake, totalStake)), IntegerEntry("test pool weight ppt", fraction(((wavesInPool * 10000) / tryGetInteger(Address(burnxtnPPTpoolId), (("static_" + toBase58String(waves)) + "_weight"))), projectStake, totalStake)), IntegerEntry("ST WHIRLPOOL AMM in wavelets", fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)), IntegerEntry("test pool weight whirl", fraction(((wavesInWhirlpool * 10000) / tryGetInteger(Address(whirlpool), (("static_" + toBase58String(waves)) + "_weight"))), projectStakeWhirl, totalStakeWhirl)), IntegerEntry("ST Waves 5pool AMM in wavelets", fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)), IntegerEntry("test pool weight 5pool", fraction(((wavesInW5pool * 10000) / tryGetInteger(Address(waves5poolId), (("static_" + toBase58String(waves)) + "_weight"))), 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("ST PLUTO staked", plutoStaked), IntegerEntry("ST PLUTO in wavelets", PLUTOinWavelets), IntegerEntry("Total ST in wavelets", tvlInWaves), IntegerEntry(keyWhirlpoolIssuePrice, price), IntegerEntry("WHIRLPOOL/WAVES mid market price", fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry("test pool weight mid price", fraction(d8, ((wavesInWhirlpool * tryGetInteger(Address(whirlpoolPoolId), (("static_" + toBase58String(whirlpool)) + "_weight"))) / 1000), 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)))]
239267
240268
241269
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
68+let pluto = base58'Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5'
69+
6870 let poolboostSC = base58'3P8eeDzUnoDNbQjW617pAe76cEUDQsP1m1V'
6971
7072 let SWAVES_stake = Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV')
7173
7274 let WX_ETH_WAVES = Address(base58'3P2yiVnK48evTLr8MAZWavpE4WA4fw1weQg')
7375
7476 let WX_PUZZLE_WAVES = Address(base58'3PQaYm4pbRVrNTTnL8pDJZTxhcmD4jRskrz')
7577
7678 let WX_WX_WAVES = Address(base58'3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh')
79+
80+let WX_PLUTO_WAVES = Address(base58'3P6ZipK8ydb4qHmufCquh98g9KW6EwaeJfk')
7781
7882 let wavesInPool = tryGetInteger(Address(burnxtnPPTpoolId), (("global_" + toBase58String(waves)) + "_balance"))
7983
8084 let projectStake = tryGetInteger(Address(burnxtnPPTpoolId), (toString(this) + "_indexStaked"))
8185
8286 let totalStake = tryGetInteger(Address(burnxtnPPTpoolId), "global_poolToken_amount")
8387
8488 func _loadInt (key_,default_) = match getInteger(SWAVES_stake, key_) {
8589 case a: Int =>
8690 a
8791 case _ =>
8892 default_
8993 }
9094
9195
9296 func _loadBigInt (key_,default_) = match getBinary(SWAVES_stake, key_) {
9397 case a: ByteVector =>
9498 toBigInt(a)
9599 case _ =>
96100 default_
97101 }
98102
99103
100104 let lastRate = _loadBigInt("LAST_RATE", toBigInt(1000000000000))
101105
102106 let currentRate = _loadBigInt("CURRENT_RATE", toBigInt(0))
103107
104108 let lastHeight = _loadInt("LAST_HEIGHT", 0)
105109
106110 let targetHeight = min([_loadInt("TARGET_HEIGHT", 0), height])
107111
108112 let lastRateUpdated = (lastRate + (currentRate * toBigInt((targetHeight - lastHeight))))
109113
110114 let baseAmount2 = toInt(fraction(toBigInt(assetBalance(WX_ETH_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR))
111115
112116 let baseAmount3 = toInt(fraction(toBigInt(assetBalance(WX_PUZZLE_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR))
113117
114118 let baseAmount4 = toInt(fraction(toBigInt(assetBalance(WX_WX_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR))
115119
120+let baseAmount5 = toInt(fraction(toBigInt(assetBalance(WX_PLUTO_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR))
121+
116122 let waves2InWX = (wavesBalance(WX_ETH_WAVES).regular + baseAmount2)
117123
118124 let ethInWX = assetBalance(WX_ETH_WAVES, eth)
119125
120126 let ethWaves = fraction(d8, waves2InWX, ethInWX)
121127
122128 let puzzleInWX = assetBalance(WX_PUZZLE_WAVES, puzzle)
123129
124130 let waves3InWX = (wavesBalance(WX_PUZZLE_WAVES).regular + baseAmount3)
125131
126132 let puzzleWaves = fraction(d8, waves3InWX, puzzleInWX)
127133
128134 let wxInWX = assetBalance(WX_WX_WAVES, wx)
129135
130136 let waves4InWX = (wavesBalance(WX_WX_WAVES).regular + baseAmount4)
131137
132138 let wxWaves = fraction(d8, waves4InWX, wxInWX)
133139
140+let plutoInWX = assetBalance(WX_PLUTO_WAVES, pluto)
141+
142+let waves5InWX = (wavesBalance(WX_PLUTO_WAVES).regular + baseAmount5)
143+
144+let plutoWaves = fraction(d8, waves5InWX, plutoInWX)
145+
134146 let wavesInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + toBase58String(waves)) + "_balance"))
135147
136148 let whirlInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + whirlpoolString) + "_balance"))
137149
138150 let projectStakeWhirl = tryGetInteger(Address(whirlpoolPoolId), (toString(this) + "_indexStaked"))
139151
140152 let totalStakeWhirl = tryGetInteger(Address(whirlpoolPoolId), "global_poolToken_amount")
141153
142154 let whirlInBBB = tryGetInteger(Address(bbbPoolId), (("global_" + whirlpoolString) + "_balance"))
143155
144156 let totalWhirl = (whirlInWhirlpool + whirlInBBB)
145157
146158 let wavesInW5pool = tryGetInteger(Address(waves5poolId), (("global_" + toBase58String(waves)) + "_balance"))
147159
148160 let projectStakeW5pool = tryGetInteger(Address(waves5poolId), (toString(this) + "_indexStaked"))
149161
150162 let totalStakeW5pool = tryGetInteger(Address(waves5poolId), "global_poolToken_amount")
163+
164+let keyVaultAsset = tryGetString(Address(base58'3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb'), (("%s%s%s__vault__" + toString(this)) + "__WAVES"))
165+
166+let WAVESinEAST = parseIntValue(split(keyVaultAsset, "__")[2])
151167
152168 let keyVaultAsset2 = tryGetString(Address(base58'3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb'), (("%s%s%s__vault__" + toString(this)) + "__3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13"))
153169
154170 let ETHinEAST = parseIntValue(split(keyVaultAsset2, "__")[2])
155171
156172 let ETHinEASTwavelets = fraction(ETHinEAST, ethWaves, d8)
157173
158174 let puzzleStaking = Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS')
159175
160176 let puzzleStaked = tryGetInteger(puzzleStaking, (toString(this) + "_staked"))
161177
162178 let PUZZLEinWavelets = fraction(puzzleStaked, puzzleWaves, d8)
163179
164180 let WXstaking = Address(base58'3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP')
165181
166182 let keyWX = "%s%d%s__paramByUserNum__13445__amount"
167183
168184 let WXamount = tryGetInteger(WXstaking, keyWX)
169185
170186 let WXinWavelets = fraction(WXamount, wxWaves, d8)
171187
188+let plutoStaking = Address(base58'3P7dGTVZp8VLDYy3XEaUQbiqfi9cMK1Ly5q')
189+
190+let keySpluto = (toString(this) + "_sPluto")
191+
192+let plutoStaked = fraction(tryGetInteger(plutoStaking, keySpluto), tryGetInteger(plutoStaking, "global_lastCheckSRate"), d8)
193+
194+let PLUTOinWavelets = fraction(plutoStaked, plutoWaves, d8)
195+
172196 let tvlInWaves = (((((fraction((wavesInPool * 10), projectStake, totalStake) + fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)) + ETHinEASTwavelets) + PUZZLEinWavelets) + fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)) + WXinWavelets)
197+
198+let totalBT = WAVESinEAST
199+
200+let totalTreasury = (totalBT + tvlInWaves)
173201
174202 let whirlpoolSupply = match assetInfo(whirlpool) {
175203 case asset: Asset =>
176204 asset.quantity
177205 case _ =>
178206 throw("Can't find asset")
179207 }
180208
181209 let price = if (((fraction((tvlInWaves + tryGetInteger(this, keySurplusReceived)), d8, whirlpoolSupply) + d8) >= tryGetInteger(this, keyWhirlpoolIssuePrice)))
182210 then (fraction((tvlInWaves + tryGetInteger(this, keySurplusReceived)), d8, whirlpoolSupply) + d8)
183211 else tryGetInteger(this, keyWhirlpoolIssuePrice)
184212
185213 @Callable(i)
186214 func buyWHIRLPOOLwithWAVES () = if (if ((i.caller != this))
187215 then (i.caller != Address(base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'))
188216 else false)
189217 then throw("smart contract under maintenance")
190218 else {
191219 let WhirlpoolBalanceBefore = assetBalance(this, whirlpool)
192220 if ((WhirlpoolBalanceBefore == WhirlpoolBalanceBefore))
193221 then {
194222 let pmt = value(i.payments[0])
195223 let surplus = fraction((price - d8), pmt.amount, d8)
196224 let IssueAmount = if ((pmt.amount >= fraction(pmt.amount, d8, price)))
197225 then fraction(pmt.amount, d8, price)
198226 else throw("please contact project owner: issue amount error")
199227 let cleanAmountIn = (pmt.amount - fraction(pmt.amount, 200, 10000))
200228 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)
201229 if (((d8 / 20) > pmt.amount))
202230 then throw("minimum payment 0.05 WAVES")
203231 else if ((pmt.assetId != unit))
204232 then throw("attach WAVES token only")
205233 else {
206234 let buy = if ((AmountOut > IssueAmount))
207235 then invoke(Address(whirlpoolPoolId), "swap", [whirlpoolString, (IssueAmount + 1)], [AttachedPayment(unit, pmt.amount)])
208236 else unit
209237 if ((buy == buy))
210238 then {
211239 let WhirlpoolBalanceAfter = assetBalance(this, whirlpool)
212240 let WhirlpoolFromSwap = (WhirlpoolBalanceAfter - WhirlpoolBalanceBefore)
213241 [Reissue(whirlpool, if ((IssueAmount >= AmountOut))
214242 then IssueAmount
215243 else 0, true), if ((AmountOut > IssueAmount))
216244 then ScriptTransfer(i.caller, WhirlpoolFromSwap, whirlpool)
217245 else ScriptTransfer(i.caller, IssueAmount, whirlpool), IntegerEntry(keyWhirlpoolIssuePrice, price), IntegerEntry(if ((AmountOut > IssueAmount))
218246 then "price WHIRLPOOL/WAVES"
219247 else "WHIRLPOOL/WAVES mid market price", if ((AmountOut > IssueAmount))
220248 then fraction(d8, pmt.amount, WhirlpoolFromSwap)
221249 else fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry(keyWaveletsReceived, if ((IssueAmount >= AmountOut))
222250 then (pmt.amount + tryGetInteger(this, keyWaveletsReceived))
223251 else tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keyWaveletsReceivedBT, if ((IssueAmount >= AmountOut))
224252 then ((pmt.amount - surplus) + tryGetInteger(this, keyWaveletsReceivedBT))
225253 else tryGetInteger(this, keyWaveletsReceivedBT)), IntegerEntry(keySurplusReceived, if ((AmountOut > IssueAmount))
226254 then getIntegerValue(this, keySurplusReceived)
227255 else (surplus + getIntegerValue(this, keySurplusReceived)))]
228256 }
229257 else throw("Strict value is not equal to itself.")
230258 }
231259 }
232260 else throw("Strict value is not equal to itself.")
233261 }
234262
235263
236264
237265 @Callable(i)
238-func priceAndTreasuryStats () = [IntegerEntry("ST BURN-XTN x PepeTeam in wavelets", fraction((wavesInPool * 10), projectStake, totalStake)), IntegerEntry("test pool weight ppt", fraction(((wavesInPool * 10000) / tryGetInteger(Address(burnxtnPPTpoolId), (("static_" + toBase58String(waves)) + "_weight"))), projectStake, totalStake)), IntegerEntry("pool weight", tryGetInteger(Address(burnxtnPPTpoolId), (("static_" + toBase58String(waves)) + "_weight")))]
266+func priceAndTreasuryStats () = [IntegerEntry("BT WAVES in EAST vault", WAVESinEAST), IntegerEntry("ST BURN-XTN x PepeTeam in wavelets", fraction((wavesInPool * 10), projectStake, totalStake)), IntegerEntry("test pool weight ppt", fraction(((wavesInPool * 10000) / tryGetInteger(Address(burnxtnPPTpoolId), (("static_" + toBase58String(waves)) + "_weight"))), projectStake, totalStake)), IntegerEntry("ST WHIRLPOOL AMM in wavelets", fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)), IntegerEntry("test pool weight whirl", fraction(((wavesInWhirlpool * 10000) / tryGetInteger(Address(whirlpool), (("static_" + toBase58String(waves)) + "_weight"))), projectStakeWhirl, totalStakeWhirl)), IntegerEntry("ST Waves 5pool AMM in wavelets", fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)), IntegerEntry("test pool weight 5pool", fraction(((wavesInW5pool * 10000) / tryGetInteger(Address(waves5poolId), (("static_" + toBase58String(waves)) + "_weight"))), 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("ST PLUTO staked", plutoStaked), IntegerEntry("ST PLUTO in wavelets", PLUTOinWavelets), IntegerEntry("Total ST in wavelets", tvlInWaves), IntegerEntry(keyWhirlpoolIssuePrice, price), IntegerEntry("WHIRLPOOL/WAVES mid market price", fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry("test pool weight mid price", fraction(d8, ((wavesInWhirlpool * tryGetInteger(Address(whirlpoolPoolId), (("static_" + toBase58String(whirlpool)) + "_weight"))) / 1000), 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)))]
239267
240268
241269
242270 @Callable(i)
243271 func boostPoolAPY (amount) = if ((i.caller != this))
244272 then throw("access only by project owner")
245273 else {
246274 let amountBoost = fraction((amount * d8), 80, 100)
247275 if ((amountBoost == amountBoost))
248276 then {
249277 let toWhirl = fraction(amountBoost, whirlInWhirlpool, totalWhirl)
250278 if ((toWhirl == toWhirl))
251279 then {
252280 let toBBB = fraction(amountBoost, whirlInBBB, totalWhirl)
253281 if ((toBBB == toBBB))
254282 then {
255283 let amountOwner = fraction((amount * d8), 20, 100)
256284 if ((amountOwner == amountOwner))
257285 then {
258286 let boostW = invoke(Address(poolboostSC), "addBoosting", [toBase58String(whirlpoolPoolId), 7], [AttachedPayment(unit, toWhirl)])
259287 if ((boostW == boostW))
260288 then {
261289 let boostBBB = invoke(Address(poolboostSC), "addBoosting", [toBase58String(bbbPoolId), 7], [AttachedPayment(unit, toBBB)])
262290 if ((boostBBB == boostBBB))
263291 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)]
264292 else throw("Strict value is not equal to itself.")
265293 }
266294 else throw("Strict value is not equal to itself.")
267295 }
268296 else throw("Strict value is not equal to itself.")
269297 }
270298 else throw("Strict value is not equal to itself.")
271299 }
272300 else throw("Strict value is not equal to itself.")
273301 }
274302 else throw("Strict value is not equal to itself.")
275303 }
276304
277305
278306
279307 @Callable(i)
280308 func transferPoolAPY (amount) = if ((i.caller != this))
281309 then throw("access only by project owner")
282310 else {
283311 let amountBoost = fraction((amount * d8), 80, 100)
284312 if ((amountBoost == amountBoost))
285313 then {
286314 let toWhirl = fraction(amountBoost, whirlInWhirlpool, totalWhirl)
287315 if ((toWhirl == toWhirl))
288316 then {
289317 let toBBB = fraction(amountBoost, whirlInBBB, totalWhirl)
290318 if ((toBBB == toBBB))
291319 then {
292320 let amountOwner = fraction((amount * d8), 20, 100)
293321 if ((amountOwner == amountOwner))
294322 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)]
295323 else throw("Strict value is not equal to itself.")
296324 }
297325 else throw("Strict value is not equal to itself.")
298326 }
299327 else throw("Strict value is not equal to itself.")
300328 }
301329 else throw("Strict value is not equal to itself.")
302330 }
303331
304332
305333
306334 @Callable(i)
307335 func surplusInvested (amountWAVES) = if ((i.caller != this))
308336 then throw("access only by project owner")
309337 else {
310338 let investedAmount = (amountWAVES * d8)
311339 [IntegerEntry(keySurplusReceived, (tryGetInteger(this, keySurplusReceived) - investedAmount))]
312340 }
313341
314342
315343
316344 @Callable(i)
317345 func withdraw () = if ((i.caller != Address(base58'3P4AdC9J6MzTEi2LL9xgQN8EimMnbk4d6Nt')))
318346 then throw("no access")
319347 else {
320348 let withdraw = invoke(Address(base58'3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk'), "withdrawVestedAllUSDN", [false, true], nil)
321349 if ((withdraw == withdraw))
322350 then nil
323351 else throw("Strict value is not equal to itself.")
324352 }
325353
326354
327355 @Verifier(tx)
328356 func verify () = if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
329357 then true
330358 else if (((getIntegerValue(this, keyActivated) + unlockBlock) > height))
331359 then false
332360 else if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], heirPubKey))
333361 then true
334362 else if (((getIntegerValue(this, keyActivated) + unlockBlock2) > height))
335363 then false
336364 else sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], PuzzleMasterPubKey)
337365

github/deemru/w8io/3ef1775 
63.81 ms