tx · 6BgrDabx9GWUT8VB4TSLWuKzfCL76W45pNJuix8NF1xh

3PEgVPqJ3NYWbRn1CLELUpuY9KCmragc7sY:  -0.01600000 Waves

2024.04.24 08:26 [4142434] smart account 3PEgVPqJ3NYWbRn1CLELUpuY9KCmragc7sY > SELF 0.00000000 Waves

{ "type": 13, "id": "6BgrDabx9GWUT8VB4TSLWuKzfCL76W45pNJuix8NF1xh", "fee": 1600000, "feeAssetId": null, "timestamp": 1713936421973, "version": 2, "chainId": 87, "sender": "3PEgVPqJ3NYWbRn1CLELUpuY9KCmragc7sY", "senderPublicKey": "8bCz9o3CUTfKKYBmcfJcAwKVKxEmLhGGyULemkcJwtkB", "proofs": [ "5BuB5rYfunzNnJfjaqgerVVE2HWjYnvn9j33Yh8kS178vk4SDytxUwN6ayXKddHQKXqnwz6XhsdrPB7wFYZUeki1" ], "script": "base64:BgIrCAISABIAEgASABIAEgMKAQgSABIAEgASABIDCgEIEgMKAQESABIECgIIASIBDXRyeUdldEludGVnZXICB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEMdHJ5R2V0U3RyaW5nAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgAAAmQ4AIDC1y8AAmQ2AMCEPQAHcG9vbEJCQgEaAVdS7pNWFE1+B4zShQ/mflxXN34cn+88gh0ADXB1enpsZVN0YWtpbmcJAQdBZGRyZXNzAQEaAVeUaIz57qK5qp/W9Y68qY9nGpwG9BYpibsADHB1enpsZU1hcmtldAkBB0FkZHJlc3MBARoBV12L8V/LKCBrH2ajyG7aC6iX7Q/o/clE8QAHYnVybnh0bgEgJE91eWp+Mzm4+wz/hKlxXF7KLd4zoMRdafnqRBHsTFQACXdoaXJscG9vbAEgWeON3MK1I7pKFNzE0K8UCeZk5gS+JQYLJk7lUG2XWccABnB1enpsZQEg8Rr+Jf72mTj0aSrE3+ES1keyxsoOujcJr3dtH46i5WMABHJvbWUBIItflAGEw2XBJDSO/xv8cJExSGrJMeqoy5Pz+Z80RAjPAARzdXJmASCS0fRK4hEBK/R+6t4hjj3F+8nyfc6Hsu1SGfA6TiRY9QAMcHV6emxlU3Rha2VkCQENdHJ5R2V0SW50ZWdlcgIFDXB1enpsZVN0YWtpbmcJAKwCAgkApQgBBQR0aGlzAgdfc3Rha2VkAAxwdXp6bGVJblBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQdwb29sQkJCCQCsAgIJAKwCAgIHZ2xvYmFsXwkA2AQBBQZwdXp6bGUCCF9iYWxhbmNlAAxwcm9qZWN0U3Rha2UJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQdwb29sQkJCCQCsAgIJAKUIAQUEdGhpcwIMX2luZGV4U3Rha2VkAAp0b3RhbFN0YWtlCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUHcG9vbEJCQgIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQAC2Fzc2V0V2VpZ2h0CQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUHcG9vbEJCQgkArAICCQCsAgICB3N0YXRpY18JANgEAQUGcHV6emxlAgdfd2VpZ2h0AA1CQkJscEluUHV6emxlCQBrAwkAaAIJAGkCBQxwdXp6bGVJblBvb2wFC2Fzc2V0V2VpZ2h0AJBOBQxwcm9qZWN0U3Rha2UFCnRvdGFsU3Rha2UAFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQCFEFkZHJlc3NlcyByZWdpc3RlcmVkAAlhZGRyZXNzZXMJALMCAgkBDHRyeUdldFN0cmluZwIFBHRoaXMFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQAAQAQa2V5QnVybnh0bkFtb3VudAIWQlVSTi1YVE4gdG90YWwgcmV3YXJkcwANa2V5Um9tZUFtb3VudAISUk9NRSB0b3RhbCByZXdhcmRzAA9rZXlQdXp6bGVBbW91bnQCFFBVWlpMRSB0b3RhbCByZXdhcmRzAA5rZXlXYXZlc0Ftb3VudAITV0FWRVMgdG90YWwgcmV3YXJkcwASa2V5V2hpcmxwb29sQW1vdW50AhdXSElSTFBPT0wgdG90YWwgcmV3YXJkcwATa2V5VG90YWxQdXp6bGVWYWx1ZQISVG90YWwgcHV6emxlIHZhbHVlABNrZXlUb3RhbEJ1cm54dG5QYWlkAhNUb3RhbCBCVVJOLVhUTiBwYWlkABVrZXlUb3RhbFdoaXJscG9vbFBhaWQCFFRvdGFsIFdISVJMUE9PTCBwYWlkABBrZXlUb3RhbFJvbWVQYWlkAg9Ub3RhbCBST01FIHBhaWQAEWtleVRvdGFsV2F2ZXNQYWlkAhBUb3RhbCBXQVZFUyBwYWlkAA5rZXlSb21lQmFsYW5jZQIMUk9NRSBiYWxhbmNlAAdXRlNsaXN0CQDMCAICLEducHk1blZhalBQM1hRUVZ4ckhib01Bc1h0am55V0F4eWJNRGRLcmJyOHNECQDMCAICLEJUOVE0bVFkUVFtZWkycjVZTk1CTWFzWkJRajdteU5haXo2UUhiYTVjUFhTCQDMCAICLEJNdmt5RnRQVm1GYXRwRlI5UVZGS1I1TVlUY1pWVFkyVlV3RloyNXZyQUFjCQDMCAICLDc3UnF1OFRMakJkTXREdVhkOW81ZlVTR282NHpRZTVGQ2NhbzVMOEh0OWo4CQDMCAICLDhLbmhCTFY0OVNESnpxMVNTeTFZdkdIWVk2bTdRMTQ2YlY3UTZHS3FRYjVDCQDMCAICLEZGeHNVZktiSEVXNHpaeXdMVUw1NWlwOE5xcDZmY1dEc3E3eTNhbjl5UWhlCQDMCAICLDVuUVJlZEdIb1ZwRVFhc01RaXZiMVVNdkZCQ0hYZWZYUFh0VVJiTU1uZnN1CQDMCAICLDZOM01TRnRKR3ZUNzl1Y1g0cExmdHhQN2ZHczhEbm1ZZFBlZHZub05iVnQ5CQDMCAICK2RGQzJpSkw0TERXYXNxOVl6SGYya1dmUE5QNjlUeWFtaWk5M25zOUJIdk0JAMwIAgIsQTE1OFQ3eVpMdG11aU1FczIxUDlqVjJmdGJNWHp5M01uZkhNRXUxZU1BR0sFA25pbAAHQkJCbGlzdAkAzAgCAiw5cEN4b0d0RDE4R2VIOWdDZW16cXJqSE1NamZ5QlFEZnNyUkF1eFNSYWdNYwkAzAgCAiw3RGdGZ0NrQmpWRGM1UDlaZ3dzVkw5U2lUaTdrWEp1UzRhUlZnYjdaSFczawkAzAgCAiw3NmJUdkU4dHRIdnN1TjFGdUg0S2M4UVVXNGtMNG04YzFjamZzWHkyR2ZiVgkAzAgCAiw0WnJmNEg1dGlGY1FMOGVRbW5BMndKMVhXUEVCSDZoMUcyTWVmWkRZbWNDQgkAzAgCAiwyRHRDNG5Gbnh6NVVNNm1ialB3TVZacFFXWkZVcXhzNTJvWnJCZU5SazlBbwkAzAgCAixEalpHTUFGZm9RV2tNVzNTNUZUc1FOM2pvbmNadDZCc21obkVLM2dnTHhtTgkAzAgCAixCbmVhWlhENm92REpjVjVyZ2ZyOGhzSFphTVFzSlE4REg2YTVnVG5HQ3BCYwkAzAgCAiw0RUtmZ3pGa2Q1VUdLcmpuYUpWM3c3YXJnVzFZbUY0aHE1NHhXUUZ6QVhiOQkAzAgCAiw4aEdEa1dLaXUyaWdEcFdUM0hwcjRtY2hERDZ4d0o5aEdtMmgyam5VdlRxegkAzAgCAixFM1puU2VqcFhMMVhyNlZHNFFvTGg4eG9kOU5NZ3BQZTQ3M3I5UWsySGliTAUDbmlsAA1TVVJGYm9hcmRMaXN0CQDMCAICLER6TFNnRWFCQjRVTmJQQ1pla1BTemJRODVLb2tNQjdkMUtSUm16VVB1NWhzCQDMCAICK1dtV3pzYmIzUE52eko0dzRGYjczS2NvTkdMWHVtZ1laYWdWMjJ6RWlYMXcJAMwIAgIsN1JyeGJnYXlVa3NQSHJBNzk5cEt1Q3I2MXJlVDhuRU5kcUNrZ1ZIUGdhTjIJAMwIAgIsRm1ETGZ6c3BiVkplS2hLZHVMRFViYTJIb1ZkUnJLdHN3REtNVTNlOXFqdFAJAMwIAgIsSG1RdlZ5UWRFamFmTHJwS1BTaWdkYWZ2Y1l2TGJOWUdFZ1ZDeExaUld0MXkJAMwIAgIsMnJWeE5NWHV2dWc3NFRvckxRWkdDMkVSSGpBYkpuVlVnTlhRMWtKbXRuQWUJAMwIAgIsOXliOXlHSm02Z3pWb3pCSHVRVkhCZEFuemZjdDNOOWJScGRqak5VbnJ6Y0MJAMwIAgIrczFTZkdWc2hmMmpLQ0E5S3Z2S0t2VXVLOHV0cDNOZTNlZThMcDZLS0xSdwkAzAgCAiwzRTN5YjdUdkRLNzYyZG4xMWRtUkx3YXBnaGFlZlFVRXl1blZkWFNOcDR0QgkAzAgCAixGSDc1VHZBcHlWdGZkOVg1YTFBcjE5TnM5RE5KdnpwekxGRTVwamgxd2k0aAkAzAgCAixFZ3FrYkR5V1JQZ1ZOVnF0RUV0UlN6V2NHRDMzb3JWb0UyYnpZZEFkaWVRUwkAzAgCAixEc0t5SnBKQ1pjRnY5alNuUWJRVkc0SngzV1NQMUt0ZkhoQUtUa1NLclZCagkAzAgCAixBZXNQcjVVRkRnWTVqWlhZVVo4SmtiWXRKb3ZWZERIYnkxNVNDa3NFaG1KSwkAzAgCAixBVnNmZHF3Mm01YVVOeGExSFk5ZW1MbUNMQmZWQUdUeFZ1NGVmM3hFREtDOAkAzAgCAiw1amR2U1NZMks3aDhVaVVDWFVnSzlUN3pmTXJ5cXcyaXRLUDhCeXNkWEREawkAzAgCAixBNHZvS1plczhNVkRBWHlRaktrYjZiZEVjcU1idkI0cHR6YnBxWXF2ZUc1bgkAzAgCAiwzNG9aS2FXSHBTSnJadkdMZFl1NVdHOFdXWGc3cndGMkhIeDhLMTVHZlVDUQkAzAgCAiw3N01jQ0hrbU5yUk00RGpxa1NNOUI4WWp1SmNLdG42N2pRZ2UxcHpaclE4VAkAzAgCAiw3TkVGQm52R0dNZllkQm5oTUxOcHVWZ1MyMkxwY2dYQ1pnSGZtOERIbW1pQQkAzAgCAixHb0Y5eW9reEhnUE5veG9XZ2pqZG1HZVdoY0xZQXJTc3hxZmZSdGZZR3RmcwUDbmlsDgFpAQppbnZva2VDbEkxAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEAmNsCQD8BwQFBHRoaXMCEWNsYWltSW52ZXN0UHV6emxlBQNuaWwFA25pbAMJAAACBQJjbAUCY2wEAmR0CQD8BwQFBHRoaXMCBGRhdGEFA25pbAUDbmlsAwkAAAIFAmR0BQJkdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWNsYWltSW52ZXN0UHV6emxlAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEEmNsYWltUHV6emxlU3Rha2luZwkA/AcEBQ1wdXp6bGVTdGFraW5nAgtjbGFpbVJld2FyZAUDbmlsBQNuaWwDCQAAAgUSY2xhaW1QdXp6bGVTdGFraW5nBRJjbGFpbVB1enpsZVN0YWtpbmcED3Bvb2xPbmVUb2tlbkludgkA/AcECQEHQWRkcmVzcwEBGgFX/SXDvU5hlEHvul4SY4/FOW9JtYg69eltAiFnZW5lcmF0ZUluZGV4V2l0aE9uZVRva2VuQW5kU3Rha2UJAMwIAgkA2AQBBQdwb29sQkJCBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBnB1enpsZQkA8AcCBQR0aGlzBQZwdXp6bGUFA25pbAMJAAACBQ9wb29sT25lVG9rZW5JbnYFD3Bvb2xPbmVUb2tlbkludgkAzAgCCQEMSW50ZWdlckVudHJ5AgIVQWN0aXZhdGVkIGJsb2NraGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleUJ1cm54dG5BbW91bnQJAPAHAgUEdGhpcwUHYnVybnh0bgkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5Um9tZUFtb3VudAkAZQIJAPAHAgUEdGhpcwUEcm9tZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUOa2V5Um9tZUJhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleVdhdmVzQW1vdW50AwkAZgIJAGUCCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQUCZDgAAAkAZQIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQJkOAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlXaGlybHBvb2xBbW91bnQJAPAHAgUEdGhpcwUJd2hpcmxwb29sBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEZGF0YQADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg5wdXp6bGUgYmFsYW5jZQkA8AcCBQR0aGlzBQZwdXp6bGUJAMwIAgkBDEludGVnZXJFbnRyeQICDXB1enpsZSBzdGFrZWQFDHB1enpsZVN0YWtlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgINcHV6emxlIEJCQiBMUAUNQkJCbHBJblB1enpsZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxQdXp6bGVWYWx1ZQkAZAIJAGQCCQDwBwIFBHRoaXMFBnB1enpsZQUMcHV6emxlU3Rha2VkBQ1CQkJscEluUHV6emxlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBXRlMgcHV6emxlIHZhbHVlCQBrAwkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUTa2V5VG90YWxQdXp6bGVWYWx1ZQABAG4ACgAJCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBCQkIgcHV6emxlIHZhbHVlCQBrAwkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUTa2V5VG90YWxQdXp6bGVWYWx1ZQAKAG4ACgAJBQNuaWwBaQEIaW52b2tlcjIAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQBdAkA/AcEBQR0aGlzAg50cmFja1RvdGFsUGFpZAUDbmlsBQNuaWwDCQAAAgUBdAUBdAQEbGlzdAkAvAkCBQlhZGRyZXNzZXMCASwKAQFyAgVhY2N1bQdhZGRyZXNzCQD8BwQFBHRoaXMCEWRpc3RyaWJ1dGVSZXdhcmRzCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsBAdpbnZva2VyCgACJGwFBGxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDQwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgDCQAAAgUHaW52b2tlcgUHaW52b2tlcgQCYnMJAPwHBAUEdGhpcwIIYnVyblN1cmYFA25pbAUDbmlsAwkAAAIFAmJzBQJicwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDnRyYWNrVG90YWxQYWlkAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEDWFtb3VudEJ1cm54dG4JAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5QnVybnh0bkFtb3VudAQPYW1vdW50V2hpcmxwb29sCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdoaXJscG9vbEFtb3VudAQLYW1vdW50V2F2ZXMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUOa2V5V2F2ZXNBbW91bnQECmFtb3VudFJvbWUJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUNa2V5Um9tZUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxCdXJueHRuUGFpZAkAZAIFDWFtb3VudEJ1cm54dG4JAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUTa2V5VG90YWxCdXJueHRuUGFpZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa2V5VG90YWxXaGlybHBvb2xQYWlkCQBkAgUPYW1vdW50V2hpcmxwb29sCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFFWtleVRvdGFsV2hpcmxwb29sUGFpZAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5VG90YWxXYXZlc1BhaWQJAGQCBQthbW91bnRXYXZlcwkBDXRyeUdldEludGVnZXICBQR0aGlzBRFrZXlUb3RhbFdhdmVzUGFpZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5VG90YWxSb21lUGFpZAkAZAIFCmFtb3VudFJvbWUJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5VG90YWxSb21lUGFpZAUDbmlsAWkBEWRpc3RyaWJ1dGVSZXdhcmRzAQdhZGRyZXNzAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9u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CQBrAwkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlCdXJueHRuQW1vdW50CQBkAgUIc2hhcmVXRlMJAGgCBQhzaGFyZUJCQgAKAG4ED2Ftb3VudFdoaXJscG9vbAkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2hpcmxwb29sQW1vdW50CQBkAgUIc2hhcmVXRlMJAGgCBQhzaGFyZUJCQgAKAG4EC2Ftb3VudFdhdmVzCQBrAwkBDXRyeUdldEludGVnZXICBQR0aGlzBQ5rZXlXYXZlc0Ftb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgBuBAphbW91bnRSb21lCQBrAwkBDXRyeUdldEludGVnZXICBQR0aGlzBQ1rZXlSb21lQW1vdW50CQBkAgUIc2hhcmVXRlMJAGgCBQhzaGFyZUJCQgAKAG4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUNYW1vdW50QnVybnh0bgUHYnVybnh0bgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzBQ9hbW91bnRXaGlybHBvb2wFCXdoaXJscG9vbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzBQthbW91bnRXYXZlcwUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzBQphbW91bnRSb21lBQRyb21lCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MJAGgCBQ9hbW91bnRTVVJGYm9hcmQFAmQ2BQRzdXJmBQNuaWwBaQEIYnVyblN1cmYAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgkAzAgCCQEEQnVybgIFBHN1cmYFAmQ2CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhFTVVJGIHRvdGFsIGJ1cm5lZAkAZAIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIRU1VSRiB0b3RhbCBidXJuZWQFAmQ2BQNuaWwBaQEIcmVnaXN0ZXIAAwkBCGNvbnRhaW5zAgkBDHRyeUdldFN0cmluZwIFBHRoaXMFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQJAKUIAQgFAWkGY2FsbGVyCQACAQISYWxyZWFkeSByZWdpc3RlcmVkAwkAAAIJAJADAQkAvAkCBQlhZGRyZXNzZXMCASwAHgkAAgECC21heCByZWFjaGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQJAKwCAgkArAICCQEMdHJ5R2V0U3RyaW5nAgUEdGhpcwUWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAkApQgBCAUBaQZjYWxsZXICASwFA25pbAFpAQ5jbGFpbUJ5QW55Ym9keQADCQBmAgkAZAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCFUFjdGl2YXRlZCBibG9ja2hlaWdodAkAaAIAHgCgCwUGaGVpZ2h0CQACAQkArAICAhZXYWl0IHRpbGwgYmxvY2toZWlnaHQ6CQCkAwEJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQJAGgCAB4AoAsEE3B1enpsZUJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwUGcHV6emxlAwkAAAIFE3B1enpsZUJhbGFuY2VCZWZvcmUFE3B1enpsZUJhbGFuY2VCZWZvcmUEEmNsYWltUHV6emxlU3Rha2luZwkA/AcEBQ1wdXp6bGVTdGFraW5nAgtjbGFpbVJld2FyZAUDbmlsBQNuaWwDCQAAAgUSY2xhaW1QdXp6bGVTdGFraW5nBRJjbGFpbVB1enpsZVN0YWtpbmcECGNsYWltSW52CQD8BwQJAQdBZGRyZXNzAQUHcG9vbEJCQgIRY2xhaW1JbmRleFJld2FyZHMFA25pbAUDbmlsAwkAAAIFCGNsYWltSW52BQhjbGFpbUludgQScHV6emxlQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFBnB1enpsZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5QnVybnh0bkFtb3VudAkA8AcCBQR0aGlzBQdidXJueHRuCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlSb21lQW1vdW50CQBlAgkA8AcCBQR0aGlzBQRyb21lCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ5rZXlSb21lQmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa2V5UHV6emxlQW1vdW50CQBlAgUScHV6emxlQmFsYW5jZUFmdGVyBRNwdXp6bGVCYWxhbmNlQmVmb3JlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rZXlXYXZlc0Ftb3VudAMJAGYCCQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFAmQ4AAAJAGUCCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQUCZDgAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5V2hpcmxwb29sQW1vdW50CQDwBwIFBHRoaXMFCXdoaXJscG9vbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGludm9rZXJCeUFueWJvZHkAAwkAZgIJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQJAGgCAB4AoAsFBmhlaWdodAkAAgEJAKwCAgIWV2FpdCB0aWxsIGJsb2NraGVpZ2h0OgkApAMBCQBkAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIVQWN0aXZhdGVkIGJsb2NraGVpZ2h0CQBoAgAeAKALBAF0CQD8BwQFBHRoaXMCDnRyYWNrVG90YWxQYWlkBQNuaWwFA25pbAMJAAACBQF0BQF0BARsaXN0CQC8CQIFCWFkZHJlc3NlcwIBLAoBAXICBWFjY3VtB2FkZHJlc3MJAPwHBAUEdGhpcwISZGlzdHJpYnV0ZVJld2FyZHNCCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsBAdpbnZva2VyCgACJGwFBGxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkB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ZGRyZXNzCQDZBAEFCVNVUkZib2FyZAMJAAACCQEMdHJ5R2V0U3RyaW5nAgUMcHV6emxlTWFya2V0CQCsAgIJAKwCAgIEbmZ0XwUJU1VSRmJvYXJkAgdfc2VsbGVyBQdhZGRyZXNzAAEAAAQPYW1vdW50U1VSRmJvYXJkCgACJGwFDVNVUkZib2FyZExpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWZvbGRGdW5jQwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUAwkAAAIJAGQCCQBkAgUIc2hhcmVXRlMFCHNoYXJlQkJCBQ9hbW91bnRTVVJGYm9hcmQAAAQEbGlzdAkAvAkCBQlhZGRyZXNzZXMCASwECm5vTkZUaW5kZXgJAQV2YWx1ZQEJAM8IAgUEbGlzdAUHYWRkcmVzcwQObGlzdE1pbnVzTm9ORlQJANEIAgUEbGlzdAUKbm9ORlRpbmRleAQNbWludXNOb05GVHN0cgkArAICCQC5CQIFDmxpc3RNaW51c05vTkZUAgEsAgEsCQDMCAIJAQtTdHJpbmdFbnRyeQIFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQFDW1pbnVzTm9ORlRzdHIFA25pbAQNYW1vdW50QnVybnh0bgkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5QnVybnh0bkFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgBuBA9hbW91bnRXaGlybHBvb2wJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdoaXJscG9vbEFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgBuBAthbW91bnRXYXZlcwkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUOa2V5V2F2ZXNBbW91bnQJAGQCBQhzaGFyZVdGUwkAaAIFCHNoYXJlQkJCAAoAbgQKYW1vdW50Um9tZQkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUNa2V5Um9tZUFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgBuBAxhbW91bnRQdXp6bGUJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFD2tleVB1enpsZUFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgBuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MFDWFtb3VudEJ1cm54dG4FB2J1cm54dG4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUPYW1vdW50V2hpcmxwb29sBQl3aGlybHBvb2wJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwULYW1vdW50V2F2ZXMFBHVuaXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUKYW1vdW50Um9tZQUEcm9tZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzBQxhbW91bnRQdXp6bGUFBnB1enpsZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzCQBoAgUPYW1vdW50U1VSRmJvYXJkBQJkNgUEc3VyZgUDbmlsAWkBDnNldFJvbWVCYWxhbmNlAQZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rZXlSb21lQmFsYW5jZQkAaAIFBmFtb3VudAUCZDYFA25pbAFpAQtkZWxldGVFbnRyeQADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyCQDMCAIJAQtEZWxldGVFbnRyeQEFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQFA25pbAFpARJjaGFuZ2VJbnRlZ2VyRW50cnkCCWtleVN0cmluZwdpbnRlZ2VyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5U3RyaW5nBQdpbnRlZ2VyBQNuaWwASAD/Jg==", "height": 4142434, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GY9iiANudyYr6wYpGj7o9HTzTxrgJhnVLXSUESTtTcyN Next: 4UCb1X9zy84SzvrDjcPZU1HxXgbSjpv1CifiHQkvZQLG Diff:
OldNewDifferences
2525
2626 let puzzleStaking = Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS')
2727
28-let bbbPoolId = base58'3P9VPwVfNj3dDevQZt1Z951A4K57cmQmCgk'
29-
3028 let puzzleMarket = Address(base58'3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc')
3129
3230 let burnxtn = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns'
4139
4240 let puzzleStaked = tryGetInteger(puzzleStaking, (toString(this) + "_staked"))
4341
44-let puzzleInPool = tryGetInteger(Address(bbbPoolId), (("global_" + toBase58String(puzzle)) + "_balance"))
42+let puzzleInPool = tryGetInteger(Address(poolBBB), (("global_" + toBase58String(puzzle)) + "_balance"))
4543
46-let projectStake = tryGetInteger(Address(bbbPoolId), (toString(this) + "_indexStaked"))
44+let projectStake = tryGetInteger(Address(poolBBB), (toString(this) + "_indexStaked"))
4745
48-let totalStake = tryGetInteger(Address(bbbPoolId), "global_poolToken_amount")
46+let totalStake = tryGetInteger(Address(poolBBB), "global_poolToken_amount")
4947
50-let assetWeight = tryGetInteger(Address(bbbPoolId), (("static_" + toBase58String(puzzle)) + "_weight"))
48+let assetWeight = tryGetInteger(Address(poolBBB), (("static_" + toBase58String(puzzle)) + "_weight"))
5149
5250 let BBBlpInPuzzle = fraction(((puzzleInPool / assetWeight) * 10000), projectStake, totalStake)
5351
7472 let keyTotalRomePaid = "Total ROME paid"
7573
7674 let keyTotalWavesPaid = "Total WAVES paid"
75+
76+let keyRomeBalance = "ROME balance"
7777
7878 let WFSlist = ["Gnpy5nVajPP3XQQVxrHboMAsXtjnyWAxybMDdKrbr8sD", "BT9Q4mQdQQmei2r5YNMBMasZBQj7myNaiz6QHba5cPXS", "BMvkyFtPVmFatpFR9QVFKR5MYTcZVTY2VUwFZ25vrAAc", "77Rqu8TLjBdMtDuXd9o5fUSGo64zQe5FCcao5L8Ht9j8", "8KnhBLV49SDJzq1SSy1YvGHYY6m7Q146bV7Q6GKqQb5C", "FFxsUfKbHEW4zZywLUL55ip8Nqp6fcWDsq7y3an9yQhe", "5nQRedGHoVpEQasMQivb1UMvFBCHXefXPXtURbMMnfsu", "6N3MSFtJGvT79ucX4pLftxP7fGs8DnmYdPedvnoNbVt9", "dFC2iJL4LDWasq9YzHf2kWfPNP69Tyamii93ns9BHvM", "A158T7yZLtmuiMEs21P9jV2ftbMXzy3MnfHMEu1eMAGK"]
7979
102102 func claimInvestPuzzle () = if ((i.caller != this))
103103 then throw("access only by project owner")
104104 else {
105- let romeBalanceBefore = assetBalance(this, rome)
106- if ((romeBalanceBefore == romeBalanceBefore))
105+ let claimPuzzleStaking = invoke(puzzleStaking, "claimReward", nil, nil)
106+ if ((claimPuzzleStaking == claimPuzzleStaking))
107107 then {
108- let claimPuzzleStaking = invoke(puzzleStaking, "claimReward", nil, nil)
109- if ((claimPuzzleStaking == claimPuzzleStaking))
110- then {
111- let poolOneTokenInv = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [toBase58String(poolBBB)], [AttachedPayment(puzzle, assetBalance(this, puzzle))])
112- if ((poolOneTokenInv == poolOneTokenInv))
113- then {
114- let romeBalanceAfter = assetBalance(this, rome)
115-[IntegerEntry("Activated blockheight", height), IntegerEntry(keyBurnxtnAmount, assetBalance(this, burnxtn)), IntegerEntry(keyRomeAmount, (romeBalanceAfter - romeBalanceBefore)), IntegerEntry(keyWavesAmount, if (((wavesBalance(this).available - d8) > 0))
116- then (wavesBalance(this).available - d8)
117- else 0), IntegerEntry(keyWhirlpoolAmount, assetBalance(this, whirlpool))]
118- }
119- else throw("Strict value is not equal to itself.")
120- }
108+ let poolOneTokenInv = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [toBase58String(poolBBB)], [AttachedPayment(puzzle, assetBalance(this, puzzle))])
109+ if ((poolOneTokenInv == poolOneTokenInv))
110+ then [IntegerEntry("Activated blockheight", height), IntegerEntry(keyBurnxtnAmount, assetBalance(this, burnxtn)), IntegerEntry(keyRomeAmount, (assetBalance(this, rome) - getIntegerValue(this, keyRomeBalance))), IntegerEntry(keyWavesAmount, if (((wavesBalance(this).available - d8) > 0))
111+ then (wavesBalance(this).available - d8)
112+ else 0), IntegerEntry(keyWhirlpoolAmount, assetBalance(this, whirlpool))]
121113 else throw("Strict value is not equal to itself.")
122114 }
123115 else throw("Strict value is not equal to itself.")
283275 let puzzleBalanceBefore = assetBalance(this, puzzle)
284276 if ((puzzleBalanceBefore == puzzleBalanceBefore))
285277 then {
286- let romeBalanceBefore = assetBalance(this, rome)
287- if ((romeBalanceBefore == romeBalanceBefore))
278+ let claimPuzzleStaking = invoke(puzzleStaking, "claimReward", nil, nil)
279+ if ((claimPuzzleStaking == claimPuzzleStaking))
288280 then {
289- let claimPuzzleStaking = invoke(puzzleStaking, "claimReward", nil, nil)
290- if ((claimPuzzleStaking == claimPuzzleStaking))
281+ let claimInv = invoke(Address(poolBBB), "claimIndexRewards", nil, nil)
282+ if ((claimInv == claimInv))
291283 then {
292- let claimInv = invoke(Address(poolBBB), "claimIndexRewards", nil, nil)
293- if ((claimInv == claimInv))
294- then {
295- let puzzleBalanceAfter = assetBalance(this, puzzle)
296- let romeBalanceAfter = assetBalance(this, rome)
297-[IntegerEntry(keyBurnxtnAmount, assetBalance(this, burnxtn)), IntegerEntry(keyRomeAmount, (romeBalanceAfter - romeBalanceBefore)), IntegerEntry(keyPuzzleAmount, (puzzleBalanceAfter - puzzleBalanceBefore)), IntegerEntry(keyWavesAmount, if (((wavesBalance(this).available - d8) > 0))
298- then (wavesBalance(this).available - d8)
299- else 0), IntegerEntry(keyWhirlpoolAmount, assetBalance(this, whirlpool))]
300- }
301- else throw("Strict value is not equal to itself.")
284+ let puzzleBalanceAfter = assetBalance(this, puzzle)
285+[IntegerEntry(keyBurnxtnAmount, assetBalance(this, burnxtn)), IntegerEntry(keyRomeAmount, (assetBalance(this, rome) - getIntegerValue(this, keyRomeBalance))), IntegerEntry(keyPuzzleAmount, (puzzleBalanceAfter - puzzleBalanceBefore)), IntegerEntry(keyWavesAmount, if (((wavesBalance(this).available - d8) > 0))
286+ then (wavesBalance(this).available - d8)
287+ else 0), IntegerEntry(keyWhirlpoolAmount, assetBalance(this, whirlpool))]
302288 }
303289 else throw("Strict value is not equal to itself.")
304290 }
426412
427413
428414 @Callable(i)
415+func setRomeBalance (amount) = if ((i.caller != this))
416+ then throw("access only by project owner")
417+ else [IntegerEntry(keyRomeBalance, (amount * d6))]
418+
419+
420+
421+@Callable(i)
429422 func deleteEntry () = if ((i.caller != this))
430423 then throw("access only by project owner")
431424 else [DeleteEntry(keyAddressesRegistered)]
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 d6 = 1000000
2323
2424 let poolBBB = base58'3P9VPwVfNj3dDevQZt1Z951A4K57cmQmCgk'
2525
2626 let puzzleStaking = Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS')
2727
28-let bbbPoolId = base58'3P9VPwVfNj3dDevQZt1Z951A4K57cmQmCgk'
29-
3028 let puzzleMarket = Address(base58'3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc')
3129
3230 let burnxtn = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns'
3331
3432 let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi'
3533
3634 let puzzle = base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS'
3735
3836 let rome = base58'AP4Cb5xLYGH6ZigHreCZHoXpQTWDkPsG2BHqfDUx6taJ'
3937
4038 let surf = base58'At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL'
4139
4240 let puzzleStaked = tryGetInteger(puzzleStaking, (toString(this) + "_staked"))
4341
44-let puzzleInPool = tryGetInteger(Address(bbbPoolId), (("global_" + toBase58String(puzzle)) + "_balance"))
42+let puzzleInPool = tryGetInteger(Address(poolBBB), (("global_" + toBase58String(puzzle)) + "_balance"))
4543
46-let projectStake = tryGetInteger(Address(bbbPoolId), (toString(this) + "_indexStaked"))
44+let projectStake = tryGetInteger(Address(poolBBB), (toString(this) + "_indexStaked"))
4745
48-let totalStake = tryGetInteger(Address(bbbPoolId), "global_poolToken_amount")
46+let totalStake = tryGetInteger(Address(poolBBB), "global_poolToken_amount")
4947
50-let assetWeight = tryGetInteger(Address(bbbPoolId), (("static_" + toBase58String(puzzle)) + "_weight"))
48+let assetWeight = tryGetInteger(Address(poolBBB), (("static_" + toBase58String(puzzle)) + "_weight"))
5149
5250 let BBBlpInPuzzle = fraction(((puzzleInPool / assetWeight) * 10000), projectStake, totalStake)
5351
5452 let keyAddressesRegistered = "Addresses registered"
5553
5654 let addresses = dropRight(tryGetString(this, keyAddressesRegistered), 1)
5755
5856 let keyBurnxtnAmount = "BURN-XTN total rewards"
5957
6058 let keyRomeAmount = "ROME total rewards"
6159
6260 let keyPuzzleAmount = "PUZZLE total rewards"
6361
6462 let keyWavesAmount = "WAVES total rewards"
6563
6664 let keyWhirlpoolAmount = "WHIRLPOOL total rewards"
6765
6866 let keyTotalPuzzleValue = "Total puzzle value"
6967
7068 let keyTotalBurnxtnPaid = "Total BURN-XTN paid"
7169
7270 let keyTotalWhirlpoolPaid = "Total WHIRLPOOL paid"
7371
7472 let keyTotalRomePaid = "Total ROME paid"
7573
7674 let keyTotalWavesPaid = "Total WAVES paid"
75+
76+let keyRomeBalance = "ROME balance"
7777
7878 let WFSlist = ["Gnpy5nVajPP3XQQVxrHboMAsXtjnyWAxybMDdKrbr8sD", "BT9Q4mQdQQmei2r5YNMBMasZBQj7myNaiz6QHba5cPXS", "BMvkyFtPVmFatpFR9QVFKR5MYTcZVTY2VUwFZ25vrAAc", "77Rqu8TLjBdMtDuXd9o5fUSGo64zQe5FCcao5L8Ht9j8", "8KnhBLV49SDJzq1SSy1YvGHYY6m7Q146bV7Q6GKqQb5C", "FFxsUfKbHEW4zZywLUL55ip8Nqp6fcWDsq7y3an9yQhe", "5nQRedGHoVpEQasMQivb1UMvFBCHXefXPXtURbMMnfsu", "6N3MSFtJGvT79ucX4pLftxP7fGs8DnmYdPedvnoNbVt9", "dFC2iJL4LDWasq9YzHf2kWfPNP69Tyamii93ns9BHvM", "A158T7yZLtmuiMEs21P9jV2ftbMXzy3MnfHMEu1eMAGK"]
7979
8080 let BBBlist = ["9pCxoGtD18GeH9gCemzqrjHMMjfyBQDfsrRAuxSRagMc", "7DgFgCkBjVDc5P9ZgwsVL9SiTi7kXJuS4aRVgb7ZHW3k", "76bTvE8ttHvsuN1FuH4Kc8QUW4kL4m8c1cjfsXy2GfbV", "4Zrf4H5tiFcQL8eQmnA2wJ1XWPEBH6h1G2MefZDYmcCB", "2DtC4nFnxz5UM6mbjPwMVZpQWZFUqxs52oZrBeNRk9Ao", "DjZGMAFfoQWkMW3S5FTsQN3joncZt6BsmhnEK3ggLxmN", "BneaZXD6ovDJcV5rgfr8hsHZaMQsJQ8DH6a5gTnGCpBc", "4EKfgzFkd5UGKrjnaJV3w7argW1YmF4hq54xWQFzAXb9", "8hGDkWKiu2igDpWT3Hpr4mchDD6xwJ9hGm2h2jnUvTqz", "E3ZnSejpXL1Xr6VG4QoLh8xod9NMgpPe473r9Qk2HibL"]
8181
8282 let SURFboardList = ["DzLSgEaBB4UNbPCZekPSzbQ85KokMB7d1KRRmzUPu5hs", "WmWzsbb3PNvzJ4w4Fb73KcoNGLXumgYZagV22zEiX1w", "7RrxbgayUksPHrA799pKuCr61reT8nENdqCkgVHPgaN2", "FmDLfzspbVJeKhKduLDUba2HoVdRrKtswDKMU3e9qjtP", "HmQvVyQdEjafLrpKPSigdafvcYvLbNYGEgVCxLZRWt1y", "2rVxNMXuvug74TorLQZGC2ERHjAbJnVUgNXQ1kJmtnAe", "9yb9yGJm6gzVozBHuQVHBdAnzfct3N9bRpdjjNUnrzcC", "s1SfGVshf2jKCA9KvvKKvUuK8utp3Ne3ee8Lp6KKLRw", "3E3yb7TvDK762dn11dmRLwapghaefQUEyunVdXSNp4tB", "FH75TvApyVtfd9X5a1Ar19Ns9DNJvzpzLFE5pjh1wi4h", "EgqkbDyWRPgVNVqtEEtRSzWcGD33orVoE2bzYdAdieQS", "DsKyJpJCZcFv9jSnQbQVG4Jx3WSP1KtfHhAKTkSKrVBj", "AesPr5UFDgY5jZXYUZ8JkbYtJovVdDHby15SCksEhmJK", "AVsfdqw2m5aUNxa1HY9emLmCLBfVAGTxVu4ef3xEDKC8", "5jdvSSY2K7h8UiUCXUgK9T7zfMryqw2itKP8BysdXDDk", "A4voKZes8MVDAXyQjKkb6bdEcqMbvB4ptzbpqYqveG5n", "34oZKaWHpSJrZvGLdYu5WG8WWXg7rwF2HHx8K15GfUCQ", "77McCHkmNrRM4DjqkSM9B8YjuJcKtn67jQge1pzZrQ8T", "7NEFBnvGGMfYdBnhMLNpuVgS22LpcgXCZgHfm8DHmmiA", "GoF9yokxHgPNoxoWgjjdmGeWhcLYArSsxqffRtfYGtfs"]
8383
8484 @Callable(i)
8585 func invokeClI1 () = if ((i.caller != this))
8686 then throw("access only by project owner")
8787 else {
8888 let cl = invoke(this, "claimInvestPuzzle", nil, nil)
8989 if ((cl == cl))
9090 then {
9191 let dt = invoke(this, "data", nil, nil)
9292 if ((dt == dt))
9393 then nil
9494 else throw("Strict value is not equal to itself.")
9595 }
9696 else throw("Strict value is not equal to itself.")
9797 }
9898
9999
100100
101101 @Callable(i)
102102 func claimInvestPuzzle () = if ((i.caller != this))
103103 then throw("access only by project owner")
104104 else {
105- let romeBalanceBefore = assetBalance(this, rome)
106- if ((romeBalanceBefore == romeBalanceBefore))
105+ let claimPuzzleStaking = invoke(puzzleStaking, "claimReward", nil, nil)
106+ if ((claimPuzzleStaking == claimPuzzleStaking))
107107 then {
108- let claimPuzzleStaking = invoke(puzzleStaking, "claimReward", nil, nil)
109- if ((claimPuzzleStaking == claimPuzzleStaking))
110- then {
111- let poolOneTokenInv = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [toBase58String(poolBBB)], [AttachedPayment(puzzle, assetBalance(this, puzzle))])
112- if ((poolOneTokenInv == poolOneTokenInv))
113- then {
114- let romeBalanceAfter = assetBalance(this, rome)
115-[IntegerEntry("Activated blockheight", height), IntegerEntry(keyBurnxtnAmount, assetBalance(this, burnxtn)), IntegerEntry(keyRomeAmount, (romeBalanceAfter - romeBalanceBefore)), IntegerEntry(keyWavesAmount, if (((wavesBalance(this).available - d8) > 0))
116- then (wavesBalance(this).available - d8)
117- else 0), IntegerEntry(keyWhirlpoolAmount, assetBalance(this, whirlpool))]
118- }
119- else throw("Strict value is not equal to itself.")
120- }
108+ let poolOneTokenInv = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [toBase58String(poolBBB)], [AttachedPayment(puzzle, assetBalance(this, puzzle))])
109+ if ((poolOneTokenInv == poolOneTokenInv))
110+ then [IntegerEntry("Activated blockheight", height), IntegerEntry(keyBurnxtnAmount, assetBalance(this, burnxtn)), IntegerEntry(keyRomeAmount, (assetBalance(this, rome) - getIntegerValue(this, keyRomeBalance))), IntegerEntry(keyWavesAmount, if (((wavesBalance(this).available - d8) > 0))
111+ then (wavesBalance(this).available - d8)
112+ else 0), IntegerEntry(keyWhirlpoolAmount, assetBalance(this, whirlpool))]
121113 else throw("Strict value is not equal to itself.")
122114 }
123115 else throw("Strict value is not equal to itself.")
124116 }
125117
126118
127119
128120 @Callable(i)
129121 func data () = if ((i.caller != this))
130122 then throw("access only by project owner")
131123 else [IntegerEntry("puzzle balance", assetBalance(this, puzzle)), IntegerEntry("puzzle staked", puzzleStaked), IntegerEntry("puzzle BBB LP", BBBlpInPuzzle), IntegerEntry(keyTotalPuzzleValue, ((assetBalance(this, puzzle) + puzzleStaked) + BBBlpInPuzzle)), IntegerEntry("WFS puzzle value", fraction(fraction(tryGetInteger(this, keyTotalPuzzleValue), 1, 110), 10, 9)), IntegerEntry("BBB puzzle value", fraction(fraction(tryGetInteger(this, keyTotalPuzzleValue), 10, 110), 10, 9))]
132124
133125
134126
135127 @Callable(i)
136128 func invoker2 () = if ((i.caller != this))
137129 then throw("access only by project owner")
138130 else {
139131 let t = invoke(this, "trackTotalPaid", nil, nil)
140132 if ((t == t))
141133 then {
142134 let list = split_4C(addresses, ",")
143135 func r (accum,address) = invoke(this, "distributeRewards", [address], nil)
144136
145137 let invoker = {
146138 let $l = list
147139 let $s = size($l)
148140 let $acc0 = nil
149141 func $f0_1 ($a,$i) = if (($i >= $s))
150142 then $a
151143 else r($a, $l[$i])
152144
153145 func $f0_2 ($a,$i) = if (($i >= $s))
154146 then $a
155147 else throw("List size exceeds 40")
156148
157149 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
158150 }
159151 if ((invoker == invoker))
160152 then {
161153 let bs = invoke(this, "burnSurf", nil, nil)
162154 if ((bs == bs))
163155 then nil
164156 else throw("Strict value is not equal to itself.")
165157 }
166158 else throw("Strict value is not equal to itself.")
167159 }
168160 else throw("Strict value is not equal to itself.")
169161 }
170162
171163
172164
173165 @Callable(i)
174166 func trackTotalPaid () = if ((i.caller != this))
175167 then throw("access only by project owner")
176168 else {
177169 let amountBurnxtn = tryGetInteger(this, keyBurnxtnAmount)
178170 let amountWhirlpool = tryGetInteger(this, keyWhirlpoolAmount)
179171 let amountWaves = tryGetInteger(this, keyWavesAmount)
180172 let amountRome = tryGetInteger(this, keyRomeAmount)
181173 [IntegerEntry(keyTotalBurnxtnPaid, (amountBurnxtn + tryGetInteger(this, keyTotalBurnxtnPaid))), IntegerEntry(keyTotalWhirlpoolPaid, (amountWhirlpool + tryGetInteger(this, keyTotalWhirlpoolPaid))), IntegerEntry(keyTotalWavesPaid, (amountWaves + tryGetInteger(this, keyTotalWavesPaid))), IntegerEntry(keyTotalRomePaid, (amountRome + tryGetInteger(this, keyTotalRomePaid)))]
182174 }
183175
184176
185177
186178 @Callable(i)
187179 func distributeRewards (address) = if ((i.caller != this))
188180 then throw("access only by project owner")
189181 else {
190182 func foldFunc (acc,WFS) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(WFS))) + (if ((tryGetString(puzzleMarket, (("nft_" + WFS) + "_seller")) == address))
191183 then 1
192184 else 0))
193185
194186 let shareWFS = {
195187 let $l = WFSlist
196188 let $s = size($l)
197189 let $acc0 = 0
198190 func $f0_1 ($a,$i) = if (($i >= $s))
199191 then $a
200192 else foldFunc($a, $l[$i])
201193
202194 func $f0_2 ($a,$i) = if (($i >= $s))
203195 then $a
204196 else throw("List size exceeds 10")
205197
206198 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
207199 }
208200 func foldFuncB (acc,BBB) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(BBB))) + (if ((tryGetString(puzzleMarket, (("nft_" + BBB) + "_seller")) == address))
209201 then 1
210202 else 0))
211203
212204 let shareBBB = {
213205 let $l = BBBlist
214206 let $s = size($l)
215207 let $acc0 = 0
216208 func $f1_1 ($a,$i) = if (($i >= $s))
217209 then $a
218210 else foldFuncB($a, $l[$i])
219211
220212 func $f1_2 ($a,$i) = if (($i >= $s))
221213 then $a
222214 else throw("List size exceeds 10")
223215
224216 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
225217 }
226218 func foldFuncC (acc,SURFboard) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(SURFboard))) + (if ((tryGetString(puzzleMarket, (("nft_" + SURFboard) + "_seller")) == address))
227219 then 1
228220 else 0))
229221
230222 let amountSURFboard = {
231223 let $l = SURFboardList
232224 let $s = size($l)
233225 let $acc0 = 0
234226 func $f2_1 ($a,$i) = if (($i >= $s))
235227 then $a
236228 else foldFuncC($a, $l[$i])
237229
238230 func $f2_2 ($a,$i) = if (($i >= $s))
239231 then $a
240232 else throw("List size exceeds 20")
241233
242234 $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
243235 }
244236 if ((((shareWFS + shareBBB) + amountSURFboard) == 0))
245237 then {
246238 let list = split_4C(addresses, ",")
247239 let noNFTindex = value(indexOf(list, address))
248240 let listMinusNoNFT = removeByIndex(list, noNFTindex)
249241 let minusNoNFTstr = (makeString(listMinusNoNFT, ",") + ",")
250242 [StringEntry(keyAddressesRegistered, minusNoNFTstr)]
251243 }
252244 else {
253245 let amountBurnxtn = fraction(tryGetInteger(this, keyBurnxtnAmount), (shareWFS + (shareBBB * 10)), 110)
254246 let amountWhirlpool = fraction(tryGetInteger(this, keyWhirlpoolAmount), (shareWFS + (shareBBB * 10)), 110)
255247 let amountWaves = fraction(tryGetInteger(this, keyWavesAmount), (shareWFS + (shareBBB * 10)), 110)
256248 let amountRome = fraction(tryGetInteger(this, keyRomeAmount), (shareWFS + (shareBBB * 10)), 110)
257249 [ScriptTransfer(addressFromStringValue(address), amountBurnxtn, burnxtn), ScriptTransfer(addressFromStringValue(address), amountWhirlpool, whirlpool), ScriptTransfer(addressFromStringValue(address), amountWaves, unit), ScriptTransfer(addressFromStringValue(address), amountRome, rome), ScriptTransfer(addressFromStringValue(address), (amountSURFboard * d6), surf)]
258250 }
259251 }
260252
261253
262254
263255 @Callable(i)
264256 func burnSurf () = if ((i.caller != this))
265257 then throw("access only by project owner")
266258 else [Burn(surf, d6), IntegerEntry("SURF total burned", (tryGetInteger(this, "SURF total burned") + d6))]
267259
268260
269261
270262 @Callable(i)
271263 func register () = if (contains(tryGetString(this, keyAddressesRegistered), toString(i.caller)))
272264 then throw("already registered")
273265 else if ((size(split_4C(addresses, ",")) == 30))
274266 then throw("max reached")
275267 else [StringEntry(keyAddressesRegistered, ((tryGetString(this, keyAddressesRegistered) + toString(i.caller)) + ","))]
276268
277269
278270
279271 @Callable(i)
280272 func claimByAnybody () = if (((getIntegerValue(this, "Activated blockheight") + (30 * 1440)) > height))
281273 then throw(("Wait till blockheight:" + toString((getIntegerValue(this, "Activated blockheight") + (30 * 1440)))))
282274 else {
283275 let puzzleBalanceBefore = assetBalance(this, puzzle)
284276 if ((puzzleBalanceBefore == puzzleBalanceBefore))
285277 then {
286- let romeBalanceBefore = assetBalance(this, rome)
287- if ((romeBalanceBefore == romeBalanceBefore))
278+ let claimPuzzleStaking = invoke(puzzleStaking, "claimReward", nil, nil)
279+ if ((claimPuzzleStaking == claimPuzzleStaking))
288280 then {
289- let claimPuzzleStaking = invoke(puzzleStaking, "claimReward", nil, nil)
290- if ((claimPuzzleStaking == claimPuzzleStaking))
281+ let claimInv = invoke(Address(poolBBB), "claimIndexRewards", nil, nil)
282+ if ((claimInv == claimInv))
291283 then {
292- let claimInv = invoke(Address(poolBBB), "claimIndexRewards", nil, nil)
293- if ((claimInv == claimInv))
294- then {
295- let puzzleBalanceAfter = assetBalance(this, puzzle)
296- let romeBalanceAfter = assetBalance(this, rome)
297-[IntegerEntry(keyBurnxtnAmount, assetBalance(this, burnxtn)), IntegerEntry(keyRomeAmount, (romeBalanceAfter - romeBalanceBefore)), IntegerEntry(keyPuzzleAmount, (puzzleBalanceAfter - puzzleBalanceBefore)), IntegerEntry(keyWavesAmount, if (((wavesBalance(this).available - d8) > 0))
298- then (wavesBalance(this).available - d8)
299- else 0), IntegerEntry(keyWhirlpoolAmount, assetBalance(this, whirlpool))]
300- }
301- else throw("Strict value is not equal to itself.")
284+ let puzzleBalanceAfter = assetBalance(this, puzzle)
285+[IntegerEntry(keyBurnxtnAmount, assetBalance(this, burnxtn)), IntegerEntry(keyRomeAmount, (assetBalance(this, rome) - getIntegerValue(this, keyRomeBalance))), IntegerEntry(keyPuzzleAmount, (puzzleBalanceAfter - puzzleBalanceBefore)), IntegerEntry(keyWavesAmount, if (((wavesBalance(this).available - d8) > 0))
286+ then (wavesBalance(this).available - d8)
287+ else 0), IntegerEntry(keyWhirlpoolAmount, assetBalance(this, whirlpool))]
302288 }
303289 else throw("Strict value is not equal to itself.")
304290 }
305291 else throw("Strict value is not equal to itself.")
306292 }
307293 else throw("Strict value is not equal to itself.")
308294 }
309295
310296
311297
312298 @Callable(i)
313299 func invokerByAnybody () = if (((getIntegerValue(this, "Activated blockheight") + (30 * 1440)) > height))
314300 then throw(("Wait till blockheight:" + toString((getIntegerValue(this, "Activated blockheight") + (30 * 1440)))))
315301 else {
316302 let t = invoke(this, "trackTotalPaid", nil, nil)
317303 if ((t == t))
318304 then {
319305 let list = split_4C(addresses, ",")
320306 func r (accum,address) = invoke(this, "distributeRewardsB", [address], nil)
321307
322308 let invoker = {
323309 let $l = list
324310 let $s = size($l)
325311 let $acc0 = nil
326312 func $f0_1 ($a,$i) = if (($i >= $s))
327313 then $a
328314 else r($a, $l[$i])
329315
330316 func $f0_2 ($a,$i) = if (($i >= $s))
331317 then $a
332318 else throw("List size exceeds 40")
333319
334320 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
335321 }
336322 if ((invoker == invoker))
337323 then {
338324 let bs = invoke(this, "burnSurf", nil, nil)
339325 if ((bs == bs))
340326 then nil
341327 else throw("Strict value is not equal to itself.")
342328 }
343329 else throw("Strict value is not equal to itself.")
344330 }
345331 else throw("Strict value is not equal to itself.")
346332 }
347333
348334
349335
350336 @Callable(i)
351337 func distributeRewardsB (address) = if ((i.caller != this))
352338 then throw("access only by project owner")
353339 else {
354340 func foldFunc (acc,WFS) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(WFS))) + (if ((tryGetString(puzzleMarket, (("nft_" + WFS) + "_seller")) == address))
355341 then 1
356342 else 0))
357343
358344 let shareWFS = {
359345 let $l = WFSlist
360346 let $s = size($l)
361347 let $acc0 = 0
362348 func $f0_1 ($a,$i) = if (($i >= $s))
363349 then $a
364350 else foldFunc($a, $l[$i])
365351
366352 func $f0_2 ($a,$i) = if (($i >= $s))
367353 then $a
368354 else throw("List size exceeds 10")
369355
370356 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
371357 }
372358 func foldFuncB (acc,BBB) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(BBB))) + (if ((tryGetString(puzzleMarket, (("nft_" + BBB) + "_seller")) == address))
373359 then 1
374360 else 0))
375361
376362 let shareBBB = {
377363 let $l = BBBlist
378364 let $s = size($l)
379365 let $acc0 = 0
380366 func $f1_1 ($a,$i) = if (($i >= $s))
381367 then $a
382368 else foldFuncB($a, $l[$i])
383369
384370 func $f1_2 ($a,$i) = if (($i >= $s))
385371 then $a
386372 else throw("List size exceeds 10")
387373
388374 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
389375 }
390376 func foldFuncC (acc,SURFboard) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(SURFboard))) + (if ((tryGetString(puzzleMarket, (("nft_" + SURFboard) + "_seller")) == address))
391377 then 1
392378 else 0))
393379
394380 let amountSURFboard = {
395381 let $l = SURFboardList
396382 let $s = size($l)
397383 let $acc0 = 0
398384 func $f2_1 ($a,$i) = if (($i >= $s))
399385 then $a
400386 else foldFuncC($a, $l[$i])
401387
402388 func $f2_2 ($a,$i) = if (($i >= $s))
403389 then $a
404390 else throw("List size exceeds 20")
405391
406392 $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
407393 }
408394 if ((((shareWFS + shareBBB) + amountSURFboard) == 0))
409395 then {
410396 let list = split_4C(addresses, ",")
411397 let noNFTindex = value(indexOf(list, address))
412398 let listMinusNoNFT = removeByIndex(list, noNFTindex)
413399 let minusNoNFTstr = (makeString(listMinusNoNFT, ",") + ",")
414400 [StringEntry(keyAddressesRegistered, minusNoNFTstr)]
415401 }
416402 else {
417403 let amountBurnxtn = fraction(tryGetInteger(this, keyBurnxtnAmount), (shareWFS + (shareBBB * 10)), 110)
418404 let amountWhirlpool = fraction(tryGetInteger(this, keyWhirlpoolAmount), (shareWFS + (shareBBB * 10)), 110)
419405 let amountWaves = fraction(tryGetInteger(this, keyWavesAmount), (shareWFS + (shareBBB * 10)), 110)
420406 let amountRome = fraction(tryGetInteger(this, keyRomeAmount), (shareWFS + (shareBBB * 10)), 110)
421407 let amountPuzzle = fraction(tryGetInteger(this, keyPuzzleAmount), (shareWFS + (shareBBB * 10)), 110)
422408 [ScriptTransfer(addressFromStringValue(address), amountBurnxtn, burnxtn), ScriptTransfer(addressFromStringValue(address), amountWhirlpool, whirlpool), ScriptTransfer(addressFromStringValue(address), amountWaves, unit), ScriptTransfer(addressFromStringValue(address), amountRome, rome), ScriptTransfer(addressFromStringValue(address), amountPuzzle, puzzle), ScriptTransfer(addressFromStringValue(address), (amountSURFboard * d6), surf)]
423409 }
424410 }
425411
426412
427413
428414 @Callable(i)
415+func setRomeBalance (amount) = if ((i.caller != this))
416+ then throw("access only by project owner")
417+ else [IntegerEntry(keyRomeBalance, (amount * d6))]
418+
419+
420+
421+@Callable(i)
429422 func deleteEntry () = if ((i.caller != this))
430423 then throw("access only by project owner")
431424 else [DeleteEntry(keyAddressesRegistered)]
432425
433426
434427
435428 @Callable(i)
436429 func changeIntegerEntry (keyString,integer) = if ((i.caller != this))
437430 then throw("access only by project owner")
438431 else [IntegerEntry(keyString, integer)]
439432
440433

github/deemru/w8io/6500d08 
61.65 ms