当前位置: 首页 > news >正文

肖臻《区块链技术与应用》第14-15讲 超越货币:以太坊如何用“智能合约”开启去中心化应用时代

超越货币:以太坊如何用“智能合约”开启去中心化应用时代

摘要:
在比特币成功地实现了去中心化货币之后,一个更宏大的问题摆在了世人面前:“如果货币可以去中心化,还有什么可以?”以太坊(Ethereum)正是对这个问题最响亮的回答。本文基于北京大学肖臻老师的公开课内容,介绍了以太坊的设计哲学及其核心创新。文章首先阐述了以太坊针对比特币在出块时间、挖矿算法等方面进行的改进。随后,重点深入剖析了以太坊最革命性的贡献——智能合约(Smart Contract),将其类比为对传统司法体系的“技术性替代”,并详细阐释了其“代码即法律”、自动执行、不可篡改等特性如何为跨国协作、众筹等场景提供无需信任的解决方案。


1. 以太坊的诞生:对比特币的改进与超越

作为两种最主要的加密货币,以太坊在系统设计上,针对比特币在长期运行中暴露的一些问题进行了深思熟虑的改进。

  • 更快的节奏:从10分钟到15秒的出块时间
    比特币平均10分钟的出块时间,常被诟病影响了系统的交易吞吐量(Throughput)和响应速度。以太坊大幅缩短了这一时间至十几秒,为了适应这种高速出块的节奏,以太坊还专门设计了一套新的共识协议(GHOST协议)来处理因此产生的更频繁的临时分叉问题。

  • 更公平的“竞赛”:抗ASIC的挖矿算法
    比特币计算密集型的挖矿算法(SHA-256)导致了一场算力“军备竞赛”,最终使得挖矿被专业的ASIC芯片矿机所垄断,这在很多人看来违背了去中心化的初衷。为此,以太坊在早期设计了对内存要求极高(Memory-Hard)的挖矿算法,旨在抵制ASIC(ASIC-Resistance),让使用通用显卡(GPU)的普通用户也能在更长的时间内参与挖矿。

  • 更绿色的未来:从工作量证明(PoW)到权益证明(PoS)的愿景
    以太坊从早期就规划了从能源消耗巨大的工作量证明(PoW,即挖矿)向**权益证明(Proof-of-Stake, PoS)**的转型。在PoS机制下,区块的产生不再依赖于算力竞赛,而是类似于股东投票,由持有以太币(ETH)的节点按权益比例来决定,从而极大地降低了网络的能耗。

2. 核心革命:“如果货币能去中心化,合约呢?”

除了上述技术改进,以太坊真正石破天惊的创新,是引入了对**智能合约(Smart Contract)**的支持。

从去中心化货币到去中心化合约

要理解智能合约的意义,我们可以先回顾去中心化货币的本质:

  • 传统货币: 由政府发行,其有效性和稳定性由国家的司法和暴力机关来维护。
  • 去中心化货币(比特币): 通过密码学、共识机制等技术手段,取代了政府的职能,维护了一个无需中央权威的货币体系。

以太坊将这一逻辑推向了新的维度——合约:

  • 传统合约: 由社会中的个人或组织签订,其有效性同样由司法系统(法院、律师)来保障。如果发生纠纷,需要通过诉讼来判决和强制执行。
  • 去中心化合约(智能合约): 旨在通过技术手段,取代司法系统的仲裁和执行功能,让合约能够在一个去中心化的网络上自动、强制地执行。

3. 什么是智能合约?—— 代码即法律

智能合约是一段部署在区块链上的程序代码,它将传统合约的条款和逻辑用编程语言来实现。一旦部署,这段代码便成为一份自动执行、不可篡改的“法律文本”

自动执行、不可篡改的“法律文本”

当触发了合约中预设的条件时,代码会自动执行相应的操作,无人可以干预或阻止。更重要的是,由于区块链的不可篡改性,这份“合约代码”一旦发布,任何人都无法修改它,包括合约的创建者本人

这就实现了“代码即法律”(Code is Law)的理念——所有参与方从一开始就被技术强制,只能严格按照代码中制定的规则来行事,从根本上杜绝了违约的可能性。

智能合约的优势:信任的数学保障

这种设计在特定场景下具有巨大的优势:

  • 解决跨司法管辖权问题: 现实世界中,一份涉及多国参与方的合同(如国际众筹项目),一旦出现纠纷,诉讼成本极高,甚至不知道该去哪个国家的法院起诉。智能合约提供了一个全球统一、中立、自动化的执行平台,参与者无需信任彼此,只需信任代码。
  • 提高执行效率与确定性: 传统合同的执行依赖于漫长且充满不确定性的法律程序,即使胜诉也可能面临执行难的问题。智能合约则能确保协议被即时、精准地执行,提供了数学层面的确定性保障。

当然,并非所有合同都能被代码化,但对于那些逻辑清晰、条款可量化的协议,智能合约提供了一种颠覆性的、无需信任的解决方案。


课程展望:深入以太坊的技术肌理

为了更全面地理解以太坊,接下来的课程中,肖臻老师将带领我们深入其技术内部,主要包括:

  • 以太坊独特的数据结构与共识机制。
  • 其工作量证明(PoW)挖矿算法与权益证明(PoS)的设计。
  • 对智能合约的深入讲解与实例分析。

以太坊的出现,将区块链的应用从单一的“去中心化货币”领域,扩展到了广阔的“去中心化应用”(dApp)新大陆,其深远影响,至今仍在不断展开。

好的,这是根据北京大学肖臻老师的课程内容,并遵循您之前的要求(包括Markdown格式)整理的一篇全新技术文档。


比特币与以太坊的“账本”之争:从UTXO到账户模型的演进与权衡

摘要:
比特币和以太坊作为两大主流加密货币,其底层最根本的区别之一在于它们如何记账和管理用户资产。本文基于北京大学肖臻老师的公开课内容,深入对比了比特币基于交易的 UTXO 模型与以太坊基于账户的 Account Model。文章首先分析了两种模型在用户体验上的差异,接着探讨了它们在安全设计上的对称性——UTXO模型天然防御重放攻击,而账户模型则需引入 Nonce 机制来应对。最后,本文揭示了以太坊之所以“另起炉灶”选择账户模型的根本原因:为实现其核心创新 智能合约,必须提供一个稳定、可持久交互的身份基础。


1. 两种记账哲学:比特币的“现金”与以太坊的“银行”

1.1 比特币的UTXO模型:精准但“别扭”的现金流

比特币采用的是一种基于交易的账本(Transaction-based Ledger)。在这个模型中,系统不显式地记录每个账户的“余额”。用户的资产由一堆分散的、未曾花费的交易输出(UTXO)组成。

这种“现金”模式在使用上与我们的直觉有所不同:

  • 需指明资金来源: 当A向B转账10个BTC时,A必须在交易中明确指出这10个BTC是来自之前哪些交易的输出(UTXO),以证明资金的合法性。这与银行转账时只需从总余额扣款不同。
  • 找零机制: UTXO是不可分割的。如果你有一个10 BTC的UTXO,想支付3 BTC,你必须将整个10 BTC的UTXO作为输入花掉,然后交易会产生两个新的输出:一个3 BTC给收款方,另一个7 BTC作为“找零”回到你自己的一个新地址。

这种设计的优点是隐私保护较好,通过“打一枪换一个地方”(每次找零都用新地址)的方式,可以割裂交易间的关联性。但缺点也显而易见:它与人们习惯的“账户余额”概念相去甚远,使用起来较为“别扭”。

1.2 以太坊的账户模型:直观且高效的余额系统

以太坊则采用了更符合直觉的基于账户的模型(Account-based Model),其运作方式与传统银行账户高度相似。

  • 显式记录余额: 以太坊的全局状态中,明确记录了每一个账户地址及其对应的以太币余额。
  • 直接增减余额: 当A向B转账10个ETH时,系统只需检查A账户的余额是否足够。如果足够,就直接将A的余额减10,B的余额加10。整个过程无需指明资金来源,也无需处理复杂的找零逻辑。

这种设计大大简化了交易的构建和理解,对用户和开发者都更加友好。

2. 安全攻防的对称性:双花攻击 vs. 重放攻击

账户模型看似完美,但它在解决了比特币 双花攻击(Double-Spending Attack)的同时,也引入了一种新的、与之对称的风险——重放攻击(Replay Attack)。

2.1 账户模型的“天然防御”与新弱点
  • 天然防御双花: 在账户模型下,双花攻击变得非常困难。如果A试图将同一笔钱花两次,系统会直接从其账户余额中扣款两次。如果第二次扣款时余额不足,交易就会失败。
  • 新的弱点——重放攻击: * 假设A向B转账10 ETH,这笔交易被打包确认。
    • 恶意的B可以将这笔已经成功的交易原封不动地复制下来,再次广播到网络中。
    • 由于这笔交易的签名等一切都是合法的,网络节点可能会误认为这是A发起的一笔转账,从而再次从A的账户中扣除10 ETH给B。
    • 比特币为何免疫? 在比特币的UTXO模型中,重放一笔交易就等同于尝试花费一个已经被花掉的UTXO,这会被系统立刻识别为双花攻击而被拒绝。
2.2 以太坊的解决方案:交易计数器Nonce

为了防御重放攻击,以太坊为每个账户引入了一个关键状态——Nonce

  • 定义: Nonce是一个从0开始的计数器,记录了该账户已经成功发出的交易总数
  • 工作机制:
    1. 当一个账户发起交易时,必须在交易数据中包含其当前的Nonce值(例如,这是该账户的第21笔交易,则Nonce=20)。
    2. 网络节点在验证交易时,会检查交易中的Nonce值是否与该账户在链上记录的下一个期望Nonce值相匹配。
    3. 交易一旦成功,该账户在链上的Nonce值就会加1。
    4. 如果此时有人重放刚才那笔Nonce为20的交易,节点会发现该账户当前的期望Nonce已经是21了,因此会拒绝这笔“过时”的交易。

通过这个简单的交易计数器,以太坊有效地阻止了重放攻击。

3. 为合约而生:以太坊为何另起炉灶?

以太坊的创始人Vitalik Buterin在设计之初,完全可以借鉴比特币成熟的UTXO模型。他之所以选择截然不同的账户模型,其根本原因是为了服务于以太坊的核心愿景——智能合约

3.1 两类账户:外部账户与合约账户

以太坊中有两类账户:

  • 外部账户 (Externally Owned Account, EOA):由私钥控制,为普通用户所有。可以主动发起交易。
  • 合约账户 (Contract Account):由其内部代码控制,即智能合约。它没有私钥,不能主动发起交易,只能被动地接收和响应来自其他账户的调用。
3.2 智能合约需要“稳定的身份”

智能合约的本质是部署在链上、需要与用户和其他合约进行长期、可预测交互的程序。这就要求参与交互的各方拥有稳定且持久的身份

  • UTXO模型的问题: 比特币的UTXO模型鼓励用户为了隐私而频繁更换地址。如果一个合约的参与方地址不断变化,或者合约本身的地址可以轻易改变,那么合约的执行将变得混乱且不可靠。例如,你向一个众筹合约投资,如果未来返款时,你的收款地址或合约地址变了,将导致灾难性的后果。
  • 账户模型的优势: 账户模型提供了一个天然的、稳定的身份标识——账户地址。无论是个人用户(EOA)还是智能合约,其地址都是固定不变的。这为构建复杂的、需要持久状态和稳定交互的去中心化应用(dApp)提供了坚实的基础。

总结: 以太坊选择账户模型,并非仅仅为了用户体验的优化,而是一个深思熟虑的、服务于其宏大目标的架构决策。正是这个看似简单的改变,为日后繁荣的 DeFiNFT 和整个去中心化应用生态铺平了道路。

http://www.dtcms.com/a/330917.html

相关文章:

  • 备战亚马逊“Prime Big Deal Days”:卖家如何解锁年末增长密钥?
  • 2025年大模型安全岗的面试汇总(题目+回答)
  • 回归算法:驱动酒店智能化定价与自动化运营的引擎—仙盟创梦IDE
  • 不同ide回到上一个文件快捷键
  • STM32--寄存器与标准库函数--通用定时器--输出比较(PWM生成)
  • 区块链在可信空间智能合约中的应用
  • 在IAR Embedded Workbench for Arm中实现NXP S32K3安全调试
  • python sqlite3模块
  • iOS App TF上架全流程实战 高效内测分发与IPA包管理
  • 【KALI】第一篇 安装Kali Linux虚拟机之详细操作步骤讲解
  • Elasticsearch RBAC 配置:打造多租户环境的安全访问控制
  • 一篇文章读懂.Net的依赖注入
  • 应用银行卡识别技术,构建更安全、便捷的数字身份认证与支付生态
  • LeetCode hot 100 day1
  • springboot+vue实现通过poi完成excel
  • 云计算-多服务集群部署实战指南:从JumpServer到Kafka、ZooKeeper 集群部署实操流程
  • MySQL流程处理函数
  • 计算机视觉Open-CV
  • Swift 实战:用链表和哈希表写出高性能的贪吃蛇引擎(LeetCode 353)
  • 力扣-1143.最长公共子序列
  • 【LeetCode 热题 100】295. 数据流的中位数——最大堆和最小堆
  • 前端开发如何优化 SEO:常见问题及解决方案全解析​
  • JMeter性能测试详细版(适合0基础小白学习--非常详细)
  • 简单好用的桌面时钟—— Digital Clock 4
  • 飞算JavaAI开发全流程解析:从自然语言到可运行工程的智能进化
  • [Android] 二十四节气日历v1.0.3 - 弘扬传统文化,精致设计,无广告纯净体验!
  • 考研408《计算机组成原理》复习笔记,第五章(3)——CPU的【数据通路】
  • 双机热备实验
  • Linux编程1:进程和线程
  • DTW算法判断两条曲线的相似度,Python代码