保护每笔交易
Source: Dev.to

介绍
今天我发现了一种编写自定义智能合约的新策略,能够更高效地分析交易。之前,我依赖简单的服务器端逻辑和正则表达式来读取用户想要分析的智能合约的 bytecode。我们通过 Etherscan API 获取 bytecode,并使用正则来检测恶意模式。
示例
- 如果一个新代币的智能合约在 Etherscan 上未经过验证,我的服务器端逻辑会直接返回 ABI not found。
- 当 scammer 添加恶意逻辑——例如,将与合约交互的用户加入黑名单,使其永远无法 withdraw 代币/硬币/真实金钱——我会通过搜索可疑的函数名(如
blacklist)来检测。
我的正则会在 bytecode 中扫描类似 “blacklist” 的名称及其变体。
局限性
如果诈骗者使用混淆的名称(例如 UniCORN)来规避审计,我的 TxShield 平台就捕捉不到。经过一周的研究,我找到了一个解决方案。
解决方案
为了超越朴素的正则检测,我编写了一个自定义 Solidity 智能合约,暴力枚举 BLACKLIST_METHODS 的读写字节选择器。这种方法能够立即捕获大多数诈骗,因为它不再依赖硬编码的名称,而是检测任何将用户地址存入列表或映射的函数的字节模式。
技术:幻影合约(Phantom Contracts)
该技术称为 Phantom Contracts。我们在不部署合约的情况下运行自己的自定义智能合约。通过 Infura 调用内置方法 calleth 并传入参数,实际上在沙箱环境中执行我们的合约。
幻影合约的优势
- 无需部署智能合约。
- 安全驱动:不需要共享源代码。
- 可以直接从服务器端代码调用。
给社区的提问
你会在自己的代码中使用 Phantom Contracts 技术吗?