- 博客(156)
- 收藏
- 关注
原创 超级账本 Fabric 交易提交过程剖析
Peer 启动后会在后台执行 gossip 服务,包括若干 goroutine,实现位于 gossip/state/state.go#NewGossipStateProvider(chainID string, services *ServicesMediator, ledger ledgerResources) GossipStateProvider 方法。其中一个协程专门负责处理收到的区块...
2018-08-10 10:08:41
3903
原创 胡思乱想大杂烩
从计算复杂性的角度,多项式意味着等价,指数意味着差异。从数的角度,多项式是等价类,指数则带来等级的差异。所以,很大概率上 P!=NP 。但是,为何指数如此特别?是否可从信息论角度进行分析?另外,从微分角度,对多项式来说意味着降维;指数则保持了不变性,是否与此有关? 金融活动类似水,沿着势下降的方向流动。该过程中水量不变,但会影响到路径上的环境。如果没有路径控制,水流会造成坏的结果。如果有需求,而......
2018-06-18 09:48:51
700
1
原创 超级账本 Fabric 新特性之细粒度隐私保护
超级账本 Fabric 项目自 1.1 版本开始,关于增强通道内隐私保护的新特性引发不少讨论,如 FAB-1151、 FAB-2961、 FAB-4976、FAB-8718。本文将总结该特性设计过程和来龙去脉,以供后续开发者更好地理解最初的设计意图和核心思想。隐私保护问题超级账本 Fabric 1.x 系列版本中在增强隐私性方面做了很大改进,1.0 版本中一个重要特性就是多通道(Multiple...
2018-05-18 16:57:48
4955
4
原创 欧盟《一般数据保护条例》(GDPR)你需要知道的
欧盟《一般数据保护条例》(General Data Protection Regulation,GDPR)将于 2018 年 5 月 25 日起正式施行,该法案虽然旨在加强对欧盟境内相关居民和个体信息和隐私数据的保护,但从整个信息产业来看,是一次历史性的突破。欧洲再次走到了世界的前列。从此,个人数据(在部分地区)的保护将有法可依。发展过程2012 年 1 月首次提出法案草案,先后经过 2014 年...
2018-04-29 09:24:49
12476
原创 超级账本( Linux 基金会旗下企业级区块链)暑期实习计划报名
超级账本(hyperledger.org)是面向企业应用的全球最大的分布式账本开源项目,由 Linux 基金会支持,创建于 2015 年底。目前已有200 多家 科技、金融行业领军企业加入成员,包括 IBM、Intel、摩根、甲骨文、万达、百度、腾讯等。大量基于超级账本技术的企业界区块链项目已经成功落地。现面向全球(首次向中国地区开放)开放 暑期实习职位申请,由 Linux 基金会赞助,与全球一线...
2018-03-15 13:34:06
2194
原创 账本科技演化录
本文已正式发表于《清华金融评论》2018年2月刊(http://www.21wq.com/aaa/Tsinghua/magazine/wxpay/contentPage.php?id=1708),内容略有调整。如果说金融科技(Financial Technology,Fintech)是保障社会文明的重要支柱,那么账本科技(Ledger Technology,或记账科技)则是最核心的支柱基石。无论是...
2018-03-04 11:14:29
2437
原创 关于网络学科的几点思考
如果从 ENIAC 诞生(1946 年 2 月)算起,人类进入信息社会已经过去了 70 余年。前三十年(1946 ~ 1976),计算机自身从电子管进化到晶体管再到集成电路,为后来计算机网络的出现奠定了物质基础。后三十年(1976 ~ 2006),计算机网络的出现,特别是 Internet 的出现,将多个主机联系起来,形成大规模的分布式集群,为整个信息时代构建了不可或缺的基础设施。
2018-01-07 11:20:25
734
原创 Hyperledger Fabric 排序服务核心原理和工作过程
Hyperledger 源码分析之 Fabric排序服务在超级账本 Fabric 网络中起到十分核心的作用。所有交易在发送给 Committer 进行验证接受之前,需要先经过排序服务进行全局排序。在目前架构中,排序服务的功能被抽取出来,作为单独的 fabric-orderer 模块来实现,代码主要在 fabric/orderer 目录下。下面以 Kafka 作为共识插件为例
2017-12-14 08:00:39
5831
原创 Hyperledger Fabric 排序节点启动过程
Orderer 节点启动通过 orderer 包下的 main() 方法实现,会进一步调用到 orderer/common/server 包中的 Main() 方法。核心代码如下所示。// Main is the entry point of orderer processfunc Main() { fullCmd := kingpin.MustParse(app.Parse(
2017-10-20 19:24:59
3434
原创 Hyperledger Fabric 排序节点处理 Deliver 请求的过程
Deliver,意味着客户端通过 gRPC 接口从 Ordering 服务获取数据(例如指定区块的数据)。Orderer 节点收到请求消息,会首先交给 orderer.common.server 包中 server 结构体的 Deliver(srv ab.AtomicBroadcast_DeliverServer) error 方法处理。该方法进一步调用 orderer.common.
2017-10-20 19:22:20
3754
原创 Hyperledger Fabric 排序节点处理 Broadcast 请求的实现
Broadcast,意味着客户端将请求消息(例如完成背书后的交易)通过 gRPC 接口发送给 Ordering 服务。这些请求消息,会交给 orderer.common.server 包中 server 结构体的 Broadcast(srv ab.AtomicBroadcast_BroadcastServer) error 方法处理。该方法主要会调用到 orderer.common.b
2017-10-20 18:12:20
2549
原创 Hyperledger Fabric 链码启动过程实现
注:本文最早发表于 2017-09-22.简介这里讲的 Chaincode 是用户链码(User Chaincode,UCC),对应用开发者来说十分重要,它提供了基于区块链分布式账本的状态处理逻辑,基于它可以开发出多种复杂的应用。Hyperledger Fabric 中,Chaincode 默认运行在 Docker 容器中。Peer 通过调用 Docker
2017-10-20 18:10:21
3391
原创 《区块链原理、设计与应用》荣获2018年度畅销图书奖!
《区块链原理、设计与应用》已经正式出版,详细介绍了区块链和分布式账本相关技术,以超级账本为例介绍企业分布式账本的设计原理、架构实现和应用技巧,欢迎大家阅读使用并反馈建议。获奖情况荣获2018年度机械工业出版社畅销图书奖,信息科技领域唯一原创获奖图书。编辑推荐本书由超级账本全球技术委员会委员、核心设计和开发者编撰,清华大学五道口金融学院常务副院长廖理教授作序,Apache 基金会...
2017-10-18 21:12:01
4632
原创 Hyperledger Fabric 核心术语
本文最早发布于2017年5月9日。Anchor(锚点):一般指作为刚启动时候的初始联络元素或与其它结构的沟通元素。如刚加入一个 channel 的节点,需要通过某个锚点节点来快速获取 channel 内的情况(如其它节点的存在信息)。Auditability(审计性):在一定权限和许可下,可以对链上的交易进行审计和检查。Block(区块):代表一
2017-10-18 21:06:27
1824
原创 go 依赖管理利器 -- govendor
长期以来,golang 对外部依赖都没有很好的管理方式,只能从 $GOPATH 下查找依赖。这就造成不同用户在安装同一个项目适合可能从外部获取到不同的依赖库版本,同时当无法联网时,无法编译依赖缺失的项目。自 1.5 版本开始引入 govendor 工具,该工具将项目依赖的外部包放到项目下的 vendor 目录下(对比 nodejs 的 node_modules 目录),并通过 vendor
2017-03-25 12:20:40
31364
原创 超级账本黑客松归来
长达 48 小时的首届 超级账本亚洲黑客松 上周末(3.11,3.12)刚在上海落下帷幕。来自世界各地的近四十支队伍齐聚黄浦江边,举行了一场创意碰撞与技术交流的盛宴。天公也格外作美,推迟了本该早来的降雨。经过连夜苦战,最终绝大多数队伍都顺利完成了自己的作品,得以向开源社区的专家、业界的大咖、投资界的导师们展示自己的创意和实现,得到了诸多的建议和帮助,相信无论是否获奖的团队,都会觉得
2017-03-14 20:41:32
1826
原创 Hyperledger Fabric 1.0 安装和使用
注意:代码路径已更新,可以直接参考 https://github.com/yeasy/docker-compose-files/tree/master/hyperledger_fabric/。Hyperledger Fabric 1.0 版本整体 重新设计了架构,预计将于今年 3 月份发布。目前已经进入了 alpha 阶段,可以进行功能性验证。本文将介绍如何快速启动一个 Fabric 1.0 的网...
2017-02-08 16:20:35
24319
1
原创 机器学习随笔一:问题与挑战
机器学习(Machine Learning)曾带有科幻的意味,来自于上个世纪五六十年代的科学家们对于人工智能计算的雄伟计划和梦想。那个时候,是信息技术革命的第一个黄金时期,计算机、宇航、控制论、生物、量子物理等重要科技都取得了前所未有的突破,不少人认为要解决这个世界的终极奥秘之一——意识,已经不再是白日做梦,至少,不少国家开始雄心勃勃的开始设计能替代人工的智能(神经网络 -> 推理模型 -
2016-12-19 17:11:49
1639
原创 如何向 Hyperledger Fabric 项目贡献代码
如何向 Hyperledger Fabric 项目贡献代码安装环境推荐在 Ubuntu 14.04+ 环境中开发代码,并安装如下工具。git:用来获取代码;golang 1.6+:安装成功后配置 $GOPATH 等环境变量。获取代码首先注册 Linux foundation ID,并登陆 https://gerrit.hyperledger.org/,添加个
2016-12-13 15:06:16
3774
原创 第二届全球区块链峰会随记
上周(9.19-9.24)在上海参加了第二届全球区块链峰会。整体感觉,整个产业已经上升到一个新的阶段了,开始有一些落地的项目,不再只是呼吁概念。天下大势,三分已成币圈和链圈渐行渐远,而目前区块链领域从技术实现上已经逐渐划分为三大阵营:以太坊、超级账本和其它。以太坊(Ethereum):开源阵营。由 VB 同学带领的以太坊团队牵头开发。草根出身,自然受到很多个人开发者的喜爱,相...
2016-09-26 17:18:19
2174
原创 ProtoBuf 与 gRPC 你需要知道的知识
ProtoBuf 是一套接口描述语言(IDL)和相关工具集(主要是 protoc,基于 C++ 实现),类似 Apache 的 Thrift)。用户写好 .proto 描述文件,之后使用 protoc 可以很容易编译成众多计算机语言(C++、Java、Python、C#、Golang 等)的接口代码。这些代码可以支持 gRPC,也可以不支持。gRPC 是 Google 开源的 RPC
2016-08-12 11:16:27
42502
原创 Docker 1.12 Swarm 模式剖析
Docker 1.12 在 2016 年 7 月 28 日正式 GA,除了大量的在使用上的改进和 bug 修复外,最引人瞩目的是原生支持了 Swarm 模式。熟悉 Docker 的读者都知道 Docker Swarm 是官方三剑客之一,提供了轻量级容器云的支持,以性能卓越出名,跟 K8s 面向应用的较为复杂的容器云方案一时瑜亮,各有千秋。本次 Swarm 模式特性的发布可谓重要变革
2016-08-02 23:00:07
2933
原创 Hyperledger fabric 源码分析之 peer 服务启动过程
peer 服务是主服务。该服务支持各种 peer 命令。包括查询状态,和启动、停止节点服务等。serve 函数最重要的是 func serve(args []string) error 函数。当执行 peer node start 命令时候被调用,启动一个节点服务。首先是进行配置管理,根据配置信息和一些计算来构建 cache 结构,探测节点信息等。
2016-08-02 17:25:15
10364
原创 区块链的七年之痒
关于区块链的探讨和争论从未停息。或许从计算技术的演变历史中能得到一些启发意义。上图是笔者在某次交流会中提出的。以云计算为代表的现代计算技术,发展历史上有若干重要的时间点和事件:1969 - ARPANet(Advanced Research Projects Agency Network):现代互联网的前身,被美国高级研究计划署(Advanced Resea
2016-06-25 12:20:18
1880
原创 区块链需要关注的应用场景
区块链最近几年炒得很热,国内已有大量与之相关的企业,有些企业已经结合已有业务摸索出了自己的应用场景,但仍有不少企业处于不断试探和反复迷惑状态。从技术角度讲,区块链涉及到的领域比较杂,包括分布式、存储、密码学、心理学、博弈论、网络协议等,要一下子完全理解确实不太容易。甚至有人简单将区块链技术归结到分布式数据库的范畴,误导了对其的深入理解。实际上,要找到合适的应用场景,还是要从
2016-06-02 11:17:50
4572
原创 数字货币到底解决了哪些问题?
货币是人类文明发展过程中的一大发明。很难想象没有了货币,现代社会的金融体系还能否持续运转。一般等价物都可以作为货币使用。然而平时最常见的货币形式还是纸币,它既方便携带、不易仿制、又相对容易辩伪。或许有人认为信用卡更方便。相对于信用卡这样的集中式支付体系来说,货币提供了更好的匿名性。而且碰到系统故障、断网、木有刷卡机器等情况,信用卡就不可用了。ps,货币 vs 信用卡并不是本文所关注
2016-05-12 16:37:34
8530
原创 Hyperledger -- Linux 基金会下的开源区块链
如果说以比特币为代表的货币区块链技术为 1.0,以以太坊为代表的合同区块链技术为 2.0,那么实现了完备的权限控制和安全保障的 Hyperledger 项目毫无疑问代表着 3.0 时代的到来。
2016-04-07 08:19:15
8555
原创 网关高可用协议:HSRP、VRRP、GLBP、CASP
网络中网关设备负责完成大部分的高级处理,因此网关设备的高可用十分重要。常见的高可用协议包括 HSRP、VRRP、GLBP、CASP。基本原理都是在一个组里面选出一个主节点,拿到虚的网关 IP 和 虚 MAC。这些协议也可以提供 IP 节点的高可用保护。HSRP全称是 Hot Standby Routing Protocol,Cisco 家 98 年公开的专利协议,在 RFC 228
2016-03-28 16:43:25
4965
原创 OpenStack 部署分布式应用的一个坑
之前基于 OpenStack 部署了一个云,运营下来一段时间下来还算正常,出现了各种问题也是意料之内,基本都很快搞定。搞云计算的人嘛,就得懂得多一些、深一些不是:)但有一天有个客户找上来反映了一个小问题,虽然最终解决掉,却引发了我的深思。问题客户的应用很简单,也是在我们的平台上申请了虚机,然后自己用 keepalived 为后面的某 db 业务提供 HA 保障。一切
2016-03-25 11:22:01
3328
原创 分布式系统中的算法设计(一) -- 一致性 Hash
Hash 大家都知道,把某个要存储的内容的索引 key 通过某个规则计算一下,算出来一个值,这个值往往范围比原来小,且概率意义上不会冲突。由于 Hash 计算复杂度往往比查找要快,被大量应用到各种大规模的系统中,特别是分布式系统。具体实践中有几个典型的问题。问题来源一致性 Hash 讨论地已经很多,基本故事就是分布式存储系统中,通过 Hash 来决定内容存到哪个节点上。
2016-02-25 11:05:02
2459
原创 Linux 中的网桥技术
这里集中讨论的是 Linux 上的网桥功能实现,软件实现主要包括 Linux Bridge,MacVLan/MacVTap 和 OpenvSwitch。硬件实现主要是 SR-IOV。基本上,越硬件实现功能越简单,性能越好。Linux Bridge最经典的网桥实现,基本上参考一个传统硬件交换机的功能来实现,自学习转发表,支持 STP。物理网卡可以绑定到 LB 上,通过混杂模式
2016-02-24 10:18:49
2888
原创 HTTP/2 你需要知道的知识
HTTP/2 是 HTTP 协议的第二个正式版本,于 2015 年 5 月 15 日正式发布,到现在短短半年时间里已经获得了大量的关注和实现支持。本文将介绍其核心的理念和相关知识要点。可以通过访问 Akamai HTTP/2 测试页 来体会性能提升效果。本地测试结果差一个数量级 。为何要有 HTTP/2主要目标是优化性能,次要目标是安全性和互操作性。其实也是因为现在越来越多
2016-01-22 21:42:42
1552
1
原创 集群负载均衡技术概述
集群负载均衡技术(Load Balancing)是目前互联网后端服务的关键技术,是互联网系统演化到现在这样巨大规模的基础。客观地说,负载均衡是一个门槛相当不低的领域,已有技术主要包括硬件方案和软件方案。简单说,硬件方案性能好,但是昂贵;软件方案性能差,但是成本相对可控。硬件方案代表为F5、Ctrix、A10、Redware 等 LB 厂商的产品,每年市场营收额高达百亿。开源
2015-12-27 18:58:21
2049
原创 容器与云 -- OpenStack 中的容器项目探索
注:本文是某次技术分享的内容草稿,内容可能跟最终发布版本略有调整。背景群里已经不少文章讨论使用容器技术的宝贵经验。今天我主要讨论 OpenStack 这样一个 IaaS 平台,聊聊它面对容器技术,特别是 Docker 所出现的一些新的项目和进展。可能有人觉得,现在容器云这么热,OpenStack 这样的传统 IaaS 平台是不是有点过时了?目前新
2015-11-30 11:46:24
1893
原创 OpenStack Summit 2015 Tokyo 有感
本次峰会是 10.27 ~ 10.30,四天在东京的品川站附近召开,6000 多人参会,几百个主会 speak 和各个项目的 design summit。因为要做一个有关容器和网络的 speak,所以,虽经波折,最终还是按时参加了峰会。业余玩社区确实挑战比较大。整体感受是,时间很紧,内容很多,身体压力很大。虽然只挑了最核心最热门的话题去听,也是从早到晚急匆匆地从一个会场赶到另一个(
2015-10-31 15:56:01
1148
原创 云时代的第二个十年 -- IT 行业的新变化
如果从概念的提出(2006 年由 IBM、Google 联合提出)算起,云计算即将步入第二个十年。在第一个十年里,云计算从被质疑到成为新一代 IT 标准,从单纯技术上的概念到影响到整个业务模式。虽然到目前为止,还有很多不成熟的地方值得探索,但云计算在第一个十年里已经正式确立了它的地位,已经被广泛接受并实践。在云时代的下一个十年里,IT 行业又会发生哪些变化呢?ops
2015-10-19 11:14:13
1257
原创 用 Docker 搭建 Spark 集群
简介Spark 是 Berkeley 开发的分布式计算的框架,相对于 Hadoop 来说,Spark 可以缓存中间结果到内存而提高某些需要迭代的计算场景的效率,目前收到广泛关注。熟悉 Hadoop 的同学也不必担心,Spark 很多设计理念和用法都跟 Hadoop 保持一致和相似,并且在使用上完全兼容 HDFS。但是 Spark 的安装并不容易,依赖包括 Java、Scala、HD
2015-09-22 15:38:26
14212
1
原创 用 mongodb + elasticsearch 实现中文检索
而 elasticsearch 可以很好的支持各种语言的全文检索,但我们暂时又不想切换到 elasticsearch 作为后端数据库。当然,可以在 web 应用中存储数据的时候,再主动写一份到 elasticsearch,但这无疑污染了原有的业务逻辑。在 IT 行业,只要有需求的地方,必然早已有了一堆好用或者不好用的开源轮子。幸运地是,现在已经有了一些转换方案,可以将 mo
2015-08-21 21:24:06
21168
原创 用 consul + consul-template + registrator + nginx 打造真正可动态扩展的服务架构
在互联网应用领域,服务的动态性需求十分常见,这就对服务的自动发现和可动态扩展提出了很高的要求。Docker 的出现,以及微服务架构的兴起,让众多开源项目开始关注在松耦合的架构前提下,如何基于 Docker 实现一套真正可动态扩展的服务架构。基本需求基本的需求包括:服务启动后要能自动被发现(vs 传统需要手动进行注册);负载要能动态在可用的服务实例上进行均衡(vs 传
2015-08-18 11:42:02
12570
原创 Consul 简介
概述Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。它具有很多优点。包括: 基于 raft 协议,比较简洁; 支持健康检查, 同时支持 HTTP 和 DNS 协议 支持跨数据中心的 WAN 集群 提供图形界面 跨平台,支持 Linux、Mac、Windows安装从 www.consul.io/downloa
2015-08-04 15:09:06
5111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人