tx · 3zNmEVWWUG5rThBpign4tgGk3zF6tH2MW2qUDw6SitH2

3PFe3tWVs5Ckv25NLpjnk7FePThMjfcFvxM:  -0.01000000 Waves

2023.12.26 11:20 [3969333] smart account 3PFe3tWVs5Ckv25NLpjnk7FePThMjfcFvxM > SELF 0.00000000 Waves

{ "type": 13, "id": "3zNmEVWWUG5rThBpign4tgGk3zF6tH2MW2qUDw6SitH2", "fee": 1000000, "feeAssetId": null, "timestamp": 1703578868936, "version": 2, "chainId": 87, "sender": "3PFe3tWVs5Ckv25NLpjnk7FePThMjfcFvxM", "senderPublicKey": "9hMgJtjZvTDCisH8nZfVJrhvXAMDRww5a3DvqA41oebE", "proofs": [ "5ECprrCxrya9weXXMtmdGkQFhv6hdmMKCRdvXNNpcpk5YatzRu68VTTAZXg4gfsLSJr8S4E2948hfKvKpKeMYx7v" ], "script": "base64:BgITCAISAwoBARIAEgMKAQgSAwoBCAkAA1NFUAICX18AEW1haW5fY29udHJhY3Rfa2V5Ag1tYWluX2NvbnRyYWN0ABptYWluX2NvbnRyYWN0X2xwX3Bvb2xzX2tleQIIbHBfcG9vbHMAKm1haW5fY29udHJhY3RfY2xhaW1fcG9vbF9yZXdhcmRzX2Z1bmNfbmFtZQIQY2xhaW1Qb29sUmV3YXJkcwAWd2F2ZXNfZXhjaGFuZ2VfYWRkcmVzcwEaAVez5uZVGBFpsOQzD4hRQ6ScrtbVSwNLEVgADHR3YXBfYWRkcmVzcwEaAVdWr1FiJSk5tW/fptjM4r5LDlD9oMpAzwQACXNidF9hc3NldAEgDZ6U5N95Irl+cE0MjjGbPQcPgrJ95ZAG5OSeB6DqUcIACHd4X2Fzc2V0ASCTARyrqcduJVfOZp5xtr2qa/g86FgLKu7ZoE67PNwUsQEPYXNBZGRyZXNzU3RyaW5nAQdhZGRyZXNzBAckbWF0Y2gwCQCmCAEFB2FkZHJlc3MDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAkApQgBBQFhCQACAQIgZmFpbCB0byBjYXN0IGludG8gQWRkcmVzcyBTdHJpbmcEAWkBGGNsYWltUmV3YXJkc09uVGhyZWVQb29scwECaWQEFW1haW5fY29udHJhY3RfYWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAoggBBRFtYWluX2NvbnRyYWN0X2tleQIjM1A4RUg2U0xOMW5VeTkyQ1F6dTUzMXlYQ3lXYXhoczNRaHMEBXBvb2xzCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFFW1haW5fY29udHJhY3RfYWRkcmVzcwUabWFpbl9jb250cmFjdF9scF9wb29sc19rZXkFA1NFUAQIc2l4UG9vbHMDCQAAAgUCaWQAAAkAzAgCCQCRAwIFBXBvb2xzAAAJAMwIAgkAkQMCBQVwb29scwABCQDMCAIJAJEDAgUFcG9vbHMAAgUDbmlsAwkAAAIFAmlkAAEJAMwIAgkAkQMCBQVwb29scwADCQDMCAIJAJEDAgUFcG9vbHMABAkAzAgCCQCRAwIFBXBvb2xzAAUFA25pbAMJAAACBQJpZAACCQDMCAIJAJEDAgUFcG9vbHMABgkAzAgCCQCRAwIFBXBvb2xzAAcJAMwIAgkAkQMCBQVwb29scwAIBQNuaWwDCQAAAgUCaWQAAwkAzAgCCQCRAwIFBXBvb2xzAAkJAMwIAgkAkQMCBQVwb29scwAKCQDMCAIJAJEDAgUFcG9vbHMACwUDbmlsBQNuaWwKAQxwb29sc0FjdGlvbnMCA2FjYwRwb29sBBBpbnZvY2F0aW9uUmVzdWx0CQD8BwQFFW1haW5fY29udHJhY3RfYWRkcmVzcwUqbWFpbl9jb250cmFjdF9jbGFpbV9wb29sX3Jld2FyZHNfZnVuY19uYW1lCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAAIFEGludm9jYXRpb25SZXN1bHQFEGludm9jYXRpb25SZXN1bHQFA2FjYwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQGcmVzdWx0CgACJGwFCHNpeFBvb2xzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUEdW5pdAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEMcG9vbHNBY3Rpb25zAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwMJAAACBQZyZXN1bHQFBnJlc3VsdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEm1haW5faW5mb19yZWFkb25seQAEDW1haW5fY29udHJhY3QJAQt2YWx1ZU9yRWxzZQIJAKIIAQURbWFpbl9jb250cmFjdF9rZXkCIzNQOEVINlNMTjFuVXk5MkNRenU1MzF5WEN5V2F4aHMzUWhzBBVtYWluX2NvbnRyYWN0X2FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDW1haW5fY29udHJhY3QECHRvdGFsR3d4BAZyZXN1bHQJAPwHBAkBB0FkZHJlc3MBBRZ3YXZlc19leGNoYW5nZV9hZGRyZXNzAhNnd3hVc2VySW5mb1JFQURPTkxZCQDMCAIFDW1haW5fY29udHJhY3QFA25pbAUDbmlsAwkAAAIFBnJlc3VsdAUGcmVzdWx0BAckbWF0Y2gwBQZyZXN1bHQDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAN2YWwFByRtYXRjaDAKAAFACQCRAwIFA3ZhbAAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAkAAgECGEZBVEFMOiBJbmNvbnNpc3RlbnQgZGF0YQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQh0b3RhbEd3eAUIdG90YWxHd3gEDnNidF9zdGFrZV9wb29sCQERQGV4dHJOYXRpdmUoMTA1MykCBRVtYWluX2NvbnRyYWN0X2FkZHJlc3MCDnNidF9zdGFrZV9wb29sBBZhZGRpdGlvbmFsX3Jld2FyZF9wb29sCQERQGV4dHJOYXRpdmUoMTA1MykCBRVtYWluX2NvbnRyYWN0X2FkZHJlc3MCFmFkZGl0aW9uYWxfcmV3YXJkX3Bvb2wED3RvdGFsX3d4X2xvY2tlZAkBEUBleHRyTmF0aXZlKDEwNTApAgUVbWFpbl9jb250cmFjdF9hZGRyZXNzAg90b3RhbF93eF9sb2NrZWQEEm1haW5fY29udHJhY3RfZGF0YQkAlgoEBQh0b3RhbEd3eAUOc2J0X3N0YWtlX3Bvb2wFFmFkZGl0aW9uYWxfcmV3YXJkX3Bvb2wFD3RvdGFsX3d4X2xvY2tlZAQFcG9vbHMJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUVbWFpbl9jb250cmFjdF9hZGRyZXNzBRptYWluX2NvbnRyYWN0X2xwX3Bvb2xzX2tleQUDU0VQCgEVcG9vbHNfZGF0YV9jb2xsZWN0aW5nAgNhY2MEcG9vbAQMcG9vbF9hZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sBApwb29sX3Rva2VuCQERQGV4dHJOYXRpdmUoMTA1MykCBQxwb29sX2FkZHJlc3MCBXRva2VuBBFwb29sX3Rva2VuX2Ftb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUMcG9vbF9hZGRyZXNzAgZ0b2tlbnMEEnBvb2xfcmV3YXJkX2Fzc2V0cwkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQxwb29sX2FkZHJlc3MCB3Jld2FyZHMCASwEC3Bvb2xfa2lsbGVkCQERQGV4dHJOYXRpdmUoMTA1MSkCBQxwb29sX2FkZHJlc3MCCWlzX2tpbGxlZAQScG9vbF9sb2NrZWRfcGVyaW9kCQERQGV4dHJOYXRpdmUoMTA1MCkCBQxwb29sX2FkZHJlc3MCDWxvY2tlZF9wZXJpb2QKASNwb29sc19yZXdhcmRfYXNzZXRzX3R3YXBfY29sbGVjdGluZwIDYWNjCnBvb2xfYXNzZXQEC3R3YXBfcmVzdWx0CQD8BwQJAQdBZGRyZXNzAQUMdHdhcF9hZGRyZXNzAgl0d2FwTU9OVEgJAMwIAgUEcG9vbAkAzAgCBQpwb29sX2Fzc2V0CQDMCAIFCnBvb2xfdG9rZW4FA25pbAUDbmlsAwkAAAIFC3R3YXBfcmVzdWx0BQt0d2FwX3Jlc3VsdAQHJG1hdGNoMAULdHdhcF9yZXN1bHQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAN2YWwFByRtYXRjaDAJAM4IAgUDYWNjCQDMCAIJAKwCAgkArAICBQpwb29sX2Fzc2V0AgFfBQN2YWwFA25pbAkAAgECGEZBVEFMOiBJbmNvbnNpc3RlbnQgZGF0YQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQQcG9vbF90d2FwX3Jlc3VsdAoAAiRsBRJwb29sX3Jld2FyZF9hc3NldHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBI3Bvb2xzX3Jld2FyZF9hc3NldHNfdHdhcF9jb2xsZWN0aW5nAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADCQDOCAIFA2FjYwkAzAgCCQCYCgYFBHBvb2wFCnBvb2xfdG9rZW4FEXBvb2xfdG9rZW5fYW1vdW50BQtwb29sX2tpbGxlZAUScG9vbF9sb2NrZWRfcGVyaW9kBRBwb29sX3R3YXBfcmVzdWx0BQNuaWwECnBvb2xzX2RhdGEKAAIkbAkAzggCBQVwb29scwkAzAgCBQ5zYnRfc3Rha2VfcG9vbAUDbmlsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARVwb29sc19kYXRhX2NvbGxlY3RpbmcCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPCQCUCgIFA25pbAkAlAoCBRJtYWluX2NvbnRyYWN0X2RhdGEFCnBvb2xzX2RhdGEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESdXNlcl9pbmZvX3JlYWRvbmx5AQR1c2VyBA1tYWluX2NvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCiCAEFEW1haW5fY29udHJhY3Rfa2V5AiMzUDhFSDZTTE4xblV5OTJDUXp1NTMxeVhDeVdheGhzM1FocwQVbWFpbl9jb250cmFjdF9hZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQ1tYWluX2NvbnRyYWN0BA5zYnRfc3Rha2VfcG9vbAkBEUBleHRyTmF0aXZlKDEwNTMpAgUVbWFpbl9jb250cmFjdF9hZGRyZXNzAg5zYnRfc3Rha2VfcG9vbAQWYWRkaXRpb25hbF9yZXdhcmRfcG9vbAkBEUBleHRyTmF0aXZlKDEwNTMpAgUVbWFpbl9jb250cmFjdF9hZGRyZXNzAhZhZGRpdGlvbmFsX3Jld2FyZF9wb29sBA90b3RhbF93eF9sb2NrZWQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFFW1haW5fY29udHJhY3RfYWRkcmVzcwIPdG90YWxfd3hfbG9ja2VkBBZzYnRfc3Rha2VfcG9vbF9hZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQ5zYnRfc3Rha2VfcG9vbAQadXNlcl9zYnRfcG9vbF90b3RhbF9sb2NrZWQKAAFACQD8BwQFFnNidF9zdGFrZV9wb29sX2FkZHJlc3MCEGNsYWltYWJsZV90b2tlbnMJAMwIAgUEdXNlcgUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFGnVzZXJfc2J0X3Bvb2xfdG90YWxfbG9ja2VkBRp1c2VyX3NidF9wb29sX3RvdGFsX2xvY2tlZAQedXNlcl9zYnRfcG9vbF90b3RhbF9jbGFpbWVkX3d4CgABQAkA/AcEBRZzYnRfc3Rha2VfcG9vbF9hZGRyZXNzAg5jbGFpbWVkX3Jld2FyZAkAzAgCBQR1c2VyCQDMCAIJANgEAQUJc2J0X2Fzc2V0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUedXNlcl9zYnRfcG9vbF90b3RhbF9jbGFpbWVkX3d4BR51c2VyX3NidF9wb29sX3RvdGFsX2NsYWltZWRfd3gEGnVzZXJfc2J0X3Bvb2xfdW5jbGFpbWVkX3d4CgABQAkA/AcEBRZzYnRfc3Rha2VfcG9vbF9hZGRyZXNzAhBjbGFpbWFibGVfcmV3YXJkCQDMCAIFBHVzZXIJAMwIAgkA2AQBBQh3eF9hc3NldAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFGnVzZXJfc2J0X3Bvb2xfdW5jbGFpbWVkX3d4BRp1c2VyX3NidF9wb29sX3VuY2xhaW1lZF93eAQfdXNlcl9zYnRfcG9vbF93YWl0aW5nX3RvX3VubG9jawoAAUAJAPwHBAUWc2J0X3N0YWtlX3Bvb2xfYWRkcmVzcwIUdXNlcl9sb2NrZWRfcmVhZG9ubHkJAMwIAgUEdXNlcgUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFH3VzZXJfc2J0X3Bvb2xfd2FpdGluZ190b191bmxvY2sFH3VzZXJfc2J0X3Bvb2xfd2FpdGluZ190b191bmxvY2sEEnVzZXJfc2J0X3Bvb2xfZGF0YQkAlgoEBRp1c2VyX3NidF9wb29sX3RvdGFsX2xvY2tlZAUedXNlcl9zYnRfcG9vbF90b3RhbF9jbGFpbWVkX3d4BRp1c2VyX3NidF9wb29sX3VuY2xhaW1lZF93eAUfdXNlcl9zYnRfcG9vbF93YWl0aW5nX3RvX3VubG9jawQFcG9vbHMJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUVbWFpbl9jb250cmFjdF9hZGRyZXNzBRptYWluX2NvbnRyYWN0X2xwX3Bvb2xzX2tleQUDU0VQCgEVcG9vbHNfZGF0YV9hY2NvdW50aW5nAgNhY2MEcG9vbAQMcG9vbF9hZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sBApwb29sX3Rva2VuCQERQGV4dHJOYXRpdmUoMTA1MykCBQxwb29sX2FkZHJlc3MCBXRva2VuBBJ1c2VyX3N0YWtlZF9hbW91bnQKAAFACQD8BwQFDHBvb2xfYWRkcmVzcwIQY2xhaW1hYmxlX3Rva2VucwkAzAgCBQR1c2VyBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUSdXNlcl9zdGFrZWRfYW1vdW50BRJ1c2VyX3N0YWtlZF9hbW91bnQEFXVzZXJfdG90YWxfd3hfY2xhaW1lZAoAAUAJAPwHBAUMcG9vbF9hZGRyZXNzAg5jbGFpbWVkX3Jld2FyZAkAzAgCBQR1c2VyCQDMCAIJANgEAQUId3hfYXNzZXQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBRV1c2VyX3RvdGFsX3d4X2NsYWltZWQFFXVzZXJfdG90YWxfd3hfY2xhaW1lZAQWdXNlcl90b3RhbF9zYnRfY2xhaW1lZAoAAUAJAPwHBAUMcG9vbF9hZGRyZXNzAg5jbGFpbWVkX3Jld2FyZAkAzAgCBQR1c2VyCQDMCAIJANgEAQUJc2J0X2Fzc2V0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUWdXNlcl90b3RhbF9zYnRfY2xhaW1lZAUWdXNlcl90b3RhbF9zYnRfY2xhaW1lZAQRdXNlcl91bmNsYWltZWRfd3gKAAFACQD8BwQFDHBvb2xfYWRkcmVzcwIQY2xhaW1hYmxlX3Jld2FyZAkAzAgCBQR1c2VyCQDMCAIJANgEAQUId3hfYXNzZXQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBRF1c2VyX3VuY2xhaW1lZF93eAURdXNlcl91bmNsYWltZWRfd3gEEnVzZXJfdW5jbGFpbWVkX1NidAoAAUAJAPwHBAUMcG9vbF9hZGRyZXNzAhBjbGFpbWFibGVfcmV3YXJkCQDMCAIFBHVzZXIJAMwIAgkA2AQBBQlzYnRfYXNzZXQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBRJ1c2VyX3VuY2xhaW1lZF9TYnQFEnVzZXJfdW5jbGFpbWVkX1NidAkAzggCBQNhY2MJAMwIAgkAmQoHBQRwb29sBQpwb29sX3Rva2VuBRJ1c2VyX3N0YWtlZF9hbW91bnQFFXVzZXJfdG90YWxfd3hfY2xhaW1lZAUWdXNlcl90b3RhbF9zYnRfY2xhaW1lZAURdXNlcl91bmNsYWltZWRfd3gFEnVzZXJfdW5jbGFpbWVkX1NidAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA91c2VyX3Bvb2xzX2RhdGEKAAIkbAUFcG9vbHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBFXBvb2xzX2RhdGFfYWNjb3VudGluZwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8JAJQKAgUDbmlsCQCUCgIFEnVzZXJfc2J0X3Bvb2xfZGF0YQUPdXNlcl9wb29sc19kYXRhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3NldE1haW5Db250cmFjdAEHYWRkcmVzcwMJAQIhPQIFBHRoaXMIBQFpBmNhbGxlcgkAAgECCW9ubHkgc2VsZgkAzAgCCQELU3RyaW5nRW50cnkCBRFtYWluX2NvbnRyYWN0X2tleQkBD2FzQWRkcmVzc1N0cmluZwEFB2FkZHJlc3MFA25pbAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXmCChwU", "height": 3969333, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5nqXni4Hczwj4NKdQCnfV5UUGDJdSoYao4UG3m85AetK Next: AeDnuCb1KS8pW6zf8KMhmnRSgDASKDja7Z7gktmcQShi Diff:
OldNewDifferences
2626
2727
2828 @Callable(i)
29-func claimRewardsOnFirstSevenPools (isSecond) = {
29+func claimRewardsOnThreePools (id) = {
3030 let main_contract_address = addressFromStringValue(valueOrElse(getString(main_contract_key), "3P8EH6SLN1nUy92CQzu531yXCyWaxhs3Qhs"))
3131 let pools = split(getStringValue(main_contract_address, main_contract_lp_pools_key), SEP)
32- let sixPools = if (!(isSecond))
33- then [pools[0], pools[1], pools[2], pools[3], pools[4], pools[5]]
34- else [pools[6], pools[7], pools[8], pools[9], pools[10], pools[11]]
32+ let sixPools = if ((id == 0))
33+ then [pools[0], pools[1], pools[2]]
34+ else if ((id == 1))
35+ then [pools[3], pools[4], pools[5]]
36+ else if ((id == 2))
37+ then [pools[6], pools[7], pools[8]]
38+ else if ((id == 3))
39+ then [pools[9], pools[10], pools[11]]
40+ else nil
3541 func poolsActions (acc,pool) = {
3642 let invocationResult = invoke(main_contract_address, main_contract_claim_pool_rewards_func_name, [pool], nil)
3743 if ((invocationResult == invocationResult))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let main_contract_key = "main_contract"
77
88 let main_contract_lp_pools_key = "lp_pools"
99
1010 let main_contract_claim_pool_rewards_func_name = "claimPoolRewards"
1111
1212 let waves_exchange_address = base58'3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP'
1313
1414 let twap_address = base58'3P9qEs3aQgRgzBLo7hRvQahNRJvTTGoTWAP'
1515
1616 let sbt_asset = base58'vAYvjoLheNuvi2wRdQYK9NUjJ6ZQ5EkAtx7jy36rK13'
1717
1818 let wx_asset = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on'
1919
2020 func asAddressString (address) = match addressFromString(address) {
2121 case a: Address =>
2222 toString(a)
2323 case _ =>
2424 throw("fail to cast into Address String")
2525 }
2626
2727
2828 @Callable(i)
29-func claimRewardsOnFirstSevenPools (isSecond) = {
29+func claimRewardsOnThreePools (id) = {
3030 let main_contract_address = addressFromStringValue(valueOrElse(getString(main_contract_key), "3P8EH6SLN1nUy92CQzu531yXCyWaxhs3Qhs"))
3131 let pools = split(getStringValue(main_contract_address, main_contract_lp_pools_key), SEP)
32- let sixPools = if (!(isSecond))
33- then [pools[0], pools[1], pools[2], pools[3], pools[4], pools[5]]
34- else [pools[6], pools[7], pools[8], pools[9], pools[10], pools[11]]
32+ let sixPools = if ((id == 0))
33+ then [pools[0], pools[1], pools[2]]
34+ else if ((id == 1))
35+ then [pools[3], pools[4], pools[5]]
36+ else if ((id == 2))
37+ then [pools[6], pools[7], pools[8]]
38+ else if ((id == 3))
39+ then [pools[9], pools[10], pools[11]]
40+ else nil
3541 func poolsActions (acc,pool) = {
3642 let invocationResult = invoke(main_contract_address, main_contract_claim_pool_rewards_func_name, [pool], nil)
3743 if ((invocationResult == invocationResult))
3844 then acc
3945 else throw("Strict value is not equal to itself.")
4046 }
4147
4248 let result = {
4349 let $l = sixPools
4450 let $s = size($l)
4551 let $acc0 = unit
4652 func $f0_1 ($a,$i) = if (($i >= $s))
4753 then $a
4854 else poolsActions($a, $l[$i])
4955
5056 func $f0_2 ($a,$i) = if (($i >= $s))
5157 then $a
5258 else throw("List size exceeds 15")
5359
5460 $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($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
5561 }
5662 if ((result == result))
5763 then nil
5864 else throw("Strict value is not equal to itself.")
5965 }
6066
6167
6268
6369 @Callable(i)
6470 func main_info_readonly () = {
6571 let main_contract = valueOrElse(getString(main_contract_key), "3P8EH6SLN1nUy92CQzu531yXCyWaxhs3Qhs")
6672 let main_contract_address = addressFromStringValue(main_contract)
6773 let totalGwx = {
6874 let result = invoke(Address(waves_exchange_address), "gwxUserInfoREADONLY", [main_contract], nil)
6975 if ((result == result))
7076 then match result {
7177 case val: List[Any] =>
7278 let @ = val[0]
7379 if ($isInstanceOf(@, "Int"))
7480 then @
7581 else throw(($getType(@) + " couldn't be cast to Int"))
7682 case _ =>
7783 throw("FATAL: Inconsistent data")
7884 }
7985 else throw("Strict value is not equal to itself.")
8086 }
8187 if ((totalGwx == totalGwx))
8288 then {
8389 let sbt_stake_pool = getStringValue(main_contract_address, "sbt_stake_pool")
8490 let additional_reward_pool = getStringValue(main_contract_address, "additional_reward_pool")
8591 let total_wx_locked = getIntegerValue(main_contract_address, "total_wx_locked")
8692 let main_contract_data = $Tuple4(totalGwx, sbt_stake_pool, additional_reward_pool, total_wx_locked)
8793 let pools = split(getStringValue(main_contract_address, main_contract_lp_pools_key), SEP)
8894 func pools_data_collecting (acc,pool) = {
8995 let pool_address = addressFromStringValue(pool)
9096 let pool_token = getStringValue(pool_address, "token")
9197 let pool_token_amount = getIntegerValue(pool_address, "tokens")
9298 let pool_reward_assets = split(getStringValue(pool_address, "rewards"), ",")
9399 let pool_killed = getBooleanValue(pool_address, "is_killed")
94100 let pool_locked_period = getIntegerValue(pool_address, "locked_period")
95101 func pools_reward_assets_twap_collecting (acc,pool_asset) = {
96102 let twap_result = invoke(Address(twap_address), "twapMONTH", [pool, pool_asset, pool_token], nil)
97103 if ((twap_result == twap_result))
98104 then match twap_result {
99105 case val: String =>
100106 (acc ++ [((pool_asset + "_") + val)])
101107 case _ =>
102108 throw("FATAL: Inconsistent data")
103109 }
104110 else throw("Strict value is not equal to itself.")
105111 }
106112
107113 let pool_twap_result = {
108114 let $l = pool_reward_assets
109115 let $s = size($l)
110116 let $acc0 = nil
111117 func $f0_1 ($a,$i) = if (($i >= $s))
112118 then $a
113119 else pools_reward_assets_twap_collecting($a, $l[$i])
114120
115121 func $f0_2 ($a,$i) = if (($i >= $s))
116122 then $a
117123 else throw("List size exceeds 3")
118124
119125 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
120126 }
121127 (acc ++ [$Tuple6(pool, pool_token, pool_token_amount, pool_killed, pool_locked_period, pool_twap_result)])
122128 }
123129
124130 let pools_data = {
125131 let $l = (pools ++ [sbt_stake_pool])
126132 let $s = size($l)
127133 let $acc0 = nil
128134 func $f0_1 ($a,$i) = if (($i >= $s))
129135 then $a
130136 else pools_data_collecting($a, $l[$i])
131137
132138 func $f0_2 ($a,$i) = if (($i >= $s))
133139 then $a
134140 else throw("List size exceeds 15")
135141
136142 $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($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
137143 }
138144 $Tuple2(nil, $Tuple2(main_contract_data, pools_data))
139145 }
140146 else throw("Strict value is not equal to itself.")
141147 }
142148
143149
144150
145151 @Callable(i)
146152 func user_info_readonly (user) = {
147153 let main_contract = valueOrElse(getString(main_contract_key), "3P8EH6SLN1nUy92CQzu531yXCyWaxhs3Qhs")
148154 let main_contract_address = addressFromStringValue(main_contract)
149155 let sbt_stake_pool = getStringValue(main_contract_address, "sbt_stake_pool")
150156 let additional_reward_pool = getStringValue(main_contract_address, "additional_reward_pool")
151157 let total_wx_locked = getIntegerValue(main_contract_address, "total_wx_locked")
152158 let sbt_stake_pool_address = addressFromStringValue(sbt_stake_pool)
153159 let user_sbt_pool_total_locked = {
154160 let @ = invoke(sbt_stake_pool_address, "claimable_tokens", [user], nil)
155161 if ($isInstanceOf(@, "Int"))
156162 then @
157163 else throw(($getType(@) + " couldn't be cast to Int"))
158164 }
159165 if ((user_sbt_pool_total_locked == user_sbt_pool_total_locked))
160166 then {
161167 let user_sbt_pool_total_claimed_wx = {
162168 let @ = invoke(sbt_stake_pool_address, "claimed_reward", [user, toBase58String(sbt_asset)], nil)
163169 if ($isInstanceOf(@, "Int"))
164170 then @
165171 else throw(($getType(@) + " couldn't be cast to Int"))
166172 }
167173 if ((user_sbt_pool_total_claimed_wx == user_sbt_pool_total_claimed_wx))
168174 then {
169175 let user_sbt_pool_unclaimed_wx = {
170176 let @ = invoke(sbt_stake_pool_address, "claimable_reward", [user, toBase58String(wx_asset)], nil)
171177 if ($isInstanceOf(@, "Int"))
172178 then @
173179 else throw(($getType(@) + " couldn't be cast to Int"))
174180 }
175181 if ((user_sbt_pool_unclaimed_wx == user_sbt_pool_unclaimed_wx))
176182 then {
177183 let user_sbt_pool_waiting_to_unlock = {
178184 let @ = invoke(sbt_stake_pool_address, "user_locked_readonly", [user], nil)
179185 if ($isInstanceOf(@, "Int"))
180186 then @
181187 else throw(($getType(@) + " couldn't be cast to Int"))
182188 }
183189 if ((user_sbt_pool_waiting_to_unlock == user_sbt_pool_waiting_to_unlock))
184190 then {
185191 let user_sbt_pool_data = $Tuple4(user_sbt_pool_total_locked, user_sbt_pool_total_claimed_wx, user_sbt_pool_unclaimed_wx, user_sbt_pool_waiting_to_unlock)
186192 let pools = split(getStringValue(main_contract_address, main_contract_lp_pools_key), SEP)
187193 func pools_data_accounting (acc,pool) = {
188194 let pool_address = addressFromStringValue(pool)
189195 let pool_token = getStringValue(pool_address, "token")
190196 let user_staked_amount = {
191197 let @ = invoke(pool_address, "claimable_tokens", [user], nil)
192198 if ($isInstanceOf(@, "Int"))
193199 then @
194200 else throw(($getType(@) + " couldn't be cast to Int"))
195201 }
196202 if ((user_staked_amount == user_staked_amount))
197203 then {
198204 let user_total_wx_claimed = {
199205 let @ = invoke(pool_address, "claimed_reward", [user, toBase58String(wx_asset)], nil)
200206 if ($isInstanceOf(@, "Int"))
201207 then @
202208 else throw(($getType(@) + " couldn't be cast to Int"))
203209 }
204210 if ((user_total_wx_claimed == user_total_wx_claimed))
205211 then {
206212 let user_total_sbt_claimed = {
207213 let @ = invoke(pool_address, "claimed_reward", [user, toBase58String(sbt_asset)], nil)
208214 if ($isInstanceOf(@, "Int"))
209215 then @
210216 else throw(($getType(@) + " couldn't be cast to Int"))
211217 }
212218 if ((user_total_sbt_claimed == user_total_sbt_claimed))
213219 then {
214220 let user_unclaimed_wx = {
215221 let @ = invoke(pool_address, "claimable_reward", [user, toBase58String(wx_asset)], nil)
216222 if ($isInstanceOf(@, "Int"))
217223 then @
218224 else throw(($getType(@) + " couldn't be cast to Int"))
219225 }
220226 if ((user_unclaimed_wx == user_unclaimed_wx))
221227 then {
222228 let user_unclaimed_Sbt = {
223229 let @ = invoke(pool_address, "claimable_reward", [user, toBase58String(sbt_asset)], nil)
224230 if ($isInstanceOf(@, "Int"))
225231 then @
226232 else throw(($getType(@) + " couldn't be cast to Int"))
227233 }
228234 if ((user_unclaimed_Sbt == user_unclaimed_Sbt))
229235 then (acc ++ [$Tuple7(pool, pool_token, user_staked_amount, user_total_wx_claimed, user_total_sbt_claimed, user_unclaimed_wx, user_unclaimed_Sbt)])
230236 else throw("Strict value is not equal to itself.")
231237 }
232238 else throw("Strict value is not equal to itself.")
233239 }
234240 else throw("Strict value is not equal to itself.")
235241 }
236242 else throw("Strict value is not equal to itself.")
237243 }
238244 else throw("Strict value is not equal to itself.")
239245 }
240246
241247 let user_pools_data = {
242248 let $l = pools
243249 let $s = size($l)
244250 let $acc0 = nil
245251 func $f0_1 ($a,$i) = if (($i >= $s))
246252 then $a
247253 else pools_data_accounting($a, $l[$i])
248254
249255 func $f0_2 ($a,$i) = if (($i >= $s))
250256 then $a
251257 else throw("List size exceeds 15")
252258
253259 $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($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
254260 }
255261 $Tuple2(nil, $Tuple2(user_sbt_pool_data, user_pools_data))
256262 }
257263 else throw("Strict value is not equal to itself.")
258264 }
259265 else throw("Strict value is not equal to itself.")
260266 }
261267 else throw("Strict value is not equal to itself.")
262268 }
263269 else throw("Strict value is not equal to itself.")
264270 }
265271
266272
267273
268274 @Callable(i)
269275 func setMainContract (address) = if ((this != i.caller))
270276 then throw("only self")
271277 else [StringEntry(main_contract_key, asAddressString(address))]
272278
273279
274280 @Verifier(tx)
275281 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
276282

github/deemru/w8io/0e76f2f 
48.14 ms