tx · 3SQar8FgJEcMTc1ewqtkPETQq2EDPyJNd3sArJUuVaqW 3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e: -0.01500000 Waves 2024.04.11 10:01 [4123752] smart account 3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e > SELF 0.00000000 Waves
{ "type": 13, "id": "3SQar8FgJEcMTc1ewqtkPETQq2EDPyJNd3sArJUuVaqW", "fee": 1500000, "feeAssetId": null, "timestamp": 1712818929702, "version": 2, "chainId": 87, "sender": "3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e", "senderPublicKey": "qv5sHFvV7GyNRm1A2r8BR9oX2nhkc1yNa1QfWLkaja8", "proofs": [ "3hYDhDiqQMgBakLp8TpRwNHn8QVdRRBx5eh5Nc5KVRSXL6fPBxhUDoFu5FDj9MYrYZucaQtRkxjuqsr49pW7fyTN" ], "script": "base64:BgIZCAISABIAEgMKAQESAwoBARIDCgEBEgASAFkBDXRyeUdldEludGVnZXICB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEMdHJ5R2V0U3RyaW5nAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgAAAmQ4AIDC1y8AC3VubG9ja0Jsb2NrCQBoAgAeAKALAApoZWlyUHViS2V5ASAaFa4tDyIv1uhzDfwRR/IHtg7qNN7P3pYq2N1IFBp+EAAMdW5sb2NrQmxvY2syCQBoAgBaAKALABJQdXp6bGVNYXN0ZXJQdWJLZXkBIDs1TW4/n774VJyWRAeAVqsv4hNgRcR78j8XQ/RCBSZdAAxrZXlBY3RpdmF0ZWQCFUFjdGl2YXRlZCBibG9ja2hlaWdodAASa2V5U3VycGx1c1JlY2VpdmVkAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzABNrZXlXYXZlbGV0c1JlY2VpdmVkAiB0b3RhbCBXQVZFUyByZWNlaXZlZCBpbiB3YXZlbGV0cwAVa2V5V2F2ZWxldHNSZWNlaXZlZEJUAil0b3RhbCB3YXZlbGV0cyByZWNlaXZlZCBmb3IgYmFzZSB0cmVhc3VyeQASa2V5V2F2ZWxldHNQYWlkT3V0AiB0b3RhbCBXQVZFUyBwYWlkIG91dCBpbiB3YXZlbGV0cwAGa2V5Uk9JAhBST0kgYmFzaXMgcG9pbnRzABZrZXlXaGlybHBvb2xJc3N1ZVByaWNlAiFXSElSTFBPT0wgaXNzdWUgcHJpY2UgaW4gd2F2ZWxldHMAEGJ1cm54dG5QUFRwb29sSWQBGgFX9UZoJ4ANaN9OJnV6tKHTKDHgCb/1eXk3AAxwcm9qZWN0T3duZXIBGgFXjh3mUco4I87DkcPEVovVg9NviFb/Nt0LAA93aGlybHBvb2xQb29sSWQBGgFXCUhUqJi1/8xKRtsS/UvJkxlGN0OYh9fNAAliYmJQb29sSWQBGgFXUu6TVhRNfgeM0oUP5n5cVzd+HJ/vPIIdAAx3YXZlczVwb29sSWQBGgFXd38LXS4ewPki7gRNAgq7A+t2lzsggesmAAl3aGlybHBvb2wBIFnjjdzCtSO6ShTcxNCvFAnmZOYEviUGCyZO5VBtl1nHAA93aGlybHBvb2xTdHJpbmcJANgEAQEgWeON3MK1I7pKFNzE0K8UCeZk5gS+JQYLJk7lUG2XWccABXdhdmVzAQQTq9kzAANldGgBICUe+v/YIclwnvvAtN4+t6uGngU7Zu/cB/xR4/WoMyhyAAZzd2F2ZXMBIAgfyPcWMO1Rwikb7Kwaj/yQcRxZOC3rIYGwN0HwRdFKAAZwdXp6bGUBIPEa/iX+9pk49GkqxN/hEtZHssbKDro3Ca93bR+OouVjAAJ3eAEgkwEcq6nHbiVXzmaecba9qmv4POhYCyru2aBOuzzcFLEABXBsdXRvASCQtQKc9Y/9yUXaU5UMP7q0r1MmXUhuMzXCoUxnHy0Y9AALcG9vbGJvb3N0U0MBGgFXSbYeEN+gDU/Y1dAPo+OEt9leOimzEamsAAxTV0FWRVNfc3Rha2UJAQdBZGRyZXNzAQEaAVd9yXuTFHn/51HxsUrHb/lqHYCVR89YI34ADFdYX0VUSF9XQVZFUwkBB0FkZHJlc3MBARoBVwuA1RIPTUpeJTGq5UPPtFnYI6ND2w/rwQAPV1hfUFVaWkxFX1dBVkVTCQEHQWRkcmVzcwEBGgFX+HHnown6Zd6igb6vdeQfPazLlMp1rQSvAAtXWF9XWF9XQVZFUwkBB0FkZHJlc3MBARoBV5pEBZiZvLSokOa3VW+3GCjLiIbTBX0fVgAOV1hfUExVVE9fV0FWRVMJAQdBZGRyZXNzAQEaAVcy1557cq8BO4QXMP+iKpENKxyo1BarbYMAC3dhdmVzSW5Qb29sCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUQYnVybnh0blBQVHBvb2xJZAkArAICCQCsAgICB2dsb2JhbF8JANgEAQUFd2F2ZXMCCF9iYWxhbmNlAAxwcm9qZWN0U3Rha2UJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBRBidXJueHRuUFBUcG9vbElkCQCsAgIJAKUIAQUEdGhpcwIMX2luZGV4U3Rha2VkAAp0b3RhbFN0YWtlCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUQYnVybnh0blBQVHBvb2xJZAIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQBCF9sb2FkSW50AgRrZXlfCGRlZmF1bHRfBAckbWF0Y2gwCQCaCAIFDFNXQVZFU19zdGFrZQUEa2V5XwMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEFCGRlZmF1bHRfAQtfbG9hZEJpZ0ludAIEa2V5XwhkZWZhdWx0XwQHJG1hdGNoMAkAnAgCBQxTV0FWRVNfc3Rha2UFBGtleV8DCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYQUHJG1hdGNoMAkAngMBBQFhBQhkZWZhdWx0XwAIbGFzdFJhdGUJAQtfbG9hZEJpZ0ludAICCUxBU1RfUkFURQkAtgIBAICglKWNHQALY3VycmVudFJhdGUJAQtfbG9hZEJpZ0ludAICDENVUlJFTlRfUkFURQkAtgIBAAAACmxhc3RIZWlnaHQJAQhfbG9hZEludAICC0xBU1RfSEVJR0hUAAAADHRhcmdldEhlaWdodAkAlwMBCQDMCAIJAQhfbG9hZEludAICDVRBUkdFVF9IRUlHSFQAAAkAzAgCBQZoZWlnaHQFA25pbAAPbGFzdFJhdGVVcGRhdGVkCQC3AgIFCGxhc3RSYXRlCQC5AgIFC2N1cnJlbnRSYXRlCQC2AgEJAGUCBQx0YXJnZXRIZWlnaHQFCmxhc3RIZWlnaHQAC2Jhc2VBbW91bnQyCQCgAwEJAL0CBAkAtgIBCQDwBwIFDFdYX0VUSF9XQVZFUwUGc3dhdmVzBQ9sYXN0UmF0ZVVwZGF0ZWQJALYCAQCAoJSljR0FBUZMT09SAAtiYXNlQW1vdW50MwkAoAMBCQC9AgQJALYCAQkA8AcCBQ9XWF9QVVpaTEVfV0FWRVMFBnN3YXZlcwUPbGFzdFJhdGVVcGRhdGVkCQC2AgEAgKCUpY0dBQVGTE9PUgALYmFzZUFtb3VudDQJAKADAQkAvQIECQC2AgEJAPAHAgULV1hfV1hfV0FWRVMFBnN3YXZlcwUPbGFzdFJhdGVVcGRhdGVkCQC2AgEAgKCUpY0dBQVGTE9PUgALYmFzZUFtb3VudDUJAKADAQkAvQIECQC2AgEJAPAHAgUOV1hfUExVVE9fV0FWRVMFBnN3YXZlcwUPbGFzdFJhdGVVcGRhdGVkCQC2AgEAgKCUpY0dBQVGTE9PUgAKd2F2ZXMySW5XWAkAZAIICQDvBwEFDFdYX0VUSF9XQVZFUwdyZWd1bGFyBQtiYXNlQW1vdW50MgAHZXRoSW5XWAkA8AcCBQxXWF9FVEhfV0FWRVMFA2V0aAAIZXRoV2F2ZXMJAGsDBQJkOAUKd2F2ZXMySW5XWAUHZXRoSW5XWAAKcHV6emxlSW5XWAkA8AcCBQ9XWF9QVVpaTEVfV0FWRVMFBnB1enpsZQAKd2F2ZXMzSW5XWAkAZAIICQDvBwEFD1dYX1BVWlpMRV9XQVZFUwdyZWd1bGFyBQtiYXNlQW1vdW50MwALcHV6emxlV2F2ZXMJAGsDBQJkOAUKd2F2ZXMzSW5XWAUKcHV6emxlSW5XWAAGd3hJbldYCQDwBwIFC1dYX1dYX1dBVkVTBQJ3eAAKd2F2ZXM0SW5XWAkAZAIICQDvBwEFC1dYX1dYX1dBVkVTB3JlZ3VsYXIFC2Jhc2VBbW91bnQ0AAd3eFdhdmVzCQBrAwUCZDgFCndhdmVzNEluV1gFBnd4SW5XWAAJcGx1dG9JbldYCQDwBwIFDldYX1BMVVRPX1dBVkVTBQVwbHV0bwAKd2F2ZXM1SW5XWAkAZAIICQDvBwEFDldYX1BMVVRPX1dBVkVTB3JlZ3VsYXIFC2Jhc2VBbW91bnQ1AApwbHV0b1dhdmVzCQBrAwUCZDgFCndhdmVzNUluV1gFCXBsdXRvSW5XWAAQd2F2ZXNJbldoaXJscG9vbAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAkArAICCQCsAgICB2dsb2JhbF8JANgEAQUFd2F2ZXMCCF9iYWxhbmNlABB3aGlybEluV2hpcmxwb29sCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkCQCsAgIJAKwCAgIHZ2xvYmFsXwUPd2hpcmxwb29sU3RyaW5nAghfYmFsYW5jZQARcHJvamVjdFN0YWtlV2hpcmwJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQJAKwCAgkApQgBBQR0aGlzAgxfaW5kZXhTdGFrZWQAD3RvdGFsU3Rha2VXaGlybAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQACndoaXJsSW5CQkIJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQliYmJQb29sSWQJAKwCAgkArAICAgdnbG9iYWxfBQ93aGlybHBvb2xTdHJpbmcCCF9iYWxhbmNlAAp0b3RhbFdoaXJsCQBkAgUQd2hpcmxJbldoaXJscG9vbAUKd2hpcmxJbkJCQgANd2F2ZXNJblc1cG9vbAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFDHdhdmVzNXBvb2xJZAkArAICCQCsAgICB2dsb2JhbF8JANgEAQUFd2F2ZXMCCF9iYWxhbmNlABJwcm9qZWN0U3Rha2VXNXBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQx3YXZlczVwb29sSWQJAKwCAgkApQgBBQR0aGlzAgxfaW5kZXhTdGFrZWQAEHRvdGFsU3Rha2VXNXBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQx3YXZlczVwb29sSWQCF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50AA1rZXlWYXVsdEFzc2V0CQEMdHJ5R2V0U3RyaW5nAgkBB0FkZHJlc3MBARoBV9rjrnn7yvnP4wM0IRFRmnbdeGVcRltyGAkArAICCQCsAgICDyVzJXMlc19fdmF1bHRfXwkApQgBBQR0aGlzAgdfX1dBVkVTAAtXQVZFU2luRUFTVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUNa2V5VmF1bHRBc3NldAICX18AAgAOa2V5VmF1bHRBc3NldDIJAQx0cnlHZXRTdHJpbmcCCQEHQWRkcmVzcwEBGgFX2uOuefvK+c/jAzQhEVGadt14ZVxGW3IYCQCsAgIJAKwCAgIPJXMlcyVzX192YXVsdF9fCQClCAEFBHRoaXMCLl9fM1Z1VjVXVG1EejQ3RG1kbjNRcGNZanpiU2RpcGpRRTRKTWROZTF4WnBYMTMACUVUSGluRUFTVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUOa2V5VmF1bHRBc3NldDICAl9fAAIAEUVUSGluRUFTVHdhdmVsZXRzCQBrAwUJRVRIaW5FQVNUBQhldGhXYXZlcwUCZDgADXB1enpsZVN0YWtpbmcJAQdBZGRyZXNzAQEaAVeUaIz57qK5qp/W9Y68qY9nGpwG9BYpibsADHB1enpsZVN0YWtlZAkBDXRyeUdldEludGVnZXICBQ1wdXp6bGVTdGFraW5nCQCsAgIJAKUIAQUEdGhpcwIHX3N0YWtlZAAQUFVaWkxFaW5XYXZlbGV0cwkAawMFDHB1enpsZVN0YWtlZAULcHV6emxlV2F2ZXMFAmQ4AAlXWHN0YWtpbmcJAQdBZGRyZXNzAQEaAVez5uZVGBFpsOQzD4hRQ6ScrtbVSwNLEVgABWtleVdYAiUlcyVkJXNfX3BhcmFtQnlVc2VyTnVtX18xMzQ0NV9fYW1vdW50AAhXWGFtb3VudAkBDXRyeUdldEludGVnZXICBQlXWHN0YWtpbmcFBWtleVdYAAxXWGluV2F2ZWxldHMJAGsDBQhXWGFtb3VudAUHd3hXYXZlcwUCZDgADHBsdXRvU3Rha2luZwkBB0FkZHJlc3MBARoBVz57Z8SMb25gqNLNj+55nzFOR6iuQxT9sAAJa2V5U3BsdXRvCQCsAgIJAKUIAQUEdGhpcwIHX3NQbHV0bwALcGx1dG9TdGFrZWQJAGsDCQENdHJ5R2V0SW50ZWdlcgIFDHBsdXRvU3Rha2luZwUJa2V5U3BsdXRvCQENdHJ5R2V0SW50ZWdlcgIFDHBsdXRvU3Rha2luZwIVZ2xvYmFsX2xhc3RDaGVja1NSYXRlBQJkOAAPUExVVE9pbldhdmVsZXRzCQBrAwULcGx1dG9TdGFrZWQFCnBsdXRvV2F2ZXMFAmQ4AAp0dmxJbldhdmVzCQBkAgkAZAIJAGQCCQBkAgkAZAIJAGsDCQBoAgULd2F2ZXNJblBvb2wACgUMcHJvamVjdFN0YWtlBQp0b3RhbFN0YWtlCQBrAwkAaAIFEHdhdmVzSW5XaGlybHBvb2wACgURcHJvamVjdFN0YWtlV2hpcmwFD3RvdGFsU3Rha2VXaGlybAURRVRIaW5FQVNUd2F2ZWxldHMFEFBVWlpMRWluV2F2ZWxldHMJAGsDCQBoAgUNd2F2ZXNJblc1cG9vbAAFBRJwcm9qZWN0U3Rha2VXNXBvb2wFEHRvdGFsU3Rha2VXNXBvb2wFDFdYaW5XYXZlbGV0cwAHdG90YWxCVAULV0FWRVNpbkVBU1QADXRvdGFsVHJlYXN1cnkJAGQCBQd0b3RhbEJUBQp0dmxJbldhdmVzAA93aGlybHBvb2xTdXBwbHkEByRtYXRjaDAJAOwHAQUJd2hpcmxwb29sAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAAFcHJpY2UDCQBnAgkAZAIJAGsDCQBkAgUKdHZsSW5XYXZlcwkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQFAmQ4BQ93aGlybHBvb2xTdXBwbHkFAmQ4CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFFmtleVdoaXJscG9vbElzc3VlUHJpY2UJAGQCCQBrAwkAZAIFCnR2bEluV2F2ZXMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQJkOAUPd2hpcmxwb29sU3VwcGx5BQJkOAkBDXRyeUdldEludGVnZXICBQR0aGlzBRZrZXlXaGlybHBvb2xJc3N1ZVByaWNlBwFpARVidXlXSElSTFBPT0x3aXRoV0FWRVMAAwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFXjh3mUco4I87DkcPEVovVg9NviFb/Nt0LBwkAAgECIHNtYXJ0IGNvbnRyYWN0IHVuZGVyIG1haW50ZW5hbmNlBBZXaGlybHBvb2xCYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMFCXdoaXJscG9vbAMJAAACBRZXaGlybHBvb2xCYWxhbmNlQmVmb3JlBRZXaGlybHBvb2xCYWxhbmNlQmVmb3JlBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHc3VycGx1cwkAawMJAGUCBQVwcmljZQUCZDgIBQNwbXQGYW1vdW50BQJkOAQLSXNzdWVBbW91bnQDCQBnAggFA3BtdAZhbW91bnQJAGsDCAUDcG10BmFtb3VudAUCZDgFBXByaWNlCQBrAwgFA3BtdAZhbW91bnQFAmQ4BQVwcmljZQkAAgECMHBsZWFzZSBjb250YWN0IHByb2plY3Qgb3duZXI6IGlzc3VlIGFtb3VudCBlcnJvcgQNY2xlYW5BbW91bnRJbgkAZQIIBQNwbXQGYW1vdW50CQBrAwgFA3BtdAZhbW91bnQAyAEAkE4ECUFtb3VudE91dAkAbgQFEHdoaXJsSW5XaGlybHBvb2wJAGUCCQBoAgUCZDgFAmQ4CQCgAwEJAHYGCQC9AgQJALYCAQUQd2F2ZXNJbldoaXJscG9vbAkAtgIBCQBoAgUCZDgFAmQ4CQC2AgEJAGQCBRB3YXZlc0luV2hpcmxwb29sBQ1jbGVhbkFtb3VudEluBQZIQUxGVVAAEAkAtgIBCQBrAwCgjQYAkE4AoPc2AAQAEAUHQ0VJTElORwkAaAIFAmQ4BQJkOAUERE9XTgMJAGYCCQBpAgUCZDgAFAgFA3BtdAZhbW91bnQJAAIBAhptaW5pbXVtIHBheW1lbnQgMC4wNSBXQVZFUwMJAQIhPQIIBQNwbXQHYXNzZXRJZAUEdW5pdAkAAgECF2F0dGFjaCBXQVZFUyB0b2tlbiBvbmx5BANidXkDCQBmAgUJQW1vdW50T3V0BQtJc3N1ZUFtb3VudAkA/AcECQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAIEc3dhcAkAzAgCBQ93aGlybHBvb2xTdHJpbmcJAMwIAgkAZAIFC0lzc3VlQW1vdW50AAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAgFA3BtdAZhbW91bnQFA25pbAUEdW5pdAMJAAACBQNidXkFA2J1eQQVV2hpcmxwb29sQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFCXdoaXJscG9vbAQRV2hpcmxwb29sRnJvbVN3YXAJAGUCBRVXaGlybHBvb2xCYWxhbmNlQWZ0ZXIFFldoaXJscG9vbEJhbGFuY2VCZWZvcmUJAMwIAgkBB1JlaXNzdWUDBQl3aGlybHBvb2wDCQBnAgULSXNzdWVBbW91bnQFCUFtb3VudE91dAULSXNzdWVBbW91bnQAAAYJAMwIAgMJAGYCBQlBbW91bnRPdXQFC0lzc3VlQW1vdW50CQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFEVdoaXJscG9vbEZyb21Td2FwBQl3aGlybHBvb2wJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULSXNzdWVBbW91bnQFCXdoaXJscG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUWa2V5V2hpcmxwb29sSXNzdWVQcmljZQUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIDCQBmAgUJQW1vdW50T3V0BQtJc3N1ZUFtb3VudAIVcHJpY2UgV0hJUkxQT09ML1dBVkVTAiBXSElSTFBPT0wvV0FWRVMgbWlkIG1hcmtldCBwcmljZQMJAGYCBQlBbW91bnRPdXQFC0lzc3VlQW1vdW50CQBrAwUCZDgIBQNwbXQGYW1vdW50BRFXaGlybHBvb2xGcm9tU3dhcAkAawMFAmQ4CQBoAgUQd2F2ZXNJbldoaXJscG9vbAAJBRB3aGlybEluV2hpcmxwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlXYXZlbGV0c1JlY2VpdmVkAwkAZwIFC0lzc3VlQW1vdW50BQlBbW91bnRPdXQJAGQCCAUDcG10BmFtb3VudAkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlXYXZlbGV0c1JlY2VpdmVkCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFFWtleVdhdmVsZXRzUmVjZWl2ZWRCVAMJAGcCBQtJc3N1ZUFtb3VudAUJQW1vdW50T3V0CQBkAgkAZQIIBQNwbXQGYW1vdW50BQdzdXJwbHVzCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFFWtleVdhdmVsZXRzUmVjZWl2ZWRCVAkBDXRyeUdldEludGVnZXICBQR0aGlzBRVrZXlXYXZlbGV0c1JlY2VpdmVkQlQJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtleVN1cnBsdXNSZWNlaXZlZAMJAGYCBQlBbW91bnRPdXQFC0lzc3VlQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQJAGQCBQdzdXJwbHVzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVwcmljZUFuZFRyZWFzdXJ5U3RhdHMACQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZCVCBXQVZFUyBpbiBFQVNUIHZhdWx0BQtXQVZFU2luRUFTVAkAzAgCCQEMSW50ZWdlckVudHJ5AgIiU1QgQlVSTi1YVE4geCBQZXBlVGVhbSBpbiB3YXZlbGV0cwkAawMJAGgCBQt3YXZlc0luUG9vbAAKBQxwcm9qZWN0U3Rha2UFCnRvdGFsU3Rha2UJAMwIAgkBDEludGVnZXJFbnRyeQICFHRlc3QgcG9vbCB3ZWlnaHQgcHB0CQBrAwkAaQIJAGgCBQt3YXZlc0luUG9vbACQTgkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFEGJ1cm54dG5QUFRwb29sSWQJAKwCAgkArAICAgdzdGF0aWNfCQDYBAEFBXdhdmVzAgdfd2VpZ2h0BQxwcm9qZWN0U3Rha2UFCnRvdGFsU3Rha2UJAMwIAgkBDEludGVnZXJFbnRyeQICHFNUIFdISVJMUE9PTCBBTU0gaW4gd2F2ZWxldHMJAGsDCQBoAgUQd2F2ZXNJbldoaXJscG9vbAAKBRFwcm9qZWN0U3Rha2VXaGlybAUPdG90YWxTdGFrZVdoaXJsCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZ0ZXN0IHBvb2wgd2VpZ2h0IHdoaXJsCQBrAwkAaQIJAGgCBRB3YXZlc0luV2hpcmxwb29sAJBOCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUJd2hpcmxwb29sCQCsAgIJAKwCAgIHc3RhdGljXwkA2AQBBQV3YXZlcwIHX3dlaWdodAURcHJvamVjdFN0YWtlV2hpcmwFD3RvdGFsU3Rha2VXaGlybAkAzAgCCQEMSW50ZWdlckVudHJ5AgIeU1QgV2F2ZXMgNXBvb2wgQU1NIGluIHdhdmVsZXRzCQBrAwkAaAIFDXdhdmVzSW5XNXBvb2wABQUScHJvamVjdFN0YWtlVzVwb29sBRB0b3RhbFN0YWtlVzVwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZ0ZXN0IHBvb2wgd2VpZ2h0IDVwb29sCQBrAwkAaQIJAGgCBQ13YXZlc0luVzVwb29sAJBOCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUMd2F2ZXM1cG9vbElkCQCsAgIJAKwCAgIHc3RhdGljXwkA2AQBBQV3YXZlcwIHX3dlaWdodAUScHJvamVjdFN0YWtlVzVwb29sBRB0b3RhbFN0YWtlVzVwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgdTVCBlRVRIBQlFVEhpbkVBU1QJAMwIAgkBDEludGVnZXJFbnRyeQICE1NUIGVFVEggaW4gd2F2ZWxldHMFEUVUSGluRUFTVHdhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAglTVCBQVVpaTEUFDHB1enpsZVN0YWtlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgIVU1QgUFVaWkxFIGluIHdhdmVsZXRzBRBQVVpaTEVpbldhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhhTVCBXWCBpbiBnV1ggaW4gd2F2ZWxldHMFDFdYaW5XYXZlbGV0cwkAzAgCCQEMSW50ZWdlckVudHJ5AgIPU1QgUExVVE8gc3Rha2VkBQtwbHV0b1N0YWtlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgIUU1QgUExVVE8gaW4gd2F2ZWxldHMFD1BMVVRPaW5XYXZlbGV0cwkAzAgCCQEMSW50ZWdlckVudHJ5AgIUVG90YWwgU1QgaW4gd2F2ZWxldHMFCnR2bEluV2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQIFFmtleVdoaXJscG9vbElzc3VlUHJpY2UFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAiBXSElSTFBPT0wvV0FWRVMgbWlkIG1hcmtldCBwcmljZQkAawMFAmQ4CQBoAgUQd2F2ZXNJbldoaXJscG9vbAAJBRB3aGlybEluV2hpcmxwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhp0ZXN0IHBvb2wgd2VpZ2h0IG1pZCBwcmljZQkAawMFAmQ4CQBpAgkAaAIFEHdhdmVzSW5XaGlybHBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQJAKwCAgkArAICAgdzdGF0aWNfCQDYBAEFCXdoaXJscG9vbAIHX3dlaWdodADoBwUQd2hpcmxJbldoaXJscG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgIWV0hJUkxQT09MIHRvdGFsIHN1cHBseQUPd2hpcmxwb29sU3VwcGx5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAg5Ub3RhbCB0cmVhc3VyeQUNdG90YWxUcmVhc3VyeQkAzAgCCQEMSW50ZWdlckVudHJ5AgINTkFWIFdISVJMUE9PTAkAawMFAmQ4CQBkAgUNdG90YWxUcmVhc3VyeQkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQFD3doaXJscG9vbFN1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgIkYnV5YmFjayZpbnZlc3QgV0hJUkxQT09MIEFNTSA8NSUgTkFWCQBrAwkAawMFAmQ4CQBkAgUNdG90YWxUcmVhc3VyeQkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQFD3doaXJscG9vbFN1cHBseQBfAGQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUTa2V5V2F2ZWxldHNSZWNlaXZlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5U3VycGx1c1JlY2VpdmVkCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVN1cnBsdXNSZWNlaXZlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa2V5V2F2ZWxldHNSZWNlaXZlZEJUCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFFWtleVdhdmVsZXRzUmVjZWl2ZWRCVAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5V2F2ZWxldHNQYWlkT3V0CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdhdmVsZXRzUGFpZE91dAkAzAgCCQEMSW50ZWdlckVudHJ5AgIUdG90YWwgV0FWRVMgcmVjZWl2ZWQJAGkCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQFAmQ4CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhdUb3RhbCB0cmVhc3VyeSBpbiBXQVZFUwkAaQIFDXRvdGFsVHJlYXN1cnkFAmQ4CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhlzdXJwbHVzIHJlY2VpdmVkIGluIFdBVkVTCQBpAgkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlTdXJwbHVzUmVjZWl2ZWQFAmQ4CQDMCAIJAQxJbnRlZ2VyRW50cnkCAiZ0b3RhbCBXQVZFUyByZWNlaXZlZCBmb3IgYmFzZSB0cmVhc3VyeQkAaQIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUVa2V5V2F2ZWxldHNSZWNlaXZlZEJUBQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgIddG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gV0FWRVMJAGkCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdhdmVsZXRzUGFpZE91dAUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQIFBmtleVJPSQkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0AJBOCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQFA25pbAFpAQxib29zdFBvb2xBUFkBBmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEC2Ftb3VudEJvb3N0CQBrAwkAaAIFBmFtb3VudAUCZDgAUABkAwkAAAIFC2Ftb3VudEJvb3N0BQthbW91bnRCb29zdAQHdG9XaGlybAkAawMFC2Ftb3VudEJvb3N0BRB3aGlybEluV2hpcmxwb29sBQp0b3RhbFdoaXJsAwkAAAIFB3RvV2hpcmwFB3RvV2hpcmwEBXRvQkJCCQBrAwULYW1vdW50Qm9vc3QFCndoaXJsSW5CQkIFCnRvdGFsV2hpcmwDCQAAAgUFdG9CQkIFBXRvQkJCBAthbW91bnRPd25lcgkAawMJAGgCBQZhbW91bnQFAmQ4ABQAZAMJAAACBQthbW91bnRPd25lcgULYW1vdW50T3duZXIEBmJvb3N0VwkA/AcECQEHQWRkcmVzcwEFC3Bvb2xib29zdFNDAgthZGRCb29zdGluZwkAzAgCCQDYBAEFD3doaXJscG9vbFBvb2xJZAkAzAgCAAcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUHdG9XaGlybAUDbmlsAwkAAAIFBmJvb3N0VwUGYm9vc3RXBAhib29zdEJCQgkA/AcECQEHQWRkcmVzcwEFC3Bvb2xib29zdFNDAgthZGRCb29zdGluZwkAzAgCCQDYBAEFCWJiYlBvb2xJZAkAzAgCAAcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUFdG9CQkIFA25pbAMJAAACBQhib29zdEJCQgUIYm9vc3RCQkIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQxwcm9qZWN0T3duZXIFC2Ftb3VudE93bmVyBQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlXYXZlbGV0c1BhaWRPdXQJAGQCBQthbW91bnRCb29zdAkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlXYXZlbGV0c1BhaWRPdXQJAMwIAgkBDEludGVnZXJFbnRyeQIFBmtleVJPSQkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0AJBOCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtleUFjdGl2YXRlZAUGaGVpZ2h0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPdHJhbnNmZXJQb29sQVBZAQZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBAthbW91bnRCb29zdAkAawMJAGgCBQZhbW91bnQFAmQ4AFAAZAMJAAACBQthbW91bnRCb29zdAULYW1vdW50Qm9vc3QEB3RvV2hpcmwJAGsDBQthbW91bnRCb29zdAUQd2hpcmxJbldoaXJscG9vbAUKdG90YWxXaGlybAMJAAACBQd0b1doaXJsBQd0b1doaXJsBAV0b0JCQgkAawMFC2Ftb3VudEJvb3N0BQp3aGlybEluQkJCBQp0b3RhbFdoaXJsAwkAAAIFBXRvQkJCBQV0b0JCQgQLYW1vdW50T3duZXIJAGsDCQBoAgUGYW1vdW50BQJkOAAUAGQDCQAAAgULYW1vdW50T3duZXIFC2Ftb3VudE93bmVyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkBQd0b1doaXJsBQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUJYmJiUG9vbElkBQV0b0JCQgUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFDHByb2plY3RPd25lcgULYW1vdW50T3duZXIFBHVuaXQJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtleVdhdmVsZXRzUGFpZE91dAkAZAIFC2Ftb3VudEJvb3N0CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdhdmVsZXRzUGFpZE91dAkAzAgCCQEMSW50ZWdlckVudHJ5AgUGa2V5Uk9JCQBrAwkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlXYXZlbGV0c1BhaWRPdXQAkE4JAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUTa2V5V2F2ZWxldHNSZWNlaXZlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMa2V5QWN0aXZhdGVkBQZoZWlnaHQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9zdXJwbHVzSW52ZXN0ZWQBC2Ftb3VudFdBVkVTAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQOaW52ZXN0ZWRBbW91bnQJAGgCBQthbW91bnRXQVZFUwUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtleVN1cnBsdXNSZWNlaXZlZAkAZQIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5U3VycGx1c1JlY2VpdmVkBQ5pbnZlc3RlZEFtb3VudAUDbmlsAWkBCHdpdGhkcmF3AAMJAQIhPQIIBQFpBmNhbGxlcgkBB0FkZHJlc3MBARoBVxiJGyRtL+JEpbK5LtBkI1AuKd9yMNoyWQkAAgECCW5vIGFjY2VzcwQId2l0aGRyYXcJAPwHBAkBB0FkZHJlc3MBARoBV3US3ZOCD1veJXYVOctJ1R9TKAnE6HFeJwIVd2l0aGRyYXdWZXN0ZWRBbGxVU0ROCQDMCAIHCQDMCAIGBQNuaWwFA25pbAMJAAACBQh3aXRoZHJhdwUId2l0aGRyYXcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQR0ZXN0AAkAzAgCCQEMSW50ZWdlckVudHJ5AgILcGx1dG8gaW4gV1gFCXBsdXRvSW5XWAkAzAgCCQEMSW50ZWdlckVudHJ5AgILd2F2ZXMgaW4gd3gFCndhdmVzNUluV1gJAMwIAgkBDEludGVnZXJFbnRyeQICC3BsdXRvL3dhdmVzBQpwbHV0b1dhdmVzCQDMCAIJAQtTdHJpbmdFbnRyeQICCGtlU3BsdXRvBQlrZXlTcGx1dG8JAMwIAgkBDEludGVnZXJFbnRyeQICBnNQTFVUTwkBEUBleHRyTmF0aXZlKDEwNTApAgUMcGx1dG9TdGFraW5nBQlrZXlTcGx1dG8JAMwIAgkBDEludGVnZXJFbnRyeQICC3NSYXRlIHBsdXRvCQERQGV4dHJOYXRpdmUoMTA1MCkCBQxwbHV0b1N0YWtpbmcCFWdsb2JhbF9sYXN0Q2hlY2tTUmF0ZQUDbmlsAQJ0eAEGdmVyaWZ5AAMJAMUTAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkGAwkAZgIJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQxrZXlBY3RpdmF0ZWQFC3VubG9ja0Jsb2NrBQZoZWlnaHQHAwkAxRMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUKaGVpclB1YktleQYDCQBmAgkAZAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDGtleUFjdGl2YXRlZAUMdW5sb2NrQmxvY2syBQZoZWlnaHQHCQDFEwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABRJQdXp6bGVNYXN0ZXJQdWJLZXl1ppD2", "height": 4123752, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CAi4jt8BzTpew7cSQuw7imfYjLXy8BL9eyGhyUbmFeKq Next: 5ADjStigtQcpvshxg586vra65EUhXudxq1uSwRy6M5as Diff:
Old | New | Differences | |
---|---|---|---|
185 | 185 | ||
186 | 186 | let WXinWavelets = fraction(WXamount, wxWaves, d8) | |
187 | 187 | ||
188 | - | let plutoStaking = Address(base58' | |
188 | + | let plutoStaking = Address(base58'3P7dGTVZp8VLDYy3XEaUQbiqfi9cMK1Ly5q') | |
189 | 189 | ||
190 | 190 | let keySpluto = (toString(this) + "_sPluto") | |
191 | 191 | ||
354 | 354 | ||
355 | 355 | ||
356 | 356 | @Callable(i) | |
357 | - | func test () = [IntegerEntry("pluto in WX", plutoInWX), IntegerEntry("waves in wx", waves5InWX), IntegerEntry("pluto/waves", plutoWaves), StringEntry("keSpluto", keySpluto), IntegerEntry("sPLUTO", | |
357 | + | func test () = [IntegerEntry("pluto in WX", plutoInWX), IntegerEntry("waves in wx", waves5InWX), IntegerEntry("pluto/waves", plutoWaves), StringEntry("keSpluto", keySpluto), IntegerEntry("sPLUTO", getIntegerValue(plutoStaking, keySpluto)), IntegerEntry("sRate pluto", getIntegerValue(plutoStaking, "global_lastCheckSRate"))] | |
358 | 358 | ||
359 | 359 | ||
360 | 360 | @Verifier(tx) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func tryGetInteger (address,key) = match getInteger(address, key) { | |
5 | 5 | case b: Int => | |
6 | 6 | b | |
7 | 7 | case _ => | |
8 | 8 | 0 | |
9 | 9 | } | |
10 | 10 | ||
11 | 11 | ||
12 | 12 | func tryGetString (address,key) = match getString(address, key) { | |
13 | 13 | case b: String => | |
14 | 14 | b | |
15 | 15 | case _ => | |
16 | 16 | "" | |
17 | 17 | } | |
18 | 18 | ||
19 | 19 | ||
20 | 20 | let d8 = 100000000 | |
21 | 21 | ||
22 | 22 | let unlockBlock = (30 * 1440) | |
23 | 23 | ||
24 | 24 | let heirPubKey = base58'2kpmuzw1ZbrtgAN3BrR7vbEW1XrJoJKCstL7mf7XNf2P' | |
25 | 25 | ||
26 | 26 | let unlockBlock2 = (90 * 1440) | |
27 | 27 | ||
28 | 28 | let PuzzleMasterPubKey = base58'4z8CKSYQBKkzx7PBb5uBP1YPa6YAHRNTApW1sQVHT5eU' | |
29 | 29 | ||
30 | 30 | let keyActivated = "Activated blockheight" | |
31 | 31 | ||
32 | 32 | let keySurplusReceived = "surplus received in wavelets" | |
33 | 33 | ||
34 | 34 | let keyWaveletsReceived = "total WAVES received in wavelets" | |
35 | 35 | ||
36 | 36 | let keyWaveletsReceivedBT = "total wavelets received for base treasury" | |
37 | 37 | ||
38 | 38 | let keyWaveletsPaidOut = "total WAVES paid out in wavelets" | |
39 | 39 | ||
40 | 40 | let keyROI = "ROI basis points" | |
41 | 41 | ||
42 | 42 | let keyWhirlpoolIssuePrice = "WHIRLPOOL issue price in wavelets" | |
43 | 43 | ||
44 | 44 | let burnxtnPPTpoolId = base58'3PQHndCUVrv3wBuQjbvVP9SnGmfbfitGxfx' | |
45 | 45 | ||
46 | 46 | let projectOwner = base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk' | |
47 | 47 | ||
48 | 48 | let whirlpoolPoolId = base58'3P2myTbd5zpEHcYmNpdWTp5gXS5B8tL1RCY' | |
49 | 49 | ||
50 | 50 | let bbbPoolId = base58'3P9VPwVfNj3dDevQZt1Z951A4K57cmQmCgk' | |
51 | 51 | ||
52 | 52 | let waves5poolId = base58'3PCpjLGo4wDuv23kjmGF6mHs86Bf3soYvAq' | |
53 | 53 | ||
54 | 54 | let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi' | |
55 | 55 | ||
56 | 56 | let whirlpoolString = toBase58String(base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi') | |
57 | 57 | ||
58 | 58 | let waves = base58'WAVES' | |
59 | 59 | ||
60 | 60 | let eth = base58'3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13' | |
61 | 61 | ||
62 | 62 | let swaves = base58'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7' | |
63 | 63 | ||
64 | 64 | let puzzle = base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS' | |
65 | 65 | ||
66 | 66 | let wx = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' | |
67 | 67 | ||
68 | 68 | let pluto = base58'Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5' | |
69 | 69 | ||
70 | 70 | let poolboostSC = base58'3P8eeDzUnoDNbQjW617pAe76cEUDQsP1m1V' | |
71 | 71 | ||
72 | 72 | let SWAVES_stake = Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV') | |
73 | 73 | ||
74 | 74 | let WX_ETH_WAVES = Address(base58'3P2yiVnK48evTLr8MAZWavpE4WA4fw1weQg') | |
75 | 75 | ||
76 | 76 | let WX_PUZZLE_WAVES = Address(base58'3PQaYm4pbRVrNTTnL8pDJZTxhcmD4jRskrz') | |
77 | 77 | ||
78 | 78 | let WX_WX_WAVES = Address(base58'3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh') | |
79 | 79 | ||
80 | 80 | let WX_PLUTO_WAVES = Address(base58'3P6ZipK8ydb4qHmufCquh98g9KW6EwaeJfk') | |
81 | 81 | ||
82 | 82 | let wavesInPool = tryGetInteger(Address(burnxtnPPTpoolId), (("global_" + toBase58String(waves)) + "_balance")) | |
83 | 83 | ||
84 | 84 | let projectStake = tryGetInteger(Address(burnxtnPPTpoolId), (toString(this) + "_indexStaked")) | |
85 | 85 | ||
86 | 86 | let totalStake = tryGetInteger(Address(burnxtnPPTpoolId), "global_poolToken_amount") | |
87 | 87 | ||
88 | 88 | func _loadInt (key_,default_) = match getInteger(SWAVES_stake, key_) { | |
89 | 89 | case a: Int => | |
90 | 90 | a | |
91 | 91 | case _ => | |
92 | 92 | default_ | |
93 | 93 | } | |
94 | 94 | ||
95 | 95 | ||
96 | 96 | func _loadBigInt (key_,default_) = match getBinary(SWAVES_stake, key_) { | |
97 | 97 | case a: ByteVector => | |
98 | 98 | toBigInt(a) | |
99 | 99 | case _ => | |
100 | 100 | default_ | |
101 | 101 | } | |
102 | 102 | ||
103 | 103 | ||
104 | 104 | let lastRate = _loadBigInt("LAST_RATE", toBigInt(1000000000000)) | |
105 | 105 | ||
106 | 106 | let currentRate = _loadBigInt("CURRENT_RATE", toBigInt(0)) | |
107 | 107 | ||
108 | 108 | let lastHeight = _loadInt("LAST_HEIGHT", 0) | |
109 | 109 | ||
110 | 110 | let targetHeight = min([_loadInt("TARGET_HEIGHT", 0), height]) | |
111 | 111 | ||
112 | 112 | let lastRateUpdated = (lastRate + (currentRate * toBigInt((targetHeight - lastHeight)))) | |
113 | 113 | ||
114 | 114 | let baseAmount2 = toInt(fraction(toBigInt(assetBalance(WX_ETH_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR)) | |
115 | 115 | ||
116 | 116 | let baseAmount3 = toInt(fraction(toBigInt(assetBalance(WX_PUZZLE_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR)) | |
117 | 117 | ||
118 | 118 | let baseAmount4 = toInt(fraction(toBigInt(assetBalance(WX_WX_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR)) | |
119 | 119 | ||
120 | 120 | let baseAmount5 = toInt(fraction(toBigInt(assetBalance(WX_PLUTO_WAVES, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR)) | |
121 | 121 | ||
122 | 122 | let waves2InWX = (wavesBalance(WX_ETH_WAVES).regular + baseAmount2) | |
123 | 123 | ||
124 | 124 | let ethInWX = assetBalance(WX_ETH_WAVES, eth) | |
125 | 125 | ||
126 | 126 | let ethWaves = fraction(d8, waves2InWX, ethInWX) | |
127 | 127 | ||
128 | 128 | let puzzleInWX = assetBalance(WX_PUZZLE_WAVES, puzzle) | |
129 | 129 | ||
130 | 130 | let waves3InWX = (wavesBalance(WX_PUZZLE_WAVES).regular + baseAmount3) | |
131 | 131 | ||
132 | 132 | let puzzleWaves = fraction(d8, waves3InWX, puzzleInWX) | |
133 | 133 | ||
134 | 134 | let wxInWX = assetBalance(WX_WX_WAVES, wx) | |
135 | 135 | ||
136 | 136 | let waves4InWX = (wavesBalance(WX_WX_WAVES).regular + baseAmount4) | |
137 | 137 | ||
138 | 138 | let wxWaves = fraction(d8, waves4InWX, wxInWX) | |
139 | 139 | ||
140 | 140 | let plutoInWX = assetBalance(WX_PLUTO_WAVES, pluto) | |
141 | 141 | ||
142 | 142 | let waves5InWX = (wavesBalance(WX_PLUTO_WAVES).regular + baseAmount5) | |
143 | 143 | ||
144 | 144 | let plutoWaves = fraction(d8, waves5InWX, plutoInWX) | |
145 | 145 | ||
146 | 146 | let wavesInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + toBase58String(waves)) + "_balance")) | |
147 | 147 | ||
148 | 148 | let whirlInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + whirlpoolString) + "_balance")) | |
149 | 149 | ||
150 | 150 | let projectStakeWhirl = tryGetInteger(Address(whirlpoolPoolId), (toString(this) + "_indexStaked")) | |
151 | 151 | ||
152 | 152 | let totalStakeWhirl = tryGetInteger(Address(whirlpoolPoolId), "global_poolToken_amount") | |
153 | 153 | ||
154 | 154 | let whirlInBBB = tryGetInteger(Address(bbbPoolId), (("global_" + whirlpoolString) + "_balance")) | |
155 | 155 | ||
156 | 156 | let totalWhirl = (whirlInWhirlpool + whirlInBBB) | |
157 | 157 | ||
158 | 158 | let wavesInW5pool = tryGetInteger(Address(waves5poolId), (("global_" + toBase58String(waves)) + "_balance")) | |
159 | 159 | ||
160 | 160 | let projectStakeW5pool = tryGetInteger(Address(waves5poolId), (toString(this) + "_indexStaked")) | |
161 | 161 | ||
162 | 162 | let totalStakeW5pool = tryGetInteger(Address(waves5poolId), "global_poolToken_amount") | |
163 | 163 | ||
164 | 164 | let keyVaultAsset = tryGetString(Address(base58'3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb'), (("%s%s%s__vault__" + toString(this)) + "__WAVES")) | |
165 | 165 | ||
166 | 166 | let WAVESinEAST = parseIntValue(split(keyVaultAsset, "__")[2]) | |
167 | 167 | ||
168 | 168 | let keyVaultAsset2 = tryGetString(Address(base58'3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb'), (("%s%s%s__vault__" + toString(this)) + "__3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13")) | |
169 | 169 | ||
170 | 170 | let ETHinEAST = parseIntValue(split(keyVaultAsset2, "__")[2]) | |
171 | 171 | ||
172 | 172 | let ETHinEASTwavelets = fraction(ETHinEAST, ethWaves, d8) | |
173 | 173 | ||
174 | 174 | let puzzleStaking = Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS') | |
175 | 175 | ||
176 | 176 | let puzzleStaked = tryGetInteger(puzzleStaking, (toString(this) + "_staked")) | |
177 | 177 | ||
178 | 178 | let PUZZLEinWavelets = fraction(puzzleStaked, puzzleWaves, d8) | |
179 | 179 | ||
180 | 180 | let WXstaking = Address(base58'3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP') | |
181 | 181 | ||
182 | 182 | let keyWX = "%s%d%s__paramByUserNum__13445__amount" | |
183 | 183 | ||
184 | 184 | let WXamount = tryGetInteger(WXstaking, keyWX) | |
185 | 185 | ||
186 | 186 | let WXinWavelets = fraction(WXamount, wxWaves, d8) | |
187 | 187 | ||
188 | - | let plutoStaking = Address(base58' | |
188 | + | let plutoStaking = Address(base58'3P7dGTVZp8VLDYy3XEaUQbiqfi9cMK1Ly5q') | |
189 | 189 | ||
190 | 190 | let keySpluto = (toString(this) + "_sPluto") | |
191 | 191 | ||
192 | 192 | let plutoStaked = fraction(tryGetInteger(plutoStaking, keySpluto), tryGetInteger(plutoStaking, "global_lastCheckSRate"), d8) | |
193 | 193 | ||
194 | 194 | let PLUTOinWavelets = fraction(plutoStaked, plutoWaves, d8) | |
195 | 195 | ||
196 | 196 | let tvlInWaves = (((((fraction((wavesInPool * 10), projectStake, totalStake) + fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)) + ETHinEASTwavelets) + PUZZLEinWavelets) + fraction((wavesInW5pool * 5), projectStakeW5pool, totalStakeW5pool)) + WXinWavelets) | |
197 | 197 | ||
198 | 198 | let totalBT = WAVESinEAST | |
199 | 199 | ||
200 | 200 | let totalTreasury = (totalBT + tvlInWaves) | |
201 | 201 | ||
202 | 202 | let whirlpoolSupply = match assetInfo(whirlpool) { | |
203 | 203 | case asset: Asset => | |
204 | 204 | asset.quantity | |
205 | 205 | case _ => | |
206 | 206 | throw("Can't find asset") | |
207 | 207 | } | |
208 | 208 | ||
209 | 209 | let price = if (((fraction((tvlInWaves + tryGetInteger(this, keySurplusReceived)), d8, whirlpoolSupply) + d8) >= tryGetInteger(this, keyWhirlpoolIssuePrice))) | |
210 | 210 | then (fraction((tvlInWaves + tryGetInteger(this, keySurplusReceived)), d8, whirlpoolSupply) + d8) | |
211 | 211 | else tryGetInteger(this, keyWhirlpoolIssuePrice) | |
212 | 212 | ||
213 | 213 | @Callable(i) | |
214 | 214 | func buyWHIRLPOOLwithWAVES () = if (if ((i.caller != this)) | |
215 | 215 | then (i.caller != Address(base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk')) | |
216 | 216 | else false) | |
217 | 217 | then throw("smart contract under maintenance") | |
218 | 218 | else { | |
219 | 219 | let WhirlpoolBalanceBefore = assetBalance(this, whirlpool) | |
220 | 220 | if ((WhirlpoolBalanceBefore == WhirlpoolBalanceBefore)) | |
221 | 221 | then { | |
222 | 222 | let pmt = value(i.payments[0]) | |
223 | 223 | let surplus = fraction((price - d8), pmt.amount, d8) | |
224 | 224 | let IssueAmount = if ((pmt.amount >= fraction(pmt.amount, d8, price))) | |
225 | 225 | then fraction(pmt.amount, d8, price) | |
226 | 226 | else throw("please contact project owner: issue amount error") | |
227 | 227 | let cleanAmountIn = (pmt.amount - fraction(pmt.amount, 200, 10000)) | |
228 | 228 | 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) | |
229 | 229 | if (((d8 / 20) > pmt.amount)) | |
230 | 230 | then throw("minimum payment 0.05 WAVES") | |
231 | 231 | else if ((pmt.assetId != unit)) | |
232 | 232 | then throw("attach WAVES token only") | |
233 | 233 | else { | |
234 | 234 | let buy = if ((AmountOut > IssueAmount)) | |
235 | 235 | then invoke(Address(whirlpoolPoolId), "swap", [whirlpoolString, (IssueAmount + 1)], [AttachedPayment(unit, pmt.amount)]) | |
236 | 236 | else unit | |
237 | 237 | if ((buy == buy)) | |
238 | 238 | then { | |
239 | 239 | let WhirlpoolBalanceAfter = assetBalance(this, whirlpool) | |
240 | 240 | let WhirlpoolFromSwap = (WhirlpoolBalanceAfter - WhirlpoolBalanceBefore) | |
241 | 241 | [Reissue(whirlpool, if ((IssueAmount >= AmountOut)) | |
242 | 242 | then IssueAmount | |
243 | 243 | else 0, true), if ((AmountOut > IssueAmount)) | |
244 | 244 | then ScriptTransfer(i.caller, WhirlpoolFromSwap, whirlpool) | |
245 | 245 | else ScriptTransfer(i.caller, IssueAmount, whirlpool), IntegerEntry(keyWhirlpoolIssuePrice, price), IntegerEntry(if ((AmountOut > IssueAmount)) | |
246 | 246 | then "price WHIRLPOOL/WAVES" | |
247 | 247 | else "WHIRLPOOL/WAVES mid market price", if ((AmountOut > IssueAmount)) | |
248 | 248 | then fraction(d8, pmt.amount, WhirlpoolFromSwap) | |
249 | 249 | else fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry(keyWaveletsReceived, if ((IssueAmount >= AmountOut)) | |
250 | 250 | then (pmt.amount + tryGetInteger(this, keyWaveletsReceived)) | |
251 | 251 | else tryGetInteger(this, keyWaveletsReceived)), IntegerEntry(keyWaveletsReceivedBT, if ((IssueAmount >= AmountOut)) | |
252 | 252 | then ((pmt.amount - surplus) + tryGetInteger(this, keyWaveletsReceivedBT)) | |
253 | 253 | else tryGetInteger(this, keyWaveletsReceivedBT)), IntegerEntry(keySurplusReceived, if ((AmountOut > IssueAmount)) | |
254 | 254 | then getIntegerValue(this, keySurplusReceived) | |
255 | 255 | else (surplus + getIntegerValue(this, keySurplusReceived)))] | |
256 | 256 | } | |
257 | 257 | else throw("Strict value is not equal to itself.") | |
258 | 258 | } | |
259 | 259 | } | |
260 | 260 | else throw("Strict value is not equal to itself.") | |
261 | 261 | } | |
262 | 262 | ||
263 | 263 | ||
264 | 264 | ||
265 | 265 | @Callable(i) | |
266 | 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)))] | |
267 | 267 | ||
268 | 268 | ||
269 | 269 | ||
270 | 270 | @Callable(i) | |
271 | 271 | func boostPoolAPY (amount) = if ((i.caller != this)) | |
272 | 272 | then throw("access only by project owner") | |
273 | 273 | else { | |
274 | 274 | let amountBoost = fraction((amount * d8), 80, 100) | |
275 | 275 | if ((amountBoost == amountBoost)) | |
276 | 276 | then { | |
277 | 277 | let toWhirl = fraction(amountBoost, whirlInWhirlpool, totalWhirl) | |
278 | 278 | if ((toWhirl == toWhirl)) | |
279 | 279 | then { | |
280 | 280 | let toBBB = fraction(amountBoost, whirlInBBB, totalWhirl) | |
281 | 281 | if ((toBBB == toBBB)) | |
282 | 282 | then { | |
283 | 283 | let amountOwner = fraction((amount * d8), 20, 100) | |
284 | 284 | if ((amountOwner == amountOwner)) | |
285 | 285 | then { | |
286 | 286 | let boostW = invoke(Address(poolboostSC), "addBoosting", [toBase58String(whirlpoolPoolId), 7], [AttachedPayment(unit, toWhirl)]) | |
287 | 287 | if ((boostW == boostW)) | |
288 | 288 | then { | |
289 | 289 | let boostBBB = invoke(Address(poolboostSC), "addBoosting", [toBase58String(bbbPoolId), 7], [AttachedPayment(unit, toBBB)]) | |
290 | 290 | if ((boostBBB == boostBBB)) | |
291 | 291 | 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)] | |
292 | 292 | else throw("Strict value is not equal to itself.") | |
293 | 293 | } | |
294 | 294 | else throw("Strict value is not equal to itself.") | |
295 | 295 | } | |
296 | 296 | else throw("Strict value is not equal to itself.") | |
297 | 297 | } | |
298 | 298 | else throw("Strict value is not equal to itself.") | |
299 | 299 | } | |
300 | 300 | else throw("Strict value is not equal to itself.") | |
301 | 301 | } | |
302 | 302 | else throw("Strict value is not equal to itself.") | |
303 | 303 | } | |
304 | 304 | ||
305 | 305 | ||
306 | 306 | ||
307 | 307 | @Callable(i) | |
308 | 308 | func transferPoolAPY (amount) = if ((i.caller != this)) | |
309 | 309 | then throw("access only by project owner") | |
310 | 310 | else { | |
311 | 311 | let amountBoost = fraction((amount * d8), 80, 100) | |
312 | 312 | if ((amountBoost == amountBoost)) | |
313 | 313 | then { | |
314 | 314 | let toWhirl = fraction(amountBoost, whirlInWhirlpool, totalWhirl) | |
315 | 315 | if ((toWhirl == toWhirl)) | |
316 | 316 | then { | |
317 | 317 | let toBBB = fraction(amountBoost, whirlInBBB, totalWhirl) | |
318 | 318 | if ((toBBB == toBBB)) | |
319 | 319 | then { | |
320 | 320 | let amountOwner = fraction((amount * d8), 20, 100) | |
321 | 321 | if ((amountOwner == amountOwner)) | |
322 | 322 | 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)] | |
323 | 323 | else throw("Strict value is not equal to itself.") | |
324 | 324 | } | |
325 | 325 | else throw("Strict value is not equal to itself.") | |
326 | 326 | } | |
327 | 327 | else throw("Strict value is not equal to itself.") | |
328 | 328 | } | |
329 | 329 | else throw("Strict value is not equal to itself.") | |
330 | 330 | } | |
331 | 331 | ||
332 | 332 | ||
333 | 333 | ||
334 | 334 | @Callable(i) | |
335 | 335 | func surplusInvested (amountWAVES) = if ((i.caller != this)) | |
336 | 336 | then throw("access only by project owner") | |
337 | 337 | else { | |
338 | 338 | let investedAmount = (amountWAVES * d8) | |
339 | 339 | [IntegerEntry(keySurplusReceived, (tryGetInteger(this, keySurplusReceived) - investedAmount))] | |
340 | 340 | } | |
341 | 341 | ||
342 | 342 | ||
343 | 343 | ||
344 | 344 | @Callable(i) | |
345 | 345 | func withdraw () = if ((i.caller != Address(base58'3P4AdC9J6MzTEi2LL9xgQN8EimMnbk4d6Nt'))) | |
346 | 346 | then throw("no access") | |
347 | 347 | else { | |
348 | 348 | let withdraw = invoke(Address(base58'3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk'), "withdrawVestedAllUSDN", [false, true], nil) | |
349 | 349 | if ((withdraw == withdraw)) | |
350 | 350 | then nil | |
351 | 351 | else throw("Strict value is not equal to itself.") | |
352 | 352 | } | |
353 | 353 | ||
354 | 354 | ||
355 | 355 | ||
356 | 356 | @Callable(i) | |
357 | - | func test () = [IntegerEntry("pluto in WX", plutoInWX), IntegerEntry("waves in wx", waves5InWX), IntegerEntry("pluto/waves", plutoWaves), StringEntry("keSpluto", keySpluto), IntegerEntry("sPLUTO", | |
357 | + | func test () = [IntegerEntry("pluto in WX", plutoInWX), IntegerEntry("waves in wx", waves5InWX), IntegerEntry("pluto/waves", plutoWaves), StringEntry("keSpluto", keySpluto), IntegerEntry("sPLUTO", getIntegerValue(plutoStaking, keySpluto)), IntegerEntry("sRate pluto", getIntegerValue(plutoStaking, "global_lastCheckSRate"))] | |
358 | 358 | ||
359 | 359 | ||
360 | 360 | @Verifier(tx) | |
361 | 361 | func verify () = if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) | |
362 | 362 | then true | |
363 | 363 | else if (((getIntegerValue(this, keyActivated) + unlockBlock) > height)) | |
364 | 364 | then false | |
365 | 365 | else if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], heirPubKey)) | |
366 | 366 | then true | |
367 | 367 | else if (((getIntegerValue(this, keyActivated) + unlockBlock2) > height)) | |
368 | 368 | then false | |
369 | 369 | else sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], PuzzleMasterPubKey) | |
370 | 370 |
github/deemru/w8io/6500d08 68.82 ms ◑