自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cactusblossom

区块链博客

  • 博客(20)
  • 收藏
  • 关注

原创 Fabric v1.x Orderer中的许可

Fabric是一个许可链,每一个模块都有permission的存在。除了背书策略(Endorsement Policy)还包括其他ACL管控,比如谁可以动态地增加一个组织,谁可以修改channel配置属性。Orderer中的许可的实现原理:ImplicitMeta Policy验证过程中并不起决定性作用,用于集合其他Policy,如下图所示叶子节点都是Signature Policy。Impl...

2020-02-22 21:06:49 256

原创 Fabric v1.x Orderer的共识算法

Fabric Orderer的共识算法是可插拔的,包括Solo、Kafka、Raft,其中Raft算法是在Fabric v1.4版本中新增的,未来还将加入BFT算法。本文会对已实现的3个共识算法进行剖析。一、SoloSolo算法中只有一个orderer节点,用于开发阶段的实验。一个Orderer节点不存在共识的问题,该节点接收所有来自客户端的交易,然后将其排序并产生区块,如下图所示:二、K...

2020-02-22 20:24:31 1486

原创 Fabric v1.x 通道(Channel)机制运行原理

一、channel实现原理1.1 System Channelchannel是Orderer的一个模块,Fabric的启动会创建一个内建的system channel,是系统的一个默认链,用于管理其他的user channel。orderer启动的时候必须要有该channel的genesis block,genesis block里规定了所有关于system channel的配置,因此所有的...

2020-02-22 10:45:12 2729 10

原创 Fabric v1.x Orderer全排序与区块切割规则

一、执行-排序-验证(Execute-Order-Validate)Fabric采用的是先执行、后排序、最后验证的共识模型(Execute-Order-Validate),如下图所示:首先由client提出交易,发给peer仿真执行,产生读写集并签名后返回给client,client会把签名的读写集(proposal response)打包发送给orderer,orderer会将所有从cli...

2020-02-21 19:48:23 817

原创 Fabric v1.x 私有数据(PrivateData)模型分析

一、私有数据是什么对于一些组织来说,总会有一些机密数据,比如产品价格、用户电话、用户地址等信息,这些数据可能希望只被某几个组织知道,或者仅仅自己知道。可以将这些机密数据存储到私有数据库中,然后通过私有数据收集策略来定义有哪些peer有权获得这些私有数据,这些授权peer同样是将这些数据存储到私有数据库里,对于ordering来说,也只能看到私有数据的哈希。另外私有数据同样是通过Gossip协议...

2020-02-21 13:23:34 528 2

原创 Fabric v1.x Gossip协议的一些细节和传播原理

一、Gossip协议的功能Fabric中需要在3个不同类型的节点间进行交易流 转,需要非常安全的、可靠的以及可扩展的传输协议,以确保数据的完整性和一致性,因此Fabric实现了Gossip数据传输协议。Gossip利用一种随机的方式将信息散播在整个网络中,与它名字的含义一样,类似于绯闻流言的传播。Gossip协议的具体功能如下:维护和管理channel成员,发现新的peer节点,不断探测p...

2020-02-20 17:36:02 452

原创 Fabric v1.x 智能合约的生命周期

一、智能合约是什么智能合约是Fabric区块链网络的心脏,在可执行代码中定义不同组织之间的规则。智能合约打包成chaincode,部署chaincode后即可通过chaincode生成交易记录到账本上。二、智能合约与账本的交互开发者需要开发的模块包括Application和SmartContract,Application可以通过ledger的API直接访问区块链,也可以通过智能合约访问区块...

2020-02-19 21:26:15 1066 4

原创 Fabric v1.x 账本与状态数据库

一、Fabric账本Fabric账本是有序的、不可篡改的状态转换记录,包括区块链(Blockchain)和世界状态(World stat)两部分。区块链中保存着不可变的顺序记录,包含配置记录,例如channel的配置;还包含全部交易记录;世界状态中维护账本的当前状态,方便Appication快速查询二、区块链区块链是一个历史交易记录,记录着所有数据对象是如何到达当前状态的。下图中有...

2020-02-19 18:01:01 1718 8

原创 Fabric v1.x 背书策略

一、背书策略是什么Committing Peers在验证交易的时候,通过背书策略来验证一个交易是否有效,背书策略里面定义了一些要求,只有根据背书策略进行背书的交易才被认为是有效的。每个智能合约在部署的时候,都会指定背书策略。Fabric定义了ESCC和VSCC两个system chaincode来为交易进行背书和验证:ESCC (Endorsement System ChainCode)在...

2020-02-19 16:58:16 1093 1

原创 Fabric应用开发流程

1. 开发范围1.1 开发chaincode与application首先需要建立一个Fabric网络,在此之上开发chaincode,然后需要在SDK基础上开发业务应用,与Fabric网络进行通讯,应用还需要通过Fabric CA签发证书。如下图所示:1.2 chaincode接口编写chaincode所需的接口在core/chaincode/shim/interfaces.go文件中,...

2020-02-19 13:52:12 1286

原创 Fabric v1.x Peer节点与交易流程分析

1. Fabric节点类型Fabric网络中包括Peer节点和排序节点(Ordering Node),Peer节点分为记账节点(Committing Peer)和背书节点(Endorsing Peer),这三种节点发挥的作用如下:Committing Peer:负责维护账本和世界状态以及将交易提交到账本并更新世界状态,可能部署有链码;Endorsing Peer:负责接收申请背书的交易...

2020-02-18 15:30:57 1468

翻译 Hyperledger Fabric v2.0发行版的新增功能介绍

Fabric v2.0是v1.0以来的第一个Hyperledger Fabric主要发行版,Fabric v2.0为用户和操作员带来了一些重要的新特性和改变,包括对新应用和隐私模式的支持、围绕智能合约加强的治理、以及为操作节点提供的新选项。保持不变的是,您可以根据自己的条件升级网络组件,支持从v1.4进行滚动升级,并且仅在成员组织准备就绪时才启用新功能。接下来让我们看一下Fabric v2.0...

2020-02-16 19:33:52 1274

原创 区块链引发的一些思考

区块链不是解决一切问题的法宝,不能被滥用;例如有人提出利用区块链的不可篡改特性,实现防伪、溯源,但是无法保证记录到区块链之前的源头的数据正确性,区块链无法检测出来;中心化与去中心化并不是黑白分明的,一个成功的商业模式可以都有;例如有人提出利用区块链的共识机制,实现互不信任的实体间建立共识,但这本身可能是个伪命题,因为互不信任的实体间是无法交易的,比如交易后发现商品质量有问题如何解决;所以可...

2020-02-14 11:36:22 657

原创 以太坊带来的一些反思

一、智能合约的反思智能合约真的智能吗?(Is smart contract really smart?)智能合约并不智能,更接近自动合约。(Smart contract is anything but smart.)二、不可篡改性的反思Irrevocability is a double edged sword.很多区块链的应用都利用了不可篡改的特性,比如防伪、溯源。但是从“The DA...

2020-02-13 17:30:11 587

原创 以太坊社区的分裂——The DAO项目分析

DAO:Decentralized Autonomous OrganizationThe DAO:众筹投资基金,创建了一个智能合约,运行在以太坊区上。将以太币转账给该智能合约,然后换回代币,通过代币作为权重投票决定投资哪个项目。2015年5月发起众筹,1个月内就筹到了1.5亿的以太币,但是3个月后该项目被迫宣告结束。split DAO - child DAO回款时没有先清0,导致重入攻...

2020-02-13 15:15:42 1409

原创 以太坊智能合约示例与漏洞分析——竞拍合约

一、拍卖合约智能合约定义成员变量、event等,构造函数初始化受益人、拍卖结束时间,如下所示:出价的函数如下,标注payable说明接收转账,require(now <= auctionEnd)检查拍卖是否结束,如果已经结束就抛出异常,然后检查出价是否大于最高出价,然后将出价人记录到bidders数组(因为bids哈希表不支持遍历),然后记录新的最高出价人,记录日志,如下所示:结束...

2020-02-12 15:35:38 809

原创 以太坊智能合约的原理和使用方法

一、智能合约概述1. 智能合约是什么智能合约本质上是运行在区块链上的一段代码,代码的逻辑定义了合约的内容。智能合约账户保存了合约当前的运行状态,包括当前余额(balance)、交易次数(nonce)、合约代码(code)、存储(storage 数据结构是MPT)。2. solidity语言智能合约的最常用的语言是Solidity,语法上与JavaScript很接近。如下图所示:“pr...

2020-02-11 22:01:37 7952 1

原创 以太坊的GHOST协议

以太坊1.0将出块时间降低到15s左右,发布的区块在网络上传播时间本身就需要10几秒,其他节点没有充足时间来接收区块,会使得分叉变成常态,且分叉数量会很多,大量孤块(orphan block)得不到收益。

2020-02-09 15:50:08 612

原创 以太坊的数据结构(状态树、交易树、收据树)及代码分析

以太坊是基于账户的账本,因此需要进行账户地址和账户状态的映射,如下所示:我们尝试寻找一种合适的数据结构来完成这个需求:如果以哈希表的形式保存状态数据,可以非常有效率地查找、更新账户状态数据,但是由于状态数据只保存在区块体中,轻节点难以进行Merkle Proof,因此考虑构建Merkle tree;如果将账户数据简单组织成Merkle tree,不进行排序,就需要发布所有账户到区块中,保证根哈希一致,但是数量级太大,不可行;如果只发布状态变化的账户,就会导致所有节点的根哈希不一致,无法共识;如果

2020-02-08 16:16:28 7018

原创 以太坊1.0概述

以太坊(Ethereum)以太坊对比特币进行改进,将出块时间降低到15s,提高了吞吐量。挖矿谜题(mining puzzle)具有memory-hard特性,无法使用ASIC矿机来挖矿。另外以太坊将逐步切换到PoS(Proof of Stake)共识协议,不需要通过算力来投票,而是通过权益比例来投票。比特币是去中心化货币(decentralized currency),在跨国转账方面非常具...

2020-02-07 14:01:22 1369

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除