区块链索引服务依赖于合约事件来帮助归档数据,并在一个漂亮的用户界面中给我们提供交易记录,其通常被称为“区块浏览器”,比如Etherscan。但恶意合约可以表现得无比“正常”,却会污染这些事件,从而区块浏览器,向毫无戒备的用户提供关于代币来源的误导性信息。
例如,恶意用户可以部署一个简单ERC20合约和“空投”代币给一群用户,在自动做市商上创建一个看起来健康的流动资金池,等待用户根据错误的宣传购买或出售代币,认为此代币是已知开发人员/实体的一部分。
ERC20代币(它是代币接口的通用标准)是合约的属性、函数、输入、输出和事件的集合。只要我们的合约具有正确的函数特征,我们就可以在这些函数中使用自定义逻辑——即使是提供不正确数据的函数。
例如,如果合约部署者发送一个代币,我们可以让一些/所有区块浏览器向最终用户(在某些视图中)显示不同的地址。假设如下;
合约部署者是有恶意的,想要为他们的代币制造一些炒作。
代币在AMM中有一些流动性(如Uniswap)供用户购买/出售,主要的流动性提供者头寸属于代币背后的团队。
美国SEC主席警告散户投资者小心券商App:1月20日消息,美国证券交易委员会(SEC)主席Gary Gensler表示,许多美国券商的应用程序会引导用户频繁交易,可能对散户投资者不利。
周三(1月19日),Gensler在接受采访时向使用免佣金券商应用程序买卖股票的散户投资者发出了警告,并对这些用来参与股票市场的应用程序之间激励措施的不一致表达了担忧。当被问及对2021年初的散户交易热潮以及“交易游戏化”的看法时,Gensler表示,在散户投资的时候,要小心这些应用程序,这些程序正试图让他们更频繁地进行交易。(财联社)[2022/1/20 9:01:49]
许多用户都知道发送者,而不是某个随机的地址。
这不仅仅是ERC20的问题……受污染的数据可以被插入到任何代币标准事件中,如NFT (ERC721, ERC1155),以迷惑用户和潜在投资者,让他们认为项目有特定的利益方/影响者,而实际上并没有。
这个问题并不“新鲜”,但我们写这篇文章是为了强调正在发生的事情,以及用户在“模仿”“看起来合法”的项目之前应该做些什么。
Yam Finance:官方没有征集捐款 请小心子:8月14日,Yam Finance官方发推提醒称,请小心子,官方现在没有征集捐款,所有消息更新仅通过官方Twitter和Medium。今日早间消息,Yam Finance宣布,计划在未来几周启动代币迁移计划。[2020/8/14]
当区块浏览器看到交易发出的事件时,他们将其记录在他们的链下数据库中,并与其他数据建立关系,这样他们就可以建立一个很好的交易关系图,在他们的UI中显示给终端用户。
我们将部署一个概念验证合约,使用一个老版本的 Solidity,同时也要证明它与任何Solidity版本或以太坊中的任何东西都没有问题,其是一个来自链下应用程序信任合约的信任问题。一般来说,对事件的继承信任是“正确”的,它是一种合约将可用数据提供给链下程序进行索引的方式。
在上面的合约(位于0x3afe99bd92b1aed3237196b26743681766d4940e)中,我们修改了逻辑,将 Transfer 事件中的发送者地址更改为流行区块浏览器上标记为“OpenSea:Wallet”的地址,前提是我们(创建合约的人)发送代币。
声音 | 孙宇晨:小心YouTube上的虚假波场账号:孙宇晨刚刚发推特称,警报!小心YouTube上的那些虚假的(波场)账号,请帮助我们建立一个安全的社区。[2020/2/26]
它所做的是,当区块浏览器索引该事件时,它从Transfer事件中看到地址为0x5b32…1073发送了代币,而不是实际的发起者0x11b6…04C9,这可能导致该方法被不良行为者利用,诱使用户认为;
一个受欢迎的人物在代币上有既得利益
一个受欢迎的人物正在“卸载”大量的代币
代币是合法的,因为在区块浏览器上,它显示了已知的实体与代币合约“交互”
让我们从合约部署者地址调用transfer(),看看区块浏览器索引了什么。我们只是将代币从我的地址(0x11b6…04C9)移动到一个目标地址(0x4bbe…1520)。
“OpenSea: Wallet”ERC20活动视图显示它似乎已经发送了一个名为OpenSeaRevenueShare的代币到目的地。
声音 | 马斯克:有人在Twitter伪装成我取加密货币 请小心:马斯克在Twitter上警告粉丝要小心网络。子首先获得合法Twitter账户,然后伪装账户,让它看起来好像是马斯克的真账户,再Twitter用户移交比特币或者其它数字货币,让他们相信这样做可以抓住商业机会。马斯克说:“在Twitter上加密货币达到了新的高度,一点也不酷。”[2020/2/5]
交易表明(在“token Transferred”中)“OpenSea: Wallet”将代币发送到目标地址。
目标地址显示“OpenSea: Wallet”给他们转移了10个代币。
声音 | 上交所架构师:证券行业对于区块链应秉承“大胆包容,小心落地”的态度:上交所技术有限责任公司架构师朱立今日发文就区块链技术在证券行业的应用前景做简要前瞻。朱立认为,法律监管、法币上链以及区块链隐私保护的技术问题阻碍了联盟链的运用。虽然区块链被称为“颠覆性的技术”,但近期看,这种颠覆性对证券行业远未成为现实。总的来说,证券行业对于新技术应该秉承“大胆包容,小心落地”的态度,不跟风、不盲从、不武断。[2018/10/18]
大多数这样的以利用用户的恶意合约都没有被“验证”,又因为我们只能接触到区块浏览器上的字节码,如果事件被污染了不良数据,再基于某些条件,都很难让用户进行验证,就像我们的概念验证一样。如果合约没有被验证,比如我们无法看到Solidity/Vyper/...代码,并且只暴露于字节码,那么在与合约交互之前,我们应该采取预防措施。
如果一个代币被“空投”给我们或其他实体,我们应该谨慎,特别是当我们试图在DEX上清算代币时,因为过去有一些事件是利用人为制造价格的方法从窃取的。
一种快速的方法是检查事件参数是否与交易发起者匹配,这并非万无一失,因为空投者有多发送方合约。例如,如果交易“From”字段与事件不匹配,请谨慎处理。
用不良数据污染事件的方法正在主网上进行。一个已知的问题。例如,如果我们在 Google BigQuery 上运行以下查询,我们就可以了解合约发生了什么,它们在发出事件来索引者,让他们认为Vitalik Buterin正在使用他们的代币。
ElonPlaid (0 x907f3040e13bd57f3b00f89bb8ee19424a95b065)
在构造函数上发出一个被 Vitalik Buterins 地址污染的 Transfer() 事件,用于整个代币供应。
使用代币开始交易时,发出一个被Vitalik Buterin地址污染的Transfer()事件。
合约创造者向DEX (4ETH价值)提供流动性
三天后,移除6ETH的流动性,有2ETH的利润
KenshaInu (0 x3a7eaa257181719965f8ebe64bb7c13ffbbca36b)
合约创造者向DEX (5ETH价值)提供流动性
三天后,撤掉6.9ETH的流动性,1.9ETH的利润
IronDoge (0 xf6072df56114e1a1c76fe04fb310d468c9ba8c38)
合约创造者向DEX (4ETH价值)提供流动性
一天后,移除5.8ETH的流动性,使项目获得 1.8ETH 的利润
这只是许多例子中的三个。不法分子正利用污染事件来用户,他们的目标不仅是Vitalik Buterin的已知地址。
尽管区块浏览器在可视化区块链数据方面非常有用,但它们的逻辑可能被滥用来显示误导性/不正确的数据。区块链的古老格言“不要信任,要验证”似乎是合适的,特别是当我们都相信区块浏览器可以提供绝对准确的数据,而不考虑它们如何解释数据时。
这是一个已知且潜在的难以解决的问题,我希望这篇文章能够帮助人们在“模仿”一个项目之前少一些FOMO,多一些小心,因为它看起来像是有人投资了,而实际上他们并没有。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。