tx · 8dE7vpNc6D9y8oMor4Lvoi1rVdLn1r92kwVeXofGQ35x

3MuB15FfT7QUriD1R24GFbMPHz82NQ1Bm8X:  -0.01400000 Waves

2023.02.22 12:47 [2460693] smart account 3MuB15FfT7QUriD1R24GFbMPHz82NQ1Bm8X > SELF 0.00000000 Waves

{ "type": 13, "id": "8dE7vpNc6D9y8oMor4Lvoi1rVdLn1r92kwVeXofGQ35x", "fee": 1400000, "feeAssetId": null, "timestamp": 1677059180690, "version": 2, "chainId": 84, "sender": "3MuB15FfT7QUriD1R24GFbMPHz82NQ1Bm8X", "senderPublicKey": "7qxgAGEdFEuaxkfo1V6qHhBmhHqHkYmiow76yMaFuQBx", "proofs": [ "UaRCvEJrQ4nNwad61BQqgyrgyYGYMANDzXuykDdSRuxJ1T3LfCsUFDtFZAPkTutbpbStRkkt3VWBCPLv2rPPiEW" ], "script": "base64:BgIrCAISBQoDCAEIEgsKCQgIGAEBAQgICBIFCgMICAgSABIAEgMKAQgSAwoBCCIACVNFUEFSQVRPUgICX18ACEtFWV9JTklUAgRJTklUAAxLRVlfTVVMVElTSUcCCE1VTFRJU0lHAApLRVlfU1RBVFVTAgZTVEFUVVMACktFWV9QQVVTRUQCBlBBVVNFRAAKS0VZX1BBVVNFUgIGUEFVU0VSAAxLRVlfQ0hBSU5fSUQCCENIQUlOX0lEABVLRVlfU0lHTkVSX1BVQkxJQ19LRVkCEVNJR05FUl9QVUJMSUNfS0VZAA1LRVlfREFUQV9IQVNIAglEQVRBX0hBU0gAB01BWF9JTlQA//////////9/ARBfdmFsaWRhdGVBZGRyZXNzAghhZGRyZXNzXwRlcnJfBAckbWF0Y2gwCQCmCAEFCGFkZHJlc3NfAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAGCQACAQUEZXJyXwESX3ZhbGlkYXRlUHVibGljS2V5AgpwdWJsaWNLZXlfBGVycl8DCQECIT0CCQDIAQEJANkEAQUKcHVibGljS2V5XwAgCQACAQUEZXJyXwYBDF92YWxpZGF0ZUludAQEdmFsXw5sb3dlckJvdW5kYXJ5Xw51cHBlckJvdW5kYXJ5XwRlcnJfAwMJAGYCBQ5sb3dlckJvdW5kYXJ5XwUEdmFsXwYJAGYCBQR2YWxfBQ51cHBlckJvdW5kYXJ5XwkAAgEFBGVycl8GAQlfbG9hZEluaXQABAckbWF0Y2gwCQCgCAEFCEtFWV9JTklUAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWEFByRtYXRjaDAFAWEHAQlfc2F2ZUluaXQBB2lzSW5pdF8JAMwIAgkBDEJvb2xlYW5FbnRyeQIFCEtFWV9JTklUBQdpc0luaXRfBQNuaWwBCl9sb2FkUGF1c2UABAckbWF0Y2gwCQCgCAEFCktFWV9QQVVTRUQDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYQUHJG1hdGNoMAUBYQcBCl9zYXZlUGF1c2UBCWlzUGF1c2VkXwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUKS0VZX1BBVVNFRAUJaXNQYXVzZWRfBQNuaWwBC19sb2FkUGF1c2VyAAQHJG1hdGNoMAkAoggBBQpLRVlfUEFVU0VSAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABC19zYXZlUGF1c2VyAQdwYXVzZXJfCQDMCAIJAQtTdHJpbmdFbnRyeQIFCktFWV9QQVVTRVIJAKUIAQUHcGF1c2VyXwUDbmlsAQ1fbG9hZE11bHRpc2lnAAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAENX3NhdmVNdWx0aXNpZwEJbXVsdGlzaWdfCQDMCAIJAQtTdHJpbmdFbnRyeQIFDEtFWV9NVUxUSVNJRwkApQgBBQltdWx0aXNpZ18FA25pbAEMX2xvYWRDaGFpbklkAAQHJG1hdGNoMAkAnwgBBQxLRVlfQ0hBSU5fSUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABDF9zYXZlQ2hhaW5JZAEIY2hhaW5JZF8JAMwIAgkBDEludGVnZXJFbnRyeQIFDEtFWV9DSEFJTl9JRAUIY2hhaW5JZF8FA25pbAEUX2xvYWRTaWduZXJQdWJsaWNLZXkABAckbWF0Y2gwCQCiCAEFFUtFWV9TSUdORVJfUFVCTElDX0tFWQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJANkEAQUBYQEAARRfc2F2ZVNpZ25lclB1YmxpY0tleQEQc2lnbmVyUHVibGljS2V5XwkAzAgCCQELU3RyaW5nRW50cnkCBRVLRVlfU0lHTkVSX1BVQkxJQ19LRVkJANgEAQUQc2lnbmVyUHVibGljS2V5XwUDbmlsAQ1fbG9hZERhdGFIYXNoAQlkYXRhSGFzaF8EByRtYXRjaDAJAJ8IAQkAuQkCCQDMCAIFDUtFWV9EQVRBX0hBU0gJAMwIAgkA2AQBBQlkYXRhSGFzaF8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAQ1fc2F2ZURhdGFIYXNoAglkYXRhSGFzaF8HaGVpZ2h0XwkAzAgCCQEMSW50ZWdlckVudHJ5AgkAuQkCCQDMCAIFDUtFWV9EQVRBX0hBU0gJAMwIAgkA2AQBBQlkYXRhSGFzaF8FA25pbAUJU0VQQVJBVE9SBQdoZWlnaHRfBQNuaWwBEV9vbmx5VGhpc0NvbnRyYWN0AQdjYWxsZXJfAwkBAiE9AgUHY2FsbGVyXwUEdGhpcwkAAgECGV9vbmx5VGhpc0NvbnRyYWN0OiByZXZlcnQGARBfd2hlbk11bHRpc2lnU2V0AAMJAAACCQENX2xvYWRNdWx0aXNpZwAJAQdBZGRyZXNzAQEACQACAQIYX3doZW5NdWx0aXNpZ1NldDogcmV2ZXJ0BgETX3doZW5Ob3RJbml0aWFsaXplZAADCQEJX2xvYWRJbml0AAkAAgECG193aGVuTm90SW5pdGlhbGl6ZWQ6IHJldmVydAYBEF93aGVuSW5pdGlhbGl6ZWQAAwkBASEBCQEJX2xvYWRJbml0AAkAAgECGF93aGVuSW5pdGlhbGl6ZWQ6IHJldmVydAYBDl93aGVuTm90UGF1c2VkAAMJAQpfbG9hZFBhdXNlAAkAAgECFl93aGVuTm90UGF1c2VkOiByZXZlcnQGAQtfd2hlblBhdXNlZAADCQEBIQEJAQpfbG9hZFBhdXNlAAkAAgECE193aGVuUGF1c2VkOiByZXZlcnQGAQtfb25seVBhdXNlcgEHY2FsbGVyXwMJAQIhPQIFB2NhbGxlcl8JAQtfbG9hZFBhdXNlcgAJAAIBAhNfb25seVBhdXNlcjogcmV2ZXJ0BgcBaQEEaW5pdAMHcGF1c2VyXwhjaGFpbklkXxBzaWduZXJQdWJsaWNLZXlfBANlcnIDAwMDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQETX3doZW5Ob3RJbml0aWFsaXplZAAHCQEQX3doZW5NdWx0aXNpZ1NldAAHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFB3BhdXNlcl8CFGluaXQ6IGludmFsaWQgcGF1c2VyBwkBDF92YWxpZGF0ZUludAQFCGNoYWluSWRfAAAFB01BWF9JTlQCFmluaXQ6IGludmFsaWQgY2hhaW4gaWQHCQESX3ZhbGlkYXRlUHVibGljS2V5AgUQc2lnbmVyUHVibGljS2V5XwIfaW5pdDogaW52YWxpZCBzaWduZXIgcHVibGljIGtleQcDCQAAAgUDZXJyBQNlcnIJAJQKAgkAzggCCQDOCAIJAM4IAgkBCV9zYXZlSW5pdAEGCQELX3NhdmVQYXVzZXIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQdwYXVzZXJfCQEMX3NhdmVDaGFpbklkAQUIY2hhaW5JZF8JARRfc2F2ZVNpZ25lclB1YmxpY0tleQEJANkEAQUQc2lnbmVyUHVibGljS2V5XwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdleGVjdXRlCQljb250cmFjdF8NZnVuY3Rpb25OYW1lXw1mdW5jdGlvbkFyZ3NfDmNhbGxlckNoYWluSWRfEWV4ZWN1dGlvbkNoYWluSWRfBm5vbmNlXw9jYWxsZXJDb250cmFjdF8HdHhIYXNoXwpzaWduYXR1cmVfBANlcnIDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJARBfdmFsaWRhdGVBZGRyZXNzAgUJY29udHJhY3RfAhlleGVjdXRlOiBpbnZhbGlkIGNvbnRyYWN0BwMJAQIhPQIJAQxfbG9hZENoYWluSWQABRFleGVjdXRpb25DaGFpbklkXwkAAgECI2V4ZWN1dGU6IGludmFsaWQgZXhlY3V0aW9uIGNoYWluIGlkBgcDCQAAAgUDZXJyBQNlcnIKAQhmb2xkRnVuYwIDYWNjBGVsZW0JAMsBAgUDYWNjCQCbAwEFBGVsZW0ECWFyZ3NCeXRlcwoAAiRsBQ1mdW5jdGlvbkFyZ3NfCgACJHMJAJADAQUCJGwKAAUkYWNjMAEACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjIJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgQEZGF0YQkAywECCQDLAQIJAMsBAgkAywECCQDLAQIJAMsBAgkAywECCQCaAwEFDmNhbGxlckNoYWluSWRfCQCaAwEFEWV4ZWN1dGlvbkNoYWluSWRfCQCaAwEFBm5vbmNlXwkA2QQBBQ9jYWxsZXJDb250cmFjdF8JAJsDAQUHdHhIYXNoXwkA2QQBBQljb250cmFjdF8JAJsDAQUNZnVuY3Rpb25OYW1lXwUJYXJnc0J5dGVzBAhkYXRhSGFzaAkAjRUBBQRkYXRhBARlcnIxAwkBAiE9AgkAhAcCBQhkYXRhSGFzaAkA2QQBBQpzaWduYXR1cmVfCQEUX2xvYWRTaWduZXJQdWJsaWNLZXkACQACAQIaZXhlY3V0ZTogaW52YWxpZCBzaWduYXR1cmUDCQBmAgkBDV9sb2FkRGF0YUhhc2gBBQhkYXRhSGFzaAAACQACAQIXZXhlY3V0ZTogZHVwbGljYXRlIGRhdGEFBHVuaXQDCQAAAgUEZXJyMQUEZXJyMQQKaW52b2NhdGlvbgkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQljb250cmFjdF8FDWZ1bmN0aW9uTmFtZV8JAMwIAgUPY2FsbGVyQ29udHJhY3RfBQ1mdW5jdGlvbkFyZ3NfBQNuaWwDCQAAAgUKaW52b2NhdGlvbgUKaW52b2NhdGlvbgkAlAoCCQENX3NhdmVEYXRhSGFzaAIFCGRhdGFIYXNoBQZoZWlnaHQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMdXBkYXRlU2lnbmVyAxNuZXdTaWduZXJQdWJsaWNLZXlfDW9sZFNpZ25hdHVyZV8NbmV3U2lnbmF0dXJlXwQDZXJyAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBEl92YWxpZGF0ZVB1YmxpY0tleQIFE25ld1NpZ25lclB1YmxpY0tleV8CJ3VwZGF0ZVNpZ25lcjogaW52YWxpZCBzaWduZXIgcHVibGljIGtleQcDCQAAAgUDZXJyBQNlcnIEEm9sZFNpZ25lclB1YmxpY0tleQkBFF9sb2FkU2lnbmVyUHVibGljS2V5AAQHb2xkRGF0YQkAywECCQDLAQIJAJsDAQIlPDw8UFVCTElDLS1LRVktLU1JR1JBVElPTi0tQUxMT1dFRD4+PgUSb2xkU2lnbmVyUHVibGljS2V5CQDZBAEFE25ld1NpZ25lclB1YmxpY0tleV8EEm5ld1NpZ25lclB1YmxpY0tleQkA2QQBBRNuZXdTaWduZXJQdWJsaWNLZXlfBAduZXdEYXRhCQDLAQIJAMsBAgkAmwMBAic8PDxQVUJMSUMtLUtFWS0tTUlHUkFUSU9OLS1DT05GSVJNRUQ+Pj4FEm9sZFNpZ25lclB1YmxpY0tleQkAmwMBBRNuZXdTaWduZXJQdWJsaWNLZXlfBARlcnIxAwkBASEBCQDEEwMFB29sZERhdGEJANkEAQUNb2xkU2lnbmF0dXJlXwUSb2xkU2lnbmVyUHVibGljS2V5CQACAQIjdXBkYXRlU2lnbmVyOiBpbnZhbGlkIG9sZCBzaWduYXR1cmUDCQEBIQEJAMQTAwUHbmV3RGF0YQkA2QQBBQ1uZXdTaWduYXR1cmVfBRJuZXdTaWduZXJQdWJsaWNLZXkJAAIBAiN1cGRhdGVTaWduZXI6IGludmFsaWQgbmV3IHNpZ25hdHVyZQUEdW5pdAMJAAACBQRlcnIxBQRlcnIxCQCUCgIJARRfc2F2ZVNpZ25lclB1YmxpY0tleQEFEm5ld1NpZ25lclB1YmxpY0tleQUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVwYXVzZQAEA2VycgMDCQELX29ubHlQYXVzZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQ5fd2hlbk5vdFBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQYFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5wYXVzZQAEA2VycgMDCQELX29ubHlQYXVzZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQtfd2hlblBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQcFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMdXBkYXRlUGF1c2VyAQdwYXVzZXJfBANlcnIDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFB3BhdXNlcl8CFGluaXQ6IGludmFsaWQgcGF1c2VyBwMJAAACBQNlcnIFA2VycgkAlAoCCQELX3NhdmVQYXVzZXIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQdwYXVzZXJfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC3NldE11bHRpc2lnAQltdWx0aXNpZ18EA2VycgMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF92YWxpZGF0ZUFkZHJlc3MCBQltdWx0aXNpZ18CJXNldE11bHRpc2lnOiBpbnZhbGlkIG11bHRpc2lnIGFkZHJlc3MHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQ1fc2F2ZU11bHRpc2lnAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUJbXVsdGlzaWdfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAhtdWx0aXNpZwUHJG1hdGNoMAkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQhtdWx0aXNpZwkAuQkCCQDMCAIFCktFWV9TVEFUVVMJAMwIAgkApQgBBQR0aGlzCQDMCAIJANgEAQgFAnR4AmlkBQNuaWwFCVNFUEFSQVRPUgcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXlGXp1c", "height": 2460693, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4sGrF54AZqQvi4naSuaY3nXxSZq6mcXaiVacg7uw1NUv Next: 4NPV2tWcrFhto2a4JhLT9orRxMTheEcVnB1ujBwxMx4X Diff:
OldNewDifferences
211211 else unit
212212 if ((err1 == err1))
213213 then {
214- let invocation = invoke(addressFromStringValue(contract_), functionName_, functionArgs_, nil)
214+ let invocation = invoke(addressFromStringValue(contract_), functionName_, callerContract_ :: functionArgs_, nil)
215215 if ((invocation == invocation))
216216 then $Tuple2(_saveDataHash(dataHash, height), unit)
217217 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_CHAIN_ID = "CHAIN_ID"
1717
1818 let KEY_SIGNER_PUBLIC_KEY = "SIGNER_PUBLIC_KEY"
1919
2020 let KEY_DATA_HASH = "DATA_HASH"
2121
2222 let MAX_INT = 9223372036854775807
2323
2424 func _validateAddress (address_,err_) = match addressFromString(address_) {
2525 case a: Address =>
2626 true
2727 case _ =>
2828 throw(err_)
2929 }
3030
3131
3232 func _validatePublicKey (publicKey_,err_) = if ((size(fromBase58String(publicKey_)) != 32))
3333 then throw(err_)
3434 else true
3535
3636
3737 func _validateInt (val_,lowerBoundary_,upperBoundary_,err_) = if (if ((lowerBoundary_ > val_))
3838 then true
3939 else (val_ > upperBoundary_))
4040 then throw(err_)
4141 else true
4242
4343
4444 func _loadInit () = match getBoolean(KEY_INIT) {
4545 case a: Boolean =>
4646 a
4747 case _ =>
4848 false
4949 }
5050
5151
5252 func _saveInit (isInit_) = [BooleanEntry(KEY_INIT, isInit_)]
5353
5454
5555 func _loadPause () = match getBoolean(KEY_PAUSED) {
5656 case a: Boolean =>
5757 a
5858 case _ =>
5959 false
6060 }
6161
6262
6363 func _savePause (isPaused_) = [BooleanEntry(KEY_PAUSED, isPaused_)]
6464
6565
6666 func _loadPauser () = match getString(KEY_PAUSER) {
6767 case a: String =>
6868 addressFromStringValue(a)
6969 case _ =>
7070 Address(base58'')
7171 }
7272
7373
7474 func _savePauser (pauser_) = [StringEntry(KEY_PAUSER, toString(pauser_))]
7575
7676
7777 func _loadMultisig () = match getString(KEY_MULTISIG) {
7878 case a: String =>
7979 addressFromStringValue(a)
8080 case _ =>
8181 Address(base58'')
8282 }
8383
8484
8585 func _saveMultisig (multisig_) = [StringEntry(KEY_MULTISIG, toString(multisig_))]
8686
8787
8888 func _loadChainId () = match getInteger(KEY_CHAIN_ID) {
8989 case a: Int =>
9090 a
9191 case _ =>
9292 0
9393 }
9494
9595
9696 func _saveChainId (chainId_) = [IntegerEntry(KEY_CHAIN_ID, chainId_)]
9797
9898
9999 func _loadSignerPublicKey () = match getString(KEY_SIGNER_PUBLIC_KEY) {
100100 case a: String =>
101101 fromBase58String(a)
102102 case _ =>
103103 base58''
104104 }
105105
106106
107107 func _saveSignerPublicKey (signerPublicKey_) = [StringEntry(KEY_SIGNER_PUBLIC_KEY, toBase58String(signerPublicKey_))]
108108
109109
110110 func _loadDataHash (dataHash_) = match getInteger(makeString([KEY_DATA_HASH, toBase58String(dataHash_)], SEPARATOR)) {
111111 case a: Int =>
112112 a
113113 case _ =>
114114 0
115115 }
116116
117117
118118 func _saveDataHash (dataHash_,height_) = [IntegerEntry(makeString([KEY_DATA_HASH, toBase58String(dataHash_)], SEPARATOR), height_)]
119119
120120
121121 func _onlyThisContract (caller_) = if ((caller_ != this))
122122 then throw("_onlyThisContract: revert")
123123 else true
124124
125125
126126 func _whenMultisigSet () = if ((_loadMultisig() == Address(base58'')))
127127 then throw("_whenMultisigSet: revert")
128128 else true
129129
130130
131131 func _whenNotInitialized () = if (_loadInit())
132132 then throw("_whenNotInitialized: revert")
133133 else true
134134
135135
136136 func _whenInitialized () = if (!(_loadInit()))
137137 then throw("_whenInitialized: revert")
138138 else true
139139
140140
141141 func _whenNotPaused () = if (_loadPause())
142142 then throw("_whenNotPaused: revert")
143143 else true
144144
145145
146146 func _whenPaused () = if (!(_loadPause()))
147147 then throw("_whenPaused: revert")
148148 else true
149149
150150
151151 func _onlyPauser (caller_) = if ((caller_ != _loadPauser()))
152152 then throw("_onlyPauser: revert")
153153 else true
154154
155155
156156 @Callable(i)
157157 func init (pauser_,chainId_,signerPublicKey_) = {
158158 let err = if (if (if (if (if (_onlyThisContract(i.caller))
159159 then _whenNotInitialized()
160160 else false)
161161 then _whenMultisigSet()
162162 else false)
163163 then _validateAddress(pauser_, "init: invalid pauser")
164164 else false)
165165 then _validateInt(chainId_, 0, MAX_INT, "init: invalid chain id")
166166 else false)
167167 then _validatePublicKey(signerPublicKey_, "init: invalid signer public key")
168168 else false
169169 if ((err == err))
170170 then $Tuple2((((_saveInit(true) ++ _savePauser(addressFromStringValue(pauser_))) ++ _saveChainId(chainId_)) ++ _saveSignerPublicKey(fromBase58String(signerPublicKey_))), unit)
171171 else throw("Strict value is not equal to itself.")
172172 }
173173
174174
175175
176176 @Callable(i)
177177 func execute (contract_,functionName_,functionArgs_,callerChainId_,executionChainId_,nonce_,callerContract_,txHash_,signature_) = {
178178 let err = if (if (if (_whenInitialized())
179179 then _whenNotPaused()
180180 else false)
181181 then _validateAddress(contract_, "execute: invalid contract")
182182 else false)
183183 then if ((_loadChainId() != executionChainId_))
184184 then throw("execute: invalid execution chain id")
185185 else true
186186 else false
187187 if ((err == err))
188188 then {
189189 func foldFunc (acc,elem) = (acc + toBytes(elem))
190190
191191 let argsBytes = {
192192 let $l = functionArgs_
193193 let $s = size($l)
194194 let $acc0 = base58''
195195 func $f0_1 ($a,$i) = if (($i >= $s))
196196 then $a
197197 else foldFunc($a, $l[$i])
198198
199199 func $f0_2 ($a,$i) = if (($i >= $s))
200200 then $a
201201 else throw("List size exceeds 22")
202202
203203 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($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), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22)
204204 }
205205 let data = (((((((toBytes(callerChainId_) + toBytes(executionChainId_)) + toBytes(nonce_)) + fromBase58String(callerContract_)) + toBytes(txHash_)) + fromBase58String(contract_)) + toBytes(functionName_)) + argsBytes)
206206 let dataHash = keccak256_32Kb(data)
207207 let err1 = if ((ecrecover(dataHash, fromBase58String(signature_)) != _loadSignerPublicKey()))
208208 then throw("execute: invalid signature")
209209 else if ((_loadDataHash(dataHash) > 0))
210210 then throw("execute: duplicate data")
211211 else unit
212212 if ((err1 == err1))
213213 then {
214- let invocation = invoke(addressFromStringValue(contract_), functionName_, functionArgs_, nil)
214+ let invocation = invoke(addressFromStringValue(contract_), functionName_, callerContract_ :: functionArgs_, nil)
215215 if ((invocation == invocation))
216216 then $Tuple2(_saveDataHash(dataHash, height), unit)
217217 else throw("Strict value is not equal to itself.")
218218 }
219219 else throw("Strict value is not equal to itself.")
220220 }
221221 else throw("Strict value is not equal to itself.")
222222 }
223223
224224
225225
226226 @Callable(i)
227227 func updateSigner (newSignerPublicKey_,oldSignature_,newSignature_) = {
228228 let err = if (if (_onlyThisContract(i.caller))
229229 then _whenInitialized()
230230 else false)
231231 then _validatePublicKey(newSignerPublicKey_, "updateSigner: invalid signer public key")
232232 else false
233233 if ((err == err))
234234 then {
235235 let oldSignerPublicKey = _loadSignerPublicKey()
236236 let oldData = ((toBytes("<<<PUBLIC--KEY--MIGRATION--ALLOWED>>>") + oldSignerPublicKey) + fromBase58String(newSignerPublicKey_))
237237 let newSignerPublicKey = fromBase58String(newSignerPublicKey_)
238238 let newData = ((toBytes("<<<PUBLIC--KEY--MIGRATION--CONFIRMED>>>") + oldSignerPublicKey) + toBytes(newSignerPublicKey_))
239239 let err1 = if (!(sigVerify_8Kb(oldData, fromBase58String(oldSignature_), oldSignerPublicKey)))
240240 then throw("updateSigner: invalid old signature")
241241 else if (!(sigVerify_8Kb(newData, fromBase58String(newSignature_), newSignerPublicKey)))
242242 then throw("updateSigner: invalid new signature")
243243 else unit
244244 if ((err1 == err1))
245245 then $Tuple2(_saveSignerPublicKey(newSignerPublicKey), unit)
246246 else throw("Strict value is not equal to itself.")
247247 }
248248 else throw("Strict value is not equal to itself.")
249249 }
250250
251251
252252
253253 @Callable(i)
254254 func pause () = {
255255 let err = if (if (_onlyPauser(i.caller))
256256 then _whenInitialized()
257257 else false)
258258 then _whenNotPaused()
259259 else false
260260 if ((err == err))
261261 then $Tuple2(_savePause(true), unit)
262262 else throw("Strict value is not equal to itself.")
263263 }
264264
265265
266266
267267 @Callable(i)
268268 func unpause () = {
269269 let err = if (if (_onlyPauser(i.caller))
270270 then _whenInitialized()
271271 else false)
272272 then _whenPaused()
273273 else false
274274 if ((err == err))
275275 then $Tuple2(_savePause(false), unit)
276276 else throw("Strict value is not equal to itself.")
277277 }
278278
279279
280280
281281 @Callable(i)
282282 func updatePauser (pauser_) = {
283283 let err = if (if (_onlyThisContract(i.caller))
284284 then _whenInitialized()
285285 else false)
286286 then _validateAddress(pauser_, "init: invalid pauser")
287287 else false
288288 if ((err == err))
289289 then $Tuple2(_savePauser(addressFromStringValue(pauser_)), unit)
290290 else throw("Strict value is not equal to itself.")
291291 }
292292
293293
294294
295295 @Callable(i)
296296 func setMultisig (multisig_) = {
297297 let err = if (_onlyThisContract(i.caller))
298298 then _validateAddress(multisig_, "setMultisig: invalid multisig address")
299299 else false
300300 if ((err == err))
301301 then $Tuple2(_saveMultisig(addressFromStringValue(multisig_)), unit)
302302 else throw("Strict value is not equal to itself.")
303303 }
304304
305305
306306 @Verifier(tx)
307307 func verify () = match getString(KEY_MULTISIG) {
308308 case multisig: String =>
309309 valueOrElse(getBoolean(addressFromStringValue(multisig), makeString([KEY_STATUS, toString(this), toBase58String(tx.id)], SEPARATOR)), false)
310310 case _ =>
311311 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
312312 }
313313

github/deemru/w8io/873ac7e 
32.95 ms