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:
Old | New | Differences | |
---|---|---|---|
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 ◑![]()