tx · ABpbuXagZ8ZRtynCC67SUWpbe3xNxc57tTy6PSb8Xv2G

3N7gP7bxevss5mVwkvMMJCnzPSP8c1YJCjw:  -0.01400000 Waves

2024.05.27 16:44 [3124473] smart account 3N7gP7bxevss5mVwkvMMJCnzPSP8c1YJCjw > SELF 0.00000000 Waves

{ "type": 13, "id": "ABpbuXagZ8ZRtynCC67SUWpbe3xNxc57tTy6PSb8Xv2G", "fee": 1400000, "feeAssetId": null, "timestamp": 1716817496012, "version": 2, "chainId": 84, "sender": "3N7gP7bxevss5mVwkvMMJCnzPSP8c1YJCjw", "senderPublicKey": "FnFqewzpYgqD63YNhTQmmfep3CHdNGWTFHU1zTLMSPAD", "proofs": [ "3qXRu8wVRYWCdwGNdxkJzqRyCa6kfds1vrz2bZ76bQafcCQEHxM4JcRa7iKmuovMQ3fmSKBCyRxiFkwjHunBSaHP" ], "script": "base64:BgI4CAISBQoDCAgIEgcKBQEIAQgBEgcKBQEIAQgBEgMKAQgSAwoBCBIDCgEIEgASABIDCgEIEgMKAQgqAAlTRVBBUkFUT1ICAl9fAA5GVU5DX1NFUEFSQVRPUgIEIyMjIwAIS0VZX0lOSVQCBElOSVQADEtFWV9NVUxUSVNJRwIITVVMVElTSUcACktFWV9TVEFUVVMCBlNUQVRVUwAKS0VZX1BBVVNFRAIGUEFVU0VEAApLRVlfUEFVU0VSAgZQQVVTRVIAEEtFWV9ST09UX0FEQVBURVICDFJPT1RfQURBUFRFUgATS0VZX1BST1RPQ09MX0NBTExFUgIPUFJPVE9DT0xfQ0FMTEVSABhLRVlfQ09JTl9CUklER0VfQ09OVFJBQ1QCFENPSU5fQlJJREdFX0NPTlRSQUNUABlLRVlfVE9LRU5fQlJJREdFX0NPTlRSQUNUAhVUT0tFTl9CUklER0VfQ09OVFJBQ1QAIUtFWV9XUkFQUEVEX1RPS0VOX0JSSURHRV9DT05UUkFDVAIdV1JBUFBFRF9UT0tFTl9CUklER0VfQ09OVFJBQ1QACUZVTkNfQ0FMTAIEY2FsbAAHTUFYX0lOVAD//////////38BEF92YWxpZGF0ZUFkZHJlc3MCCGFkZHJlc3NfBGVycl8EByRtYXRjaDAJAKYIAQUIYWRkcmVzc18DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAYJAAIBBQRlcnJfARJfdmFsaWRhdGVBcmdTdHJpbmcCBHZhbF8EZXJyXwMDCQEIY29udGFpbnMCBQR2YWxfBQ5GVU5DX1NFUEFSQVRPUgYJAQhjb250YWlucwIFBHZhbF8FCVNFUEFSQVRPUgkAAgEFBGVycl8GAQlfbG9hZEluaXQABAckbWF0Y2gwCQCgCAEFCEtFWV9JTklUAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWEFByRtYXRjaDAFAWEHAQlfc2F2ZUluaXQBB2lzSW5pdF8JAMwIAgkBDEJvb2xlYW5FbnRyeQIFCEtFWV9JTklUBQdpc0luaXRfBQNuaWwBCl9sb2FkUGF1c2UABAckbWF0Y2gwCQCgCAEFCktFWV9QQVVTRUQDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYQUHJG1hdGNoMAUBYQcBCl9zYXZlUGF1c2UBCWlzUGF1c2VkXwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUKS0VZX1BBVVNFRAUJaXNQYXVzZWRfBQNuaWwBC19sb2FkUGF1c2VyAAQHJG1hdGNoMAkAoggBBQpLRVlfUEFVU0VSAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABC19zYXZlUGF1c2VyAQdwYXVzZXJfCQDMCAIJAQtTdHJpbmdFbnRyeQIFCktFWV9QQVVTRVIJAKUIAQUHcGF1c2VyXwUDbmlsAQ1fbG9hZE11bHRpc2lnAAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAENX3NhdmVNdWx0aXNpZwEJbXVsdGlzaWdfCQDMCAIJAQtTdHJpbmdFbnRyeQIFDEtFWV9NVUxUSVNJRwkApQgBBQltdWx0aXNpZ18FA25pbAEQX2xvYWRSb290QWRhcHRlcgAEByRtYXRjaDAJAKIIAQUQS0VZX1JPT1RfQURBUFRFUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAARBfc2F2ZVJvb3RBZGFwdGVyAQhhZGFwdGVyXwkAzAgCCQELU3RyaW5nRW50cnkCBRBLRVlfUk9PVF9BREFQVEVSCQClCAEFCGFkYXB0ZXJfBQNuaWwBE19sb2FkUHJvdG9jb2xDYWxsZXIABAckbWF0Y2gwCQCiCAEFE0tFWV9QUk9UT0NPTF9DQUxMRVIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAETX3NhdmVQcm90b2NvbENhbGxlcgEHY2FsbGVyXwkAzAgCCQELU3RyaW5nRW50cnkCBRNLRVlfUFJPVE9DT0xfQ0FMTEVSCQClCAEFB2NhbGxlcl8FA25pbAEXX2xvYWRDb2luQnJpZGdlQ29udHJhY3QABAckbWF0Y2gwCQCiCAEFGEtFWV9DT0lOX0JSSURHRV9DT05UUkFDVAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEXX3NhdmVDb2luQnJpZGdlQ29udHJhY3QBCWNvbnRyYWN0XwkAzAgCCQELU3RyaW5nRW50cnkCBRhLRVlfQ09JTl9CUklER0VfQ09OVFJBQ1QFCWNvbnRyYWN0XwUDbmlsARhfbG9hZFRva2VuQnJpZGdlQ29udHJhY3QABAckbWF0Y2gwCQCiCAEFGUtFWV9UT0tFTl9CUklER0VfQ09OVFJBQ1QDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABGF9zYXZlVG9rZW5CcmlkZ2VDb250cmFjdAEJY29udHJhY3RfCQDMCAIJAQtTdHJpbmdFbnRyeQIFGUtFWV9UT0tFTl9CUklER0VfQ09OVFJBQ1QFCWNvbnRyYWN0XwUDbmlsAR9fbG9hZFdyYXBwZWRUb2tlbkJyaWRnZUNvbnRyYWN0AAQHJG1hdGNoMAkAoggBBSFLRVlfV1JBUFBFRF9UT0tFTl9CUklER0VfQ09OVFJBQ1QDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABH19zYXZlV3JhcHBlZFRva2VuQnJpZGdlQ29udHJhY3QBCWNvbnRyYWN0XwkAzAgCCQELU3RyaW5nRW50cnkCBSFLRVlfV1JBUFBFRF9UT0tFTl9CUklER0VfQ09OVFJBQ1QFCWNvbnRyYWN0XwUDbmlsARFfb25seVRoaXNDb250cmFjdAEHY2FsbGVyXwMJAQIhPQIFB2NhbGxlcl8FBHRoaXMJAAIBAhlfb25seVRoaXNDb250cmFjdDogcmV2ZXJ0BgEQX3doZW5NdWx0aXNpZ1NldAADCQAAAgkBDV9sb2FkTXVsdGlzaWcACQEHQWRkcmVzcwEBAAkAAgECGF93aGVuTXVsdGlzaWdTZXQ6IHJldmVydAYBE193aGVuTm90SW5pdGlhbGl6ZWQAAwkBCV9sb2FkSW5pdAAJAAIBAhtfd2hlbk5vdEluaXRpYWxpemVkOiByZXZlcnQGARBfd2hlbkluaXRpYWxpemVkAAMJAQEhAQkBCV9sb2FkSW5pdAAJAAIBAhhfd2hlbkluaXRpYWxpemVkOiByZXZlcnQGAQ5fd2hlbk5vdFBhdXNlZAADCQEKX2xvYWRQYXVzZQAJAAIBAhZfd2hlbk5vdFBhdXNlZDogcmV2ZXJ0BgELX3doZW5QYXVzZWQAAwkBASEBCQEKX2xvYWRQYXVzZQAJAAIBAhNfd2hlblBhdXNlZDogcmV2ZXJ0BgELX29ubHlQYXVzZXIBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfCQELX2xvYWRQYXVzZXIACQACAQITX29ubHlQYXVzZXI6IHJldmVydAYBDl9pc1Jvb3RBZGFwdGVyAQdjYWxsZXJfAwkBAiE9AgkBEF9sb2FkUm9vdEFkYXB0ZXIABQdjYWxsZXJfCQACAQIWX2lzUm9vdEFkYXB0ZXI6IHJldmVydAYKAWkBBGluaXQDD3Byb3RvY29sQ2FsbGVyXwxyb290QWRhcHRlcl8HcGF1c2VyXwQDZXJyAwMDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBE193aGVuTm90SW5pdGlhbGl6ZWQABwkBEF93aGVuTXVsdGlzaWdTZXQABwkBEF92YWxpZGF0ZUFkZHJlc3MCBQ9wcm90b2NvbENhbGxlcl8CHGluaXQ6IGludmFsaWQgcHJvdG9jb2xDYWxsZXIHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFDHJvb3RBZGFwdGVyXwIZaW5pdDogaW52YWxpZCByb290QWRhcHRlcgcJARBfdmFsaWRhdGVBZGRyZXNzAgUHcGF1c2VyXwIUaW5pdDogaW52YWxpZCBwYXVzZXIHAwkAAAIFA2VycgUDZXJyCQCUCgIJAM4IAgkAzggCCQDOCAIJAQlfc2F2ZUluaXQBBgkBE19zYXZlUHJvdG9jb2xDYWxsZXIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQ9wcm90b2NvbENhbGxlcl8JARBfc2F2ZVJvb3RBZGFwdGVyAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUMcm9vdEFkYXB0ZXJfCQELX3NhdmVQYXVzZXIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQdwYXVzZXJfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXJlbGVhc2VUb2tlbnMFEWV4ZWN1dGlvbkNoYWluSWRfD2V4ZWN1dGlvbkFzc2V0XwdhbW91bnRfCnJlY2lwaWVudF8OZ2FzbGVzc1Jld2FyZF8EA2VycgMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJAQ5faXNSb290QWRhcHRlcgEIBQFpBmNhbGxlcgcJARJfdmFsaWRhdGVBcmdTdHJpbmcCBQ9leGVjdXRpb25Bc3NldF8CJXJlbGVhc2VUb2tlbnM6IGludmFsaWQgZXhlY3V0aW9uQXNzZXQHCQESX3ZhbGlkYXRlQXJnU3RyaW5nAgUKcmVjaXBpZW50XwIgcmVsZWFzZVRva2VuczogaW52YWxpZCByZWNpcGllbnQHAwkAAAIFA2VycgUDZXJyBAhjYWxsQXJncwMJAAACBQ9leGVjdXRpb25Bc3NldF8CAAkAlQoDCQEXX2xvYWRDb2luQnJpZGdlQ29udHJhY3QAAg5yZWxlYXNlX3Rva2VucwkAuwkCCQDMCAIFCnJlY2lwaWVudF8JAMwIAgkApAMBBQdhbW91bnRfCQDMCAIJAKQDAQUOZ2FzbGVzc1Jld2FyZF8FA25pbAUORlVOQ19TRVBBUkFUT1IJAJUKAwkBGF9sb2FkVG9rZW5CcmlkZ2VDb250cmFjdAACDnJlbGVhc2VfdG9rZW5zCQC7CQIJAMwIAgUPZXhlY3V0aW9uQXNzZXRfCQDMCAIFCnJlY2lwaWVudF8JAMwIAgkApAMBBQdhbW91bnRfCQDMCAIJAKQDAQUOZ2FzbGVzc1Jld2FyZF8FA25pbAUORlVOQ19TRVBBUkFUT1IECmludm9jYXRpb24JAPwHBAkBE19sb2FkUHJvdG9jb2xDYWxsZXIABQlGVU5DX0NBTEwJAMwIAgURZXhlY3V0aW9uQ2hhaW5JZF8JAMwIAggFCGNhbGxBcmdzAl8xCQDMCAIIBQhjYWxsQXJncwJfMgkAzAgCCAUIY2FsbEFyZ3MCXzMFA25pbAUDbmlsAwkAAAIFCmludm9jYXRpb24FCmludm9jYXRpb24JAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCm1pbnRUb2tlbnMFEWV4ZWN1dGlvbkNoYWluSWRfD2V4ZWN1dGlvbkFzc2V0XwdhbW91bnRfCnJlY2lwaWVudF8OZ2FzbGVzc1Jld2FyZF8EA2VycgMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJAQ5faXNSb290QWRhcHRlcgEIBQFpBmNhbGxlcgcJARJfdmFsaWRhdGVBcmdTdHJpbmcCBQ9leGVjdXRpb25Bc3NldF8CIm1pbnRUb2tlbnM6IGludmFsaWQgZXhlY3V0aW9uQXNzZXQHCQESX3ZhbGlkYXRlQXJnU3RyaW5nAgUKcmVjaXBpZW50XwIdbWludFRva2VuczogaW52YWxpZCByZWNpcGllbnQHAwkAAAIFA2VycgUDZXJyBAhjYWxsQXJncwkAlQoDCQEfX2xvYWRXcmFwcGVkVG9rZW5CcmlkZ2VDb250cmFjdAACC21pbnRfdG9rZW5zCQC7CQIJAMwIAgUPZXhlY3V0aW9uQXNzZXRfCQDMCAIFCnJlY2lwaWVudF8JAMwIAgkApAMBBQdhbW91bnRfCQDMCAIJAKQDAQUOZ2FzbGVzc1Jld2FyZF8FA25pbAUORlVOQ19TRVBBUkFUT1IECmludm9jYXRpb24JAPwHBAkBE19sb2FkUHJvdG9jb2xDYWxsZXIABQlGVU5DX0NBTEwJAMwIAgURZXhlY3V0aW9uQ2hhaW5JZF8JAMwIAggFCGNhbGxBcmdzAl8xCQDMCAIIBQhjYWxsQXJncwJfMgkAzAgCCAUIY2FsbEFyZ3MCXzMFA25pbAUDbmlsAwkAAAIFCmludm9jYXRpb24FCmludm9jYXRpb24JAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFXNldENvaW5CcmlkZ2VDb250cmFjdAEJY29udHJhY3RfBANlcnIDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBF19zYXZlQ29pbkJyaWRnZUNvbnRyYWN0AQUJY29udHJhY3RfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFnNldFRva2VuQnJpZGdlQ29udHJhY3QBCWNvbnRyYWN0XwQDZXJyAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJARhfc2F2ZVRva2VuQnJpZGdlQ29udHJhY3QBBQljb250cmFjdF8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEdc2V0V3JhcHBlZFRva2VuQnJpZGdlQ29udHJhY3QBCWNvbnRyYWN0XwQDZXJyAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAR9fc2F2ZVdyYXBwZWRUb2tlbkJyaWRnZUNvbnRyYWN0AQUJY29udHJhY3RfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXBhdXNlAAQDZXJyAwMJAQtfb25seVBhdXNlcgEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBCl9zYXZlUGF1c2UBBgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQd1bnBhdXNlAAQDZXJyAwMJAQtfb25seVBhdXNlcgEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBC193aGVuUGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBCl9zYXZlUGF1c2UBBwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQx1cGRhdGVQYXVzZXIBB3BhdXNlcl8EA2VycgMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJARBfdmFsaWRhdGVBZGRyZXNzAgUHcGF1c2VyXwIcdXBkYXRlUGF1c2VyOiBpbnZhbGlkIHBhdXNlcgcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBC19zYXZlUGF1c2VyAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUHcGF1c2VyXwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtzZXRNdWx0aXNpZwEJbXVsdGlzaWdfBANlcnIDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfdmFsaWRhdGVBZGRyZXNzAgUJbXVsdGlzaWdfAh1zZXRNdWx0aXNpZzogaW52YWxpZCBtdWx0aXNpZwcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBDV9zYXZlTXVsdGlzaWcBCQERQGV4dHJOYXRpdmUoMTA2MikBBQltdWx0aXNpZ18FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABAckbWF0Y2gwCQCiCAEFDEtFWV9NVUxUSVNJRwMJAAECBQckbWF0Y2gwAgZTdHJpbmcECG11bHRpc2lnBQckbWF0Y2gwCQELdmFsdWVPckVsc2UCCQCbCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCG11bHRpc2lnCQC5CQIJAMwIAgUKS0VZX1NUQVRVUwkAzAgCCQClCAEFBHRoaXMJAMwIAgkA2AQBCAUCdHgCaWQFA25pbAUJU0VQQVJBVE9SBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleVzRRh8=", "height": 3124473, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let SEPARATOR = "__"
5+
6+let FUNC_SEPARATOR = "####"
7+
8+let KEY_INIT = "INIT"
9+
10+let KEY_MULTISIG = "MULTISIG"
11+
12+let KEY_STATUS = "STATUS"
13+
14+let KEY_PAUSED = "PAUSED"
15+
16+let KEY_PAUSER = "PAUSER"
17+
18+let KEY_ROOT_ADAPTER = "ROOT_ADAPTER"
19+
20+let KEY_PROTOCOL_CALLER = "PROTOCOL_CALLER"
21+
22+let KEY_COIN_BRIDGE_CONTRACT = "COIN_BRIDGE_CONTRACT"
23+
24+let KEY_TOKEN_BRIDGE_CONTRACT = "TOKEN_BRIDGE_CONTRACT"
25+
26+let KEY_WRAPPED_TOKEN_BRIDGE_CONTRACT = "WRAPPED_TOKEN_BRIDGE_CONTRACT"
27+
28+let FUNC_CALL = "call"
29+
30+let MAX_INT = 9223372036854775807
31+
32+func _validateAddress (address_,err_) = match addressFromString(address_) {
33+ case a: Address =>
34+ true
35+ case _ =>
36+ throw(err_)
37+}
38+
39+
40+func _validateArgString (val_,err_) = if (if (contains(val_, FUNC_SEPARATOR))
41+ then true
42+ else contains(val_, SEPARATOR))
43+ then throw(err_)
44+ else true
45+
46+
47+func _loadInit () = match getBoolean(KEY_INIT) {
48+ case a: Boolean =>
49+ a
50+ case _ =>
51+ false
52+}
53+
54+
55+func _saveInit (isInit_) = [BooleanEntry(KEY_INIT, isInit_)]
56+
57+
58+func _loadPause () = match getBoolean(KEY_PAUSED) {
59+ case a: Boolean =>
60+ a
61+ case _ =>
62+ false
63+}
64+
65+
66+func _savePause (isPaused_) = [BooleanEntry(KEY_PAUSED, isPaused_)]
67+
68+
69+func _loadPauser () = match getString(KEY_PAUSER) {
70+ case a: String =>
71+ addressFromStringValue(a)
72+ case _ =>
73+ Address(base58'')
74+}
75+
76+
77+func _savePauser (pauser_) = [StringEntry(KEY_PAUSER, toString(pauser_))]
78+
79+
80+func _loadMultisig () = match getString(KEY_MULTISIG) {
81+ case a: String =>
82+ addressFromStringValue(a)
83+ case _ =>
84+ Address(base58'')
85+}
86+
87+
88+func _saveMultisig (multisig_) = [StringEntry(KEY_MULTISIG, toString(multisig_))]
89+
90+
91+func _loadRootAdapter () = match getString(KEY_ROOT_ADAPTER) {
92+ case a: String =>
93+ addressFromStringValue(a)
94+ case _ =>
95+ Address(base58'')
96+}
97+
98+
99+func _saveRootAdapter (adapter_) = [StringEntry(KEY_ROOT_ADAPTER, toString(adapter_))]
100+
101+
102+func _loadProtocolCaller () = match getString(KEY_PROTOCOL_CALLER) {
103+ case a: String =>
104+ addressFromStringValue(a)
105+ case _ =>
106+ Address(base58'')
107+}
108+
109+
110+func _saveProtocolCaller (caller_) = [StringEntry(KEY_PROTOCOL_CALLER, toString(caller_))]
111+
112+
113+func _loadCoinBridgeContract () = match getString(KEY_COIN_BRIDGE_CONTRACT) {
114+ case a: String =>
115+ a
116+ case _ =>
117+ ""
118+}
119+
120+
121+func _saveCoinBridgeContract (contract_) = [StringEntry(KEY_COIN_BRIDGE_CONTRACT, contract_)]
122+
123+
124+func _loadTokenBridgeContract () = match getString(KEY_TOKEN_BRIDGE_CONTRACT) {
125+ case a: String =>
126+ a
127+ case _ =>
128+ ""
129+}
130+
131+
132+func _saveTokenBridgeContract (contract_) = [StringEntry(KEY_TOKEN_BRIDGE_CONTRACT, contract_)]
133+
134+
135+func _loadWrappedTokenBridgeContract () = match getString(KEY_WRAPPED_TOKEN_BRIDGE_CONTRACT) {
136+ case a: String =>
137+ a
138+ case _ =>
139+ ""
140+}
141+
142+
143+func _saveWrappedTokenBridgeContract (contract_) = [StringEntry(KEY_WRAPPED_TOKEN_BRIDGE_CONTRACT, contract_)]
144+
145+
146+func _onlyThisContract (caller_) = if ((caller_ != this))
147+ then throw("_onlyThisContract: revert")
148+ else true
149+
150+
151+func _whenMultisigSet () = if ((_loadMultisig() == Address(base58'')))
152+ then throw("_whenMultisigSet: revert")
153+ else true
154+
155+
156+func _whenNotInitialized () = if (_loadInit())
157+ then throw("_whenNotInitialized: revert")
158+ else true
159+
160+
161+func _whenInitialized () = if (!(_loadInit()))
162+ then throw("_whenInitialized: revert")
163+ else true
164+
165+
166+func _whenNotPaused () = if (_loadPause())
167+ then throw("_whenNotPaused: revert")
168+ else true
169+
170+
171+func _whenPaused () = if (!(_loadPause()))
172+ then throw("_whenPaused: revert")
173+ else true
174+
175+
176+func _onlyPauser (caller_) = if ((caller_ != _loadPauser()))
177+ then throw("_onlyPauser: revert")
178+ else true
179+
180+
181+func _isRootAdapter (caller_) = if ((_loadRootAdapter() != caller_))
182+ then throw("_isRootAdapter: revert")
183+ else true
184+
185+
186+@Callable(i)
187+func init (protocolCaller_,rootAdapter_,pauser_) = {
188+ let err = if (if (if (if (if (_onlyThisContract(i.caller))
189+ then _whenNotInitialized()
190+ else false)
191+ then _whenMultisigSet()
192+ else false)
193+ then _validateAddress(protocolCaller_, "init: invalid protocolCaller")
194+ else false)
195+ then _validateAddress(rootAdapter_, "init: invalid rootAdapter")
196+ else false)
197+ then _validateAddress(pauser_, "init: invalid pauser")
198+ else false
199+ if ((err == err))
200+ then $Tuple2((((_saveInit(true) ++ _saveProtocolCaller(addressFromStringValue(protocolCaller_))) ++ _saveRootAdapter(addressFromStringValue(rootAdapter_))) ++ _savePauser(addressFromStringValue(pauser_))), unit)
201+ else throw("Strict value is not equal to itself.")
202+ }
203+
204+
205+
206+@Callable(i)
207+func releaseTokens (executionChainId_,executionAsset_,amount_,recipient_,gaslessReward_) = {
208+ let err = if (if (if (if (_whenInitialized())
209+ then _whenNotPaused()
210+ else false)
211+ then _isRootAdapter(i.caller)
212+ else false)
213+ then _validateArgString(executionAsset_, "releaseTokens: invalid executionAsset")
214+ else false)
215+ then _validateArgString(recipient_, "releaseTokens: invalid recipient")
216+ else false
217+ if ((err == err))
218+ then {
219+ let callArgs = if ((executionAsset_ == ""))
220+ then $Tuple3(_loadCoinBridgeContract(), "release_tokens", makeString_11C([recipient_, toString(amount_), toString(gaslessReward_)], FUNC_SEPARATOR))
221+ else $Tuple3(_loadTokenBridgeContract(), "release_tokens", makeString_11C([executionAsset_, recipient_, toString(amount_), toString(gaslessReward_)], FUNC_SEPARATOR))
222+ let invocation = invoke(_loadProtocolCaller(), FUNC_CALL, [executionChainId_, callArgs._1, callArgs._2, callArgs._3], nil)
223+ if ((invocation == invocation))
224+ then $Tuple2(nil, unit)
225+ else throw("Strict value is not equal to itself.")
226+ }
227+ else throw("Strict value is not equal to itself.")
228+ }
229+
230+
231+
232+@Callable(i)
233+func mintTokens (executionChainId_,executionAsset_,amount_,recipient_,gaslessReward_) = {
234+ let err = if (if (if (if (_whenInitialized())
235+ then _whenNotPaused()
236+ else false)
237+ then _isRootAdapter(i.caller)
238+ else false)
239+ then _validateArgString(executionAsset_, "mintTokens: invalid executionAsset")
240+ else false)
241+ then _validateArgString(recipient_, "mintTokens: invalid recipient")
242+ else false
243+ if ((err == err))
244+ then {
245+ let callArgs = $Tuple3(_loadWrappedTokenBridgeContract(), "mint_tokens", makeString_11C([executionAsset_, recipient_, toString(amount_), toString(gaslessReward_)], FUNC_SEPARATOR))
246+ let invocation = invoke(_loadProtocolCaller(), FUNC_CALL, [executionChainId_, callArgs._1, callArgs._2, callArgs._3], nil)
247+ if ((invocation == invocation))
248+ then $Tuple2(nil, unit)
249+ else throw("Strict value is not equal to itself.")
250+ }
251+ else throw("Strict value is not equal to itself.")
252+ }
253+
254+
255+
256+@Callable(i)
257+func setCoinBridgeContract (contract_) = {
258+ let err = if (_onlyThisContract(i.caller))
259+ then _whenInitialized()
260+ else false
261+ if ((err == err))
262+ then $Tuple2(_saveCoinBridgeContract(contract_), unit)
263+ else throw("Strict value is not equal to itself.")
264+ }
265+
266+
267+
268+@Callable(i)
269+func setTokenBridgeContract (contract_) = {
270+ let err = if (_onlyThisContract(i.caller))
271+ then _whenInitialized()
272+ else false
273+ if ((err == err))
274+ then $Tuple2(_saveTokenBridgeContract(contract_), unit)
275+ else throw("Strict value is not equal to itself.")
276+ }
277+
278+
279+
280+@Callable(i)
281+func setWrappedTokenBridgeContract (contract_) = {
282+ let err = if (_onlyThisContract(i.caller))
283+ then _whenInitialized()
284+ else false
285+ if ((err == err))
286+ then $Tuple2(_saveWrappedTokenBridgeContract(contract_), unit)
287+ else throw("Strict value is not equal to itself.")
288+ }
289+
290+
291+
292+@Callable(i)
293+func pause () = {
294+ let err = if (if (_onlyPauser(i.caller))
295+ then _whenInitialized()
296+ else false)
297+ then _whenNotPaused()
298+ else false
299+ if ((err == err))
300+ then $Tuple2(_savePause(true), unit)
301+ else throw("Strict value is not equal to itself.")
302+ }
303+
304+
305+
306+@Callable(i)
307+func unpause () = {
308+ let err = if (if (_onlyPauser(i.caller))
309+ then _whenInitialized()
310+ else false)
311+ then _whenPaused()
312+ else false
313+ if ((err == err))
314+ then $Tuple2(_savePause(false), unit)
315+ else throw("Strict value is not equal to itself.")
316+ }
317+
318+
319+
320+@Callable(i)
321+func updatePauser (pauser_) = {
322+ let err = if (if (_onlyThisContract(i.caller))
323+ then _whenInitialized()
324+ else false)
325+ then _validateAddress(pauser_, "updatePauser: invalid pauser")
326+ else false
327+ if ((err == err))
328+ then $Tuple2(_savePauser(addressFromStringValue(pauser_)), unit)
329+ else throw("Strict value is not equal to itself.")
330+ }
331+
332+
333+
334+@Callable(i)
335+func setMultisig (multisig_) = {
336+ let err = if (_onlyThisContract(i.caller))
337+ then _validateAddress(multisig_, "setMultisig: invalid multisig")
338+ else false
339+ if ((err == err))
340+ then $Tuple2(_saveMultisig(addressFromStringValue(multisig_)), unit)
341+ else throw("Strict value is not equal to itself.")
342+ }
343+
344+
345+@Verifier(tx)
346+func verify () = match getString(KEY_MULTISIG) {
347+ case multisig: String =>
348+ valueOrElse(getBoolean(addressFromStringValue(multisig), makeString([KEY_STATUS, toString(this), toBase58String(tx.id)], SEPARATOR)), false)
349+ case _ =>
350+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
351+}
352+

github/deemru/w8io/873ac7e 
33.49 ms