tx · AJitddCyvvx7w6fnSJrVnNy6sH4Gb78aCAYzGk828oZr

3NC9dyrMheMhHXcaeCXkuKqaTkLFa5Ahzd2:  -0.01400000 Waves

2023.11.14 08:58 [2842617] smart account 3NC9dyrMheMhHXcaeCXkuKqaTkLFa5Ahzd2 > SELF 0.00000000 Waves

{ "type": 13, "id": "AJitddCyvvx7w6fnSJrVnNy6sH4Gb78aCAYzGk828oZr", "fee": 1400000, "feeAssetId": null, "timestamp": 1699941627897, "version": 2, "chainId": 84, "sender": "3NC9dyrMheMhHXcaeCXkuKqaTkLFa5Ahzd2", "senderPublicKey": "8fS13zFL61wF3maPyR7vTayhasoH9StToqd7wGuecHXN", "proofs": [ "3B5itCb15jkfi9xjb21vi9mikgmMSux654HBTtmyy1rpj7ABDAjKh6vXFfZMTXiSnSuK95KNbnfkkC4t6N1b5zcG" ], "script": "base64:BgJgCAISBAoCCAgSBAoCCAESBAoCCAQSBAoCCAISAwoBCBIFCgMCAQQSBAoCAgESBQoDAgECEgUKAwISERIECgICARIJCgcICAgIAQEYEggKBggICAECARIECgIIGBIDCgEIMwAJc2VwYXJhdG9yAgJfXwAHY2hhaW5JZAkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQAIY2hhaW5JZFQBAVQACGNoYWluSWRXAQFXAQttdXN0QWRkcmVzcwIBaQdhZGRyZXNzAwkAAAIIBQFpBmNhbGxlcgUHYWRkcmVzcwYJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAEIbXVzdFRoaXMBAWkJAQttdXN0QWRkcmVzcwIFAWkFBHRoaXMAA1NFUAICX18ABVdBVkVTAgVXQVZFUwAQY29udHJhY3RGaWxlbmFtZQISd3hkYW9fZmFjdG9yeS5yaWRlAQd3cmFwRXJyAQFzCQCsAgIJAKwCAgUQY29udHJhY3RGaWxlbmFtZQICOiAFAXMBCHRocm93RXJyAQFzCQACAQkBB3dyYXBFcnIBBQFzAQ9zdHJpbmdUb0Fzc2V0SWQBAXMDCQAAAgUBcwUFV0FWRVMFBHVuaXQJANkEAQUBcwAPQURNSU5fTElTVF9TSVpFAAUABlFVT1JVTQADABFUWElEX0JZVEVTX0xFTkdUSAAgARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIJYWxsb3dUeElkCQDMCAIFBHR4SWQFA25pbAUDU0VQARBrZXlGdWxsQWRtaW5Wb3RlAgZwcmVmaXgMYWRtaW5BZGRyZXNzCQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVABE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDmtleUFsbG93ZWRUeElkAAkAuQkCCQDMCAICAiVzCQDMCAICBHR4SWQFA25pbAUDU0VQAQxnZXRBZG1pblZvdGUCBnByZWZpeAVhZG1pbgQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAENZ2V0QWRtaW5zTGlzdAAEByRtYXRjaDAJAJ0IAgUEdGhpcwkBE2tleUFkbWluQWRkcmVzc0xpc3QAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAtQkCBQFzBQNTRVAFA25pbAENaXNJbkFkbWluTGlzdAEHYWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwESZ2VuVm90ZXNLZXlzSGVscGVyAgFhDGFkbWluQWRkcmVzcwQLJHQwMTQ4MDE1MDQFAWEEBnJlc3VsdAgFCyR0MDE0ODAxNTA0Al8xBAZwcmVmaXgIBQskdDAxNDgwMTUwNAJfMgkAlAoCCQDNCAIFBnJlc3VsdAkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFDGFkbWluQWRkcmVzcwUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQETa2V5QWRtaW5BZGRyZXNzTGlzdAAECyR0MDE2NTExNzM1CgACJGwJAQ1nZXRBZG1pbnNMaXN0AAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQlrZXlQcmVmaXgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdlblZvdGVzS2V5c0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEBnJlc3VsdAgFCyR0MDE2NTExNzM1Al8xBAZwcmVmaXgIBQskdDAxNjUxMTczNQJfMgUGcmVzdWx0ARBjb3VudFZvdGVzSGVscGVyAgZyZXN1bHQHdm90ZUtleQkAZAIFBnJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABCmNvdW50Vm90ZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFARBjbGVhclZvdGVzSGVscGVyAgZyZXN1bHQDa2V5CQDNCAIFBnJlc3VsdAkBC0RlbGV0ZUVudHJ5AQUDa2V5ARNnZXRDbGVhclZvdGVFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjbGVhclZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEMdm90ZUlOVEVSTkFMBBNjYWxsZXJBZGRyZXNzU3RyaW5nCWtleVByZWZpeAhtaW5Wb3Rlcwp2b3RlUmVzdWx0BAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQQYWRtaW5DdXJyZW50Vm90ZQkBDGdldEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQDZXJyAwkBASEBCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCEiBub3QgaW4gQWRtaW4gbGlzdAMJAAACBRBhZG1pbkN1cnJlbnRWb3RlAAEJAQh0aHJvd0VycgEJAKwCAgUHdm90ZUtleQISIHlvdSBhbHJlYWR5IHZvdGVkBQR1bml0AwkAAAIFA2VycgUDZXJyBAV2b3RlcwkBCmNvdW50Vm90ZXMBBQlrZXlQcmVmaXgDCQBnAgkAZAIFBXZvdGVzAAEFCG1pblZvdGVzBBBjbGVhclZvdGVFbnRyaWVzCQETZ2V0Q2xlYXJWb3RlRW50cmllcwEFCWtleVByZWZpeAkAzggCBRBjbGVhclZvdGVFbnRyaWVzBQp2b3RlUmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd2b3RlS2V5AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEUa2V5Q2FsY3VsYXRvckFkZHJlc3MAAhUlc19fY2FsY3VsYXRvckFkZHJlc3MBDGtleUxwQXNzZXRJZAACDSVzX19scEFzc2V0SWQBEGtleUN1cnJlbnRQZXJpb2QACQC5CQIJAMwIAgICJXMJAMwIAgINY3VycmVudFBlcmlvZAUDbmlsBQNTRVABFmtleVN0YXJ0SGVpZ2h0QnlQZXJpb2QBBnBlcmlvZAkAuQkCCQDMCAICBCVzJWQJAMwIAgILc3RhcnRIZWlnaHQJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQAQ9rZXlQZXJpb2RMZW5ndGgACQC5CQIJAMwIAgICJXMJAMwIAgIMcGVyaW9kTGVuZ3RoBQNuaWwFA1NFUAEYa2V5VHJlYXN1cnlWYWx1ZUJ5UGVyaW9kAQZwZXJpb2QJALkJAgkAzAgCAgQlcyVkCQDMCAICDXRyZWFzdXJ5VmFsdWUJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQARBrZXlUcmVhc3VyeVZhbHVlAAkAuQkCCQDMCAICAiVzCQDMCAICDXRyZWFzdXJ5VmFsdWUFA25pbAUDU0VQABdjYWxjdWxhdG9yQWRkcmVzc09wdGlvbgQHJG1hdGNoMAkAnQgCBQR0aGlzCQEUa2V5Q2FsY3VsYXRvckFkZHJlc3MAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAXY2FsY3VsYXRvckFkZHJlc3NPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUXY2FsY3VsYXRvckFkZHJlc3NPcHRpb24JAQd3cmFwRXJyAQIaaW52YWxpZCBjYWxjdWxhdG9yIGFkZHJlc3MBFWtleVBvd2VyQ29uZmlnQWRkcmVzcwACFiVzX19wb3dlckNvbmZpZ0FkZHJlc3MBF2tleVBvd2VyQ29udHJhY3RBZGRyZXNzAAIYJXNfX3Bvd2VyQ29udHJhY3RBZGRyZXNzAQlrZXlBc3NldHMAAgolc19fYXNzZXRzARZrZXlWb3RpbmdSZXN1bHRBZGRyZXNzAAIWY29udHJhY3Rfdm90aW5nX3Jlc3VsdAEZa2V5UHJvcG9zYWxBbGxvd0Jyb2FkY2FzdAIHYWRkcmVzcwR0eElkCQCsAgIJAKwCAgkArAICAhlwcm9wb3NhbF9hbGxvd19icm9hZGNhc3RfCQClCAEFB2FkZHJlc3MCAV8JANgEAQUEdHhJZAATY29uZmlnQWRkcmVzc09wdGlvbgQHJG1hdGNoMAkAnQgCBQR0aGlzCQEVa2V5UG93ZXJDb25maWdBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAGXZvdGluZ1Jlc3VsdEFkZHJlc3NPcHRpb24EByRtYXRjaDAFE2NvbmZpZ0FkZHJlc3NPcHRpb24DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAQHJG1hdGNoMQkAnQgCBQFhCQEWa2V5Vm90aW5nUmVzdWx0QWRkcmVzcwADCQABAgUHJG1hdGNoMQIGU3RyaW5nBAFzBQckbWF0Y2gxCQCmCAEFAXMDCQABAgUHJG1hdGNoMQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAZdm90aW5nUmVzdWx0QWRkcmVzc09yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRl2b3RpbmdSZXN1bHRBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECHWludmFsaWQgdm90aW5nIHJlc3VsdCBhZGRyZXNzAA9scEFzc2V0SWRPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwkBDGtleUxwQXNzZXRJZAADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAA9scEFzc2V0SWRPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUPbHBBc3NldElkT3B0aW9uCQEHd3JhcEVycgECEWludmFsaWQgbHBBc3NldElkAQtvbmx5QWRkcmVzcwIBaQdhZGRyZXNzAwkAAAIIBQFpBmNhbGxlcgUHYWRkcmVzcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkAQhvbmx5VGhpcwEBaQkBC29ubHlBZGRyZXNzAgUBaQUEdGhpcwEOb25seUNhbGN1bGF0b3IBAWkJAQtvbmx5QWRkcmVzcwIFAWkFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsDgFpAQtzdHJpbmdFbnRyeQIDa2V5A3ZhbAMJAQ5vbmx5Q2FsY3VsYXRvcgEFAWkJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsBQNrZXkJAJQKAgUDbmlsBQR1bml0AWkBDGludGVnZXJFbnRyeQIDa2V5A3ZhbAMJAQ5vbmx5Q2FsY3VsYXRvcgEFAWkJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQCUCgIFA25pbAUEdW5pdAFpAQxib29sZWFuRW50cnkCA2tleQN2YWwDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIJAMwIAgkBDEJvb2xlYW5FbnRyeQIFA2tleQUDdmFsBQNuaWwFA2tleQkAlAoCBQNuaWwFBHVuaXQBaQELYmluYXJ5RW50cnkCA2tleQN2YWwDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIJAMwIAgkBC0JpbmFyeUVudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQCUCgIFA25pbAUEdW5pdAFpAQtkZWxldGVFbnRyeQEDa2V5AwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEFA2tleQUDbmlsBQNrZXkJAJQKAgUDbmlsBQR1bml0AWkBB3JlaXNzdWUDB2Fzc2V0SWQGYW1vdW50CnJlaXNzdWFibGUDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIJAMwIAgkBB1JlaXNzdWUDBQdhc3NldElkBQZhbW91bnQFCnJlaXNzdWFibGUFA25pbAUGYW1vdW50CQCUCgIFA25pbAUEdW5pdAFpAQRidXJuAgdhc3NldElkBmFtb3VudAMJAQ5vbmx5Q2FsY3VsYXRvcgEFAWkJAJQKAgkAzAgCCQEEQnVybgIFB2Fzc2V0SWQFBmFtb3VudAUDbmlsBQZhbW91bnQJAJQKAgUDbmlsBQR1bml0AWkBDXRyYW5zZmVyQXNzZXQDDnJlY2lwaWVudEJ5dGVzBmFtb3VudAdhc3NldElkAwkBDm9ubHlDYWxjdWxhdG9yAQUBaQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUOcmVjaXBpZW50Qnl0ZXMFBmFtb3VudAUHYXNzZXRJZAUDbmlsBQZhbW91bnQJAJQKAgUDbmlsBQR1bml0AWkBDnRyYW5zZmVyQXNzZXRzAw5yZWNpcGllbnRCeXRlcwphc3NldHNMaXN0C2Ftb3VudHNMaXN0AwkBDm9ubHlDYWxjdWxhdG9yAQUBaQoBDmFkZE5ld1RyYW5zZmVyAgNhY2MLbmV4dEFzc2V0SWQECyR0MDY0OTk2NTIzBQNhY2MECXRyYW5zZmVycwgFCyR0MDY0OTk2NTIzAl8xBAFqCAULJHQwNjQ5OTY1MjMCXzIEC25ld1RyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFDnJlY2lwaWVudEJ5dGVzCQCRAwIFC2Ftb3VudHNMaXN0BQFqCQCRAwIFCmFzc2V0c0xpc3QFAWoEEHVwZGF0ZWRUcmFuc2ZlcnMJAM0IAgUJdHJhbnNmZXJzBQtuZXdUcmFuc2ZlcgkAlAoCBRB1cGRhdGVkVHJhbnNmZXJzCQBkAgUBagABBAskdDA2NzQ5NjgzMAoAAiRsBQphc3NldHNMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEOYWRkTmV3VHJhbnNmZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoED2Fzc2V0c1RyYW5zZmVycwgFCyR0MDY3NDk2ODMwAl8xBApfbGFzdEluZGV4CAULJHQwNjc0OTY4MzACXzIJAJQKAgUPYXNzZXRzVHJhbnNmZXJzBQR1bml0CQCUCgIFA25pbAUEdW5pdAFpAQ10cmFuc2ZlcldhdmVzAg5yZWNpcGllbnRCeXRlcwZhbW91bnQDCQEOb25seUNhbGN1bGF0b3IBBQFpCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQ5yZWNpcGllbnRCeXRlcwUGYW1vdW50BQR1bml0BQNuaWwFBmFtb3VudAkAlAoCBQNuaWwFBHVuaXQBaQEEaW5pdAcMbHBBc3NldElkU3RyFGNhbGN1bGF0b3JBZGRyZXNzU3RyFXBvd2VyQ29uZmlnQWRkcmVzc1N0chRwb3dlckNvbnRyYWN0QWRkcmVzcwxwZXJpb2RMZW5ndGgNdHJlYXN1cnlWYWx1ZQZhc3NldHMEC2NoZWNrQ2FsbGVyCQEIbXVzdFRoaXMBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlMcEFzc2V0SWQABQxscEFzc2V0SWRTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleUNhbGN1bGF0b3JBZGRyZXNzAAUUY2FsY3VsYXRvckFkZHJlc3NTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleVBvd2VyQ29uZmlnQWRkcmVzcwAFFXBvd2VyQ29uZmlnQWRkcmVzc1N0cgkAzAgCCQELU3RyaW5nRW50cnkCCQEXa2V5UG93ZXJDb250cmFjdEFkZHJlc3MABRRwb3dlckNvbnRyYWN0QWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVBlcmlvZExlbmd0aAAFDHBlcmlvZExlbmd0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleVRyZWFzdXJ5VmFsdWUABQ10cmVhc3VyeVZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5VHJlYXN1cnlWYWx1ZUJ5UGVyaW9kAQAABQ10cmVhc3VyeVZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQa2V5Q3VycmVudFBlcmlvZAAAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YXJ0SGVpZ2h0QnlQZXJpb2QBAAAFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCCQEJa2V5QXNzZXRzAAkAuQkCBQZhc3NldHMFA1NFUAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBIGNvbW1pdEFmdGVyU3RhcnRXaXRoTG9ja1JvdW5kRm9yBghjb250cmFjdAVjaGlsZAdhZGRyZXNzFGFkZGl0aW9uYWxMb2NrUm91bmRzDnBheW1lbnRBc3NldElkDXBheW1lbnRBbW91bnQJAJQKAgUDbmlsCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCGNvbnRyYWN0AiBjb21taXRBZnRlclN0YXJ0V2l0aExvY2tSb3VuZEZvcgkAzAgCBQVjaGlsZAkAzAgCBQdhZGRyZXNzCQDMCAIFFGFkZGl0aW9uYWxMb2NrUm91bmRzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDnBheW1lbnRBc3NldElkBQ1wYXltZW50QW1vdW50BQNuaWwBaQEEY2FsbAIIZnVuY3Rpb24EYXJncwQGcmVzdWx0CQD9BwQFF2NhbGN1bGF0b3JBZGRyZXNzT3JGYWlsBQhmdW5jdGlvbgkAzAgCCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAMwIAgUEYXJncwUDbmlsCAUBaQhwYXltZW50cwkAlAoCBQNuaWwFBnJlc3VsdAFpAQt2b3RlRm9yVHhJZAEEdHhJZAQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAlrZXlQcmVmaXgJARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBQR0eElkBAZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUFsbG93ZWRUeElkAAUEdHhJZAUDbmlsBBFhbGxvd2VkVHhJZE9wdGlvbgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQABANlcnIJAMwIAgMJAAACCQDIAQEJANkEAQUEdHhJZAURVFhJRF9CWVRFU19MRU5HVEgGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEiBpcyBub3QgdmFsaWQgdHhJZAkAzAgCAwMJAAACBRFhbGxvd2VkVHhJZE9wdGlvbgUEdW5pdAYJAQIhPQIJAQV2YWx1ZQEFEWFsbG93ZWRUeElkT3B0aW9uBQR0eElkBgkBCHRocm93RXJyAQkArAICBQR0eElkAhMgaXMgYWxyZWFkeSBhbGxvd2VkBQNuaWwDCQAAAgUDZXJyBQNlcnIJAQx2b3RlSU5URVJOQUwEBRNjYWxsZXJBZGRyZXNzU3RyaW5nBQlrZXlQcmVmaXgFBlFVT1JVTQUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQKYnlQcm9wb3NhbAQHJG1hdGNoMAUZdm90aW5nUmVzdWx0QWRkcmVzc09wdGlvbgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBA9wcm9wb3NhbEFkZHJlc3MFByRtYXRjaDAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUPcHJvcG9zYWxBZGRyZXNzCQEZa2V5UHJvcG9zYWxBbGxvd0Jyb2FkY2FzdAIFBHRoaXMIBQJ0eAJpZAcHBAhieUFkbWlucwkAAAIIBQJ0eAJpZAkA2QQBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlBbGxvd2VkVHhJZAACAAQHYnlPd25lcgMJAGcCCQCQAwEJAQ1nZXRBZG1pbnNMaXN0AAUGUVVPUlVNBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQMDBQpieVByb3Bvc2FsBgUIYnlBZG1pbnMGBQdieU93bmVyEfPOxg==", "height": 2842617, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Gmz6Hcc8DuVxChMEFf1U5HgHH2sW8TvM7av7rnq8na7j Next: 8obEV2TDj7P5fE1bhzEkQioMWRqSkP3wpgMJbp2aQRru Diff:
OldNewDifferences
161161 }
162162
163163
164-func keyCalculatorAddress () = "%s__calculator"
164+func keyCalculatorAddress () = "%s__calculatorAddress"
165165
166166
167167 func keyLpAssetId () = "%s__lpAssetId"
168168
169169
170-func currentPeriod () = makeString(["%s", "currentPeriod"], SEP)
170+func keyCurrentPeriod () = makeString(["%s", "currentPeriod"], SEP)
171171
172172
173-func startHeightByPeriod (period) = makeString(["%s%d", "startHeight", toString(period)], SEP)
173+func keyStartHeightByPeriod (period) = makeString(["%s%d", "startHeight", toString(period)], SEP)
174174
175175
176-func periodLength () = makeString(["%s", "periodLength"], SEP)
176+func keyPeriodLength () = makeString(["%s", "periodLength"], SEP)
177177
178178
179-func treasuryValueByPeriod (period) = makeString(["%s%d", "treasuryValue", toString(period)], SEP)
179+func keyTreasuryValueByPeriod (period) = makeString(["%s%d", "treasuryValue", toString(period)], SEP)
180180
181181
182-func treasuryValue () = makeString(["%s", "treasuryValue"], SEP)
182+func keyTreasuryValue () = makeString(["%s", "treasuryValue"], SEP)
183183
184184
185185 let calculatorAddressOption = match getString(this, keyCalculatorAddress()) {
193193
194194 let calculatorAddressOrFail = valueOrErrorMessage(calculatorAddressOption, wrapErr("invalid calculator address"))
195195
196-func keyConfigAddress () = "%s__config"
196+func keyPowerConfigAddress () = "%s__powerConfigAddress"
197197
198198
199-func keyPowerContractAddress () = "%s__powerContract"
199+func keyPowerContractAddress () = "%s__powerContractAddress"
200+
201+
202+func keyAssets () = "%s__assets"
200203
201204
202205 func keyVotingResultAddress () = "contract_voting_result"
205208 func keyProposalAllowBroadcast (address,txId) = ((("proposal_allow_broadcast_" + toString(address)) + "_") + toBase58String(txId))
206209
207210
208-let configAddressOption = match getString(this, keyConfigAddress()) {
211+let configAddressOption = match getString(this, keyPowerConfigAddress()) {
209212 case s: String =>
210213 addressFromString(s)
211214 case _: Unit =>
290293
291294
292295 @Callable(i)
293-func reissue (amount) = if (onlyCalculator(i))
294- then $Tuple2([Reissue(lpAssetIdOrFail, amount, true)], amount)
296+func reissue (assetId,amount,reissuable) = if (onlyCalculator(i))
297+ then $Tuple2([Reissue(assetId, amount, reissuable)], amount)
295298 else $Tuple2(nil, unit)
296299
297300
298301
299302 @Callable(i)
300-func burn (amount) = if (onlyCalculator(i))
301- then $Tuple2([Burn(lpAssetIdOrFail, amount)], amount)
303+func burn (assetId,amount) = if (onlyCalculator(i))
304+ then $Tuple2([Burn(assetId, amount)], amount)
302305 else $Tuple2(nil, unit)
303306
304307
314317 func transferAssets (recipientBytes,assetsList,amountsList) = if (onlyCalculator(i))
315318 then {
316319 func addNewTransfer (acc,nextAssetId) = {
317- let $t063586382 = acc
318- let transfers = $t063586382._1
319- let j = $t063586382._2
320- let newTransfer = ScriptTransfer(Address(recipientBytes), parseIntValue(amountsList[j]), stringToAssetId(assetsList[j]))
320+ let $t064996523 = acc
321+ let transfers = $t064996523._1
322+ let j = $t064996523._2
323+ let newTransfer = ScriptTransfer(Address(recipientBytes), amountsList[j], assetsList[j])
321324 let updatedTransfers = (transfers :+ newTransfer)
322325 $Tuple2(updatedTransfers, (j + 1))
323326 }
324327
325- let $t066426723 = {
328+ let $t067496830 = {
326329 let $l = assetsList
327330 let $s = size($l)
328331 let $acc0 = $Tuple2(nil, 0)
336339
337340 $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)
338341 }
339- let assetsTransfers = $t066426723._1
340- let _lastIndex = $t066426723._2
342+ let assetsTransfers = $t067496830._1
343+ let _lastIndex = $t067496830._2
341344 $Tuple2(assetsTransfers, unit)
342345 }
343346 else $Tuple2(nil, unit)
352355
353356
354357 @Callable(i)
355-func commitAfterStartWithLockRoundFor (contract,child,address,additionalLockRounds,paymentAssetId,paymentAmount) = $Tuple2(nil, invoke(addressFromStringValue(contract), "commitAfterStartWithLockRoundFor", [child, address, additionalLockRounds], [AttachedPayment(paymentAssetId, paymentAmount)]))
358+func init (lpAssetIdStr,calculatorAddressStr,powerConfigAddressStr,powerContractAddress,periodLength,treasuryValue,assets) = {
359+ let checkCaller = mustThis(i)
360+ if ((checkCaller == checkCaller))
361+ then $Tuple2([StringEntry(keyLpAssetId(), lpAssetIdStr), StringEntry(keyCalculatorAddress(), calculatorAddressStr), StringEntry(keyPowerConfigAddress(), powerConfigAddressStr), StringEntry(keyPowerContractAddress(), powerContractAddress), IntegerEntry(keyPeriodLength(), periodLength), IntegerEntry(keyTreasuryValue(), treasuryValue), IntegerEntry(keyTreasuryValueByPeriod(0), treasuryValue), IntegerEntry(keyCurrentPeriod(), 0), IntegerEntry(keyStartHeightByPeriod(0), height), StringEntry(keyAssets(), makeString(assets, SEP))], unit)
362+ else throw("Strict value is not equal to itself.")
363+ }
356364
357365
358366
359367 @Callable(i)
360-func init (calculatorAddressStr,powerConfigAddressStr,powerContractAddressStr) = {
361- let checkCaller = mustThis(i)
362- if ((checkCaller == checkCaller))
363- then $Tuple2([StringEntry(keyCalculatorAddress(), calculatorAddressStr), StringEntry(keyConfigAddress(), powerConfigAddressStr), StringEntry(keyPowerContractAddress(), powerContractAddressStr)], unit)
364- else throw("Strict value is not equal to itself.")
365- }
368+func commitAfterStartWithLockRoundFor (contract,child,address,additionalLockRounds,paymentAssetId,paymentAmount) = $Tuple2(nil, invoke(addressFromStringValue(contract), "commitAfterStartWithLockRoundFor", [child, address, additionalLockRounds], [AttachedPayment(paymentAssetId, paymentAmount)]))
366369
367370
368371
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "__"
55
66 let chainId = take(drop(this.bytes, 1), 1)
77
88 let chainIdT = base58'2T'
99
1010 let chainIdW = base58'2W'
1111
1212 func mustAddress (i,address) = if ((i.caller == address))
1313 then true
1414 else throw("permission denied")
1515
1616
1717 func mustThis (i) = mustAddress(i, this)
1818
1919
2020 let SEP = "__"
2121
2222 let WAVES = "WAVES"
2323
2424 let contractFilename = "wxdao_factory.ride"
2525
2626 func wrapErr (s) = ((contractFilename + ": ") + s)
2727
2828
2929 func throwErr (s) = throw(wrapErr(s))
3030
3131
3232 func stringToAssetId (s) = if ((s == WAVES))
3333 then unit
3434 else fromBase58String(s)
3535
3636
3737 let ADMIN_LIST_SIZE = 5
3838
3939 let QUORUM = 3
4040
4141 let TXID_BYTES_LENGTH = 32
4242
4343 func keyAllowedTxIdVotePrefix (txId) = makeString(["%s%s%s", "allowTxId", txId], SEP)
4444
4545
4646 func keyFullAdminVote (prefix,adminAddress) = makeString([prefix, adminAddress], SEP)
4747
4848
4949 func keyAdminAddressList () = makeString(["%s", "adminAddressList"], SEP)
5050
5151
5252 func keyAllowedTxId () = makeString(["%s", "txId"], SEP)
5353
5454
5555 func getAdminVote (prefix,admin) = {
5656 let voteKey = keyFullAdminVote(prefix, admin)
5757 valueOrElse(getInteger(voteKey), 0)
5858 }
5959
6060
6161 func getAdminsList () = match getString(this, keyAdminAddressList()) {
6262 case s: String =>
6363 split(s, SEP)
6464 case _ =>
6565 nil
6666 }
6767
6868
6969 func isInAdminList (address) = containsElement(getAdminsList(), address)
7070
7171
7272 func genVotesKeysHelper (a,adminAddress) = {
7373 let $t014801504 = a
7474 let result = $t014801504._1
7575 let prefix = $t014801504._2
7676 $Tuple2((result :+ keyFullAdminVote(prefix, adminAddress)), prefix)
7777 }
7878
7979
8080 func genVotesKeys (keyPrefix) = {
8181 let adminList = keyAdminAddressList()
8282 let $t016511735 = {
8383 let $l = getAdminsList()
8484 let $s = size($l)
8585 let $acc0 = $Tuple2(nil, keyPrefix)
8686 func $f0_1 ($a,$i) = if (($i >= $s))
8787 then $a
8888 else genVotesKeysHelper($a, $l[$i])
8989
9090 func $f0_2 ($a,$i) = if (($i >= $s))
9191 then $a
9292 else throw("List size exceeds 5")
9393
9494 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
9595 }
9696 let result = $t016511735._1
9797 let prefix = $t016511735._2
9898 result
9999 }
100100
101101
102102 func countVotesHelper (result,voteKey) = (result + valueOrElse(getInteger(voteKey), 0))
103103
104104
105105 func countVotes (prefix) = {
106106 let votes = genVotesKeys(prefix)
107107 let $l = votes
108108 let $s = size($l)
109109 let $acc0 = 0
110110 func $f0_1 ($a,$i) = if (($i >= $s))
111111 then $a
112112 else countVotesHelper($a, $l[$i])
113113
114114 func $f0_2 ($a,$i) = if (($i >= $s))
115115 then $a
116116 else throw("List size exceeds 5")
117117
118118 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
119119 }
120120
121121
122122 func clearVotesHelper (result,key) = (result :+ DeleteEntry(key))
123123
124124
125125 func getClearVoteEntries (prefix) = {
126126 let votes = genVotesKeys(prefix)
127127 let $l = votes
128128 let $s = size($l)
129129 let $acc0 = nil
130130 func $f0_1 ($a,$i) = if (($i >= $s))
131131 then $a
132132 else clearVotesHelper($a, $l[$i])
133133
134134 func $f0_2 ($a,$i) = if (($i >= $s))
135135 then $a
136136 else throw("List size exceeds 5")
137137
138138 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
139139 }
140140
141141
142142 func voteINTERNAL (callerAddressString,keyPrefix,minVotes,voteResult) = {
143143 let voteKey = keyFullAdminVote(keyPrefix, callerAddressString)
144144 let adminCurrentVote = getAdminVote(keyPrefix, callerAddressString)
145145 let err = if (!(isInAdminList(callerAddressString)))
146146 then throwErr((("Address: " + callerAddressString) + " not in Admin list"))
147147 else if ((adminCurrentVote == 1))
148148 then throwErr((voteKey + " you already voted"))
149149 else unit
150150 if ((err == err))
151151 then {
152152 let votes = countVotes(keyPrefix)
153153 if (((votes + 1) >= minVotes))
154154 then {
155155 let clearVoteEntries = getClearVoteEntries(keyPrefix)
156156 (clearVoteEntries ++ voteResult)
157157 }
158158 else [IntegerEntry(voteKey, 1)]
159159 }
160160 else throw("Strict value is not equal to itself.")
161161 }
162162
163163
164-func keyCalculatorAddress () = "%s__calculator"
164+func keyCalculatorAddress () = "%s__calculatorAddress"
165165
166166
167167 func keyLpAssetId () = "%s__lpAssetId"
168168
169169
170-func currentPeriod () = makeString(["%s", "currentPeriod"], SEP)
170+func keyCurrentPeriod () = makeString(["%s", "currentPeriod"], SEP)
171171
172172
173-func startHeightByPeriod (period) = makeString(["%s%d", "startHeight", toString(period)], SEP)
173+func keyStartHeightByPeriod (period) = makeString(["%s%d", "startHeight", toString(period)], SEP)
174174
175175
176-func periodLength () = makeString(["%s", "periodLength"], SEP)
176+func keyPeriodLength () = makeString(["%s", "periodLength"], SEP)
177177
178178
179-func treasuryValueByPeriod (period) = makeString(["%s%d", "treasuryValue", toString(period)], SEP)
179+func keyTreasuryValueByPeriod (period) = makeString(["%s%d", "treasuryValue", toString(period)], SEP)
180180
181181
182-func treasuryValue () = makeString(["%s", "treasuryValue"], SEP)
182+func keyTreasuryValue () = makeString(["%s", "treasuryValue"], SEP)
183183
184184
185185 let calculatorAddressOption = match getString(this, keyCalculatorAddress()) {
186186 case s: String =>
187187 addressFromString(s)
188188 case _: Unit =>
189189 unit
190190 case _ =>
191191 throw("Match error")
192192 }
193193
194194 let calculatorAddressOrFail = valueOrErrorMessage(calculatorAddressOption, wrapErr("invalid calculator address"))
195195
196-func keyConfigAddress () = "%s__config"
196+func keyPowerConfigAddress () = "%s__powerConfigAddress"
197197
198198
199-func keyPowerContractAddress () = "%s__powerContract"
199+func keyPowerContractAddress () = "%s__powerContractAddress"
200+
201+
202+func keyAssets () = "%s__assets"
200203
201204
202205 func keyVotingResultAddress () = "contract_voting_result"
203206
204207
205208 func keyProposalAllowBroadcast (address,txId) = ((("proposal_allow_broadcast_" + toString(address)) + "_") + toBase58String(txId))
206209
207210
208-let configAddressOption = match getString(this, keyConfigAddress()) {
211+let configAddressOption = match getString(this, keyPowerConfigAddress()) {
209212 case s: String =>
210213 addressFromString(s)
211214 case _: Unit =>
212215 unit
213216 case _ =>
214217 throw("Match error")
215218 }
216219
217220 let votingResultAddressOption = match configAddressOption {
218221 case a: Address =>
219222 match getString(a, keyVotingResultAddress()) {
220223 case s: String =>
221224 addressFromString(s)
222225 case _: Unit =>
223226 unit
224227 case _ =>
225228 throw("Match error")
226229 }
227230 case _: Unit =>
228231 unit
229232 case _ =>
230233 throw("Match error")
231234 }
232235
233236 let votingResultAddressOrFail = valueOrErrorMessage(votingResultAddressOption, wrapErr("invalid voting result address"))
234237
235238 let lpAssetIdOption = match getString(this, keyLpAssetId()) {
236239 case s: String =>
237240 fromBase58String(s)
238241 case _: Unit =>
239242 unit
240243 case _ =>
241244 throw("Match error")
242245 }
243246
244247 let lpAssetIdOrFail = valueOrErrorMessage(lpAssetIdOption, wrapErr("invalid lpAssetId"))
245248
246249 func onlyAddress (i,address) = if ((i.caller == address))
247250 then true
248251 else throwErr("permission denied")
249252
250253
251254 func onlyThis (i) = onlyAddress(i, this)
252255
253256
254257 func onlyCalculator (i) = onlyAddress(i, calculatorAddressOrFail)
255258
256259
257260 @Callable(i)
258261 func stringEntry (key,val) = if (onlyCalculator(i))
259262 then $Tuple2([StringEntry(key, val)], key)
260263 else $Tuple2(nil, unit)
261264
262265
263266
264267 @Callable(i)
265268 func integerEntry (key,val) = if (onlyCalculator(i))
266269 then $Tuple2([IntegerEntry(key, val)], key)
267270 else $Tuple2(nil, unit)
268271
269272
270273
271274 @Callable(i)
272275 func booleanEntry (key,val) = if (onlyCalculator(i))
273276 then $Tuple2([BooleanEntry(key, val)], key)
274277 else $Tuple2(nil, unit)
275278
276279
277280
278281 @Callable(i)
279282 func binaryEntry (key,val) = if (onlyCalculator(i))
280283 then $Tuple2([BinaryEntry(key, val)], key)
281284 else $Tuple2(nil, unit)
282285
283286
284287
285288 @Callable(i)
286289 func deleteEntry (key) = if (onlyCalculator(i))
287290 then $Tuple2([DeleteEntry(key)], key)
288291 else $Tuple2(nil, unit)
289292
290293
291294
292295 @Callable(i)
293-func reissue (amount) = if (onlyCalculator(i))
294- then $Tuple2([Reissue(lpAssetIdOrFail, amount, true)], amount)
296+func reissue (assetId,amount,reissuable) = if (onlyCalculator(i))
297+ then $Tuple2([Reissue(assetId, amount, reissuable)], amount)
295298 else $Tuple2(nil, unit)
296299
297300
298301
299302 @Callable(i)
300-func burn (amount) = if (onlyCalculator(i))
301- then $Tuple2([Burn(lpAssetIdOrFail, amount)], amount)
303+func burn (assetId,amount) = if (onlyCalculator(i))
304+ then $Tuple2([Burn(assetId, amount)], amount)
302305 else $Tuple2(nil, unit)
303306
304307
305308
306309 @Callable(i)
307310 func transferAsset (recipientBytes,amount,assetId) = if (onlyCalculator(i))
308311 then $Tuple2([ScriptTransfer(Address(recipientBytes), amount, assetId)], amount)
309312 else $Tuple2(nil, unit)
310313
311314
312315
313316 @Callable(i)
314317 func transferAssets (recipientBytes,assetsList,amountsList) = if (onlyCalculator(i))
315318 then {
316319 func addNewTransfer (acc,nextAssetId) = {
317- let $t063586382 = acc
318- let transfers = $t063586382._1
319- let j = $t063586382._2
320- let newTransfer = ScriptTransfer(Address(recipientBytes), parseIntValue(amountsList[j]), stringToAssetId(assetsList[j]))
320+ let $t064996523 = acc
321+ let transfers = $t064996523._1
322+ let j = $t064996523._2
323+ let newTransfer = ScriptTransfer(Address(recipientBytes), amountsList[j], assetsList[j])
321324 let updatedTransfers = (transfers :+ newTransfer)
322325 $Tuple2(updatedTransfers, (j + 1))
323326 }
324327
325- let $t066426723 = {
328+ let $t067496830 = {
326329 let $l = assetsList
327330 let $s = size($l)
328331 let $acc0 = $Tuple2(nil, 0)
329332 func $f0_1 ($a,$i) = if (($i >= $s))
330333 then $a
331334 else addNewTransfer($a, $l[$i])
332335
333336 func $f0_2 ($a,$i) = if (($i >= $s))
334337 then $a
335338 else throw("List size exceeds 10")
336339
337340 $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)
338341 }
339- let assetsTransfers = $t066426723._1
340- let _lastIndex = $t066426723._2
342+ let assetsTransfers = $t067496830._1
343+ let _lastIndex = $t067496830._2
341344 $Tuple2(assetsTransfers, unit)
342345 }
343346 else $Tuple2(nil, unit)
344347
345348
346349
347350 @Callable(i)
348351 func transferWaves (recipientBytes,amount) = if (onlyCalculator(i))
349352 then $Tuple2([ScriptTransfer(Address(recipientBytes), amount, unit)], amount)
350353 else $Tuple2(nil, unit)
351354
352355
353356
354357 @Callable(i)
355-func commitAfterStartWithLockRoundFor (contract,child,address,additionalLockRounds,paymentAssetId,paymentAmount) = $Tuple2(nil, invoke(addressFromStringValue(contract), "commitAfterStartWithLockRoundFor", [child, address, additionalLockRounds], [AttachedPayment(paymentAssetId, paymentAmount)]))
358+func init (lpAssetIdStr,calculatorAddressStr,powerConfigAddressStr,powerContractAddress,periodLength,treasuryValue,assets) = {
359+ let checkCaller = mustThis(i)
360+ if ((checkCaller == checkCaller))
361+ then $Tuple2([StringEntry(keyLpAssetId(), lpAssetIdStr), StringEntry(keyCalculatorAddress(), calculatorAddressStr), StringEntry(keyPowerConfigAddress(), powerConfigAddressStr), StringEntry(keyPowerContractAddress(), powerContractAddress), IntegerEntry(keyPeriodLength(), periodLength), IntegerEntry(keyTreasuryValue(), treasuryValue), IntegerEntry(keyTreasuryValueByPeriod(0), treasuryValue), IntegerEntry(keyCurrentPeriod(), 0), IntegerEntry(keyStartHeightByPeriod(0), height), StringEntry(keyAssets(), makeString(assets, SEP))], unit)
362+ else throw("Strict value is not equal to itself.")
363+ }
356364
357365
358366
359367 @Callable(i)
360-func init (calculatorAddressStr,powerConfigAddressStr,powerContractAddressStr) = {
361- let checkCaller = mustThis(i)
362- if ((checkCaller == checkCaller))
363- then $Tuple2([StringEntry(keyCalculatorAddress(), calculatorAddressStr), StringEntry(keyConfigAddress(), powerConfigAddressStr), StringEntry(keyPowerContractAddress(), powerContractAddressStr)], unit)
364- else throw("Strict value is not equal to itself.")
365- }
368+func commitAfterStartWithLockRoundFor (contract,child,address,additionalLockRounds,paymentAssetId,paymentAmount) = $Tuple2(nil, invoke(addressFromStringValue(contract), "commitAfterStartWithLockRoundFor", [child, address, additionalLockRounds], [AttachedPayment(paymentAssetId, paymentAmount)]))
366369
367370
368371
369372 @Callable(i)
370373 func call (function,args) = {
371374 let result = reentrantInvoke(calculatorAddressOrFail, function, [i.callerPublicKey, args], i.payments)
372375 $Tuple2(nil, result)
373376 }
374377
375378
376379
377380 @Callable(i)
378381 func voteForTxId (txId) = {
379382 let callerAddressString = toBase58String(i.caller.bytes)
380383 let keyPrefix = keyAllowedTxIdVotePrefix(txId)
381384 let result = [StringEntry(keyAllowedTxId(), txId)]
382385 let allowedTxIdOption = getString(this, keyAllowedTxId())
383386 let err = [if ((size(fromBase58String(txId)) == TXID_BYTES_LENGTH))
384387 then true
385388 else throwErr((txId + " is not valid txId")), if (if ((allowedTxIdOption == unit))
386389 then true
387390 else (value(allowedTxIdOption) != txId))
388391 then true
389392 else throwErr((txId + " is already allowed"))]
390393 if ((err == err))
391394 then voteINTERNAL(callerAddressString, keyPrefix, QUORUM, result)
392395 else throw("Strict value is not equal to itself.")
393396 }
394397
395398
396399 @Verifier(tx)
397400 func verify () = {
398401 let byProposal = match votingResultAddressOption {
399402 case proposalAddress: Address =>
400403 valueOrElse(getBoolean(proposalAddress, keyProposalAllowBroadcast(this, tx.id)), false)
401404 case _ =>
402405 false
403406 }
404407 let byAdmins = (tx.id == fromBase58String(valueOrElse(getString(this, keyAllowedTxId()), "")))
405408 let byOwner = if ((size(getAdminsList()) >= QUORUM))
406409 then false
407410 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
408411 if (if (byProposal)
409412 then true
410413 else byAdmins)
411414 then true
412415 else byOwner
413416 }
414417

github/deemru/w8io/026f985 
58.20 ms