tx · FmtVFbr79GPrefoRWByCjQuLwHJcYBFS7XZ5CRFnbJij

3MuS6qVvhBR6wSynFRdcE3fVqmGBjoc7Hhx:  -0.01400000 Waves

2023.08.16 13:58 [2713039] smart account 3MuS6qVvhBR6wSynFRdcE3fVqmGBjoc7Hhx > SELF 0.00000000 Waves

{ "type": 13, "id": "FmtVFbr79GPrefoRWByCjQuLwHJcYBFS7XZ5CRFnbJij", "fee": 1400000, "feeAssetId": null, "timestamp": 1692183562964, "version": 2, "chainId": 84, "sender": "3MuS6qVvhBR6wSynFRdcE3fVqmGBjoc7Hhx", "senderPublicKey": "62CHk4MqTdq3LqeUycy7TPnpvwrjgerSa2FqAY2EafXn", "proofs": [ "rvGCDEYE1qcKGQxGiMQM6HkiayRuqpX7pFKLbE4invDod3X5e83CSWWhiGXm4v7g1uC1fzLX65TsgoERJdTxZaT" ], "script": "base64:BwJ5CAISBAoCCAgSBAoCCAESBAoCCAQSBAoCCAISAwoBCBIDCgEBEgMKAQESBQoDAgECEgUKAwIYGBIECgICARIECgICARIFCgMBAQESBQoDAQEBEgASAwoBCBIDCgEYEgASABIDCgEIEgASBAoCCAgSBAoCCBgSAwoBCDEAA1NFUAICX18ABVdBVkVTAgVXQVZFUwAQY29udHJhY3RGaWxlbmFtZQIMZmFjdG9yeS5yaWRlAQd3cmFwRXJyAQFzCQCsAgIJAKwCAgUQY29udHJhY3RGaWxlbmFtZQICOiAFAXMBCHRocm93RXJyAQFzCQACAQkBB3dyYXBFcnIBBQFzAQ9zdHJpbmdUb0Fzc2V0SWQBAXMDCQAAAgUBcwUFV0FWRVMFBHVuaXQJANkEAQUBcwAPQURNSU5fTElTVF9TSVpFAAUABlFVT1JVTQADABFUWElEX0JZVEVTX0xFTkdUSAAgARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIJYWxsb3dUeElkCQDMCAIFBHR4SWQFA25pbAUDU0VQARBrZXlGdWxsQWRtaW5Wb3RlAgZwcmVmaXgMYWRtaW5BZGRyZXNzCQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVABE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDmtleUFsbG93ZWRUeElkAAkAuQkCCQDMCAICAiVzCQDMCAICBHR4SWQFA25pbAUDU0VQAQxnZXRBZG1pblZvdGUCBnByZWZpeAVhZG1pbgQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAENZ2V0QWRtaW5zTGlzdAAEByRtYXRjaDAJAJ0IAgUEdGhpcwkBE2tleUFkbWluQWRkcmVzc0xpc3QAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAtQkCBQFzBQNTRVAFA25pbAENaXNJbkFkbWluTGlzdAEHYWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwESZ2VuVm90ZXNLZXlzSGVscGVyAgFhDGFkbWluQWRkcmVzcwQLJHQwMTM3NTEzOTkFAWEEBnJlc3VsdAgFCyR0MDEzNzUxMzk5Al8xBAZwcmVmaXgIBQskdDAxMzc1MTM5OQJfMgkAlAoCCQDNCAIFBnJlc3VsdAkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFDGFkbWluQWRkcmVzcwUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQETa2V5QWRtaW5BZGRyZXNzTGlzdAAECyR0MDE1NDYxNjMwCgACJGwJAQ1nZXRBZG1pbnNMaXN0AAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQlrZXlQcmVmaXgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdlblZvdGVzS2V5c0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEBnJlc3VsdAgFCyR0MDE1NDYxNjMwAl8xBAZwcmVmaXgIBQskdDAxNTQ2MTYzMAJfMgUGcmVzdWx0ARBjb3VudFZvdGVzSGVscGVyAgZyZXN1bHQHdm90ZUtleQkAZAIFBnJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABCmNvdW50Vm90ZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFARBjbGVhclZvdGVzSGVscGVyAgZyZXN1bHQDa2V5CQDNCAIFBnJlc3VsdAkBC0RlbGV0ZUVudHJ5AQUDa2V5ARNnZXRDbGVhclZvdGVFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjbGVhclZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEMdm90ZUlOVEVSTkFMBBNjYWxsZXJBZGRyZXNzU3RyaW5nCWtleVByZWZpeAhtaW5Wb3Rlcwp2b3RlUmVzdWx0BAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQQYWRtaW5DdXJyZW50Vm90ZQkBDGdldEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQDZXJyAwkBASEBCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCEiBub3QgaW4gQWRtaW4gbGlzdAMJAAACBRBhZG1pbkN1cnJlbnRWb3RlAAEJAQh0aHJvd0VycgEJAKwCAgUHdm90ZUtleQISIHlvdSBhbHJlYWR5IHZvdGVkBQR1bml0AwkAAAIFA2VycgUDZXJyBAV2b3RlcwkBCmNvdW50Vm90ZXMBBQlrZXlQcmVmaXgDCQBnAgkAZAIFBXZvdGVzAAEFCG1pblZvdGVzBBBjbGVhclZvdGVFbnRyaWVzCQETZ2V0Q2xlYXJWb3RlRW50cmllcwEFCWtleVByZWZpeAkAzggCBRBjbGVhclZvdGVFbnRyaWVzBQp2b3RlUmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd2b3RlS2V5AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEUa2V5Q2FsY3VsYXRvckFkZHJlc3MAAg4lc19fY2FsY3VsYXRvcgEXa2V5UHJveHlUcmVhc3VyeUFkZHJlc3MAAhElc19fcHJveHlUcmVhc3VyeQEPa2V5Q2hpbGRBZGRyZXNzAAIJJXNfX2NoaWxkARhrZXlCbG9ja1Byb2Nlc3NpbmdSZXdhcmQAAhklc19fYmxvY2tQcm9jZXNzaW5nUmV3YXJkARVrZXlOZXh0QmxvY2tUb1Byb2Nlc3MAAhYlc19fbmV4dEJsb2NrVG9Qcm9jZXNzAQxrZXlMcEFzc2V0SWQAAg0lc19fbHBBc3NldElkABdjYWxjdWxhdG9yQWRkcmVzc09wdGlvbgQHJG1hdGNoMAkAnQgCBQR0aGlzCQEUa2V5Q2FsY3VsYXRvckFkZHJlc3MAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAXY2FsY3VsYXRvckFkZHJlc3NPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUXY2FsY3VsYXRvckFkZHJlc3NPcHRpb24JAQd3cmFwRXJyAQIaaW52YWxpZCBjYWxjdWxhdG9yIGFkZHJlc3MAGnByb3h5VHJlYXN1cnlBZGRyZXNzT3B0aW9uBAckbWF0Y2gwCQCdCAIFBHRoaXMJARdrZXlQcm94eVRyZWFzdXJ5QWRkcmVzcwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABpwcm94eVRyZWFzdXJ5QWRkcmVzc09yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRpwcm94eVRyZWFzdXJ5QWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAh5pbnZhbGlkIHByb3h5IHRyZWFzdXJ5IGFkZHJlc3MBEGtleUNvbmZpZ0FkZHJlc3MAAgolc19fY29uZmlnARJrZXlDaGlsZHJlbkFkZHJlc3MAAhFjb250cmFjdF9jaGlsZHJlbgEWa2V5Vm90aW5nUmVzdWx0QWRkcmVzcwACFmNvbnRyYWN0X3ZvdGluZ19yZXN1bHQBGWtleVByb3Bvc2FsQWxsb3dCcm9hZGNhc3QCB2FkZHJlc3MEdHhJZAkArAICCQCsAgIJAKwCAgIZcHJvcG9zYWxfYWxsb3dfYnJvYWRjYXN0XwkApQgBBQdhZGRyZXNzAgFfCQDYBAEFBHR4SWQBEWtleUludmVzdGVkQnlVc2VyAgxjaGlsZEFkZHJlc3MLdXNlckFkZHJlc3MJALkJAgkAzAgCAghpbnZlc3RvcgkAzAgCCQClCAEFDGNoaWxkQWRkcmVzcwkAzAgCCQClCAEFC3VzZXJBZGRyZXNzBQNuaWwCAV8AE2NvbmZpZ0FkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwkBEGtleUNvbmZpZ0FkZHJlc3MAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgATY29uZmlnQWRkcmVzc09yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRNjb25maWdBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECFmludmFsaWQgY29uZmlnIGFkZHJlc3MAGXZvdGluZ1Jlc3VsdEFkZHJlc3NPcHRpb24EByRtYXRjaDAFE2NvbmZpZ0FkZHJlc3NPcHRpb24DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAQHJG1hdGNoMQkAnQgCBQFhCQEWa2V5Vm90aW5nUmVzdWx0QWRkcmVzcwADCQABAgUHJG1hdGNoMQIGU3RyaW5nBAFzBQckbWF0Y2gxCQCmCAEFAXMDCQABAgUHJG1hdGNoMQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAZdm90aW5nUmVzdWx0QWRkcmVzc09yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRl2b3RpbmdSZXN1bHRBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECHWludmFsaWQgdm90aW5nIHJlc3VsdCBhZGRyZXNzABVjaGlsZHJlbkFkZHJlc3NPcHRpb24EByRtYXRjaDAFE2NvbmZpZ0FkZHJlc3NPcHRpb24DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAQHJG1hdGNoMQkAnQgCBQFhCQESa2V5Q2hpbGRyZW5BZGRyZXNzAAMJAAECBQckbWF0Y2gxAgZTdHJpbmcEAXMFByRtYXRjaDEJAKYIAQUBcwMJAAECBQckbWF0Y2gxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABVjaGlsZHJlbkFkZHJlc3NPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUVY2hpbGRyZW5BZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECGGludmFsaWQgY2hpbGRyZW4gYWRkcmVzcwAPbHBBc3NldElkT3B0aW9uBAckbWF0Y2gwCQCdCAIFBHRoaXMJAQxrZXlMcEFzc2V0SWQAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAPbHBBc3NldElkT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFD2xwQXNzZXRJZE9wdGlvbgkBB3dyYXBFcnIBAhFpbnZhbGlkIGxwQXNzZXRJZAELb25seUFkZHJlc3MCAWkHYWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFB2FkZHJlc3MGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAEIb25seVRoaXMBAWkJAQtvbmx5QWRkcmVzcwIFAWkFBHRoaXMBDm9ubHlDYWxjdWxhdG9yAQFpCQELb25seUFkZHJlc3MCBQFpBRdjYWxjdWxhdG9yQWRkcmVzc09yRmFpbBcBaQELc3RyaW5nRW50cnkCA2tleQN2YWwDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQCUCgIFA25pbAUEdW5pdAFpAQxpbnRlZ2VyRW50cnkCA2tleQN2YWwDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFA2tleQUDdmFsBQNuaWwFA2tleQkAlAoCBQNuaWwFBHVuaXQBaQEMYm9vbGVhbkVudHJ5AgNrZXkDdmFsAwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQxCb29sZWFuRW50cnkCBQNrZXkFA3ZhbAUDbmlsBQNrZXkJAJQKAgUDbmlsBQR1bml0AWkBC2JpbmFyeUVudHJ5AgNrZXkDdmFsAwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQtCaW5hcnlFbnRyeQIFA2tleQUDdmFsBQNuaWwFA2tleQkAlAoCBQNuaWwFBHVuaXQBaQELZGVsZXRlRW50cnkBA2tleQMJAQ5vbmx5Q2FsY3VsYXRvcgEFAWkJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBBQNrZXkFA25pbAUDa2V5CQCUCgIFA25pbAUEdW5pdAFpAQdyZWlzc3VlAQZhbW91bnQDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIJAMwIAgkBB1JlaXNzdWUDBQ9scEFzc2V0SWRPckZhaWwFBmFtb3VudAYFA25pbAUGYW1vdW50CQCUCgIFA25pbAUEdW5pdAFpAQRidXJuAQZhbW91bnQDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIJAMwIAgkBBEJ1cm4CBQ9scEFzc2V0SWRPckZhaWwFBmFtb3VudAUDbmlsBQZhbW91bnQJAJQKAgUDbmlsBQR1bml0AWkBDXRyYW5zZmVyQXNzZXQDDnJlY2VwaWVudEJ5dGVzBmFtb3VudAdhc3NldElkAwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUOcmVjZXBpZW50Qnl0ZXMFBmFtb3VudAUHYXNzZXRJZAUDbmlsBQZhbW91bnQJAJQKAgUDbmlsBQR1bml0AWkBDnRyYW5zZmVyQXNzZXRzAw5yZWNlcGllbnRCeXRlcwphc3NldHNMaXN0C2Ftb3VudHNMaXN0AwkBDm9ubHlDYWxjdWxhdG9yAQUBaQoBDmFkZE5ld1RyYW5zZmVyAgVhY2N1bQtuZXh0QXNzZXRJZAQLJHQwNzQ1Nzc0ODMFBWFjY3VtBAl0cmFuc2ZlcnMIBQskdDA3NDU3NzQ4MwJfMQQBaggFCyR0MDc0NTc3NDgzAl8yBAtuZXdUcmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQ5yZWNlcGllbnRCeXRlcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2Ftb3VudHNMaXN0BQFqCQEPc3RyaW5nVG9Bc3NldElkAQkAkQMCBQphc3NldHNMaXN0BQFqBBB1cGRhdGVkVHJhbnNmZXJzCQDNCAIFCXRyYW5zZmVycwULbmV3VHJhbnNmZXIJAJQKAgUQdXBkYXRlZFRyYW5zZmVycwkAZAIFAWoAAQQLJHQwNzc0Mzc4MjQKAAIkbAUKYXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDmFkZE5ld1RyYW5zZmVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBA9hc3NldHNUcmFuc2ZlcnMIBQskdDA3NzQzNzgyNAJfMQQKX2xhc3RJbmRleAgFCyR0MDc3NDM3ODI0Al8yCQCUCgIFD2Fzc2V0c1RyYW5zZmVycwUEdW5pdAkAlAoCBQNuaWwFBHVuaXQBaQENdHJhbnNmZXJXYXZlcwIOcmVjZXBpZW50Qnl0ZXMGYW1vdW50AwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUOcmVjZXBpZW50Qnl0ZXMFBmFtb3VudAUEdW5pdAUDbmlsBQZhbW91bnQJAJQKAgUDbmlsBQR1bml0AWkBGXRyYW5zZmVyRnJvbVByb3h5VHJlYXN1cnkCDnJlY2lwaWVudEJ5dGVzDXJld2FyZHNBbW91bnQDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIFA25pbAkA/AcEBRpwcm94eVRyZWFzdXJ5QWRkcmVzc09yRmFpbAINdHJhbnNmZXJXYXZlcwkAzAgCBQ5yZWNpcGllbnRCeXRlcwkAzAgCBQ1yZXdhcmRzQW1vdW50BQNuaWwFA25pbAkAlAoCBQNuaWwFBHVuaXQBaQEIZmluYWxpemUDGG5ld1RyZWFzdXJ5Vm9sdW1lSW5XYXZlcxdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcyB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgkAlAoCBQNuaWwJAP0HBAUXY2FsY3VsYXRvckFkZHJlc3NPckZhaWwCCGZpbmFsaXplCQDMCAIICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgUYbmV3VHJlYXN1cnlWb2x1bWVJbldhdmVzCQDMCAIFF3B3ck1hbmFnZXJzQm9udXNJbldhdmVzCQDMCAIFIHRyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmBQNuaWwIBQFpCHBheW1lbnRzAWkBEGZpbmFsaXplUkVBRE9OTFkDGG5ld1RyZWFzdXJ5Vm9sdW1lSW5XYXZlcxdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcyB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgkAlAoCBQNuaWwJAP0HBAUXY2FsY3VsYXRvckFkZHJlc3NPckZhaWwCEGZpbmFsaXplUkVBRE9OTFkJAMwIAgUYbmV3VHJlYXN1cnlWb2x1bWVJbldhdmVzCQDMCAIFF3B3ck1hbmFnZXJzQm9udXNJbldhdmVzCQDMCAIFIHRyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmBQNuaWwFA25pbAFpAQdjbGFpbUxQAAkAlAoCBQNuaWwJAP0HBAUXY2FsY3VsYXRvckFkZHJlc3NPckZhaWwCB2NsYWltTFAJAMwIAggIBQFpBmNhbGxlcgVieXRlcwUDbmlsCAUBaQhwYXltZW50cwFpAQ9jbGFpbUNvbGxhdGVyYWwBB3R4SWRTdHIJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAg9jbGFpbUNvbGxhdGVyYWwJAMwIAggIBQFpBmNhbGxlcgVieXRlcwkAzAgCBQd0eElkU3RyBQNuaWwIBQFpCHBheW1lbnRzAWkBE2NsYWltQ29sbGF0ZXJhbEJ1bGsBBXR4SWRzCQCUCgIFA25pbAkA/QcEBRdjYWxjdWxhdG9yQWRkcmVzc09yRmFpbAITY2xhaW1Db2xsYXRlcmFsQnVsawkAzAgCCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIFBXR4SWRzBQNuaWwIBQFpCHBheW1lbnRzAWkBBmludmVzdAAJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAgZpbnZlc3QJAMwIAggIBQFpBmNhbGxlcgVieXRlcwUDbmlsCAUBaQhwYXltZW50cwFpAQh3aXRoZHJhdwAJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAgh3aXRoZHJhdwkAzAgCCAgFAWkGY2FsbGVyBWJ5dGVzBQNuaWwIBQFpCHBheW1lbnRzAWkBDmNhbmNlbFdpdGhkcmF3AQd0eElkU3RyCQCUCgIFA25pbAkA/QcEBRdjYWxjdWxhdG9yQWRkcmVzc09yRmFpbAIOY2FuY2VsV2l0aGRyYXcJAMwIAggIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQDZBAEFB3R4SWRTdHIFA25pbAgFAWkIcGF5bWVudHMBaQENcHJvY2Vzc0Jsb2NrcwAJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAg1wcm9jZXNzQmxvY2tzCQDMCAIICAUBaQZjYWxsZXIFYnl0ZXMFA25pbAgFAWkIcGF5bWVudHMBaQEXY2xhaW1Db2xsYXRlcmFsUkVBRE9OTFkCC3VzZXJBZGRyZXNzB3R4SWRTdHIJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAhdjbGFpbUNvbGxhdGVyYWxSRUFET05MWQkAzAgCCQDZBAEFC3VzZXJBZGRyZXNzCQDMCAIFB3R4SWRTdHIFA25pbAUDbmlsAWkBG2NsYWltQ29sbGF0ZXJhbEJ1bGtSRUFET05MWQILdXNlckFkZHJlc3MFdHhJZHMJAJQKAgUDbmlsCQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsAhtjbGFpbUNvbGxhdGVyYWxCdWxrUkVBRE9OTFkJAMwIAgkA2QQBBQt1c2VyQWRkcmVzcwkAzAgCBQV0eElkcwUDbmlsBQNuaWwBaQELdm90ZUZvclR4SWQBBHR4SWQEE2NhbGxlckFkZHJlc3NTdHJpbmcJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQJa2V5UHJlZml4CQEYa2V5QWxsb3dlZFR4SWRWb3RlUHJlZml4AQUEdHhJZAQGcmVzdWx0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlBbGxvd2VkVHhJZAAFBHR4SWQFA25pbAQRYWxsb3dlZFR4SWRPcHRpb24JAJ0IAgUEdGhpcwkBDmtleUFsbG93ZWRUeElkAAQDZXJyCQDMCAIDCQAAAgkAyAEBCQDZBAEFBHR4SWQFEVRYSURfQllURVNfTEVOR1RIBgkBCHRocm93RXJyAQkArAICBQR0eElkAhIgaXMgbm90IHZhbGlkIHR4SWQJAMwIAgMDCQAAAgURYWxsb3dlZFR4SWRPcHRpb24FBHVuaXQGCQECIT0CCQEFdmFsdWUBBRFhbGxvd2VkVHhJZE9wdGlvbgUEdHhJZAYJAQh0aHJvd0VycgEJAKwCAgUEdHhJZAITIGlzIGFscmVhZHkgYWxsb3dlZAUDbmlsAwkAAAIFA2VycgUDZXJyCQEMdm90ZUlOVEVSTkFMBAUTY2FsbGVyQWRkcmVzc1N0cmluZwUJa2V5UHJlZml4BQZRVU9SVU0FBnJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAECmJ5UHJvcG9zYWwEByRtYXRjaDAFGXZvdGluZ1Jlc3VsdEFkZHJlc3NPcHRpb24DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQPcHJvcG9zYWxBZGRyZXNzBQckbWF0Y2gwCQELdmFsdWVPckVsc2UCCQCbCAIFD3Byb3Bvc2FsQWRkcmVzcwkBGWtleVByb3Bvc2FsQWxsb3dCcm9hZGNhc3QCBQR0aGlzCAUCdHgCaWQHBwQIYnlBZG1pbnMJAAACCAUCdHgCaWQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQAAgAEB2J5T3duZXIDCQBnAgkAkAMBCQENZ2V0QWRtaW5zTGlzdAAFBlFVT1JVTQcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkDAwUKYnlQcm9wb3NhbAYFCGJ5QWRtaW5zBgUHYnlPd25lcjOTaZg=", "height": 2713039, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6rZYqRv93Ti1irFpscXvdstUtCWvnDFPVAn9AqD7LcaP Next: 91YTspwf5m6NRyGGsdJj2rmiHdHEY44zmoxDSr9sWL5f Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
6-let b = "calculator.ride"
6+let b = "WAVES"
77
8-let c = 100000000
8+let c = "factory.ride"
99
10-let d = "PENDING"
11-
12-let e = "WAVES"
13-
14-func f (g) = ((b + ": ") + g)
10+func d (e) = ((c + ": ") + e)
1511
1612
17-func h (g) = throw(f(g))
13+func f (e) = throw(d(e))
1814
1915
20-func i (j) = {
21- let k = j
22- if ($isInstanceOf(k, "ByteVector"))
23- then {
24- let l = k
25- toBase58String(l)
26- }
27- else if ($isInstanceOf(k, "Unit"))
28- then e
29- else throw("Match error")
16+func g (e) = if ((e == b))
17+ then unit
18+ else fromBase58String(e)
19+
20+
21+let h = 5
22+
23+let i = 3
24+
25+let j = 32
26+
27+func k (l) = makeString(["%s%s%s", "allowTxId", l], a)
28+
29+
30+func m (n,o) = makeString([n, o], a)
31+
32+
33+func p () = makeString(["%s", "adminAddressList"], a)
34+
35+
36+func q () = makeString(["%s", "txId"], a)
37+
38+
39+func r (n,s) = {
40+ let t = m(n, s)
41+ valueOrElse(getInteger(t), 0)
3042 }
3143
3244
33-func m (g) = if ((g == e))
34- then unit
35- else fromBase58String(g)
36-
37-
38-func n (o) = if ((0 > o))
39- then -(o)
40- else o
41-
42-
43-func p () = makeString(["%s", "factory"], a)
44-
45-
46-func q () = makeString(["%s", "managerPublicKey"], a)
47-
48-
49-func r () = makeString(["%s", "lpAssetId"], a)
50-
51-
52-func s () = makeString(["%s", "proxyTreasury"], a)
53-
54-
55-func t () = makeString(["%s", "mainTreasury"], a)
56-
57-
58-func u () = makeString(["%s", "businessTreasury"], a)
59-
60-
61-func v () = makeString(["%s", "businessTreasuryPart"], a)
62-
63-
64-func w (j) = makeString(["%s%s", "invested", i(j)], a)
65-
66-
67-func x (j) = makeString(["%s%s", "donated", i(j)], a)
68-
69-
70-func y (z) = makeString(["%s%s", "available", toString(z)], a)
71-
72-
73-func A (z) = makeString(["%s%s", "claimed", toString(z)], a)
74-
75-
76-func B () = makeString(["%s", "currentPeriod"], a)
77-
78-
79-func C (D) = makeString(["%s%d", "price", toString(D)], a)
80-
81-
82-func E (D) = makeString(["%s%d", "startHeight", toString(D)], a)
83-
84-
85-func F (D) = makeString(["%s%d", "powerManagerBonus", toString(D)], a)
86-
87-
88-func G () = "%s__periodLength"
89-
90-
91-func H () = "%s__investPeriodLength"
92-
93-
94-func I () = "%s__blockProcessingReward"
95-
96-
97-func J () = "%s__nextBlockToProcess"
98-
99-
100-func K (L) = makeString(["%s%d", "blockProcessed", toString(L)], a)
101-
102-
103-func M () = "%s__withdrawal"
104-
105-
106-func N (z,O) = makeString(["%s%s%s", "withdrawal", toString(z), toBase58String(O)], a)
107-
108-
109-func P (Q,R,S,T) = {
110- let U = {
111- let k = T
112- if ($isInstanceOf(k, "ByteVector"))
113- then {
114- let l = k
115- toBase58String(l)
116- }
117- else if ($isInstanceOf(k, "Unit"))
118- then "SOON"
119- else throw("Match error")
120- }
121- makeString(["%s%d%d%s", Q, toString(R), toString(S), U], a)
45+func u () = {
46+ let v = getString(this, p())
47+ if ($isInstanceOf(v, "String"))
48+ then {
49+ let e = v
50+ split(e, a)
51+ }
52+ else nil
12253 }
12354
12455
125-func V (z,O) = makeString(["%s%s%s", "withdrawalHistory", toString(z), toBase58String(O)], a)
56+func w (x) = containsElement(u(), x)
12657
12758
128-func W (D) = makeString(["%s%d", "periodReward", toString(D)], a)
129-
130-
131-func X (D) = makeString(["%s%d", "periodRewardAmount", toString(D)], a)
132-
133-
134-func Y (g) = {
135- let Z = split(g, a)
136- if ((size(Z) == 5))
137- then {
138- let Q = Z[1]
139- let R = valueOrErrorMessage(parseInt(Z[2]), f("invalid lpAssetAmount"))
140- let S = valueOrErrorMessage(parseInt(Z[3]), f("invalid targetPeriod"))
141- let T = Z[4]
142- $Tuple4(Q, R, S, T)
143- }
144- else h("invalid withdrawal request value")
59+func y (z,o) = {
60+ let A = z
61+ let B = A._1
62+ let n = A._2
63+ $Tuple2((B :+ m(n, o)), n)
14564 }
14665
14766
148-let aa = {
149- let k = getString(this, p())
150- if ($isInstanceOf(k, "String"))
151- then {
152- let g = k
153- addressFromString(g)
154- }
155- else if ($isInstanceOf(k, "Unit"))
156- then unit
157- else throw("Match error")
158- }
67+func C (D) = {
68+ let E = p()
69+ let F = {
70+ let G = u()
71+ let H = size(G)
72+ let I = $Tuple2(nil, D)
73+ func J (K,L) = if ((L >= H))
74+ then K
75+ else y(K, G[L])
15976
160-let ab = valueOrErrorMessage(aa, f("invalid factory address"))
77+ func M (K,L) = if ((L >= H))
78+ then K
79+ else throw("List size exceeds 5")
16180
162-let ac = {
163- let k = aa
164- if ($isInstanceOf(k, "Address"))
165- then {
166- let ad = k
167- let ae = getString(ad, r())
168- if ($isInstanceOf(ae, "String"))
169- then {
170- let g = ae
171- fromBase58String(g)
172- }
173- else if ($isInstanceOf(ae, "Unit"))
174- then unit
175- else throw("Match error")
176- }
177- else if ($isInstanceOf(k, "Unit"))
178- then unit
179- else throw("Match error")
180- }
181-
182-let af = valueOrErrorMessage(ac, f("invalid lpAssetId"))
183-
184-let ag = {
185- let k = aa
186- if ($isInstanceOf(k, "Address"))
187- then {
188- let ad = k
189- let ae = getString(ad, s())
190- if ($isInstanceOf(ae, "String"))
191- then {
192- let g = ae
193- addressFromString(g)
194- }
195- else if ($isInstanceOf(ae, "Unit"))
196- then unit
197- else throw("Match error")
198- }
199- else if ($isInstanceOf(k, "Unit"))
200- then unit
201- else throw("Match error")
202- }
203-
204-let ah = valueOrErrorMessage(ag, f("invalid proxy treasury address"))
205-
206-let ai = {
207- let k = aa
208- if ($isInstanceOf(k, "Address"))
209- then {
210- let ad = k
211- let ae = getString(ad, t())
212- if ($isInstanceOf(ae, "String"))
213- then {
214- let g = ae
215- addressFromString(g)
216- }
217- else if ($isInstanceOf(ae, "Unit"))
218- then unit
219- else throw("Match error")
220- }
221- else if ($isInstanceOf(k, "Unit"))
222- then unit
223- else throw("Match error")
224- }
225-
226-let aj = {
227- let k = aa
228- if ($isInstanceOf(k, "Address"))
229- then {
230- let ad = k
231- let ae = getString(ad, u())
232- if ($isInstanceOf(ae, "String"))
233- then {
234- let g = ae
235- addressFromString(g)
236- }
237- else if ($isInstanceOf(ae, "Unit"))
238- then unit
239- else throw("Match error")
240- }
241- else if ($isInstanceOf(k, "Unit"))
242- then unit
243- else throw("Match error")
244- }
245-
246-let ak = valueOrErrorMessage(ai, f("invalid main treasury address"))
247-
248-let al = valueOrErrorMessage(aj, f("invalid business treasury address"))
249-
250-func am () = {
251- let k = aa
252- if ($isInstanceOf(k, "Address"))
253- then {
254- let an = k
255- let ae = getString(an, q())
256- if ($isInstanceOf(ae, "String"))
257- then {
258- let ao = ae
259- fromBase58String(ao)
260- }
261- else unit
262- }
263- else unit
81+ M(J(J(J(J(J(I, 0), 1), 2), 3), 4), 5)
82+ }
83+ let B = F._1
84+ let n = F._2
85+ B
26486 }
26587
26688
267-func ap (aq,ar) = if ((aq.caller == ar))
268- then true
269- else h("permission denied")
89+func N (B,t) = (B + valueOrElse(getInteger(t), 0))
27090
27191
272-func as (aq) = ap(aq, ab)
92+func O (n) = {
93+ let P = C(n)
94+ let G = P
95+ let H = size(G)
96+ let I = 0
97+ func J (K,L) = if ((L >= H))
98+ then K
99+ else N(K, G[L])
273100
101+ func M (K,L) = if ((L >= H))
102+ then K
103+ else throw("List size exceeds 5")
274104
275-func at (au,av) = {
276- let g = size(au)
277- let aw = au[0]
278- let ax = aw._1
279- let ay = aw._2
280- let az = au[1]
281- let aA = az._1
282- let aB = az._2
283- let aC = au[2]
284- let aD = aC._1
285- let aE = aC._2
286- if (if ((g > 0))
287- then (ax == av)
288- else false)
289- then ay
290- else if (if ((g > 1))
291- then (aA == av)
292- else false)
293- then aB
294- else if (if ((g > 2))
295- then (aD == av)
296- else false)
297- then aE
298- else unit
105+ M(J(J(J(J(J(I, 0), 1), 2), 3), 4), 5)
299106 }
300107
301108
302-func aF (aG,aH,aI) = {
303- let aJ = valueOrElse(getInteger(ab, x(unit)), 0)
304- let aK = valueOrElse(getInteger(ab, w(unit)), 0)
305- let aL = (aJ + aK)
306- let aM = (aG - aL)
307- let aN = if (if ((aM >= aH))
308- then true
309- else (aH == 0))
310- then aH
311- else h("power bonus is more than profit")
312- let aO = (aM - aN)
313- let aP = if ((aL > 0))
314- then fraction(aJ, c, aL)
315- else 0
316- let aQ = fraction(aO, aP, c)
317- let aR = (aO - aQ)
318- let aS = n(aI)
319- let aT = fraction(aR, if ((0 > aI))
320- then aS
321- else 0, c)
322- let aU = fraction(aQ, if ((aI > 0))
323- then aS
324- else 0, c)
325- let aV = ((aQ - aU) + aT)
326- let aW = ((aR - aT) + aU)
327- let aX = (aJ + aV)
328- let aY = (aK + aW)
329- let aZ = min([0, aX])
330- let ba = min([0, aY])
331- let bb = (max([0, aX]) + ba)
332- let bc = (max([0, aY]) + aZ)
333- let bd = valueOrErrorMessage(assetInfo(af), f("invalid lpAsset info")).quantity
334- let be = fraction(bc, c, bd)
335- let bf = if ((be != 0))
336- then true
337- else h("LP price cannot be 0")
338- if ((bf == bf))
109+func Q (B,R) = (B :+ DeleteEntry(R))
110+
111+
112+func S (n) = {
113+ let P = C(n)
114+ let G = P
115+ let H = size(G)
116+ let I = nil
117+ func J (K,L) = if ((L >= H))
118+ then K
119+ else Q(K, G[L])
120+
121+ func M (K,L) = if ((L >= H))
122+ then K
123+ else throw("List size exceeds 5")
124+
125+ M(J(J(J(J(J(I, 0), 1), 2), 3), 4), 5)
126+ }
127+
128+
129+func T (U,D,V,W) = {
130+ let t = m(D, U)
131+ let X = r(D, U)
132+ let Y = if (!(w(U)))
133+ then f((("Address: " + U) + " not in Admin list"))
134+ else if ((X == 1))
135+ then f((t + " you already voted"))
136+ else unit
137+ if ((Y == Y))
339138 then {
340- let bg = valueOrElse(getInteger(ab, M()), 0)
341- let bh = max([0, fraction(bg, be, c)])
342- let bi = (bc - bh)
343- let bj = (bd - bg)
344- $Tuple6(bh, bi, bb, be, bg, bj)
139+ let P = O(D)
140+ if (((P + 1) >= V))
141+ then {
142+ let Z = S(D)
143+ (Z ++ W)
144+ }
145+ else [IntegerEntry(t, 1)]
345146 }
346147 else throw("Strict value is not equal to itself.")
347148 }
348149
349150
350-func bk (bl,O) = {
351- let z = Address(bl)
352- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
353- let bn = valueOrErrorMessage(getString(ab, N(z, O)), f("invalid withdrawal request"))
354- let bo = Y(bn)
355- let Q = bo._1
356- let R = bo._2
357- let S = bo._3
358- let T = bo._4
359- if ((S > bm))
360- then h("invalid withdrawal request period")
361- else {
362- let bp = valueOrErrorMessage(getInteger(ab, C(S)), f("invalid price"))
363- let bq = if ((bp > 0))
364- then fraction(R, bp, c)
365- else 0
366- let br = getStringValue(ab, W(bm))
367- let bs = getStringValue(ab, X(bm))
368- $Tuple6(z, R, S, bq, br, bs)
151+func aa () = "%s__calculator"
152+
153+
154+func ab () = "%s__proxyTreasury"
155+
156+
157+func ac () = "%s__child"
158+
159+
160+func ad () = "%s__blockProcessingReward"
161+
162+
163+func ae () = "%s__nextBlockToProcess"
164+
165+
166+func af () = "%s__lpAssetId"
167+
168+
169+let ag = {
170+ let v = getString(this, aa())
171+ if ($isInstanceOf(v, "String"))
172+ then {
173+ let e = v
174+ addressFromString(e)
369175 }
176+ else if ($isInstanceOf(v, "Unit"))
177+ then unit
178+ else throw("Match error")
370179 }
371180
181+let ah = valueOrErrorMessage(ag, d("invalid calculator address"))
372182
373-func bt (bl,O) = {
374- let bu = bk(bl, O)
375- let z = bu._1
376- let R = bu._2
377- let S = bu._3
378- let bq = bu._4
379- let br = bu._5
380- let bs = bu._6
381- let bv = makeString(removeByIndex(split_51C(br, a), 0), ":")
382- let bw = makeString(removeByIndex(split_51C(bs, a), 0), ":")
383- makeString(["%d%s%s", toString(bq), bv, bw], a)
183+let ai = {
184+ let v = getString(this, ab())
185+ if ($isInstanceOf(v, "String"))
186+ then {
187+ let e = v
188+ addressFromString(e)
189+ }
190+ else if ($isInstanceOf(v, "Unit"))
191+ then unit
192+ else throw("Match error")
384193 }
385194
195+let aj = valueOrErrorMessage(ai, d("invalid proxy treasury address"))
386196
387-@Callable(aq)
388-func claimLP (bl) = {
389- let bx = as(aq)
390- if ((bx == bx))
197+func ak () = "%s__config"
198+
199+
200+func al () = "contract_children"
201+
202+
203+func am () = "contract_voting_result"
204+
205+
206+func an (x,l) = ((("proposal_allow_broadcast_" + toString(x)) + "_") + toBase58String(l))
207+
208+
209+func ao (ap,aq) = makeString(["investor", toString(ap), toString(aq)], "_")
210+
211+
212+let ar = {
213+ let v = getString(this, ak())
214+ if ($isInstanceOf(v, "String"))
391215 then {
392- let z = Address(bl)
393- let by = valueOrElse(getInteger(ab, y(z)), 0)
394- let bz = valueOrElse(getInteger(ab, A(z)), 0)
395- let bA = if ((by > 0))
396- then [invoke(ab, "transferAsset", [bl, by, af], nil), invoke(ab, "integerEntry", [y(z), 0], nil), invoke(ab, "integerEntry", [A(z), (bz + by)], nil)]
397- else h("nothing to claim")
398- $Tuple2(nil, bA)
216+ let e = v
217+ addressFromString(e)
399218 }
219+ else if ($isInstanceOf(v, "Unit"))
220+ then unit
221+ else throw("Match error")
222+ }
223+
224+let as = valueOrErrorMessage(ar, d("invalid config address"))
225+
226+let at = {
227+ let v = ar
228+ if ($isInstanceOf(v, "Address"))
229+ then {
230+ let z = v
231+ let au = getString(z, am())
232+ if ($isInstanceOf(au, "String"))
233+ then {
234+ let e = au
235+ addressFromString(e)
236+ }
237+ else if ($isInstanceOf(au, "Unit"))
238+ then unit
239+ else throw("Match error")
240+ }
241+ else if ($isInstanceOf(v, "Unit"))
242+ then unit
243+ else throw("Match error")
244+ }
245+
246+let av = valueOrErrorMessage(at, d("invalid voting result address"))
247+
248+let aw = {
249+ let v = ar
250+ if ($isInstanceOf(v, "Address"))
251+ then {
252+ let z = v
253+ let au = getString(z, al())
254+ if ($isInstanceOf(au, "String"))
255+ then {
256+ let e = au
257+ addressFromString(e)
258+ }
259+ else if ($isInstanceOf(au, "Unit"))
260+ then unit
261+ else throw("Match error")
262+ }
263+ else if ($isInstanceOf(v, "Unit"))
264+ then unit
265+ else throw("Match error")
266+ }
267+
268+let ax = valueOrErrorMessage(aw, d("invalid children address"))
269+
270+let ay = {
271+ let v = getString(this, af())
272+ if ($isInstanceOf(v, "String"))
273+ then {
274+ let e = v
275+ fromBase58String(e)
276+ }
277+ else if ($isInstanceOf(v, "Unit"))
278+ then unit
279+ else throw("Match error")
280+ }
281+
282+let az = valueOrErrorMessage(ay, d("invalid lpAssetId"))
283+
284+func aA (aB,x) = if ((aB.caller == x))
285+ then true
286+ else f("permission denied")
287+
288+
289+func aC (aB) = aA(aB, this)
290+
291+
292+func aD (aB) = aA(aB, ah)
293+
294+
295+@Callable(aB)
296+func stringEntry (R,aE) = if (aD(aB))
297+ then $Tuple2([StringEntry(R, aE)], R)
298+ else $Tuple2(nil, unit)
299+
300+
301+
302+@Callable(aB)
303+func integerEntry (R,aE) = if (aD(aB))
304+ then $Tuple2([IntegerEntry(R, aE)], R)
305+ else $Tuple2(nil, unit)
306+
307+
308+
309+@Callable(aB)
310+func booleanEntry (R,aE) = if (aD(aB))
311+ then $Tuple2([BooleanEntry(R, aE)], R)
312+ else $Tuple2(nil, unit)
313+
314+
315+
316+@Callable(aB)
317+func binaryEntry (R,aE) = if (aD(aB))
318+ then $Tuple2([BinaryEntry(R, aE)], R)
319+ else $Tuple2(nil, unit)
320+
321+
322+
323+@Callable(aB)
324+func deleteEntry (R) = if (aD(aB))
325+ then $Tuple2([DeleteEntry(R)], R)
326+ else $Tuple2(nil, unit)
327+
328+
329+
330+@Callable(aB)
331+func reissue (aF) = if (aD(aB))
332+ then $Tuple2([Reissue(az, aF, true)], aF)
333+ else $Tuple2(nil, unit)
334+
335+
336+
337+@Callable(aB)
338+func burn (aF) = if (aD(aB))
339+ then $Tuple2([Burn(az, aF)], aF)
340+ else $Tuple2(nil, unit)
341+
342+
343+
344+@Callable(aB)
345+func transferAsset (aG,aF,aH) = if (aD(aB))
346+ then $Tuple2([ScriptTransfer(Address(aG), aF, aH)], aF)
347+ else $Tuple2(nil, unit)
348+
349+
350+
351+@Callable(aB)
352+func transferAssets (aG,aI,aJ) = if (aD(aB))
353+ then {
354+ func aK (aL,aM) = {
355+ let aN = aL
356+ let aO = aN._1
357+ let aP = aN._2
358+ let aQ = ScriptTransfer(Address(aG), parseIntValue(aJ[aP]), g(aI[aP]))
359+ let aR = (aO :+ aQ)
360+ $Tuple2(aR, (aP + 1))
361+ }
362+
363+ let aS = {
364+ let G = aI
365+ let H = size(G)
366+ let I = $Tuple2(nil, 0)
367+ func J (K,L) = if ((L >= H))
368+ then K
369+ else aK(K, G[L])
370+
371+ func M (K,L) = if ((L >= H))
372+ then K
373+ else throw("List size exceeds 10")
374+
375+ M(J(J(J(J(J(J(J(J(J(J(I, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
376+ }
377+ let aT = aS._1
378+ let aU = aS._2
379+ $Tuple2(aT, unit)
380+ }
381+ else $Tuple2(nil, unit)
382+
383+
384+
385+@Callable(aB)
386+func transferWaves (aG,aF) = if (aD(aB))
387+ then $Tuple2([ScriptTransfer(Address(aG), aF, unit)], aF)
388+ else $Tuple2(nil, unit)
389+
390+
391+
392+@Callable(aB)
393+func transferFromProxyTreasury (aV,aW) = if (aD(aB))
394+ then $Tuple2(nil, invoke(aj, "transferWaves", [aV, aW], nil))
395+ else $Tuple2(nil, unit)
396+
397+
398+
399+@Callable(aB)
400+func finalize (aX,aY,aZ) = $Tuple2(nil, reentrantInvoke(ah, "finalize", [aB.caller.bytes, aX, aY, aZ], aB.payments))
401+
402+
403+
404+@Callable(aB)
405+func finalizeREADONLY (aX,aY,aZ) = $Tuple2(nil, reentrantInvoke(ah, "finalizeREADONLY", [aX, aY, aZ], nil))
406+
407+
408+
409+@Callable(aB)
410+func claimLP () = $Tuple2(nil, reentrantInvoke(ah, "claimLP", [aB.caller.bytes], aB.payments))
411+
412+
413+
414+@Callable(aB)
415+func claimCollateral (ba) = $Tuple2(nil, reentrantInvoke(ah, "claimCollateral", [aB.caller.bytes, ba], aB.payments))
416+
417+
418+
419+@Callable(aB)
420+func claimCollateralBulk (bb) = $Tuple2(nil, reentrantInvoke(ah, "claimCollateralBulk", [aB.caller.bytes, bb], aB.payments))
421+
422+
423+
424+@Callable(aB)
425+func invest () = $Tuple2(nil, reentrantInvoke(ah, "invest", [aB.caller.bytes], aB.payments))
426+
427+
428+
429+@Callable(aB)
430+func withdraw () = $Tuple2(nil, reentrantInvoke(ah, "withdraw", [aB.caller.bytes], aB.payments))
431+
432+
433+
434+@Callable(aB)
435+func cancelWithdraw (ba) = $Tuple2(nil, reentrantInvoke(ah, "cancelWithdraw", [aB.caller.bytes, fromBase58String(ba)], aB.payments))
436+
437+
438+
439+@Callable(aB)
440+func processBlocks () = $Tuple2(nil, reentrantInvoke(ah, "processBlocks", [aB.caller.bytes], aB.payments))
441+
442+
443+
444+@Callable(aB)
445+func claimCollateralREADONLY (aq,ba) = $Tuple2(nil, reentrantInvoke(ah, "claimCollateralREADONLY", [fromBase58String(aq), ba], nil))
446+
447+
448+
449+@Callable(aB)
450+func claimCollateralBulkREADONLY (aq,bb) = $Tuple2(nil, reentrantInvoke(ah, "claimCollateralBulkREADONLY", [fromBase58String(aq), bb], nil))
451+
452+
453+
454+@Callable(aB)
455+func voteForTxId (l) = {
456+ let U = toBase58String(aB.caller.bytes)
457+ let D = k(l)
458+ let B = [StringEntry(q(), l)]
459+ let bc = getString(this, q())
460+ let Y = [if ((size(fromBase58String(l)) == j))
461+ then true
462+ else f((l + " is not valid txId")), if (if ((bc == unit))
463+ then true
464+ else (value(bc) != l))
465+ then true
466+ else f((l + " is already allowed"))]
467+ if ((Y == Y))
468+ then T(U, D, i, B)
400469 else throw("Strict value is not equal to itself.")
401470 }
402471
403472
404-
405-@Callable(aq)
406-func finalize (bl,aG,aH,aI) = {
407- let bx = as(aq)
408- if ((bx == bx))
409- then {
410- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
411- let bB = valueOrErrorMessage(getInteger(ab, G()), f("invalid period length"))
412- let bC = valueOrErrorMessage(getInteger(ab, E(bm)), f("invalid start height"))
413- let bD = valueOrErrorMessage(getInteger(ab, C(bm)), f("invalid price"))
414- let bE = valueOrErrorMessage(getInteger(ab, J()), f("invalid next block to process"))
415- let bF = ((bC + bB) - 1)
416- let bG = [if ((aq.originCaller == ak))
417- then true
418- else h("permission denied"), if ((bE > bF))
419- then true
420- else h("unprocessed blocks"), if ((aG >= 0))
421- then true
422- else h("invalid new treasury volume"), if ((aH >= 0))
423- then true
424- else h("invalid PWR managers bonus"), if (if ((aI >= -(c)))
425- then (c >= aI)
426- else false)
427- then true
428- else h("invalid treasury volume diff allocation coefficient")]
429- if ((bG == bG))
430- then {
431- let bH = aF(aG, aH, aI)
432- let bh = bH._1
433- let bi = bH._2
434- let bb = bH._3
435- let be = bH._4
436- let bg = bH._5
437- let bj = bH._6
438- let bI = (bm + 1)
439- func bJ (bK,bL) = {
440- let bM = bK
441- let bN = bM._1
442- let bO = bM._2
443- let bs = bM._3
444- let bP = bL.amount
445- let bQ = bL.assetId
446- let bR = ("%s" + makeString([bO, i(bQ)], a))
447- let bS = ("%d" + makeString([bs, toString(bP)], a))
448- let bT = ScriptTransfer(ab, bP, bQ)
449- $Tuple3((bN :+ bT), bR, bS)
450- }
451-
452- let bU = {
453- let bV = aq.payments
454- let bW = size(bV)
455- let bX = $Tuple3(nil, "", "")
456- func bY (bZ,ca) = if ((ca >= bW))
457- then bZ
458- else bJ(bZ, bV[ca])
459-
460- func cb (bZ,ca) = if ((ca >= bW))
461- then bZ
462- else throw("List size exceeds 10")
463-
464- cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
465- }
466- let bN = bU._1
467- let cc = bU._2
468- let cd = bU._3
469- let bA = [invoke(ab, "integerEntry", [F(bm), aH], nil), invoke(ab, "integerEntry", [B(), bI], nil), invoke(ab, "integerEntry", [C(bI), be], nil), invoke(ab, "integerEntry", [E(bI), (bF + 1)], nil), invoke(ab, "burn", [bg], nil), invoke(ab, "integerEntry", [M(), 0], nil), invoke(ab, "integerEntry", [w(unit), bi], nil), invoke(ab, "integerEntry", [x(unit), bb], nil), invoke(ab, "stringEntry", [W(bI), cc], nil), invoke(ab, "stringEntry", [X(bI), cd], nil)]
470- $Tuple2(bN, bA)
471- }
472- else throw("Strict value is not equal to itself.")
473- }
474- else throw("Strict value is not equal to itself.")
475- }
476-
477-
478-
479-@Callable(aq)
480-func finalizeREADONLY (aG,aH,aI) = {
481- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
482- let bB = valueOrErrorMessage(getInteger(ab, G()), f("invalid period length"))
483- let bC = valueOrErrorMessage(getInteger(ab, E(bm)), f("invalid start height"))
484- let bD = valueOrErrorMessage(getInteger(ab, C(bm)), f("invalid price"))
485- let bE = valueOrErrorMessage(getInteger(ab, J()), f("invalid next block to process"))
486- let bF = ((bC + bB) - 1)
487- let bG = [if ((bE > bF))
473+@Verifier(bd)
474+func be () = {
475+ let bf = {
476+ let v = at
477+ if ($isInstanceOf(v, "Address"))
478+ then {
479+ let bg = v
480+ valueOrElse(getBoolean(bg, an(this, bd.id)), false)
481+ }
482+ else false
483+ }
484+ let bh = (bd.id == fromBase58String(valueOrElse(getString(this, q()), "")))
485+ let bi = if ((size(u()) >= i))
486+ then false
487+ else sigVerify(bd.bodyBytes, bd.proofs[0], bd.senderPublicKey)
488+ if (if (bf)
488489 then true
489- else h("unprocessed blocks"), if ((aG >= 0))
490+ else bh)
490491 then true
491- else h("invalid new treasury volume"), if ((aH >= 0))
492- then true
493- else h("invalid PWR managers bonus"), if (if ((aI >= -(c)))
494- then (c >= aI)
495- else false)
496- then true
497- else h("invalid treasury volume diff allocation coefficient")]
498- if ((bG == bG))
499- then $Tuple2(nil, aF(aG, aH, aI))
500- else throw("Strict value is not equal to itself.")
501- }
502-
503-
504-
505-@Callable(aq)
506-func invest (bl) = {
507- let bx = as(aq)
508- if ((bx == bx))
509- then {
510- let z = Address(bl)
511- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
512- let bC = valueOrErrorMessage(getInteger(ab, E(bm)), f("invalid start height"))
513- let ce = getIntegerValue(H())
514- let cf = if (((bC + ce) > height))
515- then true
516- else h("too late to invest in this period")
517- if ((cf == cf))
518- then {
519- let bD = valueOrErrorMessage(getInteger(ab, C(bm)), f("invalid price"))
520- let bL = if ((size(aq.payments) == 1))
521- then aq.payments[0]
522- else h("invalid payments")
523- let cg = if (if ((bL.assetId == unit))
524- then (bL.amount > 0)
525- else false)
526- then $Tuple2(bL.amount, bL.assetId)
527- else h("invalid payment amount")
528- let bP = cg._1
529- let bQ = cg._2
530- let ch = valueOrElse(getInteger(ab, v()), 0)
531- let ci = fraction(bP, (c - ch), c)
532- let R = if ((bD > 0))
533- then fraction(ci, c, bD)
534- else 0
535- let cj = valueOrElse(getInteger(ab, w(unit)), 0)
536- let bK = [ScriptTransfer(ak, ci, bQ), ScriptTransfer(al, ch, bQ)]
537- let bA = [invoke(ab, "integerEntry", [w(unit), (cj + ci)], nil), invoke(ab, "reissue", [R], nil), invoke(ab, "transferAsset", [bl, R, af], nil)]
538- $Tuple2(bK, bA)
539- }
540- else throw("Strict value is not equal to itself.")
541- }
542- else throw("Strict value is not equal to itself.")
543- }
544-
545-
546-
547-@Callable(aq)
548-func withdraw (bl) = {
549- let bx = as(aq)
550- if ((bx == bx))
551- then {
552- let z = Address(bl)
553- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
554- let bL = if ((size(aq.payments) == 1))
555- then aq.payments[0]
556- else h(f("invalid payments"))
557- let bQ = if ((bL.assetId == af))
558- then af
559- else h("invalid payment asset")
560- let bP = if ((bL.amount > 0))
561- then bL.amount
562- else h("invalid payment amount")
563- let ck = valueOrElse(getInteger(ab, M()), 0)
564- let bK = [ScriptTransfer(ab, bP, bQ)]
565- let bA = [invoke(ab, "integerEntry", [M(), (ck + bP)], nil), invoke(ab, "stringEntry", [N(z, aq.transactionId), P(d, bP, (bm + 1), unit)], nil)]
566- if ((bA == bA))
567- then $Tuple2(bK, bA)
568- else throw("Strict value is not equal to itself.")
569- }
570- else throw("Strict value is not equal to itself.")
571- }
572-
573-
574-
575-@Callable(aq)
576-func cancelWithdraw (bl,O) = {
577- let bx = as(aq)
578- if ((bx == bx))
579- then {
580- let z = Address(bl)
581- let bn = valueOrErrorMessage(getString(ab, N(z, O)), f("invalid withdrawal request"))
582- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
583- let cl = Y(bn)
584- let Q = cl._1
585- let R = cl._2
586- let S = cl._3
587- let T = cl._4
588- let bG = [if ((Q == d))
589- then true
590- else h("invalid withdrawal request status"), if ((S > bm))
591- then true
592- else h("invalid withdrawal request period")]
593- if ((bG == bG))
594- then {
595- let ck = valueOrErrorMessage(getInteger(ab, M()), f("invalid total withdrawal amount"))
596- let bA = [invoke(ab, "integerEntry", [M(), if ((ck >= R))
597- then (ck - R)
598- else h("invalid withdrawal amount")], nil), invoke(ab, "deleteEntry", [N(z, O)], nil), invoke(ab, "transferAsset", [bl, R, af], nil)]
599- if ((bA == bA))
600- then $Tuple2(nil, bA)
601- else throw("Strict value is not equal to itself.")
602- }
603- else throw("Strict value is not equal to itself.")
604- }
605- else throw("Strict value is not equal to itself.")
606- }
607-
608-
609-
610-@Callable(aq)
611-func claimCollateral (bl,O) = {
612- let bx = as(aq)
613- if ((bx == bx))
614- then {
615- let cm = bk(bl, fromBase58String(O))
616- let z = cm._1
617- let R = cm._2
618- let S = cm._3
619- let bq = cm._4
620- let br = cm._5
621- let bs = cm._6
622- let cn = removeByIndex(split_51C(br, a), 0)
623- let co = removeByIndex(split_51C(bs, a), 0)
624- let bA = [invoke(ab, "deleteEntry", [N(z, fromBase58String(O))], nil), invoke(ab, "integerEntry", [V(z, fromBase58String(O)), R], nil), invoke(ab, "transferAssets", [bl, cn, co], nil)]
625- $Tuple2(nil, bA)
626- }
627- else throw("Strict value is not equal to itself.")
628- }
629-
630-
631-
632-@Callable(aq)
633-func claimCollateralBulk (bl,cp) = {
634- let bx = as(aq)
635- if ((bx == bx))
636- then {
637- func bJ (cq,O) = {
638- let cr = bk(bl, fromBase58String(O))
639- let z = cr._1
640- let R = cr._2
641- let S = cr._3
642- let bq = cr._4
643- let br = cr._5
644- let bs = cr._6
645- let cn = removeByIndex(split_51C(br, a), 0)
646- let co = removeByIndex(split_51C(bs, a), 0)
647- let cs = [invoke(ab, "deleteEntry", [N(z, fromBase58String(O))], nil), invoke(ab, "integerEntry", [V(z, fromBase58String(O)), R], nil), invoke(ab, "transferAssets", [bl, cn, co], nil)]
648- (cq ++ cs)
649- }
650-
651- let ct = {
652- let bV = cp
653- let bW = size(bV)
654- let bX = nil
655- func bY (bZ,ca) = if ((ca >= bW))
656- then bZ
657- else bJ(bZ, bV[ca])
658-
659- func cb (bZ,ca) = if ((ca >= bW))
660- then bZ
661- else throw("List size exceeds 10")
662-
663- cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
664- }
665- $Tuple2(nil, ct)
666- }
667- else throw("Strict value is not equal to itself.")
668- }
669-
670-
671-
672-@Callable(aq)
673-func claimCollateralREADONLY (bl,O) = {
674- let cu = bt(bl, fromBase58String(O))
675- $Tuple2(nil, cu)
676- }
677-
678-
679-
680-@Callable(aq)
681-func claimCollateralBulkREADONLY (bl,cp) = {
682- func cv (cq,O) = {
683- let cu = bt(bl, fromBase58String(O))
684- (cq :+ cu)
685- }
686-
687- let cw = {
688- let bV = cp
689- let bW = size(bV)
690- let bX = nil
691- func bY (bZ,ca) = if ((ca >= bW))
692- then bZ
693- else cv(bZ, bV[ca])
694-
695- func cb (bZ,ca) = if ((ca >= bW))
696- then bZ
697- else throw("List size exceeds 10")
698-
699- cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
700- }
701- $Tuple2(nil, cw)
702- }
703-
704-
705-
706-@Callable(aq)
707-func processBlocks (bl) = {
708- let bx = as(aq)
709- if ((bx == bx))
710- then {
711- let z = Address(bl)
712- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
713- let bB = valueOrErrorMessage(getInteger(ab, G()), f("invalid period length"))
714- let bC = valueOrErrorMessage(getInteger(ab, E(bm)), f("invalid start height"))
715- let bD = valueOrErrorMessage(getInteger(ab, C(bm)), f("invalid price"))
716- let bE = valueOrErrorMessage(getInteger(ab, J()), f("invalid next block to process"))
717- let bF = ((bC + bB) - 1)
718- let cx = 40
719- let cy = if (if (if ((height >= bE))
720- then if ((bE >= bC))
721- then true
722- else (bm == 0)
723- else false)
724- then (bF >= bE)
725- else false)
726- then min([((bF - bE) + 1), cx])
727- else h(f("invalid target block"))
728- let cz = valueOrErrorMessage(getInteger(ab, I()), f("invalid block processing reward"))
729- let cA = (cz / cy)
730- let cB = (cz - (cA * cy))
731- func cC (cD,cE) = if ((cE >= cy))
732- then cD
733- else {
734- let cF = (bE + cE)
735- let cG = valueOrErrorMessage(blockInfoByHeight(cF), f("invalid block info"))
736- let cH = valueOrErrorMessage(at(cG.rewards, ah), f(("invalid treasury reward for height " + toString(cF))))
737- let cI = cG.generator
738- let by = valueOrElse(getInteger(ab, y(cI)), 0)
739- let cJ = if ((cE == (cy - 1)))
740- then (cA + cB)
741- else cA
742- let R = if ((bD > 0))
743- then fraction((cH - cJ), c, bD)
744- else 0
745- let cK = [invoke(ab, "stringEntry", [K(cF), makeString([toBase58String(aq.transactionId), toString(bm), toString(cI), toBase58String(bl), toString(cH), toString(cJ), toString(R)], a)], nil), invoke(ab, "integerEntry", [y(cI), (by + R)], nil)]
746- if ((cK == cK))
747- then {
748- let cL = cD
749- let cM = cL._1
750- let cN = cL._2
751- $Tuple2((cM + R), (cN + cH))
752- }
753- else throw("Strict value is not equal to itself.")
754- }
755-
756- let cO = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39]
757- let cP = {
758- let bV = cO
759- let bW = size(bV)
760- let bX = $Tuple2(0, 0)
761- func bY (bZ,ca) = if ((ca >= bW))
762- then bZ
763- else cC(bZ, bV[ca])
764-
765- func cb (bZ,ca) = if ((ca >= bW))
766- then bZ
767- else throw("List size exceeds 40")
768-
769- cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
770- }
771- if ((cP == cP))
772- then {
773- let cQ = cP._2
774- let cR = cP._1
775- let cS = valueOrElse(getInteger(ab, v()), 0)
776- let cT = fraction(cQ, cS, c)
777- let cU = ((cQ - cT) - cz)
778- let cj = valueOrElse(getInteger(ab, w(unit)), 0)
779- let bK = [invoke(ab, "reissue", [cR], nil), invoke(ab, "integerEntry", [J(), (bE + cy)], nil), invoke(ab, "transferFromProxyTreasury", [ak.bytes, cU], nil), invoke(ab, "transferFromProxyTreasury", [bl, cz], nil), invoke(ab, "transferFromProxyTreasury", [al.bytes, cT], nil), invoke(ab, "integerEntry", [w(unit), (cj + cU)], nil)]
780- if ((bK == bK))
781- then $Tuple2(nil, unit)
782- else throw("Strict value is not equal to itself.")
783- }
784- else throw("Strict value is not equal to itself.")
785- }
786- else throw("Strict value is not equal to itself.")
787- }
788-
789-
790-@Verifier(cV)
791-func cW () = {
792- let cX = {
793- let k = am()
794- if ($isInstanceOf(k, "ByteVector"))
795- then {
796- let ao = k
797- ao
798- }
799- else cV.senderPublicKey
800- }
801- sigVerify(cV.bodyBytes, cV.proofs[0], cX)
492+ else bi
802493 }
803494
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
6-let b = "calculator.ride"
6+let b = "WAVES"
77
8-let c = 100000000
8+let c = "factory.ride"
99
10-let d = "PENDING"
11-
12-let e = "WAVES"
13-
14-func f (g) = ((b + ": ") + g)
10+func d (e) = ((c + ": ") + e)
1511
1612
17-func h (g) = throw(f(g))
13+func f (e) = throw(d(e))
1814
1915
20-func i (j) = {
21- let k = j
22- if ($isInstanceOf(k, "ByteVector"))
23- then {
24- let l = k
25- toBase58String(l)
26- }
27- else if ($isInstanceOf(k, "Unit"))
28- then e
29- else throw("Match error")
16+func g (e) = if ((e == b))
17+ then unit
18+ else fromBase58String(e)
19+
20+
21+let h = 5
22+
23+let i = 3
24+
25+let j = 32
26+
27+func k (l) = makeString(["%s%s%s", "allowTxId", l], a)
28+
29+
30+func m (n,o) = makeString([n, o], a)
31+
32+
33+func p () = makeString(["%s", "adminAddressList"], a)
34+
35+
36+func q () = makeString(["%s", "txId"], a)
37+
38+
39+func r (n,s) = {
40+ let t = m(n, s)
41+ valueOrElse(getInteger(t), 0)
3042 }
3143
3244
33-func m (g) = if ((g == e))
34- then unit
35- else fromBase58String(g)
36-
37-
38-func n (o) = if ((0 > o))
39- then -(o)
40- else o
41-
42-
43-func p () = makeString(["%s", "factory"], a)
44-
45-
46-func q () = makeString(["%s", "managerPublicKey"], a)
47-
48-
49-func r () = makeString(["%s", "lpAssetId"], a)
50-
51-
52-func s () = makeString(["%s", "proxyTreasury"], a)
53-
54-
55-func t () = makeString(["%s", "mainTreasury"], a)
56-
57-
58-func u () = makeString(["%s", "businessTreasury"], a)
59-
60-
61-func v () = makeString(["%s", "businessTreasuryPart"], a)
62-
63-
64-func w (j) = makeString(["%s%s", "invested", i(j)], a)
65-
66-
67-func x (j) = makeString(["%s%s", "donated", i(j)], a)
68-
69-
70-func y (z) = makeString(["%s%s", "available", toString(z)], a)
71-
72-
73-func A (z) = makeString(["%s%s", "claimed", toString(z)], a)
74-
75-
76-func B () = makeString(["%s", "currentPeriod"], a)
77-
78-
79-func C (D) = makeString(["%s%d", "price", toString(D)], a)
80-
81-
82-func E (D) = makeString(["%s%d", "startHeight", toString(D)], a)
83-
84-
85-func F (D) = makeString(["%s%d", "powerManagerBonus", toString(D)], a)
86-
87-
88-func G () = "%s__periodLength"
89-
90-
91-func H () = "%s__investPeriodLength"
92-
93-
94-func I () = "%s__blockProcessingReward"
95-
96-
97-func J () = "%s__nextBlockToProcess"
98-
99-
100-func K (L) = makeString(["%s%d", "blockProcessed", toString(L)], a)
101-
102-
103-func M () = "%s__withdrawal"
104-
105-
106-func N (z,O) = makeString(["%s%s%s", "withdrawal", toString(z), toBase58String(O)], a)
107-
108-
109-func P (Q,R,S,T) = {
110- let U = {
111- let k = T
112- if ($isInstanceOf(k, "ByteVector"))
113- then {
114- let l = k
115- toBase58String(l)
116- }
117- else if ($isInstanceOf(k, "Unit"))
118- then "SOON"
119- else throw("Match error")
120- }
121- makeString(["%s%d%d%s", Q, toString(R), toString(S), U], a)
45+func u () = {
46+ let v = getString(this, p())
47+ if ($isInstanceOf(v, "String"))
48+ then {
49+ let e = v
50+ split(e, a)
51+ }
52+ else nil
12253 }
12354
12455
125-func V (z,O) = makeString(["%s%s%s", "withdrawalHistory", toString(z), toBase58String(O)], a)
56+func w (x) = containsElement(u(), x)
12657
12758
128-func W (D) = makeString(["%s%d", "periodReward", toString(D)], a)
129-
130-
131-func X (D) = makeString(["%s%d", "periodRewardAmount", toString(D)], a)
132-
133-
134-func Y (g) = {
135- let Z = split(g, a)
136- if ((size(Z) == 5))
137- then {
138- let Q = Z[1]
139- let R = valueOrErrorMessage(parseInt(Z[2]), f("invalid lpAssetAmount"))
140- let S = valueOrErrorMessage(parseInt(Z[3]), f("invalid targetPeriod"))
141- let T = Z[4]
142- $Tuple4(Q, R, S, T)
143- }
144- else h("invalid withdrawal request value")
59+func y (z,o) = {
60+ let A = z
61+ let B = A._1
62+ let n = A._2
63+ $Tuple2((B :+ m(n, o)), n)
14564 }
14665
14766
148-let aa = {
149- let k = getString(this, p())
150- if ($isInstanceOf(k, "String"))
151- then {
152- let g = k
153- addressFromString(g)
154- }
155- else if ($isInstanceOf(k, "Unit"))
156- then unit
157- else throw("Match error")
158- }
67+func C (D) = {
68+ let E = p()
69+ let F = {
70+ let G = u()
71+ let H = size(G)
72+ let I = $Tuple2(nil, D)
73+ func J (K,L) = if ((L >= H))
74+ then K
75+ else y(K, G[L])
15976
160-let ab = valueOrErrorMessage(aa, f("invalid factory address"))
77+ func M (K,L) = if ((L >= H))
78+ then K
79+ else throw("List size exceeds 5")
16180
162-let ac = {
163- let k = aa
164- if ($isInstanceOf(k, "Address"))
165- then {
166- let ad = k
167- let ae = getString(ad, r())
168- if ($isInstanceOf(ae, "String"))
169- then {
170- let g = ae
171- fromBase58String(g)
172- }
173- else if ($isInstanceOf(ae, "Unit"))
174- then unit
175- else throw("Match error")
176- }
177- else if ($isInstanceOf(k, "Unit"))
178- then unit
179- else throw("Match error")
180- }
181-
182-let af = valueOrErrorMessage(ac, f("invalid lpAssetId"))
183-
184-let ag = {
185- let k = aa
186- if ($isInstanceOf(k, "Address"))
187- then {
188- let ad = k
189- let ae = getString(ad, s())
190- if ($isInstanceOf(ae, "String"))
191- then {
192- let g = ae
193- addressFromString(g)
194- }
195- else if ($isInstanceOf(ae, "Unit"))
196- then unit
197- else throw("Match error")
198- }
199- else if ($isInstanceOf(k, "Unit"))
200- then unit
201- else throw("Match error")
202- }
203-
204-let ah = valueOrErrorMessage(ag, f("invalid proxy treasury address"))
205-
206-let ai = {
207- let k = aa
208- if ($isInstanceOf(k, "Address"))
209- then {
210- let ad = k
211- let ae = getString(ad, t())
212- if ($isInstanceOf(ae, "String"))
213- then {
214- let g = ae
215- addressFromString(g)
216- }
217- else if ($isInstanceOf(ae, "Unit"))
218- then unit
219- else throw("Match error")
220- }
221- else if ($isInstanceOf(k, "Unit"))
222- then unit
223- else throw("Match error")
224- }
225-
226-let aj = {
227- let k = aa
228- if ($isInstanceOf(k, "Address"))
229- then {
230- let ad = k
231- let ae = getString(ad, u())
232- if ($isInstanceOf(ae, "String"))
233- then {
234- let g = ae
235- addressFromString(g)
236- }
237- else if ($isInstanceOf(ae, "Unit"))
238- then unit
239- else throw("Match error")
240- }
241- else if ($isInstanceOf(k, "Unit"))
242- then unit
243- else throw("Match error")
244- }
245-
246-let ak = valueOrErrorMessage(ai, f("invalid main treasury address"))
247-
248-let al = valueOrErrorMessage(aj, f("invalid business treasury address"))
249-
250-func am () = {
251- let k = aa
252- if ($isInstanceOf(k, "Address"))
253- then {
254- let an = k
255- let ae = getString(an, q())
256- if ($isInstanceOf(ae, "String"))
257- then {
258- let ao = ae
259- fromBase58String(ao)
260- }
261- else unit
262- }
263- else unit
81+ M(J(J(J(J(J(I, 0), 1), 2), 3), 4), 5)
82+ }
83+ let B = F._1
84+ let n = F._2
85+ B
26486 }
26587
26688
267-func ap (aq,ar) = if ((aq.caller == ar))
268- then true
269- else h("permission denied")
89+func N (B,t) = (B + valueOrElse(getInteger(t), 0))
27090
27191
272-func as (aq) = ap(aq, ab)
92+func O (n) = {
93+ let P = C(n)
94+ let G = P
95+ let H = size(G)
96+ let I = 0
97+ func J (K,L) = if ((L >= H))
98+ then K
99+ else N(K, G[L])
273100
101+ func M (K,L) = if ((L >= H))
102+ then K
103+ else throw("List size exceeds 5")
274104
275-func at (au,av) = {
276- let g = size(au)
277- let aw = au[0]
278- let ax = aw._1
279- let ay = aw._2
280- let az = au[1]
281- let aA = az._1
282- let aB = az._2
283- let aC = au[2]
284- let aD = aC._1
285- let aE = aC._2
286- if (if ((g > 0))
287- then (ax == av)
288- else false)
289- then ay
290- else if (if ((g > 1))
291- then (aA == av)
292- else false)
293- then aB
294- else if (if ((g > 2))
295- then (aD == av)
296- else false)
297- then aE
298- else unit
105+ M(J(J(J(J(J(I, 0), 1), 2), 3), 4), 5)
299106 }
300107
301108
302-func aF (aG,aH,aI) = {
303- let aJ = valueOrElse(getInteger(ab, x(unit)), 0)
304- let aK = valueOrElse(getInteger(ab, w(unit)), 0)
305- let aL = (aJ + aK)
306- let aM = (aG - aL)
307- let aN = if (if ((aM >= aH))
308- then true
309- else (aH == 0))
310- then aH
311- else h("power bonus is more than profit")
312- let aO = (aM - aN)
313- let aP = if ((aL > 0))
314- then fraction(aJ, c, aL)
315- else 0
316- let aQ = fraction(aO, aP, c)
317- let aR = (aO - aQ)
318- let aS = n(aI)
319- let aT = fraction(aR, if ((0 > aI))
320- then aS
321- else 0, c)
322- let aU = fraction(aQ, if ((aI > 0))
323- then aS
324- else 0, c)
325- let aV = ((aQ - aU) + aT)
326- let aW = ((aR - aT) + aU)
327- let aX = (aJ + aV)
328- let aY = (aK + aW)
329- let aZ = min([0, aX])
330- let ba = min([0, aY])
331- let bb = (max([0, aX]) + ba)
332- let bc = (max([0, aY]) + aZ)
333- let bd = valueOrErrorMessage(assetInfo(af), f("invalid lpAsset info")).quantity
334- let be = fraction(bc, c, bd)
335- let bf = if ((be != 0))
336- then true
337- else h("LP price cannot be 0")
338- if ((bf == bf))
109+func Q (B,R) = (B :+ DeleteEntry(R))
110+
111+
112+func S (n) = {
113+ let P = C(n)
114+ let G = P
115+ let H = size(G)
116+ let I = nil
117+ func J (K,L) = if ((L >= H))
118+ then K
119+ else Q(K, G[L])
120+
121+ func M (K,L) = if ((L >= H))
122+ then K
123+ else throw("List size exceeds 5")
124+
125+ M(J(J(J(J(J(I, 0), 1), 2), 3), 4), 5)
126+ }
127+
128+
129+func T (U,D,V,W) = {
130+ let t = m(D, U)
131+ let X = r(D, U)
132+ let Y = if (!(w(U)))
133+ then f((("Address: " + U) + " not in Admin list"))
134+ else if ((X == 1))
135+ then f((t + " you already voted"))
136+ else unit
137+ if ((Y == Y))
339138 then {
340- let bg = valueOrElse(getInteger(ab, M()), 0)
341- let bh = max([0, fraction(bg, be, c)])
342- let bi = (bc - bh)
343- let bj = (bd - bg)
344- $Tuple6(bh, bi, bb, be, bg, bj)
139+ let P = O(D)
140+ if (((P + 1) >= V))
141+ then {
142+ let Z = S(D)
143+ (Z ++ W)
144+ }
145+ else [IntegerEntry(t, 1)]
345146 }
346147 else throw("Strict value is not equal to itself.")
347148 }
348149
349150
350-func bk (bl,O) = {
351- let z = Address(bl)
352- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
353- let bn = valueOrErrorMessage(getString(ab, N(z, O)), f("invalid withdrawal request"))
354- let bo = Y(bn)
355- let Q = bo._1
356- let R = bo._2
357- let S = bo._3
358- let T = bo._4
359- if ((S > bm))
360- then h("invalid withdrawal request period")
361- else {
362- let bp = valueOrErrorMessage(getInteger(ab, C(S)), f("invalid price"))
363- let bq = if ((bp > 0))
364- then fraction(R, bp, c)
365- else 0
366- let br = getStringValue(ab, W(bm))
367- let bs = getStringValue(ab, X(bm))
368- $Tuple6(z, R, S, bq, br, bs)
151+func aa () = "%s__calculator"
152+
153+
154+func ab () = "%s__proxyTreasury"
155+
156+
157+func ac () = "%s__child"
158+
159+
160+func ad () = "%s__blockProcessingReward"
161+
162+
163+func ae () = "%s__nextBlockToProcess"
164+
165+
166+func af () = "%s__lpAssetId"
167+
168+
169+let ag = {
170+ let v = getString(this, aa())
171+ if ($isInstanceOf(v, "String"))
172+ then {
173+ let e = v
174+ addressFromString(e)
369175 }
176+ else if ($isInstanceOf(v, "Unit"))
177+ then unit
178+ else throw("Match error")
370179 }
371180
181+let ah = valueOrErrorMessage(ag, d("invalid calculator address"))
372182
373-func bt (bl,O) = {
374- let bu = bk(bl, O)
375- let z = bu._1
376- let R = bu._2
377- let S = bu._3
378- let bq = bu._4
379- let br = bu._5
380- let bs = bu._6
381- let bv = makeString(removeByIndex(split_51C(br, a), 0), ":")
382- let bw = makeString(removeByIndex(split_51C(bs, a), 0), ":")
383- makeString(["%d%s%s", toString(bq), bv, bw], a)
183+let ai = {
184+ let v = getString(this, ab())
185+ if ($isInstanceOf(v, "String"))
186+ then {
187+ let e = v
188+ addressFromString(e)
189+ }
190+ else if ($isInstanceOf(v, "Unit"))
191+ then unit
192+ else throw("Match error")
384193 }
385194
195+let aj = valueOrErrorMessage(ai, d("invalid proxy treasury address"))
386196
387-@Callable(aq)
388-func claimLP (bl) = {
389- let bx = as(aq)
390- if ((bx == bx))
197+func ak () = "%s__config"
198+
199+
200+func al () = "contract_children"
201+
202+
203+func am () = "contract_voting_result"
204+
205+
206+func an (x,l) = ((("proposal_allow_broadcast_" + toString(x)) + "_") + toBase58String(l))
207+
208+
209+func ao (ap,aq) = makeString(["investor", toString(ap), toString(aq)], "_")
210+
211+
212+let ar = {
213+ let v = getString(this, ak())
214+ if ($isInstanceOf(v, "String"))
391215 then {
392- let z = Address(bl)
393- let by = valueOrElse(getInteger(ab, y(z)), 0)
394- let bz = valueOrElse(getInteger(ab, A(z)), 0)
395- let bA = if ((by > 0))
396- then [invoke(ab, "transferAsset", [bl, by, af], nil), invoke(ab, "integerEntry", [y(z), 0], nil), invoke(ab, "integerEntry", [A(z), (bz + by)], nil)]
397- else h("nothing to claim")
398- $Tuple2(nil, bA)
216+ let e = v
217+ addressFromString(e)
399218 }
219+ else if ($isInstanceOf(v, "Unit"))
220+ then unit
221+ else throw("Match error")
222+ }
223+
224+let as = valueOrErrorMessage(ar, d("invalid config address"))
225+
226+let at = {
227+ let v = ar
228+ if ($isInstanceOf(v, "Address"))
229+ then {
230+ let z = v
231+ let au = getString(z, am())
232+ if ($isInstanceOf(au, "String"))
233+ then {
234+ let e = au
235+ addressFromString(e)
236+ }
237+ else if ($isInstanceOf(au, "Unit"))
238+ then unit
239+ else throw("Match error")
240+ }
241+ else if ($isInstanceOf(v, "Unit"))
242+ then unit
243+ else throw("Match error")
244+ }
245+
246+let av = valueOrErrorMessage(at, d("invalid voting result address"))
247+
248+let aw = {
249+ let v = ar
250+ if ($isInstanceOf(v, "Address"))
251+ then {
252+ let z = v
253+ let au = getString(z, al())
254+ if ($isInstanceOf(au, "String"))
255+ then {
256+ let e = au
257+ addressFromString(e)
258+ }
259+ else if ($isInstanceOf(au, "Unit"))
260+ then unit
261+ else throw("Match error")
262+ }
263+ else if ($isInstanceOf(v, "Unit"))
264+ then unit
265+ else throw("Match error")
266+ }
267+
268+let ax = valueOrErrorMessage(aw, d("invalid children address"))
269+
270+let ay = {
271+ let v = getString(this, af())
272+ if ($isInstanceOf(v, "String"))
273+ then {
274+ let e = v
275+ fromBase58String(e)
276+ }
277+ else if ($isInstanceOf(v, "Unit"))
278+ then unit
279+ else throw("Match error")
280+ }
281+
282+let az = valueOrErrorMessage(ay, d("invalid lpAssetId"))
283+
284+func aA (aB,x) = if ((aB.caller == x))
285+ then true
286+ else f("permission denied")
287+
288+
289+func aC (aB) = aA(aB, this)
290+
291+
292+func aD (aB) = aA(aB, ah)
293+
294+
295+@Callable(aB)
296+func stringEntry (R,aE) = if (aD(aB))
297+ then $Tuple2([StringEntry(R, aE)], R)
298+ else $Tuple2(nil, unit)
299+
300+
301+
302+@Callable(aB)
303+func integerEntry (R,aE) = if (aD(aB))
304+ then $Tuple2([IntegerEntry(R, aE)], R)
305+ else $Tuple2(nil, unit)
306+
307+
308+
309+@Callable(aB)
310+func booleanEntry (R,aE) = if (aD(aB))
311+ then $Tuple2([BooleanEntry(R, aE)], R)
312+ else $Tuple2(nil, unit)
313+
314+
315+
316+@Callable(aB)
317+func binaryEntry (R,aE) = if (aD(aB))
318+ then $Tuple2([BinaryEntry(R, aE)], R)
319+ else $Tuple2(nil, unit)
320+
321+
322+
323+@Callable(aB)
324+func deleteEntry (R) = if (aD(aB))
325+ then $Tuple2([DeleteEntry(R)], R)
326+ else $Tuple2(nil, unit)
327+
328+
329+
330+@Callable(aB)
331+func reissue (aF) = if (aD(aB))
332+ then $Tuple2([Reissue(az, aF, true)], aF)
333+ else $Tuple2(nil, unit)
334+
335+
336+
337+@Callable(aB)
338+func burn (aF) = if (aD(aB))
339+ then $Tuple2([Burn(az, aF)], aF)
340+ else $Tuple2(nil, unit)
341+
342+
343+
344+@Callable(aB)
345+func transferAsset (aG,aF,aH) = if (aD(aB))
346+ then $Tuple2([ScriptTransfer(Address(aG), aF, aH)], aF)
347+ else $Tuple2(nil, unit)
348+
349+
350+
351+@Callable(aB)
352+func transferAssets (aG,aI,aJ) = if (aD(aB))
353+ then {
354+ func aK (aL,aM) = {
355+ let aN = aL
356+ let aO = aN._1
357+ let aP = aN._2
358+ let aQ = ScriptTransfer(Address(aG), parseIntValue(aJ[aP]), g(aI[aP]))
359+ let aR = (aO :+ aQ)
360+ $Tuple2(aR, (aP + 1))
361+ }
362+
363+ let aS = {
364+ let G = aI
365+ let H = size(G)
366+ let I = $Tuple2(nil, 0)
367+ func J (K,L) = if ((L >= H))
368+ then K
369+ else aK(K, G[L])
370+
371+ func M (K,L) = if ((L >= H))
372+ then K
373+ else throw("List size exceeds 10")
374+
375+ M(J(J(J(J(J(J(J(J(J(J(I, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
376+ }
377+ let aT = aS._1
378+ let aU = aS._2
379+ $Tuple2(aT, unit)
380+ }
381+ else $Tuple2(nil, unit)
382+
383+
384+
385+@Callable(aB)
386+func transferWaves (aG,aF) = if (aD(aB))
387+ then $Tuple2([ScriptTransfer(Address(aG), aF, unit)], aF)
388+ else $Tuple2(nil, unit)
389+
390+
391+
392+@Callable(aB)
393+func transferFromProxyTreasury (aV,aW) = if (aD(aB))
394+ then $Tuple2(nil, invoke(aj, "transferWaves", [aV, aW], nil))
395+ else $Tuple2(nil, unit)
396+
397+
398+
399+@Callable(aB)
400+func finalize (aX,aY,aZ) = $Tuple2(nil, reentrantInvoke(ah, "finalize", [aB.caller.bytes, aX, aY, aZ], aB.payments))
401+
402+
403+
404+@Callable(aB)
405+func finalizeREADONLY (aX,aY,aZ) = $Tuple2(nil, reentrantInvoke(ah, "finalizeREADONLY", [aX, aY, aZ], nil))
406+
407+
408+
409+@Callable(aB)
410+func claimLP () = $Tuple2(nil, reentrantInvoke(ah, "claimLP", [aB.caller.bytes], aB.payments))
411+
412+
413+
414+@Callable(aB)
415+func claimCollateral (ba) = $Tuple2(nil, reentrantInvoke(ah, "claimCollateral", [aB.caller.bytes, ba], aB.payments))
416+
417+
418+
419+@Callable(aB)
420+func claimCollateralBulk (bb) = $Tuple2(nil, reentrantInvoke(ah, "claimCollateralBulk", [aB.caller.bytes, bb], aB.payments))
421+
422+
423+
424+@Callable(aB)
425+func invest () = $Tuple2(nil, reentrantInvoke(ah, "invest", [aB.caller.bytes], aB.payments))
426+
427+
428+
429+@Callable(aB)
430+func withdraw () = $Tuple2(nil, reentrantInvoke(ah, "withdraw", [aB.caller.bytes], aB.payments))
431+
432+
433+
434+@Callable(aB)
435+func cancelWithdraw (ba) = $Tuple2(nil, reentrantInvoke(ah, "cancelWithdraw", [aB.caller.bytes, fromBase58String(ba)], aB.payments))
436+
437+
438+
439+@Callable(aB)
440+func processBlocks () = $Tuple2(nil, reentrantInvoke(ah, "processBlocks", [aB.caller.bytes], aB.payments))
441+
442+
443+
444+@Callable(aB)
445+func claimCollateralREADONLY (aq,ba) = $Tuple2(nil, reentrantInvoke(ah, "claimCollateralREADONLY", [fromBase58String(aq), ba], nil))
446+
447+
448+
449+@Callable(aB)
450+func claimCollateralBulkREADONLY (aq,bb) = $Tuple2(nil, reentrantInvoke(ah, "claimCollateralBulkREADONLY", [fromBase58String(aq), bb], nil))
451+
452+
453+
454+@Callable(aB)
455+func voteForTxId (l) = {
456+ let U = toBase58String(aB.caller.bytes)
457+ let D = k(l)
458+ let B = [StringEntry(q(), l)]
459+ let bc = getString(this, q())
460+ let Y = [if ((size(fromBase58String(l)) == j))
461+ then true
462+ else f((l + " is not valid txId")), if (if ((bc == unit))
463+ then true
464+ else (value(bc) != l))
465+ then true
466+ else f((l + " is already allowed"))]
467+ if ((Y == Y))
468+ then T(U, D, i, B)
400469 else throw("Strict value is not equal to itself.")
401470 }
402471
403472
404-
405-@Callable(aq)
406-func finalize (bl,aG,aH,aI) = {
407- let bx = as(aq)
408- if ((bx == bx))
409- then {
410- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
411- let bB = valueOrErrorMessage(getInteger(ab, G()), f("invalid period length"))
412- let bC = valueOrErrorMessage(getInteger(ab, E(bm)), f("invalid start height"))
413- let bD = valueOrErrorMessage(getInteger(ab, C(bm)), f("invalid price"))
414- let bE = valueOrErrorMessage(getInteger(ab, J()), f("invalid next block to process"))
415- let bF = ((bC + bB) - 1)
416- let bG = [if ((aq.originCaller == ak))
417- then true
418- else h("permission denied"), if ((bE > bF))
419- then true
420- else h("unprocessed blocks"), if ((aG >= 0))
421- then true
422- else h("invalid new treasury volume"), if ((aH >= 0))
423- then true
424- else h("invalid PWR managers bonus"), if (if ((aI >= -(c)))
425- then (c >= aI)
426- else false)
427- then true
428- else h("invalid treasury volume diff allocation coefficient")]
429- if ((bG == bG))
430- then {
431- let bH = aF(aG, aH, aI)
432- let bh = bH._1
433- let bi = bH._2
434- let bb = bH._3
435- let be = bH._4
436- let bg = bH._5
437- let bj = bH._6
438- let bI = (bm + 1)
439- func bJ (bK,bL) = {
440- let bM = bK
441- let bN = bM._1
442- let bO = bM._2
443- let bs = bM._3
444- let bP = bL.amount
445- let bQ = bL.assetId
446- let bR = ("%s" + makeString([bO, i(bQ)], a))
447- let bS = ("%d" + makeString([bs, toString(bP)], a))
448- let bT = ScriptTransfer(ab, bP, bQ)
449- $Tuple3((bN :+ bT), bR, bS)
450- }
451-
452- let bU = {
453- let bV = aq.payments
454- let bW = size(bV)
455- let bX = $Tuple3(nil, "", "")
456- func bY (bZ,ca) = if ((ca >= bW))
457- then bZ
458- else bJ(bZ, bV[ca])
459-
460- func cb (bZ,ca) = if ((ca >= bW))
461- then bZ
462- else throw("List size exceeds 10")
463-
464- cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
465- }
466- let bN = bU._1
467- let cc = bU._2
468- let cd = bU._3
469- let bA = [invoke(ab, "integerEntry", [F(bm), aH], nil), invoke(ab, "integerEntry", [B(), bI], nil), invoke(ab, "integerEntry", [C(bI), be], nil), invoke(ab, "integerEntry", [E(bI), (bF + 1)], nil), invoke(ab, "burn", [bg], nil), invoke(ab, "integerEntry", [M(), 0], nil), invoke(ab, "integerEntry", [w(unit), bi], nil), invoke(ab, "integerEntry", [x(unit), bb], nil), invoke(ab, "stringEntry", [W(bI), cc], nil), invoke(ab, "stringEntry", [X(bI), cd], nil)]
470- $Tuple2(bN, bA)
471- }
472- else throw("Strict value is not equal to itself.")
473- }
474- else throw("Strict value is not equal to itself.")
475- }
476-
477-
478-
479-@Callable(aq)
480-func finalizeREADONLY (aG,aH,aI) = {
481- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
482- let bB = valueOrErrorMessage(getInteger(ab, G()), f("invalid period length"))
483- let bC = valueOrErrorMessage(getInteger(ab, E(bm)), f("invalid start height"))
484- let bD = valueOrErrorMessage(getInteger(ab, C(bm)), f("invalid price"))
485- let bE = valueOrErrorMessage(getInteger(ab, J()), f("invalid next block to process"))
486- let bF = ((bC + bB) - 1)
487- let bG = [if ((bE > bF))
473+@Verifier(bd)
474+func be () = {
475+ let bf = {
476+ let v = at
477+ if ($isInstanceOf(v, "Address"))
478+ then {
479+ let bg = v
480+ valueOrElse(getBoolean(bg, an(this, bd.id)), false)
481+ }
482+ else false
483+ }
484+ let bh = (bd.id == fromBase58String(valueOrElse(getString(this, q()), "")))
485+ let bi = if ((size(u()) >= i))
486+ then false
487+ else sigVerify(bd.bodyBytes, bd.proofs[0], bd.senderPublicKey)
488+ if (if (bf)
488489 then true
489- else h("unprocessed blocks"), if ((aG >= 0))
490+ else bh)
490491 then true
491- else h("invalid new treasury volume"), if ((aH >= 0))
492- then true
493- else h("invalid PWR managers bonus"), if (if ((aI >= -(c)))
494- then (c >= aI)
495- else false)
496- then true
497- else h("invalid treasury volume diff allocation coefficient")]
498- if ((bG == bG))
499- then $Tuple2(nil, aF(aG, aH, aI))
500- else throw("Strict value is not equal to itself.")
501- }
502-
503-
504-
505-@Callable(aq)
506-func invest (bl) = {
507- let bx = as(aq)
508- if ((bx == bx))
509- then {
510- let z = Address(bl)
511- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
512- let bC = valueOrErrorMessage(getInteger(ab, E(bm)), f("invalid start height"))
513- let ce = getIntegerValue(H())
514- let cf = if (((bC + ce) > height))
515- then true
516- else h("too late to invest in this period")
517- if ((cf == cf))
518- then {
519- let bD = valueOrErrorMessage(getInteger(ab, C(bm)), f("invalid price"))
520- let bL = if ((size(aq.payments) == 1))
521- then aq.payments[0]
522- else h("invalid payments")
523- let cg = if (if ((bL.assetId == unit))
524- then (bL.amount > 0)
525- else false)
526- then $Tuple2(bL.amount, bL.assetId)
527- else h("invalid payment amount")
528- let bP = cg._1
529- let bQ = cg._2
530- let ch = valueOrElse(getInteger(ab, v()), 0)
531- let ci = fraction(bP, (c - ch), c)
532- let R = if ((bD > 0))
533- then fraction(ci, c, bD)
534- else 0
535- let cj = valueOrElse(getInteger(ab, w(unit)), 0)
536- let bK = [ScriptTransfer(ak, ci, bQ), ScriptTransfer(al, ch, bQ)]
537- let bA = [invoke(ab, "integerEntry", [w(unit), (cj + ci)], nil), invoke(ab, "reissue", [R], nil), invoke(ab, "transferAsset", [bl, R, af], nil)]
538- $Tuple2(bK, bA)
539- }
540- else throw("Strict value is not equal to itself.")
541- }
542- else throw("Strict value is not equal to itself.")
543- }
544-
545-
546-
547-@Callable(aq)
548-func withdraw (bl) = {
549- let bx = as(aq)
550- if ((bx == bx))
551- then {
552- let z = Address(bl)
553- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
554- let bL = if ((size(aq.payments) == 1))
555- then aq.payments[0]
556- else h(f("invalid payments"))
557- let bQ = if ((bL.assetId == af))
558- then af
559- else h("invalid payment asset")
560- let bP = if ((bL.amount > 0))
561- then bL.amount
562- else h("invalid payment amount")
563- let ck = valueOrElse(getInteger(ab, M()), 0)
564- let bK = [ScriptTransfer(ab, bP, bQ)]
565- let bA = [invoke(ab, "integerEntry", [M(), (ck + bP)], nil), invoke(ab, "stringEntry", [N(z, aq.transactionId), P(d, bP, (bm + 1), unit)], nil)]
566- if ((bA == bA))
567- then $Tuple2(bK, bA)
568- else throw("Strict value is not equal to itself.")
569- }
570- else throw("Strict value is not equal to itself.")
571- }
572-
573-
574-
575-@Callable(aq)
576-func cancelWithdraw (bl,O) = {
577- let bx = as(aq)
578- if ((bx == bx))
579- then {
580- let z = Address(bl)
581- let bn = valueOrErrorMessage(getString(ab, N(z, O)), f("invalid withdrawal request"))
582- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
583- let cl = Y(bn)
584- let Q = cl._1
585- let R = cl._2
586- let S = cl._3
587- let T = cl._4
588- let bG = [if ((Q == d))
589- then true
590- else h("invalid withdrawal request status"), if ((S > bm))
591- then true
592- else h("invalid withdrawal request period")]
593- if ((bG == bG))
594- then {
595- let ck = valueOrErrorMessage(getInteger(ab, M()), f("invalid total withdrawal amount"))
596- let bA = [invoke(ab, "integerEntry", [M(), if ((ck >= R))
597- then (ck - R)
598- else h("invalid withdrawal amount")], nil), invoke(ab, "deleteEntry", [N(z, O)], nil), invoke(ab, "transferAsset", [bl, R, af], nil)]
599- if ((bA == bA))
600- then $Tuple2(nil, bA)
601- else throw("Strict value is not equal to itself.")
602- }
603- else throw("Strict value is not equal to itself.")
604- }
605- else throw("Strict value is not equal to itself.")
606- }
607-
608-
609-
610-@Callable(aq)
611-func claimCollateral (bl,O) = {
612- let bx = as(aq)
613- if ((bx == bx))
614- then {
615- let cm = bk(bl, fromBase58String(O))
616- let z = cm._1
617- let R = cm._2
618- let S = cm._3
619- let bq = cm._4
620- let br = cm._5
621- let bs = cm._6
622- let cn = removeByIndex(split_51C(br, a), 0)
623- let co = removeByIndex(split_51C(bs, a), 0)
624- let bA = [invoke(ab, "deleteEntry", [N(z, fromBase58String(O))], nil), invoke(ab, "integerEntry", [V(z, fromBase58String(O)), R], nil), invoke(ab, "transferAssets", [bl, cn, co], nil)]
625- $Tuple2(nil, bA)
626- }
627- else throw("Strict value is not equal to itself.")
628- }
629-
630-
631-
632-@Callable(aq)
633-func claimCollateralBulk (bl,cp) = {
634- let bx = as(aq)
635- if ((bx == bx))
636- then {
637- func bJ (cq,O) = {
638- let cr = bk(bl, fromBase58String(O))
639- let z = cr._1
640- let R = cr._2
641- let S = cr._3
642- let bq = cr._4
643- let br = cr._5
644- let bs = cr._6
645- let cn = removeByIndex(split_51C(br, a), 0)
646- let co = removeByIndex(split_51C(bs, a), 0)
647- let cs = [invoke(ab, "deleteEntry", [N(z, fromBase58String(O))], nil), invoke(ab, "integerEntry", [V(z, fromBase58String(O)), R], nil), invoke(ab, "transferAssets", [bl, cn, co], nil)]
648- (cq ++ cs)
649- }
650-
651- let ct = {
652- let bV = cp
653- let bW = size(bV)
654- let bX = nil
655- func bY (bZ,ca) = if ((ca >= bW))
656- then bZ
657- else bJ(bZ, bV[ca])
658-
659- func cb (bZ,ca) = if ((ca >= bW))
660- then bZ
661- else throw("List size exceeds 10")
662-
663- cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
664- }
665- $Tuple2(nil, ct)
666- }
667- else throw("Strict value is not equal to itself.")
668- }
669-
670-
671-
672-@Callable(aq)
673-func claimCollateralREADONLY (bl,O) = {
674- let cu = bt(bl, fromBase58String(O))
675- $Tuple2(nil, cu)
676- }
677-
678-
679-
680-@Callable(aq)
681-func claimCollateralBulkREADONLY (bl,cp) = {
682- func cv (cq,O) = {
683- let cu = bt(bl, fromBase58String(O))
684- (cq :+ cu)
685- }
686-
687- let cw = {
688- let bV = cp
689- let bW = size(bV)
690- let bX = nil
691- func bY (bZ,ca) = if ((ca >= bW))
692- then bZ
693- else cv(bZ, bV[ca])
694-
695- func cb (bZ,ca) = if ((ca >= bW))
696- then bZ
697- else throw("List size exceeds 10")
698-
699- cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
700- }
701- $Tuple2(nil, cw)
702- }
703-
704-
705-
706-@Callable(aq)
707-func processBlocks (bl) = {
708- let bx = as(aq)
709- if ((bx == bx))
710- then {
711- let z = Address(bl)
712- let bm = valueOrErrorMessage(getInteger(ab, B()), f("invalid period"))
713- let bB = valueOrErrorMessage(getInteger(ab, G()), f("invalid period length"))
714- let bC = valueOrErrorMessage(getInteger(ab, E(bm)), f("invalid start height"))
715- let bD = valueOrErrorMessage(getInteger(ab, C(bm)), f("invalid price"))
716- let bE = valueOrErrorMessage(getInteger(ab, J()), f("invalid next block to process"))
717- let bF = ((bC + bB) - 1)
718- let cx = 40
719- let cy = if (if (if ((height >= bE))
720- then if ((bE >= bC))
721- then true
722- else (bm == 0)
723- else false)
724- then (bF >= bE)
725- else false)
726- then min([((bF - bE) + 1), cx])
727- else h(f("invalid target block"))
728- let cz = valueOrErrorMessage(getInteger(ab, I()), f("invalid block processing reward"))
729- let cA = (cz / cy)
730- let cB = (cz - (cA * cy))
731- func cC (cD,cE) = if ((cE >= cy))
732- then cD
733- else {
734- let cF = (bE + cE)
735- let cG = valueOrErrorMessage(blockInfoByHeight(cF), f("invalid block info"))
736- let cH = valueOrErrorMessage(at(cG.rewards, ah), f(("invalid treasury reward for height " + toString(cF))))
737- let cI = cG.generator
738- let by = valueOrElse(getInteger(ab, y(cI)), 0)
739- let cJ = if ((cE == (cy - 1)))
740- then (cA + cB)
741- else cA
742- let R = if ((bD > 0))
743- then fraction((cH - cJ), c, bD)
744- else 0
745- let cK = [invoke(ab, "stringEntry", [K(cF), makeString([toBase58String(aq.transactionId), toString(bm), toString(cI), toBase58String(bl), toString(cH), toString(cJ), toString(R)], a)], nil), invoke(ab, "integerEntry", [y(cI), (by + R)], nil)]
746- if ((cK == cK))
747- then {
748- let cL = cD
749- let cM = cL._1
750- let cN = cL._2
751- $Tuple2((cM + R), (cN + cH))
752- }
753- else throw("Strict value is not equal to itself.")
754- }
755-
756- let cO = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39]
757- let cP = {
758- let bV = cO
759- let bW = size(bV)
760- let bX = $Tuple2(0, 0)
761- func bY (bZ,ca) = if ((ca >= bW))
762- then bZ
763- else cC(bZ, bV[ca])
764-
765- func cb (bZ,ca) = if ((ca >= bW))
766- then bZ
767- else throw("List size exceeds 40")
768-
769- cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
770- }
771- if ((cP == cP))
772- then {
773- let cQ = cP._2
774- let cR = cP._1
775- let cS = valueOrElse(getInteger(ab, v()), 0)
776- let cT = fraction(cQ, cS, c)
777- let cU = ((cQ - cT) - cz)
778- let cj = valueOrElse(getInteger(ab, w(unit)), 0)
779- let bK = [invoke(ab, "reissue", [cR], nil), invoke(ab, "integerEntry", [J(), (bE + cy)], nil), invoke(ab, "transferFromProxyTreasury", [ak.bytes, cU], nil), invoke(ab, "transferFromProxyTreasury", [bl, cz], nil), invoke(ab, "transferFromProxyTreasury", [al.bytes, cT], nil), invoke(ab, "integerEntry", [w(unit), (cj + cU)], nil)]
780- if ((bK == bK))
781- then $Tuple2(nil, unit)
782- else throw("Strict value is not equal to itself.")
783- }
784- else throw("Strict value is not equal to itself.")
785- }
786- else throw("Strict value is not equal to itself.")
787- }
788-
789-
790-@Verifier(cV)
791-func cW () = {
792- let cX = {
793- let k = am()
794- if ($isInstanceOf(k, "ByteVector"))
795- then {
796- let ao = k
797- ao
798- }
799- else cV.senderPublicKey
800- }
801- sigVerify(cV.bodyBytes, cV.proofs[0], cX)
492+ else bi
802493 }
803494

github/deemru/w8io/c3f4982 
85.09 ms