tx · D2nqFXo12FJ82cUarJxk92GmdD1gihpXTJ7JhUA9nFb8

3PEgVPqJ3NYWbRn1CLELUpuY9KCmragc7sY:  -0.01900000 Waves

2023.11.20 15:18 [3917575] smart account 3PEgVPqJ3NYWbRn1CLELUpuY9KCmragc7sY > SELF 0.00000000 Waves

{ "type": 13, "id": "D2nqFXo12FJ82cUarJxk92GmdD1gihpXTJ7JhUA9nFb8", "fee": 1900000, "feeAssetId": null, "timestamp": 1700482737794, "version": 2, "chainId": 87, "sender": "3PEgVPqJ3NYWbRn1CLELUpuY9KCmragc7sY", "senderPublicKey": "8bCz9o3CUTfKKYBmcfJcAwKVKxEmLhGGyULemkcJwtkB", "proofs": [ "tb65XSAeSYebSKf5Z7rYa87CQSzQYoxs4MyjRtq9qrhVTDfnkb5C5TpzbMNG4H7119GrNmhST81AY6ptpeHeMRc" ], "script": "base64:BgIxCAISABIAEgASABIAEgASAwoBARIAEgASAwoBBBIDCgEEEgcKBQgBAQEBEgUKAwgBCBoAAmQ4AIDC1y8AEnJlZ2lzdHJhdGlvbkNsb3NlZAkBEUBleHRyTmF0aXZlKDEwNTUpAQIXcmVnaXN0cmF0aW9uIGxhc3QgYmxvY2sAF3JlZ2lzdHJhdGlvblJlcXVpcmVtZW50CQBoAgkBEUBleHRyTmF0aXZlKDEwNTUpAQIYcmVnaXN0cmF0aW9uIHJlcXVpcmVtZW50BQJkOAANcmV3YXJkQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQIPcmV3YXJkIGFzc2V0IGlkAAxyZXdhcmRBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDU1KQECDXJld2FyZCBhbW91bnQAD21pbmltdW1JbmNyZWFzZQkBEUBleHRyTmF0aXZlKDEwNTUpAQIQbWluaW11bSBpbmNyZWFzZQENdHJ5R2V0SW50ZWdlcgIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJoIAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAAQx0cnlHZXRTdHJpbmcCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWIFByRtYXRjaDAFAWICAAAHYnVybnh0bgEgJE91eWp+Mzm4+wz/hKlxXF7KLd4zoMRdafnqRBHsTFQACXdoaXJscG9vbAEgWeON3MK1I7pKFNzE0K8UCeZk5gS+JQYLJk7lUG2XWccAA1BaMQEaAVeFnSww1fwDPmHFrd6Sv8UqkfOZrhpBQAoAA1BaMgEaAVf1RmgngA1o304mdXq0odMoMeAJv/V5eTcAA1BaMwEaAVdrUh3hZ11iM5xE9ppvCu7VVcjaIPzs5scAA1BaNAEaAVd8ufIkLHkd+cILYV2n5Ut+Pmb4MdnkIOIAA1BaNQEaAVdzM1uLVnknLEeNcZD2LCCz+T9Cl/2cRdIAA1BaNgEaAVdHHWb6sJRhaJYHMq62QOOh/3POTybYR7oAB1dYc3Rha2UBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAANXWDEBGgFXK+KucXt9yTC1IHnnFsVrbVdAgaU4Fj0+AANMUDECLEd5aUhkY041OXNaNDZiYUZ2ajY4cnVMbmdyVFBFdldEdHNkNmpIbTRvNDZuAANXWDIBGgFXwRfLSELOBVNDikdciGeU9BfVx8LU1MNSAANMUDICLDNNUEhNSlZ3WUd5ZUJMUnNIMVJzWWhyVG1lbXY3NTJBRUJ3dUZGVjdnNDlaAAlhZGRyZXNzZXMDCQAAAgkAmwgCBQR0aGlzAgdzdGFydGVkBgkBDHRyeUdldFN0cmluZwIFBHRoaXMCBmZpbHRlcgkAswICCQEMdHJ5R2V0U3RyaW5nAgUEdGhpcwISQWRkcmVzcyByZWdpc3RlcmVkAAEBBVBaYmFsAgtQb29sYWRkcmVzcwdhZGRyZXNzBAtidXJueHRuSW5QWgkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFC1Bvb2xhZGRyZXNzCQCsAgIJAKwCAgIHZ2xvYmFsXwkA2AQBBQdidXJueHRuAghfYmFsYW5jZQQOYWRkcmVzc1N0YWtlUFoJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQtQb29sYWRkcmVzcwkArAICCQClCAEFB2FkZHJlc3MCDF9pbmRleFN0YWtlZAQMdG90YWxTdGFrZVBaCQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQULUG9vbGFkZHJlc3MCF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50CQBrAwULYnVybnh0bkluUFoFDmFkZHJlc3NTdGFrZVBaBQx0b3RhbFN0YWtlUFoBBVdYYmFsAwtQb29sYWRkcmVzcwdhZGRyZXNzBUxQc3RyBAtidXJueHRuSW5XWAkA8AcCCQEHQWRkcmVzcwEFC1Bvb2xhZGRyZXNzBQdidXJueHRuBA5hZGRyZXNzU3Rha2VXWAkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFB1dYc3Rha2UJAKwCAgkArAICCQCsAgICECVzJXMlc19fc3Rha2VkX18JAKUIAQUHYWRkcmVzcwICX18FBUxQc3RyBAx0b3RhbFN0YWtlV1gJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQdXWHN0YWtlCQCsAgICFyVzJXMlc19fc3Rha2VkX190b3RhbF9fBQVMUHN0cgkAawMFC2J1cm54dG5JbldYBQ5hZGRyZXNzU3Rha2VXWAUMdG90YWxTdGFrZVdYAQx0b3RhbEJhbGFuY2UBB2FkZHJlc3MEDmJ1cm54dG5CYWxhbmNlCQDwBwIFB2FkZHJlc3MFB2J1cm54dG4EClBaMWJhbGFuY2UJAQVQWmJhbAIFA1BaMQUHYWRkcmVzcwQKUFoyYmFsYW5jZQkBBVBaYmFsAgUDUFoyBQdhZGRyZXNzBApQWjNiYWxhbmNlCQEFUFpiYWwCBQNQWjMFB2FkZHJlc3MEClBaNGJhbGFuY2UJAQVQWmJhbAIFA1BaNAUHYWRkcmVzcwQKUFo1YmFsYW5jZQkBBVBaYmFsAgUDUFo1BQdhZGRyZXNzBApQWjZiYWxhbmNlCQEFUFpiYWwCBQNQWjYFB2FkZHJlc3MECldYMWJhbGFuY2UJAQVXWGJhbAMFA1dYMQUHYWRkcmVzcwUDTFAxBApXWDJiYWxhbmNlCQEFV1hiYWwDBQNXWDIFB2FkZHJlc3MFA0xQMgQFdG90YWwJAGQCCQBkAgkAZAIJAGQCCQBkAgkAZAIJAGQCCQBkAgUOYnVybnh0bkJhbGFuY2UFClBaMWJhbGFuY2UFClBaMmJhbGFuY2UFClBaM2JhbGFuY2UFClBaNGJhbGFuY2UFClBaNWJhbGFuY2UFClBaNmJhbGFuY2UFCldYMWJhbGFuY2UFCldYMmJhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQICDmJ1cm54dG5CYWxhbmNlBQ5idXJueHRuQmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIKUFoxYmFsYW5jZQUKUFoxYmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIKUFoyYmFsYW5jZQUKUFoyYmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIKUFozYmFsYW5jZQUKUFozYmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIKUFo0YmFsYW5jZQUKUFo0YmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIKUFo1YmFsYW5jZQUKUFo1YmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIKUFo2YmFsYW5jZQUKUFo2YmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIKV1gxYmFsYW5jZQUKV1gxYmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIKV1gyYmFsYW5jZQUKV1gyYmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIFdG90YWwFBXRvdGFsBQNuaWwBDXRvdGFsQmFsYW5jZTIBB2FkZHJlc3MEDmJ1cm54dG5CYWxhbmNlCQDwBwIFB2FkZHJlc3MFB2J1cm54dG4EClBaMWJhbGFuY2UJAQVQWmJhbAIFA1BaMQUHYWRkcmVzcwQKUFoyYmFsYW5jZQkBBVBaYmFsAgUDUFoyBQdhZGRyZXNzBApQWjNiYWxhbmNlCQEFUFpiYWwCBQNQWjMFB2FkZHJlc3MEClBaNGJhbGFuY2UJAQVQWmJhbAIFA1BaNAUHYWRkcmVzcwQKUFo1YmFsYW5jZQkBBVBaYmFsAgUDUFo1BQdhZGRyZXNzBApQWjZiYWxhbmNlCQEFUFpiYWwCBQNQWjYFB2FkZHJlc3MECldYMWJhbGFuY2UJAQVXWGJhbAMFA1dYMQUHYWRkcmVzcwUDTFAxBApXWDJiYWxhbmNlCQEFV1hiYWwDBQNXWDIFB2FkZHJlc3MFA0xQMgkAZAIJAGQCCQBkAgkAZAIJAGQCCQBkAgkAZAIJAGQCBQ5idXJueHRuQmFsYW5jZQUKUFoxYmFsYW5jZQUKUFoyYmFsYW5jZQUKUFozYmFsYW5jZQUKUFo0YmFsYW5jZQUKUFo1YmFsYW5jZQUKUFo2YmFsYW5jZQUKV1gxYmFsYW5jZQUKV1gyYmFsYW5jZQ0BaQEIcmVnaXN0ZXIAAwkBCGNvbnRhaW5zAgkBDHRyeUdldFN0cmluZwIFBHRoaXMCEkFkZHJlc3MgcmVnaXN0ZXJlZAkApQgBCAUBaQZjYWxsZXIJAAIBAhJhbHJlYWR5IHJlZ2lzdGVyZWQDCQBmAgUGaGVpZ2h0BRJyZWdpc3RyYXRpb25DbG9zZWQJAAIBAhNyZWdpc3RyYXRpb24gY2xvc2VkAwkAZgIFF3JlZ2lzdHJhdGlvblJlcXVpcmVtZW50CQENdG90YWxCYWxhbmNlMgEIBQFpBmNhbGxlcgkAAgECOmhhdmUgYXRsZWFzdCA0MGsgQlVSTi1YVE4gaW4gd2FsbGV0IGFuZC9vciBsaXF1aWRpdHkgcG9vbHMDCQAAAgkBDXRyeUdldEludGVnZXICBQR0aGlzAhFBbW91bnQgUmVnaXN0ZXJlZABkCQACAQITcmVnaXN0cmF0aW9uIGNsb3NlZAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhFBbW91bnQgUmVnaXN0ZXJlZAkAZAIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIRQW1vdW50IFJlZ2lzdGVyZWQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICElJlZ2lzdGVyIGFkZHJlc3M6IAkApAMBCQBkAgkBDXRyeUdldEludGVnZXICBQR0aGlzAhFBbW91bnQgUmVnaXN0ZXJlZAABCQClCAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCAhJBZGRyZXNzIHJlZ2lzdGVyZWQJAKwCAgkArAICCQEMdHJ5R2V0U3RyaW5nAgUEdGhpcwISQWRkcmVzcyByZWdpc3RlcmVkCQClCAEIBQFpBmNhbGxlcgIBLAUDbmlsCQEMdG90YWxCYWxhbmNlAQgFAWkGY2FsbGVyAWkBBXN0YXJ0AAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEBGxpc3QJALUJAgUJYWRkcmVzc2VzAgEsCgEDYmFsAgVhY2N1bQdhZGRyZXNzCQDOCAIFBWFjY3VtCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQdhZGRyZXNzCQENdG90YWxCYWxhbmNlMgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MFA25pbAQNZW50ZXJJbnRlZ2VycwoAAiRsBQRsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNiYWwCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8x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AgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkBBBmaWx0ZXJMaXN0U3RyaW5nCQC5CQIFCmZpbHRlckxpc3QCASwEDmZpbHRlckxpc3RTaXplCQCQAwEFCmZpbHRlckxpc3QECGN1bGxTaXplCQBuBAUOZmlsdGVyTGlzdFNpemUAUABkBQRET1dOCQDMCAIJAQtTdHJpbmdFbnRyeQICBmZpbHRlcgUQZmlsdGVyTGlzdFN0cmluZwkAzAgCCQEMSW50ZWdlckVudHJ5AgIUbGlzdCBzaXplIGZpbHRlckxpc3QFDmZpbHRlckxpc3RTaXplCQDMCAIJAQxJbnRlZ2VyRW50cnkCAghjdWxsU2l6ZQUIY3VsbFNpemUFA25pbAFpAQZyZW1vdmUBCml0ZXJhdGlvbnMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyAwkAZwIDCQAAAgkAoAgBAgVmaW5hbAYAAQkBEUBleHRyTmF0aXZlKDEwNTUpAQIIY3VsbFNpemUJARFAZXh0ck5hdGl2ZSgxMDU1KQECFGxpc3Qgc2l6ZSBmaWx0ZXJMaXN0BQNuaWwEBGxpc3QJALUJAgkBEUBleHRyTmF0aXZlKDEwNTgpAQIGZmlsdGVyAgEsCgEDYmFsAgVhY2N1bQdhZGRyZXNzCQDNCAIFBWFjY3VtCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMJAKwCAgINc3RvcCBpbmNyZWFzZQUHYWRkcmVzcwQHYmFsTGlzdAoAAiRsBQRsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNiYWwCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkBAZsb3dlc3QJAQV2YWx1ZQEJAJcDAQUHYmFsTGlzdAQLaW5kZXhMb3dlc3QJAQV2YWx1ZQEJAM8IAgUHYmFsTGlzdAUGbG93ZXN0BA9taW51c0xvd2VzdExpc3QJANEIAgUEbGlzdAULaW5kZXhMb3dlc3QEE21pbnVzTG93ZXN0TGlzdFNpemUJAJADAQUPbWludXNMb3dlc3RMaXN0BBFtaW51c0xvd2VzdFN0cmluZwkAuQkCBQ9taW51c0xvd2VzdExpc3QCASwJAMwIAgkBDEludGVnZXJFbnRyeQICFGxpc3Qgc2l6ZSBmaWx0ZXJMaXN0BRNtaW51c0xvd2VzdExpc3RTaXplCQDMCAIJAQtTdHJpbmdFbnRyeQICBmZpbHRlcgURbWludXNMb3dlc3RTdHJpbmcFA25pbAFpAQpwYXlXaW5uZXJzAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEB2Fzc2V0SWQFCXdoaXJscG9vbAQGYW1vdW50CQBoAgUMcmV3YXJkQW1vdW50BQJkOAQEbGlzdAkAtQkCBQlhZGRyZXNzZXMCASwKAQNiYWwCBWFjY3VtB2FkZHJlc3MJAM0IAgUFYWNjdW0JAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwkArAICAg1zdG9wIGluY3JlYXNlBQdhZGRyZXNzBAdiYWxMaXN0CgACJGwFBGxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA2JhbAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEF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cm9qZWN0IG93bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQICD3Jld2FyZCBhc3NldCBpZAUNcmV3YXJkQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgINcmV3YXJkIGFtb3VudAUMcmV3YXJkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhdyZWdpc3RyYXRpb24gbGFzdCBibG9jawUVcmVnaXN0cmF0aW9uTGFzdEJsb2NrCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhhyZWdpc3RyYXRpb24gcmVxdWlyZW1lbnQFF3JlZ2lzdHJhdGlvblJlcXVpcmVtZW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBtaW5pbXVtIGluY3JlYXNlBQ9taW5pbXVtSW5jcmVhc2UFA25pbAFpAQtlbnRyeURlbGV0ZQMFZW50cnkGYW1vdW50BmRlbGV0ZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIABQVlbnRyeQUGYW1vdW50CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgIABQZkZWxldGUFA25pbABadUPU", "height": 3917575, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9MT8RzGgGQ5BuCQVCYP9MVdCsSufiyKLhmQVEhET2XrV Next: 8R3aiKWyhky8DPu2neH7Ag22YLHs6Es3qmz9ZaRdmgQj Diff:
OldNewDifferences
105105
106106
107107 @Callable(i)
108+func register () = if (contains(tryGetString(this, "Address registered"), toString(i.caller)))
109+ then throw("already registered")
110+ else if ((height > registrationClosed))
111+ then throw("registration closed")
112+ else if ((registrationRequirement > totalBalance2(i.caller)))
113+ then throw("have atleast 40k BURN-XTN in wallet and/or liquidity pools")
114+ else if ((tryGetInteger(this, "Amount Registered") == 100))
115+ then throw("registration closed")
116+ else ([IntegerEntry("Amount Registered", (tryGetInteger(this, "Amount Registered") + 1)), StringEntry(("Register address: " + toString((tryGetInteger(this, "Amount Registered") + 1))), toString(i.caller)), StringEntry("Address registered", ((tryGetString(this, "Address registered") + toString(i.caller)) + ","))] ++ totalBalance(i.caller))
117+
118+
119+
120+@Callable(i)
108121 func start () = if ((i.caller != this))
109122 then throw("access only by project owner")
110123 else {
151164 }
152165 (nil ++ enterDif)
153166 }
154-
155-
156-
157-@Callable(i)
158-func entryHighest (address) = if ((i.caller != this))
159- then throw("access only by project owner")
160- else {
161- let increase = (totalBalance2(addressFromStringValue(address)) - tryGetInteger(this, address))
162- let list = split(addresses, ",")
163- func bal (accum,address) = (accum :+ increase)
164-
165- let balList = {
166- let $l = list
167- let $s = size($l)
168- let $acc0 = nil
169- func $f0_1 ($a,$i) = if (($i >= $s))
170- then $a
171- else bal($a, $l[$i])
172-
173- func $f0_2 ($a,$i) = if (($i >= $s))
174- then $a
175- else throw("List size exceeds 100")
176-
177- $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($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($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), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
178- }
179- let highest = value(max(balList))
180- let indexHighest = value(indexOf(balList, highest))
181- let highestAddress = list[indexHighest]
182- let minusHighestList = removeByIndex(list, indexHighest)
183- let minusHighestString = makeString(minusHighestList, ",")
184-[IntegerEntry(highestAddress, (totalBalance2(addressFromStringValue(address)) - tryGetInteger(this, highestAddress))), StringEntry("filter", minusHighestString)]
185- }
186167
187168
188169
251232 else {
252233 let list = split(addresses, ",")
253234 let listSize = size(list)
254- let minimum = minimumIncrease
255- func fList (accum,address) = if ((minimum > tryGetInteger(this, ("stop increase" + address))))
235+ func fList (accum,address) = if ((minimumIncrease > tryGetInteger(this, ("stop increase" + address))))
256236 then nil
257237 else (accum :+ address)
258238
405385 else [StringEntry("reward asset id", rewardAssetId), IntegerEntry("reward amount", rewardAmount), IntegerEntry("registration last block", registrationLastBlock), IntegerEntry("registration requirement", registrationRequirement), IntegerEntry("minimum increase", minimumIncrease)]
406386
407387
388+
389+@Callable(i)
390+func entryDelete (entry,amount,delete) = if ((i.caller != this))
391+ then throw("access only by project owner")
392+ else [IntegerEntry(("" + entry), amount), DeleteEntry(("" + delete))]
393+
394+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let d8 = 100000000
55
66 let registrationClosed = getIntegerValue("registration last block")
77
88 let registrationRequirement = (getIntegerValue("registration requirement") * d8)
99
1010 let rewardAssetId = getStringValue("reward asset id")
1111
1212 let rewardAmount = getIntegerValue("reward amount")
1313
1414 let minimumIncrease = getIntegerValue("minimum increase")
1515
1616 func tryGetInteger (address,key) = match getInteger(address, key) {
1717 case b: Int =>
1818 b
1919 case _ =>
2020 0
2121 }
2222
2323
2424 func tryGetString (address,key) = match getString(address, key) {
2525 case b: String =>
2626 b
2727 case _ =>
2828 ""
2929 }
3030
3131
3232 let burnxtn = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns'
3333
3434 let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi'
3535
3636 let PZ1 = base58'3PE7NtJdmVq4yo47LKDqurQ8RLDCouvJCPB'
3737
3838 let PZ2 = base58'3PQHndCUVrv3wBuQjbvVP9SnGmfbfitGxfx'
3939
4040 let PZ3 = base58'3PBiMQLnX8wd4bssXCgF8KuUqHv1H4zWHGi'
4141
4242 let PZ4 = base58'3PDJPGn6vBEBqWN4E3fNcxoKBoDXbsmoaM7'
4343
4444 let PZ5 = base58'3PCS1xhGQi2eM5mYcCBhUSHvB31Kk5gZoCm'
4545
4646 let PZ6 = base58'3P8Quvmgt3VEWAjBR3bsfgCqzUh7zTmTC4q'
4747
4848 let WXstake = base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'
4949
5050 let WX1 = base58'3P5vwLbXddLWpsRspftMxLuzfsjk3dLT3n5'
5151
5252 let LP1 = "GyiHdcN59sZ46baFvj68ruLngrTPEvWDtsd6jHm4o46n"
5353
5454 let WX2 = base58'3PKXseWa31VUSWUvm2YiRKxW2VM9RsVk3ry'
5555
5656 let LP2 = "3MPHMJVwYGyeBLRsH1RsYhrTmemv752AEBwuFFV7g49Z"
5757
5858 let addresses = if ((getBoolean(this, "started") == true))
5959 then tryGetString(this, "filter")
6060 else dropRight(tryGetString(this, "Address registered"), 1)
6161
6262 func PZbal (Pooladdress,address) = {
6363 let burnxtnInPZ = tryGetInteger(Address(Pooladdress), (("global_" + toBase58String(burnxtn)) + "_balance"))
6464 let addressStakePZ = tryGetInteger(Address(Pooladdress), (toString(address) + "_indexStaked"))
6565 let totalStakePZ = tryGetInteger(Address(Pooladdress), "global_poolToken_amount")
6666 fraction(burnxtnInPZ, addressStakePZ, totalStakePZ)
6767 }
6868
6969
7070 func WXbal (Pooladdress,address,LPstr) = {
7171 let burnxtnInWX = assetBalance(Address(Pooladdress), burnxtn)
7272 let addressStakeWX = tryGetInteger(Address(WXstake), ((("%s%s%s__staked__" + toString(address)) + "__") + LPstr))
7373 let totalStakeWX = tryGetInteger(Address(WXstake), ("%s%s%s__staked__total__" + LPstr))
7474 fraction(burnxtnInWX, addressStakeWX, totalStakeWX)
7575 }
7676
7777
7878 func totalBalance (address) = {
7979 let burnxtnBalance = assetBalance(address, burnxtn)
8080 let PZ1balance = PZbal(PZ1, address)
8181 let PZ2balance = PZbal(PZ2, address)
8282 let PZ3balance = PZbal(PZ3, address)
8383 let PZ4balance = PZbal(PZ4, address)
8484 let PZ5balance = PZbal(PZ5, address)
8585 let PZ6balance = PZbal(PZ6, address)
8686 let WX1balance = WXbal(WX1, address, LP1)
8787 let WX2balance = WXbal(WX2, address, LP2)
8888 let total = ((((((((burnxtnBalance + PZ1balance) + PZ2balance) + PZ3balance) + PZ4balance) + PZ5balance) + PZ6balance) + WX1balance) + WX2balance)
8989 [IntegerEntry("burnxtnBalance", burnxtnBalance), IntegerEntry("PZ1balance", PZ1balance), IntegerEntry("PZ2balance", PZ2balance), IntegerEntry("PZ3balance", PZ3balance), IntegerEntry("PZ4balance", PZ4balance), IntegerEntry("PZ5balance", PZ5balance), IntegerEntry("PZ6balance", PZ6balance), IntegerEntry("WX1balance", WX1balance), IntegerEntry("WX2balance", WX2balance), IntegerEntry("total", total)]
9090 }
9191
9292
9393 func totalBalance2 (address) = {
9494 let burnxtnBalance = assetBalance(address, burnxtn)
9595 let PZ1balance = PZbal(PZ1, address)
9696 let PZ2balance = PZbal(PZ2, address)
9797 let PZ3balance = PZbal(PZ3, address)
9898 let PZ4balance = PZbal(PZ4, address)
9999 let PZ5balance = PZbal(PZ5, address)
100100 let PZ6balance = PZbal(PZ6, address)
101101 let WX1balance = WXbal(WX1, address, LP1)
102102 let WX2balance = WXbal(WX2, address, LP2)
103103 ((((((((burnxtnBalance + PZ1balance) + PZ2balance) + PZ3balance) + PZ4balance) + PZ5balance) + PZ6balance) + WX1balance) + WX2balance)
104104 }
105105
106106
107107 @Callable(i)
108+func register () = if (contains(tryGetString(this, "Address registered"), toString(i.caller)))
109+ then throw("already registered")
110+ else if ((height > registrationClosed))
111+ then throw("registration closed")
112+ else if ((registrationRequirement > totalBalance2(i.caller)))
113+ then throw("have atleast 40k BURN-XTN in wallet and/or liquidity pools")
114+ else if ((tryGetInteger(this, "Amount Registered") == 100))
115+ then throw("registration closed")
116+ else ([IntegerEntry("Amount Registered", (tryGetInteger(this, "Amount Registered") + 1)), StringEntry(("Register address: " + toString((tryGetInteger(this, "Amount Registered") + 1))), toString(i.caller)), StringEntry("Address registered", ((tryGetString(this, "Address registered") + toString(i.caller)) + ","))] ++ totalBalance(i.caller))
117+
118+
119+
120+@Callable(i)
108121 func start () = if ((i.caller != this))
109122 then throw("access only by project owner")
110123 else {
111124 let list = split(addresses, ",")
112125 func bal (accum,address) = (accum ++ [IntegerEntry(address, totalBalance2(addressFromStringValue(address)))])
113126
114127 let enterIntegers = {
115128 let $l = list
116129 let $s = size($l)
117130 let $acc0 = nil
118131 func $f0_1 ($a,$i) = if (($i >= $s))
119132 then $a
120133 else bal($a, $l[$i])
121134
122135 func $f0_2 ($a,$i) = if (($i >= $s))
123136 then $a
124137 else throw("List size exceeds 100")
125138
126139 $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($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($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), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
127140 }
128141 (nil ++ enterIntegers)
129142 }
130143
131144
132145
133146 @Callable(i)
134147 func currentPosition () = {
135148 let list = split(addresses, ",")
136149 func dif (accum,address) = (accum ++ [IntegerEntry(("increase " + address), (totalBalance2(addressFromStringValue(address)) - tryGetInteger(this, address)))])
137150
138151 let enterDif = {
139152 let $l = list
140153 let $s = size($l)
141154 let $acc0 = nil
142155 func $f0_1 ($a,$i) = if (($i >= $s))
143156 then $a
144157 else dif($a, $l[$i])
145158
146159 func $f0_2 ($a,$i) = if (($i >= $s))
147160 then $a
148161 else throw("List size exceeds 98")
149162
150163 $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($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($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), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98)
151164 }
152165 (nil ++ enterDif)
153166 }
154-
155-
156-
157-@Callable(i)
158-func entryHighest (address) = if ((i.caller != this))
159- then throw("access only by project owner")
160- else {
161- let increase = (totalBalance2(addressFromStringValue(address)) - tryGetInteger(this, address))
162- let list = split(addresses, ",")
163- func bal (accum,address) = (accum :+ increase)
164-
165- let balList = {
166- let $l = list
167- let $s = size($l)
168- let $acc0 = nil
169- func $f0_1 ($a,$i) = if (($i >= $s))
170- then $a
171- else bal($a, $l[$i])
172-
173- func $f0_2 ($a,$i) = if (($i >= $s))
174- then $a
175- else throw("List size exceeds 100")
176-
177- $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($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($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), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
178- }
179- let highest = value(max(balList))
180- let indexHighest = value(indexOf(balList, highest))
181- let highestAddress = list[indexHighest]
182- let minusHighestList = removeByIndex(list, indexHighest)
183- let minusHighestString = makeString(minusHighestList, ",")
184-[IntegerEntry(highestAddress, (totalBalance2(addressFromStringValue(address)) - tryGetInteger(this, highestAddress))), StringEntry("filter", minusHighestString)]
185- }
186167
187168
188169
189170 @Callable(i)
190171 func stopIncrease () = if ((i.caller != this))
191172 then throw("access only by project owner")
192173 else {
193174 let list = split(addresses, ",")
194175 func dif (accum,address) = (accum ++ [IntegerEntry(("stop increase" + address), (totalBalance2(addressFromStringValue(address)) - tryGetInteger(this, address)))])
195176
196177 let enterDif = {
197178 let $l = list
198179 let $s = size($l)
199180 let $acc0 = nil
200181 func $f0_1 ($a,$i) = if (($i >= $s))
201182 then $a
202183 else dif($a, $l[$i])
203184
204185 func $f0_2 ($a,$i) = if (($i >= $s))
205186 then $a
206187 else throw("List size exceeds 100")
207188
208189 $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($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($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), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
209190 }
210191 (nil ++ enterDif)
211192 }
212193
213194
214195
215196 @Callable(i)
216197 func winners () = if ((i.caller != this))
217198 then throw("access only by project owner")
218199 else {
219200 let filter = invoke(this, "filter", nil, nil)
220201 if ((filter == filter))
221202 then {
222203 let list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
223204 func r (accum,iterations) = invoke(this, "remove", [iterations], nil)
224205
225206 let remove = {
226207 let $l = list
227208 let $s = size($l)
228209 let $acc0 = nil
229210 func $f0_1 ($a,$i) = if (($i >= $s))
230211 then $a
231212 else r($a, $l[$i])
232213
233214 func $f0_2 ($a,$i) = if (($i >= $s))
234215 then $a
235216 else throw("List size exceeds 20")
236217
237218 $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($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
238219 }
239220 if ((remove == remove))
240221 then nil
241222 else throw("Strict value is not equal to itself.")
242223 }
243224 else throw("Strict value is not equal to itself.")
244225 }
245226
246227
247228
248229 @Callable(i)
249230 func filter () = if ((i.caller != this))
250231 then throw("access only by project owner")
251232 else {
252233 let list = split(addresses, ",")
253234 let listSize = size(list)
254- let minimum = minimumIncrease
255- func fList (accum,address) = if ((minimum > tryGetInteger(this, ("stop increase" + address))))
235+ func fList (accum,address) = if ((minimumIncrease > tryGetInteger(this, ("stop increase" + address))))
256236 then nil
257237 else (accum :+ address)
258238
259239 let filterList = {
260240 let $l = list
261241 let $s = size($l)
262242 let $acc0 = nil
263243 func $f0_1 ($a,$i) = if (($i >= $s))
264244 then $a
265245 else fList($a, $l[$i])
266246
267247 func $f0_2 ($a,$i) = if (($i >= $s))
268248 then $a
269249 else throw("List size exceeds 100")
270250
271251 $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($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($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), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
272252 }
273253 let filterListString = makeString(filterList, ",")
274254 let filterListSize = size(filterList)
275255 let cullSize = fraction(filterListSize, 80, 100, DOWN)
276256 [StringEntry("filter", filterListString), IntegerEntry("list size filterList", filterListSize), IntegerEntry("cullSize", cullSize)]
277257 }
278258
279259
280260
281261 @Callable(i)
282262 func remove (iterations) = if ((i.caller != this))
283263 then throw("access only by project owner")
284264 else if (((if ((getBoolean("final") == true))
285265 then 1
286266 else getIntegerValue("cullSize")) >= getIntegerValue("list size filterList")))
287267 then nil
288268 else {
289269 let list = split(getStringValue("filter"), ",")
290270 func bal (accum,address) = (accum :+ tryGetInteger(this, ("stop increase" + address)))
291271
292272 let balList = {
293273 let $l = list
294274 let $s = size($l)
295275 let $acc0 = nil
296276 func $f0_1 ($a,$i) = if (($i >= $s))
297277 then $a
298278 else bal($a, $l[$i])
299279
300280 func $f0_2 ($a,$i) = if (($i >= $s))
301281 then $a
302282 else throw("List size exceeds 100")
303283
304284 $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($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($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), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
305285 }
306286 let lowest = value(min(balList))
307287 let indexLowest = value(indexOf(balList, lowest))
308288 let minusLowestList = removeByIndex(list, indexLowest)
309289 let minusLowestListSize = size(minusLowestList)
310290 let minusLowestString = makeString(minusLowestList, ",")
311291 [IntegerEntry("list size filterList", minusLowestListSize), StringEntry("filter", minusLowestString)]
312292 }
313293
314294
315295
316296 @Callable(i)
317297 func payWinners () = if ((i.caller != this))
318298 then throw("access only by project owner")
319299 else {
320300 let assetId = whirlpool
321301 let amount = (rewardAmount * d8)
322302 let list = split(addresses, ",")
323303 func bal (accum,address) = (accum :+ tryGetInteger(this, ("stop increase" + address)))
324304
325305 let balList = {
326306 let $l = list
327307 let $s = size($l)
328308 let $acc0 = nil
329309 func $f0_1 ($a,$i) = if (($i >= $s))
330310 then $a
331311 else bal($a, $l[$i])
332312
333313 func $f0_2 ($a,$i) = if (($i >= $s))
334314 then $a
335315 else throw("List size exceeds 100")
336316
337317 $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($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($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), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
338318 }
339319 let highest = value(max(balList))
340320 let indexHighest = value(indexOf(balList, highest))
341321 let highestAddress = list[indexHighest]
342322 let winnersTopx2 = highestAddress :: list
343323 let amountPerAddress = (amount / size(list))
344324 func f (accum,address) = (accum ++ [ScriptTransfer(addressFromStringValue(address), amountPerAddress, assetId)])
345325
346326 let $l = winnersTopx2
347327 let $s = size($l)
348328 let $acc0 = nil
349329 func $f1_1 ($a,$i) = if (($i >= $s))
350330 then $a
351331 else f($a, $l[$i])
352332
353333 func $f1_2 ($a,$i) = if (($i >= $s))
354334 then $a
355335 else throw("List size exceeds 80")
356336
357337 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($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), 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), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80)
358338 }
359339
360340
361341
362342 @Callable(i)
363343 func payRegistrants () = if ((i.caller != this))
364344 then throw("access only by project owner")
365345 else {
366346 let assetId = fromBase58String(rewardAssetId)
367347 let amount = (rewardAmount * d8)
368348 let list = split(addresses, ",")
369349 let amountPerAddress = (amount / size(list))
370350 func f (accum,address) = (accum ++ [ScriptTransfer(addressFromStringValue(address), amountPerAddress, assetId)])
371351
372352 let $l = list
373353 let $s = size($l)
374354 let $acc0 = nil
375355 func $f0_1 ($a,$i) = if (($i >= $s))
376356 then $a
377357 else f($a, $l[$i])
378358
379359 func $f0_2 ($a,$i) = if (($i >= $s))
380360 then $a
381361 else throw("List size exceeds 100")
382362
383363 $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($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($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), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
384364 }
385365
386366
387367
388368 @Callable(i)
389369 func started (started) = if ((i.caller != this))
390370 then throw("access only by project owner")
391371 else [BooleanEntry("started", started)]
392372
393373
394374
395375 @Callable(i)
396376 func final (finalRound) = if ((i.caller != this))
397377 then throw("access only by project owner")
398378 else [BooleanEntry("final", finalRound)]
399379
400380
401381
402382 @Callable(i)
403383 func requirements (rewardAssetId,rewardAmount,registrationLastBlock,registrationRequirement,minimumIncrease) = if ((i.caller != this))
404384 then throw("access only by project owner")
405385 else [StringEntry("reward asset id", rewardAssetId), IntegerEntry("reward amount", rewardAmount), IntegerEntry("registration last block", registrationLastBlock), IntegerEntry("registration requirement", registrationRequirement), IntegerEntry("minimum increase", minimumIncrease)]
406386
407387
388+
389+@Callable(i)
390+func entryDelete (entry,amount,delete) = if ((i.caller != this))
391+ then throw("access only by project owner")
392+ else [IntegerEntry(("" + entry), amount), DeleteEntry(("" + delete))]
393+
394+

github/deemru/w8io/3ef1775 
96.67 ms