tx · Cu28W1EgPwktTDeAKBDvJ4UeU16mCASvL3enzziox8oo

3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS:  -0.05000000 Waves

2023.07.28 14:38 [2685664] smart account 3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS > SELF 0.00000000 Waves

{ "type": 13, "id": "Cu28W1EgPwktTDeAKBDvJ4UeU16mCASvL3enzziox8oo", "fee": 5000000, "feeAssetId": null, "timestamp": 1690544315223, "version": 2, "chainId": 84, "sender": "3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS", "senderPublicKey": "8h7G4haeVwXKNHXNHsWkC1miUp5CQtk3WmpBKazQPxRh", "proofs": [ "4JDo6NRgdJxidBKGrE1W3G9uLbUc61M4SNH3BpUqtsBLP6gGgEBinn5kq53gejskYpyB8bwamz1TK4NFz9EthmMy" ], "script": "base64:BgIkCAISAwoBARIDCgEBEgASAwoBCBIDCgEBEgMKAQgSABIDCgEIMgAMY29udHJhY3RGaWxlAhFsMm1wX3N0YWtpbmcucmlkZQADU0VQAgJfXwAGc2NhbGU4AIDC1y8AB3NjYWxlMTgAgICQu7rWrfANAA1zY2FsZTE4QmlnSW50CQC2AgEFB3NjYWxlMTgAEkFERFJFU1NfQllURVNfU0laRQAaAA1CTE9DS1NfSU5fREFZAKALAQh0aHJvd0VycgEDbXNnCQACAQkArAICCQCsAgIFDGNvbnRyYWN0RmlsZQICOiAFA21zZwAKa2V5QXNzZXRJZAkAuQkCCQDMCAICAiVzCQDMCAICB2Fzc2V0SWQFA25pbAUDU0VQABNrZXlFbWlzc2lvblBlckJsb2NrCQC5CQIJAMwIAgICJXMJAMwIAgIQZW1pc3Npb25QZXJCbG9jawUDbmlsBQNTRVAAGWtleUVtaXNzaW9uUGVyaW9kSW5CbG9ja3MJALkJAgkAzAgCAgIlcwkAzAgCAhZlbWlzc2lvblBlcmlvZEluQmxvY2tzBQNuaWwFA1NFUAANa2V5U3RhcnRCbG9jawkAuQkCCQDMCAICAiVzCQDMCAICCnN0YXJ0QmxvY2sFA25pbAUDU0VQABBrZXlUb3RhbExwQW1vdW50CQC5CQIJAMwIAgICJXMJAMwIAgINdG90YWxMcEFtb3VudAUDbmlsBQNTRVAAE2tleVRvdGFsQXNzZXRBbW91bnQJALkJAgkAzAgCAgIlcwkAzAgCAhB0b3RhbEFzc2V0QW1vdW50BQNuaWwFA1NFUAEPa2V5VXNlckxwQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIMdXNlckxwQW1vdW50CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhN0b3RhbEFzc2V0V2l0aGRyYXduCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEXa2V5VXNlclRvdGFsQXNzZXRTdGFrZWQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhB0b3RhbEFzc2V0U3Rha2VkCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEKa2V5SGlzdG9yeQMEdHlwZQt1c2VyQWRkcmVzcwR0eElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFBHR5cGUJAMwIAgULdXNlckFkZHJlc3MJAMwIAgkA2AQBBQR0eElkBQNuaWwFA1NFUAENZm9ybWF0SGlzdG9yeQQLdG90YWxQcm9maXQFcHJpY2UQdG90YWxBc3NldEFtb3VudA10b3RhbExwQW1vdW50CQC5CQIJAMwIAgIEJWQlZAkAzAgCCQCkAwEFC3RvdGFsUHJvZml0CQDMCAIJAKYDAQUFcHJpY2UJAMwIAgkApAMBBRB0b3RhbEFzc2V0QW1vdW50CQDMCAIJAKQDAQUNdG90YWxMcEFtb3VudAUDbmlsBQNTRVAADXRvdGFsTHBBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUQa2V5VG90YWxMcEFtb3VudAAAABB0b3RhbEFzc2V0QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVRvdGFsQXNzZXRBbW91bnQAAAANYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQprZXlBc3NldElkAgVXQVZFUwAMYXNzZXRJZEJ5dGVzAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBQR1bml0CQDZBAEFDWFzc2V0SWRTdHJpbmcAFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUZa2V5RW1pc3Npb25QZXJpb2RJbkJsb2NrcwUNQkxPQ0tTX0lOX0RBWQARZW1pc3Npb25QZXJQZXJpb2QJAGgCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleUVtaXNzaW9uUGVyQmxvY2sAAAUWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwAPQURNSU5fTElTVF9TSVpFAAUABlFVT1JVTQADABFUWElEX0JZVEVTX0xFTkdUSAAgARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIJYWxsb3dUeElkCQDMCAIFBHR4SWQFA25pbAUDU0VQARBrZXlGdWxsQWRtaW5Wb3RlAgZwcmVmaXgMYWRtaW5BZGRyZXNzCQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVABE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDmtleUFsbG93ZWRUeElkAAkAuQkCCQDMCAICAiVzCQDMCAICBHR4SWQFA25pbAUDU0VQAQxnZXRBZG1pblZvdGUCBnByZWZpeAVhZG1pbgQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAENZ2V0QWRtaW5zTGlzdAAEByRtYXRjaDAJAJ0IAgUEdGhpcwkBE2tleUFkbWluQWRkcmVzc0xpc3QAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAtQkCBQFzBQNTRVAFA25pbAENaXNJbkFkbWluTGlzdAEHYWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwESZ2VuVm90ZXNLZXlzSGVscGVyAgFhDGFkbWluQWRkcmVzcwQLJHQwMzA0NTMwNjkFAWEEBnJlc3VsdAgFCyR0MDMwNDUzMDY5Al8xBAZwcmVmaXgIBQskdDAzMDQ1MzA2OQJfMgkAlAoCCQDNCAIFBnJlc3VsdAkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFDGFkbWluQWRkcmVzcwUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQETa2V5QWRtaW5BZGRyZXNzTGlzdAAECyR0MDMyMTYzMzAwCgACJGwJAQ1nZXRBZG1pbnNMaXN0AAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQlrZXlQcmVmaXgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdlblZvdGVzS2V5c0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEBnJlc3VsdAgFCyR0MDMyMTYzMzAwAl8xBAZwcmVmaXgIBQskdDAzMjE2MzMwMAJfMgUGcmVzdWx0ARBjb3VudFZvdGVzSGVscGVyAgZyZXN1bHQHdm90ZUtleQkAZAIFBnJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABCmNvdW50Vm90ZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFARBjbGVhclZvdGVzSGVscGVyAgZyZXN1bHQDa2V5CQDNCAIFBnJlc3VsdAkBC0RlbGV0ZUVudHJ5AQUDa2V5ARNnZXRDbGVhclZvdGVFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjbGVhclZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEMdm90ZUlOVEVSTkFMBBNjYWxsZXJBZGRyZXNzU3RyaW5nCWtleVByZWZpeAhtaW5Wb3Rlcwp2b3RlUmVzdWx0BAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQQYWRtaW5DdXJyZW50Vm90ZQkBDGdldEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQDZXJyAwkBASEBCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCEiBub3QgaW4gQWRtaW4gbGlzdAMJAAACBRBhZG1pbkN1cnJlbnRWb3RlAAEJAQh0aHJvd0VycgEJAKwCAgUHdm90ZUtleQISIHlvdSBhbHJlYWR5IHZvdGVkBQR1bml0AwkAAAIFA2VycgUDZXJyBAV2b3RlcwkBCmNvdW50Vm90ZXMBBQlrZXlQcmVmaXgDCQBnAgkAZAIFBXZvdGVzAAEFCG1pblZvdGVzBBBjbGVhclZvdGVFbnRyaWVzCQETZ2V0Q2xlYXJWb3RlRW50cmllcwEFCWtleVByZWZpeAkAzggCBRBjbGVhclZvdGVFbnRyaWVzBQp2b3RlUmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd2b3RlS2V5AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEYY2FsY1RvdGFsUHJvZml0Rm9ySGVpZ2h0AQFoBApzdGFydEJsb2NrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVN0YXJ0QmxvY2sAAAQLc3RhcnRQZXJpb2QJAGsDBQpzdGFydEJsb2NrAAEFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MEDmVsYXBzZWRQZXJpb2RzCQBlAgkAaQIFAWgFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MFC3N0YXJ0UGVyaW9kCQCWAwEJAMwIAgAACQDMCAIJAGgCBRFlbWlzc2lvblBlclBlcmlvZAUOZWxhcHNlZFBlcmlvZHMFA25pbAEPY2FsY1RvdGFsUHJvZml0AAkBGGNhbGNUb3RhbFByb2ZpdEZvckhlaWdodAEFBmhlaWdodAErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAEGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQBkAgUQdG90YWxBc3NldEFtb3VudAkBD2NhbGNUb3RhbFByb2ZpdAAEC3RvdGFsQW1vdW50BAckbWF0Y2gwBQxhc3NldElkQnl0ZXMDCQABAgUHJG1hdGNoMAIEVW5pdAQBdQUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQNuaWwDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIJAPAHAgUEdGhpcwUBYgUDbmlsCQACAQILTWF0Y2ggZXJyb3IDCQAAAgUNdG90YWxMcEFtb3VudAAAAAAFC3RvdGFsQW1vdW50AQ9nZXRDdXJyZW50UHJpY2UAAwkBAiE9AgUNdG90YWxMcEFtb3VudAAACQC8AgMJALYCAQkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUABQ1zY2FsZTE4QmlnSW50CQC2AgEFDXRvdGFsTHBBbW91bnQFDXNjYWxlMThCaWdJbnQBD2dldFVzZXJMcEFtb3VudAELdXNlckFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzAAABIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQt1c2VyQWRkcmVzcwQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcJAKADAQkAvAIDCQC2AgEFDHVzZXJMcEFtb3VudAkBD2dldEN1cnJlbnRQcmljZQAFDXNjYWxlMThCaWdJbnQDCQBmAgAABRx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3AAAFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcBD2dldFN0YWtlQWN0aW9ucwIBaQt1c2VyQWRkcmVzcwQGY2hlY2tzCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIYc2hvdWxkIGluY2x1ZGUgMSBwYXltZW50CQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQxhc3NldElkQnl0ZXMGCQEIdGhyb3dFcnIBCQCsAgICFXBheW1lbnQgc2hvdWxkIGJlIGluIAUNYXNzZXRJZFN0cmluZwkAzAgCAwkAZgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAAGAidwYXltZW50IGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNcGF5bWVudEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQED3BheW1lbnRMcEFtb3VudAkAoAMBCQC8AgMJALYCAQUNcGF5bWVudEFtb3VudAUNc2NhbGUxOEJpZ0ludAkBD2dldEN1cnJlbnRQcmljZQAEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBV1c2VyVG90YWxTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQULdXNlckFkZHJlc3MAAAQQbmV3VG90YWxMcEFtb3VudAkAZAIFDXRvdGFsTHBBbW91bnQFD3BheW1lbnRMcEFtb3VudAQTbmV3VG90YWxBc3NldEFtb3VudAkAZAIFEHRvdGFsQXNzZXRBbW91bnQFDXBheW1lbnRBbW91bnQED25ld1VzZXJMcEFtb3VudAkAZAIFDHVzZXJMcEFtb3VudAUPcGF5bWVudExwQW1vdW50BBhuZXdVc2VyVG90YWxTdGFrZWRBbW91bnQJAGQCBRV1c2VyVG90YWxTdGFrZWRBbW91bnQFDXBheW1lbnRBbW91bnQEF3VwZGF0ZVN0YXJ0SGVpZ2h0QWN0aW9uAwkAAAIFDXRvdGFsTHBBbW91bnQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5U3RhcnRCbG9jawUGaGVpZ2h0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlIaXN0b3J5AwIFc3Rha2UFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQENZm9ybWF0SGlzdG9yeQQJAQ9jYWxjVG90YWxQcm9maXQACQEPZ2V0Q3VycmVudFByaWNlAAUNdG90YWxMcEFtb3VudAUQdG90YWxBc3NldEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5VG90YWxMcEFtb3VudAUQbmV3VG90YWxMcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxBc3NldEFtb3VudAUTbmV3VG90YWxBc3NldEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBQ9uZXdVc2VyTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARdrZXlVc2VyVG90YWxBc3NldFN0YWtlZAEFC3VzZXJBZGRyZXNzBRhuZXdVc2VyVG90YWxTdGFrZWRBbW91bnQFA25pbAUXdXBkYXRlU3RhcnRIZWlnaHRBY3Rpb24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEmdldFdpdGhkcmF3QWN0aW9ucwIBaRVscEFzc2V0V2l0aGRyYXdBbW91bnQEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEBWNoZWNrCQDMCAIDCQBmAgUVbHBBc3NldFdpdGhkcmF3QW1vdW50AAAGCQEIdGhyb3dFcnIBAh9MUCBhbW91bnQgc2hvdWxkIGJlIG1vcmUgdGhhbiAwCQDMCAIDCQBnAgUMdXNlckxwQW1vdW50BRVscEFzc2V0V2l0aGRyYXdBbW91bnQGCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIoY2Fubm90IHdpdGhkcmF3IG1vcmUgdGhhbiBhdmFpbGFibGUgTFAgKAkApAMBBQx1c2VyTHBBbW91bnQCASkFA25pbAMJAAACBQVjaGVjawUFY2hlY2sED25ld1VzZXJMcEFtb3VudAkAZQIFDHVzZXJMcEFtb3VudAUVbHBBc3NldFdpdGhkcmF3QW1vdW50BBN3aXRoZHJhd0Fzc2V0QW1vdW50CQCgAwEJALwCAwkAtgIBBRVscEFzc2V0V2l0aGRyYXdBbW91bnQJAQ9nZXRDdXJyZW50UHJpY2UABQ1zY2FsZTE4QmlnSW50BBBuZXdUb3RhbExwQW1vdW50CQBlAgUNdG90YWxMcEFtb3VudAUVbHBBc3NldFdpdGhkcmF3QW1vdW50BBNuZXdUb3RhbEFzc2V0QW1vdW50CQCgAwEJALwCAwkAtgIBBRBuZXdUb3RhbExwQW1vdW50CQEPZ2V0Q3VycmVudFByaWNlAAUNc2NhbGUxOEJpZ0ludAQXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQULdXNlckFkZHJlc3MAAAQabmV3VXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAGQCBRd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgUTd2l0aGRyYXdBc3NldEFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEKa2V5SGlzdG9yeQMCCHdpdGhkcmF3BQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAkBDWZvcm1hdEhpc3RvcnkECQEPY2FsY1RvdGFsUHJvZml0AAkBD2dldEN1cnJlbnRQcmljZQAFEHRvdGFsQXNzZXRBbW91bnQFDXRvdGFsTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRvdGFsTHBBbW91bnQFEG5ld1RvdGFsTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQXNzZXRBbW91bnQFE25ld1RvdGFsQXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwUPbmV3VXNlckxwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BBQt1c2VyQWRkcmVzcwUabmV3VXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFE3dpdGhkcmF3QXNzZXRBbW91bnQFDGFzc2V0SWRCeXRlcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCAFpARNzZXRFbWlzc2lvblBlckJsb2NrARBlbWlzc2lvblBlckJsb2NrBAVjaGVjawkAzAgCAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50CQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5RW1pc3Npb25QZXJCbG9jawkAlgMBCQDMCAIAAAkAzAgCBRBlbWlzc2lvblBlckJsb2NrBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARlzZXRFbWlzc2lvblBlcmlvZEluQmxvY2tzAQFwBAVjaGVjawkAzAgCAwkAZgIFAXAAAAYJAQh0aHJvd0VycgECKGVtaXNzaW9uIHBlcmlvZCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgMJAAACCAUBaQZjYWxsZXIFBHRoaXMGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxBc3NldEFtb3VudAkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFGWtleUVtaXNzaW9uUGVyaW9kSW5CbG9ja3MFAXAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVzdGFrZQAJAQ9nZXRTdGFrZUFjdGlvbnMCBQFpCQClCAEIBQFpBmNhbGxlcgFpAQhzdGFrZUZvcgELdXNlckFkZHJlc3MEBWNoZWNrCQDMCAIDCQAAAgkAyAEBCQDZBAEFC3VzZXJBZGRyZXNzBRJBRERSRVNTX0JZVEVTX1NJWkUGCQEIdGhyb3dFcnIBAhRhZGRyZXNzIGlzIG5vdCB2YWxpZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkBD2dldFN0YWtlQWN0aW9ucwIFAWkFC3VzZXJBZGRyZXNzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3ARN3aXRoZHJhd0Fzc2V0QW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBJscEFtb3VudFRvV2l0aGRyYXcJAKADAQkAvAIDCQC2AgEFE3dpdGhkcmF3QXNzZXRBbW91bnQFDXNjYWxlMThCaWdJbnQJAQ9nZXRDdXJyZW50UHJpY2UABBx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEgZ2V0VXNlckF2YWlsYWJsZUFzc2V0c1RvV2l0aGRyYXcBBQt1c2VyQWRkcmVzcwQWbWluV2l0aGRyYXdBc3NldEFtb3VudAkAoAMBCQC9AgQJAQ9nZXRDdXJyZW50UHJpY2UACQC2AgEAAQUNc2NhbGUxOEJpZ0ludAUHQ0VJTElORwQFY2hlY2sJAMwIAgMJAGYCBRN3aXRoZHJhd0Fzc2V0QW1vdW50AAAGCQEIdGhyb3dFcnIBAiV3aXRoZHJhdyBhbW91bnQgc2hvdWxkIGJlIG1vcmUgdGhhbiAwCQDMCAIDCQBnAgUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwUTd2l0aGRyYXdBc3NldEFtb3VudAYJAQh0aHJvd0VycgEJAKwCAgkArAICAiVjYW5ub3Qgd2l0aGRyYXcgbW9yZSB0aGFuIGF2YWlsYWJsZSAoCQCkAwEFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcCASkJAMwIAgMJAGcCBRN3aXRoZHJhd0Fzc2V0QW1vdW50BRZtaW5XaXRoZHJhd0Fzc2V0QW1vdW50BgkBCHRocm93RXJyAQkArAICCQCsAgICJHdpdGhkcmF3IGFtb3VudCBpcyB0b28gc21hbGwuIE1pbjogKAkApAMBBRZtaW5XaXRoZHJhd0Fzc2V0QW1vdW50AgEpBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQESZ2V0V2l0aGRyYXdBY3Rpb25zAgUBaQUSbHBBbW91bnRUb1dpdGhkcmF3CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFWdldFVzZXJBc3NldHNSRUFET05MWQELdXNlckFkZHJlc3MEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEgZ2V0VXNlckF2YWlsYWJsZUFzc2V0c1RvV2l0aGRyYXcBBQt1c2VyQWRkcmVzcwQVdXNlclRvdGFsU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARdrZXlVc2VyVG90YWxBc3NldFN0YWtlZAEFC3VzZXJBZGRyZXNzAAAEF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARprZXlVc2VyVG90YWxBc3NldFdpdGhkcmF3bgEFC3VzZXJBZGRyZXNzAAAJAJQKAgUDbmlsCQCXCgUFDHVzZXJMcEFtb3VudAUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwkBD2dldEN1cnJlbnRQcmljZQAFFXVzZXJUb3RhbFN0YWtlZEFtb3VudAUXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24BaQEWZ2V0VG90YWxBc3NldHNSRUFET05MWQAJAJQKAgUDbmlsCQCVCgMFDXRvdGFsTHBBbW91bnQJAStnZXRUb3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdE9yTWF4QXZhaWxhYmxlAAkBD2dldEN1cnJlbnRQcmljZQABaQELdm90ZUZvclR4SWQBBHR4SWQEE2NhbGxlckFkZHJlc3NTdHJpbmcJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQJa2V5UHJlZml4CQEYa2V5QWxsb3dlZFR4SWRWb3RlUHJlZml4AQUEdHhJZAQGcmVzdWx0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlBbGxvd2VkVHhJZAAFBHR4SWQFA25pbAQRYWxsb3dlZFR4SWRPcHRpb24JAJ0IAgUEdGhpcwkBDmtleUFsbG93ZWRUeElkAAQDZXJyCQDMCAIDCQAAAgkAyAEBCQDZBAEFBHR4SWQFEVRYSURfQllURVNfTEVOR1RIBgkBCHRocm93RXJyAQkArAICBQR0eElkAhIgaXMgbm90IHZhbGlkIHR4SWQJAMwIAgMDCQAAAgURYWxsb3dlZFR4SWRPcHRpb24FBHVuaXQGCQECIT0CCQEFdmFsdWUBBRFhbGxvd2VkVHhJZE9wdGlvbgUEdHhJZAYJAQh0aHJvd0VycgEJAKwCAgUEdHhJZAITIGlzIGFscmVhZHkgYWxsb3dlZAUDbmlsAwkAAAIFA2VycgUDZXJyCQEMdm90ZUlOVEVSTkFMBAUTY2FsbGVyQWRkcmVzc1N0cmluZwUJa2V5UHJlZml4BQZRVU9SVU0FBnJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAECGJ5QWRtaW5zCQAAAggFAnR4AmlkCQDZBAEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleUFsbG93ZWRUeElkAAIABAdieU93bmVyAwkAZwIJAJADAQkBDWdldEFkbWluc0xpc3QABQZRVU9SVU0HCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5AwUIYnlBZG1pbnMGBQdieU93bmVy6WuAuQ==", "height": 2685664, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DcnuuFfkHwSRmQJz4b88tRFeeyGNbMcGQ8Tetory6KJB Next: 3Mk3GZdAp7L5vW9WodjjFpTP2VJHSpFwgU4YZ4Tccwgh Diff:
OldNewDifferences
301301
302302
303303 @Callable(aP)
304+func setEmissionPeriodInBlocks (bg) = {
305+ let bb = [if ((bg > 0))
306+ then true
307+ else h("emission period should be greater than 0"), if ((aP.caller == this))
308+ then true
309+ else h("permission denied")]
310+ if ((bb == bb))
311+ then [IntegerEntry(o, aE()), IntegerEntry(m, height), IntegerEntry(l, bg)]
312+ else throw("Strict value is not equal to itself.")
313+ }
314+
315+
316+
317+@Callable(aP)
304318 func stake () = aO(aP, toString(aP.caller))
305319
306320
321335 func withdraw (bc) = {
322336 let q = toString(aP.caller)
323337 let aM = aK(q)
324- let bg = toInt(fraction(toBigInt(bc), e, aJ()))
338+ let bh = toInt(fraction(toBigInt(bc), e, aJ()))
325339 let aN = aL(q)
326- let bh = toInt(fraction(aJ(), toBigInt(1), e, CEILING))
340+ let bi = toInt(fraction(aJ(), toBigInt(1), e, CEILING))
327341 let bb = [if ((bc > 0))
328342 then true
329343 else h("withdraw amount should be more than 0"), if ((aN >= bc))
330344 then true
331- else h((("cannot withdraw more than available (" + toString(aN)) + ")")), if ((bc >= bh))
345+ else h((("cannot withdraw more than available (" + toString(aN)) + ")")), if ((bc >= bi))
332346 then true
333- else h((("withdraw amount is too small. Min: (" + toString(bh)) + ")"))]
347+ else h((("withdraw amount is too small. Min: (" + toString(bi)) + ")"))]
334348 if ((bb == bb))
335- then aZ(aP, bg)
349+ then aZ(aP, bh)
336350 else throw("Strict value is not equal to itself.")
337351 }
338352
359373 let as = toBase58String(aP.caller.bytes)
360374 let ab = I(v)
361375 let Z = [StringEntry(N(), v)]
362- let bi = getString(this, N())
376+ let bj = getString(this, N())
363377 let aw = [if ((size(fromBase58String(v)) == H))
364378 then true
365- else h((v + " is not valid txId")), if (if ((bi == unit))
379+ else h((v + " is not valid txId")), if (if ((bj == unit))
366380 then true
367- else (value(bi) != v))
381+ else (value(bj) != v))
368382 then true
369383 else h((v + " is already allowed"))]
370384 if ((aw == aw))
373387 }
374388
375389
376-@Verifier(bj)
377-func bk () = {
378- let bl = (bj.id == fromBase58String(valueOrElse(getString(this, N()), "")))
379- let bm = if ((size(R()) >= G))
390+@Verifier(bk)
391+func bl () = {
392+ let bm = (bk.id == fromBase58String(valueOrElse(getString(this, N()), "")))
393+ let bn = if ((size(R()) >= G))
380394 then false
381- else sigVerify(bj.bodyBytes, bj.proofs[0], bj.senderPublicKey)
382- if (bl)
395+ else sigVerify(bk.bodyBytes, bk.proofs[0], bk.senderPublicKey)
396+ if (bm)
383397 then true
384- else bm
398+ else bn
385399 }
386400
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "l2mp_staking.ride"
55
66 let b = "__"
77
88 let c = 100000000
99
1010 let d = 1000000000000000000
1111
1212 let e = toBigInt(d)
1313
1414 let f = 26
1515
1616 let g = 1440
1717
1818 func h (i) = throw(((a + ": ") + i))
1919
2020
2121 let j = makeString(["%s", "assetId"], b)
2222
2323 let k = makeString(["%s", "emissionPerBlock"], b)
2424
2525 let l = makeString(["%s", "emissionPeriodInBlocks"], b)
2626
2727 let m = makeString(["%s", "startBlock"], b)
2828
2929 let n = makeString(["%s", "totalLpAmount"], b)
3030
3131 let o = makeString(["%s", "totalAssetAmount"], b)
3232
3333 func p (q) = makeString(["%s%s", "userLpAmount", q], b)
3434
3535
3636 func r (q) = makeString(["%s%s", "totalAssetWithdrawn", q], b)
3737
3838
3939 func s (q) = makeString(["%s%s", "totalAssetStaked", q], b)
4040
4141
4242 func t (u,q,v) = makeString(["%s%s%s", u, q, toBase58String(v)], b)
4343
4444
4545 func w (x,y,z,A) = makeString(["%d%d", toString(x), toString(y), toString(z), toString(A)], b)
4646
4747
4848 let A = valueOrElse(getInteger(this, n), 0)
4949
5050 let z = valueOrElse(getInteger(this, o), 0)
5151
5252 let B = valueOrElse(getString(this, j), "WAVES")
5353
5454 let C = if ((B == "WAVES"))
5555 then unit
5656 else fromBase58String(B)
5757
5858 let D = valueOrElse(getInteger(this, l), g)
5959
6060 let E = (valueOrElse(getInteger(this, k), 0) * D)
6161
6262 let F = 5
6363
6464 let G = 3
6565
6666 let H = 32
6767
6868 func I (v) = makeString(["%s%s%s", "allowTxId", v], b)
6969
7070
7171 func J (K,L) = makeString([K, L], b)
7272
7373
7474 func M () = makeString(["%s", "adminAddressList"], b)
7575
7676
7777 func N () = makeString(["%s", "txId"], b)
7878
7979
8080 func O (K,P) = {
8181 let Q = J(K, P)
8282 valueOrElse(getInteger(Q), 0)
8383 }
8484
8585
8686 func R () = {
8787 let S = getString(this, M())
8888 if ($isInstanceOf(S, "String"))
8989 then {
9090 let T = S
9191 split(T, b)
9292 }
9393 else nil
9494 }
9595
9696
9797 func U (V) = containsElement(R(), V)
9898
9999
100100 func W (X,L) = {
101101 let Y = X
102102 let Z = Y._1
103103 let K = Y._2
104104 $Tuple2((Z :+ J(K, L)), K)
105105 }
106106
107107
108108 func aa (ab) = {
109109 let ac = M()
110110 let ad = {
111111 let ae = R()
112112 let af = size(ae)
113113 let ag = $Tuple2(nil, ab)
114114 func ah (ai,aj) = if ((aj >= af))
115115 then ai
116116 else W(ai, ae[aj])
117117
118118 func ak (ai,aj) = if ((aj >= af))
119119 then ai
120120 else throw("List size exceeds 5")
121121
122122 ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
123123 }
124124 let Z = ad._1
125125 let K = ad._2
126126 Z
127127 }
128128
129129
130130 func al (Z,Q) = (Z + valueOrElse(getInteger(Q), 0))
131131
132132
133133 func am (K) = {
134134 let an = aa(K)
135135 let ae = an
136136 let af = size(ae)
137137 let ag = 0
138138 func ah (ai,aj) = if ((aj >= af))
139139 then ai
140140 else al(ai, ae[aj])
141141
142142 func ak (ai,aj) = if ((aj >= af))
143143 then ai
144144 else throw("List size exceeds 5")
145145
146146 ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
147147 }
148148
149149
150150 func ao (Z,ap) = (Z :+ DeleteEntry(ap))
151151
152152
153153 func aq (K) = {
154154 let an = aa(K)
155155 let ae = an
156156 let af = size(ae)
157157 let ag = nil
158158 func ah (ai,aj) = if ((aj >= af))
159159 then ai
160160 else ao(ai, ae[aj])
161161
162162 func ak (ai,aj) = if ((aj >= af))
163163 then ai
164164 else throw("List size exceeds 5")
165165
166166 ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
167167 }
168168
169169
170170 func ar (as,ab,at,au) = {
171171 let Q = J(ab, as)
172172 let av = O(ab, as)
173173 let aw = if (!(U(as)))
174174 then h((("Address: " + as) + " not in Admin list"))
175175 else if ((av == 1))
176176 then h((Q + " you already voted"))
177177 else unit
178178 if ((aw == aw))
179179 then {
180180 let an = am(ab)
181181 if (((an + 1) >= at))
182182 then {
183183 let ax = aq(ab)
184184 (ax ++ au)
185185 }
186186 else [IntegerEntry(Q, 1)]
187187 }
188188 else throw("Strict value is not equal to itself.")
189189 }
190190
191191
192192 func ay (az) = {
193193 let aA = valueOrElse(getInteger(this, m), 0)
194194 let aB = fraction(aA, 1, D)
195195 let aC = ((az / D) - aB)
196196 max([0, (E * aC)])
197197 }
198198
199199
200200 func aD () = ay(height)
201201
202202
203203 func aE () = {
204204 let aF = (z + aD())
205205 let aG = {
206206 let S = C
207207 if ($isInstanceOf(S, "Unit"))
208208 then {
209209 let aH = S
210210 min([aF, wavesBalance(this).available])
211211 }
212212 else if ($isInstanceOf(S, "ByteVector"))
213213 then {
214214 let aI = S
215215 min([aF, assetBalance(this, aI)])
216216 }
217217 else throw("Match error")
218218 }
219219 if ((A == 0))
220220 then 0
221221 else aG
222222 }
223223
224224
225225 func aJ () = if ((A != 0))
226226 then fraction(toBigInt(aE()), e, toBigInt(A))
227227 else e
228228
229229
230230 func aK (q) = valueOrElse(getInteger(this, p(q)), 0)
231231
232232
233233 func aL (q) = {
234234 let aM = aK(q)
235235 let aN = toInt(fraction(toBigInt(aM), aJ(), e))
236236 if ((0 > aN))
237237 then 0
238238 else aN
239239 }
240240
241241
242242 func aO (aP,q) = {
243243 let aQ = [if ((size(aP.payments) == 1))
244244 then true
245245 else h("should include 1 payment"), if ((aP.payments[0].assetId == C))
246246 then true
247247 else h(("payment should be in " + B)), if ((aP.payments[0].amount > 0))
248248 then true
249249 else "payment amount should be greater than 0"]
250250 if ((aQ == aQ))
251251 then {
252252 let aR = aP.payments[0].amount
253253 let aS = toInt(fraction(toBigInt(aR), e, aJ()))
254254 let aM = aK(q)
255255 let aT = valueOrElse(getInteger(this, s(q)), 0)
256256 let aU = (A + aS)
257257 let aV = (z + aR)
258258 let aW = (aM + aS)
259259 let aX = (aT + aR)
260260 let aY = if ((A == 0))
261261 then [IntegerEntry(m, height)]
262262 else nil
263263 ([StringEntry(t("stake", q, aP.transactionId), w(aD(), aJ(), A, z)), IntegerEntry(n, aU), IntegerEntry(o, aV), IntegerEntry(p(q), aW), IntegerEntry(s(q), aX)] ++ aY)
264264 }
265265 else throw("Strict value is not equal to itself.")
266266 }
267267
268268
269269 func aZ (aP,ba) = {
270270 let q = toString(aP.caller)
271271 let aM = aK(q)
272272 let bb = [if ((ba > 0))
273273 then true
274274 else h("LP amount should be more than 0"), if ((aM >= ba))
275275 then true
276276 else h((("cannot withdraw more than available LP (" + toString(aM)) + ")"))]
277277 if ((bb == bb))
278278 then {
279279 let aW = (aM - ba)
280280 let bc = toInt(fraction(toBigInt(ba), aJ(), e))
281281 let aU = (A - ba)
282282 let aV = toInt(fraction(toBigInt(aU), aJ(), e))
283283 let bd = valueOrElse(getInteger(this, r(q)), 0)
284284 let be = (bd + bc)
285285 [StringEntry(t("withdraw", q, aP.transactionId), w(aD(), aJ(), z, A)), IntegerEntry(n, aU), IntegerEntry(o, aV), IntegerEntry(p(q), aW), IntegerEntry(r(q), be), IntegerEntry(m, height), ScriptTransfer(aP.caller, bc, C)]
286286 }
287287 else throw("Strict value is not equal to itself.")
288288 }
289289
290290
291291 @Callable(aP)
292292 func setEmissionPerBlock (bf) = {
293293 let bb = [if ((aP.caller == this))
294294 then true
295295 else h("permission denied")]
296296 if ((bb == bb))
297297 then [IntegerEntry(o, aE()), IntegerEntry(m, height), IntegerEntry(k, max([0, bf]))]
298298 else throw("Strict value is not equal to itself.")
299299 }
300300
301301
302302
303303 @Callable(aP)
304+func setEmissionPeriodInBlocks (bg) = {
305+ let bb = [if ((bg > 0))
306+ then true
307+ else h("emission period should be greater than 0"), if ((aP.caller == this))
308+ then true
309+ else h("permission denied")]
310+ if ((bb == bb))
311+ then [IntegerEntry(o, aE()), IntegerEntry(m, height), IntegerEntry(l, bg)]
312+ else throw("Strict value is not equal to itself.")
313+ }
314+
315+
316+
317+@Callable(aP)
304318 func stake () = aO(aP, toString(aP.caller))
305319
306320
307321
308322 @Callable(aP)
309323 func stakeFor (q) = {
310324 let bb = [if ((size(fromBase58String(q)) == f))
311325 then true
312326 else h("address is not valid")]
313327 if ((bb == bb))
314328 then aO(aP, q)
315329 else throw("Strict value is not equal to itself.")
316330 }
317331
318332
319333
320334 @Callable(aP)
321335 func withdraw (bc) = {
322336 let q = toString(aP.caller)
323337 let aM = aK(q)
324- let bg = toInt(fraction(toBigInt(bc), e, aJ()))
338+ let bh = toInt(fraction(toBigInt(bc), e, aJ()))
325339 let aN = aL(q)
326- let bh = toInt(fraction(aJ(), toBigInt(1), e, CEILING))
340+ let bi = toInt(fraction(aJ(), toBigInt(1), e, CEILING))
327341 let bb = [if ((bc > 0))
328342 then true
329343 else h("withdraw amount should be more than 0"), if ((aN >= bc))
330344 then true
331- else h((("cannot withdraw more than available (" + toString(aN)) + ")")), if ((bc >= bh))
345+ else h((("cannot withdraw more than available (" + toString(aN)) + ")")), if ((bc >= bi))
332346 then true
333- else h((("withdraw amount is too small. Min: (" + toString(bh)) + ")"))]
347+ else h((("withdraw amount is too small. Min: (" + toString(bi)) + ")"))]
334348 if ((bb == bb))
335- then aZ(aP, bg)
349+ then aZ(aP, bh)
336350 else throw("Strict value is not equal to itself.")
337351 }
338352
339353
340354
341355 @Callable(aP)
342356 func getUserAssetsREADONLY (q) = {
343357 let aM = aK(q)
344358 let aN = aL(q)
345359 let aT = valueOrElse(getInteger(this, s(q)), 0)
346360 let bd = valueOrElse(getInteger(this, r(q)), 0)
347361 $Tuple2(nil, $Tuple5(aM, aN, aJ(), aT, bd))
348362 }
349363
350364
351365
352366 @Callable(aP)
353367 func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(A, aE(), aJ()))
354368
355369
356370
357371 @Callable(aP)
358372 func voteForTxId (v) = {
359373 let as = toBase58String(aP.caller.bytes)
360374 let ab = I(v)
361375 let Z = [StringEntry(N(), v)]
362- let bi = getString(this, N())
376+ let bj = getString(this, N())
363377 let aw = [if ((size(fromBase58String(v)) == H))
364378 then true
365- else h((v + " is not valid txId")), if (if ((bi == unit))
379+ else h((v + " is not valid txId")), if (if ((bj == unit))
366380 then true
367- else (value(bi) != v))
381+ else (value(bj) != v))
368382 then true
369383 else h((v + " is already allowed"))]
370384 if ((aw == aw))
371385 then ar(as, ab, G, Z)
372386 else throw("Strict value is not equal to itself.")
373387 }
374388
375389
376-@Verifier(bj)
377-func bk () = {
378- let bl = (bj.id == fromBase58String(valueOrElse(getString(this, N()), "")))
379- let bm = if ((size(R()) >= G))
390+@Verifier(bk)
391+func bl () = {
392+ let bm = (bk.id == fromBase58String(valueOrElse(getString(this, N()), "")))
393+ let bn = if ((size(R()) >= G))
380394 then false
381- else sigVerify(bj.bodyBytes, bj.proofs[0], bj.senderPublicKey)
382- if (bl)
395+ else sigVerify(bk.bodyBytes, bk.proofs[0], bk.senderPublicKey)
396+ if (bm)
383397 then true
384- else bm
398+ else bn
385399 }
386400

github/deemru/w8io/026f985 
46.05 ms