编者按:本文来自DVPNET,作者BCSEC,Odaily星球日报经授权转载。1月16日凌晨,以太坊准备进行君士坦丁堡硬分叉的前一日被披露出来了一则漏洞,该漏洞由新启动的EIP1283引起,漏洞危害准确的说应该是一种可能会让一些合约存在重入漏洞的隐患,而不是一定会使合约产生重入漏洞。该漏洞在被发现之后以太坊基金会立马宣布了停止硬分叉,并商议择日再启动以太坊君士坦丁堡硬分叉。一、导致以太坊延迟硬分叉的EIP1283到底是什么?
EIP的全称是EthereumImprovementProposals,任何人都可以上去提一些对以太坊的改进提案,不过必须得严谨、正式,以太坊君士坦丁堡这次漏洞就是由一个EIP引起的,这个EIP的编号是1283。EIP1283使以太坊虚拟机使执行智能合约的引擎更高效,并降低在以太坊上运行智能合约的成本。该提案是针对SSTORE操作码的,该操作码主要用于合约持久化存储数据,EIP1283为SSTORE操作码设计了更加合理的gas收费方式。详情地址如下:https://eips.ethereum.org/EIPS/eip-1283为什么需要EIP1283?EIP-1283提案由WeiTang(@sorpass)于2018年8月1日创建,作为EIP-1087和EIP-1153的替代方案。EIP-1087由NickJohnson创建,主要是改变EVMSSTORE运行gas费用收取方式,减少过多的gas费用成本;EIP-1153由AlexeyAkhunov创建,相比EIP-1087更加便宜,gas费用计算规则更加简单。EIP-1283提出了在SSTORE上进行gas计量的方案,为数据存储的变化引进更加合理公平的定价方案。其中定义了三个概念:存储槽的原始值:在当前事务发生回滚后会存在的值叫原始值。存储槽的当前值:在使用SSTORE操作码之前存在的值叫当前值。存储槽的新值:在使用SSTORE操作码之后存在的值叫新值。然后以这三个概念为基础,设计了如下处理逻辑:如果当前值等于新值,则扣除200gas。如果当前值不等于新值如果原始值等于当前值如果原始值为0,则扣除20000gas。否则,扣除5000gas。如果新值为0,则在退款计数器中增加15000gas。如果原始值不等于当前值,则扣除200gas。如果原始值不为0如果当前值为0,请从退款计数器中减少15000gas。如果新值为0,请向退款计数器中增加15000gas。如果原始值等于新值如果原始值为0,则将退款计数器中增加19800gas。否则,则在退款计数器中增加4800gas。根据如上的逻辑可以发现,当使用SSTORE操作码的时候如果不改变任何值的时候,只消耗200gas。如果改变了值最终又重置为0的话也只消耗20000+200-19800=400gas。而在之前EIP1087的逻辑中如果使用SSTORE操作码改变了值最终又重置为0的话需要消耗20000+5000-10000=15000gas。显然EIP1283的处理逻辑比EIP1087更加合理,也更加便宜,但是问题就在这里。二、EIP1283漏洞分析
华为云发布《云迁移框架白皮书》:区块链、元宇宙等新技术可推动业务创新和现代化:金色财经报道,8月20日,在华为云数智新消费创新峰会2023上,华为云与百联集团携手发布了《大型商业零售电商平台云转型最佳实践——云迁移框架白皮书》(以下简称《白皮书》)。
《白皮书》认为,应用现代化不只是采用云原生技术(如容器、微服务、DevOps、API网关等),还包括新技术(如 AI、数字人、IoT、区块链等)的应用,使业务能够跟上时代的潮流,提升用户体验和创新能力。具体来说,应用现代化包括基础设施现代化、架构设计现代化、开发运维现代化、治理运营现代化、新技术使能业务现代化五个方面。
《白皮书》指出,云的新技术,包括人工智能、大数据、区块链、元宇宙和物联网等,在业务创新和现代化方面提供了广泛的机会和潜力。这些技术可以帮助企业改进业务流程、增强决策能力、提升用户体验,推动业务创新和现代化,开创新的商业模式和市场机会。[2023/8/21 18:13:02]
重入漏洞是指在同一笔交易中因两个合约互相调用而导致合约进行重复转账的一种现象,其产生的根源是没有使转账作为事务的最后一个步骤。比如说,如果在转账之后再进行状态变更的话就很容易重入漏洞,最经典的一起事件就是TheDAO事件,所以最安全的做法是一笔事务中只有一笔转账,且在转账之前做好所有状态变更,转账作为最后一个操作进行,如果以这种标准来实现的话,是不会受EIP1283影响的,所以这就是为什么说EIP1283只是可能使某些合约产生重入漏洞隐患。那么,什么样的合约容易产生这种隐患?请看以下Demo。这是一个模拟资金共享服务的合约,资金余额由deposits变量存储,然后由splits变量存储分配比例。比如有一笔资金需要a和b共同分配首先调用init函数存储双方的钱包地址调用deposit函数向通道充钱调用updateSplit函数来改变通道的分配率执行splitFunds函数分配资金如果1号通道的分配率是99,那么执行splitFunds函数的时候给a分配通道中99%的资金,给b分配1%的资金。该合约大概业务就是这样,在EIP1283生效之前,该合约是没有重入漏洞的,EIP1283生效才会存在重入漏洞。前面提到过了,在EIP1283中如果将一个值更改后又重置为0,那么只消耗400gas。再看看是怎么实现按比例分配的:所以我们可以将a账户设置为我们的恶意合约,在合约的fallback函数中调用updateSplit函数来改变通道的分配率,使两个地址都能分到超过通道余额总量的币.比如说我先给a账户分配100%的通道余额,再在a账户合约fallback函数中改变通道分配率,又给b账户分配100%的余额,这样就成功套出了双倍的钱,而且攻击者可以一直套,直到掏空为止。攻击者Demo:Ps:为了节约gas,fallback函数中使用内联汇编来模拟调用updateSplit函数。调用attack函数即可触发重入漏洞。为什么说要EIP1283生效才会产生漏洞呢,因为该合约使用transfer进行转账,transfer转账最多消耗2300gas,在EIP1283生效之前对变量进行更改再重置至少需要15000gas,而生效后只需要400gas,2300gas上限已经足够做一些事情了。三、漏洞复现
历史上的今天丨韩国现代集团附属公司向3000万球迷播放区块链广告:2019年7月8日,尼日利亚证券交易所(NSE)正在探索使用创新技术,如区块链和分布式账本技术(DLT)作为筹资新手段,以使资本市场与新兴金融技术(金融科技)保持一致。NSE首席执行官Oscar Onyema表示,该交易所正考虑通过使用区块链和DLT等新技术,为融资创建替代及创新平台。
2018年7月8日,在世界杯英格兰与瑞典对阵的半场时间,韩国现代集团附属公司现代数字资产公司(HDAC)在BBC、ITV播出了区块链广告并阐述区块链技术的好处,屏幕文字中曾三次提及区块链,配音中也有一次提及区块链。当时观看比赛的球迷约3000万人。[2020/7/8]
关于该漏洞的复现,ChainSecurity已经在Github上公开了。先clone下来gitclonehttps://github.com/ChainSecurity/constantinople-reentrancy.git然后README里面会告诉你怎么复现,不过在此之前先得把环境装好,需要环境:1.nodejs(stable)2.npma.truffle:npminstall-gtruffleb.ganache-cli@beta:npmi-gganache-cli@beta不同的系统有不同的环境搭建方式,这里不再赘述,有了以上环境就可以进行复现了,运行以下命令:ganache-cli--hardfork=constantinopletruffletest运行结果:在进行攻击之后成功增加攻击账户内的余额,复现完毕。四、修复方案
声音 | 国家发改委涂圣伟:加快区块链等现代技术在农业领域的应用:国家发展改革委产业经济与技术经济研究所副主任涂圣伟表示,粮食生产功能区和重要农产品生产保护区(“两区”)建设是筑牢重要农产品有效供给的“压舱石”。推进数字乡村试点建设,加快物联网、大数据、区块链、人工智能、第五代移动通信网络、智慧气象等现代信息技术在农业领域的应用。加强现代农业设施建设,增强农业综合生产能力。(澎湃新闻)[2020/2/11]
修复方案预计应该会在以太坊君士坦丁堡中删除与EIP1283有关的更新,目前以太坊开发者还在协商解决,不过笔者认为合约安全最终还是要合约来解决,不能依赖于公链本身,就像前面说的,只要合约采用的是最安全的写法便可以避免这次君士坦丁堡分叉带来的问题。而且目前还没有检测出来有合约正好会触发这个重入漏洞,但不排除这种可能性。参考链接https://medium.com/chainsecurity/constantinople-enables-new-reentrancy-attack-ace4088297d9https://github.com/ChainSecurity/constantinople-reentrancyhttps://eips.ethereum.org/EIPS/eip-1283https://eips.ethereum.org/EIPS/eip-1087
声音 | 香港大学赖国光:比特币出现代表虚拟资产时代来临:今日,香港大学客座教授赖国光在博客表示,很多人认为比特币的出现代表了虚拟货币时代的来临,但是他认为比特币的出现不只代表了虚拟货币时代的来临,而是虚拟资产2.0时代的来临。赖国光认为,当未来随着区块链技术越来越高阶越来普及,每个人都可以发行自己的区块链虚拟产品或是自媒体时,这时虚拟资产经济3.0的时代就会到来。[2018/11/1]
资金流协议SuperFluid与Connext和Nomad合作,已开发出“跨链资金流”产品的工作原型:6月15日消息,资金流协议SuperFluid与互操作性协议Connext和Nomad合作,开发了一个“跨链资产流”(Cross-Chain Money Streaming)的工作原型,它使用Connext的SDK和Nomad构建,用于身份验证调用,允许用户将资金以流支付形式传输到网络上的桥接合约,然后从不同网络上的桥接合约接收资金。通过跨链资金流,DAO和加密原生组织可以使用Superfluid协议将价值按秒转移到他们想要的任何网络,而无需在任何特定网络上具有流动性。(Medium)[2022/6/15 4:29:11]
编者按:本文来自白话区块链,作者:五火球教主,星球日报经授权发布。Twitter,或者说微博,简单不简单。140个字符,你写,我点赞,我评论,我转发。你上传个头像,我关注.
编者按:本文来自区块律动BlockBeats,作者:CraigWright,译者:区块律动0x5,Odaily星球日报经授权转载.
可扩展性是软件系统本身的属性,它指的是当需要为程序添加新的功能时,对其他模块的影响和添加的代价。区块链由于去中心化的要求,在实现高交易吞吐量和高交易速度方面颇具难度.
密码学是在区块链技术中承担着非常重要的角色,但其实,在互联网中,也大量的使用着密码学的技术,本文将介绍现代密码学中的早期加密方法,这将有助于我们理解区块链中的复杂算法.
本文来自:碳链价值,作者杨泽,Odaily星球日报经授权转载。人性的弱点都能催生巨大的产业。真正的胜利者,属于那些将人性的弱点和区块链技术本身的优势结合起来的开发者.
以太坊今日疑似发生多笔异常交易,发生在区块高度7238290的一笔交易的转账金额仅为0.1ETH,但交易手续费却高达2100ETH.