tx · 3qhkoEaiB3aA51fvCgGCxggwWAuUyygWyEtZ2XiBp3nF

3N3vjjwCXWsTfu2w6biwcPhZe3v17HGY3tR:  -0.01300000 Waves

2023.08.08 13:08 [2701486] smart account 3N3vjjwCXWsTfu2w6biwcPhZe3v17HGY3tR > SELF 0.00000000 Waves

{ "type": 13, "id": "3qhkoEaiB3aA51fvCgGCxggwWAuUyygWyEtZ2XiBp3nF", "fee": 1300000, "feeAssetId": null, "timestamp": 1691489337285, "version": 2, "chainId": 84, "sender": "3N3vjjwCXWsTfu2w6biwcPhZe3v17HGY3tR", "senderPublicKey": "B2SJ1BXVdLQeEg3kiwBCznf5t6GjLEz81mEWEV3fs2vF", "proofs": [ "2BDrxzVUjsTEMAqEh4kYhN7UfZYo4fPzwW8KYShimGPRRfJjRU6yzwhK1ivAsV6SDeCg6M1SB89LbWeYJuAHwkZn" ], "script": "base64:BgIgCAISBgoECAgBARIECgIBBBIDCgEBEgQKAgEEEgMKAQEdAANTRVACAl9fABBjb250cmFjdEZpbGVuYW1lAg1wcm9wb3NhbC5yaWRlAQd3cmFwRXJyAQNtc2cJALkJAgkAzAgCBRBjb250cmFjdEZpbGVuYW1lCQDMCAICAjogCQDMCAIFA21zZwUDbmlsAgABCHRocm93RXJyAQNtc2cJAAIBCQEHd3JhcEVycgEFA21zZwEQYmxvY2tIZWlnaHRFcnJvcgAJAAIBAi9UaGUgYmxvY2sncyBoZWlnaHQgaXMgdG9vIGJpZyBmb3IgdGhpcyBwcm9wb3NhbAEQYWxyZWFkeVZvdGVFcnJvcgAJAAIBAhZZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkAQtub1ZvdGVFcnJvcgAJAAIBAhpZb3UgaGF2ZSBub3QgYWxyZWFkeSB2b3RlZAESZ3d4Q29udHJhY3RBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICEmd3eENvbnRyYWN0QWRkcmVzcwUDbmlsBQNTRVABD2tleUN1cnJlbnRJbmRleAAJALkJAgkAzAgCAgIlcwkAzAgCAgxjdXJyZW50SW5kZXgFA25pbAUDU0VQAQ9rZXlQcm9wb3NhbEluZm8BBm51bWJlcgkAuQkCCQDMCAICBCVzJWQJAMwIAgIMcHJvcG9zYWxJbmZvCQDMCAIJAKQDAQUGbnVtYmVyBQNuaWwFA1NFUAEWa2V5UHJvcG9zYWxEZXNjcmlwdGlvbgEGbnVtYmVyCQC5CQIJAMwIAgIEJXMlZAkAzAgCAhNwcm9wb3NhbERlc2NyaXB0aW9uCQDMCAIJAKQDAQUGbnVtYmVyBQNuaWwFA1NFUAEVa2V5VXNlclZvdGVPblByb3Bvc2FsAgZudW1iZXIEdXNlcgkAuQkCCQDMCAICBiVzJWQlcwkAzAgCAhJ1c2VyVm90ZU9uUHJvcG9zYWwJAMwIAgkApAMBBQZudW1iZXIJAMwIAgUEdXNlcgUDbmlsBQNTRVABE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEWa2V5TWFuYWdlclZhdWx0QWRkcmVzcwACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQ9nZXRDdXJyZW50SW5kZXgACQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEPa2V5Q3VycmVudEluZGV4AAEcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcwAEByRtYXRjaDAJAKIIAQkBFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBcwUEdGhpcwATaWR4UHJvcG9zYWxJbmZvTmFtZQABABJpZHhQcm9wb3NhbEluZm9FbmQAAgAbaWR4UHJvcG9zYWxJbmZvUXVvcnVtTnVtYmVyAAMAHGlkeFByb3Bvc2FsSW5mb1Bvc2l0aXZlVm90ZXMABAAcaWR4UHJvcG9zYWxJbmZvTmVnYXRpdmVWb3RlcwAFARJmb3JtYXRQcm9wb3NhbEluZm8FBG5hbWUDZW5kDHF1b3J1bU51bWJlcg1wb3NpdGl2ZVZvdGVzDW5lZ2F0aXZlVm90ZXMJALkJAgkAzAgCAgolZCVkJWQlZCVkCQDMCAIFBG5hbWUJAMwIAgUDZW5kCQDMCAIFDHF1b3J1bU51bWJlcgkAzAgCBQ1wb3NpdGl2ZVZvdGVzCQDMCAIFDW5lZ2F0aXZlVm90ZXMFA25pbAUDU0VQABlpZHhVc2VyVm90ZU9uUHJvcG9zYWxWb3RlAAEAHmlkeFVzZXJWb3RlT25Qcm9wb3NhbEd3eE51bWJlcgACARhmb3JtYXRVc2VyVm90ZU9uUHJvcG9zYWwCBHZvdGUJZ3d4TnVtYmVyCQC5CQIJAMwIAgIEJWQlZAkAzAgCBQR2b3RlCQDMCAIFCWd3eE51bWJlcgUDbmlsBQNTRVABBWFzSW50AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgNJbnQEBnZhbEludAUHJG1hdGNoMAUGdmFsSW50CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50ARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQTbWFuYWdlclZhdWx0QWRkcmVzcwkBHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMABAckbWF0Y2gwCQCdCAIFE21hbmFnZXJWYXVsdEFkZHJlc3MJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBCWlzTWFuYWdlcgEBaQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawMJAAECBQckbWF0Y2gwAgRVbml0CQAAAggFAWkGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBC211c3RNYW5hZ2VyAQFpAwkBCWlzTWFuYWdlcgEFAWkGCQACAQIRcGVybWlzc2lvbiBkZW5pZWQFAWkBDHN0YXJ0TmV3Vm90ZQQEbmFtZQtkZXNjcmlwdGlvbhBleHBpcmF0aW9uSGVpZ2h0DHF1b3J1bU51bWJlcgQGY2hlY2tzCQDMCAIJAQttdXN0TWFuYWdlcgEFAWkFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQIdGhlSW5kZXgJAQ9nZXRDdXJyZW50SW5kZXgACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5Q3VycmVudEluZGV4AAkAZAIFCHRoZUluZGV4AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleVByb3Bvc2FsSW5mbwEFCHRoZUluZGV4CQESZm9ybWF0UHJvcG9zYWxJbmZvBQUEbmFtZQkApAMBCQBkAggFCWxhc3RCbG9jawZoZWlnaHQFEGV4cGlyYXRpb25IZWlnaHQJAKQDAQUMcXVvcnVtTnVtYmVyAgEwAgEwCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlQcm9wb3NhbERlc2NyaXB0aW9uAQUIdGhlSW5kZXgFC2Rlc2NyaXB0aW9uBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdm90ZUZvcgINcHJvcG9zYWxJbmRleAZjaG9pY2UEBUVNUFRZAgVFTVBUWQQIdm90ZUluZm8JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBD2tleVByb3Bvc2FsSW5mbwEFDXByb3Bvc2FsSW5kZXgFBUVNUFRZBA12b3RlSW5mb0FycmF5CQC1CQIFCHZvdGVJbmZvBQNTRVAEDHVzZXJWb3RlSW5mbwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEVa2V5VXNlclZvdGVPblByb3Bvc2FsAgUNcHJvcG9zYWxJbmRleAkApQgBCAUBaQZjYWxsZXIFBUVNUFRZBAZjaGVja3MJAMwIAgMJAQIhPQIFCHZvdGVJbmZvBQVFTVBUWQYJAAIBAgxObyBzdWNoIHZvdGUJAMwIAgMJAGYCCQEFdmFsdWUBCQC2CQEJAJEDAgUNdm90ZUluZm9BcnJheQACCAUJbGFzdEJsb2NrBmhlaWdodAYJARBibG9ja0hlaWdodEVycm9yAAkAzAgCAwkAAAIFDHVzZXJWb3RlSW5mbwUFRU1QVFkGCQEQYWxyZWFkeVZvdGVFcnJvcgAFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQJZ3d4TnVtYmVyCQEFYXNJbnQBCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARJnd3hDb250cmFjdEFkZHJlc3MAAiBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCCQEFdmFsdWUBCQC2CQEJAJEDAgUNdm90ZUluZm9BcnJheQACBQNuaWwFA25pbAQLJHQwMzkxNTQ5NTEDBQZjaG9pY2UEB2FjdGlvbjEJAQtTdHJpbmdFbnRyeQIJAQ9rZXlQcm9wb3NhbEluZm8BBQ1wcm9wb3NhbEluZGV4CQESZm9ybWF0UHJvcG9zYWxJbmZvBQkAkQMCBQ12b3RlSW5mb0FycmF5AAEJAJEDAgUNdm90ZUluZm9BcnJheQACCQCRAwIFDXZvdGVJbmZvQXJyYXkAAwkApAMBCQBkAgkBBXZhbHVlAQkAtgkBCQCRAwIFDXZvdGVJbmZvQXJyYXkABAUJZ3d4TnVtYmVyCQCRAwIFDXZvdGVJbmZvQXJyYXkABQQHYWN0aW9uMgkBC1N0cmluZ0VudHJ5AgkBFWtleVVzZXJWb3RlT25Qcm9wb3NhbAIFDXByb3Bvc2FsSW5kZXgJAKUIAQgFAWkGY2FsbGVyCQEYZm9ybWF0VXNlclZvdGVPblByb3Bvc2FsAgIBMQkApAMBBQlnd3hOdW1iZXIJAJQKAgUHYWN0aW9uMQUHYWN0aW9uMgQHYWN0aW9uMQkBC1N0cmluZ0VudHJ5AgkBD2tleVByb3Bvc2FsSW5mbwEFDXByb3Bvc2FsSW5kZXgJARJmb3JtYXRQcm9wb3NhbEluZm8FCQCRAwIFDXZvdGVJbmZvQXJyYXkAAQkAkQMCBQ12b3RlSW5mb0FycmF5AAIJAJEDAgUNdm90ZUluZm9BcnJheQADCQCRAwIFDXZvdGVJbmZvQXJyYXkABAkApAMBCQBkAgkBBXZhbHVlAQkAtgkBCQCRAwIFDXZvdGVJbmZvQXJyYXkABQUJZ3d4TnVtYmVyBAdhY3Rpb24yCQELU3RyaW5nRW50cnkCCQEVa2V5VXNlclZvdGVPblByb3Bvc2FsAgUNcHJvcG9zYWxJbmRleAkApQgBCAUBaQZjYWxsZXIJARhmb3JtYXRVc2VyVm90ZU9uUHJvcG9zYWwCAgEwCQCkAwEFCWd3eE51bWJlcgkAlAoCBQdhY3Rpb24xBQdhY3Rpb24yBAdhY3Rpb24xCAULJHQwMzkxNTQ5NTECXzEEB2FjdGlvbjIIBQskdDAzOTE1NDk1MQJfMgkAzAgCBQdhY3Rpb24xCQDMCAIFB2FjdGlvbjIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpkZWxldGVWb3RlAQ1wcm9wb3NhbEluZGV4BAVFTVBUWQIFRU1QVFkECHZvdGVJbmZvCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ9rZXlQcm9wb3NhbEluZm8BBQ1wcm9wb3NhbEluZGV4BQVFTVBUWQQNdm90ZUluZm9BcnJheQkAtQkCBQh2b3RlSW5mbwUDU0VQBAx1c2VyVm90ZUluZm8JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBFWtleVVzZXJWb3RlT25Qcm9wb3NhbAIFDXByb3Bvc2FsSW5kZXgJAKUIAQgFAWkGY2FsbGVyBQVFTVBUWQQRdXNlclZvdGVJbmZvQXJyYXkJALUJAgUMdXNlclZvdGVJbmZvBQNTRVAEBmNoZWNrcwkAzAgCAwkBAiE9AgUIdm90ZUluZm8FBUVNUFRZBgkAAgECDE5vIHN1Y2ggdm90ZQkAzAgCAwkAZgIJAQV2YWx1ZQEJALYJAQkAkQMCBQ12b3RlSW5mb0FycmF5AAIIBQlsYXN0QmxvY2sGaGVpZ2h0BgkBEGJsb2NrSGVpZ2h0RXJyb3IACQDMCAIDCQECIT0CBQx1c2VyVm90ZUluZm8FBUVNUFRZBgkBC25vVm90ZUVycm9yAAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAZhY3Rpb24DCQAAAgkAkQMCBRF1c2VyVm90ZUluZm9BcnJheQABAgExCQELU3RyaW5nRW50cnkCCQEPa2V5UHJvcG9zYWxJbmZvAQUNcHJvcG9zYWxJbmRleAkBEmZvcm1hdFByb3Bvc2FsSW5mbwUJAJEDAgUNdm90ZUluZm9BcnJheQABCQCRAwIFDXZvdGVJbmZvQXJyYXkAAgkAkQMCBQ12b3RlSW5mb0FycmF5AAMJAKQDAQkAZQIJAQV2YWx1ZQEJALYJAQkAkQMCBQ12b3RlSW5mb0FycmF5AAQJAQV2YWx1ZQEJALYJAQkAkQMCBRF1c2VyVm90ZUluZm9BcnJheQACCQCRAwIFDXZvdGVJbmZvQXJyYXkABQkBC1N0cmluZ0VudHJ5AgkBD2tleVByb3Bvc2FsSW5mbwEFDXByb3Bvc2FsSW5kZXgJARJmb3JtYXRQcm9wb3NhbEluZm8FCQCRAwIFDXZvdGVJbmZvQXJyYXkAAQkAkQMCBQ12b3RlSW5mb0FycmF5AAIJAJEDAgUNdm90ZUluZm9BcnJheQADCQCRAwIFDXZvdGVJbmZvQXJyYXkABAkApAMBCQBlAgkBBXZhbHVlAQkAtgkBCQCRAwIFDXZvdGVJbmZvQXJyYXkABQkBBXZhbHVlAQkAtgkBCQCRAwIFEXVzZXJWb3RlSW5mb0FycmF5AAIJAMwIAgUGYWN0aW9uCQDMCAIJAQtEZWxldGVFbnRyeQEJARVrZXlVc2VyVm90ZU9uUHJvcG9zYWwCBQ1wcm9wb3NhbEluZGV4CQClCAEIBQFpBmNhbGxlcgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmNoYW5nZVZvdGUCDXByb3Bvc2FsSW5kZXgGY2hvaWNlBAVFTVBUWQIFRU1QVFkECHZvdGVJbmZvCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ9rZXlQcm9wb3NhbEluZm8BBQ1wcm9wb3NhbEluZGV4BQVFTVBUWQQNdm90ZUluZm9BcnJheQkAtQkCBQh2b3RlSW5mbwUDU0VQBAx1c2VyVm90ZUluZm8JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBFWtleVVzZXJWb3RlT25Qcm9wb3NhbAIFDXByb3Bvc2FsSW5kZXgJAKUIAQgFAWkGY2FsbGVyBQVFTVBUWQQRdXNlclZvdGVJbmZvQXJyYXkJALUJAgUMdXNlclZvdGVJbmZvBQNTRVAEBmNoZWNrcwkAzAgCAwkBAiE9AgUIdm90ZUluZm8FBUVNUFRZBgkAAgECDE5vIHN1Y2ggdm90ZQkAzAgCAwkAZgIJAQV2YWx1ZQEJALYJAQkAkQMCBQ12b3RlSW5mb0FycmF5AAIIBQlsYXN0QmxvY2sGaGVpZ2h0BgkBEGJsb2NrSGVpZ2h0RXJyb3IACQDMCAIDCQECIT0CBQx1c2VyVm90ZUluZm8FBUVNUFRZBgkBC25vVm90ZUVycm9yAAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAlnd3hOdW1iZXIJAQVhc0ludAEJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEmd3eENvbnRyYWN0QWRkcmVzcwACIGdldFVzZXJHd3hBbW91bnRBdEhlaWdodFJFQURPTkxZCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQV2YWx1ZQEJALYJAQkAkQMCBQ12b3RlSW5mb0FycmF5AAMFA25pbAUDbmlsBAskdDA3MTE5NzQ1OAMFBmNob2ljZQQJZm9yTnVtYmVyBQlnd3hOdW1iZXIEDWFnYWluc3ROdW1iZXIAAAQNY2hvaWNlSW50ZWdlcgABCQCVCgMFCWZvck51bWJlcgUNYWdhaW5zdE51bWJlcgUNY2hvaWNlSW50ZWdlcgQJZm9yTnVtYmVyAAAEDWFnYWluc3ROdW1iZXIFCWd3eE51bWJlcgQNY2hvaWNlSW50ZWdlcgAACQCVCgMFCWZvck51bWJlcgUNYWdhaW5zdE51bWJlcgUNY2hvaWNlSW50ZWdlcgQMdXNlclBvd2VyRm9yCAULJHQwNzExOTc0NTgCXzEEEHVzZXJQb3dlckFnYWluc3QIBQskdDA3MTE5NzQ1OAJfMgQJY2hvaWNlSW50CAULJHQwNzExOTc0NTgCXzMEBmFjdGlvbgMJAAACCQCRAwIFEXVzZXJWb3RlSW5mb0FycmF5AAECATEJAQtTdHJpbmdFbnRyeQIJAQ9rZXlQcm9wb3NhbEluZm8BBQ1wcm9wb3NhbEluZGV4CQESZm9ybWF0UHJvcG9zYWxJbmZvBQkAkQMCBQ12b3RlSW5mb0FycmF5AAEJAJEDAgUNdm90ZUluZm9BcnJheQACCQCRAwIFDXZvdGVJbmZvQXJyYXkAAwkApAMBCQBkAgkAZQIJAQV2YWx1ZQEJALYJAQkAkQMCBQ12b3RlSW5mb0FycmF5AAQJAQV2YWx1ZQEJALYJAQkAkQMCBRF1c2VyVm90ZUluZm9BcnJheQACBQx1c2VyUG93ZXJGb3IJAKQDAQkAZAIJAQV2YWx1ZQEJALYJAQkAkQMCBQ12b3RlSW5mb0FycmF5AAUFEHVzZXJQb3dlckFnYWluc3QJAQtTdHJpbmdFbnRyeQIJAQ9rZXlQcm9wb3NhbEluZm8BBQ1wcm9wb3NhbEluZGV4CQESZm9ybWF0UHJvcG9zYWxJbmZvBQkAkQMCBQ12b3RlSW5mb0FycmF5AAEJAJEDAgUNdm90ZUluZm9BcnJheQACCQCRAwIFDXZvdGVJbmZvQXJyYXkAAwkApAMBCQBkAgkBBXZhbHVlAQkAtgkBCQCRAwIFDXZvdGVJbmZvQXJyYXkABAUMdXNlclBvd2VyRm9yCQCkAwEJAGQCCQBlAgkBBXZhbHVlAQkAtgkBCQCRAwIFDXZvdGVJbmZvQXJyYXkABQkBBXZhbHVlAQkAtgkBCQCRAwIFEXVzZXJWb3RlSW5mb0FycmF5AAIFEHVzZXJQb3dlckFnYWluc3QJAMwIAgUGYWN0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlVc2VyVm90ZU9uUHJvcG9zYWwCBQ1wcm9wb3NhbEluZGV4CQClCAEIBQFpBmNhbGxlcgkBGGZvcm1hdFVzZXJWb3RlT25Qcm9wb3NhbAIJAKQDAQUJY2hvaWNlSW50CQCkAwEFCWd3eE51bWJlcgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWdldFJlc3VsdFJFQURPTkxZAQ1wcm9wb3NhbEluZGV4BAVFTVBUWQIFRU1QVFkECHZvdGVJbmZvCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ9rZXlQcm9wb3NhbEluZm8BBQ1wcm9wb3NhbEluZGV4BQVFTVBUWQQNdm90ZUluZm9BcnJheQkAtQkCBQh2b3RlSW5mbwUDU0VQBAZjaGVja3MJAMwIAgMJAQIhPQIFCHZvdGVJbmZvBQVFTVBUWQYJAAIBAgxObyBzdWNoIHZvdGUFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQMcXVvcnVtTnVtYmVyCQCRAwIFDXZvdGVJbmZvQXJyYXkAAwQNcG9zaXRpdmVWb3RlcwkAkQMCBQ12b3RlSW5mb0FycmF5AAQEDW5lZ2F0aXZlVm90ZXMJAJEDAgUNdm90ZUluZm9BcnJheQAFCQCUCgIFA25pbAkAzAgCBQ1wb3NpdGl2ZVZvdGVzCQDMCAIFDW5lZ2F0aXZlVm90ZXMJAMwIAgUMcXVvcnVtTnVtYmVyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXkj/RTq", "height": 2701486, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2fXW4pocuqYC4MXZpcgPddsiXTUsyXXmivCAur1qf4Xq Next: 2ZmL2dfXx1nYH3azRTwq63b48o3yUVTmaD6krjN8Cu1p Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
6-func b () = throw("The block's height is too big for this proposal")
6+let b = "proposal.ride"
7+
8+func c (d) = makeString([b, ": ", d], "")
79
810
9-func c () = throw("You have already voted")
11+func e (d) = throw(c(d))
1012
1113
12-func d () = throw("You have not already voted")
14+func f () = throw("The block's height is too big for this proposal")
1315
1416
15-func e () = makeString(["%s", "gwxContractAddress"], a)
17+func g () = throw("You have already voted")
1618
1719
18-func f () = makeString(["%s", "currentIndex"], a)
20+func h () = throw("You have not already voted")
1921
2022
21-func g (h) = makeString(["%s%d", "proposalInfo", toString(h)], a)
23+func i () = makeString(["%s", "gwxContractAddress"], a)
2224
2325
24-func i (h) = makeString(["%s%d", "proposalDescription", toString(h)], a)
26+func j () = makeString(["%s", "currentIndex"], a)
2527
2628
27-func j (h,k) = makeString(["%s%d%s", "userVoteOnProposal", toString(h), k], a)
29+func k (l) = makeString(["%s%d", "proposalInfo", toString(l)], a)
2830
2931
30-func l () = "%s__managerPublicKey"
32+func m (l) = makeString(["%s%d", "proposalDescription", toString(l)], a)
3133
3234
33-func m () = "%s__managerVaultAddress"
35+func n (l,o) = makeString(["%s%d%s", "userVoteOnProposal", toString(l), o], a)
3436
3537
36-func n () = getIntegerValue(this, f())
38+func p () = "%s__managerPublicKey"
3739
3840
39-func o () = {
40- let p = getString(m())
41- if ($isInstanceOf(p, "String"))
41+func q () = "%s__managerVaultAddress"
42+
43+
44+func r () = getIntegerValue(this, j())
45+
46+
47+func s () = {
48+ let t = getString(q())
49+ if ($isInstanceOf(t, "String"))
4250 then {
43- let q = p
44- addressFromStringValue(q)
51+ let u = t
52+ addressFromStringValue(u)
4553 }
4654 else this
4755 }
4856
4957
50-func r (s,t,u,v,w) = makeString(["%d%d%d%d%d", s, t, u, v, w], a)
58+let v = 1
59+
60+let w = 2
61+
62+let x = 3
63+
64+let y = 4
65+
66+let z = 5
67+
68+func A (B,C,D,E,F) = makeString(["%d%d%d%d%d", B, C, D, E, F], a)
5169
5270
53-func x (y,z) = makeString(["%d%d", y, z], a)
71+let G = 1
72+
73+let H = 2
74+
75+func I (J,K) = makeString(["%d%d", J, K], a)
5476
5577
56-func A (B) = {
57- let p = B
58- if ($isInstanceOf(p, "Int"))
78+func L (M) = {
79+ let t = M
80+ if ($isInstanceOf(t, "Int"))
5981 then {
60- let C = p
61- C
82+ let N = t
83+ N
6284 }
6385 else throw("fail to cast into Int")
6486 }
6587
6688
67-func D () = {
68- let E = o()
69- let p = getString(E, l())
70- if ($isInstanceOf(p, "String"))
89+func O () = {
90+ let P = s()
91+ let t = getString(P, p())
92+ if ($isInstanceOf(t, "String"))
7193 then {
72- let q = p
73- fromBase58String(q)
94+ let u = t
95+ fromBase58String(u)
7496 }
75- else if ($isInstanceOf(p, "Unit"))
97+ else if ($isInstanceOf(t, "Unit"))
7698 then unit
7799 else throw("Match error")
78100 }
79101
80102
81-func F (G) = {
82- let p = D()
83- if ($isInstanceOf(p, "ByteVector"))
103+func Q (R) = {
104+ let t = O()
105+ if ($isInstanceOf(t, "ByteVector"))
84106 then {
85- let H = p
86- (G.callerPublicKey == H)
107+ let S = t
108+ (R.callerPublicKey == S)
87109 }
88- else if ($isInstanceOf(p, "Unit"))
89- then (G.caller == this)
110+ else if ($isInstanceOf(t, "Unit"))
111+ then (R.caller == this)
90112 else throw("Match error")
91113 }
92114
93115
94-func I (G) = if (F(G))
116+func T (R) = if (Q(R))
95117 then true
96118 else throw("permission denied")
97119
98120
99-@Callable(G)
100-func startNewVote (s,J,K,u) = {
101- let L = [I(G)]
102- if ((L == L))
121+@Callable(R)
122+func startNewVote (B,U,V,D) = {
123+ let W = [T(R)]
124+ if ((W == W))
103125 then {
104- let M = n()
105-[IntegerEntry(f(), (M + 1)), StringEntry(g(M), r(s, toString((lastBlock.height + K)), toString(u), "0", "0")), StringEntry(i(M), J)]
126+ let X = r()
127+[IntegerEntry(j(), (X + 1)), StringEntry(k(X), A(B, toString((lastBlock.height + V)), toString(D), "0", "0")), StringEntry(m(X), U)]
106128 }
107129 else throw("Strict value is not equal to itself.")
108130 }
109131
110132
111133
112-@Callable(G)
113-func voteFor (N,O) = {
114- let P = "EMPTY"
115- let Q = valueOrElse(getString(this, g(N)), P)
116- let R = split(Q, a)
117- let S = valueOrElse(getString(this, j(N, toString(G.caller))), P)
118- let L = [if ((Q != P))
134+@Callable(R)
135+func voteFor (Y,Z) = {
136+ let aa = "EMPTY"
137+ let ab = valueOrElse(getString(this, k(Y)), aa)
138+ let ac = split(ab, a)
139+ let ad = valueOrElse(getString(this, n(Y, toString(R.caller))), aa)
140+ let W = [if ((ab != aa))
119141 then true
120- else throw("No such vote"), if ((value(parseInt(R[2])) > lastBlock.height))
142+ else throw("No such vote"), if ((value(parseInt(ac[2])) > lastBlock.height))
121143 then true
122- else b(), if ((S == P))
144+ else f(), if ((ad == aa))
123145 then true
124- else c()]
125- if ((L == L))
146+ else g()]
147+ if ((W == W))
126148 then {
127- let z = A(invoke(addressFromStringValue(getStringValue(e())), "getUserGwxAmountAtHeightREADONLY", [toString(G.caller), value(parseInt(R[2]))], nil))
128- let T = if (O)
149+ let K = L(invoke(addressFromStringValue(getStringValue(i())), "getUserGwxAmountAtHeightREADONLY", [toString(R.caller), value(parseInt(ac[2]))], nil))
150+ let ae = if (Z)
129151 then {
130- let U = StringEntry(g(N), r(R[1], R[2], R[3], toString((value(parseInt(R[4])) + z)), R[5]))
131- let V = StringEntry(j(N, toString(G.caller)), x("1", toString(z)))
132- $Tuple2(U, V)
152+ let af = StringEntry(k(Y), A(ac[1], ac[2], ac[3], toString((value(parseInt(ac[4])) + K)), ac[5]))
153+ let ag = StringEntry(n(Y, toString(R.caller)), I("1", toString(K)))
154+ $Tuple2(af, ag)
133155 }
134156 else {
135- let U = StringEntry(g(N), r(R[1], R[2], R[3], R[4], toString((value(parseInt(R[5])) + z))))
136- let V = StringEntry(j(N, toString(G.caller)), x("0", toString(z)))
137- $Tuple2(U, V)
157+ let af = StringEntry(k(Y), A(ac[1], ac[2], ac[3], ac[4], toString((value(parseInt(ac[5])) + K))))
158+ let ag = StringEntry(n(Y, toString(R.caller)), I("0", toString(K)))
159+ $Tuple2(af, ag)
138160 }
139- let U = T._1
140- let V = T._2
141-[U, V]
161+ let af = ae._1
162+ let ag = ae._2
163+[af, ag]
142164 }
143165 else throw("Strict value is not equal to itself.")
144166 }
145167
146168
147169
148-@Callable(G)
149-func deleteVote (N) = {
150- let P = "EMPTY"
151- let Q = valueOrElse(getString(this, g(N)), P)
152- let R = split(Q, a)
153- let S = valueOrElse(getString(this, j(N, toString(G.caller))), P)
154- let W = split(S, a)
155- let L = [if ((Q != P))
170+@Callable(R)
171+func deleteVote (Y) = {
172+ let aa = "EMPTY"
173+ let ab = valueOrElse(getString(this, k(Y)), aa)
174+ let ac = split(ab, a)
175+ let ad = valueOrElse(getString(this, n(Y, toString(R.caller))), aa)
176+ let ah = split(ad, a)
177+ let W = [if ((ab != aa))
156178 then true
157- else throw("No such vote"), if ((value(parseInt(R[2])) > lastBlock.height))
179+ else throw("No such vote"), if ((value(parseInt(ac[2])) > lastBlock.height))
158180 then true
159- else b(), if ((S != P))
181+ else f(), if ((ad != aa))
160182 then true
161- else d()]
162- if ((L == L))
183+ else h()]
184+ if ((W == W))
163185 then {
164- let X = if ((W[1] == "1"))
165- then StringEntry(g(N), r(R[1], R[2], R[3], toString((value(parseInt(R[4])) - value(parseInt(W[2])))), R[5]))
166- else StringEntry(g(N), r(R[1], R[2], R[3], R[4], toString((value(parseInt(R[5])) - value(parseInt(W[2]))))))
167-[X, DeleteEntry(j(N, toString(G.caller)))]
186+ let ai = if ((ah[1] == "1"))
187+ then StringEntry(k(Y), A(ac[1], ac[2], ac[3], toString((value(parseInt(ac[4])) - value(parseInt(ah[2])))), ac[5]))
188+ else StringEntry(k(Y), A(ac[1], ac[2], ac[3], ac[4], toString((value(parseInt(ac[5])) - value(parseInt(ah[2]))))))
189+[ai, DeleteEntry(n(Y, toString(R.caller)))]
168190 }
169191 else throw("Strict value is not equal to itself.")
170192 }
171193
172194
173195
174-@Callable(G)
175-func changeVote (N,O) = {
176- let P = "EMPTY"
177- let Q = valueOrElse(getString(this, g(N)), P)
178- let R = split(Q, a)
179- let S = valueOrElse(getString(this, j(N, toString(G.caller))), P)
180- let W = split(S, a)
181- let L = [if ((Q != P))
196+@Callable(R)
197+func changeVote (Y,Z) = {
198+ let aa = "EMPTY"
199+ let ab = valueOrElse(getString(this, k(Y)), aa)
200+ let ac = split(ab, a)
201+ let ad = valueOrElse(getString(this, n(Y, toString(R.caller))), aa)
202+ let ah = split(ad, a)
203+ let W = [if ((ab != aa))
182204 then true
183- else throw("No such vote"), if ((value(parseInt(R[2])) > lastBlock.height))
205+ else throw("No such vote"), if ((value(parseInt(ac[2])) > lastBlock.height))
184206 then true
185- else b(), if ((S != P))
207+ else f(), if ((ad != aa))
186208 then true
187- else d()]
188- if ((L == L))
209+ else h()]
210+ if ((W == W))
189211 then {
190- let z = A(invoke(addressFromStringValue(getStringValue(e())), "getUserGwxAmountAtHeightREADONLY", [toString(G.caller), value(parseInt(R[3]))], nil))
191- let Y = if (O)
212+ let K = L(invoke(addressFromStringValue(getStringValue(i())), "getUserGwxAmountAtHeightREADONLY", [toString(R.caller), value(parseInt(ac[3]))], nil))
213+ let aj = if (Z)
192214 then {
193- let Z = z
194- let aa = 0
195- let ab = 1
196- $Tuple3(Z, aa, ab)
215+ let ak = K
216+ let al = 0
217+ let am = 1
218+ $Tuple3(ak, al, am)
197219 }
198220 else {
199- let Z = 0
200- let aa = z
201- let ab = 0
202- $Tuple3(Z, aa, ab)
221+ let ak = 0
222+ let al = K
223+ let am = 0
224+ $Tuple3(ak, al, am)
203225 }
204- let ac = Y._1
205- let ad = Y._2
206- let ae = Y._3
207- let X = if ((W[1] == "1"))
208- then StringEntry(g(N), r(R[1], R[2], R[3], toString(((value(parseInt(R[4])) - value(parseInt(W[2]))) + ac)), toString((value(parseInt(R[5])) + ad))))
209- else StringEntry(g(N), r(R[1], R[2], R[3], toString((value(parseInt(R[4])) + ac)), toString(((value(parseInt(R[5])) - value(parseInt(W[2]))) + ad))))
210-[X, StringEntry(j(N, toString(G.caller)), x(toString(ae), toString(z)))]
226+ let an = aj._1
227+ let ao = aj._2
228+ let ap = aj._3
229+ let ai = if ((ah[1] == "1"))
230+ then StringEntry(k(Y), A(ac[1], ac[2], ac[3], toString(((value(parseInt(ac[4])) - value(parseInt(ah[2]))) + an)), toString((value(parseInt(ac[5])) + ao))))
231+ else StringEntry(k(Y), A(ac[1], ac[2], ac[3], toString((value(parseInt(ac[4])) + an)), toString(((value(parseInt(ac[5])) - value(parseInt(ah[2]))) + ao))))
232+[ai, StringEntry(n(Y, toString(R.caller)), I(toString(ap), toString(K)))]
211233 }
212234 else throw("Strict value is not equal to itself.")
213235 }
214236
215237
216238
217-@Callable(G)
218-func getResultREADONLY (N) = {
219- let P = "EMPTY"
220- let Q = valueOrElse(getString(this, g(N)), P)
221- let R = split(Q, a)
222- let L = [if ((Q != P))
239+@Callable(R)
240+func getResultREADONLY (Y) = {
241+ let aa = "EMPTY"
242+ let ab = valueOrElse(getString(this, k(Y)), aa)
243+ let ac = split(ab, a)
244+ let W = [if ((ab != aa))
223245 then true
224246 else throw("No such vote")]
225- if ((L == L))
247+ if ((W == W))
226248 then {
227- let u = R[3]
228- let v = R[4]
229- let w = R[5]
230- $Tuple2(nil, [v, w, u])
249+ let D = ac[3]
250+ let E = ac[4]
251+ let F = ac[5]
252+ $Tuple2(nil, [E, F, D])
231253 }
232254 else throw("Strict value is not equal to itself.")
233255 }
234256
235257
236-@Verifier(af)
237-func ag () = {
238- let ah = {
239- let p = D()
240- if ($isInstanceOf(p, "ByteVector"))
258+@Verifier(aq)
259+func ar () = {
260+ let as = {
261+ let t = O()
262+ if ($isInstanceOf(t, "ByteVector"))
241263 then {
242- let H = p
243- H
264+ let S = t
265+ S
244266 }
245- else if ($isInstanceOf(p, "Unit"))
246- then af.senderPublicKey
267+ else if ($isInstanceOf(t, "Unit"))
268+ then aq.senderPublicKey
247269 else throw("Match error")
248270 }
249- sigVerify(af.bodyBytes, af.proofs[0], ah)
271+ sigVerify(aq.bodyBytes, aq.proofs[0], as)
250272 }
251273
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
6-func b () = throw("The block's height is too big for this proposal")
6+let b = "proposal.ride"
7+
8+func c (d) = makeString([b, ": ", d], "")
79
810
9-func c () = throw("You have already voted")
11+func e (d) = throw(c(d))
1012
1113
12-func d () = throw("You have not already voted")
14+func f () = throw("The block's height is too big for this proposal")
1315
1416
15-func e () = makeString(["%s", "gwxContractAddress"], a)
17+func g () = throw("You have already voted")
1618
1719
18-func f () = makeString(["%s", "currentIndex"], a)
20+func h () = throw("You have not already voted")
1921
2022
21-func g (h) = makeString(["%s%d", "proposalInfo", toString(h)], a)
23+func i () = makeString(["%s", "gwxContractAddress"], a)
2224
2325
24-func i (h) = makeString(["%s%d", "proposalDescription", toString(h)], a)
26+func j () = makeString(["%s", "currentIndex"], a)
2527
2628
27-func j (h,k) = makeString(["%s%d%s", "userVoteOnProposal", toString(h), k], a)
29+func k (l) = makeString(["%s%d", "proposalInfo", toString(l)], a)
2830
2931
30-func l () = "%s__managerPublicKey"
32+func m (l) = makeString(["%s%d", "proposalDescription", toString(l)], a)
3133
3234
33-func m () = "%s__managerVaultAddress"
35+func n (l,o) = makeString(["%s%d%s", "userVoteOnProposal", toString(l), o], a)
3436
3537
36-func n () = getIntegerValue(this, f())
38+func p () = "%s__managerPublicKey"
3739
3840
39-func o () = {
40- let p = getString(m())
41- if ($isInstanceOf(p, "String"))
41+func q () = "%s__managerVaultAddress"
42+
43+
44+func r () = getIntegerValue(this, j())
45+
46+
47+func s () = {
48+ let t = getString(q())
49+ if ($isInstanceOf(t, "String"))
4250 then {
43- let q = p
44- addressFromStringValue(q)
51+ let u = t
52+ addressFromStringValue(u)
4553 }
4654 else this
4755 }
4856
4957
50-func r (s,t,u,v,w) = makeString(["%d%d%d%d%d", s, t, u, v, w], a)
58+let v = 1
59+
60+let w = 2
61+
62+let x = 3
63+
64+let y = 4
65+
66+let z = 5
67+
68+func A (B,C,D,E,F) = makeString(["%d%d%d%d%d", B, C, D, E, F], a)
5169
5270
53-func x (y,z) = makeString(["%d%d", y, z], a)
71+let G = 1
72+
73+let H = 2
74+
75+func I (J,K) = makeString(["%d%d", J, K], a)
5476
5577
56-func A (B) = {
57- let p = B
58- if ($isInstanceOf(p, "Int"))
78+func L (M) = {
79+ let t = M
80+ if ($isInstanceOf(t, "Int"))
5981 then {
60- let C = p
61- C
82+ let N = t
83+ N
6284 }
6385 else throw("fail to cast into Int")
6486 }
6587
6688
67-func D () = {
68- let E = o()
69- let p = getString(E, l())
70- if ($isInstanceOf(p, "String"))
89+func O () = {
90+ let P = s()
91+ let t = getString(P, p())
92+ if ($isInstanceOf(t, "String"))
7193 then {
72- let q = p
73- fromBase58String(q)
94+ let u = t
95+ fromBase58String(u)
7496 }
75- else if ($isInstanceOf(p, "Unit"))
97+ else if ($isInstanceOf(t, "Unit"))
7698 then unit
7799 else throw("Match error")
78100 }
79101
80102
81-func F (G) = {
82- let p = D()
83- if ($isInstanceOf(p, "ByteVector"))
103+func Q (R) = {
104+ let t = O()
105+ if ($isInstanceOf(t, "ByteVector"))
84106 then {
85- let H = p
86- (G.callerPublicKey == H)
107+ let S = t
108+ (R.callerPublicKey == S)
87109 }
88- else if ($isInstanceOf(p, "Unit"))
89- then (G.caller == this)
110+ else if ($isInstanceOf(t, "Unit"))
111+ then (R.caller == this)
90112 else throw("Match error")
91113 }
92114
93115
94-func I (G) = if (F(G))
116+func T (R) = if (Q(R))
95117 then true
96118 else throw("permission denied")
97119
98120
99-@Callable(G)
100-func startNewVote (s,J,K,u) = {
101- let L = [I(G)]
102- if ((L == L))
121+@Callable(R)
122+func startNewVote (B,U,V,D) = {
123+ let W = [T(R)]
124+ if ((W == W))
103125 then {
104- let M = n()
105-[IntegerEntry(f(), (M + 1)), StringEntry(g(M), r(s, toString((lastBlock.height + K)), toString(u), "0", "0")), StringEntry(i(M), J)]
126+ let X = r()
127+[IntegerEntry(j(), (X + 1)), StringEntry(k(X), A(B, toString((lastBlock.height + V)), toString(D), "0", "0")), StringEntry(m(X), U)]
106128 }
107129 else throw("Strict value is not equal to itself.")
108130 }
109131
110132
111133
112-@Callable(G)
113-func voteFor (N,O) = {
114- let P = "EMPTY"
115- let Q = valueOrElse(getString(this, g(N)), P)
116- let R = split(Q, a)
117- let S = valueOrElse(getString(this, j(N, toString(G.caller))), P)
118- let L = [if ((Q != P))
134+@Callable(R)
135+func voteFor (Y,Z) = {
136+ let aa = "EMPTY"
137+ let ab = valueOrElse(getString(this, k(Y)), aa)
138+ let ac = split(ab, a)
139+ let ad = valueOrElse(getString(this, n(Y, toString(R.caller))), aa)
140+ let W = [if ((ab != aa))
119141 then true
120- else throw("No such vote"), if ((value(parseInt(R[2])) > lastBlock.height))
142+ else throw("No such vote"), if ((value(parseInt(ac[2])) > lastBlock.height))
121143 then true
122- else b(), if ((S == P))
144+ else f(), if ((ad == aa))
123145 then true
124- else c()]
125- if ((L == L))
146+ else g()]
147+ if ((W == W))
126148 then {
127- let z = A(invoke(addressFromStringValue(getStringValue(e())), "getUserGwxAmountAtHeightREADONLY", [toString(G.caller), value(parseInt(R[2]))], nil))
128- let T = if (O)
149+ let K = L(invoke(addressFromStringValue(getStringValue(i())), "getUserGwxAmountAtHeightREADONLY", [toString(R.caller), value(parseInt(ac[2]))], nil))
150+ let ae = if (Z)
129151 then {
130- let U = StringEntry(g(N), r(R[1], R[2], R[3], toString((value(parseInt(R[4])) + z)), R[5]))
131- let V = StringEntry(j(N, toString(G.caller)), x("1", toString(z)))
132- $Tuple2(U, V)
152+ let af = StringEntry(k(Y), A(ac[1], ac[2], ac[3], toString((value(parseInt(ac[4])) + K)), ac[5]))
153+ let ag = StringEntry(n(Y, toString(R.caller)), I("1", toString(K)))
154+ $Tuple2(af, ag)
133155 }
134156 else {
135- let U = StringEntry(g(N), r(R[1], R[2], R[3], R[4], toString((value(parseInt(R[5])) + z))))
136- let V = StringEntry(j(N, toString(G.caller)), x("0", toString(z)))
137- $Tuple2(U, V)
157+ let af = StringEntry(k(Y), A(ac[1], ac[2], ac[3], ac[4], toString((value(parseInt(ac[5])) + K))))
158+ let ag = StringEntry(n(Y, toString(R.caller)), I("0", toString(K)))
159+ $Tuple2(af, ag)
138160 }
139- let U = T._1
140- let V = T._2
141-[U, V]
161+ let af = ae._1
162+ let ag = ae._2
163+[af, ag]
142164 }
143165 else throw("Strict value is not equal to itself.")
144166 }
145167
146168
147169
148-@Callable(G)
149-func deleteVote (N) = {
150- let P = "EMPTY"
151- let Q = valueOrElse(getString(this, g(N)), P)
152- let R = split(Q, a)
153- let S = valueOrElse(getString(this, j(N, toString(G.caller))), P)
154- let W = split(S, a)
155- let L = [if ((Q != P))
170+@Callable(R)
171+func deleteVote (Y) = {
172+ let aa = "EMPTY"
173+ let ab = valueOrElse(getString(this, k(Y)), aa)
174+ let ac = split(ab, a)
175+ let ad = valueOrElse(getString(this, n(Y, toString(R.caller))), aa)
176+ let ah = split(ad, a)
177+ let W = [if ((ab != aa))
156178 then true
157- else throw("No such vote"), if ((value(parseInt(R[2])) > lastBlock.height))
179+ else throw("No such vote"), if ((value(parseInt(ac[2])) > lastBlock.height))
158180 then true
159- else b(), if ((S != P))
181+ else f(), if ((ad != aa))
160182 then true
161- else d()]
162- if ((L == L))
183+ else h()]
184+ if ((W == W))
163185 then {
164- let X = if ((W[1] == "1"))
165- then StringEntry(g(N), r(R[1], R[2], R[3], toString((value(parseInt(R[4])) - value(parseInt(W[2])))), R[5]))
166- else StringEntry(g(N), r(R[1], R[2], R[3], R[4], toString((value(parseInt(R[5])) - value(parseInt(W[2]))))))
167-[X, DeleteEntry(j(N, toString(G.caller)))]
186+ let ai = if ((ah[1] == "1"))
187+ then StringEntry(k(Y), A(ac[1], ac[2], ac[3], toString((value(parseInt(ac[4])) - value(parseInt(ah[2])))), ac[5]))
188+ else StringEntry(k(Y), A(ac[1], ac[2], ac[3], ac[4], toString((value(parseInt(ac[5])) - value(parseInt(ah[2]))))))
189+[ai, DeleteEntry(n(Y, toString(R.caller)))]
168190 }
169191 else throw("Strict value is not equal to itself.")
170192 }
171193
172194
173195
174-@Callable(G)
175-func changeVote (N,O) = {
176- let P = "EMPTY"
177- let Q = valueOrElse(getString(this, g(N)), P)
178- let R = split(Q, a)
179- let S = valueOrElse(getString(this, j(N, toString(G.caller))), P)
180- let W = split(S, a)
181- let L = [if ((Q != P))
196+@Callable(R)
197+func changeVote (Y,Z) = {
198+ let aa = "EMPTY"
199+ let ab = valueOrElse(getString(this, k(Y)), aa)
200+ let ac = split(ab, a)
201+ let ad = valueOrElse(getString(this, n(Y, toString(R.caller))), aa)
202+ let ah = split(ad, a)
203+ let W = [if ((ab != aa))
182204 then true
183- else throw("No such vote"), if ((value(parseInt(R[2])) > lastBlock.height))
205+ else throw("No such vote"), if ((value(parseInt(ac[2])) > lastBlock.height))
184206 then true
185- else b(), if ((S != P))
207+ else f(), if ((ad != aa))
186208 then true
187- else d()]
188- if ((L == L))
209+ else h()]
210+ if ((W == W))
189211 then {
190- let z = A(invoke(addressFromStringValue(getStringValue(e())), "getUserGwxAmountAtHeightREADONLY", [toString(G.caller), value(parseInt(R[3]))], nil))
191- let Y = if (O)
212+ let K = L(invoke(addressFromStringValue(getStringValue(i())), "getUserGwxAmountAtHeightREADONLY", [toString(R.caller), value(parseInt(ac[3]))], nil))
213+ let aj = if (Z)
192214 then {
193- let Z = z
194- let aa = 0
195- let ab = 1
196- $Tuple3(Z, aa, ab)
215+ let ak = K
216+ let al = 0
217+ let am = 1
218+ $Tuple3(ak, al, am)
197219 }
198220 else {
199- let Z = 0
200- let aa = z
201- let ab = 0
202- $Tuple3(Z, aa, ab)
221+ let ak = 0
222+ let al = K
223+ let am = 0
224+ $Tuple3(ak, al, am)
203225 }
204- let ac = Y._1
205- let ad = Y._2
206- let ae = Y._3
207- let X = if ((W[1] == "1"))
208- then StringEntry(g(N), r(R[1], R[2], R[3], toString(((value(parseInt(R[4])) - value(parseInt(W[2]))) + ac)), toString((value(parseInt(R[5])) + ad))))
209- else StringEntry(g(N), r(R[1], R[2], R[3], toString((value(parseInt(R[4])) + ac)), toString(((value(parseInt(R[5])) - value(parseInt(W[2]))) + ad))))
210-[X, StringEntry(j(N, toString(G.caller)), x(toString(ae), toString(z)))]
226+ let an = aj._1
227+ let ao = aj._2
228+ let ap = aj._3
229+ let ai = if ((ah[1] == "1"))
230+ then StringEntry(k(Y), A(ac[1], ac[2], ac[3], toString(((value(parseInt(ac[4])) - value(parseInt(ah[2]))) + an)), toString((value(parseInt(ac[5])) + ao))))
231+ else StringEntry(k(Y), A(ac[1], ac[2], ac[3], toString((value(parseInt(ac[4])) + an)), toString(((value(parseInt(ac[5])) - value(parseInt(ah[2]))) + ao))))
232+[ai, StringEntry(n(Y, toString(R.caller)), I(toString(ap), toString(K)))]
211233 }
212234 else throw("Strict value is not equal to itself.")
213235 }
214236
215237
216238
217-@Callable(G)
218-func getResultREADONLY (N) = {
219- let P = "EMPTY"
220- let Q = valueOrElse(getString(this, g(N)), P)
221- let R = split(Q, a)
222- let L = [if ((Q != P))
239+@Callable(R)
240+func getResultREADONLY (Y) = {
241+ let aa = "EMPTY"
242+ let ab = valueOrElse(getString(this, k(Y)), aa)
243+ let ac = split(ab, a)
244+ let W = [if ((ab != aa))
223245 then true
224246 else throw("No such vote")]
225- if ((L == L))
247+ if ((W == W))
226248 then {
227- let u = R[3]
228- let v = R[4]
229- let w = R[5]
230- $Tuple2(nil, [v, w, u])
249+ let D = ac[3]
250+ let E = ac[4]
251+ let F = ac[5]
252+ $Tuple2(nil, [E, F, D])
231253 }
232254 else throw("Strict value is not equal to itself.")
233255 }
234256
235257
236-@Verifier(af)
237-func ag () = {
238- let ah = {
239- let p = D()
240- if ($isInstanceOf(p, "ByteVector"))
258+@Verifier(aq)
259+func ar () = {
260+ let as = {
261+ let t = O()
262+ if ($isInstanceOf(t, "ByteVector"))
241263 then {
242- let H = p
243- H
264+ let S = t
265+ S
244266 }
245- else if ($isInstanceOf(p, "Unit"))
246- then af.senderPublicKey
267+ else if ($isInstanceOf(t, "Unit"))
268+ then aq.senderPublicKey
247269 else throw("Match error")
248270 }
249- sigVerify(af.bodyBytes, af.proofs[0], ah)
271+ sigVerify(aq.bodyBytes, aq.proofs[0], as)
250272 }
251273

github/deemru/w8io/169f3d6 
96.46 ms