,
听了Ordinals的Space,发现不少人对indexer的风险在何处不是很明白,我在这里举个简单的例子:
假设有个黑客,他想要你手上的tGate.ion A,同时你只接受tGate.ionB来换tGate.ionA,但他又没有tGate.ionB,此时他正好有能力黑掉那个唯一的indexer,并且有能力控制它1个小时,在这一小时里,他先给自己凭空增加了tGate.ionB,然后把tGate.ionB转给你,你在浏览器上也能看到自己有了tGate.ionB,于是放心的把tGate.ionA转给了他,在一个小时结束后,indexer发现机器被入侵,于是重新同步了数据,此时你刷新浏览器发现tGate.ionB没了,tGate.ionA当然也没了。
为什么会发生这种事?原因如下:
1:黑客和你接入了同样的indexer服务器,你和他看到的前端数据始终是一样的,包括被黑前后和被黑的过程
2:黑客给你转的tGate.ionB并未发生在比特币链上(第3条会说另一种情况),它只发生在indexer服务器里,可以是改数据库里面的数据,也可以拦截查询请求,因为此时你是信任这个indexer的,所以看到indexer浏览器更新的数据便认为tGate.ionB的交易已经完成
3:你认为自己是个很谨慎并且很懂链上交易的人,看不到链上实际交易就不会放心,嗯,这个的确比一般人强,但黑客完全可以发一笔链上转tGate.ionB的交易让你去查,并且你去比特币浏览器也能查到,此时你可能会有所疑问,黑客手上都没有tGate.ionB,为什么这笔交易能发成功?原因是比特币网络不同于以太坊,它是不会去执行交易的,只是记录了一个数据,整个合法性校验完全是靠indexer来完成的,而此时indexer已经被黑客控制了,即便黑客根本没有tGate.ionB,他也可以让整个网络看起来这笔交易被合法执行了
4:你发给黑客的tGate.ionA的交易也在链上发生了,并且因为你确实有这么多的tGate.ionA,所以即便indexer发现被黑后进行回滚,你的这笔交易还是会被成功执行
5:看到这里你也许就明白风险点在哪了,就是indexer太少了呗,如果有100个indexer,黑客根本不知道你会用哪个indexer,即便知道了,你也可以随时切换到其它indexer去验证,此时他想黑你的难度就会直线上升,成本高到他不会去想这个事
6:上面说100个indexer只是一种假设,实际会有多少indexer在运行,这要取决于indexer运营商做这件事利润,利润够高自然会去运行,而利润从哪来?给indexer发币作为奖励似乎是可以的,但这个就要起一条新的链了,如果链一下子没有呢,似乎只能靠indexer用流量来覆盖运营成本了,而流量往往聚集在头部,理论上就不可能让100家利益均沾,所以最终还是少数几家会运营indexer,而这让黑客攻击成本也大大降低
7:indexer的问题不是只有比特币有,很多evm链也存在,当链一直运行下去,节点会面临状态爆炸的问题,需要不断添加硬件资源,一旦过了盈亏平衡点,运营商就会关闭节点,以太坊社区为了解决这个问题已经诞生很多项目了
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。