
声明
我不会带你做“炒B、撸空、兑换”等任何靠虚拟资产发财的事情。我也不会教你WEB3开发,毕竟“远程”课程那么多,大家直接去报班就行。
我就是研究“合规的支付新技术”,仅此而已。
这篇开始我给大家介绍下以太坊,不过以太坊的应用比庞大,并且内容也非常多,所以这篇文章先介绍以太坊基础知识与核心原理,后面我再通过多篇文章给大家介绍区块链的应用。在后续章节中,我的内容也会更加偏重与支付的应用。也就是WEB2.5也叫“PayFi”,因此我会沿着“跨境+WEB3+AI“的路径来介绍“资产和资金”的上链。当然,我介绍区块链会更加注重“原理”,因为从支付视角会更加关注“安全、效率、合规性以及可追溯性”。图1 PayFi支付(WEB2.5)
好了,废话就说到这里,下面我们直接开始介绍以太坊的基础知识,我将从“场景-概念-原理”进行“穿透式”的介绍,力求给你一个完整的视角。01 以太坊-Ethereum
我们前文介绍过,比特币作为加密货币的开创者,奠定了区块的基础。同时比特币也“耗电、缓慢、价格高、可编程差”也都是限制其发展的主要原因。1.以太坊的诞生
在2013年有一位大神Vitalik Buterin提出了提升比特币可编程性的改进方案,由于方案比较激进,在被比特币维护者拒绝后,它创立了以太坊(Ethereum),并在2015年上线。他将以太坊定义为一台“世界计算机”,全世界链上的交易都可以通过他来完成结算。这相当于“从功能手机升级到了智能手机”。2.比特币Vs以太坊
图2:比特币与以太坊比较
1)PoW-PoS:以太坊在比特币区块链的基础上进行了多项改进。最初采用工作量证明(PoW)机制,与比特币类似,但为减少能源消耗,于2020年转向权益证明(PoS),能源效率提升99%。PoS机制也加快了交易确认速度,从比特币的10分钟区块时间缩短至12秒,且12分钟内交易不可逆。2)账户模型:以太坊还引入了账户模型,支持智能合约,实现自动化交易,并通过以太坊虚拟机(EVM)增强了可编程性,支持构建复杂的去中心化应用。3)L2扩容:为提升性能,以太坊提出了L2扩容方案,通过链下处理数据,提高了性能并降低了成本,L1主链则主要负责结算。并且以太坊还在持续的演进,推出了“L1信标链、EOF虚拟机、新型智能合约、跨链交易、预言机”等创新技术。02 以太坊的架构
以太坊的愿景是成为一台“世界计算机” (The World Computer),它将是一台全球化、去中心化且永不宕机的计算平台。任何人都能在上面构建和运行金融应用程序,并且无需中介参与。支撑这个愿景是它一系列的技术创新和持续的架构演进。1.以太坊架构-世界计算机
图3:以太坊-世界计算机(参考自网络)
1)P2P网络:作为一台面向全球用户的去中心化“计算机”需要面临海量的全球用户访问,因此它基于P2P网络,将全球上百万台计算机作为它的节点来服务全球用户。2)链上交易:每一个节点又是一个完整的“中心化”L1基础设施,负责交易与合约的交互,完成交易受理、合约计算、创建/存储区块、共识投票/验证等处理,最终实现交易的不可逆。3)上链/下链:以太坊不仅对上链是开放的,还能与链下WEB2进行访问与存储。“预言机”可以实现“数据上链”,IPFS实现海量“数据存储”,并且它们都可以通过加密签名机制来实现数据的不可篡改。正是依托于这种“去中心化基础设施”,以太坊构建了一个“全球共享的计算平台”,从而支撑了多样化WEB3应用的发展。2.以太坊流程-世界状态机
如何让全球几百万台计算机步调一致的处理每一笔交易,以太坊给出的方案是“世界状态机”。它通过区块链“拍快照”的方式,让全球服务器共同记录处理结果,只要完成共识机制,全球服务器上的“状态就一致”了。大白话理解就是,“世界状态机,把过程拍成快照,然后只看最新的结果”。图4:世界状态机
1)交易驱动账户:账户的余额变动都是通过交易来驱动。2)区块快照存证:以太坊会把每次交易结果、账户余额拍个快照存在区块链上。3)共识达成一致:只要在规定时间内达成共识,这个状态就不可撤销了。下一笔新的交易在原有的账户余额上生成一个快照,然后继续进行全网共识,以太坊就是通过这种方式完成几百万用户同时的在线交易。03 以太坊基础知识
我们知道比特币的交易模型是“交易+UTxO”,它只是一个简单的记账系统,不适合处理复杂的逻辑。但是以太坊要实现可编程的去中心化交易,它要重新设计他的“账户和交易”模型。1.以太坊交易模型
以太坊采用了一套非常复杂的数据结构来设计它的交易模型,为了便于大家理解和比较,我们先来看下它和传统银行的账户交易模型有什么区别。1.1 传统的账户交易
传统银行账户交易必须具备“客户账户、内部账户、交易明细、回单凭证”这几项数据,才能提供适应复杂交易场景和流程的支付体验。并且传统银行要基于客户实名来处理账户交易,那公开在互联网的“匿名账户”又该如何交易呢?图6:银行中心化账户交易
1.2 以太坊交易模型
首先,它无需账户流水,因为去中心化账户不存储历史记录,节省存储空间,历史交易可通过应用层技术如“The Graph”查询。其次,以太坊采用无状态设计,不记录账户和交易状态,只保存交易结果收据,状态流转通过共识机制实现。最后,以太坊通过智能合约控制交易,而非独立的交易模块。这些区别使得以太坊的账户和区块链结构更易于理解。图7:以太坊的交易模
2.以太坊账户结构
以太坊把他的账户定义为“Account State”(账户状态),这也说明它保存的是账户的快照,最新的余额永远都保存在你最后一笔交易所发生的区块中,具体结构如下。图8:以太坊账户结构
1)账户数据要素
匿名的地址:由于以太坊是匿名交易,所以,对于客户拥有的账户,它通过一个“私钥控制的地址”来指向账户。balance:用来记录账户最新的余额。单位是Wei,是ETH的1/十亿;codeHash(使用合约):只有在合约账户中才有值。它存放合约代码编辑后的字节码,EVM虚拟机会根据这个字节码去加载合约的代码进行处理。storageRoot(适用合约):它是合约数据的根节点,其实合约也是存放在一棵Merkle Tree中的,这个我们在后面介绍。2)EOA与CA账户
以太坊整个账户结构非常简洁,最大的特点就是支持智能合约。所以它的账户类型包含以下两种;- 外部账户EOA(Externally owned account):被私钥控制且没有任何代码与之关联。
- 合约账户CA(Contract account):被它们的合约代码控制且有代码与之关联。
图9:外部账户与合约账户
3.区块链(MPT)
经过了这些铺垫之后,终于要介绍以太坊的区块链账本了。因为,以太坊的区块链结构要比特币复杂了好几倍。不过也不用担心,我们知道它的主要结构和作用就行了。以太坊的区块链称为MPT(Merkle Patricia Trie,默克尔-帕特里夏-字典树),从名字看就知道很复杂,不过不用担心,它就是一棵用来存储“账户状态、交易和收据信息”的“复杂的Merkle Tree”。图11:以太坊MPT树
1)扩展的区块头:
显著的特点是增加了关于“账户、交易、收据”的三个根节点,并根据以太坊的PoS和Gas机制新增了一些字段。整个区块链使用了“Hash链”结构,将所有区块连接起来。2)以太坊中的四棵MPT树
状态树 (State Trie):存储所有账户信息(余额、Nonce、代码哈希、存储根)。交易树 (Transactions Trie):存储当前区块的所有交易。收据树 (Receipts Trie):存储交易执行后的结果(Gas 使用情况、日志等)。存储树 (Storage Trie):每个智能合约账户都有独立的一棵存储树,用来存放合约变量。3)遵循Hash的雪崩特性
这几棵树中任何信息修改,都需要重新生成一个区块并共识,否则就会因为Hash值的雪崩效应造成整条链的分叉。4.智能合约
以太坊的智能合约(Smart Contract)是一种存储在区块链上的自动化执行程序。这里的“智能”不是“人工智能”,而是“可编程、自动化”的意思。它可以无需第三方介入,就能实现点对点的自动化交易。以太坊的智能合约运行在EVM(以太坊虚拟机)中,因此需要遵循ERC标准,它是EIP(以太坊改进提案)的一个子协议。为了更好的理解以太坊与智能合约,我们先来了解下整个以太坊的协议体系主要有哪些内容。4.1、智能合约协议
智能合约遵循的ERC标准(即Ethereum Request for Comments以太坊征求意见),它是专门针对场景应用推出的“通用接口标准”。只要遵循ERC标准就能开发出“稳定币、DeFi金融、NFT数字资产、GameFi、智能合约钱包”等热门的创新应用。一些著名的ERC合约如下:图14:常用的智能合约标准
4.2、常见兼容合约项目
ERC标准其实只是一块“乐高积木”,行业内有很多著名的项目,会把ERC合约与多种技术标准结合,形成兼容以太坊智能合约各类项目。图15:智能合约的行业应用
由此可见,以太坊的智能合约的应用场景是非常丰富的,具体的合约我们在后面的应用场景中再逐一介绍。下面我们来看下以太坊是如何执行智能合约的。5.虚拟机(EVM)
EVM(Ethereum Virtual Machine,即以太坊虚拟机)是以太坊智能合约的执行环境,他被嵌入在每一个以太坊的“全节点”中,负责运行智能合约。智能合约使用Solidity语言开发,当你开发完一个智能合约并完成编译后,它可以把他“部署”区块链上,以太坊会给“你的合约”创建一个对应的“CA账户”并保存在“Account Storage”中(就是前面CA账户外挂的Merkle树)。
图16:EVM运行智能合约流程
只要用户发送的交易请求中包含“智能合约字节码”,EVM就会执行“你的合约”,并按照以下步骤逐步执行。
- 加载合约:EVM会根据你提供的字节码去“CA账户”对应的“Account Storage”中读取对应的智能合约,并加载到Virtual ROM中。然后通过“程序计数器”逐行读取“合约指令”并执行。
- 扣减Gas费:在执行前首会扣减Gas费,这样即使“你的合约”出现死循环,也会因为Gas耗尽而终止;
- 执行合约:随后你合约指令被压入堆栈中(Stack),并在内存中(Memory)运行,最终执行结果会被保存到“Account Storage”的数据库中,完成出块。并有共识模块验证后广播给全网完成共识。
显然,这是一个完全自动化的精妙设计,他通过交易来驱动EVM执行合约,合约自动完成交易处理,并且通过Gas费来限制异常。整个过程全部自动化并且无需第三方介入。04 以太坊运行原理
讲了这么多基础概念,下面我们就把以太坊一笔交易的运行流程给大家做个全流程的串联,让你对以太坊有个整体认识。以太坊的核心交易流程,其实就是进行一次全网的PoS(权益证明),以太坊的交易速度就比比特币要快很多。他12秒就能完成打包出块,并发布到全网由见证者投票。最终共识12.8分钟就能完成。图17:以太坊核心交易流程
下面我们就以收付款人通过一笔USDT转账交易来介绍一下整个处理过程。1)选出提议者打包(12秒)
付款人向收款人地址转账USDT,交易信息被发送到网络节点的Mempool。以太坊每12秒选出一个“提出者”来打包交易。提出者处理交易、计算合约并创建区块,然后区块经过验证并广播到全网,进行共识投票。2)上链验证者投票(6.4分钟)
网络中的其他节点作为验证者,确认交易并更新余额和合约状态。他们将验证结果签名后广播。大约6.4分钟内,若超过1/3节点同意,交易就基本不可逆。3)最终共识并奖励(12.8分钟)
理论上,1/3共识仍有分叉风险,因此需要更多节点投票。以太坊目标是在12.8分钟内达到2/3共识,确保交易不可分叉,完成最终共识,参与者获得奖励。显然,以太坊这套机制在“打包排序”和“计算处理”上都限定了时间,以确保交易会被快速的处理。你可能会问,要是有的节点没有按时间处理完,或者处理一半掉线、宕机了怎么办呢。其实以太坊的PoS还有处罚机制。这些内容我们就在下一篇《PoS权益证明》中介绍了。讲在最后
在对以太坊的学习过程中,感受最大的就是他的公开和透明性,他的资料非常完善,底层代码、合约代码,甚至一些项目代码都是开源,并且还有很多的区块链浏览器、开源钱包让你快速的体验产品。当然,最重要的还有AI大模型,它在WEB3这方面知识是非常全面的。只要你有一份目标清晰的计划(例如我的《WEB3知识地图》),通过,“AI问答+搜索引擎+WEB3平台体验与实践”,学习WEB3一点都不难。个人感觉,由于WEB3开放与开源,加上AI的加持,他学习的难度其实比传统的支付和金融小很多。当然,如果有过来人带下,那就能更加事半功倍了,希望我这篇文章能给你带来帮助。https://ethereum.org/zh/whitepaper/https://learnblockchain.cn/article/22102
https://eips.ethereum.org/erc
以太坊浏览器:https://etherscan.io/MetaMask:https://metamask.io/zh-CNRemix:https://remix.ethereum.org/