比特币、以太坊的区块链架构比较及浅析(上)

前言:如何针对一个系统快速建立架构层面的理解,在《区块链技术指南》一书中关于“架构”的定义有很好的阐述,即“架构有两个层面的涵义。一个是静态层面的,主要是勾画系统边界、结构、组成的组件以及系统之间的关联关系;另一方面是动态层面,主要是规范组件的行为以及组件之间的交互协议”。本文试图从这两个方面比对及分析比特币和以太坊架构之间差异性、以太坊相对比特币演进及优势所在。

一、比特币区块链架构及要素

下图所示即为比特币的区块链架构构成,分为前端和节点后台两个部分:

这其中有几个关键要素:

1、钱包

钱包直接面向比特币的用户,用来保存用户的私钥数据库,同时管理用户余额和提供基本的支付、转账交易功能。从部署场景上还可以进一步划分:互联网钱包、移动钱包、桌面钱包、和纸钱包,这四种钱包依次具有易用性递减和安全等级不断递增的特点。

因为需要支持比特币交易,所以钱包具有一个基本的属性:需要验证用户相关的支付交易,根据易用性可以采用SPV方式(即简单支付验证,本文中不展开说明)、第三方平台或可信任的服务器端验证。

在技术上,钱包可以看做是对比特币API、节点后台一些功能调用以及交易流程处理封装的应用实现。

2.HTTP/JSON RPC API

这是比特币提供共的外部接口,通过该接口可以控制比特币节点,而提供对应功能的是节点后台的HTTP/JSON RPC服务器。该接口对于使用不同语言开发访问比特币节点功能的应用提供了便利。

3.区块链管理、交易验证、邻接节点管理及共识

这几个要素之间有很强的关联性。首先,新的比特币节点初始启动时需要发现邻接节点,并与至少一个节点建立连接。连接建立后,如果是初始的比特币全节点要启动区块链管理下载并验证整条区块链,节点可以并行从多个邻接节点同时下载不同区间的区块链。在比特币网络中,当持续每10分钟有新的区块产生时,节点会去验证及接收新的区块,并延伸该节点所拥有的区块链,而这一过程中涉及到了共识。共识管理在广义上则包括:挖矿、区块验证和交易验证规则,挖矿的概念较容易理解:不断对区块报头进行哈希处理,每次尝试改变一个随机数,直到符合一定的条件才产生一个合格区块。这里需要重点理解的是区块验证和交易验证。

(1)区块验证

区块验证的基本流程如下图所示

除了上述的基本验证以外,还有一个重要的的概念是重组区块链,这种情况通常发生在一个节点发现网络中存在一条不属于当前区块链的更长的区块链时,需要断开现有的区块并对区块链进行重组,该部分后面结合内存池管理及回滚讲解。

(2)交易验证

交易验证的条件检查很复杂,详细可参见《区块链技术指南》一书中P68页2.区块验证中所列举的条件明细,这其中有一条是比特币设计的精髓:需要依靠脚本来验证交易的合法性,即每一个将要花掉的比特币必须有相应的来源。在实现上,交易的输入和输出都有脚本和数值组成,并通过比特币的脚本引擎在一个简单的堆栈式计算平台上执行。但也正是因为堆栈式的脚本语言限制了比特币的扩展性,而以太坊在此基础之上引入了“图灵完备”,极大扩展了功能应用(这一点的比对会在后续的部分讲到)。

这里存在两个脚本:解锁脚本和锁定脚本

用于解锁UTXO(用私钥去匹配锁定脚本)的脚本称为解锁脚本(Signature script),这也叫交易输入;

交易输出则是指向一个锁定脚本(PubKey script),这个脚本表达了:谁的签名能匹配这个输出地址,钱就支付给谁。

如最常见类型的比特币交易脚本(支付到公钥哈希:P2PKH(Pay-to-Public-Key-Hash))组合:

基本交易验证流程如下所示:

1)解锁脚本运行过程,即入栈操作

2)锁定脚本运行过程,即出栈操作

4.内存池管理、重组区块及数据库

在比特币网络中,一个验证过的交易在被放置到一个挖到的区块之前,首先是放置在节点内存中的一个交易池中,并且需要按照一定的优先级次序从交易池中进行选取。优先级可按照1)交易中的输入对应的UTXO的“链龄”

链龄是指在链上记录该交易的区块为起点计算后续加入的区块的深度计量

2)交易额的大小来划分

而链龄越大或者交易额越大的交易则优先级较高。

优先级计算采用以下方式

priority=Sum(value of input*input age)/transaction size

另外,一些比特币节还会维持一个“孤儿”交易池,即如果一个交易的输入相对应的UTXO暂时不能在链上被找到(有可能是因为延迟而未被更新导致),即缺失“父”交易,这些交易会被暂时放置到“孤儿”交易池中,等到“父”交易到来后再重新移到内存池中,可参见上面区块验证的流程处理。

上述处理涉及区块链重组及数据库访问,这里简单举例说明:

存在A、B区块,部分节点先接收到A区块并在此基础延伸链;部分节点先接收到B区块,之后的链条发生分叉,如果B区块的链条变长,对于有A区块的网络节点会断开A区块,进而连接B区块重组区块链。其中断开区块、重组区块涉及UTXO更新,被断开的区块中交易回退到交易内存池,同时“回滚”记录用来回滚断开区块中的交易。

除了区块基础数据存储以外,比特币还引入了数据库便于交易操作及校验,对应数据存储及各功能访问之间的关系如下:

5.比特币节点与P2P网络管理

比特币的节点按照功能划分可分为三种

(1)全功能节点,即带有钱包、RPC服务端、挖矿以及节点校验区块和交易、邻节点间消息传递功能的节点。

(2)基础全节点,这种节点相对全功能节点进行简化,仅做区块和交易的交易和消息中转。

(3)SPV节点,该节点主要负责对可信任的节点的区块和交易做校验。该节点有两个特殊属性:

1)在于邻接节点的连接中设置过滤器,被称之为Bloom过滤器,并只接收包含在钱包里的公钥地址的交易。

这里引出了两个问题:

符合什么规则的节点可以作为spv节点,譬如可被信任或授权的?

所包含钱包里的公钥地址由哪里获取?

2)执行两个验证

基本过程如下所示


比特币的节点及网络构成具有“去中心化”特点,即节点之间的发现即连接完全自主化,这主要基于P2P网络管理具有的基本功能实现

(1)发现邻接节点

(2)连接并管理与邻接节点的socket连接

(3)节点间交换不同P2P消息

(4)禁止异常行为的邻接节点连接,防止Dos攻击

而这些功能需要基于一个基础点:一个新的节点出现后是如何发现一个邻接节点并与之连接?

这里有两种方法:

1)使用“DNS种子”查询DNS,DNS种子即提供比特币节点地址的DNS服务器

2)直接将一个已知邻节点作为种子节点,通过他发现更多的邻节点,因为邻节点之间会相互转发新节点的地址,并将已知地址发送给新节点。

一个新的比特币节点的缺省配置是主动连接8个邻节点,同时允许最多125个邻节点发起连接请求;另一方面,节点会去自动维护与已连接节点之间的连接确保整个网络运行的有效性。因此,比特币的网络节点可以自由加入或离开,真正做到了动态调节和自维护。

6.规则管理

比特币节点必须遵循一定的规则来保证其行为同其它节点的一致性,这包括:

(1)共识规则

即所有节点都必须遵守的规则

(2)个性化规则

即共识以外的规则,典型例子如一个节点可以拒绝保存、中转大于200KB对的交易。这里有一个原则:个性化规则基于共识规则,之间不能产生冲突。


附参考文章:

比特币脚本及交易分析 - 智能合约雏形

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容