tx · uB44RXKFqm3HwYRnSXDQ11gzmRX9ka4q1ZVhhK7KBwW

3NC9dyrMheMhHXcaeCXkuKqaTkLFa5Ahzd2:  -0.01400000 Waves

2024.02.16 10:30 [2978461] smart account 3NC9dyrMheMhHXcaeCXkuKqaTkLFa5Ahzd2 > SELF 0.00000000 Waves

{ "type": 13, "id": "uB44RXKFqm3HwYRnSXDQ11gzmRX9ka4q1ZVhhK7KBwW", "fee": 1400000, "feeAssetId": null, "timestamp": 1708068618668, "version": 2, "chainId": 84, "sender": "3NC9dyrMheMhHXcaeCXkuKqaTkLFa5Ahzd2", "senderPublicKey": "8fS13zFL61wF3maPyR7vTayhasoH9StToqd7wGuecHXN", "proofs": [ "bjNxamwVaJdzFA9nGrd2AJug9HMuucpVNtFTTnjqRfAags9LLm46LGvF9omn82CgYxdCQfNJJpQ56u9Pjjxw2HX" ], "script": "base64:BwJkCAISBAoCCAgSBAoCCAESBAoCCAQSBAoCCAISAwoBCBIFCgMCAQQSBAoCAgESBQoDAgECEgUKAwISERIECgICARINCgsICAgICAgIAQEBGBIICgYICAgBAgESBAoCCBgSAwoBCDAAA1NFUAICX18ABVdBVkVTAgVXQVZFUwAQY29udHJhY3RGaWxlbmFtZQISd3hkYW9fZmFjdG9yeS5yaWRlAQd3cmFwRXJyAQFzCQCsAgIJAKwCAgUQY29udHJhY3RGaWxlbmFtZQICOiAFAXMBCHRocm93RXJyAQFzCQACAQkBB3dyYXBFcnIBBQFzAQ9zdHJpbmdUb0Fzc2V0SWQBAXMDCQAAAgUBcwUFV0FWRVMFBHVuaXQJANkEAQUBcwAPQURNSU5fTElTVF9TSVpFAAUABlFVT1JVTQADABFUWElEX0JZVEVTX0xFTkdUSAAgARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIJYWxsb3dUeElkCQDMCAIFBHR4SWQFA25pbAUDU0VQARBrZXlGdWxsQWRtaW5Wb3RlAgZwcmVmaXgMYWRtaW5BZGRyZXNzCQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVABE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDmtleUFsbG93ZWRUeElkAAkAuQkCCQDMCAICAiVzCQDMCAICBHR4SWQFA25pbAUDU0VQAQxnZXRBZG1pblZvdGUCBnByZWZpeAVhZG1pbgQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAENZ2V0QWRtaW5zTGlzdAAEByRtYXRjaDAJAJ0IAgUEdGhpcwkBE2tleUFkbWluQWRkcmVzc0xpc3QAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAtQkCBQFzBQNTRVAFA25pbAENaXNJbkFkbWluTGlzdAEHYWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwESZ2VuVm90ZXNLZXlzSGVscGVyAgFhDGFkbWluQWRkcmVzcwQLJHQwMTE5NzEyMjEFAWEEBnJlc3VsdAgFCyR0MDExOTcxMjIxAl8xBAZwcmVmaXgIBQskdDAxMTk3MTIyMQJfMgkAlAoCCQDNCAIFBnJlc3VsdAkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFDGFkbWluQWRkcmVzcwUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQETa2V5QWRtaW5BZGRyZXNzTGlzdAAECyR0MDEzNjgxNDUyCgACJGwJAQ1nZXRBZG1pbnNMaXN0AAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQlrZXlQcmVmaXgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdlblZvdGVzS2V5c0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEBnJlc3VsdAgFCyR0MDEzNjgxNDUyAl8xBAZwcmVmaXgIBQskdDAxMzY4MTQ1MgJfMgUGcmVzdWx0ARBjb3VudFZvdGVzSGVscGVyAgZyZXN1bHQHdm90ZUtleQkAZAIFBnJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABCmNvdW50Vm90ZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFARBjbGVhclZvdGVzSGVscGVyAgZyZXN1bHQDa2V5CQDNCAIFBnJlc3VsdAkBC0RlbGV0ZUVudHJ5AQUDa2V5ARNnZXRDbGVhclZvdGVFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjbGVhclZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEMdm90ZUlOVEVSTkFMBBNjYWxsZXJBZGRyZXNzU3RyaW5nCWtleVByZWZpeAhtaW5Wb3Rlcwp2b3RlUmVzdWx0BAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQQYWRtaW5DdXJyZW50Vm90ZQkBDGdldEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQDZXJyAwkBASEBCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCEiBub3QgaW4gQWRtaW4gbGlzdAMJAAACBRBhZG1pbkN1cnJlbnRWb3RlAAEJAQh0aHJvd0VycgEJAKwCAgUHdm90ZUtleQISIHlvdSBhbHJlYWR5IHZvdGVkBQR1bml0AwkAAAIFA2VycgUDZXJyBAV2b3RlcwkBCmNvdW50Vm90ZXMBBQlrZXlQcmVmaXgDCQBnAgkAZAIFBXZvdGVzAAEFCG1pblZvdGVzBBBjbGVhclZvdGVFbnRyaWVzCQETZ2V0Q2xlYXJWb3RlRW50cmllcwEFCWtleVByZWZpeAkAzggCBRBjbGVhclZvdGVFbnRyaWVzBQp2b3RlUmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd2b3RlS2V5AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEUa2V5Q2FsY3VsYXRvckFkZHJlc3MAAhUlc19fY2FsY3VsYXRvckFkZHJlc3MBDmtleUxvY2tBZGRyZXNzAAIPJXNfX2xvY2tBZGRyZXNzARZrZXlQb29sc0ZhY3RvcnlBZGRyZXNzAAIXJXNfX3Bvb2xzRmFjdG9yeUFkZHJlc3MBEmtleVRyZWFzdXJ5QWRkcmVzcwACEyVzX190cmVhc3VyeUFkZHJlc3MBDGtleUxwQXNzZXRJZAACDSVzX19scEFzc2V0SWQBEGtleUN1cnJlbnRQZXJpb2QACQC5CQIJAMwIAgICJXMJAMwIAgINY3VycmVudFBlcmlvZAUDbmlsBQNTRVABFmtleVN0YXJ0SGVpZ2h0QnlQZXJpb2QBBnBlcmlvZAkAuQkCCQDMCAICBCVzJWQJAMwIAgILc3RhcnRIZWlnaHQJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQAQ9rZXlQZXJpb2RMZW5ndGgACQC5CQIJAMwIAgICJXMJAMwIAgIMcGVyaW9kTGVuZ3RoBQNuaWwFA1NFUAEYa2V5VHJlYXN1cnlWYWx1ZUJ5UGVyaW9kAQZwZXJpb2QJALkJAgkAzAgCAgQlcyVkCQDMCAICDXRyZWFzdXJ5VmFsdWUJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQAQ9rZXlMb2NrRHVyYXRpb24ACQC5CQIJAMwIAgICJXMJAMwIAgIMbG9ja0R1cmF0aW9uBQNuaWwFA1NFUAAXY2FsY3VsYXRvckFkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwkBFGtleUNhbGN1bGF0b3JBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFF2NhbGN1bGF0b3JBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECGmludmFsaWQgY2FsY3VsYXRvciBhZGRyZXNzARVrZXlQb3dlckNvbmZpZ0FkZHJlc3MAAhYlc19fcG93ZXJDb25maWdBZGRyZXNzARdrZXlQb3dlckNvbnRyYWN0QWRkcmVzcwACGCVzX19wb3dlckNvbnRyYWN0QWRkcmVzcwEJa2V5QXNzZXRzAAIKJXNfX2Fzc2V0cwEWa2V5Vm90aW5nUmVzdWx0QWRkcmVzcwACFmNvbnRyYWN0X3ZvdGluZ19yZXN1bHQBGWtleVByb3Bvc2FsQWxsb3dCcm9hZGNhc3QCB2FkZHJlc3MEdHhJZAkArAICCQCsAgIJAKwCAgIZcHJvcG9zYWxfYWxsb3dfYnJvYWRjYXN0XwkApQgBBQdhZGRyZXNzAgFfCQDYBAEFBHR4SWQAE2NvbmZpZ0FkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwkBFWtleVBvd2VyQ29uZmlnQWRkcmVzcwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABl2b3RpbmdSZXN1bHRBZGRyZXNzT3B0aW9uBAckbWF0Y2gwBRNjb25maWdBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBFmtleVZvdGluZ1Jlc3VsdEFkZHJlc3MAAwkAAQIFByRtYXRjaDECBlN0cmluZwQBcwUHJG1hdGNoMQkApggBBQFzAwkAAQIFByRtYXRjaDECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAGXZvdGluZ1Jlc3VsdEFkZHJlc3NPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUZdm90aW5nUmVzdWx0QWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAh1pbnZhbGlkIHZvdGluZyByZXN1bHQgYWRkcmVzcwAPbHBBc3NldElkT3B0aW9uBAckbWF0Y2gwCQCdCAIFBHRoaXMJAQxrZXlMcEFzc2V0SWQAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAPbHBBc3NldElkT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFD2xwQXNzZXRJZE9wdGlvbgkBB3dyYXBFcnIBAhFpbnZhbGlkIGxwQXNzZXRJZAELb25seUFkZHJlc3MCAWkHYWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFB2FkZHJlc3MGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAEIb25seVRoaXMBAWkJAQtvbmx5QWRkcmVzcwIFAWkFBHRoaXMBDm9ubHlDYWxjdWxhdG9yAQFpCQELb25seUFkZHJlc3MCBQFpBRdjYWxjdWxhdG9yQWRkcmVzc09yRmFpbA4BaQELc3RyaW5nRW50cnkCA2tleQN2YWwDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQCUCgIFA25pbAUEdW5pdAFpAQxpbnRlZ2VyRW50cnkCA2tleQN2YWwDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFA2tleQUDdmFsBQNuaWwFA2tleQkAlAoCBQNuaWwFBHVuaXQBaQEMYm9vbGVhbkVudHJ5AgNrZXkDdmFsAwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQxCb29sZWFuRW50cnkCBQNrZXkFA3ZhbAUDbmlsBQNrZXkJAJQKAgUDbmlsBQR1bml0AWkBC2JpbmFyeUVudHJ5AgNrZXkDdmFsAwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQtCaW5hcnlFbnRyeQIFA2tleQUDdmFsBQNuaWwFA2tleQkAlAoCBQNuaWwFBHVuaXQBaQELZGVsZXRlRW50cnkBA2tleQMJAQ5vbmx5Q2FsY3VsYXRvcgEFAWkJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBBQNrZXkFA25pbAUDa2V5CQCUCgIFA25pbAUEdW5pdAFpAQdyZWlzc3VlAwdhc3NldElkBmFtb3VudApyZWlzc3VhYmxlAwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQdSZWlzc3VlAwUHYXNzZXRJZAUGYW1vdW50BQpyZWlzc3VhYmxlBQNuaWwFBmFtb3VudAkAlAoCBQNuaWwFBHVuaXQBaQEEYnVybgIHYXNzZXRJZAZhbW91bnQDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIJAMwIAgkBBEJ1cm4CBQdhc3NldElkBQZhbW91bnQFA25pbAUGYW1vdW50CQCUCgIFA25pbAUEdW5pdAFpAQ10cmFuc2ZlckFzc2V0Aw5yZWNpcGllbnRCeXRlcwZhbW91bnQHYXNzZXRJZAMJAQ5vbmx5Q2FsY3VsYXRvcgEFAWkJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFDnJlY2lwaWVudEJ5dGVzBQZhbW91bnQFB2Fzc2V0SWQFA25pbAUGYW1vdW50CQCUCgIFA25pbAUEdW5pdAFpAQ50cmFuc2ZlckFzc2V0cwMOcmVjaXBpZW50Qnl0ZXMKYXNzZXRzTGlzdAthbW91bnRzTGlzdAMJAQ5vbmx5Q2FsY3VsYXRvcgEFAWkKAQ5hZGROZXdUcmFuc2ZlcgIDYWNjC25leHRBc3NldElkBAskdDA2MzY0NjM4OAUDYWNjBAl0cmFuc2ZlcnMIBQskdDA2MzY0NjM4OAJfMQQBaggFCyR0MDYzNjQ2Mzg4Al8yBAtuZXdUcmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQ5yZWNpcGllbnRCeXRlcwkAkQMCBQthbW91bnRzTGlzdAUBagkAkQMCBQphc3NldHNMaXN0BQFqBBB1cGRhdGVkVHJhbnNmZXJzCQDNCAIFCXRyYW5zZmVycwULbmV3VHJhbnNmZXIJAJQKAgUQdXBkYXRlZFRyYW5zZmVycwkAZAIFAWoAAQQLJHQwNjYxNDY2OTUKAAIkbAUKYXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDmFkZE5ld1RyYW5zZmVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBA9hc3NldHNUcmFuc2ZlcnMIBQskdDA2NjE0NjY5NQJfMQQKX2xhc3RJbmRleAgFCyR0MDY2MTQ2Njk1Al8yCQCUCgIFD2Fzc2V0c1RyYW5zZmVycwUEdW5pdAkAlAoCBQNuaWwFBHVuaXQBaQENdHJhbnNmZXJXYXZlcwIOcmVjaXBpZW50Qnl0ZXMGYW1vdW50AwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUOcmVjaXBpZW50Qnl0ZXMFBmFtb3VudAUEdW5pdAUDbmlsBQZhbW91bnQJAJQKAgUDbmlsBQR1bml0AWkBBGluaXQLDGxwQXNzZXRJZFN0chJ0cmVhc3VyeUFkZHJlc3NTdHIUY2FsY3VsYXRvckFkZHJlc3NTdHIObG9ja0FkZHJlc3NTdHIVcG93ZXJDb25maWdBZGRyZXNzU3RyFHBvd2VyQ29udHJhY3RBZGRyZXNzFnBvb2xzRmFjdG9yeUFkZHJlc3NTdHIMcGVyaW9kTGVuZ3RoDGxvY2tEdXJhdGlvbg10cmVhc3VyeVZhbHVlBmFzc2V0cwQLY2hlY2tDYWxsZXIJAQhvbmx5VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUxwQXNzZXRJZAAFDGxwQXNzZXRJZFN0cgkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5VHJlYXN1cnlBZGRyZXNzAAUSdHJlYXN1cnlBZGRyZXNzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRrZXlDYWxjdWxhdG9yQWRkcmVzcwAFFGNhbGN1bGF0b3JBZGRyZXNzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlMb2NrQWRkcmVzcwAFDmxvY2tBZGRyZXNzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlQb3dlckNvbmZpZ0FkZHJlc3MABRVwb3dlckNvbmZpZ0FkZHJlc3NTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBF2tleVBvd2VyQ29udHJhY3RBZGRyZXNzAAUUcG93ZXJDb250cmFjdEFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVBvb2xzRmFjdG9yeUFkZHJlc3MABRZwb29sc0ZhY3RvcnlBZGRyZXNzU3RyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5UGVyaW9kTGVuZ3RoAAUMcGVyaW9kTGVuZ3RoCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5TG9ja0R1cmF0aW9uAAUMbG9ja0R1cmF0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5VHJlYXN1cnlWYWx1ZUJ5UGVyaW9kAQAABQ10cmVhc3VyeVZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQa2V5Q3VycmVudFBlcmlvZAAAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YXJ0SGVpZ2h0QnlQZXJpb2QBAAAFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCCQEJa2V5QXNzZXRzAAkAuQkCBQZhc3NldHMFA1NFUAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBIGNvbW1pdEFmdGVyU3RhcnRXaXRoTG9ja1JvdW5kRm9yBghjb250cmFjdAVjaGlsZAdhZGRyZXNzFGFkZGl0aW9uYWxMb2NrUm91bmRzDnBheW1lbnRBc3NldElkDXBheW1lbnRBbW91bnQDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIFA25pbAkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQhjb250cmFjdAIgY29tbWl0QWZ0ZXJTdGFydFdpdGhMb2NrUm91bmRGb3IJAMwIAgUFY2hpbGQJAMwIAgUHYWRkcmVzcwkAzAgCBRRhZGRpdGlvbmFsTG9ja1JvdW5kcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ5wYXltZW50QXNzZXRJZAUNcGF5bWVudEFtb3VudAUDbmlsCQCUCgIFA25pbAUEdW5pdAFpAQRjYWxsAghmdW5jdGlvbgRhcmdzBAZyZXN1bHQJAP0HBAUXY2FsY3VsYXRvckFkZHJlc3NPckZhaWwFCGZ1bmN0aW9uCQDMCAIIBQFpD2NhbGxlclB1YmxpY0tleQkAzAgCBQRhcmdzBQNuaWwIBQFpCHBheW1lbnRzCQCUCgIFA25pbAUGcmVzdWx0AWkBC3ZvdGVGb3JUeElkAQR0eElkBBNjYWxsZXJBZGRyZXNzU3RyaW5nCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMECWtleVByZWZpeAkBGGtleUFsbG93ZWRUeElkVm90ZVByZWZpeAEFBHR4SWQEBnJlc3VsdAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5QWxsb3dlZFR4SWQABQR0eElkBQNuaWwEEWFsbG93ZWRUeElkT3B0aW9uCQCdCAIFBHRoaXMJAQ5rZXlBbGxvd2VkVHhJZAAEA2VycgkAzAgCAwkAAAIJAMgBAQkA2QQBBQR0eElkBRFUWElEX0JZVEVTX0xFTkdUSAYJAQh0aHJvd0VycgEJAKwCAgUEdHhJZAISIGlzIG5vdCB2YWxpZCB0eElkCQDMCAIDAwkAAAIFEWFsbG93ZWRUeElkT3B0aW9uBQR1bml0BgkBAiE9AgkBBXZhbHVlAQURYWxsb3dlZFR4SWRPcHRpb24FBHR4SWQGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEyBpcyBhbHJlYWR5IGFsbG93ZWQFA25pbAMJAAACBQNlcnIFA2VycgkBDHZvdGVJTlRFUk5BTAQFE2NhbGxlckFkZHJlc3NTdHJpbmcFCWtleVByZWZpeAUGUVVPUlVNBQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABApieVByb3Bvc2FsBAckbWF0Y2gwBRl2b3RpbmdSZXN1bHRBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MED3Byb3Bvc2FsQWRkcmVzcwUHJG1hdGNoMAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQ9wcm9wb3NhbEFkZHJlc3MJARlrZXlQcm9wb3NhbEFsbG93QnJvYWRjYXN0AgUEdGhpcwgFAnR4AmlkBwcECGJ5QWRtaW5zCQAAAggFAnR4AmlkCQDZBAEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleUFsbG93ZWRUeElkAAIABAdieU93bmVyAwkAZwIJAJADAQkBDWdldEFkbWluc0xpc3QABQZRVU9SVU0HCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5AwMFCmJ5UHJvcG9zYWwGBQhieUFkbWlucwYFB2J5T3duZXLlX9U6", "height": 2978461, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8obEV2TDj7P5fE1bhzEkQioMWRqSkP3wpgMJbp2aQRru Next: none Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 6 #-}
1+{-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let separator = "__"
5-
6-let chainId = take(drop(this.bytes, 1), 1)
7-
8-let chainIdT = base58'2T'
9-
10-let chainIdW = base58'2W'
11-
12-func mustAddress (i,address) = if ((i.caller == address))
13- then true
14- else throw("permission denied")
15-
16-
17-func mustThis (i) = mustAddress(i, this)
18-
19-
204 let SEP = "__"
215
226 let WAVES = "WAVES"
7054
7155
7256 func genVotesKeysHelper (a,adminAddress) = {
73- let $t014801504 = a
74- let result = $t014801504._1
75- let prefix = $t014801504._2
57+ let $t011971221 = a
58+ let result = $t011971221._1
59+ let prefix = $t011971221._2
7660 $Tuple2((result :+ keyFullAdminVote(prefix, adminAddress)), prefix)
7761 }
7862
7963
8064 func genVotesKeys (keyPrefix) = {
8165 let adminList = keyAdminAddressList()
82- let $t016511735 = {
66+ let $t013681452 = {
8367 let $l = getAdminsList()
8468 let $s = size($l)
8569 let $acc0 = $Tuple2(nil, keyPrefix)
9377
9478 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
9579 }
96- let result = $t016511735._1
97- let prefix = $t016511735._2
80+ let result = $t013681452._1
81+ let prefix = $t013681452._2
9882 result
9983 }
10084
164148 func keyCalculatorAddress () = "%s__calculatorAddress"
165149
166150
151+func keyLockAddress () = "%s__lockAddress"
152+
153+
167154 func keyPoolsFactoryAddress () = "%s__poolsFactoryAddress"
168155
169156
183170
184171
185172 func keyTreasuryValueByPeriod (period) = makeString(["%s%d", "treasuryValue", toString(period)], SEP)
173+
174+
175+func keyLockDuration () = makeString(["%s", "lockDuration"], SEP)
186176
187177
188178 let calculatorAddressOption = match getString(this, keyCalculatorAddress()) {
320310 func transferAssets (recipientBytes,assetsList,amountsList) = if (onlyCalculator(i))
321311 then {
322312 func addNewTransfer (acc,nextAssetId) = {
323- let $t065416565 = acc
324- let transfers = $t065416565._1
325- let j = $t065416565._2
313+ let $t063646388 = acc
314+ let transfers = $t063646388._1
315+ let j = $t063646388._2
326316 let newTransfer = ScriptTransfer(Address(recipientBytes), amountsList[j], assetsList[j])
327317 let updatedTransfers = (transfers :+ newTransfer)
328318 $Tuple2(updatedTransfers, (j + 1))
329319 }
330320
331- let $t067916872 = {
321+ let $t066146695 = {
332322 let $l = assetsList
333323 let $s = size($l)
334324 let $acc0 = $Tuple2(nil, 0)
342332
343333 $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)
344334 }
345- let assetsTransfers = $t067916872._1
346- let _lastIndex = $t067916872._2
335+ let assetsTransfers = $t066146695._1
336+ let _lastIndex = $t066146695._2
347337 $Tuple2(assetsTransfers, unit)
348338 }
349339 else $Tuple2(nil, unit)
358348
359349
360350 @Callable(i)
361-func init (lpAssetIdStr,treasuryAddressStr,calculatorAddressStr,powerConfigAddressStr,powerContractAddress,poolsFactoryAddressStr,periodLength,treasuryValue,assets) = {
362- let checkCaller = mustThis(i)
351+func init (lpAssetIdStr,treasuryAddressStr,calculatorAddressStr,lockAddressStr,powerConfigAddressStr,powerContractAddress,poolsFactoryAddressStr,periodLength,lockDuration,treasuryValue,assets) = {
352+ let checkCaller = onlyThis(i)
363353 if ((checkCaller == checkCaller))
364- then $Tuple2([StringEntry(keyLpAssetId(), lpAssetIdStr), StringEntry(keyTreasuryAddress(), treasuryAddressStr), StringEntry(keyCalculatorAddress(), calculatorAddressStr), StringEntry(keyPowerConfigAddress(), powerConfigAddressStr), StringEntry(keyPowerContractAddress(), powerContractAddress), StringEntry(keyPoolsFactoryAddress(), poolsFactoryAddressStr), IntegerEntry(keyPeriodLength(), periodLength), IntegerEntry(keyTreasuryValueByPeriod(0), treasuryValue), IntegerEntry(keyCurrentPeriod(), 0), IntegerEntry(keyStartHeightByPeriod(0), height), StringEntry(keyAssets(), makeString(assets, SEP))], unit)
354+ then $Tuple2([StringEntry(keyLpAssetId(), lpAssetIdStr), StringEntry(keyTreasuryAddress(), treasuryAddressStr), StringEntry(keyCalculatorAddress(), calculatorAddressStr), StringEntry(keyLockAddress(), lockAddressStr), StringEntry(keyPowerConfigAddress(), powerConfigAddressStr), StringEntry(keyPowerContractAddress(), powerContractAddress), StringEntry(keyPoolsFactoryAddress(), poolsFactoryAddressStr), IntegerEntry(keyPeriodLength(), periodLength), IntegerEntry(keyLockDuration(), lockDuration), IntegerEntry(keyTreasuryValueByPeriod(0), treasuryValue), IntegerEntry(keyCurrentPeriod(), 0), IntegerEntry(keyStartHeightByPeriod(0), height), StringEntry(keyAssets(), makeString(assets, SEP))], unit)
365355 else throw("Strict value is not equal to itself.")
366356 }
367357
368358
369359
370360 @Callable(i)
371-func commitAfterStartWithLockRoundFor (contract,child,address,additionalLockRounds,paymentAssetId,paymentAmount) = $Tuple2(nil, invoke(addressFromStringValue(contract), "commitAfterStartWithLockRoundFor", [child, address, additionalLockRounds], [AttachedPayment(paymentAssetId, paymentAmount)]))
361+func commitAfterStartWithLockRoundFor (contract,child,address,additionalLockRounds,paymentAssetId,paymentAmount) = if (onlyCalculator(i))
362+ then $Tuple2(nil, invoke(addressFromStringValue(contract), "commitAfterStartWithLockRoundFor", [child, address, additionalLockRounds], [AttachedPayment(paymentAssetId, paymentAmount)]))
363+ else $Tuple2(nil, unit)
372364
373365
374366
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 6 #-}
1+{-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let separator = "__"
5-
6-let chainId = take(drop(this.bytes, 1), 1)
7-
8-let chainIdT = base58'2T'
9-
10-let chainIdW = base58'2W'
11-
12-func mustAddress (i,address) = if ((i.caller == address))
13- then true
14- else throw("permission denied")
15-
16-
17-func mustThis (i) = mustAddress(i, this)
18-
19-
204 let SEP = "__"
215
226 let WAVES = "WAVES"
237
248 let contractFilename = "wxdao_factory.ride"
259
2610 func wrapErr (s) = ((contractFilename + ": ") + s)
2711
2812
2913 func throwErr (s) = throw(wrapErr(s))
3014
3115
3216 func stringToAssetId (s) = if ((s == WAVES))
3317 then unit
3418 else fromBase58String(s)
3519
3620
3721 let ADMIN_LIST_SIZE = 5
3822
3923 let QUORUM = 3
4024
4125 let TXID_BYTES_LENGTH = 32
4226
4327 func keyAllowedTxIdVotePrefix (txId) = makeString(["%s%s%s", "allowTxId", txId], SEP)
4428
4529
4630 func keyFullAdminVote (prefix,adminAddress) = makeString([prefix, adminAddress], SEP)
4731
4832
4933 func keyAdminAddressList () = makeString(["%s", "adminAddressList"], SEP)
5034
5135
5236 func keyAllowedTxId () = makeString(["%s", "txId"], SEP)
5337
5438
5539 func getAdminVote (prefix,admin) = {
5640 let voteKey = keyFullAdminVote(prefix, admin)
5741 valueOrElse(getInteger(voteKey), 0)
5842 }
5943
6044
6145 func getAdminsList () = match getString(this, keyAdminAddressList()) {
6246 case s: String =>
6347 split(s, SEP)
6448 case _ =>
6549 nil
6650 }
6751
6852
6953 func isInAdminList (address) = containsElement(getAdminsList(), address)
7054
7155
7256 func genVotesKeysHelper (a,adminAddress) = {
73- let $t014801504 = a
74- let result = $t014801504._1
75- let prefix = $t014801504._2
57+ let $t011971221 = a
58+ let result = $t011971221._1
59+ let prefix = $t011971221._2
7660 $Tuple2((result :+ keyFullAdminVote(prefix, adminAddress)), prefix)
7761 }
7862
7963
8064 func genVotesKeys (keyPrefix) = {
8165 let adminList = keyAdminAddressList()
82- let $t016511735 = {
66+ let $t013681452 = {
8367 let $l = getAdminsList()
8468 let $s = size($l)
8569 let $acc0 = $Tuple2(nil, keyPrefix)
8670 func $f0_1 ($a,$i) = if (($i >= $s))
8771 then $a
8872 else genVotesKeysHelper($a, $l[$i])
8973
9074 func $f0_2 ($a,$i) = if (($i >= $s))
9175 then $a
9276 else throw("List size exceeds 5")
9377
9478 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
9579 }
96- let result = $t016511735._1
97- let prefix = $t016511735._2
80+ let result = $t013681452._1
81+ let prefix = $t013681452._2
9882 result
9983 }
10084
10185
10286 func countVotesHelper (result,voteKey) = (result + valueOrElse(getInteger(voteKey), 0))
10387
10488
10589 func countVotes (prefix) = {
10690 let votes = genVotesKeys(prefix)
10791 let $l = votes
10892 let $s = size($l)
10993 let $acc0 = 0
11094 func $f0_1 ($a,$i) = if (($i >= $s))
11195 then $a
11296 else countVotesHelper($a, $l[$i])
11397
11498 func $f0_2 ($a,$i) = if (($i >= $s))
11599 then $a
116100 else throw("List size exceeds 5")
117101
118102 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
119103 }
120104
121105
122106 func clearVotesHelper (result,key) = (result :+ DeleteEntry(key))
123107
124108
125109 func getClearVoteEntries (prefix) = {
126110 let votes = genVotesKeys(prefix)
127111 let $l = votes
128112 let $s = size($l)
129113 let $acc0 = nil
130114 func $f0_1 ($a,$i) = if (($i >= $s))
131115 then $a
132116 else clearVotesHelper($a, $l[$i])
133117
134118 func $f0_2 ($a,$i) = if (($i >= $s))
135119 then $a
136120 else throw("List size exceeds 5")
137121
138122 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
139123 }
140124
141125
142126 func voteINTERNAL (callerAddressString,keyPrefix,minVotes,voteResult) = {
143127 let voteKey = keyFullAdminVote(keyPrefix, callerAddressString)
144128 let adminCurrentVote = getAdminVote(keyPrefix, callerAddressString)
145129 let err = if (!(isInAdminList(callerAddressString)))
146130 then throwErr((("Address: " + callerAddressString) + " not in Admin list"))
147131 else if ((adminCurrentVote == 1))
148132 then throwErr((voteKey + " you already voted"))
149133 else unit
150134 if ((err == err))
151135 then {
152136 let votes = countVotes(keyPrefix)
153137 if (((votes + 1) >= minVotes))
154138 then {
155139 let clearVoteEntries = getClearVoteEntries(keyPrefix)
156140 (clearVoteEntries ++ voteResult)
157141 }
158142 else [IntegerEntry(voteKey, 1)]
159143 }
160144 else throw("Strict value is not equal to itself.")
161145 }
162146
163147
164148 func keyCalculatorAddress () = "%s__calculatorAddress"
165149
166150
151+func keyLockAddress () = "%s__lockAddress"
152+
153+
167154 func keyPoolsFactoryAddress () = "%s__poolsFactoryAddress"
168155
169156
170157 func keyTreasuryAddress () = "%s__treasuryAddress"
171158
172159
173160 func keyLpAssetId () = "%s__lpAssetId"
174161
175162
176163 func keyCurrentPeriod () = makeString(["%s", "currentPeriod"], SEP)
177164
178165
179166 func keyStartHeightByPeriod (period) = makeString(["%s%d", "startHeight", toString(period)], SEP)
180167
181168
182169 func keyPeriodLength () = makeString(["%s", "periodLength"], SEP)
183170
184171
185172 func keyTreasuryValueByPeriod (period) = makeString(["%s%d", "treasuryValue", toString(period)], SEP)
173+
174+
175+func keyLockDuration () = makeString(["%s", "lockDuration"], SEP)
186176
187177
188178 let calculatorAddressOption = match getString(this, keyCalculatorAddress()) {
189179 case s: String =>
190180 addressFromString(s)
191181 case _: Unit =>
192182 unit
193183 case _ =>
194184 throw("Match error")
195185 }
196186
197187 let calculatorAddressOrFail = valueOrErrorMessage(calculatorAddressOption, wrapErr("invalid calculator address"))
198188
199189 func keyPowerConfigAddress () = "%s__powerConfigAddress"
200190
201191
202192 func keyPowerContractAddress () = "%s__powerContractAddress"
203193
204194
205195 func keyAssets () = "%s__assets"
206196
207197
208198 func keyVotingResultAddress () = "contract_voting_result"
209199
210200
211201 func keyProposalAllowBroadcast (address,txId) = ((("proposal_allow_broadcast_" + toString(address)) + "_") + toBase58String(txId))
212202
213203
214204 let configAddressOption = match getString(this, keyPowerConfigAddress()) {
215205 case s: String =>
216206 addressFromString(s)
217207 case _: Unit =>
218208 unit
219209 case _ =>
220210 throw("Match error")
221211 }
222212
223213 let votingResultAddressOption = match configAddressOption {
224214 case a: Address =>
225215 match getString(a, keyVotingResultAddress()) {
226216 case s: String =>
227217 addressFromString(s)
228218 case _: Unit =>
229219 unit
230220 case _ =>
231221 throw("Match error")
232222 }
233223 case _: Unit =>
234224 unit
235225 case _ =>
236226 throw("Match error")
237227 }
238228
239229 let votingResultAddressOrFail = valueOrErrorMessage(votingResultAddressOption, wrapErr("invalid voting result address"))
240230
241231 let lpAssetIdOption = match getString(this, keyLpAssetId()) {
242232 case s: String =>
243233 fromBase58String(s)
244234 case _: Unit =>
245235 unit
246236 case _ =>
247237 throw("Match error")
248238 }
249239
250240 let lpAssetIdOrFail = valueOrErrorMessage(lpAssetIdOption, wrapErr("invalid lpAssetId"))
251241
252242 func onlyAddress (i,address) = if ((i.caller == address))
253243 then true
254244 else throwErr("permission denied")
255245
256246
257247 func onlyThis (i) = onlyAddress(i, this)
258248
259249
260250 func onlyCalculator (i) = onlyAddress(i, calculatorAddressOrFail)
261251
262252
263253 @Callable(i)
264254 func stringEntry (key,val) = if (onlyCalculator(i))
265255 then $Tuple2([StringEntry(key, val)], key)
266256 else $Tuple2(nil, unit)
267257
268258
269259
270260 @Callable(i)
271261 func integerEntry (key,val) = if (onlyCalculator(i))
272262 then $Tuple2([IntegerEntry(key, val)], key)
273263 else $Tuple2(nil, unit)
274264
275265
276266
277267 @Callable(i)
278268 func booleanEntry (key,val) = if (onlyCalculator(i))
279269 then $Tuple2([BooleanEntry(key, val)], key)
280270 else $Tuple2(nil, unit)
281271
282272
283273
284274 @Callable(i)
285275 func binaryEntry (key,val) = if (onlyCalculator(i))
286276 then $Tuple2([BinaryEntry(key, val)], key)
287277 else $Tuple2(nil, unit)
288278
289279
290280
291281 @Callable(i)
292282 func deleteEntry (key) = if (onlyCalculator(i))
293283 then $Tuple2([DeleteEntry(key)], key)
294284 else $Tuple2(nil, unit)
295285
296286
297287
298288 @Callable(i)
299289 func reissue (assetId,amount,reissuable) = if (onlyCalculator(i))
300290 then $Tuple2([Reissue(assetId, amount, reissuable)], amount)
301291 else $Tuple2(nil, unit)
302292
303293
304294
305295 @Callable(i)
306296 func burn (assetId,amount) = if (onlyCalculator(i))
307297 then $Tuple2([Burn(assetId, amount)], amount)
308298 else $Tuple2(nil, unit)
309299
310300
311301
312302 @Callable(i)
313303 func transferAsset (recipientBytes,amount,assetId) = if (onlyCalculator(i))
314304 then $Tuple2([ScriptTransfer(Address(recipientBytes), amount, assetId)], amount)
315305 else $Tuple2(nil, unit)
316306
317307
318308
319309 @Callable(i)
320310 func transferAssets (recipientBytes,assetsList,amountsList) = if (onlyCalculator(i))
321311 then {
322312 func addNewTransfer (acc,nextAssetId) = {
323- let $t065416565 = acc
324- let transfers = $t065416565._1
325- let j = $t065416565._2
313+ let $t063646388 = acc
314+ let transfers = $t063646388._1
315+ let j = $t063646388._2
326316 let newTransfer = ScriptTransfer(Address(recipientBytes), amountsList[j], assetsList[j])
327317 let updatedTransfers = (transfers :+ newTransfer)
328318 $Tuple2(updatedTransfers, (j + 1))
329319 }
330320
331- let $t067916872 = {
321+ let $t066146695 = {
332322 let $l = assetsList
333323 let $s = size($l)
334324 let $acc0 = $Tuple2(nil, 0)
335325 func $f0_1 ($a,$i) = if (($i >= $s))
336326 then $a
337327 else addNewTransfer($a, $l[$i])
338328
339329 func $f0_2 ($a,$i) = if (($i >= $s))
340330 then $a
341331 else throw("List size exceeds 10")
342332
343333 $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)
344334 }
345- let assetsTransfers = $t067916872._1
346- let _lastIndex = $t067916872._2
335+ let assetsTransfers = $t066146695._1
336+ let _lastIndex = $t066146695._2
347337 $Tuple2(assetsTransfers, unit)
348338 }
349339 else $Tuple2(nil, unit)
350340
351341
352342
353343 @Callable(i)
354344 func transferWaves (recipientBytes,amount) = if (onlyCalculator(i))
355345 then $Tuple2([ScriptTransfer(Address(recipientBytes), amount, unit)], amount)
356346 else $Tuple2(nil, unit)
357347
358348
359349
360350 @Callable(i)
361-func init (lpAssetIdStr,treasuryAddressStr,calculatorAddressStr,powerConfigAddressStr,powerContractAddress,poolsFactoryAddressStr,periodLength,treasuryValue,assets) = {
362- let checkCaller = mustThis(i)
351+func init (lpAssetIdStr,treasuryAddressStr,calculatorAddressStr,lockAddressStr,powerConfigAddressStr,powerContractAddress,poolsFactoryAddressStr,periodLength,lockDuration,treasuryValue,assets) = {
352+ let checkCaller = onlyThis(i)
363353 if ((checkCaller == checkCaller))
364- then $Tuple2([StringEntry(keyLpAssetId(), lpAssetIdStr), StringEntry(keyTreasuryAddress(), treasuryAddressStr), StringEntry(keyCalculatorAddress(), calculatorAddressStr), StringEntry(keyPowerConfigAddress(), powerConfigAddressStr), StringEntry(keyPowerContractAddress(), powerContractAddress), StringEntry(keyPoolsFactoryAddress(), poolsFactoryAddressStr), IntegerEntry(keyPeriodLength(), periodLength), IntegerEntry(keyTreasuryValueByPeriod(0), treasuryValue), IntegerEntry(keyCurrentPeriod(), 0), IntegerEntry(keyStartHeightByPeriod(0), height), StringEntry(keyAssets(), makeString(assets, SEP))], unit)
354+ then $Tuple2([StringEntry(keyLpAssetId(), lpAssetIdStr), StringEntry(keyTreasuryAddress(), treasuryAddressStr), StringEntry(keyCalculatorAddress(), calculatorAddressStr), StringEntry(keyLockAddress(), lockAddressStr), StringEntry(keyPowerConfigAddress(), powerConfigAddressStr), StringEntry(keyPowerContractAddress(), powerContractAddress), StringEntry(keyPoolsFactoryAddress(), poolsFactoryAddressStr), IntegerEntry(keyPeriodLength(), periodLength), IntegerEntry(keyLockDuration(), lockDuration), IntegerEntry(keyTreasuryValueByPeriod(0), treasuryValue), IntegerEntry(keyCurrentPeriod(), 0), IntegerEntry(keyStartHeightByPeriod(0), height), StringEntry(keyAssets(), makeString(assets, SEP))], unit)
365355 else throw("Strict value is not equal to itself.")
366356 }
367357
368358
369359
370360 @Callable(i)
371-func commitAfterStartWithLockRoundFor (contract,child,address,additionalLockRounds,paymentAssetId,paymentAmount) = $Tuple2(nil, invoke(addressFromStringValue(contract), "commitAfterStartWithLockRoundFor", [child, address, additionalLockRounds], [AttachedPayment(paymentAssetId, paymentAmount)]))
361+func commitAfterStartWithLockRoundFor (contract,child,address,additionalLockRounds,paymentAssetId,paymentAmount) = if (onlyCalculator(i))
362+ then $Tuple2(nil, invoke(addressFromStringValue(contract), "commitAfterStartWithLockRoundFor", [child, address, additionalLockRounds], [AttachedPayment(paymentAssetId, paymentAmount)]))
363+ else $Tuple2(nil, unit)
372364
373365
374366
375367 @Callable(i)
376368 func call (function,args) = {
377369 let result = reentrantInvoke(calculatorAddressOrFail, function, [i.callerPublicKey, args], i.payments)
378370 $Tuple2(nil, result)
379371 }
380372
381373
382374
383375 @Callable(i)
384376 func voteForTxId (txId) = {
385377 let callerAddressString = toBase58String(i.caller.bytes)
386378 let keyPrefix = keyAllowedTxIdVotePrefix(txId)
387379 let result = [StringEntry(keyAllowedTxId(), txId)]
388380 let allowedTxIdOption = getString(this, keyAllowedTxId())
389381 let err = [if ((size(fromBase58String(txId)) == TXID_BYTES_LENGTH))
390382 then true
391383 else throwErr((txId + " is not valid txId")), if (if ((allowedTxIdOption == unit))
392384 then true
393385 else (value(allowedTxIdOption) != txId))
394386 then true
395387 else throwErr((txId + " is already allowed"))]
396388 if ((err == err))
397389 then voteINTERNAL(callerAddressString, keyPrefix, QUORUM, result)
398390 else throw("Strict value is not equal to itself.")
399391 }
400392
401393
402394 @Verifier(tx)
403395 func verify () = {
404396 let byProposal = match votingResultAddressOption {
405397 case proposalAddress: Address =>
406398 valueOrElse(getBoolean(proposalAddress, keyProposalAllowBroadcast(this, tx.id)), false)
407399 case _ =>
408400 false
409401 }
410402 let byAdmins = (tx.id == fromBase58String(valueOrElse(getString(this, keyAllowedTxId()), "")))
411403 let byOwner = if ((size(getAdminsList()) >= QUORUM))
412404 then false
413405 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
414406 if (if (byProposal)
415407 then true
416408 else byAdmins)
417409 then true
418410 else byOwner
419411 }
420412

github/deemru/w8io/026f985 
47.59 ms