V神要哭,以太坊智能合约漏洞百出,“保险池”概念紧急来救火

以太坊智能合约开发入门 1、进入以太坊开发控制台(开发环境):geth console --datadir "~/electrumx/ethdev" --dev 2>>eth.log通过tail -f eth.log查看日志:2、查看当前有哪些账户eth.accounts默认会有一个coinbase账户(挖矿账户),默认挖矿会挖到这个账户里。3、创建一个新的账号personal.newAccount('密码'... 阅读详情

image

4月22日中午,有黑客利用以太坊 ERC-20智能合约中BatchOverFlow漏洞攻击BEC(美链的代币“美蜜”)智能合约,成功向两个地址转出了天量级别的 BEC代币,导致市场上海量BEC被抛售。此事使得当日BEC的价值几乎归零。64亿人民币瞬间蒸发。

4月25日,仅仅三天后,另一个智能合约SmartMesh(SMT)曝出漏洞,交易所表示,因SMT出现异常交易,各交易平台暂停SMT的充提和交易。

这已经不是以太坊第一次被曝出智能合约漏洞问题。虽然以太坊仅仅诞生了四年,但是随着人们越来越多地了解区块链技术,以太坊的热度逐渐增加。然而,最新的研究显示,基于以太坊架构,被称作是“最安全、最可靠、最方便”的智能合约技术却漏洞百出。

2016年6月17日,发生了在区块链历史上沉重的一次攻击事件。由于以太坊的智能合约存在着重大缺陷,区块链业界最大的众筹项目The DAO(被攻击前拥有1亿美元左右资产)遭到攻击,导致300多万以太币资产被分离出The DAO 资产池。

同年11月,同样基于以太坊的电子钱包服务商Parity,也出现了严重的安全问题,大约有1.5亿美元的用户资金遭到影响,突然无法正常使用和交易。

2017年7月21日,智能合约编码公司Parity警告1.5版本及之后的钱包软件存在漏洞,据Etherscan.io的数据确认有价值3000万美元的15万以太币被盗。

2017年11月8日,以太坊Parity钱包再出现重大bug,多重签名漏洞被黑客利用,导致上亿美元资金被冻结。

为何智能合约漏洞频出?难道就没有办法解决了吗?

1

什么是以太坊智能合约

智能合约现在是区块链中最为大家熟知的概念。但智能合约究竟是什么?很多人还是一知半解。智能合约就是一种储存在区块链中的计算机程序。

image

区块链从本质上来说,就是一种共享的会计分类账簿,可以利用虚拟加密货币和计算机网络来追踪与记录各种资产的状态,同时有效保证分类账簿的安全,以防出现一些恶意篡改现象。

第一代区块链技术就是比特币。它能为互不相识的交易双方提供牢固保障,保证双方资金能够按照合同规定顺利完成转账。简单地说,就是保证交易双方不会受到欺诈等负面事件影响。

第二代区块链技术就是以太坊。有了智能合约,交易双方可以创建一个系统,从某一方的账户中取钱再存进余额不足的另一方账户中。从理论上来说,智能合约能够用于各种各样金融协议的代码编写,其中包括衍生合同、拍卖合同以及各种基于区块链的第三方保管账户合同等等。

以太坊是一个开源的区块链底层系统,就像安卓一样,提供了非常丰富的API和接口,让许多人在上面能够快速开发出各种区块链应用。目前已经有超过200多个应用在以太坊上开发。 

而以太坊很大的特色就是能够实现智能合约。所谓智能合约(Smart Contract),是密码学家Nick Szabo在1994年首次提出以数字形式定义的一系列承诺(promises) ,包括合约参与方可以在上面执行这些承诺的协议。

智能合约的智能在英语中对应的单词是Smart,和智能手机(Smart Phone)中的Smart意义相同,表示非常灵活的意思,并不是指人工智能(AI)。智能合约一旦设立指定后,能够无需中介的参与自动执行,并且没有人可以阻止它的运行。

以太坊去中心化的核心是其可以运行图灵完备的脚本语言,而开发以太坊智能合约则有四种语言:Serpent、Solidity、Mutan、LLL。这些语言都是面向底层设计的语言。目前来看,Solidity 是首选语言,这是由于它内置了 Serpent 语言的所有特性,语法类则似于使用广泛的 JavaScript。再加上 Solidity 的语言特性较少,该语言则可以更简单地实现完备的智能合约体系。

以太坊是一个开源的有智能合约功能的公共区块链平台。区块链上的所有用户都可以看到基于区块链的智能合约。但是,这会导致包括安全漏洞在内的所有漏洞都可见。智能合约语言 Solidity 自身与合约设计都可能存在漏洞。如果智能合约开发者疏忽或者测试不充分,而造成智能合约的代码有漏洞的话,就非常容易被黑客利用并攻击。并且越是功能强大的智能合约,就越是逻辑复杂,也越容易出现逻辑上的漏洞。

2

智能合约为何充满漏洞?

根据伦敦大学学院计算机科学系副教授伊利亚•谢尔盖最新的研究论文中显示,通过基于以太坊平台的近100 万份智能合约进行每份合约/10秒的分析后发行,有大34200份智能合约很容易遭到黑客攻击。

此外,他们还通过3759份智能合约抽样调查,发现其中3686份合约有89%的概率含有漏洞。以太坊作为一个分布式应用平台,如此高的漏洞产生概率,不知道V神对此做何感想。

image

那么问题来了,以太坊智能合约为何充满漏洞?

区块链为智能合约提供可信执行环境,智能合约为区块链扩展应用。而在以太坊上的智能合约,能够控制区块链上各种数字资产进行复杂的操作,随着智能合约开始获得越来越多的使用,人们也发现,就像现实世界的合同一样,如果没有认真审核的话,其中就有可能出现漏洞,并且被坏人利用。

开发智能合约需要一个全新的工程思维,它不同于我们以往项目的开发。因为它犯错的代价是巨大的,并且很难像传统软件那样轻易的打上补丁。就像直接给硬件编程或金融服务类软件开发,相比于web开发和移动开发都有更大的挑战。

据有关调查统计,以太坊主要漏洞情况描述如下表:

image

image

image

(本图为雷锋网设计并整理)

但其实究其根本,之所以如此多的智能合约出现同类漏洞,其背后是混乱的数字代币发行现状。

一些ICO(数字货币发行)通过智能合约发行代币的代价,成本已经低之又低。业内人士指出,一个程序员只要花5分钟,从网上抄一些智能合约代码,稍做修改,就可以发行一个代币。如果再写个白皮书,找几个知名顾问站台,就可以在数字货币交易所里发行几千万甚至上亿的项目。既没有交易所的监管,又抱着“一夜暴富”的期待,这些发币团队的技术实力、对安全的防范意识,自然很难得到保证。

内参君还是要提醒的是,在数字货币的世界里,各种漏洞都潜伏其中,投资者需要做好漏洞随时暴露的心理准备,同时,平台自身的资质,也是投资者需要仔细考虑的重要因素。

3

“保险池”概念紧急救火

据腾讯玄武实验室的信息安全人员宋凯透露,其实很多虚拟货币交易在过程中都出现过安全问题,事后的解决方案大多是回滚,也就是将交易数据回溯到攻击之前的状态。这样的补救措施只能使用户账户中拥有同样数量的新币,但因为攻击导致BEC币价大跌,事实上,用户并没能真正挽回损失。

近日,以太坊基金会(Ethereum Foundation)开发者Alex Van de Sande公布了的一项有关“保险池”的提议,他认为这个方案能够降低网络分裂的风险——由于智能合约代码漏洞造成资金冻结的事故,在寻找解决方案的过程中可能产生分歧,从而带来分裂网络的风险。

Van de Sande是以太坊Mist浏览器团队的领导者,他在一篇文章中提到,创建一个存有专用保险资金的“赎回合约”(recovery contract)能够降低个人或组织通过争议性硬分叉来获得部分或全部因为代码漏洞而失去的资金。最典型的例子就是,在Parity的多重签名钱包合约代码库爆出漏洞之后,钱包中价值3.2亿美元的以太坊(ETH)被冻结,维持在无法花费的状态。

不过,Van de Sande的提议最具争议性的部分应该是其涉及了为超过51.3万ETH发行赎回代币的计划,即因合约代码库错误锁定在Parity多种签名钱包中的以太坊数量。

Parity团队表示无意通过争议性硬分叉的方式取回资金,因此,Van de Sande认为他的这项计划将会让受害者(包括大多数以太坊核心开发者)成为这个新基金的利益相关者。这样一来,这个保险池的创立将更有机会引起更多人的关注。

内容来源:链内参

以下是我们的社区介绍,欢迎加入各种合作、交流、学习)

image

有趣的智能合约蜜罐分析(上) 智能合约蜜罐概述 研究安全的读者应该都清楚,蜜罐本质上是一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击。蜜罐设计的初衷就是让黑客来入侵系统,并借此收集证据,也隐藏了真实环境。 智能合约中也有蜜罐,但它不同于我们一般听到的蜜罐。在本文中,知道创宇区块链安全实验室 主要针对智能合约蜜罐(Smart Contract Honeypot)进行分析。 智能合约蜜罐的作用更像是钓鱼,通过引诱攻击者转账到蜜罐合约。相比于普通钓鱼行为面对一般用户,智能合约蜜罐的钓鱼行为针 阅读详情

相关推荐

【Solidity】7. 部件 - 深入理解Solidity

Solidity 部件Solidity定义了一种也可以在没有Solidity的情况下使用的汇编语言。 此汇编语言也可以用作Solidity源代码中的“内联汇编”。 我们从描述如何使用内联汇编以及它与独立程序集的区别开始,然后指定程序集本身。TODO:编写内联汇编的范围规则有点不一样,例如使用库的内部函数时出现的复杂情况。 此外,请编写由编译器定义的符号。内联汇编为了更精细的控制,特别是为了通过编写库

Code Metaverse 1万+

以太坊智能合约项目实战

通过这个课程的学习,我们可以了解以太坊发展的轨迹,学会洞察智能合约的漏洞,学会如何发币以及具备一定的智能合约开发技能,让学习者在区块链的大潮中立于不败之地。 本科主要介绍5个智能合约项目,包括1.奖金发放、2.下注对战游戏、3.资金众筹、4.ERC20发币合约、5.房产过户dApp

告别IMEI!手把手教你用UUID实现Android设备唯一标识(兼容Android 10-13)

本文详细探讨了在Android 10及以上版本中,如何构建合规且高可用的设备唯一标识方案以替代被限制访问的IMEI。文章深入分析了Android设备标识符的演变,并提供了基于UUID/GUID的完整实现策略,包括生成算法、多级持久化存储方案(如MediaStore)、权限处理以及版本兼容性实践,帮助开发者应对Android 10-13的隐私政策变化。

weixin_28339967的博客 576

solidity常见漏洞!学习并规避它

因为签名这笔交易的地址为 Alice 的 EOA 地址,所以对于 Wallet 合约来说 tx.origin 就是 Alice 的 EOA 地址,所以 Eve 成功利用钓鱼伪造了 Alice 的身份,通过了权限检查并成功将 Wallet 合约中的以太转移到了自己的账户中。在Polygon上,重组的深度可以达到30个或更多的区块,所以等待更少的区块会使应用变得脆弱(当zk-evm成为Polygon上的标准共识时,这种情况可能会改变,因为最终性将与以太坊的一致,但这是未来的预测,而不是目前的事实)。

weixin_74163644的博客 2808

VM与欧姆龙PLC通讯设置实战:Fins TCP/UDP协议详解

本文详细解析了VM(VisionMaster)与欧姆龙PLC通过Fins TCP/UDP协议进行通讯的实战设置。内容涵盖网络配置、协议选择(TCP可靠性与UDP实时性)、VM端地址映射与数据点添加、以及数据接收解析流程,并提供了常见错误排查与高级调试技巧,帮助视觉与自动化工程师快速实现稳定可靠的工业通讯集成。

weixin_29172963的博客 333

基于RFM模型的电商零售数据分析

E-Commerce Data 数据集介绍 E-Commerce Data Actual transactions from UK retailer 数据集地址(kaggle) https://www.kaggle.com/carrie1/ecommerce-data/kernels 该数据来源于kaggle,是一家注册在英国的电子商务网站的2010年12月份-2011年12月份之间的...

W_H_M_2018的博客 3100

[区块链]回顾史上最大智能合约漏洞事件——The DAO事件

乐扣老师讲解The DAO事件 在区块链技术领域,The DAO事件可以算是一个以太坊的丑闻,当然也直接导致了硬分叉。在现实面前,面对黑客当着面利用漏洞源源不断从1.5亿美金的以太币池中拿走资金,而且还没办法。 本文面对这样的一个场景,主要是描述该场景中提到的攻击事件代码,围绕攻击的前因后果。项目进行的始末,最终通过剖析整个事件,达到历史经验借鉴,为未来利用智能合约时铭记安全意识的最终目的。...

ECNU乐扣老师——区块链、可计算情感 2万+

主流 AI 插件 之一的 Copilot 介绍

Copilot 是微软推出的一款人工智能助手,旨在通过自然语言交互帮助您提升工作效率和创造力,覆盖多平台,提供智能问答、内容生成、代码辅助等功能。其核心定位为“日常 AI 伴侣”,旨在通过自然语言交互提升工作与生活效率。

u014695938的博客 6913

Solidity基础版教学,一个小时学完!

enum 枚举名 {集合值};​结构体创建对象StructName name = StructNmae("参数1","参数2","参数3")​event 事件名字 (参数)​-参数 : 对多三个。

weixin_74163644的博客 2282

微带线,带状线和接地共面波导的区别

微带线,带状线和接地共面波导的区别

sky_ying的博客 3万+

在pycharm2021.2中学习opencv图像处理,基于python3.9.7、pycharm完成配置

在pycharm中学习opencv图像处理安装python下载python安装包开始安装安装pycharm社区版下载pycharm开始安装如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 安装python 使用pycharm学习opencv应该是最简单的了,对新手比较友好,

steveqobs 7710

Solidity

智能合约(Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由Nick Szabo首次提出。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。简单地说,智能合约可以理解为一个自执行的协议。智能合约可以自动处理协议的履行、管理、以及支付。

顺其自然~专栏 1294

华为OD机试真题 新系统 2026-08-16 Python&JS【智能家居模式调度优化】

智能家居系统中有多个自动化联动模式,每个模式 modes[i]=[start_time,end_time,power],表示它在左闭右开区间 [start_time,end_time) 内持续消耗固定功率 power。

MISAYAONE的博客 85

solidity 学习笔记

/ 智能合约的许可协议// 智能合约的适用版本import "";// 导入// 状态变量// 函数// 智能合约的许可协议// 智能合约的适用版本import "";// 导入// 状态变量// 函数。

nina_1314521的博客 3738

黑猫带你学UFS协议第17篇:UFS安全模式详解(Secure Mode)

本文详细介绍了UFS协议中的安全模式,包括Erase, Discard, Purge和Wipe Device操作。Erase用于永久删除数据并确保无法恢复;Discard不保证数据清除;Purge类似于Sanitize,清除内部未映射的物理块数据;Wipe Device则是格式化设备。这些操作涉及逻辑单元、擦除单位、相关寄存器配置等,确保数据安全。" 126036669,12409270,MySQL 8.0 开窗函数详解,"['数据库理论', 'SQL']

黑猫奥利奥的博客 2561

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

区块链进阶-通过代币(Token)学以太坊智能合约

本课程从什么是代币(Token)讲起,分析实现一个代币关键的点是什么。然后逐步扩展到实现标准ERC20代币、功能代币、如果众筹发行代币。本课程的特点是,不单教是什么,怎么做,更会教大家为什么。大家学习之后,真正可以触类旁通学会更多的以太坊合约开发。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Solidity介绍

  Solidity的官网:http://solidity.readthedocs.io/en/develop/ Solidity 是一个面向合约的高级语言,其语法类似于JavaScript 。是运行在以太坊虚拟机中的代码。 Solidity 是静态类型的编程语言,编译期间会检查其数据类型。支持继承、类和复杂的用户定义类型。 在线体验: https://remix.ethereum.org ,...

huangyx123456的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

深入浅出以太坊和智能合约

前言Eth(以太坊)不知道你有没有听说过,ICO你一定听说过。但你知道ICO其实是借助Eth的智能合约实现的吗?什么是智能合约,Eth为啥这么火?智能合约的特点是什么,我怎么写智能合约?基于智能合约还有Dapp,即分布式app,Dapp又是什么?本系列文章将全面讲述Ethereum的原理,特点和机制,以及涉及的各种概念。区块链的运行机制首先大家必须了解区块链。这里只做一个简单的描述,区块链就是一条...

mongo_node的专栏 681

以太坊go-ethereum常见问题汇总

(1)什么是 Ethereum?以太坊是一个分散的智能合同平台,由Ether的加密货币提供支持。(2) 听说过以太坊,但什么是Geth,Mist,Ethminer,Mix?Geth: 以太坊节点的Go实现,是与以太坊区块链任何交互的基础。Mist: 相当于一个web浏览器,只不过是针对以太坊平台。 它用作GUI来显示与之交互的帐户和合约。 它还允许在图形用户界面中创建和交互合同,而无需使用命令行。

程序新视界 1万+

智能合约安全(一):以太坊机制及安全问题

在本系列中,我们将对以太坊现有的安全问题和前沿的各类型漏洞挖掘方法进行综述。本文是本系列的第一篇文章,主要介绍以太坊的机制和存在的安全问题的分类。 01 什么是以太坊智能合约? 以太坊智能合约基于区块链(Blockchain)技术,作为一种旨在以信息化方式传播、验证或执行的计算机协议,为各类分布式应用服务提供了基础。简单来讲:如果把比特币看作是分布式的记账本;以太坊便是可以运行程序的分布式计算平台,程序运行的基础则是Solidity智能合约。 智能合约早在1995年就由尼克萨博提出,目的在于以数字形式定

sinat_34996559的博客 1989

the security of smart contract- 1

https://blog.zeppelin.solutions/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05 这个是简单的介绍 Hitchhiker’s Guide to Smart Contracts in Ethereum Smart Contract security in Ethereum ish...

weixin_34221332的博客 335

解析Solidity预编译合约的实现

在Solidity中存在很多预先编译好的合约(或者说是方法)可供调用,例如sha256、keccak256等,本文简单分析下其实现逻辑。 例如有如下测试合约,在测试合约内调用sha256: pragma solidity ^0.4.24; contract Sha256Test { uint256 time = 123; event hashResult(bytes32); ...

@毛宏斌 3224

智能合约漏洞攻击事件_智能合约百科全书攻击漏洞

智能合约漏洞攻击事件Applications on Ethereum manage financial value, making security absolutely crucial. As a nascent, experimental technology, smart contracts have certainly had their fair share of attacks. 以太...

weixin_26747751的博客 6584

智能合约的安全问题

前言本文主要总结以太坊智能合约的安全漏洞。新加坡国立大学的Loi Luu提出了现在的智能合约存在的几种安全漏洞1。然而,由于智能合约目前还只是初级阶段,相信各种安全问题会不断的发现。智能合约中的安全漏洞交易顺序依赖合约交易顺序依赖就是智能合约的执行随着当前交易处理的顺序不同而产生差异。例如,有两个交易T[i]和T[j],两个区块链状态S[1]和S[2],并且S[1]状态处理完交易T[j]后才能转化为

张童鞋 8849
上一篇: 别动,我们来聊聊区块链技术正经的商用场景!
下一篇: 【众说区块链】从阿里区块链医疗聊起,落地应用要突破中心机构数据壁垒
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值