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:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# 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)) | |
4 | 45 | ||
5 | 46 | ||
6 | 47 | @Callable(i) | |
29 | 70 | ||
30 | 71 | ||
31 | 72 | @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)) | |
33 | 207 | then throw("Only self call is allowed") | |
34 | 208 | else if ((size(i.payments) > 0)) | |
35 | 209 | then throw("Payments are prohibited") | |
36 | 210 | else if ((0 >= chainId)) | |
37 | 211 | 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 | + | } | |
39 | 258 | ||
40 | 259 | ||
41 | 260 | ||
55 | 274 | ||
56 | 275 | ||
57 | 276 | @Callable(i) | |
58 | - | func setUnitsContract (address) = if ((i.caller != this)) | |
277 | + | func setUnitsContract (address,name) = if ((i.caller != this)) | |
59 | 278 | then throw("Only self call is allowed") | |
60 | 279 | else if ((size(i.payments) > 0)) | |
61 | 280 | then throw("Payments are prohibited") | |
62 | 281 | else if ((addressFromString(address) == unit)) | |
63 | 282 | 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)] | |
65 | 286 | ||
66 | 287 | ||
67 | 288 | @Verifier(tx) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# 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)) | |
4 | 45 | ||
5 | 46 | ||
6 | 47 | @Callable(i) | |
7 | 48 | func setAddress (key,address) = if ((i.caller != this)) | |
8 | 49 | then throw("Only self call is allowed") | |
9 | 50 | else if ((size(i.payments) > 0)) | |
10 | 51 | then throw("Payments are prohibited") | |
11 | 52 | else if ((addressFromString(address) == unit)) | |
12 | 53 | then throw(("Invalid address: " + address)) | |
13 | 54 | else [StringEntry(key, address)] | |
14 | 55 | ||
15 | 56 | ||
16 | 57 | ||
17 | 58 | @Callable(i) | |
18 | 59 | func setAssetId (key,assetId) = if ((i.caller != this)) | |
19 | 60 | then throw("Only self call is allowed") | |
20 | 61 | else if ((size(i.payments) > 0)) | |
21 | 62 | then throw("Payments are prohibited") | |
22 | 63 | else { | |
23 | 64 | let id = fromBase58String(assetId) | |
24 | 65 | if ((assetInfo(id) == unit)) | |
25 | 66 | then throw(("Unknown assetId: " + assetId)) | |
26 | 67 | else [BinaryEntry(key, id)] | |
27 | 68 | } | |
28 | 69 | ||
29 | 70 | ||
30 | 71 | ||
31 | 72 | @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)) | |
33 | 207 | then throw("Only self call is allowed") | |
34 | 208 | else if ((size(i.payments) > 0)) | |
35 | 209 | then throw("Payments are prohibited") | |
36 | 210 | else if ((0 >= chainId)) | |
37 | 211 | 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 | + | } | |
39 | 258 | ||
40 | 259 | ||
41 | 260 | ||
42 | 261 | @Callable(i) | |
43 | 262 | func setPublicKey (key,publicKey) = if ((i.caller != this)) | |
44 | 263 | then throw("Only self call is allowed") | |
45 | 264 | else if ((size(i.payments) > 0)) | |
46 | 265 | then throw("Payments are prohibited") | |
47 | 266 | else { | |
48 | 267 | let pubKey = fromBase58String(publicKey) | |
49 | 268 | let validation = addressFromPublicKey(pubKey) | |
50 | 269 | if ((validation == validation)) | |
51 | 270 | then [BinaryEntry(key, pubKey)] | |
52 | 271 | else throw("Strict value is not equal to itself.") | |
53 | 272 | } | |
54 | 273 | ||
55 | 274 | ||
56 | 275 | ||
57 | 276 | @Callable(i) | |
58 | - | func setUnitsContract (address) = if ((i.caller != this)) | |
277 | + | func setUnitsContract (address,name) = if ((i.caller != this)) | |
59 | 278 | then throw("Only self call is allowed") | |
60 | 279 | else if ((size(i.payments) > 0)) | |
61 | 280 | then throw("Payments are prohibited") | |
62 | 281 | else if ((addressFromString(address) == unit)) | |
63 | 282 | 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)] | |
65 | 286 | ||
66 | 287 | ||
67 | 288 | @Verifier(tx) | |
68 | 289 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
69 | 290 |
github/deemru/w8io/873ac7e 59.79 ms ◑