tx · 4NLLUKbMXoXeWCR7VAjNKSgBN7YxvLkX1EyEVXbKuy9A

3MtMeTkpnPVAVkfrsFLuLua5urLVbbSBw6p:  -0.01600000 Waves

2023.08.08 10:30 [2701329] smart account 3MtMeTkpnPVAVkfrsFLuLua5urLVbbSBw6p > SELF 0.00000000 Waves

{ "type": 13, "id": "4NLLUKbMXoXeWCR7VAjNKSgBN7YxvLkX1EyEVXbKuy9A", "fee": 1600000, "feeAssetId": null, "timestamp": 1691479554525, "version": 2, "chainId": 84, "sender": "3MtMeTkpnPVAVkfrsFLuLua5urLVbbSBw6p", "senderPublicKey": "DojBiW1SWnPHvXvUpRw5AcLmqiiYR1dwvSCXKoGc6haJ", "proofs": [ "3Nq2fxLQwEU4u3YM4nnNADnA7CvsEM5gJPQ9UDprr35dFb65tofCvtLYocDzZxZMpCdMgqWhenrjTUtM5YyzJQnc" ], "script": "base64:BgJVCAISBgoECAgICBIGCgQBCAgBEgkKBwgICAgICAgSBAoCAQgSAwoBCBIECgIBBBIDCgEIEgUKAwEIARILCgkBCAgBAQEBAQQSABIAEgMKAQgSAwoBCEYACVNFUEFSQVRPUgICX18ACEtFWV9JTklUAgRJTklUAAxLRVlfTVVMVElTSUcCCE1VTFRJU0lHAApLRVlfU1RBVFVTAgZTVEFUVVMACktFWV9QQVVTRUQCBlBBVVNFRAAKS0VZX1BBVVNFUgIGUEFVU0VSAAxLRVlfRVhFQ1VUT1ICCEVYRUNVVE9SABBLRVlfUk9PVF9BREFQVEVSAgxST09UX0FEQVBURVIAE0tFWV9DQUxMRVJfQ09OVFJBQ1QCD0NBTExFUl9DT05UUkFDVAAJS0VZX0NIQUlOAgVDSEFJTgALS0VZX0JJTkRJTkcCB0JJTkRJTkcAB0tFWV9GRUUCA0ZFRQALS0VZX0JBTEFOQ0UCB0JBTEFOQ0UAEUtFWV9GRUVfUkVDSVBJRU5UAg1GRUVfUkVDSVBJRU5UABhLRVlfUkVGRVJSRVJfRkVFX1BFUkNFTlQCFFJFRkVSUkVSX0ZFRV9QRVJDRU5UABBGVU5DX01JTlRfVE9LRU5TAgptaW50VG9rZW5zAAVXQVZFUwIFV0FWRVMADldBVkVTX0RFQ0lNQUxTAAgACERFQ0lNQUxTAAYADlBFUkNFTlRfRkFDVE9SAMCEPQAQTUFYX1JFRkVSUkVSX0ZFRQDAmgwAB01BWF9JTlQA//////////9/ARBfdmFsaWRhdGVBZGRyZXNzAghhZGRyZXNzXwRlcnJfBAckbWF0Y2gwCQCmCAEFCGFkZHJlc3NfAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAGCQACAQUEZXJyXwEOX3ZhbGlkYXRlQXNzZXQCCGFzc2V0SWRfBGVycl8EByRtYXRjaDAJAOwHAQkA2QQBBQhhc3NldElkXwMJAAECBQckbWF0Y2gwAgVBc3NldAQBYQUHJG1hdGNoMAYJAAIBBQRlcnJfAQxfdmFsaWRhdGVJbnQEBHZhbF8ObG93ZXJCb3VuZGFyeV8OdXBwZXJCb3VuZGFyeV8EZXJyXwMDCQBmAgUObG93ZXJCb3VuZGFyeV8FBHZhbF8GCQBmAgUEdmFsXwUOdXBwZXJCb3VuZGFyeV8JAAIBBQRlcnJfBgENX3ZhbGlkYXRlQm9vbAMEdmFsXwd0YXJnZXRfBGVycl8DCQECIT0CBQR2YWxfBQd0YXJnZXRfCQACAQUEZXJyXwYBD192YWxpZGF0ZVN0cmluZwIEdmFsXwRlcnJfAwMJAGcCAAAJALECAQUEdmFsXwYJAQhjb250YWlucwIFBHZhbF8FCVNFUEFSQVRPUgkAAgEFBGVycl8GARRfdmFsaWRhdGVFbXB0eVN0cmluZwIEdmFsXwRlcnJfAwkAZgIJALECAQUEdmFsXwAACQACAQUEZXJyXwYBFV92YWxpZGF0ZVBheW1lbnRzU2l6ZQMJcGF5bWVudHNfB3RhcmdldF8EZXJyXwMJAQIhPQIJAJADAQUJcGF5bWVudHNfBQd0YXJnZXRfCQACAQUEZXJyXwYBEV92YWxpZGF0ZVJlZmVycmVyAglyZWZlcnJlcl8EZXJyXwMJAQIhPQIFCXJlZmVycmVyXwIACQEQX3ZhbGlkYXRlQWRkcmVzcwIFCXJlZmVycmVyXwUEZXJyXwYBDF9nZXREZWNpbWFscwEIYXNzZXRJZF8EByRtYXRjaDAJAOwHAQkA2QQBBQhhc3NldElkXwMJAAECBQckbWF0Y2gwAgVBc3NldAQBYQUHJG1hdGNoMAgFAWEIZGVjaW1hbHMJAAIBCQCsAgICF19nZXREZWNpbWFsczogbm8gYXNzZXQ9BQhhc3NldElkXwESX25vcm1hbGl6ZURlY2ltYWxzAwdhbW91bnRfD3NvdXJjZURlY2ltYWxzXw90YXJnZXREZWNpbWFsc18DCQBnAgUPc291cmNlRGVjaW1hbHNfBQ90YXJnZXREZWNpbWFsc18JAGkCBQdhbW91bnRfCQBsBgAKAAAJAGUCBQ9zb3VyY2VEZWNpbWFsc18FD3RhcmdldERlY2ltYWxzXwAAAAAFBERPV04JAGgCBQdhbW91bnRfCQBsBgAKAAAJAGUCBQ90YXJnZXREZWNpbWFsc18FD3NvdXJjZURlY2ltYWxzXwAAAAAFBERPV04BCV9sb2FkSW5pdAAEByRtYXRjaDAJAKAIAQUIS0VZX0lOSVQDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYQUHJG1hdGNoMAUBYQcBCV9zYXZlSW5pdAEHaXNJbml0XwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUIS0VZX0lOSVQFB2lzSW5pdF8FA25pbAEKX2xvYWRQYXVzZQAEByRtYXRjaDAJAKAIAQUKS0VZX1BBVVNFRAMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFhBQckbWF0Y2gwBQFhBwEKX3NhdmVQYXVzZQEJaXNQYXVzZWRfCQDMCAIJAQxCb29sZWFuRW50cnkCBQpLRVlfUEFVU0VEBQlpc1BhdXNlZF8FA25pbAELX2xvYWRQYXVzZXIABAckbWF0Y2gwCQCiCAEFCktFWV9QQVVTRVIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAELX3NhdmVQYXVzZXIBB3BhdXNlcl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUKS0VZX1BBVVNFUgkApQgBBQdwYXVzZXJfBQNuaWwBDV9sb2FkTXVsdGlzaWcABAckbWF0Y2gwCQCiCAEFDEtFWV9NVUxUSVNJRwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQ1fc2F2ZU11bHRpc2lnAQltdWx0aXNpZ18JAMwIAgkBC1N0cmluZ0VudHJ5AgUMS0VZX01VTFRJU0lHCQClCAEFCW11bHRpc2lnXwUDbmlsAQ1fbG9hZEV4ZWN1dG9yAAQHJG1hdGNoMAkAoggBBQxLRVlfRVhFQ1VUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAENX3NhdmVFeGVjdXRvcgEJZXhlY3V0b3JfCQDMCAIJAQtTdHJpbmdFbnRyeQIFDEtFWV9FWEVDVVRPUgkApQgBBQlleGVjdXRvcl8FA25pbAETX2xvYWRDYWxsZXJDb250cmFjdAAEByRtYXRjaDAJAKIIAQUTS0VZX0NBTExFUl9DT05UUkFDVAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAETX3NhdmVDYWxsZXJDb250cmFjdAEHY2FsbGVyXwkAzAgCCQELU3RyaW5nRW50cnkCBRNLRVlfQ0FMTEVSX0NPTlRSQUNUBQdjYWxsZXJfBQNuaWwBCl9sb2FkQ2hhaW4BCGNoYWluSWRfBAckbWF0Y2gwCQCgCAEJALkJAgkAzAgCBQlLRVlfQ0hBSU4JAMwIAgkApAMBBQhjaGFpbklkXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYQUHJG1hdGNoMAUBYQcBCl9zYXZlQ2hhaW4CCGNoYWluSWRfBHZhbF8JAMwIAgkBDEJvb2xlYW5FbnRyeQIJALkJAgkAzAgCBQlLRVlfQ0hBSU4JAMwIAgkApAMBBQhjaGFpbklkXwUDbmlsBQlTRVBBUkFUT1IFBHZhbF8FA25pbAEMX2xvYWRCaW5kaW5nAhFleGVjdXRpb25DaGFpbklkXwhhc3NldElkXwQHJG1hdGNoMAkAoggBCQC5CQIJAMwIAgULS0VZX0JJTkRJTkcJAMwIAgkApAMBBRFleGVjdXRpb25DaGFpbklkXwkAzAgCCQDYBAEFCGFzc2V0SWRfBQNuaWwFCVNFUEFSQVRPUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAEBnN0cnVjdAkAtQkCBQFhBQlTRVBBUkFUT1IJAJkKBwkAkQMCBQZzdHJ1Y3QAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RydWN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdHJ1Y3QAAwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAAECQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RydWN0AAUDCQAAAgkAkQMCBQZzdHJ1Y3QABgIBMQYHCQCZCgcCAAAAAAAAAAAAAAAHAQxfc2F2ZUJpbmRpbmcDEWV4ZWN1dGlvbkNoYWluSWRfCGFzc2V0SWRfCGJpbmRpbmdfCQDMCAIJAQtTdHJpbmdFbnRyeQIJALkJAgkAzAgCBQtLRVlfQklORElORwkAzAgCCQCkAwEFEWV4ZWN1dGlvbkNoYWluSWRfCQDMCAIJANgEAQUIYXNzZXRJZF8FA25pbAUJU0VQQVJBVE9SCQC5CQIJAMwIAggFCGJpbmRpbmdfAl8xCQDMCAIJAKQDAQgFCGJpbmRpbmdfAl8yCQDMCAIJAKQDAQgFCGJpbmRpbmdfAl8zCQDMCAIJAKQDAQgFCGJpbmRpbmdfAl80CQDMCAIJAKQDAQgFCGJpbmRpbmdfAl81CQDMCAIJAKQDAQgFCGJpbmRpbmdfAl82CQDMCAIDCAUIYmluZGluZ18CXzcCATECATAFA25pbAUJU0VQQVJBVE9SBQNuaWwBCF9sb2FkRmVlAQhhc3NldElkXwQHJG1hdGNoMAkAnwgBCQC5CQIJAMwIAgUHS0VZX0ZFRQkAzAgCCQDYBAEFCGFzc2V0SWRfBQNuaWwFCVNFUEFSQVRPUgMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAEIX3NhdmVGZWUCCGFzc2V0SWRfBHZhbF8JAMwIAgkBDEludGVnZXJFbnRyeQIJALkJAgkAzAgCBQdLRVlfRkVFCQDMCAIJANgEAQUIYXNzZXRJZF8FA25pbAUJU0VQQVJBVE9SBQR2YWxfBQNuaWwBDF9sb2FkQmFsYW5jZQEIYXNzZXRJZF8EByRtYXRjaDAJAJ8IAQkAuQkCCQDMCAIFC0tFWV9CQUxBTkNFCQDMCAIJANgEAQUIYXNzZXRJZF8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAQxfc2F2ZUJhbGFuY2UCCGFzc2V0SWRfBHZhbF8JAMwIAgkBDEludGVnZXJFbnRyeQIJALkJAgkAzAgCBQtLRVlfQkFMQU5DRQkAzAgCCQDYBAEFCGFzc2V0SWRfBQNuaWwFCVNFUEFSQVRPUgUEdmFsXwUDbmlsARBfbG9hZFJvb3RBZGFwdGVyAAQHJG1hdGNoMAkAoggBBRBLRVlfUk9PVF9BREFQVEVSAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABEF9zYXZlUm9vdEFkYXB0ZXIBCGFkYXB0ZXJfCQDMCAIJAQtTdHJpbmdFbnRyeQIFEEtFWV9ST09UX0FEQVBURVIJAKUIAQUIYWRhcHRlcl8FA25pbAERX2xvYWRGZWVSZWNpcGllbnQABAckbWF0Y2gwCQCiCAEFEUtFWV9GRUVfUkVDSVBJRU5UAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABEV9zYXZlRmVlUmVjaXBpZW50AQR2YWxfCQDMCAIJAQtTdHJpbmdFbnRyeQIFEUtFWV9GRUVfUkVDSVBJRU5UCQClCAEFBHZhbF8FA25pbAEXX2xvYWRSZWZlcnJlckZlZVBlcmNlbnQCEWV4ZWN1dGlvbkNoYWluSWRfCXJlZmVycmVyXwQHJG1hdGNoMAkAnwgBCQC5CQIJAMwIAgUYS0VZX1JFRkVSUkVSX0ZFRV9QRVJDRU5UCQDMCAIJAKQDAQURZXhlY3V0aW9uQ2hhaW5JZF8JAMwIAgkApQgBBQlyZWZlcnJlcl8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAARdfc2F2ZVJlZmVycmVyRmVlUGVyY2VudAMRZXhlY3V0aW9uQ2hhaW5JZF8JcmVmZXJyZXJfBHZhbF8JAMwIAgkBDEludGVnZXJFbnRyeQIJALkJAgkAzAgCBRhLRVlfUkVGRVJSRVJfRkVFX1BFUkNFTlQJAMwIAgkApAMBBRFleGVjdXRpb25DaGFpbklkXwkAzAgCCQClCAEFCXJlZmVycmVyXwUDbmlsBQlTRVBBUkFUT1IFBHZhbF8FA25pbAERX29ubHlUaGlzQ29udHJhY3QBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfBQR0aGlzCQACAQIZX29ubHlUaGlzQ29udHJhY3Q6IHJldmVydAYBEF93aGVuTXVsdGlzaWdTZXQAAwkAAAIJAQ1fbG9hZE11bHRpc2lnAAkBB0FkZHJlc3MBAQAJAAIBAhhfd2hlbk11bHRpc2lnU2V0OiByZXZlcnQGARNfd2hlbk5vdEluaXRpYWxpemVkAAMJAQlfbG9hZEluaXQACQACAQIbX3doZW5Ob3RJbml0aWFsaXplZDogcmV2ZXJ0BgEQX3doZW5Jbml0aWFsaXplZAADCQEBIQEJAQlfbG9hZEluaXQACQACAQIYX3doZW5Jbml0aWFsaXplZDogcmV2ZXJ0BgEOX3doZW5Ob3RQYXVzZWQAAwkBCl9sb2FkUGF1c2UACQACAQIWX3doZW5Ob3RQYXVzZWQ6IHJldmVydAYBC193aGVuUGF1c2VkAAMJAQEhAQkBCl9sb2FkUGF1c2UACQACAQITX3doZW5QYXVzZWQ6IHJldmVydAYBC19vbmx5UGF1c2VyAQdjYWxsZXJfAwkBAiE9AgUHY2FsbGVyXwkBC19sb2FkUGF1c2VyAAkAAgECE19vbmx5UGF1c2VyOiByZXZlcnQGAQZfYXNJbnQBBHZhbF8EByRtYXRjaDAFBHZhbF8DCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhCQACAQIOX2FzSW50OiByZXZlcnQBCF9hc0J5dGVzAQR2YWxfBAckbWF0Y2gwBQR2YWxfAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWEFByRtYXRjaDAFAWEJAAIBAhBfYXNCeXRlczogcmV2ZXJ0ARFfdmFsaWRhdGVFeGVjdXRvcgIEdmFsXwRlcnJfAwkBAiE9AgUEdmFsXwkBDV9sb2FkRXhlY3V0b3IACQACAQUEZXJyXwYBD192YWxpZGF0ZUNhbGxlcgIEdmFsXwRlcnJfAwkBAiE9AgUEdmFsXwkBE19sb2FkQ2FsbGVyQ29udHJhY3QACQACAQUEZXJyXwYBDl92YWxpZGF0ZUNoYWluAhFleGVjdXRpb25DaGFpbklkXwRlcnJfAwkBASEBCQEKX2xvYWRDaGFpbgEFEWV4ZWN1dGlvbkNoYWluSWRfCQACAQUEZXJyXwYNAWkBBGluaXQECWV4ZWN1dG9yXwhhZGFwdGVyXwdwYXVzZXJfDWZlZVJlY2lwaWVudF8EA2VycgMDAwMDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQETX3doZW5Ob3RJbml0aWFsaXplZAAHCQEQX3doZW5NdWx0aXNpZ1NldAAHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFCWV4ZWN1dG9yXwIWaW5pdDogaW52YWxpZCBleGVjdXRvcgcJARBfdmFsaWRhdGVBZGRyZXNzAgUIYWRhcHRlcl8CFWluaXQ6IGludmFsaWQgYWRhcHRlcgcJARBfdmFsaWRhdGVBZGRyZXNzAgUHcGF1c2VyXwIUaW5pdDogaW52YWxpZCBwYXVzZXIHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFDWZlZVJlY2lwaWVudF8CGmluaXQ6IGludmFsaWQgZmVlUmVjaXBpZW50BwMJAAACBQNlcnIFA2VycgkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIJAQlfc2F2ZUluaXQBBgkBDV9zYXZlRXhlY3V0b3IBCQERQGV4dHJOYXRpdmUoMTA2MikBBQlleGVjdXRvcl8JARBfc2F2ZVJvb3RBZGFwdGVyAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUIYWRhcHRlcl8JAQtfc2F2ZVBhdXNlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3BhdXNlcl8JARFfc2F2ZUZlZVJlY2lwaWVudAEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDWZlZVJlY2lwaWVudF8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKbG9ja1Rva2VucwQRZXhlY3V0aW9uQ2hhaW5JZF8KcmVjaXBpZW50XwlyZWZlcnJlcl8OZ2FzbGVzc1Jld2FyZF8EA2VycgMDAwMDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwkBDl92YWxpZGF0ZUNoYWluAgURZXhlY3V0aW9uQ2hhaW5JZF8CI2xvY2tUb2tlbnM6IGludmFsaWQgZXhlY3V0aW9uIGNoYWluBwkBFV92YWxpZGF0ZVBheW1lbnRzU2l6ZQMIBQFpCHBheW1lbnRzAAECFmxvY2tUb2tlbnM6IG5vIHBheW1lbnQHCQEMX3ZhbGlkYXRlSW50BAUOZ2FzbGVzc1Jld2FyZF8AAAUHTUFYX0lOVAIhbG9ja1Rva2VuczogaW52YWxpZCBnYXNsZXNzUmV3YXJkBwkBDF92YWxpZGF0ZUludAQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAAFB01BWF9JTlQCImxvY2tUb2tlbnM6IGludmFsaWQgcGF5bWVudCBhbW91bnQHCQERX3ZhbGlkYXRlUmVmZXJyZXICBQlyZWZlcnJlcl8CHGxvY2tUb2tlbnM6IGludmFsaWQgcmVmZXJyZXIHAwkAAAIFA2VycgUDZXJyBAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAdhc3NldElkBAckbWF0Y2gwCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYQUHJG1hdGNoMAUBYQkAAgECGWxvY2tUb2tlbnM6IGludmFsaWQgYXNzZXQEB2JpbmRpbmcJAQxfbG9hZEJpbmRpbmcCBRFleGVjdXRpb25DaGFpbklkXwUHYXNzZXRJZAQOZXhlY3V0aW9uQXNzZXQIBQdiaW5kaW5nAl8xBAltaW5BbW91bnQIBQdiaW5kaW5nAl8yBAZtaW5GZWUIBQdiaW5kaW5nAl8zBAx0aHJlc2hvbGRGZWUIBQdiaW5kaW5nAl80BBBiZWZvcmVQZXJjZW50RmVlCAUHYmluZGluZwJfNQQPYWZ0ZXJQZXJjZW50RmVlCAUHYmluZGluZwJfNgQHZW5hYmxlZAgFB2JpbmRpbmcCXzcEBGVycjEDAwkBD192YWxpZGF0ZVN0cmluZwIFDmV4ZWN1dGlvbkFzc2V0Ahtsb2NrVG9rZW5zOiBubyBzdWNoIGJpbmRpbmcJAQxfdmFsaWRhdGVJbnQEBQZhbW91bnQFCW1pbkFtb3VudAUHTUFYX0lOVAIZbG9ja1Rva2VuczogbGVzcyB0aGFuIG1pbgcJAQ1fdmFsaWRhdGVCb29sAwUHZW5hYmxlZAYCHWxvY2tUb2tlbnM6IHRva2VuIGlzIGRpc2FibGVkBwMJAAACBQRlcnIxBQRlcnIxBA1hc3NldERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQkA2AQBBQdhc3NldElkBAdwZXJjZW50AwkAZgIFBmFtb3VudAUMdGhyZXNob2xkRmVlBQ9hZnRlclBlcmNlbnRGZWUFEGJlZm9yZVBlcmNlbnRGZWUEA2ZlZQkAZAIFBm1pbkZlZQkAawMFBmFtb3VudAUHcGVyY2VudAUOUEVSQ0VOVF9GQUNUT1IEBGVycjIJAQxfdmFsaWRhdGVJbnQEBQZhbW91bnQJAGQCBQNmZWUAAQUHTUFYX0lOVAIgbG9ja1Rva2VuczogZmVlIG1vcmUgdGhhbiBhbW91bnQDCQAAAgUEZXJyMgUEZXJyMgQNJHQwMTE4NDMxMjI0OAMJAQIhPQIFCXJlZmVycmVyXwIABAhyZWZlcnJlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUJcmVmZXJyZXJfBBFyZWZlcnJlckZlZUFtb3VudAkAawMJARdfbG9hZFJlZmVycmVyRmVlUGVyY2VudAIFEWV4ZWN1dGlvbkNoYWluSWRfBQhyZWZlcnJlcgUDZmVlBQ5QRVJDRU5UX0ZBQ1RPUgkAlAoCBRFyZWZlcnJlckZlZUFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhyZWZlcnJlcgURcmVmZXJyZXJGZWVBbW91bnQFB2Fzc2V0SWQFA25pbAkAlAoCAAAFA25pbAQLcmVmZXJyZXJGZWUIBQ0kdDAxMTg0MzEyMjQ4Al8xBA9yZWZlcnJlckFjdGlvbnMIBQ0kdDAxMTg0MzEyMjQ4Al8yBAxhbW91bnRUb1NlbmQJAGUCBQZhbW91bnQFA2ZlZQQEZXJyMwkBDF92YWxpZGF0ZUludAQFDGFtb3VudFRvU2VuZAkAZAIFDmdhc2xlc3NSZXdhcmRfAAEFB01BWF9JTlQCI2xvY2tUb2tlbnM6IHJld2FyZCBtb3JlIHRoYW4gYW1vdW50AwkAAAIFBGVycjMFBGVycjMEC2Ftb3VudFRvRmVlCQBlAgUDZmVlBQtyZWZlcnJlckZlZQQQbm9ybWFsaXplZEFtb3VudAkBEl9ub3JtYWxpemVEZWNpbWFscwMFDGFtb3VudFRvU2VuZAUNYXNzZXREZWNpbWFscwUIREVDSU1BTFMEEW5vcm1hbGl6ZWRHYXNsZXNzCQESX25vcm1hbGl6ZURlY2ltYWxzAwUOZ2FzbGVzc1Jld2FyZF8FDWFzc2V0RGVjaW1hbHMFCERFQ0lNQUxTBAppbnZvY2F0aW9uCQD8BwQJARBfbG9hZFJvb3RBZGFwdGVyAAUQRlVOQ19NSU5UX1RPS0VOUwkAzAgCBRFleGVjdXRpb25DaGFpbklkXwkAzAgCBQ5leGVjdXRpb25Bc3NldAkAzAgCBRBub3JtYWxpemVkQW1vdW50CQDMCAIFCnJlY2lwaWVudF8JAMwIAgURbm9ybWFsaXplZEdhc2xlc3MFA25pbAUDbmlsAwkAAAIFCmludm9jYXRpb24FCmludm9jYXRpb24JAJQKAgkAzggCCQDOCAIJAQhfc2F2ZUZlZQIFB2Fzc2V0SWQJAGQCCQEIX2xvYWRGZWUBBQdhc3NldElkBQthbW91bnRUb0ZlZQkBDF9zYXZlQmFsYW5jZQIFB2Fzc2V0SWQJAGQCCQEMX2xvYWRCYWxhbmNlAQUHYXNzZXRJZAUMYW1vdW50VG9TZW5kBQ9yZWZlcnJlckFjdGlvbnMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENcmVsZWFzZVRva2VucwcPY2FsbGVyQ29udHJhY3RfCGFzc2V0SWRfB2Ftb3VudF8KcmVjaXBpZW50Xw5nYXNsZXNzUmV3YXJkXwlyZWZlcnJlcl8McmVmZXJyZXJGZWVfBAZhbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBBQdhbW91bnRfAiByZWxlYXNlVG9rZW5zOiBhbW91bnQgaXMgbm90IEludAQNZ2FzbGVzc1Jld2FyZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFDmdhc2xlc3NSZXdhcmRfAidyZWxlYXNlVG9rZW5zOiBnYXNsZXNzUmV3YXJkIGlzIG5vdCBJbnQEC3JlZmVycmVyRmVlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQUMcmVmZXJyZXJGZWVfAiVyZWxlYXNlVG9rZW5zOiByZWZlcnJlckZlZSBpcyBub3QgSW50BANlcnIDAwMDAwMDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwkBDl92YWxpZGF0ZUFzc2V0AgUIYXNzZXRJZF8CH3JlbGVhc2VUb2tlbnM6IGludmFsaWQgYXNzZXQgaWQHCQERX3ZhbGlkYXRlRXhlY3V0b3ICCAUBaQZjYWxsZXICH3JlbGVhc2VUb2tlbnM6IGludmFsaWQgZXhlY3V0b3IHCQEPX3ZhbGlkYXRlQ2FsbGVyAgUPY2FsbGVyQ29udHJhY3RfAh1yZWxlYXNlVG9rZW5zOiBpbnZhbGlkIGNhbGxlcgcJARBfdmFsaWRhdGVBZGRyZXNzAgUKcmVjaXBpZW50XwIocmVsZWFzZVRva2VuczogaW52YWxpZCByZWNpcGllbnQgYWRkcmVzcwcJAQxfdmFsaWRhdGVJbnQEBQZhbW91bnQAAAUHTUFYX0lOVAIdcmVsZWFzZVRva2VuczogaW52YWxpZCBhbW91bnQHCQEMX3ZhbGlkYXRlSW50BAUNZ2FzbGVzc1Jld2FyZAAABQdNQVhfSU5UAiRyZWxlYXNlVG9rZW5zOiBpbnZhbGlkIGdhc2xlc3NSZXdhcmQHCQEMX3ZhbGlkYXRlSW50BAULcmVmZXJyZXJGZWUAAAUHTUFYX0lOVAIjcmVsZWFzZVRva2VuczogaW52YWxpZCByZWZlcnJlciBmZWUHAwkAAAIFA2VycgUDZXJyBAdhc3NldElkCQDZBAEFCGFzc2V0SWRfBA1hc3NldERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUIYXNzZXRJZF8EEG5vcm1hbGl6ZWRBbW91bnQJARJfbm9ybWFsaXplRGVjaW1hbHMDBQZhbW91bnQFCERFQ0lNQUxTBQ1hc3NldERlY2ltYWxzBBFub3JtYWxpemVkR2FzbGVzcwkBEl9ub3JtYWxpemVEZWNpbWFscwMFDWdhc2xlc3NSZXdhcmQFCERFQ0lNQUxTBQ1hc3NldERlY2ltYWxzBAhyZWZlcnJlcgQHJG1hdGNoMAkApggBBQlyZWZlcnJlcl8DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQOcmVmZXJlckFkZHJlc3MFByRtYXRjaDAEFW5vcm1hbGl6ZWRSZWZlcnJlckZlZQkBEl9ub3JtYWxpemVEZWNpbWFscwMFC3JlZmVycmVyRmVlBQhERUNJTUFMUwUNYXNzZXREZWNpbWFscwkAlAoCBRVub3JtYWxpemVkUmVmZXJyZXJGZWUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOcmVmZXJlckFkZHJlc3MFFW5vcm1hbGl6ZWRSZWZlcnJlckZlZQUHYXNzZXRJZAUDbmlsCQCUCgIAAAUDbmlsBBVub3JtYWxpemVkUmVmZXJyZXJGZWUIBQhyZWZlcnJlcgJfMQQPcmVmZXJyZXJBY3Rpb25zCAUIcmVmZXJyZXICXzIEB2FjdGlvbnMDAwkAZgIFEW5vcm1hbGl6ZWRHYXNsZXNzAAAJAQIhPQIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCnJlY2lwaWVudF8IBQFpDG9yaWdpbkNhbGxlcgcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUKcmVjaXBpZW50XwkAZQIFEG5vcm1hbGl6ZWRBbW91bnQFEW5vcm1hbGl6ZWRHYXNsZXNzBQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpDG9yaWdpbkNhbGxlcgURbm9ybWFsaXplZEdhc2xlc3MFB2Fzc2V0SWQFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQpyZWNpcGllbnRfBRBub3JtYWxpemVkQW1vdW50BQdhc3NldElkBQNuaWwJAJQKAgkAzggCCQDOCAIJAQxfc2F2ZUJhbGFuY2UCBQdhc3NldElkCQBlAgkAZQIJAQxfbG9hZEJhbGFuY2UBBQdhc3NldElkBRBub3JtYWxpemVkQW1vdW50BRVub3JtYWxpemVkUmVmZXJyZXJGZWUFB2FjdGlvbnMFD3JlZmVycmVyQWN0aW9ucwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQt0cmFuc2ZlckZlZQIRZXhlY3V0aW9uQ2hhaW5JZF8IYXNzZXRJZF8EA2VycgMDCQEQX3doZW5Jbml0aWFsaXplZAAJAQ5fd2hlbk5vdFBhdXNlZAAHCQEOX3ZhbGlkYXRlQXNzZXQCBQhhc3NldElkXwIadHJhbnNmZXJGZWU6IGludmFsaWQgYXNzZXQHAwkAAAIFA2VycgUDZXJyBAdhc3NldElkCQDZBAEFCGFzc2V0SWRfBAdiaW5kaW5nCQEMX2xvYWRCaW5kaW5nAgURZXhlY3V0aW9uQ2hhaW5JZF8FB2Fzc2V0SWQEDmV4ZWN1dGlvbkFzc2V0CAUHYmluZGluZwJfMQQHZW5hYmxlZAgFB2JpbmRpbmcCXzcEBGVycjEDCQEPX3ZhbGlkYXRlU3RyaW5nAgUOZXhlY3V0aW9uQXNzZXQCHHRyYW5zZmVyRmVlOiBubyBzdWNoIGJpbmRpbmcJAQ1fdmFsaWRhdGVCb29sAwUHZW5hYmxlZAYCHnRyYW5zZmVyRmVlOiB0b2tlbiBpcyBkaXNhYmxlZAcDCQAAAgUEZXJyMQUEZXJyMQkAlAoCCQDOCAIJAQhfc2F2ZUZlZQIFB2Fzc2V0SWQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERX2xvYWRGZWVSZWNpcGllbnQACQEIX2xvYWRGZWUBBQdhc3NldElkBQdhc3NldElkBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEUdXBkYXRlQ2FsbGVyQ29udHJhY3QBD2NhbGxlckNvbnRyYWN0XwQDZXJyAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJARNfc2F2ZUNhbGxlckNvbnRyYWN0AQUPY2FsbGVyQ29udHJhY3RfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFHVwZGF0ZUV4ZWN1dGlvbkNoYWluAhFleGVjdXRpb25DaGFpbklkXwhlbmFibGVkXwQDZXJyAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBDF92YWxpZGF0ZUludAQFEWV4ZWN1dGlvbkNoYWluSWRfAAAFB01BWF9JTlQCLnVwZGF0ZUV4ZWN1dGlvbkNoYWluOiBpbnZhbGlkIGV4ZWN1dGlvbkNoYWluSWQHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZUNoYWluAgURZXhlY3V0aW9uQ2hhaW5JZF8FCGVuYWJsZWRfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEnVwZGF0ZUZlZVJlY2lwaWVudAENZmVlUmVjaXBpZW50XwQDZXJyAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBEF92YWxpZGF0ZUFkZHJlc3MCBQ1mZWVSZWNpcGllbnRfAih1cGRhdGVGZWVSZWNpcGllbnQ6IGludmFsaWQgZmVlUmVjaXBpZW50BwMJAAACBQNlcnIFA2VycgkAlAoCCQERX3NhdmVGZWVSZWNpcGllbnQBCQERQGV4dHJOYXRpdmUoMTA2MikBBQ1mZWVSZWNpcGllbnRfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDnVwZGF0ZVJlZmVycmVyAxFleGVjdXRpb25DaGFpbklkXwlyZWZlcnJlcl8EZmVlXwQDZXJyAwMDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEOX3ZhbGlkYXRlQ2hhaW4CBRFleGVjdXRpb25DaGFpbklkXwIndXBkYXRlUmVmZXJyZXI6IGludmFsaWQgZXhlY3V0aW9uIGNoYWluBwkBEF92YWxpZGF0ZUFkZHJlc3MCBQlyZWZlcnJlcl8CIHVwZGF0ZVJlZmVycmVyOiBpbnZhbGlkIHJlZmVycmVyBwkBDF92YWxpZGF0ZUludAQFBGZlZV8AAAUQTUFYX1JFRkVSUkVSX0ZFRQIbdXBkYXRlUmVmZXJyZXI6IGludmFsaWQgZmVlBwMJAAACBQNlcnIFA2VycgkAlAoCCQEXX3NhdmVSZWZlcnJlckZlZVBlcmNlbnQDBRFleGVjdXRpb25DaGFpbklkXwkBEUBleHRyTmF0aXZlKDEwNjIpAQUJcmVmZXJyZXJfBQRmZWVfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEXVwZGF0ZUJpbmRpbmdJbmZvCRFleGVjdXRpb25DaGFpbklkXwhhc3NldElkXw9leGVjdXRpb25Bc3NldF8KbWluQW1vdW50XwdtaW5GZWVfDXRocmVzaG9sZEZlZV8RYmVmb3JlUGVyY2VudEZlZV8QYWZ0ZXJQZXJjZW50RmVlXwhlbmFibGVkXwQDZXJyAwMDAwMDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBDl92YWxpZGF0ZUFzc2V0AgUIYXNzZXRJZF8CI3VwZGF0ZUJpbmRpbmdJbmZvOiBpbnZhbGlkIGFzc2V0IGlkBwkBDF92YWxpZGF0ZUludAQFEWV4ZWN1dGlvbkNoYWluSWRfAAAFB01BWF9JTlQCK3VwZGF0ZUJpbmRpbmdJbmZvOiBpbnZhbGlkIGV4ZWN1dGlvbkNoYWluSWQHCQEMX3ZhbGlkYXRlSW50BAUKbWluQW1vdW50XwAABQdNQVhfSU5UAiR1cGRhdGVCaW5kaW5nSW5mbzogaW52YWxpZCBtaW5BbW91bnQHCQEMX3ZhbGlkYXRlSW50BAUHbWluRmVlXwAABQdNQVhfSU5UAiF1cGRhdGVCaW5kaW5nSW5mbzogaW52YWxpZCBtaW5GZWUHCQEMX3ZhbGlkYXRlSW50BAUNdGhyZXNob2xkRmVlXwAABQdNQVhfSU5UAid1cGRhdGVCaW5kaW5nSW5mbzogaW52YWxpZCB0aHJlc2hvbGRGZWUHCQEMX3ZhbGlkYXRlSW50BAURYmVmb3JlUGVyY2VudEZlZV8AAAUHTUFYX0lOVAIrdXBkYXRlQmluZGluZ0luZm86IGludmFsaWQgYmVmb3JlUGVyY2VudEZlZQcJAQxfdmFsaWRhdGVJbnQEBRBhZnRlclBlcmNlbnRGZWVfAAAFB01BWF9JTlQCKnVwZGF0ZUJpbmRpbmdJbmZvOiBpbnZhbGlkIGFmdGVyUGVyY2VudEZlZQcDCQAAAgUDZXJyBQNlcnIEB2JpbmRpbmcJAJkKBwUPZXhlY3V0aW9uQXNzZXRfBQptaW5BbW91bnRfBQdtaW5GZWVfBQ10aHJlc2hvbGRGZWVfBRFiZWZvcmVQZXJjZW50RmVlXwUQYWZ0ZXJQZXJjZW50RmVlXwUIZW5hYmxlZF8JAJQKAgkBDF9zYXZlQmluZGluZwMFEWV4ZWN1dGlvbkNoYWluSWRfCQDZBAEFCGFzc2V0SWRfBQdiaW5kaW5nBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXBhdXNlAAQDZXJyAwMJAQtfb25seVBhdXNlcgEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBCl9zYXZlUGF1c2UBBgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQd1bnBhdXNlAAQDZXJyAwMJAQtfb25seVBhdXNlcgEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBC193aGVuUGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBCl9zYXZlUGF1c2UBBwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQx1cGRhdGVQYXVzZXIBB3BhdXNlcl8EA2VycgMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJARBfdmFsaWRhdGVBZGRyZXNzAgUHcGF1c2VyXwIcdXBkYXRlUGF1c2VyOiBpbnZhbGlkIHBhdXNlcgcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBC19zYXZlUGF1c2VyAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUHcGF1c2VyXwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtzZXRNdWx0aXNpZwEJbXVsdGlzaWdfBANlcnIDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfdmFsaWRhdGVBZGRyZXNzAgUJbXVsdGlzaWdfAh1zZXRNdWx0aXNpZzogaW52YWxpZCBtdWx0aXNpZwcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBDV9zYXZlTXVsdGlzaWcBCQERQGV4dHJOYXRpdmUoMTA2MikBBQltdWx0aXNpZ18FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABAckbWF0Y2gwCQCiCAEFDEtFWV9NVUxUSVNJRwMJAAECBQckbWF0Y2gwAgZTdHJpbmcECG11bHRpc2lnBQckbWF0Y2gwCQELdmFsdWVPckVsc2UCCQCbCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCG11bHRpc2lnCQC5CQIJAMwIAgUKS0VZX1NUQVRVUwkAzAgCCQClCAEFBHRoaXMJAMwIAgkA2AQBCAUCdHgCaWQFA25pbAUJU0VQQVJBVE9SBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleSunrXE=", "height": 2701329, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 26uthRGKiQUUYbPCRwkidbYL99ZaXNZm3wd6pJgFrKVd Next: none Diff:
OldNewDifferences
409409 let normalizedGasless = _normalizeDecimals(gaslessReward_, assetDecimals, DECIMALS)
410410 let invocation = invoke(_loadRootAdapter(), FUNC_MINT_TOKENS, [executionChainId_, executionAsset, normalizedAmount, recipient_, normalizedGasless], nil)
411411 if ((invocation == invocation))
412- then $Tuple2((((_saveFee(assetId, (_loadFee(assetId) + amountToFee)) ++ _saveBalance(assetId, (_loadBalance(assetId) + amountToSend))) ++ referrerActions) ++ [Burn(assetId, amountToSend)]), unit)
412+ then $Tuple2(((_saveFee(assetId, (_loadFee(assetId) + amountToFee)) ++ _saveBalance(assetId, (_loadBalance(assetId) + amountToSend))) ++ referrerActions), unit)
413413 else throw("Strict value is not equal to itself.")
414414 }
415415 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEPARATOR = "__"
55
66 let KEY_INIT = "INIT"
77
88 let KEY_MULTISIG = "MULTISIG"
99
1010 let KEY_STATUS = "STATUS"
1111
1212 let KEY_PAUSED = "PAUSED"
1313
1414 let KEY_PAUSER = "PAUSER"
1515
1616 let KEY_EXECUTOR = "EXECUTOR"
1717
1818 let KEY_ROOT_ADAPTER = "ROOT_ADAPTER"
1919
2020 let KEY_CALLER_CONTRACT = "CALLER_CONTRACT"
2121
2222 let KEY_CHAIN = "CHAIN"
2323
2424 let KEY_BINDING = "BINDING"
2525
2626 let KEY_FEE = "FEE"
2727
2828 let KEY_BALANCE = "BALANCE"
2929
3030 let KEY_FEE_RECIPIENT = "FEE_RECIPIENT"
3131
3232 let KEY_REFERRER_FEE_PERCENT = "REFERRER_FEE_PERCENT"
3333
3434 let FUNC_MINT_TOKENS = "mintTokens"
3535
3636 let WAVES = "WAVES"
3737
3838 let WAVES_DECIMALS = 8
3939
4040 let DECIMALS = 6
4141
4242 let PERCENT_FACTOR = 1000000
4343
4444 let MAX_REFERRER_FEE = 200000
4545
4646 let MAX_INT = 9223372036854775807
4747
4848 func _validateAddress (address_,err_) = match addressFromString(address_) {
4949 case a: Address =>
5050 true
5151 case _ =>
5252 throw(err_)
5353 }
5454
5555
5656 func _validateAsset (assetId_,err_) = match assetInfo(fromBase58String(assetId_)) {
5757 case a: Asset =>
5858 true
5959 case _ =>
6060 throw(err_)
6161 }
6262
6363
6464 func _validateInt (val_,lowerBoundary_,upperBoundary_,err_) = if (if ((lowerBoundary_ > val_))
6565 then true
6666 else (val_ > upperBoundary_))
6767 then throw(err_)
6868 else true
6969
7070
7171 func _validateBool (val_,target_,err_) = if ((val_ != target_))
7272 then throw(err_)
7373 else true
7474
7575
7676 func _validateString (val_,err_) = if (if ((0 >= size(val_)))
7777 then true
7878 else contains(val_, SEPARATOR))
7979 then throw(err_)
8080 else true
8181
8282
8383 func _validateEmptyString (val_,err_) = if ((size(val_) > 0))
8484 then throw(err_)
8585 else true
8686
8787
8888 func _validatePaymentsSize (payments_,target_,err_) = if ((size(payments_) != target_))
8989 then throw(err_)
9090 else true
9191
9292
9393 func _validateReferrer (referrer_,err_) = if ((referrer_ != ""))
9494 then _validateAddress(referrer_, err_)
9595 else true
9696
9797
9898 func _getDecimals (assetId_) = match assetInfo(fromBase58String(assetId_)) {
9999 case a: Asset =>
100100 a.decimals
101101 case _ =>
102102 throw(("_getDecimals: no asset=" + assetId_))
103103 }
104104
105105
106106 func _normalizeDecimals (amount_,sourceDecimals_,targetDecimals_) = if ((sourceDecimals_ >= targetDecimals_))
107107 then (amount_ / pow(10, 0, (sourceDecimals_ - targetDecimals_), 0, 0, DOWN))
108108 else (amount_ * pow(10, 0, (targetDecimals_ - sourceDecimals_), 0, 0, DOWN))
109109
110110
111111 func _loadInit () = match getBoolean(KEY_INIT) {
112112 case a: Boolean =>
113113 a
114114 case _ =>
115115 false
116116 }
117117
118118
119119 func _saveInit (isInit_) = [BooleanEntry(KEY_INIT, isInit_)]
120120
121121
122122 func _loadPause () = match getBoolean(KEY_PAUSED) {
123123 case a: Boolean =>
124124 a
125125 case _ =>
126126 false
127127 }
128128
129129
130130 func _savePause (isPaused_) = [BooleanEntry(KEY_PAUSED, isPaused_)]
131131
132132
133133 func _loadPauser () = match getString(KEY_PAUSER) {
134134 case a: String =>
135135 addressFromStringValue(a)
136136 case _ =>
137137 Address(base58'')
138138 }
139139
140140
141141 func _savePauser (pauser_) = [StringEntry(KEY_PAUSER, toString(pauser_))]
142142
143143
144144 func _loadMultisig () = match getString(KEY_MULTISIG) {
145145 case a: String =>
146146 addressFromStringValue(a)
147147 case _ =>
148148 Address(base58'')
149149 }
150150
151151
152152 func _saveMultisig (multisig_) = [StringEntry(KEY_MULTISIG, toString(multisig_))]
153153
154154
155155 func _loadExecutor () = match getString(KEY_EXECUTOR) {
156156 case a: String =>
157157 addressFromStringValue(a)
158158 case _ =>
159159 Address(base58'')
160160 }
161161
162162
163163 func _saveExecutor (executor_) = [StringEntry(KEY_EXECUTOR, toString(executor_))]
164164
165165
166166 func _loadCallerContract () = match getString(KEY_CALLER_CONTRACT) {
167167 case a: String =>
168168 a
169169 case _ =>
170170 ""
171171 }
172172
173173
174174 func _saveCallerContract (caller_) = [StringEntry(KEY_CALLER_CONTRACT, caller_)]
175175
176176
177177 func _loadChain (chainId_) = match getBoolean(makeString([KEY_CHAIN, toString(chainId_)], SEPARATOR)) {
178178 case a: Boolean =>
179179 a
180180 case _ =>
181181 false
182182 }
183183
184184
185185 func _saveChain (chainId_,val_) = [BooleanEntry(makeString([KEY_CHAIN, toString(chainId_)], SEPARATOR), val_)]
186186
187187
188188 func _loadBinding (executionChainId_,assetId_) = match getString(makeString([KEY_BINDING, toString(executionChainId_), toBase58String(assetId_)], SEPARATOR)) {
189189 case a: String =>
190190 let struct = split(a, SEPARATOR)
191191 $Tuple7(struct[0], parseIntValue(struct[1]), parseIntValue(struct[2]), parseIntValue(struct[3]), parseIntValue(struct[4]), parseIntValue(struct[5]), if ((struct[6] == "1"))
192192 then true
193193 else false)
194194 case _ =>
195195 $Tuple7("", 0, 0, 0, 0, 0, false)
196196 }
197197
198198
199199 func _saveBinding (executionChainId_,assetId_,binding_) = [StringEntry(makeString([KEY_BINDING, toString(executionChainId_), toBase58String(assetId_)], SEPARATOR), makeString([binding_._1, toString(binding_._2), toString(binding_._3), toString(binding_._4), toString(binding_._5), toString(binding_._6), if (binding_._7)
200200 then "1"
201201 else "0"], SEPARATOR))]
202202
203203
204204 func _loadFee (assetId_) = match getInteger(makeString([KEY_FEE, toBase58String(assetId_)], SEPARATOR)) {
205205 case a: Int =>
206206 a
207207 case _ =>
208208 0
209209 }
210210
211211
212212 func _saveFee (assetId_,val_) = [IntegerEntry(makeString([KEY_FEE, toBase58String(assetId_)], SEPARATOR), val_)]
213213
214214
215215 func _loadBalance (assetId_) = match getInteger(makeString([KEY_BALANCE, toBase58String(assetId_)], SEPARATOR)) {
216216 case a: Int =>
217217 a
218218 case _ =>
219219 0
220220 }
221221
222222
223223 func _saveBalance (assetId_,val_) = [IntegerEntry(makeString([KEY_BALANCE, toBase58String(assetId_)], SEPARATOR), val_)]
224224
225225
226226 func _loadRootAdapter () = match getString(KEY_ROOT_ADAPTER) {
227227 case a: String =>
228228 addressFromStringValue(a)
229229 case _ =>
230230 Address(base58'')
231231 }
232232
233233
234234 func _saveRootAdapter (adapter_) = [StringEntry(KEY_ROOT_ADAPTER, toString(adapter_))]
235235
236236
237237 func _loadFeeRecipient () = match getString(KEY_FEE_RECIPIENT) {
238238 case a: String =>
239239 addressFromStringValue(a)
240240 case _ =>
241241 Address(base58'')
242242 }
243243
244244
245245 func _saveFeeRecipient (val_) = [StringEntry(KEY_FEE_RECIPIENT, toString(val_))]
246246
247247
248248 func _loadReferrerFeePercent (executionChainId_,referrer_) = match getInteger(makeString([KEY_REFERRER_FEE_PERCENT, toString(executionChainId_), toString(referrer_)], SEPARATOR)) {
249249 case a: Int =>
250250 a
251251 case _ =>
252252 0
253253 }
254254
255255
256256 func _saveReferrerFeePercent (executionChainId_,referrer_,val_) = [IntegerEntry(makeString([KEY_REFERRER_FEE_PERCENT, toString(executionChainId_), toString(referrer_)], SEPARATOR), val_)]
257257
258258
259259 func _onlyThisContract (caller_) = if ((caller_ != this))
260260 then throw("_onlyThisContract: revert")
261261 else true
262262
263263
264264 func _whenMultisigSet () = if ((_loadMultisig() == Address(base58'')))
265265 then throw("_whenMultisigSet: revert")
266266 else true
267267
268268
269269 func _whenNotInitialized () = if (_loadInit())
270270 then throw("_whenNotInitialized: revert")
271271 else true
272272
273273
274274 func _whenInitialized () = if (!(_loadInit()))
275275 then throw("_whenInitialized: revert")
276276 else true
277277
278278
279279 func _whenNotPaused () = if (_loadPause())
280280 then throw("_whenNotPaused: revert")
281281 else true
282282
283283
284284 func _whenPaused () = if (!(_loadPause()))
285285 then throw("_whenPaused: revert")
286286 else true
287287
288288
289289 func _onlyPauser (caller_) = if ((caller_ != _loadPauser()))
290290 then throw("_onlyPauser: revert")
291291 else true
292292
293293
294294 func _asInt (val_) = match val_ {
295295 case a: Int =>
296296 a
297297 case _ =>
298298 throw("_asInt: revert")
299299 }
300300
301301
302302 func _asBytes (val_) = match val_ {
303303 case a: ByteVector =>
304304 a
305305 case _ =>
306306 throw("_asBytes: revert")
307307 }
308308
309309
310310 func _validateExecutor (val_,err_) = if ((val_ != _loadExecutor()))
311311 then throw(err_)
312312 else true
313313
314314
315315 func _validateCaller (val_,err_) = if ((val_ != _loadCallerContract()))
316316 then throw(err_)
317317 else true
318318
319319
320320 func _validateChain (executionChainId_,err_) = if (!(_loadChain(executionChainId_)))
321321 then throw(err_)
322322 else true
323323
324324
325325 @Callable(i)
326326 func init (executor_,adapter_,pauser_,feeRecipient_) = {
327327 let err = if (if (if (if (if (if (_onlyThisContract(i.caller))
328328 then _whenNotInitialized()
329329 else false)
330330 then _whenMultisigSet()
331331 else false)
332332 then _validateAddress(executor_, "init: invalid executor")
333333 else false)
334334 then _validateAddress(adapter_, "init: invalid adapter")
335335 else false)
336336 then _validateAddress(pauser_, "init: invalid pauser")
337337 else false)
338338 then _validateAddress(feeRecipient_, "init: invalid feeRecipient")
339339 else false
340340 if ((err == err))
341341 then $Tuple2(((((_saveInit(true) ++ _saveExecutor(addressFromStringValue(executor_))) ++ _saveRootAdapter(addressFromStringValue(adapter_))) ++ _savePauser(addressFromStringValue(pauser_))) ++ _saveFeeRecipient(addressFromStringValue(feeRecipient_))), unit)
342342 else throw("Strict value is not equal to itself.")
343343 }
344344
345345
346346
347347 @Callable(i)
348348 func lockTokens (executionChainId_,recipient_,referrer_,gaslessReward_) = {
349349 let err = if (if (if (if (if (if (_whenInitialized())
350350 then _whenNotPaused()
351351 else false)
352352 then _validateChain(executionChainId_, "lockTokens: invalid execution chain")
353353 else false)
354354 then _validatePaymentsSize(i.payments, 1, "lockTokens: no payment")
355355 else false)
356356 then _validateInt(gaslessReward_, 0, MAX_INT, "lockTokens: invalid gaslessReward")
357357 else false)
358358 then _validateInt(i.payments[0].amount, 0, MAX_INT, "lockTokens: invalid payment amount")
359359 else false)
360360 then _validateReferrer(referrer_, "lockTokens: invalid referrer")
361361 else false
362362 if ((err == err))
363363 then {
364364 let amount = i.payments[0].amount
365365 let assetId = match i.payments[0].assetId {
366366 case a: ByteVector =>
367367 a
368368 case _ =>
369369 throw("lockTokens: invalid asset")
370370 }
371371 let binding = _loadBinding(executionChainId_, assetId)
372372 let executionAsset = binding._1
373373 let minAmount = binding._2
374374 let minFee = binding._3
375375 let thresholdFee = binding._4
376376 let beforePercentFee = binding._5
377377 let afterPercentFee = binding._6
378378 let enabled = binding._7
379379 let err1 = if (if (_validateString(executionAsset, "lockTokens: no such binding"))
380380 then _validateInt(amount, minAmount, MAX_INT, "lockTokens: less than min")
381381 else false)
382382 then _validateBool(enabled, true, "lockTokens: token is disabled")
383383 else false
384384 if ((err1 == err1))
385385 then {
386386 let assetDecimals = _getDecimals(toBase58String(assetId))
387387 let percent = if ((amount > thresholdFee))
388388 then afterPercentFee
389389 else beforePercentFee
390390 let fee = (minFee + fraction(amount, percent, PERCENT_FACTOR))
391391 let err2 = _validateInt(amount, (fee + 1), MAX_INT, "lockTokens: fee more than amount")
392392 if ((err2 == err2))
393393 then {
394394 let $t01184312248 = if ((referrer_ != ""))
395395 then {
396396 let referrer = addressFromStringValue(referrer_)
397397 let referrerFeeAmount = fraction(_loadReferrerFeePercent(executionChainId_, referrer), fee, PERCENT_FACTOR)
398398 $Tuple2(referrerFeeAmount, [ScriptTransfer(referrer, referrerFeeAmount, assetId)])
399399 }
400400 else $Tuple2(0, nil)
401401 let referrerFee = $t01184312248._1
402402 let referrerActions = $t01184312248._2
403403 let amountToSend = (amount - fee)
404404 let err3 = _validateInt(amountToSend, (gaslessReward_ + 1), MAX_INT, "lockTokens: reward more than amount")
405405 if ((err3 == err3))
406406 then {
407407 let amountToFee = (fee - referrerFee)
408408 let normalizedAmount = _normalizeDecimals(amountToSend, assetDecimals, DECIMALS)
409409 let normalizedGasless = _normalizeDecimals(gaslessReward_, assetDecimals, DECIMALS)
410410 let invocation = invoke(_loadRootAdapter(), FUNC_MINT_TOKENS, [executionChainId_, executionAsset, normalizedAmount, recipient_, normalizedGasless], nil)
411411 if ((invocation == invocation))
412- then $Tuple2((((_saveFee(assetId, (_loadFee(assetId) + amountToFee)) ++ _saveBalance(assetId, (_loadBalance(assetId) + amountToSend))) ++ referrerActions) ++ [Burn(assetId, amountToSend)]), unit)
412+ then $Tuple2(((_saveFee(assetId, (_loadFee(assetId) + amountToFee)) ++ _saveBalance(assetId, (_loadBalance(assetId) + amountToSend))) ++ referrerActions), unit)
413413 else throw("Strict value is not equal to itself.")
414414 }
415415 else throw("Strict value is not equal to itself.")
416416 }
417417 else throw("Strict value is not equal to itself.")
418418 }
419419 else throw("Strict value is not equal to itself.")
420420 }
421421 else throw("Strict value is not equal to itself.")
422422 }
423423
424424
425425
426426 @Callable(i)
427427 func releaseTokens (callerContract_,assetId_,amount_,recipient_,gaslessReward_,referrer_,referrerFee_) = {
428428 let amount = valueOrErrorMessage(parseInt(amount_), "releaseTokens: amount is not Int")
429429 let gaslessReward = valueOrErrorMessage(parseInt(gaslessReward_), "releaseTokens: gaslessReward is not Int")
430430 let referrerFee = valueOrErrorMessage(parseInt(referrerFee_), "releaseTokens: referrerFee is not Int")
431431 let err = if (if (if (if (if (if (if (if (_whenInitialized())
432432 then _whenNotPaused()
433433 else false)
434434 then _validateAsset(assetId_, "releaseTokens: invalid asset id")
435435 else false)
436436 then _validateExecutor(i.caller, "releaseTokens: invalid executor")
437437 else false)
438438 then _validateCaller(callerContract_, "releaseTokens: invalid caller")
439439 else false)
440440 then _validateAddress(recipient_, "releaseTokens: invalid recipient address")
441441 else false)
442442 then _validateInt(amount, 0, MAX_INT, "releaseTokens: invalid amount")
443443 else false)
444444 then _validateInt(gaslessReward, 0, MAX_INT, "releaseTokens: invalid gaslessReward")
445445 else false)
446446 then _validateInt(referrerFee, 0, MAX_INT, "releaseTokens: invalid referrer fee")
447447 else false
448448 if ((err == err))
449449 then {
450450 let assetId = fromBase58String(assetId_)
451451 let assetDecimals = _getDecimals(assetId_)
452452 let normalizedAmount = _normalizeDecimals(amount, DECIMALS, assetDecimals)
453453 let normalizedGasless = _normalizeDecimals(gaslessReward, DECIMALS, assetDecimals)
454454 let referrer = match addressFromString(referrer_) {
455455 case refererAddress: Address =>
456456 let normalizedReferrerFee = _normalizeDecimals(referrerFee, DECIMALS, assetDecimals)
457457 $Tuple2(normalizedReferrerFee, [ScriptTransfer(refererAddress, normalizedReferrerFee, assetId)])
458458 case _ =>
459459 $Tuple2(0, nil)
460460 }
461461 let normalizedReferrerFee = referrer._1
462462 let referrerActions = referrer._2
463463 let actions = if (if ((normalizedGasless > 0))
464464 then (addressFromStringValue(recipient_) != i.originCaller)
465465 else false)
466466 then [ScriptTransfer(addressFromStringValue(recipient_), (normalizedAmount - normalizedGasless), assetId), ScriptTransfer(i.originCaller, normalizedGasless, assetId)]
467467 else [ScriptTransfer(addressFromStringValue(recipient_), normalizedAmount, assetId)]
468468 $Tuple2(((_saveBalance(assetId, ((_loadBalance(assetId) - normalizedAmount) - normalizedReferrerFee)) ++ actions) ++ referrerActions), unit)
469469 }
470470 else throw("Strict value is not equal to itself.")
471471 }
472472
473473
474474
475475 @Callable(i)
476476 func transferFee (executionChainId_,assetId_) = {
477477 let err = if (if (_whenInitialized())
478478 then _whenNotPaused()
479479 else false)
480480 then _validateAsset(assetId_, "transferFee: invalid asset")
481481 else false
482482 if ((err == err))
483483 then {
484484 let assetId = fromBase58String(assetId_)
485485 let binding = _loadBinding(executionChainId_, assetId)
486486 let executionAsset = binding._1
487487 let enabled = binding._7
488488 let err1 = if (_validateString(executionAsset, "transferFee: no such binding"))
489489 then _validateBool(enabled, true, "transferFee: token is disabled")
490490 else false
491491 if ((err1 == err1))
492492 then $Tuple2((_saveFee(assetId, 0) ++ [ScriptTransfer(_loadFeeRecipient(), _loadFee(assetId), assetId)]), unit)
493493 else throw("Strict value is not equal to itself.")
494494 }
495495 else throw("Strict value is not equal to itself.")
496496 }
497497
498498
499499
500500 @Callable(i)
501501 func updateCallerContract (callerContract_) = {
502502 let err = if (_onlyThisContract(i.caller))
503503 then _whenInitialized()
504504 else false
505505 if ((err == err))
506506 then $Tuple2(_saveCallerContract(callerContract_), unit)
507507 else throw("Strict value is not equal to itself.")
508508 }
509509
510510
511511
512512 @Callable(i)
513513 func updateExecutionChain (executionChainId_,enabled_) = {
514514 let err = if (if (_onlyThisContract(i.caller))
515515 then _whenInitialized()
516516 else false)
517517 then _validateInt(executionChainId_, 0, MAX_INT, "updateExecutionChain: invalid executionChainId")
518518 else false
519519 if ((err == err))
520520 then $Tuple2(_saveChain(executionChainId_, enabled_), unit)
521521 else throw("Strict value is not equal to itself.")
522522 }
523523
524524
525525
526526 @Callable(i)
527527 func updateFeeRecipient (feeRecipient_) = {
528528 let err = if (if (_onlyThisContract(i.caller))
529529 then _whenInitialized()
530530 else false)
531531 then _validateAddress(feeRecipient_, "updateFeeRecipient: invalid feeRecipient")
532532 else false
533533 if ((err == err))
534534 then $Tuple2(_saveFeeRecipient(addressFromStringValue(feeRecipient_)), unit)
535535 else throw("Strict value is not equal to itself.")
536536 }
537537
538538
539539
540540 @Callable(i)
541541 func updateReferrer (executionChainId_,referrer_,fee_) = {
542542 let err = if (if (if (if (_onlyThisContract(i.caller))
543543 then _whenInitialized()
544544 else false)
545545 then _validateChain(executionChainId_, "updateReferrer: invalid execution chain")
546546 else false)
547547 then _validateAddress(referrer_, "updateReferrer: invalid referrer")
548548 else false)
549549 then _validateInt(fee_, 0, MAX_REFERRER_FEE, "updateReferrer: invalid fee")
550550 else false
551551 if ((err == err))
552552 then $Tuple2(_saveReferrerFeePercent(executionChainId_, addressFromStringValue(referrer_), fee_), unit)
553553 else throw("Strict value is not equal to itself.")
554554 }
555555
556556
557557
558558 @Callable(i)
559559 func updateBindingInfo (executionChainId_,assetId_,executionAsset_,minAmount_,minFee_,thresholdFee_,beforePercentFee_,afterPercentFee_,enabled_) = {
560560 let err = if (if (if (if (if (if (if (if (_onlyThisContract(i.caller))
561561 then _whenInitialized()
562562 else false)
563563 then _validateAsset(assetId_, "updateBindingInfo: invalid asset id")
564564 else false)
565565 then _validateInt(executionChainId_, 0, MAX_INT, "updateBindingInfo: invalid executionChainId")
566566 else false)
567567 then _validateInt(minAmount_, 0, MAX_INT, "updateBindingInfo: invalid minAmount")
568568 else false)
569569 then _validateInt(minFee_, 0, MAX_INT, "updateBindingInfo: invalid minFee")
570570 else false)
571571 then _validateInt(thresholdFee_, 0, MAX_INT, "updateBindingInfo: invalid thresholdFee")
572572 else false)
573573 then _validateInt(beforePercentFee_, 0, MAX_INT, "updateBindingInfo: invalid beforePercentFee")
574574 else false)
575575 then _validateInt(afterPercentFee_, 0, MAX_INT, "updateBindingInfo: invalid afterPercentFee")
576576 else false
577577 if ((err == err))
578578 then {
579579 let binding = $Tuple7(executionAsset_, minAmount_, minFee_, thresholdFee_, beforePercentFee_, afterPercentFee_, enabled_)
580580 $Tuple2(_saveBinding(executionChainId_, fromBase58String(assetId_), binding), unit)
581581 }
582582 else throw("Strict value is not equal to itself.")
583583 }
584584
585585
586586
587587 @Callable(i)
588588 func pause () = {
589589 let err = if (if (_onlyPauser(i.caller))
590590 then _whenInitialized()
591591 else false)
592592 then _whenNotPaused()
593593 else false
594594 if ((err == err))
595595 then $Tuple2(_savePause(true), unit)
596596 else throw("Strict value is not equal to itself.")
597597 }
598598
599599
600600
601601 @Callable(i)
602602 func unpause () = {
603603 let err = if (if (_onlyPauser(i.caller))
604604 then _whenInitialized()
605605 else false)
606606 then _whenPaused()
607607 else false
608608 if ((err == err))
609609 then $Tuple2(_savePause(false), unit)
610610 else throw("Strict value is not equal to itself.")
611611 }
612612
613613
614614
615615 @Callable(i)
616616 func updatePauser (pauser_) = {
617617 let err = if (if (_onlyThisContract(i.caller))
618618 then _whenInitialized()
619619 else false)
620620 then _validateAddress(pauser_, "updatePauser: invalid pauser")
621621 else false
622622 if ((err == err))
623623 then $Tuple2(_savePauser(addressFromStringValue(pauser_)), unit)
624624 else throw("Strict value is not equal to itself.")
625625 }
626626
627627
628628
629629 @Callable(i)
630630 func setMultisig (multisig_) = {
631631 let err = if (_onlyThisContract(i.caller))
632632 then _validateAddress(multisig_, "setMultisig: invalid multisig")
633633 else false
634634 if ((err == err))
635635 then $Tuple2(_saveMultisig(addressFromStringValue(multisig_)), unit)
636636 else throw("Strict value is not equal to itself.")
637637 }
638638
639639
640640 @Verifier(tx)
641641 func verify () = match getString(KEY_MULTISIG) {
642642 case multisig: String =>
643643 valueOrElse(getBoolean(addressFromStringValue(multisig), makeString([KEY_STATUS, toString(this), toBase58String(tx.id)], SEPARATOR)), false)
644644 case _ =>
645645 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
646646 }
647647

github/deemru/w8io/169f3d6 
66.06 ms