【区块链与密码学】第2-7讲:区块链基础技术大剖析之智能合约

区块链2——Solidity智能合约开发 区块链:Solidity智能合约开发:合约的结构和语法、数据类型和变量、控制结构和函数、事件和日志、异常处理、与外部合约的交互 阅读详情

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】

2.4.6 智能合约

一提到智能合约,大家有可能首先想到的是以太坊,以太坊创新性的在区块链技术上加上智能合约,丰富了链上功能。然而,智能合约的概念却由来已久,并不是以太坊的“专利”。

传统合约与智能合约的比较

早在1995年,跨领域学者 Nick Szabo 就提出了智能合约的概念,他对智能合约的定义为:“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。”简单来说,智能合约是一种在满足一定条件时,就自动执行的计算机程序。

例如自动售货机,就可以视为一个智能合约系统。客户需要选择商品,并完成支付,这两个条件都满足后售货机就会自动吐出货物。合约在生活中处处可见:租赁合同、借条等。传统合约依靠法律进行背书,当产生违约及纠纷时,往往需要借助法院等政府机构的力量进行裁决。智能合约,不仅仅是将传统的合约电子化,它的真正意义在革命性地将传统合约的背书执行由法律替换成了代码。俗话说,“规则是死的,人是活的”,程序作为一种运行在计算机上的规则,同样是“死的”。但是“死的”也不总是贬义词,因为它意味着会严格执行。

尽管智能合约这个如此前卫的理念早在1995年就被提出,但是一直没有引起广泛的关注。虽然这个理念很美好,但是缺少一个良好的运行智能合约的平台,确保智能合约一定会被执行,执行的逻辑没有被中途修改。

区块链这种去中心化、防篡改的平台,完美地解决了这些问题。智能合约一旦在区块链上部署,所有参与节点都会严格按照既定逻辑执行。基于区块链上大部分节点都是诚实的基本原则,如果某个节点修改了智能合约逻辑,那么执行结果就无法通过其他节点的校验而不会被承认,即修改无效。这样智能合约就可以按照既定指令运营下去。区块链成为了智能合约可执行的”最佳拍档“。

那么智能合约的原理是怎样的呢?一个基于区块链的智能合约需要包括事务处理机制、数据存储机制以及完备的状态机,用于接收和处理各种条件。并且事务的触发、处理及数据保存都必须在链上进行。当满足触发条件后,智能合约即会根据预设逻辑,读取相应数据并进行计算,最后将计算结果永久保存在链式结构中。

智能合约在区块链中的运行逻辑

因为合约是严肃的事情,传统的合约往往需要专业的律师团队来撰写。古语有云:“术业有专攻。”当前智能合约的开发工作主要由软件从业者来完成,其所编写的智能合约在完备性上可能有所欠缺,因此相比传统合约,更容易产生逻辑上的漏洞。

另外,由于现有的部分支持智能合约的区块链平台提供了利用如Go语言、Java语言等高级语言编写智能合约的功能,而这类高级语言不乏一些具有“不确定性”的指令,可能会造成执行智能合约节点的某些内部状态发生分歧,从而影响整体系统的一致性。

2016年著名的The DAO事件,就是因为智能合约漏洞导致大约几千万美元的直接损失。The DAO 是当时以太坊平台最大的众筹项目,上线不到一个月就筹集了超过1000万个以太币,当时价值一亿多美元。但是该智能合约的转账函数存在漏洞,攻击者利用该漏洞,盗取了360万个以太币。由于此事件影响过大,以太坊最后选择进行回滚硬分叉挽回损失。

区块链科普之The DAO 事件

2016年6月17日,心情焦躁的以太坊创始人V神在Reddit上发了一篇帖子“DAO遭到攻击,请交易平台暂停ETH/DAO的交易,充值以及提现,等待进一步的通知。新消息会尽快更新。”著名的The DAO事件拉开序幕。

DAO(Decentralized Autonomous Organization)是分布式自治组织。The DAO是一个基于以太坊区块链平台的迄今为止世界上最大的众筹项目。其目的是让持有The DAO的参与者通过投票的方式共同决定被投资项目, 整个社区完全自制,并且通过代码编写的智能合约来实现。于2016年5月28日完成众筹,共募集1150万ETH,在当时的价值达到1.49亿美元。

不久,The DAO就受到黑客攻击,原因是The DAO编写的智能合约中有一个 splitDAO 函数,攻击者利用此函数的漏洞,不断从The DAO项⽬的资产池中分离出The DAO资产并转到黑客自己建立的子DAO。3个小时300多万枚ETH,六千万美元资产被黑客转移,血流成河。以太坊智能合约受到了最严重的质疑,究竟该如何防止此类事件再次发生?

让我们看看安全预防策略。

充分测试

测试用例设计:对业务进行全方位分析,通过等价类划分法、边界值分析法、正交实验法等方法设计出尽可能全面的测试用例,编写成测试代码,做自动化回归测试。

多人交叉测试:一个人的思维是局限的,我们需要通过多人的跳跃性思维,将尽可能多的情况覆盖在内。

回归测试:每一次修改都必须做整套回归测试。

工具监控

以太坊的所有交易都是公开透明可查的。我们可以通过工具将某一个智能合约交易数据实时爬取出来,并对可能的异常交易做短信和邮件告警。这样我们能第一时间发现问题,并采取措施。

第三方审计

可以找一些专业的智能合约开发工程师做审计。审计可以从另一个角度去发现智能合约可能存在的潜在问题.可能做审计的人的专业能力没有开发者的专业能力强大。

这一期区块链与密码学课堂就到这里啦,下一期我们将继续区块链基础技术的学习,详解P2P网络。敬请期待~

欢迎同学们关注点宽学园公众号,持续学习哦。我们下节课见啦。

数学与加密货币:区块链技术的数学基础 《数学与加密货币:区块链技术的数学基础》 关键词 数学基础 加密货币 区块链技术 密码学 分布式账本 摘要 本文旨在探讨数学在加密货币和区块链 阅读详情

相关推荐

2020-CNCC- 冯琦,何德彪-密码学在区块链隐私保护中的应用

转自CCF,网址:https://dl.ccf.org.cn/institude/institudeDetail?id=4810535938246656 摘要:区块链账本技术具有去中心化、难篡改、公开可验证等特点,近年来受到广泛关注。但是,隐私问题可能成为阻碍其进一步发展的瓶颈之一。本文着重介绍现有区块链隐私保护技术,致力于为区块链隐私问题提供引导与启发。

手把手教你区块链java开发智能合约nft-第一篇

刚接触区块链开发,使用java开发,真的是太难了,自己一步步摸索,从新手小白一路碰壁,动不动就报错,去网上搜索对应错误,还真什么都搜索不到,摸索了三四个月,今天终于有了一些进展,今天开始分享出来,希望能帮助到需要的朋友 我作为一个java后端的程序员,不会写智能合约,但是可以找对应会的人写,或者自己网上找资料自己写。这里只介绍怎么将智能合约转为java代码...

huangxuanheng的专栏 8788

Keil5芯片包下载后无法识别?手把手排查教程

遇到Keil5芯片包下载后不被识别的问题别慌,常见原因包括安装路径错误或包未正确注册。通过检查Pack Installer状态和手动更新设备支持列表,轻松排查故障,确保开发环境正常运行。

weixin_35459464的博客 880

区块链与智能合约:合作的未来

1.背景介绍 区块链技术和智能合约是两个彼此紧密相连的概念,它们共同构成了一个新兴的技术领域,具有广泛的应用前景。区块链技术是一种分布式、去中心化的数据存储和传输方式,它可以确保数据的完整性和安全性。智能合约则是一种自动执行的协议,它可以在区块链网络中实现各种业务逻辑。 区块链技术首次出现在2008年的一篇论文中,该论文提出了一种“时间戳”系统,该系统可以确保数据的完整性和不可篡改性。随后,2...

AI天才研究院 2779

基于Python的手语识别项目(简单版)

总之,看似简单的代码,实则花费了我不少的时间和精力,我曾无数次在深夜的灯光下,与代码为伴,只为了一点点优化,一丝丝提升。让我们一起,以尊重原创的精神,推动编程领域的发展,让这份热爱和技术的力量,照亮更多人的前行之路。模型的建立(---------------本人采用的是开源的asl-alphabet手势识别库,记得放在路径下--------------)current_dir需要根据自己的路径修改!current_dir需要根据自己的路径修改!current_dir需要根据自己的路径修改!

lusen_j的博客 1967

数据结构(超详细讲解!!)第十七节 队列应用(杨辉三角)

杨辉三角

2201_76115387的博客 1378

区块链与智能合约以及衍生应用

在开始编写代码之前,了解什么是区块链和智能合约,怎么获得智能合约是至关重要的,这将对你自己编写属于自己的智能合约和智能化分布式网络系统。区块链的概念再被中本聪首次提及之后,在2015年的以太坊上首次出现了较为成熟的技术应用,以太坊提供了一个没有第三方协议和集中式管理的网络系统允许所有组织在这个分布式系统中执行完全去中心化的交易与数据信息。智能合约工作时遵循简单的“if/when…then…” 语句,这些语句被写入区块链上的代码中。当满足并验证预先确定的条件时,计算机网络将执行操作。

Chahot的博客 721

基于Simulink的四足机器人楼梯攀爬仿真模型

构建一个基于Simulink的四足机器人楼梯攀爬仿真模型,旨在模拟四足机器人在面对楼梯等障碍时的运动控制和稳定性调整。以下是一个详细的步骤指南,帮助你从零开始创建这样一个仿真模型。

xiaoheshang_123的博客 247

区块链智能合约开发

合约是经过双方或多方同意,约定立即执行或在将来执行一项交易的法律文件。因为合约是法律文件,所以它具有强制性和可执行性。合约应用的场景很多,例如:一个人和保险公司签订合同购买健康险,一个人从另外一个人手里购买一块土地,个公司出售股权给另外一家公司。

2201_76041915的博客 6224

高渗透率光伏接入配电网的电压越限与谐波治理:基于VSG构网型控制与SVG+APF联合补偿的Simulink仿真研究

本文针对高渗透率光伏接入配电网引发的电压越限和谐波畸变问题,提出了一种分层递进的综合治理方案。通过建立IEEE 33节点配电网的Simulink仿真模型,首先验证了传统跟网型控制下光伏渗透率提高导致的电压越上限(最高达1.08 p.u.)和系统谐波畸变严重(THD达8.72%)问题。进而提出:1)将部分光伏逆变器改造为构网型VSG控制,利用其无功调压能力与虚拟阻抗技术实现本地治理;2)在关键节点加装SVG+APF联合补偿装置进行全局动态无功补偿与谐波滤除。仿真结果表明,该方案能将节点电压控制在0.94-1.

huanghm88的专栏 580

使用GBIF获取生物多样性数据与GIS的结合

随着全球生物多样性的重要性日益凸显,越来越多的研究人员和保护机构开始利用地理信息系统(GIS)来分析和可视化生物多样性数据。GBIF(全球生物多样性信息设施)作为一个全球性的生物多样性数据库,提供了大量的物种分布和分类信息,为研究人员和保护工作者提供了宝贵的数据资源。本文将介绍如何使用GBIF API获取生物多样性数据,并将其与GIS技术相结合,以便更好地理解和研究生物多样性。利用GIS的强大功能,我们可以在地理空间上可视化物种分布、分析物种多样性的空间格局,并为保护生物多样性提供科学依据。

BnxBackend的博客 1765

智能合约与身份验证:区块链技术的创新应用

区块链,一个近年来备受瞩目的技术名词,已经从最初的数字货币领域扩展到了众多行业。那么,究竟什么是区块链?它为何如此重要?本文将深入剖析区块链技术的原理、应用及未来发展。区块链,从本质上讲,是一个去中心化的分布式数据库。它由一系列按照时间顺序排列的数据块组成,并采用密码学方式保证不可篡改和不可伪造。每一个数据块中包含了一定时间内的所有交易信息,包括交易的数量、交易的时间、交易双方的账户信息等等,并且每个数据块都被数字签名和加密算法保护,以确保其完整性和真实性。

星途码客的博客 3836

FFmpeg入门详解之110:RTSP协议讲解

TCP/IP 协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。正在上传…重新上传取消RTSP是基于文本的协议,采用ISO10646字符集,使用UTF-8编码方案。行以CRLF中断(\r\n:10,13:0x0A,0x0D),包括消息类型、消息头、消息体和消息长。

福优学苑@音视频+流媒体 2529

区块链工作机制剖析:从密码学原理到分布式共识

区块链技术作为一种去中心化的分布式账本,通过密码学、共识机制和智能合约等核心技术,实现了无需中介的信任机制。其链式结构和哈希算法确保了数据的不可篡改性,P2P网络和共识机制解决了双花问题。然而,区块链仍面临51%攻击、智能合约漏洞等安全威胁,以及可扩展性、能耗和隐私保护等挑战。当前,分层架构、分片技术和新型共识算法等创新正推动区块链向更高效安全的方向发展。该技术在金融、公共服务等领域展现出巨大潜力,其工作机制为构建数字时代的可信价值网络提供了全新思路。

I am “技术科普侠”! 1151

人工智能大模型原理与应用实战:AI模型转换为API的步骤和方法

传统的开发模式下,构建复杂的软件系统是非常费时费力的,而通过云计算、微服务等技术手段可以实现快速部署、弹性扩展的能力。在这种背景下,越来越多的公司将重点转移到研发人员的产品思维上,希望能够将自己的AI模型转换为一个可供他人调用的API接口。但是对于许多从事AI领域的研发人员来说,如何将自己的AI模型转换为API是一个比较棘手的问题。在这篇文章中,作者将从AI模型转换为API的过程分为以下几个步骤:AI模型准备阶段——模型选择、数据准备、模型训练。

AI天才研究院 2601

假人有限元模型

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

【区块链与密码学】第2-3讲:区块链基础技术大剖析之哈希函数

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 2.4.1 哈希函数 区块链作为一个诞生刚到十几年的技术,的确算是一个新兴的概念,但是它所用到的基础技术全是当前非常成熟的技术。可以说是一个技术的“结晶体“。 区块链的基础技术如哈希运算、数字签名、P2P网络、共识算法以及智能合约等,在区块链兴起之前,很多技术已经在各...

Digquant的博客 1600

精雕软件(JDpaint) 5.5 绿色版

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

区块链技术深度剖析课程大纲

课程名称:区块链技术深度剖析 课程编码: 课程学分:2学分 课程学时:32学时 适用专业:网络空间安全,信息安全        《区块链技术深度剖析》          The Depth of Analysis Blockchain Technology                  教学大纲 一、课程性质与教学目标   性质:本课程属于网络空间安全专业的兴趣选修课程。本课...

bjgpdn的专栏 2292

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

如何系统学习区块链技术-干货来袭

区块链术涉及面很广,很多开发人员看了一些资料后,感觉似懂非懂。 如何系统的学习区块链技术,是很多想从事区块链开发的程序员的疑问,本文内容有点多,一次吸收不完可以收藏以后再用。 苦口婆心写在前面: 从事区块链开发有很多方向,如:区块链应用开发人员、区块链架构师、底层核心开发、共识算法研究等等。 方向不同,需要学习的内容就不一样,如果基于区块链应用开发,只需要了解一门编程语言(nodejs, Go,...

blockchain_s的博客 4134

区块链技术:深入共识算法、智能合约与DApps的架构奥秘

区块链技术正在经历从"加密货币"到"可信互联网基础设施"的认知转变。共识算法的不断创新将平衡"不可能三角"的约束,智能合约的形式化验证可能成为标准实践,而DApps将逐步突破早期采用者圈子走向主流。尽管面临扩展性、监管和用户体验等挑战,区块链构建的无需信任的信任机制,正在为数字时代的新型协作模式奠定基础。

2501_91516851的博客 2109

从密码学到经济学:区块链安全性多维度全面解析

区块链的安全性并非依赖于某一项技术的“绝对完美”,而是系统工程的胜利。它通过密码学提供数学保障,通过分布式网络消除单点故障,通过经济机制扭转攻击动机,通过智能合约实现规则自动化——这四者环环相扣,构成了一套完整的“深度防御”体系。正如比特币十多年来在数十亿资金刺激下依然稳健运行所证明的那样,区块链的安全性建立在“作恶的经济代价远大于诚实协作的收益”这一底层逻辑之上。这种将技术、经济和博弈论融为一体的设计,正是区块链作为“信任机器”最核心的价值所在。底部锚点⬆ ⬆ 顶部 ⬆ ⬆⬇ ⬇ 底部 ⬇ ⬇。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1301

2024-2025年区块链智能合约安全态势分析报告

本报告基于SlowMist、Beosin等权威安全研究机构的最新调研数据,对2024年智能合约安全风险进行全面剖析,并对2025年区块链安全态势做出前瞻性预测。数据显示,2024年上半年Web3生态因各类安全事件损失达14.92亿美元,同比增长116.23%,其中智能合约漏洞仍是主要安全风险来源之一。本报告旨在帮助行业参与者了解最新安全态势,制定有效防护策略,共同构建更为安全的区块链生态系统。

2504_90842827的博客 5829

区块链技术学习指南:从密码学基础到智能合约开发

区块链技术作为分布式账本系统的革命性创新,其核心在于通过密码学算法和共识机制实现去中心化信任。哈希指针和时间戳技术确保数据不可篡改,而非对称加密和Merkle树结构则保障交易安全与验证效率。从技术价值看,区块链不仅支撑了比特币等加密货币,更通过智能合约演变为可编程价值互联网平台,在DeFi(去中心化金融)和供应链金融等领域展现巨大潜力。学习区块链需系统掌握密码学原理、共识算法(如PoW/PoS)及Solidity智能合约开发,同时理解ERC-20标准等通证经济模型。本文基于北大肖臻课程精华,详解区块链开发的

weixin_29188043的博客 207

区块链的数学基础:核心原理与应用解析

区块链技术作为分布式账本系统,成功地解决了传统中心化系统中的信任问题。其背后隐藏着复杂而精妙的数学原理,包括密码学、哈希函数、数字签名、椭圆曲线、零知识证明等。这些数学工具不仅为区块链提供了安全保障,也为智能合约和去中心化应用(DApps)的开发奠定了基础。本文将深入剖析区块链中的核心数学基础,帮助读者理解其工作原理与实际应用。

fudaihb的博客 3592

区块链深度剖析:从技术原理到核心价值

区块链是使用密码学链接,将数据区块以顺序相连的方式组合成的一种链式数据结构去中心化、不可篡改、可追溯、集体维护。一句话收束:区块链通过经济激励(代币)+ 密码学(哈希/签名)+ 博弈论(共识),在无需信任任何人的前提下,实现了“全球可验证的状态机”。适合场景:多方不信任、需审计追溯、抵抗单点霸权。不适合场景:高频微支付、大数据存储、隐私原生数据(需依赖L2或ZK)。未来5年,区块链将像TCP/IP一样成为底层协议——看不见,但无处不在。参考文献Bitcoin白皮书(2008)

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 958

《区块链技术:解锁数字时代的无限可能》

区块链技术作为近年来备受瞩目的创新技术,正以崭新的姿态改变着我们的世界。从技术进展到行业应用,再到面临的挑战与机遇,以及未来的发展趋势,本文将全面剖析区块链技术的发展现状和潜力。

Anastasia_y的博客 1650

区块链网络安全技术研究:从加密算法到智能合约安全

区块链本质上是一个分布式的账本数据库,由一系列按照时间顺序排列的区块组成。每个区块包含了一定时间内发生的交易信息以及前一个区块的哈希值,通过哈希指针将各个区块链接成一个不可篡改的链条。这种链式结构确保了数据的完整性和可追溯性,任何对历史数据的修改都需要同时修改后续所有区块的数据,这在实际操作中几乎是不可能的。

数字魔方操控师的博客 996
上一篇: 【区块链与密码学】第2-6讲:区块链基础技术大剖析之共识算法(二)
下一篇: 【区块链与密码学】第2-8讲:区块链基础技术大剖析之P2P网络
Dig Quant
博客等级 码龄7年 124粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值