主页 > imtoken国内下载 > 联盟链Fabric与公链比特币的区别

联盟链Fabric与公链比特币的区别

imtoken国内下载 2023-02-14 06:27:35

联盟链Fabric与公链比特币的区别

最近在研究联盟链的代表开源项目Hyperledger,准备再做一个Fabric源码分析系列。 本文首先总结了Fabric和比特币的一些关键区别,或者也可以称之为改进和创新。 阅读本文前建议读者先了解比特币源码或对比特币原理有初步了解,可阅读作者的比特币源码分析系列(未完结)。

区别一:引入了msp管理机制

比特币中的交易是发送方用私钥对交易进行签名,将交易内容连同公钥一起广播出去。 接收方收到交易后,使用公钥对交易签名进行验证,完成对交易的认证。 具体过程如下:

比特币是什么模式_莱特币是比特币?_比特币交易是什么模式

每个参与的个体都会生成一个公私钥对,任何人都可以生成,每个公私钥对都被整个比特币网络所接受,因此是一个开放的系统。 联盟链对此进行了限制,即msp(Membership Service Providers)其实简单理解就是有一个公钥池。 所有出现在联盟链网络中的公钥都必须在公钥池中,以确保参与网络的成员是可信的。

区别二:图灵完备的编程语言支持

比特币是什么模式_莱特币是比特币?_比特币交易是什么模式

比特币系统支持一套比较简单的指令集,只提供一些基本的验证指令,不是图灵完备的。 但在以太坊发明之后,区块链进入了2.0时代,最具标志性的改进就是引入了图灵完备的编程语言。 联盟链继续沿用这一改进的技术方案。 其中对Fabric比较好的支持是go语言的脚本支持(Fabric本身就是用go语言开发的)。 对于具体的实现,本文简单给出了一个架构图,后续文章会详细介绍。 图中的链码是在区块链系统下用go语言协议脚本开发的,也称为智能合约。

如上图所示,用户开发的chaincode(智能合约)会在docker虚拟机中执行。 chaincode的api调用会调用api代理客户端然后通过网络进行通信,调用系统chaincode,最终影响到数据库。 中间。

比特币交易是什么模式_莱特币是比特币?_比特币是什么模式

区别三:引入状态数据库

在比特币系统中,只有一个区块数据库,数据库存储区块比特币是什么模式,实际上是一个区块链结构,通过utxo机制保证账户的资金状态信息,实际上类似于复式记账bookkeeping 一种规律的机制比特币是什么模式,数据库不记录你当前账户的余额,只记录每一笔交易,从哪里来的,如果一个账户要花钱,只能找到输出到这个的交易帐户。 然后生成一个交易输出给别人。 有点绕,具体可以参考作者比特币源码系列中关于交易的讲解。

比特币是什么模式_比特币交易是什么模式_莱特币是比特币?

而Fabric维护了一个状态数据库,它记录了每个账户的余额(或者key-value状态更准确),虽然这样的数据库也可以通过utxo系统中的一笔交易来构建(实际上是比特币做的一样,只是数据库只在内存中),但是Fabric隔离了这个数据库,至少对于chaincode的编写是非常方便的。

区别四:引入了channel的概念

比特币交易是什么模式_莱特币是比特币?_比特币是什么模式

在比特币中,只有一条区块链是大家共享的,而Fabric引入了一个概念叫做通道,每个通道都有自己独特的区块链,并且每个通道之间互不干扰,相当于比特币是一个系统,支持单进程,而Fabric支持多进程。

区别五:去掉pow共识,改用order模式

比特币因浪费算力而受到一些人的批评。 比特币系统的维护是通过挖矿来实现的,而挖矿其实就是不断地改变一个字段的值,让整个区块的哈希值的前n位都为0。这样做的目的是让区块的生成需要一个大量工作并确保其串行修改很困难。 例如,如果黑客想要序列化 ​​10 个区块的内容,他必须先于网络中的其他节点构建 10 个哈希前 n 位为 0 的区块。 这个工作量巨大,而且在一定时间内很难实现。

Fabric改变了挖矿方式,使用排序方式,简单来说就是构造一个hash的前n位为0的区块,改成构造排序节点签名的区块。 谁先得到命令的签名,谁就挖矿。 (不过这里挖矿其实是集成在订单服务器里面的,只有订单才有挖矿的权利,收集交易,排序,形成区块,签名,广播)