fabric简介

1.设计目的

2.基本架构流程

3.基本组成介绍

4.接口

5.示例

设计目的范围

是一个企业级联盟链,主要考虑商业应用对安全、隐私、监管、审计、性能的需求,提高准入门槛,增加了安全、隐私、可监管审计等商业特性,是区块链技术在商业领域的应用探索。

基本框架流程

image

 

 

逻辑概念:客户端,会员服务,peer节点(背书节点,确认节点,非交易节点),共识节点

CA服务:

上图中最左边是证书服务系统,主要提供会员注册和证书颁发功能,Fabric系统的参与方都必须经过授权,比如Orderer、Peer、Client等都需要拥有受信任的证书。证书一方面用于系统接入,另一方面用于交易签名。所以统一的证书服务非常重要。会员证书又分为注册证书和交易证书,注册证书与会员信息关联在一起,用于标识会员的身份,在必要的时候,还可以支持监管和审计;交易证书用于交易签名,之所以交易要用不同的证书,是为了避免会员的个人信息和交易信息被泄露,比如交易内容或者多笔交易之间的关联关系等,另外交易证书可以申请多份,甚至可以为每一笔交易申请一份交易证书。

client:经过CA认证的业务应用客户端

PEER:

背书节点:使用chaincode预交易,并应用背书策略对交易签名背书。

确认节点:从共识节点接收到块后,对块数据进行校验,然后写入区块中,交易状态信息记录入状态数据库,交易可能失败,对块交易记录。(特别是同一资源的高并发处理,及其容易交易失败,虽然交易数据得到了共识,但是业务的强一致性还是会因为分布式后没法得到保障)

共识节点:对交易进行排序共识,完成后推送到相应的节点

共识网络:共识节点组成共识网络

多链:通过建立不同通道,将数据隔离,加入通道的节点与共识节点共同组成一个链,共识网络对不同通道生成不同的块。

基本组件及特点

组件化,可扩展,可拔插

CA服务:支持PKI系列的证书

共识网络:支持KAFKA,PBFT,SBFT

账本:区块文件 & 状态库 :leveldb,couchdb

链码(合约):可用go,java,nodejs编写,运行在docker容器中,合约就两个接口,init+invoke,用户合约不能创建新合约(由系统生命周期合约统一管理)。0.6版本不是跨链调用合约,现在1.0版本没试过。

底层通信:grpc+pb

接口

0.6版本可直接用restful进行接口调试

1.0 版本我们看流程,客户端需要两段式的递交信息,所以目前是不支持使用postman这种http.restful 进行接口调试,只能应用SDK或封装好的client中进行。

示例

部署示例:理论上支持全平台,但是还是直接在ubuntu上会比较轻松,需要golang,docker,docker-compase,

开发示例:之前都在windows+vagant 虚拟化开发环境,

安装测试示例:

物理架构节点:

1cli+4peers+1orderer

逻辑

2个组织,每个组织2个节点,加入一个通道

步骤

组网:

1.编写配置文件,使用cryptogen 生成相应证书。

2.建立通道,将节点加入通道

在网络上测试:

1.创建合约,并在特定链上实例化一个合约

2.可进行交易

测试需要在cli上操作:

创建合约:

peer chaincode install -n zwrcc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/zwr

实例化合约:

peer chaincode instantiate -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem -C mychannel -n zwrcc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args":["init","zwr", "1000", "mmm","2000"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"

查询:

peer chaincode query -C mychannel -n zwrcc -c '{"Args":["query","zwr"]}'

交易:

peer chaincode invoke -o orderer.example.com:7050  --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem  -C mychannel -n zwrcc -c '{"Args":["invoke","mmm","zwr","100"]}'

reading—《高绩效教练》

Coach,在足球场上,为什么很多非科班的人也能教导好一个球队,比如狂人穆里尼奥。

前文的例子不能证明说科班出身的教练不行,但是可以得到教练不一定需要非常在行,因为很多教练虽然科班出身,但是他们在球员时代也并非顶级的存在。

很多时候我们会碰到这样的问题,当有人来跟我们针对某事寻求帮助的时候,这时候你职责就是教练。但是日常经验告诉我们,不管我们对该事情给出何种建议评判,对方都很难满意,有时候他们还会跟你顶牛。

WHY?

因为当你给出具体建议的时候,解决这个事情的责任已经转移到我们头上了,但事实上,球场上去踢球进球的还是球员。所以很多时候,当别人来寻求我们帮助的时候,绝大部分其实他们内心深处是有答案的,所以当我们处在教练身份,我们只需要引导对方把这个深藏心底的答案引导出来,让对方自己承担起这个责任。那么如何做么?

HOW?

1.通过提问让对方自己明确目标

2.通过提问让对方认清现状

3.通过提问让对方分解操作步骤

最后,再通过提问让对方确保会执行这些步骤。

最重要的是, 保留自己的意见,因为那是狗屁。

不要评判,不要建议,不要介入。让对方自己承担起责任。因为要实现目标的是对方不是你。你要做的就是理清思路。不要告诉对方要做什么,不要命令,只需要激发对方就好了。因为这也是更加有尊严,更加能自我实现的一种方式。

所以当别人问你问题的时候,你的回答只需要是:

你觉得呢?

日出健身,logo设计过程

品牌名:日出健身

品牌关键词:运动、健身、跑步、力量、健康、好身材、自信、阳光、蜕变、独立

用户人群:20-35岁,男性与女性

品牌性格:完美、自信、阳光、美丽

Slogan:蜕变,从日出开始!

====================================================

草图构思

方向1: get+时间+太阳。贴近潮流一点,有一定的号召力

方向2:太阳+树叶。 比较靠近自然一点

方向3:地平线。也比较直白,有说服力,后期表现力会有很多空间和可能

方向4:首字母S 。可以是瘦身S曲线,可以是道路,同时也可以做出速度感等

bb5-1

bb1-1

bb2-1

 

选好两个主要方向,开始AI绘制

QQ图片20151113170000

QQ截图20151113165025

△这个S,根据手绘效果做出来,边角有硬朗的棱角,又有宽边圆润的导角,刚中带柔

 

QQ截图20151113164220

△这个S是改变过,圆润的S ,带着10度的倾斜,让他又充满速度感

两个相对,我更喜欢下面这个。

 

乱七八糟的IT

自从踏入IT这一行,就不断的听到高大尚的各类名词,GOF设计模式,AOP架构,RESTFUL架构风格,刚开始听起来那是云里雾里,听完后赶紧GOOGLE,然后嗤之以鼻:也就这样!然后也码了些年代码,跳了不少坑,填了不少洞,回过头来再回顾下,却是感慨万分:如果把这些高大尚的东西都被运用上去我还会跳坑里而不自知么,却也不住的感概,看似高大尚的名称解释起来却也是简单,但是简单的东西其实也是不断跳坑的产悟,被各种牛人不断的推崇,却还是没多少人真正遵从,这是为什么啊!

C/C++ IT周道推书

 

    别人的不知道是怎么样的,自己感觉读书流程可以是这样的,大学里面肯定都已经有一本谭浩强的C基础入门书籍了,看完了后可以看下 <<C++primer>>,primer 有点长,但是看完后基础印象应该都有了,然后就需要进行实践开发可以看下 《windows核心编程》, 对了解windows的东西还是不错的,然后还是可以看下 <<effective c++>>及《more effective c++》,这两本看完可以把自己以前写的代码翻出来,然后对照改改,你肯定会说以前写的东西是一坨屎!都吸收完后,你可以写出挺搞质量的代码了,然后再看下设计模式《GOF设计模式》,这样你的代码结构又会更上一层楼,看设计模式的过程中可以看下 读下stl 的源码,你会看到stl 的很多实现都应用了设计模式!

现代编程肯定都不是单机玩玩,所以还要看下网络编程相关的内容,入门的一本就是《计算机网络》,有了这个基础就可以看《TCP/IP详解卷一:协议》,很详细,循序渐进,老外的数据就是讲得细,透彻!然后就是各操作系统下的网络编程学习,现在我们都可以轻易应用开源组件写出10K,100K的服务端,但是我们需要从头去看下当时牛人们突破这些关口的时候的思路,linux 从select到 poll 到epoll,windows 下的 完成端口,然后再去看这些技术的各种实现的网络服务框架,ACE,如果这个都通读了,那就牛逼了,我是只看了一点就没看下去,反省中!

再往上就是架构方面的,比如插件化的东西,SOA等!

最重要的是动手去实践,最重要的是动手去写代码,最重要的是动手,重要的事情说三遍,这是我的一条线!在实践中你会不断发现问题,比如网络编程中之前我自己曾经忽视的ospf和bgp等!,同时你最后会发现基础的重要性,你会发现到原来以前的数据结构算法 这本书真该好好吃透他!千里之行始于租下,COME ON!

当然还有一条线是继续往下面更加基础的专研的,就是吃内核,不断挖各种实现,自己也不断的去造轮子,搞编译器,等等等!这是我敬佩的一种人,但是我自己目前还是往系统应用业务架构上搞了!