区块链索引服务依赖于合约事件来帮助归档数据,并在一个漂亮的用户界面中给我们提供交易记录,其通常被称为“区块浏览器”,比如Etherscan。但恶意合约可以表现得无比“正常”,却会污染这些事件,从而区块浏览器,向毫无戒备的用户提供关于代币来源的误导性信息。
例如,恶意用户可以部署一个简单ERC20合约和“空投”代币给一群用户,在自动做市商上创建一个看起来健康的流动资金池,等待用户根据错误的宣传购买或出售代币,认为此代币是已知开发人员/实体的一部分。
分解
ERC20代币(它是代币接口的通用标准)是合约的属性、函数、输入、输出和事件的集合。只要我们的合约具有正确的函数特征,我们就可以在这些函数中使用自定义逻辑——即使是提供不正确数据的函数。
例如,如果合约部署者发送一个代币,我们可以让一些/所有区块浏览器向最终用户显示不同的地址。假设如下;
合约部署者是有恶意的,想要为他们的代币制造一些炒作。
代币在AMM中有一些流动性(如Uniswap)供用户购买/出售,主要的流动性提供者头寸属于代币背后的团队。
许多用户都知道发送者,而不是某个随机的地址。
这不仅仅是ERC20的问题……受污染的数据可以被插入到任何代币标准事件中,如NFT(ERC721,ERC1155),以迷惑用户和潜在投资者,让他们认为项目有特定的利益方/影响者,而实际上并没有。
广州反诈高能预警:小心以“比特币”等为名的虚拟货币局:广州市局新闻办公室今天(10月28日)通报,9月份以来,全市接报涉投资理财电信警情有所上升,占全市各类电信警情总量的9.7%,投资电诈警情逐步成为电信网络警情主要类型之一。从手法看,投资虚拟货币的电诈警情占10.2%。从被金额看,近期利用“比特币”等虚拟货币为名的投资电诈警情涉案金额普遍较高,给群众造成巨额损失。9月份以来,该类警情涉案金额超过百万元的共5起。(广州)[2020/10/28]
这个问题并不“新鲜”,但我们写这篇文章是为了强调正在发生的事情,以及用户在“模仿”“看起来合法”的项目之前应该做些什么。
当区块浏览器看到交易发出的事件时,他们将其记录在他们的链下数据库中,并与其他数据建立关系,这样他们就可以建立一个很好的交易关系图,在他们的UI中显示给终端用户。
概念验证
我们将部署一个概念验证合约,使用一个老版本的Solidity,同时也要证明它与任何Solidity版本或以太坊中的任何东西都没有问题,其是一个来自链下应用程序信任合约的信任问题。一般来说,对事件的继承信任是“正确”的,它是一种合约将可用数据提供给链下程序进行索引的方式。
动态 | DeFi平台Compound警告用户小心假冒Telegram局:DeFi平台Compound发推称,Compound不使用Telegram,我们永远不会向你索要私钥。复合协议在区块链上运行,不需要“同步我们的数据库”等等。有一个活跃的假冒Compound Telegram局,请小心。[2020/1/19]
在上面的合约(位于0x3afe99bd92b1aed3237196b26743681766d4940e)中,我们修改了逻辑,将Transfer事件中的发送者地址更改为流行区块浏览器上标记为“OpenSea:Wallet”的地址,前提是我们发送代币。
它所做的是,当区块浏览器索引该事件时,它从Transfer事件中看到地址为0x5b32…1073发送了代币,而不是实际的发起者0x11b6…04C9,这可能导致该方法被不良行为者利用,诱使用户认为;
一个受欢迎的人物在代币上有既得利益
一个受欢迎的人物正在“卸载”大量的代币
代币是合法的,因为在区块浏览器上,它显示了已知的实体与代币合约“交互”
让我们从合约部署者地址调用transfer(),看看区块浏览器索引了什么。我们只是将代币从我的地址(0x11b6…04C9)移动到一个目标地址(0x4bbe…1520)。
声音 | 江卓尔:要小心拿一些破NAS包装成 “IPFS矿机” 然后炒高价的割韭菜行为:江卓尔在微博称:“我认可分布式存储带来的信息自由,但我强调要投一个赛道,而不是押一个项目,虽然IPFS目前名气最大,但也有可能最后做不起来,IPFS目前离实用还有很长一段距离。另外,要小心拿一些破NAS包装成 “IPFS矿机” 然后炒高价的割韭菜行为。”[2019/5/21]
“OpenSea:Wallet”ERC20活动视图显示它似乎已经发送了一个名为OpenSeaRevenueShare的代币到目的地。
交易表明(在“tokenTransferred”中)“OpenSea:Wallet”将代币发送到目标地址。
公告 | 宝二爷辟谣没有创办“国际交易所火网”提醒人们小心上当:近日,网络上流传“宝二爷创办了国际交易所火网”消息,对此,宝二爷发布微博称没有创办该交易所,并提醒说,“大家小心上当”。[2019/3/8]
目标地址显示“OpenSea:Wallet”给他们转移了10个代币。
寻找什么?
大多数这样的以利用用户的恶意合约都没有被“验证”,又因为我们只能接触到区块浏览器上的字节码,如果事件被污染了不良数据,再基于某些条件,都很难让用户进行验证,就像我们的概念验证一样。如果合约没有被验证,比如我们无法看到Solidity/Vyper/...代码,并且只暴露于字节码,那么在与合约交互之前,我们应该采取预防措施。
如果一个代币被“空投”给我们或其他实体,我们应该谨慎,特别是当我们试图在DEX上清算代币时,因为过去有一些事件是利用人为制造价格的方法从窃取的。
声音 | 宝二爷:被以太熊猫站台 提醒朋友小心被:宝二爷微博发文并附截图称,从来没听过以太熊猫,再次被站台,朋友们小心被。 微博中两张图片,一张为ETPP宣传海报,显示将邀请宝二爷参会;一张为宝二爷与朋友截图,表示不会参加。[2018/9/7]
一种快速的方法是检查事件参数是否与交易发起者匹配,这并非万无一失,因为空投者有多发送方合约。例如,如果交易“From”字段与事件不匹配,请谨慎处理。
用不良数据污染事件的方法正在主网上进行。一个已知的问题。例如,如果我们在GoogleBigQuery上运行以下查询,我们就可以了解合约发生了什么,它们在发出事件来索引者,让他们认为VitalikButerin正在使用他们的代币。
例子
ElonPlaid(0x907f3040e13bd57f3b00f89bb8ee19424a95b065)
在构造函数上发出一个被VitalikButerins地址污染的Transfer()事件,用于整个代币供应。
使用代币开始交易时,发出一个被VitalikButerin地址污染的Transfer()事件。
合约创造者向DEX(4ETH价值)提供流动性
三天后,移除6ETH的流动性,有2ETH的利润
KenshaInu(0x3a7eaa257181719965f8ebe64bb7c13ffbbca36b)
在构造函数上发出一个被VitalikButerins地址污染的Transfer()事件,用于整个代币供应。
合约创造者向DEX(5ETH价值)提供流动性
三天后,撤掉6.9ETH的流动性,1.9ETH的利润
IronDoge(0xf6072df56114e1a1c76fe04fb310d468c9ba8c38)
在构造函数上发出一个被VitalikButerins地址污染的Transfer()事件,用于整个代币供应。
合约创造者向DEX(4ETH价值)提供流动性
一天后,移除5.8ETH的流动性,使项目获得1.8ETH的利润
这只是许多例子中的三个。不法分子正利用污染事件来用户,他们的目标不仅是VitalikButerin的已知地址。
总结
尽管区块浏览器在可视化区块链数据方面非常有用,但它们的逻辑可能被滥用来显示误导性/不正确的数据。区块链的古老格言“不要信任,要验证”似乎是合适的,特别是当我们都相信区块浏览器可以提供绝对准确的数据,而不考虑它们如何解释数据时。
这是一个已知且潜在的难以解决的问题,我希望这篇文章能够帮助人们在“模仿”一个项目之前少一些FOMO,多一些小心,因为它看起来像是有人投资了,而实际上他们并没有。
标签:ETHANSTRATRANSQETHGuild of GuardiansSTRAXData Transaction Token
开年爆冷、跌跌不休,“元宇宙”为啥突遇寒冬?让人意想不到的是,2021年大火的元宇宙,却在2022年开头就遇冷.
1900/1/1 0:00:00未来,为满足对参与链游、元宇宙等虚拟经济持续增长的需求,PlayToEarn这种模式或还将持续进化演变。 前言 PlaytoEarn,简称P2E,又可称为“打金“,是一种边玩边赚的理念.
1900/1/1 0:00:00近日,风险投资机构GriffinGamingPartners宣布旗下第二支基金,已获得7.5亿美元超额认购,出资方包括主权财富基金、大学捐赠基金、家族办公室和游戏行业的战略合作伙伴等.
1900/1/1 0:00:00小鹿角智库 要点: 华纳音乐通过投资游戏,引入全新的表演形式,促进音乐与游戏结合。华纳音乐通过投资区块链,在未来为艺人打造NFT,实现收入突破性增长。华纳音乐在充分布局后,将对艺人在web3的发展起到关键的引领作用.
1900/1/1 0:00:00一、事件缘由 俄乌冲突,欧美对俄罗斯制裁。3月4日,委内瑞拉MetaMask用户发现无法访问MetaMask钱包,因为Infura为响应美国对俄罗斯及乌克兰部分地区的制裁,而对Infura的API配置进行更改,但改错了.
1900/1/1 0:00:00艺术为了货币 艺术成为货币 开篇先简单讲一点点废话吧:随着技术创新逐渐聚合,各领域纷纷瞄准虚拟数字世界的商业潜能和其可能带来的巨大产值,加速进行商业投资和应用探索.
1900/1/1 0:00:00