自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 fabric1.0中API与底层的交互

前段时间公司上个fabric项目,底层区块链网络部署好了,之后重点考察了Java版本和nodejs版本的API。java版本的目前功能不是很完善,官方建议使用nodejs版本的API,经过使用发现基本功能满足。创建通道,加入通道,交易等等。当查询当前区块HASH和前一区块HASH时,发现结果都是一样,目前不明确是调用的问题还是底层的问题。后续跟踪中,如解决即时更新。API与底层的交互目前主要是

2017-10-22 11:59:52 1755 1

转载 fabirc1.0商业正式版本源码解析13——peer的BCCSP服务

加密涉及到了内容挺复杂的,是一门专业性很强的学科。笔者没有专门学过,在此只是略讲一些bccsp服务所涉及到的皮毛:RSA - 一种非对称的加密算法,用于加密。有几种族簇,如RSA1024,RSA2048等。AES - 一种块加密算法,用于加密成块的大量数据。有几种族簇,如AES128,AES192等。ECDSA - 一种椭圆曲线签名,用于签名。有几种族簇,如ECDSAP256,ECDSAP

2017-09-03 11:07:09 1272

转载 fabirc1.0商业正式版本源码解析12——peer的MSP服务

MSP是Membership Service Provider的缩写,个人习惯直译为成员关系服务提供者。作用类似于,在一个运行的fabric系统网络中有众多的参与者,MSP就是为了管理这些参与者,辨识验证哪些人有资格,哪些人没资格,既维护某一个参与者的权限,也维护参与者之间的关系。关于MSP更专业的概念,请参阅Fabric文档。这里说句题外话,最近这几篇文章其实感觉听别扭的,因为有些模块是

2017-09-03 11:05:23 1242

转载 fabirc1.0商业正式版本源码解析11---peer的Admin和Endorser服务

继续start.Go的serve函数,peerServer对象在ChaincodeSupport服务之后,又注册了Admin,Endorser服务:pb.RegisterAdminServer(peerServer.Server(), core.NewAdminServer())serverEndorser := endorser.NewEndorserServer()pb.Registe

2017-09-03 11:03:21 978

转载 fabirc1.0商业正式版本源码解析1——线头

IBM于2017年7月推出商业正式版本1.0,改动比较大,核心共识由以前的pbft改为gossip,智能合约升级改为迭代版本号升级,优点明显,可以保留升级前的数据。与之前的0.6完全不同,同时提供了nodejs sdk和java sdk,目前NODEJS-SDK比较完善,笔者在使用过程中感觉这个SDK比较成熟,相反JAVA-SDK不太完善,从内部了解到,这个在完善中。之后笔者会从源码介绍fabric

2017-09-01 11:33:25 1347

转载 fabirc1.0商业正式版本源码解析10——文档翻译之Architecture

构架释义Fabric的构架提供了以下优势:Chaincode信任机制(trust)灵活性。Fabric的构架将对于chaincode的信任假设(trust assumptions)从对于ordering的信任假设中分离了出来。换句话说,ordering服务(the ordering service)可能由一个结点集合(orderers)提供并容忍其中的一些结点失败或犯错(即容错性)

2017-08-31 16:12:31 974 1

转载 fabirc1.0商业正式版本源码解析9——文档翻译之MSP

只看代码而不读文档,无论是对自己的理解,还是对文章的释明,都容易使之存在困惑之处。因此在此先写fabric官方文档中几个相关主题的译文,作为自己相关主题文章的预热。水平有限,尽量直译,生硬之处很多,错误之处估计也不少而不自知。译文中括号内若是中文,则为解释,若为英文,则是专用名词。个人觉得fabric的官方文档不好:文档用语不简。作为说明性文档,个人认为语言应该尽量简明短小,以

2017-08-31 16:11:57 877

转载 fabirc1.0商业正式版本源码解析8——peer的System Chaincode

综述关于System Chaincode,下文中以系统链码称之。这是个人翻译,依据是Chaincode本质是注册存储到链上的一段逻辑代码,因此个人习惯称Chaincode为链码,fabric文档中也变相的称为智能合约。但是,因为Chaincode是专用名词,个人觉得不翻译而直接使用是最好的。start.Go中的serve函数里,在为peerServer注册ChaincodeSupp

2017-08-31 16:10:57 677

转载 fabirc1.0商业正式版本源码解析7——peer的ChaincodeSupport服务

综述fabirc源码解析6中讲述了peer结点如何创建和注册grpc服务,接下来的几篇文章将对peer注册的各个服务进行详述。该篇讲述ChaincodeSupport服务,ChaincodeSupport服务为每个peer提供了chaincode操作的支持。registerChaincodeSupport(peerServer.Server())一句,位于/fabric/peer/node

2017-08-31 16:09:42 1119

转载 fabirc1.0商业正式版本源码解析6——GRPC服务

GRPC简介GRPC是由自谷歌开发的一项多语言开源的RPC技术,在fabric用于实现客户端与服务器端的远程调用。比如chaincode,客户定义了一项rpc服务并相应生成了客户端代码和服务端代码,在此基础上进行业务逻辑上的开发后,分别运行服务端代码和客户端代码,实现客户端调用服务器端服务的目的。由于gprc相对来说还是很复杂的,所有还请自行学习。在gprc官网非常详细的资料和例子。

2017-08-31 16:08:19 887

转载 fabirc1.0商业正式版本源码解析5——kvledger初始化

前两篇文章借由/fabric/peer/main.Go这个线头,简单分析了fabric的配置和日志系统。虽然还有一部分可说的内容,如common.InitCrypto()调用,但现在暂且按下main.go不表,而把目光投到/fabric/peer/node/start.go中的serve()函数。具体原因参见peer命令结构一文的最后。账本简单介绍ledger,中文就是账本,账册的

2017-08-31 16:07:26 1109

转载 fabirc1.0商业正式版本源码解析4——配置系统

fabric的配置系统是程序原始数据的来源之一,虽然简单却很重要。在阅读源码过程中对于具象化程序也很有帮助。在分析peer的具体交易工作之前,我们可以先分析一下fabric的配置系统。我们还将我们的目光聚焦在/fabric/peer/main.Go的main函数中,除了一系列mainCmd的命令操作,还有viper进行的一系列配置操作,并通过err := common.InitConfig(c

2017-08-31 16:06:20 879

转载 fabirc1.0商业正式版本源码解析3——日志系统

这里所说的日志,是指程序运行过程中打印到终端或日志文件,记录程序运行过程的日志,而非涉及到fabric记录交易数据,账本数据一类的交易日志。其实日志系统机制对于源码研究可以忽略,且相对简单,但是一方面日志系统对于程序运行和调试必不可少,fabric如何形成这个日志系统可以学习学习,日志所打印的内容对阅读源码也是一种提示;另一方面不弄清楚这个日志,在阅读源码的过程中这些到处出现的打印日志总像围绕在源

2017-08-31 16:04:35 808

转载 fabirc1.0商业正式版本源码解析2——peer命令结构

peer目录结构peer目录结构自身十分清晰,一个main.Go文件,其余文件夹除common,gossip外均为子命令集合,有chaincode,channel,clilogging,node,version五个,各司其职,供main.go整合使用。子命令文件夹中,与文件夹名称相同的.go文件为主要源码文件,其余的均为按功能划分的动作命令源码。以node目录为例,node自身作为根命令的

2017-08-31 16:02:17 782

原创 SPV中如何利用默克尔树证明某个交易是否存在

SPV是“Simplified Payment Verification”(简单支付验证)的缩写。中本聪论文简要地提及了这一概念,指出:不运行完全节点也可验证支付,用户只需要保存所有的block header就可以了。用户虽然不能自己验证交易,但如果能够从区块链的某处找到相符的交易,他就可以知道网络已经认可了这笔交易,而且得到了网络的多少个确认。按照中本聪的原文,这里有个细节需要注

2017-03-16 15:36:59 9323 6

转载 Merkle Tree(默克尔树)算法解析

Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。[1]1、HashHash是一个把任意长度的数据映射成固定长度数据的函数[2]。例如,对于数据完整性校验,最简单的方法是对整个数据做Ha

2017-03-16 14:31:42 3194

转载 如何分叉以太坊并变成私链?

第一部分:重命名(本文示例私链为: neochain)1-下载以太坊源码: download ethereum: https://github.com/ethereum/Go-ethereum/tree/release/1.3.32- 重命名代码:rename folder to go-neochain3- 重命名相关文件和文件夹 rename files and fold

2017-03-16 14:22:13 1969 1

转载 区块链学堂(第二课):以太坊基本概念+Geth 安装

在我研究以太坊技术的过程中,由于相关资料较少,因此走了较多的弯路。所以这里我们不会先介绍Solidity的语法结构,而会在接下来的第一阶段,从实战出发,陆续向大家介绍Geth、Browser-solidity、Mist这三大工具,并在过程中不断讲解以太坊的基本概念。通过这些工具的实际使用,以及对以太坊的基本概念不断加深理解,对于第二阶段学习solidity语言才能事半功倍(毕竟语言学习是很

2017-03-16 14:12:41 8316

转载 硬分叉与软分叉

第0章 引言比特币是一套软件,对软件代码进行修改升级就经常会涉及到两个概念,一个叫硬分叉,一个叫软分叉。这到底是什么意思呢?社区里最常见的定义说是对共识的修改。但“共识”具体指的是什么,很难理解。我们还是多实际的修改代码层面来看下它们的定义吧。第1章 比特币的交易格式和交易历史记录在理解什么是硬分叉和软分叉之前,我们先要知道这两者要修改的东西是什么。比特币交易在汉语

2017-03-10 15:58:23 2063 2

原创 区块链开源项目Ripple四、共识(1)

共识的概念最先由ripple提出,解决的数学问题模型是拜占庭将军问题,这一节先介绍目前存在的共识机制及其优缺点。1、Pow工作量证明,就是大家熟悉的挖矿,通过与或运算,计算出一个满足规则的随机数,即获得本次记账权,发出本轮需要记录的数据,全网其它节点验证后一起存储;优点:完全去中心化,节点自由进出;缺点:目前bitcoin已经吸引全球大部分的算力,其它再用Pow共识机制的区块链应用很难获得

2016-11-28 16:08:56 5899 2

转载 hyperledger fabric PBFT算法简要解析

hyperledger的PBFT算法基于拜占庭将军问题,解决方法不同于ripple,但有着相同的理论基础,先理解一个公式:3f+1 f为容许出错的节点1,N为总节点数。废话不多说,转载网上一篇文章,对照代码(比较适合笔者)fabric的 hyperledger共识算法代码全部都在consensus文件夹里,consensus文件夹里主要分为controller,exec

2016-11-28 15:47:25 3820

原创 区块链开源项目Ripple三、交易的完整生命周期

修改区块链的唯一方法是提交交易,待交易通过共识后即可写入区块链,同时修改区块,下面对整个交易的生命周期做详细说明。rippled底层提供了交易提交的唯一API:submit 后面跟交易的已签名BLOB,签名可以掉调用rippled的RPC命令Sign,也可直接用submit 后面跟私钥,不过这种方式一般只在笔者做内部测试用,正式给客户使用时绝不可把私钥提交到服务器上,这样违背了“去中心化”

2016-11-22 14:07:38 3429

原创 区块链开源项目Ripple二、相关概念介绍及思考

一、普通节点与验证节点二、UNL与validation_quorum三、公钥和私钥四、双花五、分叉六、共识

2016-11-21 19:09:13 4371

原创 区块链开源项目Ripple一、简单介绍与环境搭建,部署

一、介绍:Ripple作为比特币的2.0版,改进的方面有:1、无需挖矿 2、共识的改进,区分了普通节点和验证节点(网络上的节点分为两种:普通节点和验证节点普通节点只能转发交易,信任验证节点,参与投票。验证节点可转发交易,信任其它的验证节点,决定投票)。作为入门,官网的资料很是全面,从Ripple小白开始,一步步说共识,数据结构等等。但是考虑到很多人看英文文档一头雾水,且文档没有对照代码

2016-11-21 18:45:45 16476

原创 32位和64位ORACLE下操作GOLDENGATE过程记录

最近接了一个数据库同步的项目,其实开始考虑的是别的免费同步工具,不过我们老大说免费的太钓丝,不如收费的高大上,客户有钱,不需要为对方节省,况且免费的有各种限制,功能不够全面。言归正传,我选择了ORACLE的GoldenGate 产品,网上有一大堆操作说明文档,都是百度搜出来的,按照那个严格操作,基本上总会出现各种各样的错误,唉,还是怀恋以前的google,搜出的老外的文章,一般不会出错。经过几天的

2015-07-17 11:27:47 1053

转载 Sql优化

(转)SQL 优化原则一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到

2015-07-17 10:40:51 283

空空如也

空空如也

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

TA关注的人

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