tx · HfffEfpdbouHSRyMP4KWMeXRHjGYMhaLj3pXp57tQvGP

3MxTLPY7MJxVDfpJcNy9Liq2r8pyZxNbjjU:  -0.01400000 Waves

2023.03.09 18:49 [2482761] smart account 3MxTLPY7MJxVDfpJcNy9Liq2r8pyZxNbjjU > SELF 0.00000000 Waves

{ "type": 13, "id": "HfffEfpdbouHSRyMP4KWMeXRHjGYMhaLj3pXp57tQvGP", "fee": 1400000, "feeAssetId": null, "timestamp": 1678376998166, "version": 2, "chainId": 84, "sender": "3MxTLPY7MJxVDfpJcNy9Liq2r8pyZxNbjjU", "senderPublicKey": "9iq3qkUQrdNdSB4GA6y4ATzwCKQUBDgLpcfWzmyJshzW", "proofs": [ "5A3cr998mgHCM3GqFotgcbF6vjhzCWkLHtRWnBWoVMWxucYrfjjEuk5iDhK2Dp7cJTaHoaRJJJm3wdtrBV4FZ2cr" ], "script": "base64:BgInCAISBAoCCAESBQoDAQgIEgMKAQgSAwoBCBIAEgASAwoBCBIDCgEIKwAJU0VQQVJBVE9SAgJfXwAIS0VZX0lOSVQCBElOSVQADEtFWV9NVUxUSVNJRwIITVVMVElTSUcACktFWV9TVEFUVVMCBlNUQVRVUwAKS0VZX1BBVVNFRAIGUEFVU0VEAApLRVlfUEFVU0VSAgZQQVVTRVIADUtFWV9BTExPV0FOQ0UCCUFMTE9XQU5DRQARS0VZX0NBTExfQ0hBSU5fSUQCDUNBTExfQ0hBSU5fSUQADktFWV9FVkVOVF9TSVpFAgpFVkVOVF9TSVpFAAlLRVlfRVZFTlQCBUVWRU5UAAlLRVlfTk9OQ0UCBU5PTkNFAAdNQVhfSU5UAP//////////fwAJU0xPVF9TSVpFACAACVpFUk9fU0xPVAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEF92YWxpZGF0ZUFkZHJlc3MCCGFkZHJlc3NfBGVycl8EByRtYXRjaDAJAKYIAQUIYWRkcmVzc18DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAYJAAIBBQRlcnJfAQxfdmFsaWRhdGVJbnQEBHZhbF8ObG93ZXJCb3VuZGFyeV8OdXBwZXJCb3VuZGFyeV8EZXJyXwMDCQBmAgUObG93ZXJCb3VuZGFyeV8FBHZhbF8GCQBmAgUEdmFsXwUOdXBwZXJCb3VuZGFyeV8JAAIBBQRlcnJfBgEJX2xvYWRJbml0AAQHJG1hdGNoMAkAoAgBBQhLRVlfSU5JVAMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFhBQckbWF0Y2gwBQFhBwEJX3NhdmVJbml0AQdpc0luaXRfCQDMCAIJAQxCb29sZWFuRW50cnkCBQhLRVlfSU5JVAUHaXNJbml0XwUDbmlsAQpfbG9hZFBhdXNlAAQHJG1hdGNoMAkAoAgBBQpLRVlfUEFVU0VEAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWEFByRtYXRjaDAFAWEHAQpfc2F2ZVBhdXNlAQlpc1BhdXNlZF8JAMwIAgkBDEJvb2xlYW5FbnRyeQIFCktFWV9QQVVTRUQFCWlzUGF1c2VkXwUDbmlsAQtfbG9hZFBhdXNlcgAEByRtYXRjaDAJAKIIAQUKS0VZX1BBVVNFUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQtfc2F2ZVBhdXNlcgEHcGF1c2VyXwkAzAgCCQELU3RyaW5nRW50cnkCBQpLRVlfUEFVU0VSCQClCAEFB3BhdXNlcl8FA25pbAEOX2xvYWRBbGxvd2FuY2UBB2NhbGxlcl8EByRtYXRjaDAJAKAIAQkAuQkCCQDMCAIFDUtFWV9BTExPV0FOQ0UJAMwIAgkApQgBBQdjYWxsZXJfBQNuaWwFCVNFUEFSQVRPUgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFhBQckbWF0Y2gwBQFhBwEOX3NhdmVBbGxvd2FuY2UCB2NhbGxlcl8EdmFsXwkAzAgCCQEMQm9vbGVhbkVudHJ5AgkAuQkCCQDMCAIFDUtFWV9BTExPV0FOQ0UJAMwIAgkApQgBBQdjYWxsZXJfBQNuaWwFCVNFUEFSQVRPUgUEdmFsXwUDbmlsAQ1fbG9hZE11bHRpc2lnAAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAENX3NhdmVNdWx0aXNpZwEJbXVsdGlzaWdfCQDMCAIJAQtTdHJpbmdFbnRyeQIFDEtFWV9NVUxUSVNJRwkApQgBBQltdWx0aXNpZ18FA25pbAEQX2xvYWRDYWxsQ2hhaW5JZAAEByRtYXRjaDAJAJ8IAQURS0VZX0NBTExfQ0hBSU5fSUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABEF9zYXZlQ2FsbENoYWluSWQBDGNhbGxDaGFpbklkXwkAzAgCCQEMSW50ZWdlckVudHJ5AgURS0VZX0NBTExfQ0hBSU5fSUQFDGNhbGxDaGFpbklkXwUDbmlsAQ5fbG9hZEV2ZW50U2l6ZQAEByRtYXRjaDAJAJ8IAQUOS0VZX0VWRU5UX1NJWkUDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABDl9zYXZlRXZlbnRTaXplAQZpbmRleF8JAMwIAgkBDEludGVnZXJFbnRyeQIFDktFWV9FVkVOVF9TSVpFBQZpbmRleF8FA25pbAEKX3NhdmVFdmVudAIGaW5kZXhfBmV2ZW50XwkAzAgCCQELU3RyaW5nRW50cnkCCQC5CQIJAMwIAgUJS0VZX0VWRU5UCQDMCAIJAKQDAQUGaW5kZXhfBQNuaWwFCVNFUEFSQVRPUgkAuQkCCQDMCAIJAKQDAQgFBmV2ZW50XwJfMQkAzAgCCQCkAwEIBQZldmVudF8CXzIJAMwIAggFBmV2ZW50XwJfMwkAzAgCCAUGZXZlbnRfAl80CQDMCAIJAKQDAQgFBmV2ZW50XwJfNQkAzAgCCAUGZXZlbnRfAl82CQDMCAIJAKQDAQgFBmV2ZW50XwJfNwUDbmlsBQlTRVBBUkFUT1IFA25pbAEKX2xvYWROb25jZQAEByRtYXRjaDAJAJ8IAQUJS0VZX05PTkNFAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAQpfc2F2ZU5vbmNlAQR2YWxfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlLRVlfTk9OQ0UFBHZhbF8FA25pbAERX29ubHlUaGlzQ29udHJhY3QBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfBQR0aGlzCQACAQIZX29ubHlUaGlzQ29udHJhY3Q6IHJldmVydAYBEF93aGVuTXVsdGlzaWdTZXQAAwkAAAIJAQ1fbG9hZE11bHRpc2lnAAkBB0FkZHJlc3MBAQAJAAIBAhhfd2hlbk11bHRpc2lnU2V0OiByZXZlcnQGARNfd2hlbk5vdEluaXRpYWxpemVkAAMJAQlfbG9hZEluaXQACQACAQIbX3doZW5Ob3RJbml0aWFsaXplZDogcmV2ZXJ0BgEQX3doZW5Jbml0aWFsaXplZAADCQEBIQEJAQlfbG9hZEluaXQACQACAQIYX3doZW5Jbml0aWFsaXplZDogcmV2ZXJ0BgEOX3doZW5Ob3RQYXVzZWQAAwkBCl9sb2FkUGF1c2UACQACAQIWX3doZW5Ob3RQYXVzZWQ6IHJldmVydAYBC193aGVuUGF1c2VkAAMJAQEhAQkBCl9sb2FkUGF1c2UACQACAQITX3doZW5QYXVzZWQ6IHJldmVydAYBC19vbmx5UGF1c2VyAQdjYWxsZXJfAwkBAiE9AgUHY2FsbGVyXwkBC19sb2FkUGF1c2VyAAkAAgECE19vbmx5UGF1c2VyOiByZXZlcnQGAQxfd2hlbkFsbG93ZWQBB2NhbGxlcl8DCQEBIQEJAQ5fbG9hZEFsbG93YW5jZQEFB2NhbGxlcl8JAAIBAhRfd2hlbkFsbG93ZWQ6IHJldmVydAYBC19hbGlnblJpZ2h0AQR2YWxfCQDLAQIJAMkBAgUJWkVST19TTE9UCQBlAgUJU0xPVF9TSVpFCQDIAQEFBHZhbF8FBHZhbF8BB19hZGRBcmcCCWNhbGxkYXRhXwRhcmdfBAhjYWxsZGF0YQkA3QQBCQCwAgIFCWNhbGxkYXRhXwACCQCsAgICAjB4CQDcBAEJAMsBAgkAywECCQDJAQIFCGNhbGxkYXRhAAQJAQtfYWxpZ25SaWdodAEFBGFyZ18JAMoBAgUIY2FsbGRhdGEABAgBaQEEaW5pdAIHcGF1c2VyXwxjYWxsQ2hhaW5JZF8EA2VycgMDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBE193aGVuTm90SW5pdGlhbGl6ZWQABwkBEF93aGVuTXVsdGlzaWdTZXQABwkBEF92YWxpZGF0ZUFkZHJlc3MCBQdwYXVzZXJfAhRpbml0OiBpbnZhbGlkIHBhdXNlcgcJAQxfdmFsaWRhdGVJbnQEBQxjYWxsQ2hhaW5JZF8AAAUHTUFYX0lOVAIbaW5pdDogaW52YWxpZCBjYWxsIGNoYWluIGlkBwMJAAACBQNlcnIFA2VycgkAlAoCCQDOCAIJAM4IAgkBCV9zYXZlSW5pdAEGCQELX3NhdmVQYXVzZXIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQdwYXVzZXJfCQEQX3NhdmVDYWxsQ2hhaW5JZAEFDGNhbGxDaGFpbklkXwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRjYWxsAxFleGVjdXRpb25DaGFpbklkXxJleGVjdXRpb25Db250cmFjdF8JY2FsbGRhdGFfBANlcnIDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEMX3doZW5BbGxvd2VkAQgFAWkGY2FsbGVyBwkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIEBW5vbmNlCQEKX2xvYWROb25jZQAECWV2ZW50U2l6ZQkBDl9sb2FkRXZlbnRTaXplAAQFZXZlbnQJAJkKBwkBEF9sb2FkQ2FsbENoYWluSWQABRFleGVjdXRpb25DaGFpbklkXwUSZXhlY3V0aW9uQ29udHJhY3RfCQEHX2FkZEFyZwIFCWNhbGxkYXRhXwgIBQFpBmNhbGxlcgVieXRlcwUFbm9uY2UJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUGaGVpZ2h0CQCUCgIJAM4IAgkAzggCCQEOX3NhdmVFdmVudFNpemUBCQBkAgUJZXZlbnRTaXplAAEJAQpfc2F2ZUV2ZW50AgUJZXZlbnRTaXplBQVldmVudAkBCl9zYXZlTm9uY2UBCQBkAgUFbm9uY2UAAQUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVhbGxvdwEHY2FsbGVyXwQDZXJyAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBEF92YWxpZGF0ZUFkZHJlc3MCBQdjYWxsZXJfAhlhbGxvdzogaW52YWxpZCBjYWxsZXIgYXJnBwMJAAACBQNlcnIFA2VycgkAlAoCCQEOX3NhdmVBbGxvd2FuY2UCCQERQGV4dHJOYXRpdmUoMTA2MikBBQdjYWxsZXJfBgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhkaXNhbGxvdwEHY2FsbGVyXwQDZXJyAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBEF92YWxpZGF0ZUFkZHJlc3MCBQdjYWxsZXJfAhxkaXNhbGxvdzogaW52YWxpZCBjYWxsZXIgYXJnBwMJAAACBQNlcnIFA2VycgkAlAoCCQEOX3NhdmVBbGxvd2FuY2UCCQERQGV4dHJOYXRpdmUoMTA2MikBBQdjYWxsZXJfBwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVwYXVzZQAEA2VycgMDCQELX29ubHlQYXVzZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQ5fd2hlbk5vdFBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQYFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5wYXVzZQAEA2VycgMDCQELX29ubHlQYXVzZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQtfd2hlblBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQcFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMdXBkYXRlUGF1c2VyAQdwYXVzZXJfBANlcnIDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFB3BhdXNlcl8CFGluaXQ6IGludmFsaWQgcGF1c2VyBwMJAAACBQNlcnIFA2VycgkAlAoCCQELX3NhdmVQYXVzZXIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQdwYXVzZXJfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC3NldE11bHRpc2lnAQltdWx0aXNpZ18EA2VycgMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF92YWxpZGF0ZUFkZHJlc3MCBQltdWx0aXNpZ18CJXNldE11bHRpc2lnOiBpbnZhbGlkIG11bHRpc2lnIGFkZHJlc3MHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQ1fc2F2ZU11bHRpc2lnAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUJbXVsdGlzaWdfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAhtdWx0aXNpZwUHJG1hdGNoMAkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQhtdWx0aXNpZwkAuQkCCQDMCAIFCktFWV9TVEFUVVMJAMwIAgkApQgBBQR0aGlzCQDMCAIJANgEAQgFAnR4AmlkBQNuaWwFCVNFUEFSQVRPUgcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXljV5X4", "height": 2482761, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 5EXZxsMvBwcNp8KhwnTy3HV1BMWC7k4WBmWPRzqWfSFy Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let SEPARATOR = "__"
5+
6+let KEY_INIT = "INIT"
7+
8+let KEY_MULTISIG = "MULTISIG"
9+
10+let KEY_STATUS = "STATUS"
11+
12+let KEY_PAUSED = "PAUSED"
13+
14+let KEY_PAUSER = "PAUSER"
15+
16+let KEY_ALLOWANCE = "ALLOWANCE"
17+
18+let KEY_CALL_CHAIN_ID = "CALL_CHAIN_ID"
19+
20+let KEY_EVENT_SIZE = "EVENT_SIZE"
21+
22+let KEY_EVENT = "EVENT"
23+
24+let KEY_NONCE = "NONCE"
25+
26+let MAX_INT = 9223372036854775807
27+
28+let SLOT_SIZE = 32
29+
30+let ZERO_SLOT = base58'11111111111111111111111111111111'
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 _validateInt (val_,lowerBoundary_,upperBoundary_,err_) = if (if ((lowerBoundary_ > val_))
41+ then true
42+ else (val_ > upperBoundary_))
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 _loadAllowance (caller_) = match getBoolean(makeString([KEY_ALLOWANCE, toString(caller_)], SEPARATOR)) {
81+ case a: Boolean =>
82+ a
83+ case _ =>
84+ false
85+}
86+
87+
88+func _saveAllowance (caller_,val_) = [BooleanEntry(makeString([KEY_ALLOWANCE, toString(caller_)], SEPARATOR), val_)]
89+
90+
91+func _loadMultisig () = match getString(KEY_MULTISIG) {
92+ case a: String =>
93+ addressFromStringValue(a)
94+ case _ =>
95+ Address(base58'')
96+}
97+
98+
99+func _saveMultisig (multisig_) = [StringEntry(KEY_MULTISIG, toString(multisig_))]
100+
101+
102+func _loadCallChainId () = match getInteger(KEY_CALL_CHAIN_ID) {
103+ case a: Int =>
104+ a
105+ case _ =>
106+ 0
107+}
108+
109+
110+func _saveCallChainId (callChainId_) = [IntegerEntry(KEY_CALL_CHAIN_ID, callChainId_)]
111+
112+
113+func _loadEventSize () = match getInteger(KEY_EVENT_SIZE) {
114+ case a: Int =>
115+ a
116+ case _ =>
117+ 0
118+}
119+
120+
121+func _saveEventSize (index_) = [IntegerEntry(KEY_EVENT_SIZE, index_)]
122+
123+
124+func _saveEvent (index_,event_) = [StringEntry(makeString([KEY_EVENT, toString(index_)], SEPARATOR), makeString([toString(event_._1), toString(event_._2), event_._3, event_._4, toString(event_._5), event_._6, toString(event_._7)], SEPARATOR))]
125+
126+
127+func _loadNonce () = match getInteger(KEY_NONCE) {
128+ case a: Int =>
129+ a
130+ case _ =>
131+ 0
132+}
133+
134+
135+func _saveNonce (val_) = [IntegerEntry(KEY_NONCE, val_)]
136+
137+
138+func _onlyThisContract (caller_) = if ((caller_ != this))
139+ then throw("_onlyThisContract: revert")
140+ else true
141+
142+
143+func _whenMultisigSet () = if ((_loadMultisig() == Address(base58'')))
144+ then throw("_whenMultisigSet: revert")
145+ else true
146+
147+
148+func _whenNotInitialized () = if (_loadInit())
149+ then throw("_whenNotInitialized: revert")
150+ else true
151+
152+
153+func _whenInitialized () = if (!(_loadInit()))
154+ then throw("_whenInitialized: revert")
155+ else true
156+
157+
158+func _whenNotPaused () = if (_loadPause())
159+ then throw("_whenNotPaused: revert")
160+ else true
161+
162+
163+func _whenPaused () = if (!(_loadPause()))
164+ then throw("_whenPaused: revert")
165+ else true
166+
167+
168+func _onlyPauser (caller_) = if ((caller_ != _loadPauser()))
169+ then throw("_onlyPauser: revert")
170+ else true
171+
172+
173+func _whenAllowed (caller_) = if (!(_loadAllowance(caller_)))
174+ then throw("_whenAllowed: revert")
175+ else true
176+
177+
178+func _alignRight (val_) = (take(ZERO_SLOT, (SLOT_SIZE - size(val_))) + val_)
179+
180+
181+func _addArg (calldata_,arg_) = {
182+ let calldata = fromBase16String(drop(calldata_, 2))
183+ ("0x" + toBase16String(((take(calldata, 4) + _alignRight(arg_)) + drop(calldata, 4))))
184+ }
185+
186+
187+@Callable(i)
188+func init (pauser_,callChainId_) = {
189+ let err = if (if (if (if (_onlyThisContract(i.caller))
190+ then _whenNotInitialized()
191+ else false)
192+ then _whenMultisigSet()
193+ else false)
194+ then _validateAddress(pauser_, "init: invalid pauser")
195+ else false)
196+ then _validateInt(callChainId_, 0, MAX_INT, "init: invalid call chain id")
197+ else false
198+ if ((err == err))
199+ then $Tuple2(((_saveInit(true) ++ _savePauser(addressFromStringValue(pauser_))) ++ _saveCallChainId(callChainId_)), unit)
200+ else throw("Strict value is not equal to itself.")
201+ }
202+
203+
204+
205+@Callable(i)
206+func call (executionChainId_,executionContract_,calldata_) = {
207+ let err = if (if (_whenInitialized())
208+ then _whenAllowed(i.caller)
209+ else false)
210+ then _whenNotPaused()
211+ else false
212+ if ((err == err))
213+ then {
214+ let nonce = _loadNonce()
215+ let eventSize = _loadEventSize()
216+ let event = $Tuple7(_loadCallChainId(), executionChainId_, executionContract_, _addArg(calldata_, i.caller.bytes), nonce, toBase58String(i.transactionId), height)
217+ $Tuple2(((_saveEventSize((eventSize + 1)) ++ _saveEvent(eventSize, event)) ++ _saveNonce((nonce + 1))), unit)
218+ }
219+ else throw("Strict value is not equal to itself.")
220+ }
221+
222+
223+
224+@Callable(i)
225+func allow (caller_) = {
226+ let err = if (if (_onlyThisContract(i.caller))
227+ then _whenInitialized()
228+ else false)
229+ then _validateAddress(caller_, "allow: invalid caller arg")
230+ else false
231+ if ((err == err))
232+ then $Tuple2(_saveAllowance(addressFromStringValue(caller_), true), unit)
233+ else throw("Strict value is not equal to itself.")
234+ }
235+
236+
237+
238+@Callable(i)
239+func disallow (caller_) = {
240+ let err = if (if (_onlyThisContract(i.caller))
241+ then _whenInitialized()
242+ else false)
243+ then _validateAddress(caller_, "disallow: invalid caller arg")
244+ else false
245+ if ((err == err))
246+ then $Tuple2(_saveAllowance(addressFromStringValue(caller_), false), unit)
247+ else throw("Strict value is not equal to itself.")
248+ }
249+
250+
251+
252+@Callable(i)
253+func pause () = {
254+ let err = if (if (_onlyPauser(i.caller))
255+ then _whenInitialized()
256+ else false)
257+ then _whenNotPaused()
258+ else false
259+ if ((err == err))
260+ then $Tuple2(_savePause(true), unit)
261+ else throw("Strict value is not equal to itself.")
262+ }
263+
264+
265+
266+@Callable(i)
267+func unpause () = {
268+ let err = if (if (_onlyPauser(i.caller))
269+ then _whenInitialized()
270+ else false)
271+ then _whenPaused()
272+ else false
273+ if ((err == err))
274+ then $Tuple2(_savePause(false), unit)
275+ else throw("Strict value is not equal to itself.")
276+ }
277+
278+
279+
280+@Callable(i)
281+func updatePauser (pauser_) = {
282+ let err = if (if (_onlyThisContract(i.caller))
283+ then _whenInitialized()
284+ else false)
285+ then _validateAddress(pauser_, "init: invalid pauser")
286+ else false
287+ if ((err == err))
288+ then $Tuple2(_savePauser(addressFromStringValue(pauser_)), unit)
289+ else throw("Strict value is not equal to itself.")
290+ }
291+
292+
293+
294+@Callable(i)
295+func setMultisig (multisig_) = {
296+ let err = if (_onlyThisContract(i.caller))
297+ then _validateAddress(multisig_, "setMultisig: invalid multisig address")
298+ else false
299+ if ((err == err))
300+ then $Tuple2(_saveMultisig(addressFromStringValue(multisig_)), unit)
301+ else throw("Strict value is not equal to itself.")
302+ }
303+
304+
305+@Verifier(tx)
306+func verify () = match getString(KEY_MULTISIG) {
307+ case multisig: String =>
308+ valueOrElse(getBoolean(addressFromStringValue(multisig), makeString([KEY_STATUS, toString(this), toBase58String(tx.id)], SEPARATOR)), false)
309+ case _ =>
310+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
311+}
312+

github/deemru/w8io/873ac7e 
21.47 ms