区块链智能合约漏洞:新街口咖啡店老板亏12万的教训,没人提前跟他说过

上周三在新街口淘淘巷负一楼,撞见之前常去的那家社区咖啡店的老板小周,蹲在关了门的店门口啃加肠的煎饼,眼睛肿得像刚揉过的桃子。

他是96年的,去年跟风搞链上会员体系的事我还知道——买咖啡攒的积分上链,攒够1000分能换一整年免费喝咖啡的权益,甚至还有他自己设计的数字咖啡杯周边。当时他拍着胸脯跟我说,这东西比普通的会员系统靠谱多了,代码写在链上,谁也改不了。

结果呢?

他以为代码是铁律,没想到是漏风的墙



小周说,他当初为了搞这个会员系统,前前后后花了快三万:找网上号称“专业链上开发”的团队写合约,掏8000块找所谓的“顶级审计团队”做漏洞排查,对方给的报告盖着电子章,明明白白写着“代码无安全风险,可安全部署”。

他当时还特意把合约部署到了公开的测试网,自己测了两回,确实能正常转积分、兑换权益,就放心把卖咖啡攒的12万USDT全锁进了合约的资金池里,等着大家攒积分换权益的时候慢慢扣。

结果上个月凌晨三点,他的手机开始疯狂弹链上交易提醒。

等他爬起来摸过手机的时候,资金池里的钱已经被划走了11.8万。

原因说出来都可笑。

那个写合约的程序员,把兑换年卡的判断条件里的大于号,写成了小于号。本来是“积分≥1000,可兑换年卡”,结果链上跑的代码是“积分≤1000,可兑换年卡”。更离谱的是,为了省那点链上交易手续费,他当初没给兑换功能加次数上限。

一个玩链游的大学生偶然翻到他公开在链上的代码,一眼就看到了这个bug,顺手把这个漏洞发到了链游玩家的小群里。一晚上,270多个匿名地址冲进来,把他资金池里的钱薅得七七八八。

新街口淘淘巷负一楼关停的社区咖啡店卷帘门
新街口淘淘巷负一楼关停的社区咖啡店卷帘门


你说他冤不冤?

真的冤。

之前听那些链圈沙龙的大佬吹,说“代码即法律,链上的规则谁也碰不了”,他当初信了。可现实里,要是你签的纸质合同里把“1000分以上兑换”写成了“1000分以下兑换”,你还能找法院主张重大误解,把条款改过来,把多给的东西要回来。链上呢?交易一旦上了区块,代码一旦自动执行了,钱进了匿名钱包,你找谁哭去?

我翻了37份涉链判决书,发现大家对漏洞的认知全错了



说实话,这大半年我跑法院、跑各个行业的链圈沙龙,碰到太多像小周这样的人了。

之前有个在江北搞链上租房的创业者,写的合约逻辑是“每个月租客自动转租金给房东,链上时间戳晚3天没收到租金,就自动触发解约流程,把剩下的押金全退给租客”。结果他没考虑到链上拥堵的情况,有一次比特币网络堵了4个小时,本来应该正常到账的租金,因为时间戳晚了,直接触发了解约。房东在链上发了几十条消息喊冤,说我根本没收到解约通知,我的房子怎么就被自动解约了?可钱已经转到租客的钱包里了,平台说我们绝对不干预链上交易,找法院的时候,法官翻着合约代码皱眉头:这到底是合同纠纷?还是软件开发的bug?还是谁的侵权?

我翻了从2021年到现在公开渠道能找到的37份涉智能合约纠纷的判决书,发现9成以上的当事人,从一开始就没搞懂——智能合约的漏洞从来不是什么黑客才能利用的高深技术攻击,大部分时候就是人写代码时的手滑、逻辑没捋顺、为了省成本留的偷懒口子。

智能合约代码逻辑漏洞标注示意图
智能合约代码逻辑漏洞标注示意图


上次在河西的一个链圈闭门会上,碰到个做审计的小伙子,掏心窝子跟我吐槽,现在市面上80%号称做智能合约审计的团队,根本就是拿个开源的免费扫描器跑一遍,扫出来几个已知的重入攻击、整数溢出的老问题,就给你出个盖着章的“无漏洞”报告,收你几千到几万块不等。真碰到那种逻辑层面的手滑,比如把大小于号写反、把权限给错地址的情况,扫描器根本查不出来——那又不是什么已知的攻击手法,就是正常人写代码累了会犯的错啊。

他说这话的时候,旁边坐的几个做Web3创业的学生脸都白了。他们上个月刚花了6000块找团队做了校园二手交易的合约审计,现在突然反应过来,自己那6000块可能就买了个免费软件的扫描结果。

别等钱被划走了,才想起法律不是代码的附属品



很多人现在对智能合约的认知还停留在“只要上链就不受现实规则管”的阶段。

真不是。

我上个月帮一个做数字藏品平台的创业者写法律意见的时候就提过,智能合约本质上就是一份自动执行的电子合同,它的效力首先要符合我们现实里的法律规定,不是说代码跑起来了,就可以凌驾于规则之上。比如你写的合约里有“一旦用户触发操作,平台有权没收用户全部锁定资产”的条款,就算代码写得严丝合缝,真闹到法院,该无效还是无效——因为这是加重对方责任的格式条款,根本没跟用户协商过。

上周我去江宁的创业园,给几个做校园链上服务的学生做分享,翻了下他们写的合约草案,好家伙,里面明明白白写着“平台对所有链上交易结果不承担任何责任,所有风险由用户自行承担”。我当时直接给他们指出来,你这条款看着是给平台免责,真要是哪天因为你代码手滑,把学生卖二手电脑的钱转错了地址,你这免责条款根本站不住脚。你是提供技术服务的一方,你写的代码有问题造成别人损失,该赔还是得赔,别拿“代码即法律”当挡箭牌。

南京江宁大学生创业园Web3项目路演现场
南京江宁大学生创业园Web3项目路演现场


我给他们提的建议特别简单:别学那些链圈大佬吹的“完全去中心化、没有管理员权限”,你一个面向普通学生的服务,留个紧急熔断的权限怎么了?真碰到代码写错了、钱被薅了的情况,你能第一时间暂停合约,把钱冻住,不至于像小周那样,眼睁睁看着钱被转走一点办法都没有。

昨天我给小周发了个消息,说可以试着找当初给他做审计的团队要赔偿,毕竟对方收了钱说没漏洞,结果出了这么大的事,该担的责任跑不掉。他回我个叹气的表情,说那个团队的公众号都停更半个月了,留的联系电话早就成了空号。

风从淘淘巷的通道吹过来,带着烤肠和糖炒栗子的香味。

区块链技术是好东西。

但那些拿着“未来科技”的幌子,把没经过反复打磨的代码、收了钱就出无漏洞报告的服务,直接甩给像小周这样想好好做生意的普通人的人,是不是也该有点良心?
免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:区块链智能合约漏洞:新街口咖啡店老板亏12万的教训,没人提前跟他说过
文章链接:https://www.wuhanlihunlvshi.com/cases/3556.html