tx · D3i4jgvMLm8iMGQfhYGcUTKk5P7PaXJ4wCEyua8V5obH 3N3wBswhGGLLvVmd6KAA7hH8tZsu2iSY5Yx: -0.00200000 Waves 2024.11.11 02:59 [3366033] smart account 3N3wBswhGGLLvVmd6KAA7hH8tZsu2iSY5Yx > SELF 0.00000000 Waves
{ "type": 13, "id": "D3i4jgvMLm8iMGQfhYGcUTKk5P7PaXJ4wCEyua8V5obH", "fee": 200000, "feeAssetId": null, "timestamp": 1731283238637, "version": 1, "sender": "3N3wBswhGGLLvVmd6KAA7hH8tZsu2iSY5Yx", "senderPublicKey": "HpeKQu8xawfaxbbTSPNMNqVvWM9xhebUcemDK5REzG2j", "proofs": [ "rCNka1BhEohX8jpBRbA9gxedm2waz7VyvkkLzTt8ekDtDZjth924tkhB8XNFFJB22VMrPHUdRz6xXeTBqStJZEQ", "5Scx11E1CnRv64LHEs7tWQVtjZXio1JUcthG51iDHxtAdEXohkPLnq4BWJyRR2a2Uxmm6bWduo9iQ63Wjhwa5enu" ], "script": "base64:CAEEDnN1YndhclRlc3RMMl8xASD573vbyW2SdSxAIEHALEwHCEdVziPd+qjz9Gf7oFK/OAQOc3Vid2FyVGVzdEwyXzIBIJgJ58SqdD5eKyOil/SIN3rHFdy+Td54qquqkH7Gbak1BAt0YXJnZXREYXBwMQkBBXZhbHVlAQkApggBAiMzTXN4NEFxNjl6V1VLeTRkMXd5S25RNG9mekVEQWZ2NU5nZgQLdGFyZ2V0RGFwcDIJAQV2YWx1ZQEJAKYIAQIjM1BKVm03eExQYWJtWW9oYm52ZGdHRFlITXduWnhGMngxOG0EDHNlY3VyaXR5RGFwcAkBBXZhbHVlAQkApggBAiMzTXpnTGJza044MnN1WmdrbXFUdnpReER0WmZqUWZYMURMcAQSdW5saW1pdGVkRnVuY3Rpb25zAjhleHRlbmRNYWluQ2hhaW4sYXBwZW5kQmxvY2ssc3RhcnRBbHRDaGFpbixleHRlbmRBbHRDaGFpbgQQbGltaXRlZEZ1bmN0aW9ucwIbam9pbixsZWF2ZSx3aXRoZHJhdyxjbGFpbUxQBAttYXhGZWVQZXJUeACgwh4EB3NpZ25lZDEDCQDFEwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ5zdWJ3YXJUZXN0TDJfMQABAAAEB3NpZ25lZDIDCQDFEwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQ5zdWJ3YXJUZXN0TDJfMgABAAAEEGlzTXVsdGlTaWduVmFsaWQJAAACCQBkAgUHc2lnbmVkMQUHc2lnbmVkMgACCgETaXNVbmxpbWl0ZWRGdW5jdGlvbgEIZnVuY05hbWUJAQIhPQIJALMJAgUSdW5saW1pdGVkRnVuY3Rpb25zBQhmdW5jTmFtZQUEdW5pdAoBEWlzTGltaXRlZEZ1bmN0aW9uAQhmdW5jTmFtZQkBAiE9AgkAswkCBRBsaW1pdGVkRnVuY3Rpb25zBQhmdW5jTmFtZQUEdW5pdAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAXQFByRtYXRjaDAEDnRhcmdldEZ1bmNOYW1lCAUBdAhmdW5jdGlvbgMFEGlzTXVsdGlTaWduVmFsaWQGAwMJAAACCAUBdARkQXBwBQt0YXJnZXREYXBwMQYJAAACCAUBdARkQXBwBQt0YXJnZXREYXBwMgMJARNpc1VubGltaXRlZEZ1bmN0aW9uAQUOdGFyZ2V0RnVuY05hbWUGAwkBEWlzTGltaXRlZEZ1bmN0aW9uAQUOdGFyZ2V0RnVuY05hbWUDCQBmAggFAXQDZmVlBQttYXhGZWVQZXJUeAkAAgECLlRyYW5zYWN0aW9uIGZlZSBleGNlZWRzIG1heGltdW0gYWxsb3dlZCBhbW91bnQEEGNoZWNrTGltaXRSZXN1bHQJAQ5TY3JpcHRUcmFuc2ZlcgMFDHNlY3VyaXR5RGFwcAAABQR1bml0BgcHBRBpc011bHRpU2lnblZhbGlkVaxDpQ==", "chainId": 84, "height": 3366033, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7Yp13NTM3tRLaznrjxrQPg72SY2YP1VHWvXoe9j2hHeV Next: 92a4xsHGjA5Wp8iBjdAMR8yU71eBJDoukCsBAyPi3ppw Diff:
Old | New | Differences | |
---|---|---|---|
34 | 34 | then throw("Transaction fee exceeds maximum allowed amount") | |
35 | 35 | else { | |
36 | 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 | - | } | |
37 | + | true | |
43 | 38 | } | |
44 | 39 | else false | |
45 | 40 | else false |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 8 #-} | |
2 | 2 | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | 3 | let subwarTestL2_1 = base58'HpeKQu8xawfaxbbTSPNMNqVvWM9xhebUcemDK5REzG2j' | |
4 | 4 | let subwarTestL2_2 = base58'BEVjN4AXKQ2Yw7KS1wiL5DMGg5V9cDniNH7dK2v5d7Ek' | |
5 | 5 | let targetDapp1 = value(addressFromString("3Msx4Aq69zWUKy4d1wyKnQ4ofzEDAfv5Ngf")) | |
6 | 6 | let targetDapp2 = value(addressFromString("3PJVm7xLPabmYohbnvdgGDYHMwnZxF2x18m")) | |
7 | 7 | let securityDapp = value(addressFromString("3MzgLbskN82suZgkmqTvzQxDtZfjQfX1DLp")) | |
8 | 8 | let unlimitedFunctions = "extendMainChain,appendBlock,startAltChain,extendAltChain" | |
9 | 9 | let limitedFunctions = "join,leave,withdraw,claimLP" | |
10 | 10 | let maxFeePerTx = 500000 | |
11 | 11 | let signed1 = if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], subwarTestL2_1)) | |
12 | 12 | then 1 | |
13 | 13 | else 0 | |
14 | 14 | let signed2 = if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], subwarTestL2_2)) | |
15 | 15 | then 1 | |
16 | 16 | else 0 | |
17 | 17 | let isMultiSignValid = ((signed1 + signed2) == 2) | |
18 | 18 | func isUnlimitedFunction (funcName) = (indexOf(unlimitedFunctions, funcName) != unit) | |
19 | 19 | ||
20 | 20 | func isLimitedFunction (funcName) = (indexOf(limitedFunctions, funcName) != unit) | |
21 | 21 | ||
22 | 22 | match tx { | |
23 | 23 | case t: InvokeScriptTransaction => | |
24 | 24 | let targetFuncName = t.function | |
25 | 25 | if (isMultiSignValid) | |
26 | 26 | then true | |
27 | 27 | else if (if ((t.dApp == targetDapp1)) | |
28 | 28 | then true | |
29 | 29 | else (t.dApp == targetDapp2)) | |
30 | 30 | then if (isUnlimitedFunction(targetFuncName)) | |
31 | 31 | then true | |
32 | 32 | else if (isLimitedFunction(targetFuncName)) | |
33 | 33 | then if ((t.fee > maxFeePerTx)) | |
34 | 34 | then throw("Transaction fee exceeds maximum allowed amount") | |
35 | 35 | else { | |
36 | 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 | - | } | |
37 | + | true | |
43 | 38 | } | |
44 | 39 | else false | |
45 | 40 | else false | |
46 | 41 | case _ => | |
47 | 42 | isMultiSignValid | |
48 | 43 | } |
github/deemru/w8io/026f985 21.16 ms ◑