tx · 7Yp13NTM3tRLaznrjxrQPg72SY2YP1VHWvXoe9j2hHeV

3N3wBswhGGLLvVmd6KAA7hH8tZsu2iSY5Yx:  -0.00200000 Waves

2024.11.10 22:56 [3365981] smart account 3N3wBswhGGLLvVmd6KAA7hH8tZsu2iSY5Yx > SELF 0.00000000 Waves

{ "type": 13, "id": "7Yp13NTM3tRLaznrjxrQPg72SY2YP1VHWvXoe9j2hHeV", "fee": 200000, "feeAssetId": null, "timestamp": 1731279422695, "version": 1, "sender": "3N3wBswhGGLLvVmd6KAA7hH8tZsu2iSY5Yx", "senderPublicKey": "HpeKQu8xawfaxbbTSPNMNqVvWM9xhebUcemDK5REzG2j", "proofs": [ "3F8p3AuDrS9cRASeX1qXF2gzWod7xQXj4kN2vSrqjcuX5btTd1n7brSefVhBrByJS4MSPHNqWAF1RqAmXV6tGoue" ], "script": "base64:CAEEDnN1YndhclRlc3RMMl8xASD573vbyW2SdSxAIEHALEwHCEdVziPd+qjz9Gf7oFK/OAQOc3Vid2FyVGVzdEwyXzIBIJgJ58SqdD5eKyOil/SIN3rHFdy+Td54qquqkH7Gbak1BAt0YXJnZXREYXBwMQkBBXZhbHVlAQkApggBAiMzTXN4NEFxNjl6V1VLeTRkMXd5S25RNG9mekVEQWZ2NU5nZgQLdGFyZ2V0RGFwcDIJAQV2YWx1ZQEJAKYIAQIjM1BKVm03eExQYWJtWW9oYm52ZGdHRFlITXduWnhGMngxOG0EDHNlY3VyaXR5RGFwcAkBBXZhbHVlAQkApggBAiMzTXpnTGJza044MnN1WmdrbXFUdnpReER0WmZqUWZYMURMcAQSdW5saW1pdGVkRnVuY3Rpb25zAjhleHRlbmRNYWluQ2hhaW4sYXBwZW5kQmxvY2ssc3RhcnRBbHRDaGFpbixleHRlbmRBbHRDaGFpbgQQbGltaXRlZEZ1bmN0aW9ucwIbam9pbixsZWF2ZSx3aXRoZHJhdyxjbGFpbUxQBAttYXhGZWVQZXJUeACgwh4EB3NpZ25lZDEDCQDFEwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ5zdWJ3YXJUZXN0TDJfMQABAAAEB3NpZ25lZDIDCQDFEwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQ5zdWJ3YXJUZXN0TDJfMgABAAAEEGlzTXVsdGlTaWduVmFsaWQJAAACCQBkAgUHc2lnbmVkMQUHc2lnbmVkMgACCgETaXNVbmxpbWl0ZWRGdW5jdGlvbgEIZnVuY05hbWUJAQIhPQIJALMJAgUSdW5saW1pdGVkRnVuY3Rpb25zBQhmdW5jTmFtZQUEdW5pdAoBEWlzTGltaXRlZEZ1bmN0aW9uAQhmdW5jTmFtZQkBAiE9AgkAswkCBRBsaW1pdGVkRnVuY3Rpb25zBQhmdW5jTmFtZQUEdW5pdAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAXQFByRtYXRjaDAEDnRhcmdldEZ1bmNOYW1lCAUBdAhmdW5jdGlvbgMFEGlzTXVsdGlTaWduVmFsaWQGAwMJAAACCAUBdARkQXBwBQt0YXJnZXREYXBwMQYJAAACCAUBdARkQXBwBQt0YXJnZXREYXBwMgMJARNpc1VubGltaXRlZEZ1bmN0aW9uAQUOdGFyZ2V0RnVuY05hbWUGAwkBEWlzTGltaXRlZEZ1bmN0aW9uAQUOdGFyZ2V0RnVuY05hbWUDCQBmAggFAXQDZmVlBQttYXhGZWVQZXJUeAkAAgECLlRyYW5zYWN0aW9uIGZlZSBleGNlZWRzIG1heGltdW0gYWxsb3dlZCBhbW91bnQEEGNoZWNrTGltaXRSZXN1bHQJAQ5TY3JpcHRUcmFuc2ZlcgMFDHNlY3VyaXR5RGFwcAAABQR1bml0BAckbWF0Y2gxBRBjaGVja0xpbWl0UmVzdWx0AwkAAQIFByRtYXRjaDECDlNjcmlwdFRyYW5zZmVyBBBjaGVja0xpbWl0UmVzdWx0BQckbWF0Y2gxBgkAAgECI0ludmFsaWQgcmVzcG9uc2UgZnJvbSBzZWN1cml0eSBkQXBwBwcFEGlzTXVsdGlTaWduVmFsaWRSZSH2", "chainId": 84, "height": 3365981, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Ek9H3jgrWL4aT2DoYuQmdjgcprBBzgDNefUW8jLh345u Next: D3i4jgvMLm8iMGQfhYGcUTKk5P7PaXJ4wCEyua8V5obH Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 8 #-}
2+{-# CONTENT_TYPE EXPRESSION #-}
3+let subwarTestL2_1 = base58'HpeKQu8xawfaxbbTSPNMNqVvWM9xhebUcemDK5REzG2j'
4+let subwarTestL2_2 = base58'BEVjN4AXKQ2Yw7KS1wiL5DMGg5V9cDniNH7dK2v5d7Ek'
5+let targetDapp1 = value(addressFromString("3Msx4Aq69zWUKy4d1wyKnQ4ofzEDAfv5Ngf"))
6+let targetDapp2 = value(addressFromString("3PJVm7xLPabmYohbnvdgGDYHMwnZxF2x18m"))
7+let securityDapp = value(addressFromString("3MzgLbskN82suZgkmqTvzQxDtZfjQfX1DLp"))
8+let unlimitedFunctions = "extendMainChain,appendBlock,startAltChain,extendAltChain"
9+let limitedFunctions = "join,leave,withdraw,claimLP"
10+let maxFeePerTx = 500000
11+let signed1 = if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], subwarTestL2_1))
12+ then 1
13+ else 0
14+let signed2 = if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], subwarTestL2_2))
15+ then 1
16+ else 0
17+let isMultiSignValid = ((signed1 + signed2) == 2)
18+func isUnlimitedFunction (funcName) = (indexOf(unlimitedFunctions, funcName) != unit)
19+
20+func isLimitedFunction (funcName) = (indexOf(limitedFunctions, funcName) != unit)
21+
22+match tx {
23+ case t: InvokeScriptTransaction =>
24+ let targetFuncName = t.function
25+ if (isMultiSignValid)
26+ then true
27+ else if (if ((t.dApp == targetDapp1))
28+ then true
29+ else (t.dApp == targetDapp2))
30+ then if (isUnlimitedFunction(targetFuncName))
31+ then true
32+ else if (isLimitedFunction(targetFuncName))
33+ then if ((t.fee > maxFeePerTx))
34+ then throw("Transaction fee exceeds maximum allowed amount")
35+ else {
36+ let checkLimitResult = ScriptTransfer(securityDapp, 0, unit)
37+ match checkLimitResult {
38+ case checkLimitResult: ScriptTransfer =>
39+ true
40+ case _ =>
41+ throw("Invalid response from security dApp")
42+ }
43+ }
44+ else false
45+ else false
46+ case _ =>
47+ isMultiSignValid
48+}

github/deemru/w8io/169f3d6 
26.25 ms