tx · 3W8TN4r4ZVi7TqZzwkyMSZCak2u1TgGMD3UJUmNVZoiB

3N6D8m1NDJbddFcWkTQ1jtENG375YayszPV:  -0.00700000 Waves

2024.05.22 21:18 [3117552] smart account 3N6D8m1NDJbddFcWkTQ1jtENG375YayszPV > SELF 0.00000000 Waves

{ "type": 13, "id": "3W8TN4r4ZVi7TqZzwkyMSZCak2u1TgGMD3UJUmNVZoiB", "fee": 700000, "feeAssetId": null, "timestamp": 1716402006026, "version": 2, "chainId": 84, "sender": "3N6D8m1NDJbddFcWkTQ1jtENG375YayszPV", "senderPublicKey": "58HGdrsXywkTgxYZHCYbWca2S8CgV4zDKu9q4v5jnMRu", "proofs": [ "3A597VTeXfyT2in7o7kdcavtaS3KFKnZQjpvCS5KB4CeCVQ7bBrF5JhjQjn27csCE5aYuCHab1XmAzFzicZU5baz" ], "script": "base64:BgI3CAISBAoCCAgSBAoCCAgSAwoBGBIFCgMYGBgSAwoBGBIECgIIARIECgIYGBIECgIICBIECgIICBEAB1dhdmVzSWQCBVdBVkVTAAVBcnIxMAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkFA25pbAARQXNzZXRzUXVhbnRpdHlLZXkCDmFzc2V0c1F1YW50aXR5ABpBc3NldE9wZXJhdGlvbnNRdWFudGl0eUtleQIXYXNzZXRPcGVyYXRpb25zUXVhbnRpdHkAEUlucHV0c1F1YW50aXR5S2V5Ag5pbnB1dHNRdWFudGl0eQAOQXNzZXRzUXVhbnRpdHkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwURQXNzZXRzUXVhbnRpdHlLZXkAAAAXQXNzZXRPcGVyYXRpb25zUXVhbnRpdHkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUaQXNzZXRPcGVyYXRpb25zUXVhbnRpdHlLZXkAAAAOSW5wdXRzUXVhbnRpdHkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwURSW5wdXRzUXVhbnRpdHlLZXkAAAERbWFrZUFzc2V0SW5kZXhLZXkBBWFzc2V0CQCsAgICC2Fzc2V0SW5kZXhfBQVhc3NldAEObWFrZUFzc2V0SWRLZXkBCmFzc2V0SW5kZXgJAKwCAgIIYXNzZXRJZF8JAKQDAQUKYXNzZXRJbmRleAEVbWFrZUFzc2V0T3BlcmF0aW9uS2V5AwVjaGFpbgVhc3NldAlvcGVyYXRpb24JALkJAgkAzAgCAg5hc3NldE9wZXJhdGlvbgkAzAgCBQVjaGFpbgkAzAgCBQVhc3NldAkAzAgCBQlvcGVyYXRpb24FA25pbAIBXwEObWFrZUNoYWluSWRLZXkBBWNoYWluCQCsAgICCGNoYWluSWRfBQVjaGFpbgEabWFrZUJsYWNrbGlzdGVkRGVsZWdhdGVLZXkBCGRlbGVnYXRlCQCsAgICFGJsYWNrbGlzdGVkRGVsZWdhdGVfBQhkZWxlZ2F0ZQEWbWFrZUlucHV0QXNzZXRJbmRleEtleQIFY2hhaW4FYXNzZXQJALkJAgkAzAgCAg9pbnB1dEFzc2V0SW5kZXgJAMwIAgUFY2hhaW4JAMwIAgUFYXNzZXQFA25pbAIBXwEZbWFrZVVuaXRzQ2hhaW5Db250cmFjdEtleQEEbmFtZQkArAICAhN1bml0c0NoYWluQ29udHJhY3RfBQRuYW1lARVtYWtlVW5pdHNDaGFpbk5hbWVLZXkBB2FkZHJlc3MJAKwCAgIPdW5pdHNDaGFpbk5hbWVfBQdhZGRyZXNzAQpnZXRDaGFpbklkAQVjaGFpbgkAmggCBQR0aGlzCQEObWFrZUNoYWluSWRLZXkBBQVjaGFpbgkBaQEKc2V0QWRkcmVzcwIDa2V5B2FkZHJlc3MDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhlPbmx5IHNlbGYgY2FsbCBpcyBhbGxvd2VkAwkAZgIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECF1BheW1lbnRzIGFyZSBwcm9oaWJpdGVkAwkAAAIJAKYIAQUHYWRkcmVzcwUEdW5pdAkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQdhZGRyZXNzBQNuaWwBaQEKc2V0QXNzZXRJZAIDa2V5B2Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhlPbmx5IHNlbGYgY2FsbCBpcyBhbGxvd2VkAwkAZgIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECF1BheW1lbnRzIGFyZSBwcm9oaWJpdGVkBAJpZAkA2QQBBQdhc3NldElkAwkAAAIJAOwHAQUCaWQFBHVuaXQJAAIBCQCsAgICEVVua25vd24gYXNzZXRJZDogBQdhc3NldElkCQDMCAIJAQtCaW5hcnlFbnRyeQIFA2tleQUCaWQFA25pbAFpAQ9zZXRBc3NldEluZGV4ZXMBBmFzc2V0cwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECGU9ubHkgc2VsZiBjYWxsIGlzIGFsbG93ZWQDCQBmAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIXUGF5bWVudHMgYXJlIHByb2hpYml0ZWQECmFzc2V0c1NpemUJAJADAQUGYXNzZXRzCgEKYXNzZXRzRm9sZAIFYWNjdW0FaW5kZXgDCQBnAgUFaW5kZXgFCmFzc2V0c1NpemUFBWFjY3VtBAVhc3NldAkAkQMCBQZhc3NldHMFBWluZGV4BA1hc3NldEluZGV4S2V5CQERbWFrZUFzc2V0SW5kZXhLZXkBBQVhc3NldAMJAQIhPQIJAJoIAgUEdGhpcwUNYXNzZXRJbmRleEtleQUEdW5pdAkAAgEJAKwCAgIQQWxyZWFkeSBleGlzdHM6IAUFYXNzZXQEB2Fzc2V0SWQDCQAAAgUFYXNzZXQFB1dhdmVzSWQBAAgJAQV2YWx1ZQEJAOwHAQkA2QQBBQVhc3NldAJpZAQKYXNzZXRJbmRleAkAZAIFDkFzc2V0c1F1YW50aXR5BQVpbmRleAkAzQgCCQDNCAIFBWFjY3VtCQELQmluYXJ5RW50cnkCCQEObWFrZUFzc2V0SWRLZXkBBQphc3NldEluZGV4BQdhc3NldElkCQEMSW50ZWdlckVudHJ5AgUNYXNzZXRJbmRleEtleQUKYXNzZXRJbmRleAkAzQgCCgACJGwFBUFycjEwCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQphc3NldHNGb2xkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQEMSW50ZWdlckVudHJ5AgURQXNzZXRzUXVhbnRpdHlLZXkJAGQCBQ5Bc3NldHNRdWFudGl0eQUKYXNzZXRzU2l6ZQFpARJzZXRBc3NldE9wZXJhdGlvbnMDBmNoYWlucwZhc3NldHMKb3BlcmF0aW9ucwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECGU9ubHkgc2VsZiBjYWxsIGlzIGFsbG93ZWQDCQBmAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIXUGF5bWVudHMgYXJlIHByb2hpYml0ZWQECmNoYWluc1NpemUJAJADAQUGY2hhaW5zBAphc3NldHNTaXplCQCQAwEFBmFzc2V0cwQOb3BlcmF0aW9uc1NpemUJAJADAQUKb3BlcmF0aW9ucwMDCQECIT0CBQpjaGFpbnNTaXplBQphc3NldHNTaXplBgkBAiE9AgUKYXNzZXRzU2l6ZQUOb3BlcmF0aW9uc1NpemUJAAIBAhdNaXNtYXRjaCBhcmd1bWVudCBzaXplcwoBDm9wZXJhdGlvbnNGb2xkAgVhY2N1bQVpbmRleAMJAGcCBQVpbmRleAUOb3BlcmF0aW9uc1NpemUFBWFjY3VtBAVjaGFpbgkAkQMCBQZjaGFpbnMFBWluZGV4AwkAAAIJAQpnZXRDaGFpbklkAQUFY2hhaW4FBHVuaXQJAAIBCQCsAgICD0ludmFsaWQgY2hhaW46IAUFY2hhaW4EBWFzc2V0CQCRAwIFBmFzc2V0cwUFaW5kZXgECW9wZXJhdGlvbgkAkQMCBQpvcGVyYXRpb25zBQVpbmRleAQRYXNzZXRPcGVyYXRpb25LZXkJARVtYWtlQXNzZXRPcGVyYXRpb25LZXkDBQVjaGFpbgUFYXNzZXQFCW9wZXJhdGlvbgMJAQIhPQIJAJoIAgUEdGhpcwURYXNzZXRPcGVyYXRpb25LZXkFBHVuaXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIQQWxyZWFkeSBleGlzdHM6IAUFY2hhaW4CASwFBWFzc2V0AgEsBQlvcGVyYXRpb24JAM0IAgUFYWNjdW0JAQxJbnRlZ2VyRW50cnkCBRFhc3NldE9wZXJhdGlvbktleQkAZAIFF0Fzc2V0T3BlcmF0aW9uc1F1YW50aXR5BQVpbmRleAkAzQgCCgACJGwFBUFycjEwCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ5vcGVyYXRpb25zRm9sZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkBDEludGVnZXJFbnRyeQIFGkFzc2V0T3BlcmF0aW9uc1F1YW50aXR5S2V5CQBkAgUXQXNzZXRPcGVyYXRpb25zUXVhbnRpdHkFDm9wZXJhdGlvbnNTaXplAWkBF3NldEJsYWNrbGlzdGVkRGVsZWdhdGVzAQlkZWxlZ2F0ZXMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhlPbmx5IHNlbGYgY2FsbCBpcyBhbGxvd2VkAwkAZgIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECF1BheW1lbnRzIGFyZSBwcm9oaWJpdGVkBA1kZWxlZ2F0ZXNTaXplCQCQAwEFCWRlbGVnYXRlcwoBDWRlbGVnYXRlc0ZvbGQCBWFjY3VtBWluZGV4AwkAZwIFBWluZGV4BQ1kZWxlZ2F0ZXNTaXplBQVhY2N1bQQIZGVsZWdhdGUJAJEDAgUJZGVsZWdhdGVzBQVpbmRleAQTaXNWYWxpZFdhdmVzQWRkcmVzcwkBAiE9AgkApggBBQhkZWxlZ2F0ZQUEdW5pdAQRaXNWYWxpZEV0aEFkZHJlc3MDCQAAAgkArwICBQhkZWxlZ2F0ZQACAgIweAkAAAIJAMgBAQkA3QQBCQCwAgIFCGRlbGVnYXRlAAIAFAcDCQEBIQEDBRNpc1ZhbGlkV2F2ZXNBZGRyZXNzBgURaXNWYWxpZEV0aEFkZHJlc3MJAAIBCQCsAgICEkludmFsaWQgZGVsZWdhdGU6IAUIZGVsZWdhdGUEFmJsYWNrbGlzdGVkRGVsZWdhdGVLZXkJARptYWtlQmxhY2tsaXN0ZWREZWxlZ2F0ZUtleQEFCGRlbGVnYXRlAwkBAiE9AgkAmwgCBQR0aGlzBRZibGFja2xpc3RlZERlbGVnYXRlS2V5BQR1bml0CQACAQkArAICAhBBbHJlYWR5IGV4aXN0czogBQhkZWxlZ2F0ZQkAzQgCBQVhY2N1bQkBDEJvb2xlYW5FbnRyeQIFFmJsYWNrbGlzdGVkRGVsZWdhdGVLZXkGCgACJGwFBUFycjEwCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ1kZWxlZ2F0ZXNGb2xkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAWkBCnNldENoYWluSWQCCWNoYWluTmFtZQdjaGFpbklkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIZT25seSBzZWxmIGNhbGwgaXMgYWxsb3dlZAMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhdQYXltZW50cyBhcmUgcHJvaGliaXRlZAMJAGcCAAAFB2NoYWluSWQJAAIBCQCsAgICHGNoYWluSWQgc2hvdWxkIGJlIHBvc2l0aXZlOiAJAKQDAQUHY2hhaW5JZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDm1ha2VDaGFpbklkS2V5AQUJY2hhaW5OYW1lBQdjaGFpbklkBQNuaWwBaQEOc2V0SW5wdXRBc3NldHMCBmNoYWlucwZhc3NldHMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhlPbmx5IHNlbGYgY2FsbCBpcyBhbGxvd2VkAwkAZgIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECF1BheW1lbnRzIGFyZSBwcm9oaWJpdGVkBApjaGFpbnNTaXplCQCQAwEFBmNoYWlucwQKYXNzZXRzU2l6ZQkAkAMBBQZhc3NldHMDCQECIT0CBQpjaGFpbnNTaXplBQphc3NldHNTaXplCQACAQIXTWlzbWF0Y2ggYXJndW1lbnQgc2l6ZXMKAQppbnB1dHNGb2xkAgVhY2N1bQVpbmRleAMJAGcCBQVpbmRleAUKYXNzZXRzU2l6ZQUFYWNjdW0EBWNoYWluCQCRAwIFBmNoYWlucwUFaW5kZXgDCQAAAgkBCmdldENoYWluSWQBBQVjaGFpbgUEdW5pdAkAAgEJAKwCAgIPSW52YWxpZCBjaGFpbjogBQVjaGFpbgQFYXNzZXQJAJEDAgUGYXNzZXRzBQVpbmRleAQNaW5wdXRBc3NldEtleQkBFm1ha2VJbnB1dEFzc2V0SW5kZXhLZXkCBQVjaGFpbgUFYXNzZXQDCQECIT0CCQCaCAIFBHRoaXMFDWlucHV0QXNzZXRLZXkFBHVuaXQJAAIBCQCsAgICEEFscmVhZHkgZXhpc3RzOiAFBWFzc2V0CQDNCAIFBWFjY3VtCQEMSW50ZWdlckVudHJ5AgUNaW5wdXRBc3NldEtleQkAZAIFDklucHV0c1F1YW50aXR5BQVpbmRleAkAzQgCCgACJGwFBUFycjEwCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQppbnB1dHNGb2xkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQEMSW50ZWdlckVudHJ5AgURSW5wdXRzUXVhbnRpdHlLZXkJAGQCBQ5JbnB1dHNRdWFudGl0eQUKYXNzZXRzU2l6ZQFpAQxzZXRQdWJsaWNLZXkCA2tleQlwdWJsaWNLZXkDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhlPbmx5IHNlbGYgY2FsbCBpcyBhbGxvd2VkAwkAZgIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECF1BheW1lbnRzIGFyZSBwcm9oaWJpdGVkBAZwdWJLZXkJANkEAQUJcHVibGljS2V5BAp2YWxpZGF0aW9uCQCnCAEFBnB1YktleQMJAAACBQp2YWxpZGF0aW9uBQp2YWxpZGF0aW9uCQDMCAIJAQtCaW5hcnlFbnRyeQIFA2tleQUGcHViS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQc2V0VW5pdHNDb250cmFjdAIHYWRkcmVzcwRuYW1lAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIZT25seSBzZWxmIGNhbGwgaXMgYWxsb3dlZAMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhdQYXltZW50cyBhcmUgcHJvaGliaXRlZAMJAAACCQCmCAEFB2FkZHJlc3MFBHVuaXQJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQdhZGRyZXNzAwkAAAIJAQpnZXRDaGFpbklkAQUEbmFtZQUEdW5pdAkAAgEJAKwCAgIPSW52YWxpZCBjaGFpbjogBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJARltYWtlVW5pdHNDaGFpbkNvbnRyYWN0S2V5AQUEbmFtZQUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVbWFrZVVuaXRzQ2hhaW5OYW1lS2V5AQUHYWRkcmVzcwUEbmFtZQUDbmlsAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQLJnas=", "height": 3117552, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9QxLT36Ew3zJgkA88pweos8b8rQ3QZ6QfxqmYXXHBJLE Next: none Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let WavesId = "WAVES"
5+
6+let Arr10 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
7+
8+let AssetsQuantityKey = "assetsQuantity"
9+
10+let AssetOperationsQuantityKey = "assetOperationsQuantity"
11+
12+let InputsQuantityKey = "inputsQuantity"
13+
14+let AssetsQuantity = valueOrElse(getInteger(this, AssetsQuantityKey), 0)
15+
16+let AssetOperationsQuantity = valueOrElse(getInteger(this, AssetOperationsQuantityKey), 0)
17+
18+let InputsQuantity = valueOrElse(getInteger(this, InputsQuantityKey), 0)
19+
20+func makeAssetIndexKey (asset) = ("assetIndex_" + asset)
21+
22+
23+func makeAssetIdKey (assetIndex) = ("assetId_" + toString(assetIndex))
24+
25+
26+func makeAssetOperationKey (chain,asset,operation) = makeString(["assetOperation", chain, asset, operation], "_")
27+
28+
29+func makeChainIdKey (chain) = ("chainId_" + chain)
30+
31+
32+func makeBlacklistedDelegateKey (delegate) = ("blacklistedDelegate_" + delegate)
33+
34+
35+func makeInputAssetIndexKey (chain,asset) = makeString(["inputAssetIndex", chain, asset], "_")
36+
37+
38+func makeUnitsChainContractKey (name) = ("unitsChainContract_" + name)
39+
40+
41+func makeUnitsChainNameKey (address) = ("unitsChainName_" + address)
42+
43+
44+func getChainId (chain) = getInteger(this, makeChainIdKey(chain))
445
546
647 @Callable(i)
2970
3071
3172 @Callable(i)
32-func setChainId (chainId) = if ((i.caller != this))
73+func setAssetIndexes (assets) = if ((i.caller != this))
74+ then throw("Only self call is allowed")
75+ else if ((size(i.payments) > 0))
76+ then throw("Payments are prohibited")
77+ else {
78+ let assetsSize = size(assets)
79+ func assetsFold (accum,index) = if ((index >= assetsSize))
80+ then accum
81+ else {
82+ let asset = assets[index]
83+ let assetIndexKey = makeAssetIndexKey(asset)
84+ if ((getInteger(this, assetIndexKey) != unit))
85+ then throw(("Already exists: " + asset))
86+ else {
87+ let assetId = if ((asset == WavesId))
88+ then base58''
89+ else value(assetInfo(fromBase58String(asset))).id
90+ let assetIndex = (AssetsQuantity + index)
91+ ((accum :+ BinaryEntry(makeAssetIdKey(assetIndex), assetId)) :+ IntegerEntry(assetIndexKey, assetIndex))
92+ }
93+ }
94+
95+ ({
96+ let $l = Arr10
97+ let $s = size($l)
98+ let $acc0 = nil
99+ func $f0_1 ($a,$i) = if (($i >= $s))
100+ then $a
101+ else assetsFold($a, $l[$i])
102+
103+ func $f0_2 ($a,$i) = if (($i >= $s))
104+ then $a
105+ else throw("List size exceeds 10")
106+
107+ $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)
108+ } :+ IntegerEntry(AssetsQuantityKey, (AssetsQuantity + assetsSize)))
109+ }
110+
111+
112+
113+@Callable(i)
114+func setAssetOperations (chains,assets,operations) = if ((i.caller != this))
115+ then throw("Only self call is allowed")
116+ else if ((size(i.payments) > 0))
117+ then throw("Payments are prohibited")
118+ else {
119+ let chainsSize = size(chains)
120+ let assetsSize = size(assets)
121+ let operationsSize = size(operations)
122+ if (if ((chainsSize != assetsSize))
123+ then true
124+ else (assetsSize != operationsSize))
125+ then throw("Mismatch argument sizes")
126+ else {
127+ func operationsFold (accum,index) = if ((index >= operationsSize))
128+ then accum
129+ else {
130+ let chain = chains[index]
131+ if ((getChainId(chain) == unit))
132+ then throw(("Invalid chain: " + chain))
133+ else {
134+ let asset = assets[index]
135+ let operation = operations[index]
136+ let assetOperationKey = makeAssetOperationKey(chain, asset, operation)
137+ if ((getInteger(this, assetOperationKey) != unit))
138+ then throw(((((("Already exists: " + chain) + ",") + asset) + ",") + operation))
139+ else (accum :+ IntegerEntry(assetOperationKey, (AssetOperationsQuantity + index)))
140+ }
141+ }
142+
143+ ({
144+ let $l = Arr10
145+ let $s = size($l)
146+ let $acc0 = nil
147+ func $f0_1 ($a,$i) = if (($i >= $s))
148+ then $a
149+ else operationsFold($a, $l[$i])
150+
151+ func $f0_2 ($a,$i) = if (($i >= $s))
152+ then $a
153+ else throw("List size exceeds 10")
154+
155+ $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)
156+ } :+ IntegerEntry(AssetOperationsQuantityKey, (AssetOperationsQuantity + operationsSize)))
157+ }
158+ }
159+
160+
161+
162+@Callable(i)
163+func setBlacklistedDelegates (delegates) = if ((i.caller != this))
164+ then throw("Only self call is allowed")
165+ else if ((size(i.payments) > 0))
166+ then throw("Payments are prohibited")
167+ else {
168+ let delegatesSize = size(delegates)
169+ func delegatesFold (accum,index) = if ((index >= delegatesSize))
170+ then accum
171+ else {
172+ let delegate = delegates[index]
173+ let isValidWavesAddress = (addressFromString(delegate) != unit)
174+ let isValidEthAddress = if ((take(delegate, 2) == "0x"))
175+ then (size(fromBase16String(drop(delegate, 2))) == 20)
176+ else false
177+ if (!(if (isValidWavesAddress)
178+ then true
179+ else isValidEthAddress))
180+ then throw(("Invalid delegate: " + delegate))
181+ else {
182+ let blacklistedDelegateKey = makeBlacklistedDelegateKey(delegate)
183+ if ((getBoolean(this, blacklistedDelegateKey) != unit))
184+ then throw(("Already exists: " + delegate))
185+ else (accum :+ BooleanEntry(blacklistedDelegateKey, true))
186+ }
187+ }
188+
189+ let $l = Arr10
190+ let $s = size($l)
191+ let $acc0 = nil
192+ func $f0_1 ($a,$i) = if (($i >= $s))
193+ then $a
194+ else delegatesFold($a, $l[$i])
195+
196+ func $f0_2 ($a,$i) = if (($i >= $s))
197+ then $a
198+ else throw("List size exceeds 10")
199+
200+ $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)
201+ }
202+
203+
204+
205+@Callable(i)
206+func setChainId (chainName,chainId) = if ((i.caller != this))
33207 then throw("Only self call is allowed")
34208 else if ((size(i.payments) > 0))
35209 then throw("Payments are prohibited")
36210 else if ((0 >= chainId))
37211 then throw(("chainId should be positive: " + toString(chainId)))
38- else [IntegerEntry("chainId", chainId)]
212+ else [IntegerEntry(makeChainIdKey(chainName), chainId)]
213+
214+
215+
216+@Callable(i)
217+func setInputAssets (chains,assets) = if ((i.caller != this))
218+ then throw("Only self call is allowed")
219+ else if ((size(i.payments) > 0))
220+ then throw("Payments are prohibited")
221+ else {
222+ let chainsSize = size(chains)
223+ let assetsSize = size(assets)
224+ if ((chainsSize != assetsSize))
225+ then throw("Mismatch argument sizes")
226+ else {
227+ func inputsFold (accum,index) = if ((index >= assetsSize))
228+ then accum
229+ else {
230+ let chain = chains[index]
231+ if ((getChainId(chain) == unit))
232+ then throw(("Invalid chain: " + chain))
233+ else {
234+ let asset = assets[index]
235+ let inputAssetKey = makeInputAssetIndexKey(chain, asset)
236+ if ((getInteger(this, inputAssetKey) != unit))
237+ then throw(("Already exists: " + asset))
238+ else (accum :+ IntegerEntry(inputAssetKey, (InputsQuantity + index)))
239+ }
240+ }
241+
242+ ({
243+ let $l = Arr10
244+ let $s = size($l)
245+ let $acc0 = nil
246+ func $f0_1 ($a,$i) = if (($i >= $s))
247+ then $a
248+ else inputsFold($a, $l[$i])
249+
250+ func $f0_2 ($a,$i) = if (($i >= $s))
251+ then $a
252+ else throw("List size exceeds 10")
253+
254+ $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)
255+ } :+ IntegerEntry(InputsQuantityKey, (InputsQuantity + assetsSize)))
256+ }
257+ }
39258
40259
41260
55274
56275
57276 @Callable(i)
58-func setUnitsContract (address) = if ((i.caller != this))
277+func setUnitsContract (address,name) = if ((i.caller != this))
59278 then throw("Only self call is allowed")
60279 else if ((size(i.payments) > 0))
61280 then throw("Payments are prohibited")
62281 else if ((addressFromString(address) == unit))
63282 then throw(("Invalid address: " + address))
64- else [StringEntry(("unitsChain_" + address), address)]
283+ else if ((getChainId(name) == unit))
284+ then throw(("Invalid chain: " + name))
285+ else [StringEntry(makeUnitsChainContractKey(name), address), StringEntry(makeUnitsChainNameKey(address), name)]
65286
66287
67288 @Verifier(tx)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let WavesId = "WAVES"
5+
6+let Arr10 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
7+
8+let AssetsQuantityKey = "assetsQuantity"
9+
10+let AssetOperationsQuantityKey = "assetOperationsQuantity"
11+
12+let InputsQuantityKey = "inputsQuantity"
13+
14+let AssetsQuantity = valueOrElse(getInteger(this, AssetsQuantityKey), 0)
15+
16+let AssetOperationsQuantity = valueOrElse(getInteger(this, AssetOperationsQuantityKey), 0)
17+
18+let InputsQuantity = valueOrElse(getInteger(this, InputsQuantityKey), 0)
19+
20+func makeAssetIndexKey (asset) = ("assetIndex_" + asset)
21+
22+
23+func makeAssetIdKey (assetIndex) = ("assetId_" + toString(assetIndex))
24+
25+
26+func makeAssetOperationKey (chain,asset,operation) = makeString(["assetOperation", chain, asset, operation], "_")
27+
28+
29+func makeChainIdKey (chain) = ("chainId_" + chain)
30+
31+
32+func makeBlacklistedDelegateKey (delegate) = ("blacklistedDelegate_" + delegate)
33+
34+
35+func makeInputAssetIndexKey (chain,asset) = makeString(["inputAssetIndex", chain, asset], "_")
36+
37+
38+func makeUnitsChainContractKey (name) = ("unitsChainContract_" + name)
39+
40+
41+func makeUnitsChainNameKey (address) = ("unitsChainName_" + address)
42+
43+
44+func getChainId (chain) = getInteger(this, makeChainIdKey(chain))
445
546
647 @Callable(i)
748 func setAddress (key,address) = if ((i.caller != this))
849 then throw("Only self call is allowed")
950 else if ((size(i.payments) > 0))
1051 then throw("Payments are prohibited")
1152 else if ((addressFromString(address) == unit))
1253 then throw(("Invalid address: " + address))
1354 else [StringEntry(key, address)]
1455
1556
1657
1758 @Callable(i)
1859 func setAssetId (key,assetId) = if ((i.caller != this))
1960 then throw("Only self call is allowed")
2061 else if ((size(i.payments) > 0))
2162 then throw("Payments are prohibited")
2263 else {
2364 let id = fromBase58String(assetId)
2465 if ((assetInfo(id) == unit))
2566 then throw(("Unknown assetId: " + assetId))
2667 else [BinaryEntry(key, id)]
2768 }
2869
2970
3071
3172 @Callable(i)
32-func setChainId (chainId) = if ((i.caller != this))
73+func setAssetIndexes (assets) = if ((i.caller != this))
74+ then throw("Only self call is allowed")
75+ else if ((size(i.payments) > 0))
76+ then throw("Payments are prohibited")
77+ else {
78+ let assetsSize = size(assets)
79+ func assetsFold (accum,index) = if ((index >= assetsSize))
80+ then accum
81+ else {
82+ let asset = assets[index]
83+ let assetIndexKey = makeAssetIndexKey(asset)
84+ if ((getInteger(this, assetIndexKey) != unit))
85+ then throw(("Already exists: " + asset))
86+ else {
87+ let assetId = if ((asset == WavesId))
88+ then base58''
89+ else value(assetInfo(fromBase58String(asset))).id
90+ let assetIndex = (AssetsQuantity + index)
91+ ((accum :+ BinaryEntry(makeAssetIdKey(assetIndex), assetId)) :+ IntegerEntry(assetIndexKey, assetIndex))
92+ }
93+ }
94+
95+ ({
96+ let $l = Arr10
97+ let $s = size($l)
98+ let $acc0 = nil
99+ func $f0_1 ($a,$i) = if (($i >= $s))
100+ then $a
101+ else assetsFold($a, $l[$i])
102+
103+ func $f0_2 ($a,$i) = if (($i >= $s))
104+ then $a
105+ else throw("List size exceeds 10")
106+
107+ $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)
108+ } :+ IntegerEntry(AssetsQuantityKey, (AssetsQuantity + assetsSize)))
109+ }
110+
111+
112+
113+@Callable(i)
114+func setAssetOperations (chains,assets,operations) = if ((i.caller != this))
115+ then throw("Only self call is allowed")
116+ else if ((size(i.payments) > 0))
117+ then throw("Payments are prohibited")
118+ else {
119+ let chainsSize = size(chains)
120+ let assetsSize = size(assets)
121+ let operationsSize = size(operations)
122+ if (if ((chainsSize != assetsSize))
123+ then true
124+ else (assetsSize != operationsSize))
125+ then throw("Mismatch argument sizes")
126+ else {
127+ func operationsFold (accum,index) = if ((index >= operationsSize))
128+ then accum
129+ else {
130+ let chain = chains[index]
131+ if ((getChainId(chain) == unit))
132+ then throw(("Invalid chain: " + chain))
133+ else {
134+ let asset = assets[index]
135+ let operation = operations[index]
136+ let assetOperationKey = makeAssetOperationKey(chain, asset, operation)
137+ if ((getInteger(this, assetOperationKey) != unit))
138+ then throw(((((("Already exists: " + chain) + ",") + asset) + ",") + operation))
139+ else (accum :+ IntegerEntry(assetOperationKey, (AssetOperationsQuantity + index)))
140+ }
141+ }
142+
143+ ({
144+ let $l = Arr10
145+ let $s = size($l)
146+ let $acc0 = nil
147+ func $f0_1 ($a,$i) = if (($i >= $s))
148+ then $a
149+ else operationsFold($a, $l[$i])
150+
151+ func $f0_2 ($a,$i) = if (($i >= $s))
152+ then $a
153+ else throw("List size exceeds 10")
154+
155+ $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)
156+ } :+ IntegerEntry(AssetOperationsQuantityKey, (AssetOperationsQuantity + operationsSize)))
157+ }
158+ }
159+
160+
161+
162+@Callable(i)
163+func setBlacklistedDelegates (delegates) = if ((i.caller != this))
164+ then throw("Only self call is allowed")
165+ else if ((size(i.payments) > 0))
166+ then throw("Payments are prohibited")
167+ else {
168+ let delegatesSize = size(delegates)
169+ func delegatesFold (accum,index) = if ((index >= delegatesSize))
170+ then accum
171+ else {
172+ let delegate = delegates[index]
173+ let isValidWavesAddress = (addressFromString(delegate) != unit)
174+ let isValidEthAddress = if ((take(delegate, 2) == "0x"))
175+ then (size(fromBase16String(drop(delegate, 2))) == 20)
176+ else false
177+ if (!(if (isValidWavesAddress)
178+ then true
179+ else isValidEthAddress))
180+ then throw(("Invalid delegate: " + delegate))
181+ else {
182+ let blacklistedDelegateKey = makeBlacklistedDelegateKey(delegate)
183+ if ((getBoolean(this, blacklistedDelegateKey) != unit))
184+ then throw(("Already exists: " + delegate))
185+ else (accum :+ BooleanEntry(blacklistedDelegateKey, true))
186+ }
187+ }
188+
189+ let $l = Arr10
190+ let $s = size($l)
191+ let $acc0 = nil
192+ func $f0_1 ($a,$i) = if (($i >= $s))
193+ then $a
194+ else delegatesFold($a, $l[$i])
195+
196+ func $f0_2 ($a,$i) = if (($i >= $s))
197+ then $a
198+ else throw("List size exceeds 10")
199+
200+ $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)
201+ }
202+
203+
204+
205+@Callable(i)
206+func setChainId (chainName,chainId) = if ((i.caller != this))
33207 then throw("Only self call is allowed")
34208 else if ((size(i.payments) > 0))
35209 then throw("Payments are prohibited")
36210 else if ((0 >= chainId))
37211 then throw(("chainId should be positive: " + toString(chainId)))
38- else [IntegerEntry("chainId", chainId)]
212+ else [IntegerEntry(makeChainIdKey(chainName), chainId)]
213+
214+
215+
216+@Callable(i)
217+func setInputAssets (chains,assets) = if ((i.caller != this))
218+ then throw("Only self call is allowed")
219+ else if ((size(i.payments) > 0))
220+ then throw("Payments are prohibited")
221+ else {
222+ let chainsSize = size(chains)
223+ let assetsSize = size(assets)
224+ if ((chainsSize != assetsSize))
225+ then throw("Mismatch argument sizes")
226+ else {
227+ func inputsFold (accum,index) = if ((index >= assetsSize))
228+ then accum
229+ else {
230+ let chain = chains[index]
231+ if ((getChainId(chain) == unit))
232+ then throw(("Invalid chain: " + chain))
233+ else {
234+ let asset = assets[index]
235+ let inputAssetKey = makeInputAssetIndexKey(chain, asset)
236+ if ((getInteger(this, inputAssetKey) != unit))
237+ then throw(("Already exists: " + asset))
238+ else (accum :+ IntegerEntry(inputAssetKey, (InputsQuantity + index)))
239+ }
240+ }
241+
242+ ({
243+ let $l = Arr10
244+ let $s = size($l)
245+ let $acc0 = nil
246+ func $f0_1 ($a,$i) = if (($i >= $s))
247+ then $a
248+ else inputsFold($a, $l[$i])
249+
250+ func $f0_2 ($a,$i) = if (($i >= $s))
251+ then $a
252+ else throw("List size exceeds 10")
253+
254+ $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)
255+ } :+ IntegerEntry(InputsQuantityKey, (InputsQuantity + assetsSize)))
256+ }
257+ }
39258
40259
41260
42261 @Callable(i)
43262 func setPublicKey (key,publicKey) = if ((i.caller != this))
44263 then throw("Only self call is allowed")
45264 else if ((size(i.payments) > 0))
46265 then throw("Payments are prohibited")
47266 else {
48267 let pubKey = fromBase58String(publicKey)
49268 let validation = addressFromPublicKey(pubKey)
50269 if ((validation == validation))
51270 then [BinaryEntry(key, pubKey)]
52271 else throw("Strict value is not equal to itself.")
53272 }
54273
55274
56275
57276 @Callable(i)
58-func setUnitsContract (address) = if ((i.caller != this))
277+func setUnitsContract (address,name) = if ((i.caller != this))
59278 then throw("Only self call is allowed")
60279 else if ((size(i.payments) > 0))
61280 then throw("Payments are prohibited")
62281 else if ((addressFromString(address) == unit))
63282 then throw(("Invalid address: " + address))
64- else [StringEntry(("unitsChain_" + address), address)]
283+ else if ((getChainId(name) == unit))
284+ then throw(("Invalid chain: " + name))
285+ else [StringEntry(makeUnitsChainContractKey(name), address), StringEntry(makeUnitsChainNameKey(address), name)]
65286
66287
67288 @Verifier(tx)
68289 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
69290

github/deemru/w8io/873ac7e 
59.79 ms