tx · HurA397CWQ22bVAdDRbvX74Gh67BzVnm2KowNrwQVLUi 3N3y7nQfqDc7rBUExjKQi5ZbspWRh9q8PYH: -0.01800000 Waves 2023.11.22 11:57 [2854392] smart account 3N3y7nQfqDc7rBUExjKQi5ZbspWRh9q8PYH > SELF 0.00000000 Waves
{ "type": 13, "id": "HurA397CWQ22bVAdDRbvX74Gh67BzVnm2KowNrwQVLUi", "fee": 1800000, "feeAssetId": null, "timestamp": 1700643452135, "version": 2, "chainId": 84, "sender": "3N3y7nQfqDc7rBUExjKQi5ZbspWRh9q8PYH", "senderPublicKey": "9ggtmbyecVRfUY2zeZhNaoLBp2iymhnQhffXQhemTJaG", "proofs": [ "565eE7mS3UEpFud9bdQ7PAJAqeE2KGPVzLfc1PvqQitz1RNX1XB9BtC6BPhvzQZAjq68XXm9uXaFw54dRFZzNKWG" ], "script": "base64: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UFBUcG9vbElkCQCsAgIJAKUIAQUEdGhpcwIMX2luZGV4U3Rha2VkAAp0b3RhbFN0YWtlCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUQYnVybnh0blBQVHBvb2xJZAIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQBCFBMX3ZhbHVlAgtkQXBwQWRkcmVzcwVhc3NldAkAawMJAQ10cnlHZXRJbnRlZ2VyAgULZEFwcEFkZHJlc3MJAKwCAgkArAICCQClCAEFBHRoaXMCCl9zdXBwbGllZF8JANgEAQUFYXNzZXQJAQ10cnlHZXRJbnRlZ2VyAgULZEFwcEFkZHJlc3MJAKwCAgkA2AQBBQVhc3NldAIGX3NSYXRlBQNkMTYBCF9sb2FkSW50AgRrZXlfCGRlZmF1bHRfBAckbWF0Y2gwCQCaCAIFDFNXQVZFU19zdGFrZQUEa2V5XwMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEFCGRlZmF1bHRfAQtfbG9hZEJpZ0ludAIEa2V5XwhkZWZhdWx0XwQHJG1hdGNoMAkAnAgCBQxTV0FWRVNfc3Rha2UFBGtleV8DCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYQUHJG1hdGNoMAkAngMBBQFhBQhkZWZhdWx0XwAIbGFzdFJhdGUJAQtfbG9hZEJpZ0ludAICCUxBU1RfUkFURQkAtgIBAICglKWNHQALY3VycmVudFJhdGUJAQtfbG9hZEJpZ0ludAICDENVUlJFTlRfUkFURQkAtgIBAAAACmxhc3RIZWlnaHQJAQhfbG9hZEludAICC0xBU1RfSEVJR0hUAAAADHRhcmdldEhlaWdodAkAlwMBCQDMCAIJAQhfbG9hZEludAICDVRBUkdFVF9IRUlHSFQAAAkAzAgCBQZoZWlnaHQFA25pbAAPbGFzdFJhdGVVcGRhdGVkCQC3AgIFCGxhc3RSYXRlCQC5AgIFC2N1cnJlbnRSYXRlCQC2AgEJAGUCBQx0YXJnZXRIZWlnaHQFCmxhc3RIZWlnaHQACmJhc2VBbW91bnQJAKADAQkAvQIECQC2AgEJAPAHAgUNV1hfV0FWRVNfRUFTVAUGc3dhdmVzBQ9sYXN0UmF0ZVVwZGF0ZWQJALYCAQCAoJSljR0FBUZMT09SAAl3YXZlc0luV1gJAGQCCAkA7wcBBQ1XWF9XQVZFU19FQVNUB3JlZ3VsYXIFCmJhc2VBbW91bnQACGVhc3RJbldYCQDwBwIFDVdYX1dBVkVTX0VBU1QFBGVhc3QACXdhdmVzRWFzdAkAawMJAGgCBQJkOABkBQhlYXN0SW5XWAUJd2F2ZXNJbldYABB3YXZlc0luV2hpcmxwb29sCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkCQCsAgIJAKwCAgIHZ2xvYmFsXwkA2AQBBQV3YXZlcwIIX2JhbGFuY2UAEHdoaXJsSW5XaGlybHBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQJAKwCAgkArAICAgdnbG9iYWxfBQ93aGlybHBvb2xTdHJpbmcCCF9iYWxhbmNlABFwcm9qZWN0U3Rha2VXaGlybAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAkArAICCQClCAEFBHRoaXMCDF9pbmRleFN0YWtlZAAPdG90YWxTdGFrZVdoaXJsCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkAhdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAANc3RFYXN0SW5XYXZlcwkAaAIJAGsDCQBpAgkAbgQJAPAHAgUEdGhpcwUGc3RlYXN0CQENdHJ5R2V0SW50ZWdlcgIFCkVBU1Rfc3Rha2UCCCVzX19yYXRlAICglKWNHQUISEFMRkVWRU4AZAUCZDgFCXdhdmVzRWFzdABkAA1lYXN0SW5TdGFraW5nCQBpAgkAbgQJAPAHAgUEdGhpcwUGc3RlYXN0CQENdHJ5R2V0SW50ZWdlcgIFCkVBU1Rfc3Rha2UCCCVzX19yYXRlAICglKWNHQUISEFMRkVWRU4AZAANa2V5VmF1bHRBc3NldAkBDHRyeUdldFN0cmluZwIJAQdBZGRyZXNzAQEaAVfa4655+8r5z+MDNCERUZp23XhlXEZbchgCOSVzJXMlc19fdmF1bHRfXzNQQWttSm5pTWdubkFlajVwWWYyakZZa0NiWm93NXB0OXRyX19XQVZFUwALV0FWRVNpbkVBU1QJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFDWtleVZhdWx0QXNzZXQCAl9fAAIAC2RBcHBhZGRyZXNzCQEHQWRkcmVzcwEBGgFXr+OQzUL9+H0Rv2cuMKal1ScDoW6n32NZAAlFVEhhdG9rZW4JAQ10cnlHZXRJbnRlZ2VyAgULZEFwcGFkZHJlc3MCMTNQQWttSm5pTWdubkFlajVwWWYyakZZa0NiWm93NXB0OXRyX2FUb2tlbkJhbGFuY2UADkVUSGF0b2tlblRvdGFsCQENdHJ5R2V0SW50ZWdlcgIFC2RBcHBhZGRyZXNzAhFhVG9rZW5DaXJjdWxhdGlvbgAKcmVzZXJ2ZVN0cgkBDHRyeUdldFN0cmluZwIFC2RBcHBhZGRyZXNzAhFyZXNlcnZlR2xvYmFsRGF0YQAHZ2V0MVN0cgkAkQMCCQC1CQIFCnJlc2VydmVTdHICAXwAAQAIc3RyVG9JbnQJAQ1wYXJzZUludFZhbHVlAQUHZ2V0MVN0cgAPRVRIdG90YWxSZXNlcnZlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQEMdHJ5R2V0U3RyaW5nAgULZEFwcGFkZHJlc3MCEXJlc2VydmVHbG9iYWxEYXRhAgF8AAEACkVUSGluVmlyZXMJAGsDBQlFVEhhdG9rZW4FD0VUSHRvdGFsUmVzZXJ2ZQUORVRIYXRva2VuVG90YWwAEkVUSGluVmlyZXNXYXZlbGV0cwkAawMFCkVUSGluVmlyZXMFCGV0aFdhdmVzBQJkOAAKdHZsSW5XYXZlcwkAZAIJAGQCCQBrAwkAaAIFC3dhdmVzSW5Qb29sAAoFDHByb2plY3RTdGFrZQUKdG90YWxTdGFrZQkAawMJAGgCBRB3YXZlc0luV2hpcmxwb29sAAoFEXByb2plY3RTdGFrZVdoaXJsBQ90b3RhbFN0YWtlV2hpcmwFEkVUSGluVmlyZXNXYXZlbGV0cwAPd2hpcmxwb29sU3VwcGx5BAckbWF0Y2gwCQDsBwEFCXdoaXJscG9vbAMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhxdWFudGl0eQkAAgECEENhbid0IGZpbmQgYXNzZXQABXByaWNlAwkAZwIJAGQCCQBrAwkAZAIFCnR2bEluV2F2ZXMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwUCZDgFD3doaXJscG9vbFN1cHBseQUCZDgJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIhV0hJUkxQT09MIGlzc3VlIHByaWNlIGluIHdhdmVsZXRzCQBkAgkAawMJAGQCBQp0dmxJbldhdmVzCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMFAmQ4BQ93aGlybHBvb2xTdXBwbHkFAmQ4CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCIVdISVJMUE9PTCBpc3N1ZSBwcmljZSBpbiB3YXZlbGV0cwkBaQEVYnV5V0hJUkxQT09Md2l0aFdBVkVTAAQWV2hpcmxwb29sQmFsYW5jZUJlZm9yZQkA8AcCBQR0aGlzBQl3aGlybHBvb2wDCQAAAgUWV2hpcmxwb29sQmFsYW5jZUJlZm9yZQUWV2hpcmxwb29sQmFsYW5jZUJlZm9yZQQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB3N1cnBsdXMJAGsDCQBlAgUFcHJpY2UFAmQ4CAUDcG10BmFtb3VudAUCZDgEC0lzc3VlQW1vdW50AwkAZwIIBQNwbXQGYW1vdW50CQBrAwgFA3BtdAZhbW91bnQFAmQ4BQVwcmljZQkAawMIBQNwbXQGYW1vdW50BQJkOAUFcHJpY2UJAAIBAjBwbGVhc2UgY29udGFjdCBwcm9qZWN0IG93bmVyOiBpc3N1ZSBhbW91bnQgZXJyb3IEDHN1cHBseUFtb3VudAkAaQIJAGUCCAUDcG10BmFtb3VudAUHc3VycGx1cwADBA1jbGVhbkFtb3VudEluCQBlAggFA3BtdAZhbW91bnQJAGsDCAUDcG10BmFtb3VudADIAQCQTgQJQW1vdW50T3V0CQBuBAUQd2hpcmxJbldoaXJscG9vbAkAZQIJAGgCBQJkOAUCZDgJAKADAQkAdgYJAL0CBAkAtgIBBRB3YXZlc0luV2hpcmxwb29sCQC2AgEJAGgCBQJkOAUCZDgJALYCAQkAZAIFEHdhdmVzSW5XaGlybHBvb2wFDWNsZWFuQW1vdW50SW4FBkhBTEZVUAAQCQC2AgEJAGsDAKCNBgCQTgCg9zYABAAQBQdDRUlMSU5HCQBoAgUCZDgFAmQ4BQRET1dOAwkBAiE9AggFA3BtdAdhc3NldElkBQR1bml0CQACAQIXYXR0YWNoIFdBVkVTIHRva2VuIG9ubHkEA2J1eQMJAGYCBQlBbW91bnRPdXQFC0lzc3VlQW1vdW50CQD8BwQJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkAgRzd2FwCQDMCAIFD3doaXJscG9vbFN0cmluZwkAzAgCCQBkAgULSXNzdWVBbW91bnQAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0CAUDcG10BmFtb3VudAUDbmlsBQR1bml0AwkAAAIFA2J1eQUDYnV5BBVXaGlybHBvb2xCYWxhbmNlQWZ0ZXIJAPAHAgUEdGhpcwUJd2hpcmxwb29sBBFXaGlybHBvb2xGcm9tU3dhcAkAZQIFFVdoaXJscG9vbEJhbGFuY2VBZnRlcgUWV2hpcmxwb29sQmFsYW5jZUJlZm9yZQkAzAgCCQEHUmVpc3N1ZQMFCXdoaXJscG9vbAMJAGcCBQtJc3N1ZUFtb3VudAUJQW1vdW50T3V0BQtJc3N1ZUFtb3VudAAABgkAzAgCAwkAZgIFCUFtb3VudE91dAULSXNzdWVBbW91bnQJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgURV2hpcmxwb29sRnJvbVN3YXAFCXdoaXJscG9vbAkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQtJc3N1ZUFtb3VudAUJd2hpcmxwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCAiFXSElSTFBPT0wgaXNzdWUgcHJpY2UgaW4gd2F2ZWxldHMFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAwkAZgIFCUFtb3VudE91dAULSXNzdWVBbW91bnQCFXByaWNlIFdISVJMUE9PTC9XQVZFUwIgV0hJUkxQT09ML1dBVkVTIG1pZCBtYXJrZXQgcHJpY2UDCQBmAgUJQW1vdW50T3V0BQtJc3N1ZUFtb3VudAkAawMFAmQ4CAUDcG10BmFtb3VudAURV2hpcmxwb29sRnJvbVN3YXAJAGsDBQJkOAkAaAIFEHdhdmVzSW5XaGlybHBvb2wACQUQd2hpcmxJbldoaXJscG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgIgdG90YWwgV0FWRVMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMDCQBnAgULSXNzdWVBbW91bnQFCUFtb3VudE91dAkAZAIIBQNwbXQGYW1vdW50CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCIHRvdGFsIFdBVkVTIHJlY2VpdmVkIGluIHdhdmVsZXRzCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCIHRvdGFsIFdBVkVTIHJlY2VpdmVkIGluIHdhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAil0b3RhbCB3YXZlbGV0cyByZWNlaXZlZCBmb3IgYmFzZSB0cmVhc3VyeQMJAGcCBQtJc3N1ZUFtb3VudAUJQW1vdW50T3V0CQBkAgkAZQIIBQNwbXQGYW1vdW50BQdzdXJwbHVzCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCKXRvdGFsIHdhdmVsZXRzIHJlY2VpdmVkIGZvciBiYXNlIHRyZWFzdXJ5CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCKXRvdGFsIHdhdmVsZXRzIHJlY2VpdmVkIGZvciBiYXNlIHRyZWFzdXJ5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzAwkAZgIFCUFtb3VudE91dAULSXNzdWVBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMJAGQCBQdzdXJwbHVzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEScHJpY2VTdXJwbHVzU3VwcGx5AAkAzAgCCQEMSW50ZWdlckVudHJ5AgIWQlQgV0FWRVMgaW4gRUFTVCB2YXVsdAULV0FWRVNpbkVBU1QJAMwIAgkBDEludGVnZXJFbnRyeQICIlNUIEJVUk4tWFROIHggUGVwZVRlYW0gaW4gd2F2ZWxldHMJAGsDCQBoAgULd2F2ZXNJblBvb2wACgUMcHJvamVjdFN0YWtlBQp0b3RhbFN0YWtlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhxTVCBXSElSTFBPT0wgQU1NIGluIHdhdmVsZXRzCQBrAwkAaAIFEHdhdmVzSW5XaGlybHBvb2wACgURcHJvamVjdFN0YWtlV2hpcmwFD3RvdGFsU3Rha2VXaGlybAkAzAgCCQEMSW50ZWdlckVudHJ5AgIHU1QgdkVUSAUKRVRIaW5WaXJlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgITU1QgdkVUSCBpbiB3YXZlbGV0cwUSRVRIaW5WaXJlc1dhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhRUb3RhbCBTVCBpbiB3YXZlbGV0cwUKdHZsSW5XYXZlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgIhV0hJUkxQT09MIGlzc3VlIHByaWNlIGluIHdhdmVsZXRzBQVwcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIgV0hJUkxQT09ML1dBVkVTIG1pZCBtYXJrZXQgcHJpY2UJAGsDBQJkOAkAaAIFEHdhdmVzSW5XaGlybHBvb2wACQUQd2hpcmxJbldoaXJscG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgIWV0hJUkxQT09MIHRvdGFsIHN1cHBseQUPd2hpcmxwb29sU3VwcGx5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAg5Ub3RhbCB0cmVhc3VyeQkAZAIFC1dBVkVTaW5FQVNUBQp0dmxJbldhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1OQVYgV0hJUkxQT09MCQBrAwUCZDgJAGQCBQtXQVZFU2luRUFTVAUKdHZsSW5XYXZlcwUPd2hpcmxwb29sU3VwcGx5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAiB0b3RhbCBXQVZFUyByZWNlaXZlZCBpbiB3YXZlbGV0cwkBDXRyeUdldEludGVnZXICBQR0aGlzAiB0b3RhbCBXQVZFUyByZWNlaXZlZCBpbiB3YXZlbGV0cwkAzAgCCQEMSW50ZWdlckVudHJ5AgIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwkBDXRyeUdldEludGVnZXICBQR0aGlzAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAil0b3RhbCB3YXZlbGV0cyByZWNlaXZlZCBmb3IgYmFzZSB0cmVhc3VyeQkBDXRyeUdldEludGVnZXICBQR0aGlzAil0b3RhbCB3YXZlbGV0cyByZWNlaXZlZCBmb3IgYmFzZSB0cmVhc3VyeQkAzAgCCQEMSW50ZWdlckVudHJ5AgIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMJAMwIAgkBDEludGVnZXJFbnRyeQICFHRvdGFsIFdBVkVTIHJlY2VpdmVkCQBpAgkBDXRyeUdldEludGVnZXICBQR0aGlzAiB0b3RhbCBXQVZFUyByZWNlaXZlZCBpbiB3YXZlbGV0cwUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQICGXN1cnBsdXMgcmVjZWl2ZWQgaW4gV0FWRVMJAGkCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMFAmQ4CQDMCAIJAQxJbnRlZ2VyRW50cnkCAiZ0b3RhbCBXQVZFUyByZWNlaXZlZCBmb3IgYmFzZSB0cmVhc3VyeQkAaQIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIpdG90YWwgd2F2ZWxldHMgcmVjZWl2ZWQgZm9yIGJhc2UgdHJlYXN1cnkFAmQ4CQDMCAIJAQxJbnRlZ2VyRW50cnkCAh10b3RhbCBXQVZFUyBwYWlkIG91dCBpbiBXQVZFUwkAaQIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMFAmQ4CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBST0kgYmFzaXMgcG9pbnRzCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCEFJPSSBiYXNpcyBwb2ludHMFA25pbAFpAQxib29zdFBvb2xBUFkAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQHYmFsYW5jZQMJAGYCBQJkOAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAhBub3QgZW5vdWdoIFdBVkVTCQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFAmQ4BAdib29zdDgwCQBrAwUHYmFsYW5jZQBQAGQDCQAAAgUHYm9vc3Q4MAUHYm9vc3Q4MAQLYW1vdW50Qm9vc3QJAGsDBQdib29zdDgwAFAAZAMJAAACBQthbW91bnRCb29zdAULYW1vdW50Qm9vc3QEC2Ftb3VudE93bmVyCQBrAwUHYm9vc3Q4MAAUAGQDCQAAAgULYW1vdW50T3duZXIFC2Ftb3VudE93bmVyBAVib29zdAkA/AcECQEHQWRkcmVzcwEFC3Bvb2xib29zdFNDAgthZGRCb29zdGluZwkAzAgCCQDYBAEFD3doaXJscG9vbFBvb2xJZAkAzAgCAAcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAULYW1vdW50Qm9vc3QFA25pbAMJAAACBQVib29zdAUFYm9vc3QJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQxwcm9qZWN0T3duZXIFC2Ftb3VudE93bmVyBQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAiB0b3RhbCBXQVZFUyBwYWlkIG91dCBpbiB3YXZlbGV0cwkAZAIFC2Ftb3VudEJvb3N0CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCIHRvdGFsIFdBVkVTIHBhaWQgb3V0IGluIHdhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBST0kgYmFzaXMgcG9pbnRzCQBrAwkBDXRyeUdldEludGVnZXICBQR0aGlzAiB0b3RhbCBXQVZFUyBwYWlkIG91dCBpbiB3YXZlbGV0cwCQTgkBDXRyeUdldEludGVnZXICBQR0aGlzAiB0b3RhbCBXQVZFUyByZWNlaXZlZCBpbiB3YXZlbGV0cwkAzAgCCQEMSW50ZWdlckVudHJ5AgIVQWN0aXZhdGVkIGJsb2NraGVpZ2h0BQZoZWlnaHQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBib29zdFBvb2xBUFlfYWxsAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEB2JhbGFuY2UDCQBmAgUCZDgICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQIQbm90IGVub3VnaCBXQVZFUwkAZQIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQJkOAQLYW1vdW50Qm9vc3QJAGsDBQdiYWxhbmNlAFAAZAMJAAACBQthbW91bnRCb29zdAULYW1vdW50Qm9vc3QEC2Ftb3VudE93bmVyCQBrAwUHYmFsYW5jZQAUAGQDCQAAAgULYW1vdW50T3duZXIFC2Ftb3VudE93bmVyBAVib29zdAkA/AcECQEHQWRkcmVzcwEFC3Bvb2xib29zdFNDAgthZGRCb29zdGluZwkAzAgCCQDYBAEFD3doaXJscG9vbFBvb2xJZAkAzAgCAAcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAULYW1vdW50Qm9vc3QFA25pbAMJAAACBQVib29zdAUFYm9vc3QJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQxwcm9qZWN0T3duZXIFC2Ftb3VudE93bmVyBQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAiB0b3RhbCBXQVZFUyBwYWlkIG91dCBpbiB3YXZlbGV0cwkAZAIFC2Ftb3VudEJvb3N0CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCIHRvdGFsIFdBVkVTIHBhaWQgb3V0IGluIHdhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBST0kgYmFzaXMgcG9pbnRzCQBrAwkBDXRyeUdldEludGVnZXICBQR0aGlzAiB0b3RhbCBXQVZFUyBwYWlkIG91dCBpbiB3YXZlbGV0cwCQTgkBDXRyeUdldEludGVnZXICBQR0aGlzAiB0b3RhbCBXQVZFUyByZWNlaXZlZCBpbiB3YXZlbGV0cwkAzAgCCQEMSW50ZWdlckVudHJ5AgIVQWN0aXZhdGVkIGJsb2NraGVpZ2h0BQZoZWlnaHQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ90cmFuc2ZlclBvb2xBUFkAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQHYmFsYW5jZQMJAGYCBQJkOAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAhBub3QgZW5vdWdoIFdBVkVTCQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFAmQ4BAdib29zdDgwCQBrAwUHYmFsYW5jZQBQAGQDCQAAAgUHYm9vc3Q4MAUHYm9vc3Q4MAQLYW1vdW50Qm9vc3QJAGsDBQdib29zdDgwAFAAZAMJAAACBQthbW91bnRCb29zdAULYW1vdW50Qm9vc3QEC2Ftb3VudE93bmVyCQBrAwUHYm9vc3Q4MAAUAGQDCQAAAgULYW1vdW50T3duZXIFC2Ftb3VudE93bmVyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUPd2hpcmxwb29sUG9vbElkBQthbW91bnRCb29zdAUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFDHByb2plY3RPd25lcgULYW1vdW50T3duZXIFBHVuaXQJAMwIAgkBDEludGVnZXJFbnRyeQICIHRvdGFsIFdBVkVTIHBhaWQgb3V0IGluIHdhdmVsZXRzCQBkAgULYW1vdW50Qm9vc3QJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMJAMwIAgkBDEludGVnZXJFbnRyeQICEFJPSSBiYXNpcyBwb2ludHMJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCIHRvdGFsIFdBVkVTIHBhaWQgb3V0IGluIHdhdmVsZXRzAJBOCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCIHRvdGFsIFdBVkVTIHJlY2VpdmVkIGluIHdhdmVsZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQFBmhlaWdodAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE3RyYW5zZmVyUG9vbEFQWV9hbGwAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQHYmFsYW5jZQMJAGYCBQJkOAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAhBub3QgZW5vdWdoIFdBVkVTCQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFAmQ4BAthbW91bnRCb29zdAkAawMFB2JhbGFuY2UAUABkAwkAAAIFC2Ftb3VudEJvb3N0BQthbW91bnRCb29zdAQLYW1vdW50T3duZXIJAGsDBQdiYWxhbmNlABQAZAMJAAACBQthbW91bnRPd25lcgULYW1vdW50T3duZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQFC2Ftb3VudEJvb3N0BQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUMcHJvamVjdE93bmVyBQthbW91bnRPd25lcgUEdW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMJAGQCBQthbW91bnRCb29zdAkBDXRyeUdldEludGVnZXICBQR0aGlzAiB0b3RhbCBXQVZFUyBwYWlkIG91dCBpbiB3YXZlbGV0cwkAzAgCCQEMSW50ZWdlckVudHJ5AgIQUk9JIGJhc2lzIHBvaW50cwkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIgdG90YWwgV0FWRVMgcGFpZCBvdXQgaW4gd2F2ZWxldHMAkE4JAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIgdG90YWwgV0FWRVMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMJAMwIAgkBDEludGVnZXJFbnRyeQICFUFjdGl2YXRlZCBibG9ja2hlaWdodAUGaGVpZ2h0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETcG9vbE9uZVRva2VuU3VycGx1cwADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBA1zdXJwbHVzQW1vdW50CQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMEE1Bvb2xPbmVUb2tlblN1cnBsdXMJAPwHBAkBB0FkZHJlc3MBARoBV/0lw71OYZRB77peEmOPxTlvSbWIOvXpbQIhZ2VuZXJhdGVJbmRleFdpdGhPbmVUb2tlbkFuZFN0YWtlCQDMCAIJANgEAQUQYnVybnh0blBQVHBvb2xJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQ1zdXJwbHVzQW1vdW50BQNuaWwDCQAAAgUTUG9vbE9uZVRva2VuU3VycGx1cwUTUG9vbE9uZVRva2VuU3VycGx1cwkAzAgCCQEMSW50ZWdlckVudHJ5AgIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwkAZQIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwUNc3VycGx1c0Ftb3VudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEmNoYW5nZUludGVnZXJFbnRyeQIJa2V5U3RyaW5nB2ludGVnZXIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlTdHJpbmcFB2ludGVnZXIFA25pbAFpAQhhY3RpdmF0ZQADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhN5b3UgYXJlIG5vdCBhbGxvd2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQFBmhlaWdodAUDbmlsAQJ0eAEGdmVyaWZ5AAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkGAwkAZgIJAGQCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMCFUFjdGl2YXRlZCBibG9ja2hlaWdodAULdW5sb2NrQmxvY2sFBmhlaWdodAcDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQpoZWlyUHViS2V5BgMJAGYCCQBkAgkBDXRyeUdldEludGVnZXICBQR0aGlzAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQFDHVubG9ja0Jsb2NrMgUGaGVpZ2h0BwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUSUHV6emxlTWFzdGVyUHViS2V57nBQcA==", "height": 2854392, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2RFT5WoK23aJEpAnVyUZa2xNuSBoaaMCyx4YAXNYD5tP Next: 7KcqJWSgnkTciaw7yAkSNeKhp8Lp3Rm8CsfreSCT1bMh Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let TestUser = Address(base58'3N3y7nQfqDc7rBUExjKQi5ZbspWRh9q8PYH') | |
4 | + | func tryGetInteger (address,key) = match getInteger(address, key) { | |
5 | + | case b: Int => | |
6 | + | b | |
7 | + | case _ => | |
8 | + | 0 | |
9 | + | } | |
5 | 10 | ||
6 | - | let TestUserPubKey = base58'9ggtmbyecVRfUY2zeZhNaoLBp2iymhnQhffXQhemTJaG' | |
7 | 11 | ||
8 | - | let TestUser2 = Address(base58'3N8ueTAufEUYDKWJDbfK7aZ4HHxBkX4DXA6') | |
12 | + | func tryGetString (address,key) = match getString(address, key) { | |
13 | + | case b: String => | |
14 | + | b | |
15 | + | case _ => | |
16 | + | "" | |
17 | + | } | |
9 | 18 | ||
10 | - | let PuzzleMasterAddress = Address(base58'3PLjwHcz9NEuaTo63NZR9B9okQiKQxZSbmf') | |
19 | + | ||
20 | + | let d8 = 100000000 | |
21 | + | ||
22 | + | let d16 = (d8 * d8) | |
23 | + | ||
24 | + | let heirPubKey = base58'2kpmuzw1ZbrtgAN3BrR7vbEW1XrJoJKCstL7mf7XNf2P' | |
11 | 25 | ||
12 | 26 | let PuzzleMasterPubKey = base58'4z8CKSYQBKkzx7PBb5uBP1YPa6YAHRNTApW1sQVHT5eU' | |
13 | 27 | ||
28 | + | let unlockBlock = (30 * 1440) | |
29 | + | ||
30 | + | let unlockBlock2 = (90 * 1440) | |
31 | + | ||
32 | + | let burnxtnPPTpoolId = base58'3PQHndCUVrv3wBuQjbvVP9SnGmfbfitGxfx' | |
33 | + | ||
34 | + | let projectOwner = base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk' | |
35 | + | ||
36 | + | let whirlpoolPoolId = base58'3P2myTbd5zpEHcYmNpdWTp5gXS5B8tL1RCY' | |
37 | + | ||
38 | + | let whirlpool = base58'fHJWWsh2hZAc4Atv8VRhKy3jNbHLeMwQMsLpdaBY51Y' | |
39 | + | ||
40 | + | let whirlpoolString = toBase58String(base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi') | |
41 | + | ||
42 | + | let waves = base58'WAVES' | |
43 | + | ||
44 | + | let usdterc = base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
45 | + | ||
46 | + | let usdcerc = base58'HGgabTqUS8WtVFUJzfmrTDMgEccJuZLBPhFgQFxvnsoW' | |
47 | + | ||
48 | + | let usdtbsc = base58'A81p1LTRyoq2rDR2TNxB2dWYxsiNwCSSi8sXef2SEkwb' | |
49 | + | ||
50 | + | let usdcbsc = base58'4BKKSp6NoNcrFHyorZogDyctq1fq6w7114Ym1pw6HUtC' | |
51 | + | ||
52 | + | let burnxtn = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns' | |
53 | + | ||
54 | + | let eth = base58'3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13' | |
55 | + | ||
56 | + | let bnb = base58'66a1br3BrkoaJgP7yEar9hJcSTvJPoH6PYBLqscXcMGo' | |
57 | + | ||
58 | + | let wbtc = base58'2Fge5HEBRD3XTeg7Xg3FW5yiB9HVJFQtMXiWMQo72Up6' | |
59 | + | ||
60 | + | let btcb = base58'EW1uGLVo21Wd9i2Rhq8o4VKDTCQTGCGXE8DqayHGrLg8' | |
61 | + | ||
62 | + | let east = base58'6phK22ztGBW127gUFmdMEHKB3CVd6ZhWox2WtwJkbqTq' | |
63 | + | ||
64 | + | let steast = base58'GAB8JowY9UANZ4TQy2TzJyhxjPqXX3DUrb2cdMWrrJus' | |
65 | + | ||
66 | + | let swaves = base58'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7' | |
67 | + | ||
68 | + | let surf = base58'At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL' | |
69 | + | ||
70 | + | let poolboostSC = base58'3P8eeDzUnoDNbQjW617pAe76cEUDQsP1m1V' | |
71 | + | ||
72 | + | let PL_Main = Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH') | |
73 | + | ||
74 | + | let PL_Defi = Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X') | |
75 | + | ||
76 | + | let PL_Low = Address(base58'3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH') | |
77 | + | ||
78 | + | let EAST_stake = Address(base58'3P2hbtheN5apNppqqUK7L7qAwmRFXy91CNa') | |
79 | + | ||
80 | + | let WX_WAVES_EAST = Address(base58'3PJVwjfi2fF5Jv9AauayU6xLxrYBn8bpGH1') | |
81 | + | ||
82 | + | let SWAVES_stake = Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV') | |
83 | + | ||
84 | + | let ethInPool = tryGetInteger(Address(burnxtnPPTpoolId), (("global_" + toBase58String(eth)) + "_balance")) | |
85 | + | ||
86 | + | let wavesInPool = tryGetInteger(Address(burnxtnPPTpoolId), (("global_" + toBase58String(waves)) + "_balance")) | |
87 | + | ||
88 | + | let ethWaves = fraction(d8, wavesInPool, ethInPool) | |
89 | + | ||
90 | + | let projectStake = tryGetInteger(Address(burnxtnPPTpoolId), (toString(this) + "_indexStaked")) | |
91 | + | ||
92 | + | let totalStake = tryGetInteger(Address(burnxtnPPTpoolId), "global_poolToken_amount") | |
93 | + | ||
94 | + | func PL_value (dAppAddress,asset) = fraction(tryGetInteger(dAppAddress, ((toString(this) + "_supplied_") + toBase58String(asset))), tryGetInteger(dAppAddress, (toBase58String(asset) + "_sRate")), d16) | |
95 | + | ||
96 | + | ||
97 | + | func _loadInt (key_,default_) = match getInteger(SWAVES_stake, key_) { | |
98 | + | case a: Int => | |
99 | + | a | |
100 | + | case _ => | |
101 | + | default_ | |
102 | + | } | |
103 | + | ||
104 | + | ||
105 | + | func _loadBigInt (key_,default_) = match getBinary(SWAVES_stake, key_) { | |
106 | + | case a: ByteVector => | |
107 | + | toBigInt(a) | |
108 | + | case _ => | |
109 | + | default_ | |
110 | + | } | |
111 | + | ||
112 | + | ||
113 | + | let lastRate = _loadBigInt("LAST_RATE", toBigInt(1000000000000)) | |
114 | + | ||
115 | + | let currentRate = _loadBigInt("CURRENT_RATE", toBigInt(0)) | |
116 | + | ||
117 | + | let lastHeight = _loadInt("LAST_HEIGHT", 0) | |
118 | + | ||
119 | + | let targetHeight = min([_loadInt("TARGET_HEIGHT", 0), height]) | |
120 | + | ||
121 | + | let lastRateUpdated = (lastRate + (currentRate * toBigInt((targetHeight - lastHeight)))) | |
122 | + | ||
123 | + | let baseAmount = toInt(fraction(toBigInt(assetBalance(WX_WAVES_EAST, swaves)), lastRateUpdated, toBigInt(1000000000000), FLOOR)) | |
124 | + | ||
125 | + | let wavesInWX = (wavesBalance(WX_WAVES_EAST).regular + baseAmount) | |
126 | + | ||
127 | + | let eastInWX = assetBalance(WX_WAVES_EAST, east) | |
128 | + | ||
129 | + | let wavesEast = fraction((d8 * 100), eastInWX, wavesInWX) | |
130 | + | ||
131 | + | let wavesInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + toBase58String(waves)) + "_balance")) | |
132 | + | ||
133 | + | let whirlInWhirlpool = tryGetInteger(Address(whirlpoolPoolId), (("global_" + whirlpoolString) + "_balance")) | |
134 | + | ||
135 | + | let projectStakeWhirl = tryGetInteger(Address(whirlpoolPoolId), (toString(this) + "_indexStaked")) | |
136 | + | ||
137 | + | let totalStakeWhirl = tryGetInteger(Address(whirlpoolPoolId), "global_poolToken_amount") | |
138 | + | ||
139 | + | let stEastInWaves = (fraction((fraction(assetBalance(this, steast), tryGetInteger(EAST_stake, "%s__rate"), 1000000000000, HALFEVEN) / 100), d8, wavesEast) * 100) | |
140 | + | ||
141 | + | let eastInStaking = (fraction(assetBalance(this, steast), tryGetInteger(EAST_stake, "%s__rate"), 1000000000000, HALFEVEN) / 100) | |
142 | + | ||
143 | + | let keyVaultAsset = tryGetString(Address(base58'3PMtGnf3LXiEG6isDQLq1xMDKUqjQGqNHLb'), "%s%s%s__vault__3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr__WAVES") | |
144 | + | ||
145 | + | let WAVESinEAST = parseIntValue(split(keyVaultAsset, "__")[2]) | |
146 | + | ||
147 | + | let dAppaddress = Address(base58'3PHxubMUtynEY2AeHq3K1kUizRPN9HUC2rt') | |
148 | + | ||
149 | + | let ETHatoken = tryGetInteger(dAppaddress, "3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr_aTokenBalance") | |
150 | + | ||
151 | + | let ETHatokenTotal = tryGetInteger(dAppaddress, "aTokenCirculation") | |
152 | + | ||
153 | + | let reserveStr = tryGetString(dAppaddress, "reserveGlobalData") | |
154 | + | ||
155 | + | let get1Str = split(reserveStr, "|")[1] | |
156 | + | ||
157 | + | let strToInt = parseIntValue(get1Str) | |
158 | + | ||
159 | + | let ETHtotalReserve = parseIntValue(split(tryGetString(dAppaddress, "reserveGlobalData"), "|")[1]) | |
160 | + | ||
161 | + | let ETHinVires = fraction(ETHatoken, ETHtotalReserve, ETHatokenTotal) | |
162 | + | ||
163 | + | let ETHinViresWavelets = fraction(ETHinVires, ethWaves, d8) | |
164 | + | ||
165 | + | let tvlInWaves = ((fraction((wavesInPool * 10), projectStake, totalStake) + fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)) + ETHinViresWavelets) | |
166 | + | ||
167 | + | let whirlpoolSupply = match assetInfo(whirlpool) { | |
168 | + | case asset: Asset => | |
169 | + | asset.quantity | |
170 | + | case _ => | |
171 | + | throw("Can't find asset") | |
172 | + | } | |
173 | + | ||
174 | + | let price = if (((fraction((tvlInWaves + tryGetInteger(this, "surplus received in wavelets")), d8, whirlpoolSupply) + d8) >= tryGetInteger(this, "WHIRLPOOL issue price in wavelets"))) | |
175 | + | then (fraction((tvlInWaves + tryGetInteger(this, "surplus received in wavelets")), d8, whirlpoolSupply) + d8) | |
176 | + | else tryGetInteger(this, "WHIRLPOOL issue price in wavelets") | |
177 | + | ||
14 | 178 | @Callable(i) | |
15 | - | func activate () = [IntegerEntry(if ((i.caller == this)) | |
16 | - | then "Activated blockheight" | |
17 | - | else "Activated by anybody blockheight", height)] | |
179 | + | func buyWHIRLPOOLwithWAVES () = { | |
180 | + | let WhirlpoolBalanceBefore = assetBalance(this, whirlpool) | |
181 | + | if ((WhirlpoolBalanceBefore == WhirlpoolBalanceBefore)) | |
182 | + | then { | |
183 | + | let pmt = value(i.payments[0]) | |
184 | + | let surplus = fraction((price - d8), pmt.amount, d8) | |
185 | + | let IssueAmount = if ((pmt.amount >= fraction(pmt.amount, d8, price))) | |
186 | + | then fraction(pmt.amount, d8, price) | |
187 | + | else throw("please contact project owner: issue amount error") | |
188 | + | let supplyAmount = ((pmt.amount - surplus) / 3) | |
189 | + | let cleanAmountIn = (pmt.amount - fraction(pmt.amount, 200, 10000)) | |
190 | + | 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) | |
191 | + | if ((pmt.assetId != unit)) | |
192 | + | then throw("attach WAVES token only") | |
193 | + | else { | |
194 | + | let buy = if ((AmountOut > IssueAmount)) | |
195 | + | then invoke(Address(whirlpoolPoolId), "swap", [whirlpoolString, (IssueAmount + 1)], [AttachedPayment(unit, pmt.amount)]) | |
196 | + | else unit | |
197 | + | if ((buy == buy)) | |
198 | + | then { | |
199 | + | let WhirlpoolBalanceAfter = assetBalance(this, whirlpool) | |
200 | + | let WhirlpoolFromSwap = (WhirlpoolBalanceAfter - WhirlpoolBalanceBefore) | |
201 | + | [Reissue(whirlpool, if ((IssueAmount >= AmountOut)) | |
202 | + | then IssueAmount | |
203 | + | else 0, true), if ((AmountOut > IssueAmount)) | |
204 | + | then ScriptTransfer(i.caller, WhirlpoolFromSwap, whirlpool) | |
205 | + | else ScriptTransfer(i.caller, IssueAmount, whirlpool), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry(if ((AmountOut > IssueAmount)) | |
206 | + | then "price WHIRLPOOL/WAVES" | |
207 | + | else "WHIRLPOOL/WAVES mid market price", if ((AmountOut > IssueAmount)) | |
208 | + | then fraction(d8, pmt.amount, WhirlpoolFromSwap) | |
209 | + | else fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry("total WAVES received in wavelets", if ((IssueAmount >= AmountOut)) | |
210 | + | then (pmt.amount + tryGetInteger(this, "total WAVES received in wavelets")) | |
211 | + | else tryGetInteger(this, "total WAVES received in wavelets")), IntegerEntry("total wavelets received for base treasury", if ((IssueAmount >= AmountOut)) | |
212 | + | then ((pmt.amount - surplus) + tryGetInteger(this, "total wavelets received for base treasury")) | |
213 | + | else tryGetInteger(this, "total wavelets received for base treasury")), IntegerEntry("surplus received in wavelets", if ((AmountOut > IssueAmount)) | |
214 | + | then getIntegerValue(this, "surplus received in wavelets") | |
215 | + | else (surplus + getIntegerValue(this, "surplus received in wavelets")))] | |
216 | + | } | |
217 | + | else throw("Strict value is not equal to itself.") | |
218 | + | } | |
219 | + | } | |
220 | + | else throw("Strict value is not equal to itself.") | |
221 | + | } | |
222 | + | ||
223 | + | ||
224 | + | ||
225 | + | @Callable(i) | |
226 | + | func priceSurplusSupply () = [IntegerEntry("BT WAVES in EAST vault", WAVESinEAST), IntegerEntry("ST BURN-XTN x PepeTeam in wavelets", fraction((wavesInPool * 10), projectStake, totalStake)), IntegerEntry("ST WHIRLPOOL AMM in wavelets", fraction((wavesInWhirlpool * 10), projectStakeWhirl, totalStakeWhirl)), IntegerEntry("ST vETH", ETHinVires), IntegerEntry("ST vETH in wavelets", ETHinViresWavelets), IntegerEntry("Total ST in wavelets", tvlInWaves), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry("WHIRLPOOL/WAVES mid market price", fraction(d8, (wavesInWhirlpool * 9), whirlInWhirlpool)), IntegerEntry("WHIRLPOOL total supply", whirlpoolSupply), IntegerEntry("Total treasury", (WAVESinEAST + tvlInWaves)), IntegerEntry("NAV WHIRLPOOL", fraction(d8, (WAVESinEAST + tvlInWaves), whirlpoolSupply)), IntegerEntry("total WAVES received in wavelets", tryGetInteger(this, "total WAVES received in wavelets")), IntegerEntry("surplus received in wavelets", tryGetInteger(this, "surplus received in wavelets")), IntegerEntry("total wavelets received for base treasury", tryGetInteger(this, "total wavelets received for base treasury")), IntegerEntry("total WAVES paid out in wavelets", tryGetInteger(this, "total WAVES paid out in wavelets")), IntegerEntry("total WAVES received", (tryGetInteger(this, "total WAVES received in wavelets") / d8)), IntegerEntry("surplus received in WAVES", (tryGetInteger(this, "surplus received in wavelets") / d8)), IntegerEntry("total WAVES received for base treasury", (tryGetInteger(this, "total wavelets received for base treasury") / d8)), IntegerEntry("total WAVES paid out in WAVES", (tryGetInteger(this, "total WAVES paid out in wavelets") / d8)), IntegerEntry("ROI basis points", tryGetInteger(this, "ROI basis points"))] | |
227 | + | ||
228 | + | ||
229 | + | ||
230 | + | @Callable(i) | |
231 | + | func boostPoolAPY () = if ((i.caller != this)) | |
232 | + | then throw("access only by project owner") | |
233 | + | else { | |
234 | + | let balance = if ((d8 > wavesBalance(this).available)) | |
235 | + | then throw("not enough WAVES") | |
236 | + | else (wavesBalance(this).available - d8) | |
237 | + | let boost80 = fraction(balance, 80, 100) | |
238 | + | if ((boost80 == boost80)) | |
239 | + | then { | |
240 | + | let amountBoost = fraction(boost80, 80, 100) | |
241 | + | if ((amountBoost == amountBoost)) | |
242 | + | then { | |
243 | + | let amountOwner = fraction(boost80, 20, 100) | |
244 | + | if ((amountOwner == amountOwner)) | |
245 | + | then { | |
246 | + | let boost = invoke(Address(poolboostSC), "addBoosting", [toBase58String(whirlpoolPoolId), 7], [AttachedPayment(unit, amountBoost)]) | |
247 | + | if ((boost == boost)) | |
248 | + | then [ScriptTransfer(Address(projectOwner), amountOwner, unit), IntegerEntry("total WAVES paid out in wavelets", (amountBoost + tryGetInteger(this, "total WAVES paid out in wavelets"))), IntegerEntry("ROI basis points", fraction(tryGetInteger(this, "total WAVES paid out in wavelets"), 10000, tryGetInteger(this, "total WAVES received in wavelets"))), IntegerEntry("Activated blockheight", height)] | |
249 | + | else throw("Strict value is not equal to itself.") | |
250 | + | } | |
251 | + | else throw("Strict value is not equal to itself.") | |
252 | + | } | |
253 | + | else throw("Strict value is not equal to itself.") | |
254 | + | } | |
255 | + | else throw("Strict value is not equal to itself.") | |
256 | + | } | |
257 | + | ||
258 | + | ||
259 | + | ||
260 | + | @Callable(i) | |
261 | + | func boostPoolAPY_all () = if ((i.caller != this)) | |
262 | + | then throw("access only by project owner") | |
263 | + | else { | |
264 | + | let balance = if ((d8 > wavesBalance(this).available)) | |
265 | + | then throw("not enough WAVES") | |
266 | + | else (wavesBalance(this).available - d8) | |
267 | + | let amountBoost = fraction(balance, 80, 100) | |
268 | + | if ((amountBoost == amountBoost)) | |
269 | + | then { | |
270 | + | let amountOwner = fraction(balance, 20, 100) | |
271 | + | if ((amountOwner == amountOwner)) | |
272 | + | then { | |
273 | + | let boost = invoke(Address(poolboostSC), "addBoosting", [toBase58String(whirlpoolPoolId), 7], [AttachedPayment(unit, amountBoost)]) | |
274 | + | if ((boost == boost)) | |
275 | + | then [ScriptTransfer(Address(projectOwner), amountOwner, unit), IntegerEntry("total WAVES paid out in wavelets", (amountBoost + tryGetInteger(this, "total WAVES paid out in wavelets"))), IntegerEntry("ROI basis points", fraction(tryGetInteger(this, "total WAVES paid out in wavelets"), 10000, tryGetInteger(this, "total WAVES received in wavelets"))), IntegerEntry("Activated blockheight", height)] | |
276 | + | else throw("Strict value is not equal to itself.") | |
277 | + | } | |
278 | + | else throw("Strict value is not equal to itself.") | |
279 | + | } | |
280 | + | else throw("Strict value is not equal to itself.") | |
281 | + | } | |
282 | + | ||
283 | + | ||
284 | + | ||
285 | + | @Callable(i) | |
286 | + | func transferPoolAPY () = if ((i.caller != this)) | |
287 | + | then throw("access only by project owner") | |
288 | + | else { | |
289 | + | let balance = if ((d8 > wavesBalance(this).available)) | |
290 | + | then throw("not enough WAVES") | |
291 | + | else (wavesBalance(this).available - d8) | |
292 | + | let boost80 = fraction(balance, 80, 100) | |
293 | + | if ((boost80 == boost80)) | |
294 | + | then { | |
295 | + | let amountBoost = fraction(boost80, 80, 100) | |
296 | + | if ((amountBoost == amountBoost)) | |
297 | + | then { | |
298 | + | let amountOwner = fraction(boost80, 20, 100) | |
299 | + | if ((amountOwner == amountOwner)) | |
300 | + | then [ScriptTransfer(Address(whirlpoolPoolId), amountBoost, unit), ScriptTransfer(Address(projectOwner), amountOwner, unit), IntegerEntry("total WAVES paid out in wavelets", (amountBoost + tryGetInteger(this, "total WAVES paid out in wavelets"))), IntegerEntry("ROI basis points", fraction(tryGetInteger(this, "total WAVES paid out in wavelets"), 10000, tryGetInteger(this, "total WAVES received in wavelets"))), IntegerEntry("Activated blockheight", height)] | |
301 | + | else throw("Strict value is not equal to itself.") | |
302 | + | } | |
303 | + | else throw("Strict value is not equal to itself.") | |
304 | + | } | |
305 | + | else throw("Strict value is not equal to itself.") | |
306 | + | } | |
307 | + | ||
308 | + | ||
309 | + | ||
310 | + | @Callable(i) | |
311 | + | func transferPoolAPY_all () = if ((i.caller != this)) | |
312 | + | then throw("access only by project owner") | |
313 | + | else { | |
314 | + | let balance = if ((d8 > wavesBalance(this).available)) | |
315 | + | then throw("not enough WAVES") | |
316 | + | else (wavesBalance(this).available - d8) | |
317 | + | let amountBoost = fraction(balance, 80, 100) | |
318 | + | if ((amountBoost == amountBoost)) | |
319 | + | then { | |
320 | + | let amountOwner = fraction(balance, 20, 100) | |
321 | + | if ((amountOwner == amountOwner)) | |
322 | + | then [ScriptTransfer(Address(whirlpoolPoolId), amountBoost, unit), ScriptTransfer(Address(projectOwner), amountOwner, unit), IntegerEntry("total WAVES paid out in wavelets", (amountBoost + tryGetInteger(this, "total WAVES paid out in wavelets"))), IntegerEntry("ROI basis points", fraction(tryGetInteger(this, "total WAVES paid out in wavelets"), 10000, tryGetInteger(this, "total WAVES received in wavelets"))), IntegerEntry("Activated blockheight", height)] | |
323 | + | else throw("Strict value is not equal to itself.") | |
324 | + | } | |
325 | + | else throw("Strict value is not equal to itself.") | |
326 | + | } | |
327 | + | ||
328 | + | ||
329 | + | ||
330 | + | @Callable(i) | |
331 | + | func poolOneTokenSurplus () = if ((i.caller != this)) | |
332 | + | then throw("access only by project owner") | |
333 | + | else { | |
334 | + | let surplusAmount = tryGetInteger(this, "surplus received in wavelets") | |
335 | + | let PoolOneTokenSurplus = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [toBase58String(burnxtnPPTpoolId)], [AttachedPayment(unit, surplusAmount)]) | |
336 | + | if ((PoolOneTokenSurplus == PoolOneTokenSurplus)) | |
337 | + | then [IntegerEntry("surplus received in wavelets", (tryGetInteger(this, "surplus received in wavelets") - surplusAmount))] | |
338 | + | else throw("Strict value is not equal to itself.") | |
339 | + | } | |
340 | + | ||
341 | + | ||
342 | + | ||
343 | + | @Callable(i) | |
344 | + | func changeIntegerEntry (keyString,integer) = if ((i.caller != this)) | |
345 | + | then throw("access only by project owner") | |
346 | + | else [IntegerEntry(keyString, integer)] | |
347 | + | ||
348 | + | ||
349 | + | ||
350 | + | @Callable(i) | |
351 | + | func activate () = if ((i.caller != this)) | |
352 | + | then throw("you are not allowed") | |
353 | + | else [IntegerEntry("Activated blockheight", height)] | |
18 | 354 | ||
19 | 355 | ||
20 | 356 | @Verifier(tx) | |
21 | - | func verify () = { | |
22 | - | let TestUser2PubKey = base58'2kpmuzw1ZbrtgAN3BrR7vbEW1XrJoJKCstL7mf7XNf2P' | |
23 | - | if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) | |
24 | - | then true | |
25 | - | else if (((getIntegerValue(this, "Activated blockheight") + 2) > height)) | |
26 | - | then false | |
27 | - | else sigVerify(tx.bodyBytes, tx.proofs[0], TestUser2PubKey) | |
28 | - | } | |
357 | + | func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) | |
358 | + | then true | |
359 | + | else if (((tryGetInteger(this, "Activated blockheight") + unlockBlock) > height)) | |
360 | + | then false | |
361 | + | else if (sigVerify(tx.bodyBytes, tx.proofs[0], heirPubKey)) | |
362 | + | then true | |
363 | + | else if (((tryGetInteger(this, "Activated blockheight") + unlockBlock2) > height)) | |
364 | + | then false | |
365 | + | else sigVerify(tx.bodyBytes, tx.proofs[0], PuzzleMasterPubKey) | |
29 | 366 |
github/deemru/w8io/169f3d6 37.17 ms ◑![]()