THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

原创 韩昊轩 THU学生区块链

点击“阅读全文”,观看完整视频

https://www.bilibili.com/video/BV1F34y1Z7JG/

  本系列课程是清华大学学生区块链协会THUBA推出,由PlatON赞助的区块链课程,涵盖了从区块链基础学习到深度原理研究等方面。

本系列课程从第一章区块链基础介绍开始,第四节是以太坊简介。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

前言

2009年,比特币系统上线之后一直平稳运行,让对比特币系统感兴趣的人们信心十足,也让人们开始思考,既然货币可以去中心化,那么是不是还可以把其他的一些东西去中心化呢?

比特币本身是一个去中心化的货币系统,由于脚本的非图灵完备性,并没有支持很高的扩展性,想要利用比特币系统来构建一些有趣又有意义的应用就比较困难。用户能够在比特币系统中使用的功能受限。

在2013年,比特币社区的一名开发者Vitalik Buterin就提出了很多的应用程序都可以借助比特币的去中心化来实现进一步的发展。因此Vitalik就向比特币核心开发组提出了这一建议,希望可以把比特币系统进行支持更高扩展性的升级。但是最终比特币核心开发组拒绝了这一提议。

在2013年末的时候Vitalik发布了以太坊白皮书,着手建立一个去中心化的支持高扩展性的系统。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

Vitalik在2014年进行了众筹,以太坊的理念被大量的开发者接纳,因此开始逐步发展起来。到2015年7月,以太坊完成了若干轮测试,开始向用户开放使用。

以太坊的理念是补充比特币没有完成的针对更加广泛内容的去中心化。因此以太坊瞄准了可以构建一切个人计算机能够完成的功能的图灵完备的状态机,将整个系统实际上变成了一个“世界计算机”

Slock.it公司曾经在以太坊上发起了名为The DAO的众筹项目,这个项目是去中心化的自治组织(Decentralized Autonomous Organization)的著名项目,也构成了以太坊生态中的一类重要去中心化应用。到2016年6月,The DAO项目已经筹集了超过1.5亿个以太币,但是由于The DAO合约中的代码存在漏洞,遭到了黑客攻击,最终价值6000万美元的以太币被盗走。

面对这一次严重的黑客攻击事件,有两种解决方案。其一是软分叉,通过添加代码,将攻击者列入黑名单并阻止其将盗取的以太币转移;另一种为硬分叉,直接将以太坊区块链的状态回滚到攻击发生之前。对硬分叉的反对声音主要是认为硬分叉破坏了区块链的去中心化。由于攻击者声称自己没有违反以太坊的任何规则,并声称阻止其转移以太币将会被其诉诸法律,并且在软分叉准备实施时代码中又发现了新的漏洞,最终采用了硬分叉的方法,将以太坊强制回滚。

硬分叉也产生了两条不同的链,一条为未进行回滚的链,称为“以太坊经典”ETC,另一条为新链,即ETH。这两条链并没有优劣之分,只是代表了不同的社区共识以及价值观。“代码即法律”的信条面临第一次信任危机,目前ETH的社区规模和活跃人数远远超过ETC。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

以太坊因为提供了很强的功能性,被称为区块链2.0。以太坊在很长一段时间内都是被使用最多的区块链,近几个月的以太坊活跃地址数徘徊在40万到80万。相比比特币的最高不到30万活跃地址高出了很多。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

以太坊的模型设计

以太坊协议在设计时主要有四个原则:

1.简单原则

以太坊协议应该尽可能简单,理想情况下,普通程序员都应该能够遵循和实施整个规范,减少任何个人对协议的影响,实现以太坊作为对所有人开放的协议的愿景。各种复杂的优化通常不会被接受,最大限度地降低特殊人物、精英团体等对协议的影响。

2.通用原则 

以太坊的基本设计理念之一是没有“功能”。以太坊提供了一种图灵完备的脚本语言,开发者可以用来构建任何可以数学定义的智能合约或交易类型。类似于3D打印机,有产品的原料、制作产品的工具,并没有产品,但是借助3D打印机可以创作出各种各样的产品。

3. 模块化原则

以太坊的不同部分应设计为尽可能模块化和可分离。底层协议和上层应用解耦合。在开发过程中,对底层协议的微小修改的同时可以使应用程序堆栈继续运行而无需进一步修改。

4.无歧视原则 

以太坊协议不应主动限制或阻止特定类别的使用,协议中的所有监管机制都应旨在直接监管危害,而不是试图反对特定的不良应用。例如对于一些在中心化编程中通常被认为是错误的死循环代码,以太坊并没有限制不可以作为合约上链,只是通过gas费机制等来公平地执行合约。

区别于比特币的UTXO模型,以太坊采用Account模型,每个节点都存储了一个完整的状态树,状态树中存储了整个以太坊系统中的账户地址的余额。这样做的优点是很便于用户理解,在批量交易的时候成本更低,也易于智能合约的实现。但这也导致同一个账户的交易面临重放攻击。重放攻击是收款方将之前的交易重新发送给矿工,矿工收到交易后会认为这是一笔新的交易,这样其他的节点收到这个交易后存入账本最终会把付款方的余额减少,导致付款方重复付款。

以太坊中解决重放攻击是通过在交易中添加计数器nonce,表示这是发起交易的账户进行的第多少次交易,同时进行签名,无法伪造。这样一来当付款方重复将交易发送给矿工时,矿工会发现这笔交易之前已经打包进区块了,就不会重复打包交易。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

以太坊中的账户共有两种:

1. 外部账户 

与比特币中的账户类似,由掌管账户私钥的人控制。可以发起交易,与其他外部账户之间的交易只能是转账。创建外部账户是免费的。

2. 合约账户 

由代码控制,部署在区块链上。不能够发起新的交易,创建合约账户要支付一定的费用。

这两种账户都可以接受、持有和发送以太币,都可以与区块链上的智能合约进行交互。区别是外部账户由私钥持有者控制,而合约账户并无控制者,仅能按照预先设定的代码管理资产。

以太坊中的数据结构与比特币类似,使用了Merkle树,区别是以太坊中对Merkle树进行了进一步的优化,采用了MPT(Merkle Patricia Trie,状态压缩字典树),是字典树、哈希树和前缀树的结合。对于五个单词Tag, Test, To, Ether, Ethereum的Patricia树如图。通过状态压缩大大减小了树的高度,提高了查询效率。需要注意的是,交易发生后状态树会发生改变,此时的Patricia树的节点可能需要展开。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

以太坊维护了一个全局的状态树。其中包含了Branch节点Leaf节点Extension节点。leaf节点是branch节点的子节点,extension节点存储了子节点中的相同前缀。状态树中存储了所有用户的账户余额。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

以太坊中除了维护一棵全局的MPT,还在每个区块中生成交易树和收据树。交易树和收据树也都是MPT,都是用于验证交易,收据树用于快速查找区块中的交易执行结果。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

与比特币相比,以太坊的区别主要有:

1.出块时间更短

通过改进共识协议增加的吞吐量使以太坊能够比比特币更快地处理链上交易,这也使得各种功能强大的去中心化应用成为可能。

2.共识算法的转换

以太坊的开发人员目前正在努力将网络切换到权益证明(PoS) 共识算法,该算法依赖于用户将代币作为抵押品来验证和创建区块。

3.Account账户模型

基于Account账户模型,智能合约的实现更加容易。

4.支持图灵完备的智能合约

用户可以借助循环等指令编写功能更加完善的智能合约,利用gas费机制避免恶意攻击。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

智能合约简介

合约可以理解为我们说的合同,是双方当事人基于意思表示合致而成立的法律行为,为私法自治的主要表现。就是一群人为了某个共同的项目来协作,大家对于项目如何规划如何实施最终如何验收等达成一致,来形成一种约定,不遵守约定的行为会受到法律的制裁。

智能合约就是可以自动执行的合约。用技术的手段来代替法律手段。智能合约是部署在区块链上的一段代码。代码的逻辑是公开透明的,任何人都可以查看和使用,同时也不需要传统合约那些复杂的流程。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

智能合约的逻辑就代表了合约的内容,可以理解为一个自助售货机,只要付出了足够的以太币,就可以得到想要的产品,而且得到产品的过程是由程序自动执行的。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

因为以太坊设计的简单原则和通用原则,以太坊提供的智能合约是图灵完备的,可以完成普通个人计算机上能完成的一切任务。因此这就使得开发者们可以在以太坊上构造自己设想出的任何程序,这些程序可以在全球任意的接入以太坊网络的计算机上运行,也因此,以太坊被称为一台全球分布式计算机。提供了智能合约的以太坊被称作区块链2.0

以太坊的智能合约支持高级语言编写,Solidity是目前编写智能合约最常用的语言,是一种类JavaScript语言。智能合约的编译需要将高级语言编译成字节码,同时生成应用程序二进制接口ABI,以便应用程序能够理解合约并调用合约的功能。

正如上节课我们介绍比特币时提到的问题,图灵完备的智能合约存在死循环等安全问题。比特币通过限制合约功能,消除循环、跳转指令来解决这一问题,而以太坊则通过经济手段来解决。合约运行前需要调用者存入一笔费用,运行每个指令都花费一些费用(根据指令的复杂程度而定),如果执行结束返回剩余费用,而一旦费用耗尽未结束,则回滚状态并且不退回费用,这样可以避免攻击者发送恶意的合约调用消耗系统资源。

智能合约的部署也即合约账户的创建是通过外部账户向0x00地址发起交易实现,字节码会被写入区块链账本中,广播到网络中的所有节点。部署需要外部账户支付一定的gas费,作为给矿工挖矿的奖励。gas费跟交易中要执行的操作有关,操作越多越复杂,gas费就越高。

智能合约的调用需要调用者向合约账户的地址发起交易,在交易数据中填入合约执行需要的参数,并支付gas费和其他费用。

智能合约的执行是在以太坊虚拟机EVM中,合约执行时的指令为opcodes,包含了常用的堆栈机指令ADD, XOR, AND, SUB等,也包含了区块链特有的BALANCE, ADDRESS等指令。

功能强大的去中心化应用

以太坊的智能合约实现了用户定制化的应用,目前的去中心化应用主要分为三种,DAO(Decentralized Autonomous Organization), NFT(Non-Fungible Token) 和DeFi(Decentralized Finance)。

DAO 是一种去中心化的人员组织方式,决策由提案和投票决定。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

NFT是非同质化代币,指的是表示数字资产的唯一加密货币令牌。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

DeFi去中心化金融

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

在结合DeFi和NFT的基础上,诞生了GameFi,是DeFi + NFT + Game

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

目前的去中心化应用市场越来越繁荣,已经有若干较为成熟的项目例如DAO项目The DAO,GameFi链游项目Axie infinity,DeFi去中心化交易所项目Uniswap以及众多NFT交易平台Opensea等。

对比中心化应用和去中心化应用,去中心化的应用优势在于系统中大部分节点瘫痪的情况下依然能够正常运行,同时完全依靠表决投票的民主形式,在信息传递效率、系统性能等方面做出的牺牲还需要技术上进行弥补。

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

总结

以太坊在一定程度上提升了比特币的性能,增强了比特币系统的功能。但是面临最大的问题在于,所有智能合约的交互数据都存储在区块链上向所有人公开。攻击者可以轻易地分析用户数据并尝试攻击。因此,也有人将以太坊称为“黑暗森林”,暴露自己的人会成为猎物。

为了解决用户隐私的问题,PlatON等一系列新公链都提出了自己的方案,下节课我们将介绍PlatON公链的解决方案。

参考文献:

[1].Ethereum https://en.wikipedia.org/wiki/Ethereum#Design

[2].Bitcoin https://en.wikipedia.org/wiki/Bitcoin

[3].https://ethereum.org/zh/developers/docs/

[4].https://etherscan.io/?__cf_chl_rt_tk=wlBk9NvMbNor2SJM3z2r9Wpc33zvuHH2D3g3Hb3dHHk-1636537602-0-gaNycGzNCX0

[5].https://studio.glassnode.com/metrics?a=BTC&m=addresses.ActiveCount

[6].The DAO (Organization) https://en.wikipedia.org/wiki/The_DAO_(organization)

[7].Ethereum design philosophy https://ethereumbuilders.gitbooks.io/guide/content/en/design_philosophy.html

[8].Ethereum block architecture https://ethereum.stackexchange.com/questions/268/ethereum-block-architecture

[9].以太坊详解 之 Merkle Patricia Tree https://www.jianshu.com/p/4c8f74e675c3

[10].What Is A Merkle Tree https://www.weusecoins.com/what-is-a-merkle-tree/

[11].https://ethereum.org/zh/dapps/


END

文稿&视频 |   韩昊轩

排版 | 土BA

审核 | Zeo Celia

THUBA专栏 | 《区块链系列课程》1.4以太坊介绍

本文转载自https://mp.weixin.qq.com/s/ufCyxTnbmFcLKiwAGo-r8Q

(0)
PlatONWorld-M6的头像PlatONWorld-M6管理员
上一篇 11 11 月, 2021 13:58
下一篇 11 11 月, 2021 15:40

相关推荐

发表回复

登录后才能评论