tx · D5Td2rbPe6mDS8JpFxjA4iKjmL2Eh7q69gtXFsJkT3FZ

3MuS6qVvhBR6wSynFRdcE3fVqmGBjoc7Hhx:  -0.01400000 Waves

2023.08.07 15:47 [2700185] smart account 3MuS6qVvhBR6wSynFRdcE3fVqmGBjoc7Hhx > SELF 0.00000000 Waves

{ "type": 13, "id": "D5Td2rbPe6mDS8JpFxjA4iKjmL2Eh7q69gtXFsJkT3FZ", "fee": 1400000, "feeAssetId": null, "timestamp": 1691412554344, "version": 2, "chainId": 84, "sender": "3MuS6qVvhBR6wSynFRdcE3fVqmGBjoc7Hhx", "senderPublicKey": "62CHk4MqTdq3LqeUycy7TPnpvwrjgerSa2FqAY2EafXn", "proofs": [ "bQSuYtZ5qCcjGcZabzcrsPGVRzzV6XxnbiEnZfVgp2heCLhWKvs7r7eQqrmC88Z6iRFGqsaF1jhjxwxvXPbLANp" ], "script": "base64:BwJuCAISBAoCCAgSBAoCCAESBAoCCAQSBAoCCAISAwoBCBIDCgEBEgMKAQESBQoDAgECEgUKAwIYGBIECgICARIECgICARIFCgMBAQESBQoDAQEBEgASAwoBCBIAEgASAwoBCBIAEgQKAggIEgMKAQgxAANTRVACAl9fAAVXQVZFUwIFV0FWRVMAEGNvbnRyYWN0RmlsZW5hbWUCDGZhY3RvcnkucmlkZQEHd3JhcEVycgEBcwkArAICCQCsAgIFEGNvbnRyYWN0RmlsZW5hbWUCAjogBQFzAQh0aHJvd0VycgEBcwkAAgEJAQd3cmFwRXJyAQUBcwEPc3RyaW5nVG9Bc3NldElkAQFzAwkAAAIFAXMFBVdBVkVTBQR1bml0CQDZBAEFAXMAD0FETUlOX0xJU1RfU0laRQAFAAZRVU9SVU0AAwARVFhJRF9CWVRFU19MRU5HVEgAIAEYa2V5QWxsb3dlZFR4SWRWb3RlUHJlZml4AQR0eElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCWFsbG93VHhJZAkAzAgCBQR0eElkBQNuaWwFA1NFUAEQa2V5RnVsbEFkbWluVm90ZQIGcHJlZml4DGFkbWluQWRkcmVzcwkAuQkCCQDMCAIFBnByZWZpeAkAzAgCBQxhZG1pbkFkZHJlc3MFA25pbAUDU0VQARNrZXlBZG1pbkFkZHJlc3NMaXN0AAkAuQkCCQDMCAICAiVzCQDMCAICEGFkbWluQWRkcmVzc0xpc3QFA25pbAUDU0VQAQ5rZXlBbGxvd2VkVHhJZAAJALkJAgkAzAgCAgIlcwkAzAgCAgR0eElkBQNuaWwFA1NFUAEMZ2V0QWRtaW5Wb3RlAgZwcmVmaXgFYWRtaW4EB3ZvdGVLZXkJARBrZXlGdWxsQWRtaW5Wb3RlAgUGcHJlZml4BQVhZG1pbgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABDWdldEFkbWluc0xpc3QABAckbWF0Y2gwCQCdCAIFBHRoaXMJARNrZXlBZG1pbkFkZHJlc3NMaXN0AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJALUJAgUBcwUDU0VQBQNuaWwBDWlzSW5BZG1pbkxpc3QBB2FkZHJlc3MJAQ9jb250YWluc0VsZW1lbnQCCQENZ2V0QWRtaW5zTGlzdAAFB2FkZHJlc3MBEmdlblZvdGVzS2V5c0hlbHBlcgIBYQxhZG1pbkFkZHJlc3MECyR0MDEzNzUxMzk5BQFhBAZyZXN1bHQIBQskdDAxMzc1MTM5OQJfMQQGcHJlZml4CAULJHQwMTM3NTEzOTkCXzIJAJQKAgkAzQgCBQZyZXN1bHQJARBrZXlGdWxsQWRtaW5Wb3RlAgUGcHJlZml4BQxhZG1pbkFkZHJlc3MFBnByZWZpeAEMZ2VuVm90ZXNLZXlzAQlrZXlQcmVmaXgECWFkbWluTGlzdAkBE2tleUFkbWluQWRkcmVzc0xpc3QABAskdDAxNTQ2MTYzMAoAAiRsCQENZ2V0QWRtaW5zTGlzdAAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUJa2V5UHJlZml4CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARJnZW5Wb3Rlc0tleXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAZyZXN1bHQIBQskdDAxNTQ2MTYzMAJfMQQGcHJlZml4CAULJHQwMTU0NjE2MzACXzIFBnJlc3VsdAEQY291bnRWb3Rlc0hlbHBlcgIGcmVzdWx0B3ZvdGVLZXkJAGQCBQZyZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdm90ZUtleQAAAQpjb3VudFZvdGVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjb3VudFZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEQY2xlYXJWb3Rlc0hlbHBlcgIGcmVzdWx0A2tleQkAzQgCBQZyZXN1bHQJAQtEZWxldGVFbnRyeQEFA2tleQETZ2V0Q2xlYXJWb3RlRW50cmllcwEGcHJlZml4BAV2b3RlcwkBDGdlblZvdGVzS2V5cwEFBnByZWZpeAoAAiRsBQV2b3RlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEQY2xlYXJWb3Rlc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUBDHZvdGVJTlRFUk5BTAQTY2FsbGVyQWRkcmVzc1N0cmluZwlrZXlQcmVmaXgIbWluVm90ZXMKdm90ZVJlc3VsdAQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQlrZXlQcmVmaXgFE2NhbGxlckFkZHJlc3NTdHJpbmcEEGFkbWluQ3VycmVudFZvdGUJAQxnZXRBZG1pblZvdGUCBQlrZXlQcmVmaXgFE2NhbGxlckFkZHJlc3NTdHJpbmcEA2VycgMJAQEhAQkBDWlzSW5BZG1pbkxpc3QBBRNjYWxsZXJBZGRyZXNzU3RyaW5nCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIJQWRkcmVzczogBRNjYWxsZXJBZGRyZXNzU3RyaW5nAhIgbm90IGluIEFkbWluIGxpc3QDCQAAAgUQYWRtaW5DdXJyZW50Vm90ZQABCQEIdGhyb3dFcnIBCQCsAgIFB3ZvdGVLZXkCEiB5b3UgYWxyZWFkeSB2b3RlZAUEdW5pdAMJAAACBQNlcnIFA2VycgQFdm90ZXMJAQpjb3VudFZvdGVzAQUJa2V5UHJlZml4AwkAZwIJAGQCBQV2b3RlcwABBQhtaW5Wb3RlcwQQY2xlYXJWb3RlRW50cmllcwkBE2dldENsZWFyVm90ZUVudHJpZXMBBQlrZXlQcmVmaXgJAM4IAgUQY2xlYXJWb3RlRW50cmllcwUKdm90ZVJlc3VsdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdm90ZUtleQABBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BFGtleUNhbGN1bGF0b3JBZGRyZXNzAAIOJXNfX2NhbGN1bGF0b3IBF2tleVByb3h5VHJlYXN1cnlBZGRyZXNzAAIRJXNfX3Byb3h5VHJlYXN1cnkBD2tleUNoaWxkQWRkcmVzcwACCSVzX19jaGlsZAEYa2V5QmxvY2tQcm9jZXNzaW5nUmV3YXJkAAIZJXNfX2Jsb2NrUHJvY2Vzc2luZ1Jld2FyZAEVa2V5TmV4dEJsb2NrVG9Qcm9jZXNzAAIWJXNfX25leHRCbG9ja1RvUHJvY2VzcwEMa2V5THBBc3NldElkAAINJXNfX2xwQXNzZXRJZAAXY2FsY3VsYXRvckFkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwkBFGtleUNhbGN1bGF0b3JBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFF2NhbGN1bGF0b3JBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECGmludmFsaWQgY2FsY3VsYXRvciBhZGRyZXNzABpwcm94eVRyZWFzdXJ5QWRkcmVzc09wdGlvbgQHJG1hdGNoMAkAnQgCBQR0aGlzCQEXa2V5UHJveHlUcmVhc3VyeUFkZHJlc3MAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAacHJveHlUcmVhc3VyeUFkZHJlc3NPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUacHJveHlUcmVhc3VyeUFkZHJlc3NPcHRpb24JAQd3cmFwRXJyAQIeaW52YWxpZCBwcm94eSB0cmVhc3VyeSBhZGRyZXNzARBrZXlDb25maWdBZGRyZXNzAAIKJXNfX2NvbmZpZwESa2V5Q2hpbGRyZW5BZGRyZXNzAAIRY29udHJhY3RfY2hpbGRyZW4BFmtleVZvdGluZ1Jlc3VsdEFkZHJlc3MAAhZjb250cmFjdF92b3RpbmdfcmVzdWx0ARlrZXlQcm9wb3NhbEFsbG93QnJvYWRjYXN0AgdhZGRyZXNzBHR4SWQJAKwCAgkArAICCQCsAgICGXByb3Bvc2FsX2FsbG93X2Jyb2FkY2FzdF8JAKUIAQUHYWRkcmVzcwIBXwkA2AQBBQR0eElkARFrZXlJbnZlc3RlZEJ5VXNlcgIMY2hpbGRBZGRyZXNzC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIIaW52ZXN0b3IJAMwIAgkApQgBBQxjaGlsZEFkZHJlc3MJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwUDbmlsAgFfABNjb25maWdBZGRyZXNzT3B0aW9uBAckbWF0Y2gwCQCdCAIFBHRoaXMJARBrZXlDb25maWdBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAE2NvbmZpZ0FkZHJlc3NPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUTY29uZmlnQWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAhZpbnZhbGlkIGNvbmZpZyBhZGRyZXNzABl2b3RpbmdSZXN1bHRBZGRyZXNzT3B0aW9uBAckbWF0Y2gwBRNjb25maWdBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBFmtleVZvdGluZ1Jlc3VsdEFkZHJlc3MAAwkAAQIFByRtYXRjaDECBlN0cmluZwQBcwUHJG1hdGNoMQkApggBBQFzAwkAAQIFByRtYXRjaDECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAGXZvdGluZ1Jlc3VsdEFkZHJlc3NPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUZdm90aW5nUmVzdWx0QWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAh1pbnZhbGlkIHZvdGluZyByZXN1bHQgYWRkcmVzcwAVY2hpbGRyZW5BZGRyZXNzT3B0aW9uBAckbWF0Y2gwBRNjb25maWdBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBEmtleUNoaWxkcmVuQWRkcmVzcwADCQABAgUHJG1hdGNoMQIGU3RyaW5nBAFzBQckbWF0Y2gxCQCmCAEFAXMDCQABAgUHJG1hdGNoMQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAVY2hpbGRyZW5BZGRyZXNzT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFFWNoaWxkcmVuQWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAhhpbnZhbGlkIGNoaWxkcmVuIGFkZHJlc3MAD2xwQXNzZXRJZE9wdGlvbgQHJG1hdGNoMAkAnQgCBQR0aGlzCQEMa2V5THBBc3NldElkAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAD2xwQXNzZXRJZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQ9scEFzc2V0SWRPcHRpb24JAQd3cmFwRXJyAQIRaW52YWxpZCBscEFzc2V0SWQBC29ubHlBZGRyZXNzAgFpB2FkZHJlc3MDCQAAAggFAWkGY2FsbGVyBQdhZGRyZXNzBgkBCHRocm93RXJyAQIRcGVybWlzc2lvbiBkZW5pZWQBCG9ubHlUaGlzAQFpCQELb25seUFkZHJlc3MCBQFpBQR0aGlzAQ5vbmx5Q2FsY3VsYXRvcgEBaQkBC29ubHlBZGRyZXNzAgUBaQUXY2FsY3VsYXRvckFkZHJlc3NPckZhaWwVAWkBC3N0cmluZ0VudHJ5AgNrZXkDdmFsAwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUDdmFsBQNuaWwFA2tleQkAlAoCBQNuaWwFBHVuaXQBaQEMaW50ZWdlckVudHJ5AgNrZXkDdmFsAwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkFA3ZhbAUDbmlsBQNrZXkJAJQKAgUDbmlsBQR1bml0AWkBDGJvb2xlYW5FbnRyeQIDa2V5A3ZhbAMJAQ5vbmx5Q2FsY3VsYXRvcgEFAWkJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQCUCgIFA25pbAUEdW5pdAFpAQtiaW5hcnlFbnRyeQIDa2V5A3ZhbAMJAQ5vbmx5Q2FsY3VsYXRvcgEFAWkJAJQKAgkAzAgCCQELQmluYXJ5RW50cnkCBQNrZXkFA3ZhbAUDbmlsBQNrZXkJAJQKAgUDbmlsBQR1bml0AWkBC2RlbGV0ZUVudHJ5AQNrZXkDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUDa2V5BQNuaWwFA2tleQkAlAoCBQNuaWwFBHVuaXQBaQEHcmVpc3N1ZQEGYW1vdW50AwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQdSZWlzc3VlAwUPbHBBc3NldElkT3JGYWlsBQZhbW91bnQGBQNuaWwFBmFtb3VudAkAlAoCBQNuaWwFBHVuaXQBaQEEYnVybgEGYW1vdW50AwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQRCdXJuAgUPbHBBc3NldElkT3JGYWlsBQZhbW91bnQFA25pbAUGYW1vdW50CQCUCgIFA25pbAUEdW5pdAFpAQ10cmFuc2ZlckFzc2V0Aw5yZWNlcGllbnRCeXRlcwZhbW91bnQHYXNzZXRJZAMJAQ5vbmx5Q2FsY3VsYXRvcgEFAWkJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFDnJlY2VwaWVudEJ5dGVzBQZhbW91bnQFB2Fzc2V0SWQFA25pbAUGYW1vdW50CQCUCgIFA25pbAUEdW5pdAFpAQ50cmFuc2ZlckFzc2V0cwMOcmVjZXBpZW50Qnl0ZXMKYXNzZXRzTGlzdAthbW91bnRzTGlzdAMJAQ5vbmx5Q2FsY3VsYXRvcgEFAWkKAQ5hZGROZXdUcmFuc2ZlcgIFYWNjdW0LbmV4dEFzc2V0SWQECyR0MDc0NTc3NDgzBQVhY2N1bQQJdHJhbnNmZXJzCAULJHQwNzQ1Nzc0ODMCXzEEAWoIBQskdDA3NDU3NzQ4MwJfMgQLbmV3VHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUOcmVjZXBpZW50Qnl0ZXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQthbW91bnRzTGlzdAUBagkBD3N0cmluZ1RvQXNzZXRJZAEJAJEDAgUKYXNzZXRzTGlzdAUBagQQdXBkYXRlZFRyYW5zZmVycwkAzQgCBQl0cmFuc2ZlcnMFC25ld1RyYW5zZmVyCQCUCgIFEHVwZGF0ZWRUcmFuc2ZlcnMJAGQCBQFqAAEECyR0MDc3NDM3ODI0CgACJGwFCmFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ5hZGROZXdUcmFuc2ZlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQPYXNzZXRzVHJhbnNmZXJzCAULJHQwNzc0Mzc4MjQCXzEECl9sYXN0SW5kZXgIBQskdDA3NzQzNzgyNAJfMgkAlAoCBQ9hc3NldHNUcmFuc2ZlcnMFBHVuaXQJAJQKAgUDbmlsBQR1bml0AWkBDXRyYW5zZmVyV2F2ZXMCDnJlY2VwaWVudEJ5dGVzBmFtb3VudAMJAQ5vbmx5Q2FsY3VsYXRvcgEFAWkJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFDnJlY2VwaWVudEJ5dGVzBQZhbW91bnQFBHVuaXQFA25pbAUGYW1vdW50CQCUCgIFA25pbAUEdW5pdAFpARl0cmFuc2ZlckZyb21Qcm94eVRyZWFzdXJ5Ag5yZWNpcGllbnRCeXRlcw1yZXdhcmRzQW1vdW50AwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCBQNuaWwJAPwHBAUacHJveHlUcmVhc3VyeUFkZHJlc3NPckZhaWwCDXRyYW5zZmVyV2F2ZXMJAMwIAgUOcmVjaXBpZW50Qnl0ZXMJAMwIAgUNcmV3YXJkc0Ftb3VudAUDbmlsBQNuaWwJAJQKAgUDbmlsBQR1bml0AWkBCGZpbmFsaXplAxhuZXdUcmVhc3VyeVZvbHVtZUluV2F2ZXMXcHdyTWFuYWdlcnNCb251c0luV2F2ZXMgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAghmaW5hbGl6ZQkAzAgCCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIFGG5ld1RyZWFzdXJ5Vm9sdW1lSW5XYXZlcwkAzAgCBRdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcwkAzAgCBSB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgUDbmlsCAUBaQhwYXltZW50cwFpARBmaW5hbGl6ZVJFQURPTkxZAxhuZXdUcmVhc3VyeVZvbHVtZUluV2F2ZXMXcHdyTWFuYWdlcnNCb251c0luV2F2ZXMgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAhBmaW5hbGl6ZVJFQURPTkxZCQDMCAIFGG5ld1RyZWFzdXJ5Vm9sdW1lSW5XYXZlcwkAzAgCBRdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcwkAzAgCBSB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgUDbmlsBQNuaWwBaQEHY2xhaW1MUAAJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAgdjbGFpbUxQCQDMCAIICAUBaQZjYWxsZXIFYnl0ZXMFA25pbAgFAWkIcGF5bWVudHMBaQEPY2xhaW1Db2xsYXRlcmFsAQd0eElkU3RyCQCUCgIFA25pbAkA/QcEBRdjYWxjdWxhdG9yQWRkcmVzc09yRmFpbAIPY2xhaW1Db2xsYXRlcmFsCQDMCAIICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkA2QQBBQd0eElkU3RyBQNuaWwIBQFpCHBheW1lbnRzAWkBBmludmVzdAAJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAgZpbnZlc3QJAMwIAggIBQFpBmNhbGxlcgVieXRlcwUDbmlsCAUBaQhwYXltZW50cwFpAQh3aXRoZHJhdwAJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAgh3aXRoZHJhdwkAzAgCCAgFAWkGY2FsbGVyBWJ5dGVzBQNuaWwIBQFpCHBheW1lbnRzAWkBDmNhbmNlbFdpdGhkcmF3AQd0eElkU3RyCQCUCgIFA25pbAkA/QcEBRdjYWxjdWxhdG9yQWRkcmVzc09yRmFpbAIOY2FuY2VsV2l0aGRyYXcJAMwIAggIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQDZBAEFB3R4SWRTdHIFA25pbAgFAWkIcGF5bWVudHMBaQENcHJvY2Vzc0Jsb2NrcwAJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAg1wcm9jZXNzQmxvY2tzCQDMCAIICAUBaQZjYWxsZXIFYnl0ZXMFA25pbAgFAWkIcGF5bWVudHMBaQEXY2xhaW1Db2xsYXRlcmFsUkVBRE9OTFkCC3VzZXJBZGRyZXNzB3R4SWRTdHIJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAhdjbGFpbUNvbGxhdGVyYWxSRUFET05MWQkAzAgCCQDZBAEFC3VzZXJBZGRyZXNzCQDMCAIJANkEAQUHdHhJZFN0cgUDbmlsBQNuaWwBaQELdm90ZUZvclR4SWQBBHR4SWQEE2NhbGxlckFkZHJlc3NTdHJpbmcJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQJa2V5UHJlZml4CQEYa2V5QWxsb3dlZFR4SWRWb3RlUHJlZml4AQUEdHhJZAQGcmVzdWx0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlBbGxvd2VkVHhJZAAFBHR4SWQFA25pbAQRYWxsb3dlZFR4SWRPcHRpb24JAJ0IAgUEdGhpcwkBDmtleUFsbG93ZWRUeElkAAQDZXJyCQDMCAIDCQAAAgkAyAEBCQDZBAEFBHR4SWQFEVRYSURfQllURVNfTEVOR1RIBgkBCHRocm93RXJyAQkArAICBQR0eElkAhIgaXMgbm90IHZhbGlkIHR4SWQJAMwIAgMDCQAAAgURYWxsb3dlZFR4SWRPcHRpb24FBHVuaXQGCQECIT0CCQEFdmFsdWUBBRFhbGxvd2VkVHhJZE9wdGlvbgUEdHhJZAYJAQh0aHJvd0VycgEJAKwCAgUEdHhJZAITIGlzIGFscmVhZHkgYWxsb3dlZAUDbmlsAwkAAAIFA2VycgUDZXJyCQEMdm90ZUlOVEVSTkFMBAUTY2FsbGVyQWRkcmVzc1N0cmluZwUJa2V5UHJlZml4BQZRVU9SVU0FBnJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAECmJ5UHJvcG9zYWwEByRtYXRjaDAFGXZvdGluZ1Jlc3VsdEFkZHJlc3NPcHRpb24DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQPcHJvcG9zYWxBZGRyZXNzBQckbWF0Y2gwCQELdmFsdWVPckVsc2UCCQCbCAIFD3Byb3Bvc2FsQWRkcmVzcwkBGWtleVByb3Bvc2FsQWxsb3dCcm9hZGNhc3QCBQR0aGlzCAUCdHgCaWQHBwQIYnlBZG1pbnMJAAACCAUCdHgCaWQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQAAgAEB2J5T3duZXIDCQBnAgkAkAMBCQENZ2V0QWRtaW5zTGlzdAAFBlFVT1JVTQcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkDAwUKYnlQcm9wb3NhbAYFCGJ5QWRtaW5zBgUHYnlPd25lcpqBDGU=", "height": 2700185, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FnjdA9Rj9FxjWAKpa45AtPk5xfNBPzmKCN2dqmAzu8xx Next: EP1UgKEVvxPxEhFsGZUbi8MrsVjuyR7Xbp1w4fdE1Pd3 Diff:
OldNewDifferences
414414
415415
416416 @Callable(i)
417+func claimCollateralREADONLY (userAddress,txIdStr) = $Tuple2(nil, reentrantInvoke(calculatorAddressOrFail, "claimCollateralREADONLY", [fromBase58String(userAddress), fromBase58String(txIdStr)], nil))
418+
419+
420+
421+@Callable(i)
417422 func voteForTxId (txId) = {
418423 let callerAddressString = toBase58String(i.caller.bytes)
419424 let keyPrefix = keyAllowedTxIdVotePrefix(txId)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let WAVES = "WAVES"
77
88 let contractFilename = "factory.ride"
99
1010 func wrapErr (s) = ((contractFilename + ": ") + s)
1111
1212
1313 func throwErr (s) = throw(wrapErr(s))
1414
1515
1616 func stringToAssetId (s) = if ((s == WAVES))
1717 then unit
1818 else fromBase58String(s)
1919
2020
2121 let ADMIN_LIST_SIZE = 5
2222
2323 let QUORUM = 3
2424
2525 let TXID_BYTES_LENGTH = 32
2626
2727 func keyAllowedTxIdVotePrefix (txId) = makeString(["%s%s%s", "allowTxId", txId], SEP)
2828
2929
3030 func keyFullAdminVote (prefix,adminAddress) = makeString([prefix, adminAddress], SEP)
3131
3232
3333 func keyAdminAddressList () = makeString(["%s", "adminAddressList"], SEP)
3434
3535
3636 func keyAllowedTxId () = makeString(["%s", "txId"], SEP)
3737
3838
3939 func getAdminVote (prefix,admin) = {
4040 let voteKey = keyFullAdminVote(prefix, admin)
4141 valueOrElse(getInteger(voteKey), 0)
4242 }
4343
4444
4545 func getAdminsList () = match getString(this, keyAdminAddressList()) {
4646 case s: String =>
4747 split(s, SEP)
4848 case _ =>
4949 nil
5050 }
5151
5252
5353 func isInAdminList (address) = containsElement(getAdminsList(), address)
5454
5555
5656 func genVotesKeysHelper (a,adminAddress) = {
5757 let $t013751399 = a
5858 let result = $t013751399._1
5959 let prefix = $t013751399._2
6060 $Tuple2((result :+ keyFullAdminVote(prefix, adminAddress)), prefix)
6161 }
6262
6363
6464 func genVotesKeys (keyPrefix) = {
6565 let adminList = keyAdminAddressList()
6666 let $t015461630 = {
6767 let $l = getAdminsList()
6868 let $s = size($l)
6969 let $acc0 = $Tuple2(nil, keyPrefix)
7070 func $f0_1 ($a,$i) = if (($i >= $s))
7171 then $a
7272 else genVotesKeysHelper($a, $l[$i])
7373
7474 func $f0_2 ($a,$i) = if (($i >= $s))
7575 then $a
7676 else throw("List size exceeds 5")
7777
7878 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
7979 }
8080 let result = $t015461630._1
8181 let prefix = $t015461630._2
8282 result
8383 }
8484
8585
8686 func countVotesHelper (result,voteKey) = (result + valueOrElse(getInteger(voteKey), 0))
8787
8888
8989 func countVotes (prefix) = {
9090 let votes = genVotesKeys(prefix)
9191 let $l = votes
9292 let $s = size($l)
9393 let $acc0 = 0
9494 func $f0_1 ($a,$i) = if (($i >= $s))
9595 then $a
9696 else countVotesHelper($a, $l[$i])
9797
9898 func $f0_2 ($a,$i) = if (($i >= $s))
9999 then $a
100100 else throw("List size exceeds 5")
101101
102102 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
103103 }
104104
105105
106106 func clearVotesHelper (result,key) = (result :+ DeleteEntry(key))
107107
108108
109109 func getClearVoteEntries (prefix) = {
110110 let votes = genVotesKeys(prefix)
111111 let $l = votes
112112 let $s = size($l)
113113 let $acc0 = nil
114114 func $f0_1 ($a,$i) = if (($i >= $s))
115115 then $a
116116 else clearVotesHelper($a, $l[$i])
117117
118118 func $f0_2 ($a,$i) = if (($i >= $s))
119119 then $a
120120 else throw("List size exceeds 5")
121121
122122 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
123123 }
124124
125125
126126 func voteINTERNAL (callerAddressString,keyPrefix,minVotes,voteResult) = {
127127 let voteKey = keyFullAdminVote(keyPrefix, callerAddressString)
128128 let adminCurrentVote = getAdminVote(keyPrefix, callerAddressString)
129129 let err = if (!(isInAdminList(callerAddressString)))
130130 then throwErr((("Address: " + callerAddressString) + " not in Admin list"))
131131 else if ((adminCurrentVote == 1))
132132 then throwErr((voteKey + " you already voted"))
133133 else unit
134134 if ((err == err))
135135 then {
136136 let votes = countVotes(keyPrefix)
137137 if (((votes + 1) >= minVotes))
138138 then {
139139 let clearVoteEntries = getClearVoteEntries(keyPrefix)
140140 (clearVoteEntries ++ voteResult)
141141 }
142142 else [IntegerEntry(voteKey, 1)]
143143 }
144144 else throw("Strict value is not equal to itself.")
145145 }
146146
147147
148148 func keyCalculatorAddress () = "%s__calculator"
149149
150150
151151 func keyProxyTreasuryAddress () = "%s__proxyTreasury"
152152
153153
154154 func keyChildAddress () = "%s__child"
155155
156156
157157 func keyBlockProcessingReward () = "%s__blockProcessingReward"
158158
159159
160160 func keyNextBlockToProcess () = "%s__nextBlockToProcess"
161161
162162
163163 func keyLpAssetId () = "%s__lpAssetId"
164164
165165
166166 let calculatorAddressOption = match getString(this, keyCalculatorAddress()) {
167167 case s: String =>
168168 addressFromString(s)
169169 case _: Unit =>
170170 unit
171171 case _ =>
172172 throw("Match error")
173173 }
174174
175175 let calculatorAddressOrFail = valueOrErrorMessage(calculatorAddressOption, wrapErr("invalid calculator address"))
176176
177177 let proxyTreasuryAddressOption = match getString(this, keyProxyTreasuryAddress()) {
178178 case s: String =>
179179 addressFromString(s)
180180 case _: Unit =>
181181 unit
182182 case _ =>
183183 throw("Match error")
184184 }
185185
186186 let proxyTreasuryAddressOrFail = valueOrErrorMessage(proxyTreasuryAddressOption, wrapErr("invalid proxy treasury address"))
187187
188188 func keyConfigAddress () = "%s__config"
189189
190190
191191 func keyChildrenAddress () = "contract_children"
192192
193193
194194 func keyVotingResultAddress () = "contract_voting_result"
195195
196196
197197 func keyProposalAllowBroadcast (address,txId) = ((("proposal_allow_broadcast_" + toString(address)) + "_") + toBase58String(txId))
198198
199199
200200 func keyInvestedByUser (childAddress,userAddress) = makeString(["investor", toString(childAddress), toString(userAddress)], "_")
201201
202202
203203 let configAddressOption = match getString(this, keyConfigAddress()) {
204204 case s: String =>
205205 addressFromString(s)
206206 case _: Unit =>
207207 unit
208208 case _ =>
209209 throw("Match error")
210210 }
211211
212212 let configAddressOrFail = valueOrErrorMessage(configAddressOption, wrapErr("invalid config address"))
213213
214214 let votingResultAddressOption = match configAddressOption {
215215 case a: Address =>
216216 match getString(a, keyVotingResultAddress()) {
217217 case s: String =>
218218 addressFromString(s)
219219 case _: Unit =>
220220 unit
221221 case _ =>
222222 throw("Match error")
223223 }
224224 case _: Unit =>
225225 unit
226226 case _ =>
227227 throw("Match error")
228228 }
229229
230230 let votingResultAddressOrFail = valueOrErrorMessage(votingResultAddressOption, wrapErr("invalid voting result address"))
231231
232232 let childrenAddressOption = match configAddressOption {
233233 case a: Address =>
234234 match getString(a, keyChildrenAddress()) {
235235 case s: String =>
236236 addressFromString(s)
237237 case _: Unit =>
238238 unit
239239 case _ =>
240240 throw("Match error")
241241 }
242242 case _: Unit =>
243243 unit
244244 case _ =>
245245 throw("Match error")
246246 }
247247
248248 let childrenAddressOrFail = valueOrErrorMessage(childrenAddressOption, wrapErr("invalid children address"))
249249
250250 let lpAssetIdOption = match getString(this, keyLpAssetId()) {
251251 case s: String =>
252252 fromBase58String(s)
253253 case _: Unit =>
254254 unit
255255 case _ =>
256256 throw("Match error")
257257 }
258258
259259 let lpAssetIdOrFail = valueOrErrorMessage(lpAssetIdOption, wrapErr("invalid lpAssetId"))
260260
261261 func onlyAddress (i,address) = if ((i.caller == address))
262262 then true
263263 else throwErr("permission denied")
264264
265265
266266 func onlyThis (i) = onlyAddress(i, this)
267267
268268
269269 func onlyCalculator (i) = onlyAddress(i, calculatorAddressOrFail)
270270
271271
272272 @Callable(i)
273273 func stringEntry (key,val) = if (onlyCalculator(i))
274274 then $Tuple2([StringEntry(key, val)], key)
275275 else $Tuple2(nil, unit)
276276
277277
278278
279279 @Callable(i)
280280 func integerEntry (key,val) = if (onlyCalculator(i))
281281 then $Tuple2([IntegerEntry(key, val)], key)
282282 else $Tuple2(nil, unit)
283283
284284
285285
286286 @Callable(i)
287287 func booleanEntry (key,val) = if (onlyCalculator(i))
288288 then $Tuple2([BooleanEntry(key, val)], key)
289289 else $Tuple2(nil, unit)
290290
291291
292292
293293 @Callable(i)
294294 func binaryEntry (key,val) = if (onlyCalculator(i))
295295 then $Tuple2([BinaryEntry(key, val)], key)
296296 else $Tuple2(nil, unit)
297297
298298
299299
300300 @Callable(i)
301301 func deleteEntry (key) = if (onlyCalculator(i))
302302 then $Tuple2([DeleteEntry(key)], key)
303303 else $Tuple2(nil, unit)
304304
305305
306306
307307 @Callable(i)
308308 func reissue (amount) = if (onlyCalculator(i))
309309 then $Tuple2([Reissue(lpAssetIdOrFail, amount, true)], amount)
310310 else $Tuple2(nil, unit)
311311
312312
313313
314314 @Callable(i)
315315 func burn (amount) = if (onlyCalculator(i))
316316 then $Tuple2([Burn(lpAssetIdOrFail, amount)], amount)
317317 else $Tuple2(nil, unit)
318318
319319
320320
321321 @Callable(i)
322322 func transferAsset (recepientBytes,amount,assetId) = if (onlyCalculator(i))
323323 then $Tuple2([ScriptTransfer(Address(recepientBytes), amount, assetId)], amount)
324324 else $Tuple2(nil, unit)
325325
326326
327327
328328 @Callable(i)
329329 func transferAssets (recepientBytes,assetsList,amountsList) = if (onlyCalculator(i))
330330 then {
331331 func addNewTransfer (accum,nextAssetId) = {
332332 let $t074577483 = accum
333333 let transfers = $t074577483._1
334334 let j = $t074577483._2
335335 let newTransfer = ScriptTransfer(Address(recepientBytes), parseIntValue(amountsList[j]), stringToAssetId(assetsList[j]))
336336 let updatedTransfers = (transfers :+ newTransfer)
337337 $Tuple2(updatedTransfers, (j + 1))
338338 }
339339
340340 let $t077437824 = {
341341 let $l = assetsList
342342 let $s = size($l)
343343 let $acc0 = $Tuple2(nil, 0)
344344 func $f0_1 ($a,$i) = if (($i >= $s))
345345 then $a
346346 else addNewTransfer($a, $l[$i])
347347
348348 func $f0_2 ($a,$i) = if (($i >= $s))
349349 then $a
350350 else throw("List size exceeds 10")
351351
352352 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
353353 }
354354 let assetsTransfers = $t077437824._1
355355 let _lastIndex = $t077437824._2
356356 $Tuple2(assetsTransfers, unit)
357357 }
358358 else $Tuple2(nil, unit)
359359
360360
361361
362362 @Callable(i)
363363 func transferWaves (recepientBytes,amount) = if (onlyCalculator(i))
364364 then $Tuple2([ScriptTransfer(Address(recepientBytes), amount, unit)], amount)
365365 else $Tuple2(nil, unit)
366366
367367
368368
369369 @Callable(i)
370370 func transferFromProxyTreasury (recipientBytes,rewardsAmount) = if (onlyCalculator(i))
371371 then $Tuple2(nil, invoke(proxyTreasuryAddressOrFail, "transferWaves", [recipientBytes, rewardsAmount], nil))
372372 else $Tuple2(nil, unit)
373373
374374
375375
376376 @Callable(i)
377377 func finalize (newTreasuryVolumeInWaves,pwrManagersBonusInWaves,treasuryVolumeDiffAllocationCoef) = $Tuple2(nil, reentrantInvoke(calculatorAddressOrFail, "finalize", [i.caller.bytes, newTreasuryVolumeInWaves, pwrManagersBonusInWaves, treasuryVolumeDiffAllocationCoef], i.payments))
378378
379379
380380
381381 @Callable(i)
382382 func finalizeREADONLY (newTreasuryVolumeInWaves,pwrManagersBonusInWaves,treasuryVolumeDiffAllocationCoef) = $Tuple2(nil, reentrantInvoke(calculatorAddressOrFail, "finalizeREADONLY", [newTreasuryVolumeInWaves, pwrManagersBonusInWaves, treasuryVolumeDiffAllocationCoef], nil))
383383
384384
385385
386386 @Callable(i)
387387 func claimLP () = $Tuple2(nil, reentrantInvoke(calculatorAddressOrFail, "claimLP", [i.caller.bytes], i.payments))
388388
389389
390390
391391 @Callable(i)
392392 func claimCollateral (txIdStr) = $Tuple2(nil, reentrantInvoke(calculatorAddressOrFail, "claimCollateral", [i.caller.bytes, fromBase58String(txIdStr)], i.payments))
393393
394394
395395
396396 @Callable(i)
397397 func invest () = $Tuple2(nil, reentrantInvoke(calculatorAddressOrFail, "invest", [i.caller.bytes], i.payments))
398398
399399
400400
401401 @Callable(i)
402402 func withdraw () = $Tuple2(nil, reentrantInvoke(calculatorAddressOrFail, "withdraw", [i.caller.bytes], i.payments))
403403
404404
405405
406406 @Callable(i)
407407 func cancelWithdraw (txIdStr) = $Tuple2(nil, reentrantInvoke(calculatorAddressOrFail, "cancelWithdraw", [i.caller.bytes, fromBase58String(txIdStr)], i.payments))
408408
409409
410410
411411 @Callable(i)
412412 func processBlocks () = $Tuple2(nil, reentrantInvoke(calculatorAddressOrFail, "processBlocks", [i.caller.bytes], i.payments))
413413
414414
415415
416416 @Callable(i)
417+func claimCollateralREADONLY (userAddress,txIdStr) = $Tuple2(nil, reentrantInvoke(calculatorAddressOrFail, "claimCollateralREADONLY", [fromBase58String(userAddress), fromBase58String(txIdStr)], nil))
418+
419+
420+
421+@Callable(i)
417422 func voteForTxId (txId) = {
418423 let callerAddressString = toBase58String(i.caller.bytes)
419424 let keyPrefix = keyAllowedTxIdVotePrefix(txId)
420425 let result = [StringEntry(keyAllowedTxId(), txId)]
421426 let allowedTxIdOption = getString(this, keyAllowedTxId())
422427 let err = [if ((size(fromBase58String(txId)) == TXID_BYTES_LENGTH))
423428 then true
424429 else throwErr((txId + " is not valid txId")), if (if ((allowedTxIdOption == unit))
425430 then true
426431 else (value(allowedTxIdOption) != txId))
427432 then true
428433 else throwErr((txId + " is already allowed"))]
429434 if ((err == err))
430435 then voteINTERNAL(callerAddressString, keyPrefix, QUORUM, result)
431436 else throw("Strict value is not equal to itself.")
432437 }
433438
434439
435440 @Verifier(tx)
436441 func verify () = {
437442 let byProposal = match votingResultAddressOption {
438443 case proposalAddress: Address =>
439444 valueOrElse(getBoolean(proposalAddress, keyProposalAllowBroadcast(this, tx.id)), false)
440445 case _ =>
441446 false
442447 }
443448 let byAdmins = (tx.id == fromBase58String(valueOrElse(getString(this, keyAllowedTxId()), "")))
444449 let byOwner = if ((size(getAdminsList()) >= QUORUM))
445450 then false
446451 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
447452 if (if (byProposal)
448453 then true
449454 else byAdmins)
450455 then true
451456 else byOwner
452457 }
453458

github/deemru/w8io/169f3d6 
53.55 ms