以太坊技术浅探

目录

一、技术背景

二、 关键技术

2.1 智能合约

2.2 共识算法

2.3 加密技术

2.4 P2P模型

2.5 账户模型

三、 创新方向

3.1 零识证明

3.2 智能合约钱包

3.3 信用委托

3.4 玩赚模式

四、典型应用

4.1 MetaMask

4.2 Swarm

4.3 BTCRelay

五、个人展望

以太坊技术探究

摘要:区块链技术是近十年来的新兴技术,具有去中心化、不可篡改、数据公开透明等优点,是分布式数据存储、P2P 网络和公钥密码学等技术的新型应用模式。区块链技术的发展带动了互联网、金融、电信等各个领域的产业技术革新,同时为了更好地适配这些领域的发展,区块链也从1.0时代的比特币发展到了2.0时代的以太坊时代[1]。以太坊是一款在区块链上实现智能合约,开源的底层系统,可以把它理解为一个区块链操作系统,每个人都可以在以太坊上开发应用程序。上面所说的应用,其实就是合约,这是以太坊的核心。合约所能提供的业务,几乎是无穷无尽的,因为图灵完备的语言提供了完整的自由度,让用户搭建各种应用。白皮书举了几个例子,如储蓄账户、用户自定义的子货币等。为了更好地探究以太坊,本文将从以太坊的关键技术、创新方向、典型应用等角度深入浅出地对以太坊进行探究。

关键词:区块链;以太坊;智能合约;

一、技术背景

在区块链1.0时代,比特币技术让人们看到了数字货币的优点,借助比特币技术,我们获得了一种新的技术思想,即如何在无第三方机构的情形下构建可信机制。“工作量证明链(Proof—of-work Chain)”[2]的等关键技术开始被大众所熟知。同时人们开始着眼于加密货币以外的领域,希望将区块链技术融入其他领域,推动金融服务、公共服务、物联网(IoT)等领域的技术革新。

2013年底,以太坊发明人Vitalik Buterin发布以太坊初版白皮书,召集了一批认可以太坊理念的开发者启动项目,其中就有项目联合创始人Gavin Wood和Jeffrey Wilcke[3]。他们希望能够开发出一种能够允许开发人员通过编写智能合约来构建和发布分布式应用程序的平台,希望以太坊成为像TCP/IP协议这样的标准,能让以太坊区块链协议内置编程语言,兼容各种区块链的应用,不用像以前那样各自为政分别定义自己的区块链协议。以太坊(Ethereum)作为区块链开发平台,可以用来担保、编程和交易诸如此类的事务:电子投票,金融交易,众筹产品,公司和企业管理,签署合同,协议,知识产权保护以及受益于硬件集成的智能资产。

2015 年,智能合约在以太坊区块链中首次被实现。开发人员可以通过内置的完全成熟的图灵完整编程语言(例如,Solidity)构建和部署智能合约,在以太坊上设计各种应用程序。以太坊使用一种专门为以太坊创建的,基于 PoW 的共识算法,称为 Ethash[4]。

随着 DeFi 等项目的迅速升温,以太坊上交易量不断激增,这使得交易费用不断攀升,交易时间不断加大。总的来说,以太坊 1.0 已经难以满足用户的使用需求和发展需求。在2020年以太坊社区和技术团队开始了以太坊2.0的测试,以太坊 2.0 采用了信标链、分片、PoS 及 EWASM 等技术。目前“阶段0”信标链已经上线,它将协调网络,为以太坊生态系统提供了利害关系证明。预计在2022年中,以太坊主网将与信标链权益证明系统“合并”[5]。下图为以太坊 2.0 完全实现后的样子。


图1-1 以太坊2.0设计图

截至2022年1月,以太坊是全球第二大受欢迎的密码货币。它依赖于区块链技术,这是一个应用程序、唯一的账簿。BlockChain是由一个分散和开放的成员点对点网络来维护的,BlockChain的目的是消除银行维持中央角色的财务分类账。作为区块链技术2.0的典型代表,以太坊具备以下关键技术:

2.1 智能合约

与1.0相比,这是BlockChain 2.0的最大突破,使用了以太坊的底层应用

平台。本质上来说,智能合约是一段程序,它以计算机指令的方式实现了传统合约的自动化处理。简单讲,智能合约就是双方在区块链资产上交易时,触发执行的一段代码,这段代码就是智能合约。智能合约不只是一个可以自动执行的计算机程序,它本身就是一个系统参与者,对接收到的信息进行回应,可以接收和储存价值,也可以向外发送信息和价值。这个程序就像一个可以被信任的人,可以临时保管资产,总是按照事先的规则执行操作。”开发者可以发布和编写各种类型的智能合约,用来实现应用程序的功能,并能通过web3.js或者web3.java与其他外部的电子网络系统进行数据的交互和处理,从而在各种应用场景中得到广泛的应用[6]。

2.2 共识算法

1993年,工作量证明的概念最早被提出。1997年一种用于防止DoS攻击和垃圾信息的哈希现金被创造 ,中本聪基于哈希现金的原理设计了比特币系统的共识算法工作量证明(Proof of Work,PoW)共识算法。PoW共识算法的核心思想是通过解决一个基于SH A-256哈希函数的谜题来竞争生成区块,这个谜题需要节点消耗一定的算力才可以解决。在比特币中,节点在解决PoW问题时,需要将区块头(时间戳、Merkle树根哈希值以、对前一个区块进行哈希运算的结果值以及其他属性字段)的哈希值结合随机值作为输入进行双重SHA-256运算。在此过程中,随机值是不停变换的,每变换一次重新进行双重SHA-256运算,直到得到一个满足目标难度值的随机值,第一个计算出满足目标难度值随机值的节点将会获得生成区块的机会[7]。

以太坊1.0使用一种改进的基于 PoW 的共识算法Ethash。Ethash算法是基于运算能力的授权/封印过程。Ethash实现的Seal()函数,其基本原理可简单表示成以下公式:

RAND(h, n)  <=  M / d  公式2-1

这里M表示一个极大的数,比如2^256-1;d表示Header成员Difficulty。RAND()是一个概念函数,它代表了一系列复杂的运算,并最终产生一个类似随机的数。这个函数包括两个基本入参:h是Header的哈希值(Header.HashNoNonce()),n表示Header成员Nonce。整个关系式可以大致理解为,在最大不超过M的范围内,以某个方式试图找到一个数,如果这个数符合条件(<=M/d),那么就认为Seal()成功。

由于该算法内存大,不适合使用矿机挖矿,因此在保证系统安全的同时达到抵制矿机的作用。不过以太坊中任然造成了大量资源的消耗。

以太坊目前处于家园阶段,100%采用PoW挖矿。从家园到宁静,从PoW到PoS,这个过程中,以太坊通过难度炸弹的调节来避免以太坊被分成两条链,引导大家平稳过渡到PoS。PoS要求节点提供一定数量的代币证明来竞争区块链记账权。但是如果单纯依靠代币余额来决定记账者必然使得富有者胜出,导致记账权的中心化,降低共识的公正性,因此不同的PoS机制在权益证明的基础上,采用不同方式来增加记账权的随机性来避免中心化。例如根据你持有货币的量和时间来竞争记账权,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个PoS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(可理解为年利率5%)。比如你有365个币,如果年利率是1%,那每天你得到的利息就是0.001个币。

以太坊2.0计划采用基于保证金的经济激励共识协议,通常称为Casper。协议中的节点,作为“锁定保证金的验证人(bonded validators)”,必须先缴纳保证金才可以参与出块和共识。Casper共识协议通过对这些保证金的直接控制来约束验证人的行为。具体来说就是,如果一个验证人作出了任何Casper认为“无效”的事情,他的保证金将被罚没,出块和参与共识的权利也会被取消。保证金的引入解决了'nothing at stake',也就是经典POS协议中做坏事代价很低的问题。现在有了代价,而且被客观证明做错事的验证人将会付出这个代价。

2.3 加密技术

以太坊借助椭圆曲线加密算法算法(ECC),随机生成一个私钥然后通过椭圆曲线加密算法算法得到一个公钥,且无法反向然后再使用椭圆曲线签名算法(ECDSA)和私钥结合进行签名。

椭圆曲线密码体制(Elliptic Curve Cryptosystem,ECC)在同等密钥长度的情况下安全强度要远高于RSA体制等其他密码体制,因而ECC在网络信息安全领域有着非常重要的理论研究价值和广阔的实际应用前景。另一方面,在安全性相当的情况下,ECC所使用的密钥长度更短,这也就意味着对于带宽和存储空间的需求相对较小[8]。并且到目前为止,还没有出现针对椭圆曲线的亚指数时间算法。因此,ECC成为当下的主流公钥加密技术之一。

在ECC中,最常使用的便是secp256k1曲线。一般的椭圆曲线表示为:

  y^2=x^3+a*x^2+b 公式2-2

其中a,b为系数。当参数a=0,b=7时,得到函数:
y^2=x^3+7 公式2-3

这个方程产生的曲线就是secp256k1曲线。图示如下:

      图2-1 secp256k1曲线

椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟。ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准。它在1998年既已为ISO所接受,并且包含它的其他一些标准亦在ISO的考虑之中。与普通的离散对数问题(discrete logarithm problem  DLP)和大数分解问题(integer factorization problem  IFP)不同,椭圆曲线离散对数问题(elliptic curve discrete logarithm problem  ECDLP)没有亚指数时间的解决方法[9]。因此椭圆曲线密码的单位比特强度要高于其他公钥体制。

ECDSA的整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。

签名过程如下:

1、选择一条椭圆曲线Ep(a,b),和基点G;

2、选择私有密钥k(k<n,n为G的阶),利用基点G计算公开密钥K=kG;

3、产生一个随机整数r(r<n),计算点R=rG;

4、将原数据和点R的坐标值x,y作为参数,计算SHA1做为hash,即Hash=SHA1(原数据,x,y);

5、计算s≡r - Hash * k (mod n)

6、r和s做为签名值,如果r和s其中一个为0,重新从第3步开始执行

验证过程如下:

1、接受方在收到消息(m)和签名值(r,s)后,进行以下运算

2、计算:sG+H(m)P=(x1,y1), r1≡ x1 mod p。

3、验证等式:r1 ≡ r mod p。

4、如果等式成立,接受签名,否则签名无效。

2.4 P2P模型

P2P(peer-to-peer)网络又称为对等式网络,或者点对点网络。这是一种无中心的服务器、完全由用户群进行交换信息的互联网体系,P2P网络的每一个用户即是一个客户端,同时也具备服务器的功能。从技术方面来分析,区块链技术就是——P2P+共识机制+密码学。具体来说,区块链就是P2P的网络架构,通过密码学来保证数据的安全,通过共识算法来保证数据的一致性。对于其他架构来说,故障是不可避免的。但是对于区块链的分布式P2P网络来说,其基本不存在单点故障。就算节点频繁的进退也不会对整个系统产生影响。

图2-2 P2P模型

2.5 账户模型

与比特币不同,以太坊在实现余额的处理上,采用了不同的机制,比特币采用了UTXO未花费交易输出;而以太坊采用了维护账户状态机制。

UTXO英文全称为:Unspent Transaction Output,翻译为中文:未花费交易输出。在比特币中,每一笔UTXO都不可分割,必须在一次交易中,通过设置不同的输出将其拆分给不同的地址[10]。

图2-3 UYXO模型

而在以太坊中,其实账号模型是比较好理解的,因为以太坊的账户模型跟传统的账户模型是一致的。在以太坊中,账户地址有两种,分别是:

外部账户地址:普通用户拥有的公私钥配对的账户,也就是我们常用的存储自己代币的账户地址。

合约账户地址:合约账户地址指智能合约的账户地址。

在以太坊账户中,维护以下几个状态:

nonce:外部账户为交易次数,合约账户为创建的合约序号。

balance:此地址的以太币余额。

storageRoot:账户存储内容组成的默克尔树根的哈希值。

codeHash:账户EVM代码的hash值。合约账户即为合约代码的哈希值,外部账户为空字符串的哈希值。

  • 创新方向

3.1 零识证明

零识证明是一项由密码学实现的革命性技术。证明者能在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零识证明或将以太坊的发展推向新水平。

3.2 智能合约钱包

智能合约钱包是DeFi被广泛采用的必要条件。它是一种由合约代码而非私钥控制的钱包,能降低单点故障、拥有社交恢复功能、花费更少的Gas费,为整个行业创造更多新机遇。

3.3 信用委托

在信用委托贷款中,存款人可以委托他们的信贷额度给其他人。信用委托利用智能合约,通过编程来执行预定的功能,从而消除信任。这是DeFi协议在无需抵押品的情况下获取流动性的一种方式。

3.4 玩赚模式

“ETH+NFT”的应用很多是在游戏领域。当加密货币经济与游戏结合,所有玩家都倾向于能够发挥他们最大能力的游戏。这将会产生非常强大的网络效应。《魔兽世界》在巅峰时期拥有超过1200万用户,游戏中金币的价值几乎跟真钱一样。全球各地的用户开始“挖金子”,并将其发展成为一个价值超过9亿美元、雇佣了数百万玩家的产业。区块链与GameFi是相辅相成的,只有与去中心化网络、可编程的智能合约和创造者经济相结合,游戏才能展现其全部潜力。

四、典型应用

4.1 MetaMask

MetaMask是一款在谷歌浏览器Chrome上使用的插件类型的以太坊钱包,该钱包不需要下载,只需要在谷歌浏览器添加对应的扩展程序即可,非常轻量级,使用起来也非常方便[11]。它通过浏览器扩展(目前支持chrome扩展,后续计划支持更多浏览器),使你的浏览器成为一个以太坊的客户端(轻客户端),从而让浏览器可以直接运行以太坊的DApp。

4.2 Swarm

Swarm(群蜂,http://swarm-gateways.net/)是以太坊的一个功能扩展。严格说,它和Whisper类似,不能算是一个应用。Swarm使得以太坊支持分布式文件存储(类似于IPFS)。它是以太坊生态中的重要一环,它使得以太坊不但是个DApp的平台,还是个分布式文件存储平台,它将文件存放在以太坊客户端宿主机器的存储空间里,并且奖励给客户端相应的费用(以太币)。

4.3 BTCRelay

BTCRelay(http://btcrelay.org/)通过将比特币blockchain的头部不断写入其智能合约存储,以实现以太坊其它智能合约对比特币网络信息的获取,如:某个比特币交易是否已经进块某个比特币交易的深度。BTCRelay本身以智能合约的形式存在,因其内部存储了另一个blockchain(比特币的blockchain头部),因此也称为以太坊的一条侧链。

五、个人展望

自从2015年区块链技术(此处特指以太坊区块链)发布以来,它获得了世界各国的关注。由于整个加密货币经济圈代币价格的飞速增长也使得关注区块链技术的人们的数量显著增加。分布式应用程序(DApps)是以太坊区块链的主要卖点。作为一个开源的、图灵完备的世界计算机,以太坊可以被任何开发人员利用来构建他自己的一系列智能合约(即一个去中心化的应用程序)。分布式应用程序(DApps)的开发场景包括了方方面面,从预测市场到游戏,随着网络的不断改进,它将变得更加强大。同时各行各业也将受到以太坊的影响,通过以太访

这个平台,会有更多应用形成区块链+模式或者以太坊+模式,从而推动诸多领域的去中心化与更深层次的隐私加密。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值