专业开发15年,丰富的开发经验!贴心的私人订制服务,为您打造合适的平台。

无界区块链虚拟币钱包开发咨询电话

咨询电话:13386501543

联系方式

电 话:13386501543

邮箱:1203125@qq.com

地址:浙江省杭州市江干区下沙街道万亚金沙湖1号3幢

当前位置:无界区块链开发 > 区块链商业模式 > 区块链底层技术公链开发

区块链底层技术公链开发

文章出处:13 阅读量:13 发表时间:20-11-26 18:15
区块链100问

区块链底层公链开发难度多大?
难在规划,尤其是满意特定事务场景下的规划
难度肯定是有的,首要是需求结合密码学、P2P、分布式体系多个范畴的常识,这种人才不好找。
但实际上开发的话,由于有许多十分好的开源项目,许多开源库,所以难度没幻想中那么大,许多东西能够直接拿来用n能够参阅一下下边的内容啦:区块链是现在一个比较热门的新概念,蕴含了技能与金融两层概念。从技能视点来看,这是一个牺牲共同性功率且确保终究共同性的的分布式的数据库,当然这是比较片面的。从经济学的视点来看,这种容错才能很强的点对点网络,恰恰满意了同享经济的一个有必要要求——低本钱的可信环境。
重塑国际的区块链技能
区块链技能便是比特币能够稳定运转8年左右的柱石,但一向被比特币的光辉所掩盖。但最近一年以来,各行各业(尤其金融职业)对区块链技能爆发了极大的热心。
我(区块链小学生)将从区块链界说、区块链技能三要素、区块链运用四展望、开源项目及国内现状5个方面为咱们解说区块链。
区块链界说
区块链技能到底是什么?很少有人能够解说清楚。现在市面上有许多关于区块链的书籍,内容根本都是,区块链能做什么,区块链的未来远景等。总的来说,区块链是一套协议,一组规范,而不是详细代码、项目。
了解了这套协议,你能够根据现有的技能,以不同的言语去完成它。咱们也无法用一句简略的话去概略什么是区块链,站的视点不同,得到的结论也不一样。
金融业的人会说区块链是一个分布式的账本,是一个分布式的银行记账体系。
密码学者的会说区块链是运用密码学构建的去信赖网络。
而我(码农)可能会说区块链便是一个确保终究共同性的分布式数据库。(ps:根据对IBM的超级账本Hyperledger项目fabric的知道。)
吃瓜大众能够从网络获取界说:区块链(Blockchain)是一种分布式数据库,起源自比特币。区块链是一串运用密码学办法相关联发生的数据块,每一个数据块中包括了一次比特币网络买卖的信息,用于验证其信息的有用性(防伪)和生成下一个区块。该概念在中本聪的白皮书中提出,中本聪创造第一个区块,即“创世区块”(摘自维基百科)。
但不管怎么界说,只需了解了其技能关键,每个人都会有自己的知道。

0683b826a6554848954560b443a6a919 区块链技能三要素
p2p网络通讯
首要,咱们回顾一下软件体系架构。
中心化
在互联网技能飞速开展的前半程,client与server的角色根本上是分工明确,1个server供给服务,n个client调用服务,这即所谓的中心化,体系的牢靠性依靠server的牢靠性。
分布式
随着事务复杂度上升、事务量激增,传统的中心化现已不能满意需求。这时候,服务分拆,横向纵向拓展变得理所应当,这便是咱们现在所处的分布式体系架构,体系的牢靠性依靠于分布式体系的容灾恢复才能。
去中心化
分布式架构给咱们带来的便当性很简略让咱们觉得这便是“白璧无瑕”的架构,但服务供给方仍是只依靠某一组织。假如组织作恶,宕机,篡改数据,那么形成的结果我想咱们都清楚。(假如不清楚,请脑补组织==付出宝)。
区块链运用的p2p网络通讯技能或许给了咱们别的一种挑选:人皆生而相等,没有谁生来便是server,便是client。每个节点都是相等的,既是生产者也是顾客。
注:今天所说的去中心化是一个抱负化的状况,就好像共产主义抱负。现阶段来说区块链去中心化本质上是相对去中心化。
有人可能会问,p2p网络就能确保不作恶,不宕机,数据不被篡改么?别急,p2p网络仅仅为一切节点供给了信息交流的办法。做事的仍是共同算法和加密算法。
共同算法
一说到区块链,一切懂的人都会说到共同算法,拜占庭将军问题,然后拽出一大堆高端大气上档次的英文缩写:POW,POS,DPOS,PBFT,等等。听众一脸懵逼,而假如你让他详细解说,可能绝大部分人也解说不清楚,这就好像爱因斯坦的相对论。
但别忧虑,最简略的解说,共同算法便是确保少量服从多数!大多数人认定一件事,这件事便是现实,也就意味着假如你要去改动一个既定现实,那么你有必要伙同大多数人陪你一同作假。
在电影电视剧中,这种状况很常见,弱者屈服于强者做伪证。但在根据p2p通讯的数以千计的节点中,想要伙同其他节点一同作恶,除非“大多数节点”都被统一组织(人)操控,有一起的利益,且利益大于付出,不然不行达到。
这儿“大多数节点”加了引号,由于有些算法并不是在大多数的临界点51%时就能达到共同。如PBFT,需求66%以上的确定节点才能达到共同。比方现在比特币网络有人就提出了这样的忧虑,由于大概有75%的算力被我国矿池掌控。
加密算法
说到加密算法,大多数码农都会想到比方对称加密,非对称加密,hash, md5,des,rsa等。加密的本质其实很简略,让信息真实、隐秘的交流及存储。真实性由数据签名确保,隐私性由数据加密完成。区块链渠道现在广泛运用的算法有椭圆曲线签名算法(ECDSA)、SHA256以及ripemd160,三者的结合运用确保了区块链在密码学层面上达到高度隐私。
结合
回到刚刚的问题:p2p网络就能确保不作恶,不宕机,数据不被篡改么?咱们把区块链技能三要素结合起来探讨这个问题。
作恶:要在数以千计的相等节点之间寻找作恶同伙,一般作恶的收获还不如作恶的付出,这就从根本上杜绝了许多坏节点的呈现。比方,比特币的POW共同算法,就算联合了比特币网络51%以上的算力去完成双花、硬分叉,得到的收益或许还不够交电费。
宕机:这个很好了解,一切的节点都是相等的,一个宕机了,不影响整个网络的继续运转。
数据篡改:这其实是作恶的子集,可是比较重要,拿出来说。区块链的一个重要特征便是时序性,前一时刻发生的买卖会影响后续一切买卖(买卖签名),假如想要篡改中心某一买卖的数据,那么有必要在此买卖地点的区块开端分叉,发生一个新链,改动这之后的一切买卖,而且还要比其他链的区块发生的速度更快,不然没有意义,由于区块链网络只认最长的那条链(根据比特币区块链)。
区块链运用四展望
区块链金融
比尔盖茨从前讲过一句话:“传统银行假如不改动思路,便是21世纪要灭绝的恐龙”。之前,咱们都仅仅当做一句笑谈。就像马云爸爸说他这辈子较大的错误便是建立阿里巴巴。
在区块链技能被发掘出来今后,这句话被重复引用,不管是否炒作,有必要看到区块链在应对金融事务时具有的得天独厚的优势,假如银行不思求变,那么被年代扔掉是必然。因而,比方花旗银行、汇丰银行、摩根斯坦利等42家巨子银行参加由一家区块链创业公司创立的R3区块链联盟也就不难了解了。
未来国际是数字国际,数字财物会变成咱们财物的首要凭证。金融的本质便是信誉,如安在银行全面数字化进程中利用去信赖的区块链技能,这必定是未来5-10年金融创业的黄金出题。
价值互联网
过去20年,咱们亲眼目睹了互联网技能怎么改动咱们的日子,信息化的巨大变革彻底的改动(便当)了咱们的衣食住行。完成了信息传达与同享的解放,是信息的去中心化。但互联网并没有处理财富与价值在互联网上的交流与搬运。
假如说现有的互联网已处理信息传达与同享的瓶颈,那么区块链要处理的便是资金、合约和数字化财物在互联网上交流、买卖与搬运的难题。未来20年,是信息互联网晋级为价值互联网的创业潮。
同享经济
近两年来,滴滴与uber之间的互联网租车争夺战,将“同享经济”推到了风口浪尖。这种个人与个人之间直接同享闲置财物的办法将经过区块链愈加盛行。由于区块链网络作为一个去信赖去中心网络,让人们摆脱了个人与个人之间的信赖危机以及中心化的非市场化运作。比办法国一个去中心化的叫车渠道Arade City,司机与乘客直接买卖。
而咱们公司现在也正在做一个同享用户闲置磁盘空间的区块链运用渠道。咱们信赖,唯数据与空间不行孤负,根据区块链技能,可让闲置的空间存储可被信赖的加密数据。数据能够是用户自己的照片视频,也能够是某组织的事务数据。
而对大数据分析来说,现有的大数据运用,数据都是存在一个中心化的厂商手里,谁敢确保数据具有者不会由于本身的利益修正数据内容?而用了区块链技能保管的数据才能确保数据被一切人一起办理,不行篡改。
智能合约
智能合约也是现在很火热的一个概念。简略的说,智能合约类似于计算机言语的if语句,当一个预先编好的合约的某一条件被触发时,就主动在区块链网络中履行合约相应的合同条款,而不需人为干预。
依照这样的愿景,未来律师的责任可能会大变样,律师的责任不是裁定个人合约,而是生产智能合约模板。定制性怎么,易用性怎么将决定合约的价格或许律师的身价。所以才会有笑谈:不会写脚本的律师不是好的码农。
开源项目
曾经,重复造轮子是衡量一个公司技能才能的重要指标。可是随着开源精神的遍及以及github渠道的广泛运用,贡献开源项目现已是互联网公司的常态。这儿介绍两个比较知名的区块链渠道开源项目。
超级账本
超级账本(hyperledger)是Linux基金会于2015年建议的推动区块链数字技能和买卖验证的开源项目,参加成员包括:荷兰银行(ABN AMRO)、埃森哲(Accenture)、IBM等十几个不同利益体,目标是让成员一起合作,共建敞开渠道,满意来自多个不同职业各种用户事例,并简化事务流程。
超级账本项目很适合联盟链,私有链的构建。现在超级账本的开源代码完成Fabric由IBM主持孵化,由go言语开发,现在版本为0.6, 坑还许多,需求时刻来填,咱们的项目也是根据Fabric。所以,现在开端学习Fabric,应该是比较好的挑选。
以太坊
以太坊(Ethereum)是一个运转智能合约的去中心化渠道(Platform for Smart Contract),渠道上的运用按程序设定运转,不存在停机、审查、诈骗、第三方人为干预的可能。以太坊渠道由 Golang、C++、Python 等多种编程言语完成。
前段时刻的The DAO事件让以太坊渠道损失惨重,以太坊也分裂成ETC和ETH,渠道的开展远景不明。
技能人看待区块链的正确姿势
我接触过一些工程师,初次接触区块链时,不约而同的表达了:都是老练的技能,不便是分布式存储嘛。站在工程师的视点,第一反应将这种新概念映射到自己的常识框架中,是十分天然的。可是细究之下发现,这种片面的了解可能将对区块链的了解带入一个误区,那便是作为一个技能人员,忽略了区块链的经济学特性——一个权利分散且彻底自治的体系。
区块链本质上是一个根据P2P的价值传输协议,咱们不能只看到了P2P,而看不到价值传输。同样的,也不能只看到了价值传输,而看不到区块链的底层技能。
能够这么说,区块链更像是一门交叉学科,结合了P2P网络技能、非对称加密技能、宏观经济学、经济学博弈等等常识,构建的一个新范畴——针对价值互联网的探究。
那什么是价值互联网?价值互联网能够是当下如日中天的电子商务所衍生的付出事务。但,真的仅仅付出范畴吗?很显然这是不够的,一级资本市场,实体财物确权与搬运,证券挂号交割、征信与反诈骗。咱们再细心想想,咱们的各大电商渠道的专业差评师,歹意的刷 单还少吗?
现在的金融范畴,除了付出比较便当之外,在其他绝大部分的事务中,咱们就像是被套着锁链走路一样,咱们重复承认,重复审核,重复监督,咱们重复构建一个又一个的大大小小的高可用集群,确保线上服务的牢靠性与连续性,咱们雇佣一个又一个的安全工程师,交给一个又一个的渗透测验项目。为什么?由于做弊的本钱太低了,低到只需改数据库的一行记录就能够提取上百万的资金。
强大的互联网给了咱们本钱简直为零的高速信息传输通道,却没有一个本钱低廉牢靠的高速价值传输通道,那么这也便是区块链行将带来的。
区块链是一个公共的分布式总账,下面从技能视点简略介绍一下。
幻想有一个100台的分布式数据库集群,现在的状况是这100个节点实际上的具有者是一个组织,而且一切节点处在该组织的内网傍边,所以这个组织想让这100个数据库节点干嘛就干嘛,换句话说这100个节点之间是处于一个可信赖的环境,而且受控于一个实体,这个实体具有仲裁分配权。
别的的状况是这样的,幻想这100个节点别离归不同的人一切,且每个人的节点数据都是一样的,即彻底冗余,而且一切的节点是处在广域网傍边,换句话说便是这100个节点之间是不信赖的,且不存在一个实体,它具有仲裁权。
现在考虑第二种状况,采用什么样的算法(共同模型)能够供给一个可信赖的环境,使:
每个节点交流数据进程不被篡改;交流历史记录不行被篡改;
每个节点的数据会同步到数据,且供认经过共同的数据;
根据少量服从多数的原则,全体节点保护的数据本身客观反映了交流历史。
区块链本质上便是要处理以上第二种状况的一种技能计划,更确切的说应该叫分布式的冗余的链式总帐本计划。有关区块链的一些要素,在我以往的文章里有总结过一些:
包括一个分布式数据库
分布式数据库是区块链的物理载体,区块链是买卖的逻辑载体,一切中心节点都应包括该条区块链数据的全副本
区块链按时刻序列化区块,且区块链是整个网络买卖数据的主体
区块链只对添加有用,对其他操作无效
根据非对称加密的公私钥验证
记账节点要求拜占庭将军问题可解/避免
共同进程(consensus progress)是演化稳定的,即面对一定量的不同节点的矛盾数据不会崩溃。
共同进程能够处理double-spending问题
所以作为一个技能人员,不应当只看到了区块链所依靠的技能,更应该关注区块链以外的点和面,归纳来看,区块链将会风趣得多。
区块链的一般性架构介绍
有关区块链技能的介绍,在各个区块链渠道的社区是有详细材料的,可是针对这些材料的总结,以及笼统出一共通概念的介绍,仍是百里挑一,本文尝试总结一下。
在介绍之前,我想略微介绍一下公有链,联盟链的概念,这些概念是以太坊创始人Vitalik提出的,我在这些概念的根底上做了一些研究。
其实区分公有链、联盟链很简略,只需看这个区块链的拜访权限就能够了,假如拜访该区块链需求取得链上节点的许可,那么这是一个联盟链,不然是公有链。根据称号,咱们也能够”望文生义“,公有表明一个彻底敞开的网络,联盟表明一个半敞开的网络,成员之间是同享的,非成员身份是没有自在拜访权限的,所以咱们也称联盟链为许可链。
下面咱们来看几个比较干流的区块链渠道(公有链,皆开源):
比特币 Bitcoin
以太坊 Ethereum/经典以太坊 Ethereum Classic
比特股 Bitshares
我一般戏称为”三巨子“,从生态上来看,比特币是更为老练稳定的,以太坊更像是一个冲在前面的勇士,比特股比较前两位生态要小许多,可是从创新的视点,也不亚于前两位。其他的许多项目,是从这三个区块链上衍生出来的,所以以这三个为根底,根本上能够吃透区块链了。
不得不提的还有Linux基金会项目——HyperLedger项目(主打联盟链,开源),也是旨在打造一个通用的区块链技能,不过我以为现在尚在开发迭代傍边,还没有详细的运用事例,按下不讲。
别的还有一些银行寡头间的联盟链项目——R3 CEV项目(联盟链,闭源),以及我国的R3项目——ChinaLedger(联盟链,闭源),当然这些不是开源的,我无法取得有用的材料进行分析,所以就不打开了。
从技能上来看,针对不同的事务场景,对区块链有不同需求,比方实时结算事务,要求区块链供给秒级的交割,相对应的便是出块速度的要求,而出块速度过快往往会导致区块链分叉(fork),形成孤儿链,孤儿链是无效的,那么买卖也就作废了,影响了区块链的终究共同性。假如频频发生分叉形成适当比例的用户买卖失效,那么能够以为体系是不行靠的。
假如咱们将这种实时性要求比较高的事务安插到联盟链中,就能够操控危险,经过调整共同算法,利用快速共同共同模型(Consensus Model)来避免上述问题,虽然不如公有链那么强健,但对某些特殊场景足够了。所以架构层面,对公有链和联盟链的技能也要差异化对待。
不过客户端全体的规划仍是有一些通用的概念的,如下图:
一个区块链至少分为三层,最底层是一些通用的根底模块,比方根底加密算法,网络通讯库,流处理,线程封装,消息封装与解码,体系时刻等;
中心一层是区块链的中心模块,一般包括了区块链的首要逻辑,如P2P网络协议,共同模块,买卖处理模块,买卖池模块,简略合约或许智能合约模块,嵌入式数据库处理模块,钱包模块等;
最上面一层,往往都是根据Json Standard RPC的交互模块,根据Json-RPC,咱们还能够做出更好的UI界面,也能够是一个web-service。
假如区块链 支撑智能合约,可能还要分更多的层,比方增加BaaS层,区块链上的智能合约供给自治的服务,比方下面这张以太坊的架构图(来自Google,仅作参阅):
这种分层愈加关注的是区块链本身的分层,即事务上的视角,而不彻底是技能的。
咱们再转向比特币的规划:
比特币几个模块之间的耦合度其实比较高,而且有不少历史包袱,比特币的发明者——中本聪在开发比特币的时候,运用VC++开发,而VC++的规范库中的sstream流处理性能十分感人,不得不放弃,自行完成了了根据vector的流处理容器。而随着c++11的推出以及规范库的更新迭代,性能不行同日而语。
从整张图咱们能够看出,比特币的模块比较少,也比较简略。chain-paramters描述了整个区块链的参数设置,wallet是与地址/加密还有存储相关的,mem-pool是未承认的买卖池。得益于比特币中心开发者的不朽贡献,比较中本聪年代的比特币代码,现在的比特币代码质量现已适当不错了。
以上不管哪种规划,一般都要从P2P网络协议作为切入,作为一个P2P钱包,既要供给Service也要供给Client,作为Service依靠P2P网络协议,作为Client依靠Json-RPC。
需求指出的是,现在”三巨子”所运用的账户模型是不同的(所谓账户模型是指账户记账办法),比特币运用UXTO模型,以太坊和比特股运用账户余额模型。
UXTO模型(Unspent Transaction Outputs (UTXOs) ):此模型表达了一种搬运的概念,即任何发生的新币,在今后的生命周期中,只有搬运,没有消亡,搬运实质上是由加密算法的签名与验证操控的:
账户余额模型:账户余额模型摒弃了这种强验证的账户模型,即账户余额回归到数字加减,这样做提升了买卖的功率。
共同算法与分布式
终于来到重点了,本文每节其实都能够打开成为独立的文章,内容所限,简略讲。
所谓区块链共同进程,在上文有所提及,是指怎么将全网买卖数据客观记录而且不行篡改的进程。现在"三巨子"别离运用不同的共同算法(Consensus Algorithm), 比特币运用工作量证明PoW(Proof of Work),以太坊行将转换为权益证明PoS(Proof of Stake),比特股运用授权权益证明DPoS(Delegated Proof of Stake)。
以上这些算法我称之为“经济学”的算法,所谓经济学的算法,是指让做弊本钱可计算,且让做弊本钱往往远大于做弊带来的收益,即做弊无利可图,经过这种思想结构一个用于节点之间博弈的算法,并使之趋向一个稳定的平衡。相对应的咱们还有计算机范畴的分布式共同性算法,例如Paxos、Raft,我也称之为传统分布式共同性算法。
它们之间的较大区别是:体系在拜占庭将军(Byzantine Generals Problem)情形下的牢靠性,即拜占庭容错(PBFT算法支撑拜占庭容错)。但是不管是Paxos仍是Raft算法,理论上都可能会进入无法表决经过的死循环(虽然这个概率其实是十分十分低的),可是他们都是满意safety的,仅仅放松了liveness的要求, PBFT也是这样。
下面是一些传统分布式共同性算法和区块链共同进程的异同点。先来看相同点:
Append only
强调序列化
少量服从多数原则
别离覆盖的问题:即长链覆盖短链区块,多节点覆盖少量节点日志
这是不同点:
传统分布式共同性算法大多不考虑拜占庭容错(Byzanetine Paxos除外),即假设一切节点只发生宕机、网络故障等非人为问题,并不考虑歹意节点篡改数据的问题;
传统分布式共同性算法是面向日志(数据库)的,即更通用的状况,而区块链共同模型面向买卖的,所以严格来说,传统分布式共同性算法应该处于区块链共同模型的下面一层。
考虑上面的不同点,结合公有链和联盟链的特征,咱们有:
联盟链:半关闭生态的价值网络,存在对等的不信赖节点,如某某协会成员之间。
公有链:敞开生态的价值网络,这层首要是为职业链和私有链供给全球买卖网络。
由于联盟职业链其半关闭半敞开特性,运用Delegated Proof of XXX 是可行的,能够考虑以传统共同性算法作为根底参加拜占庭容错/安全防护机制进行改进也是能够的。
而针对公有链,PoW/Pos/DPos等“经济学”的算法可能是最优算法。技能上,以上不同的共同算法,咱们许多新开发区块链都相应的支撑一个特性:共同模块可插拔,以应对不同场景下的要求。

公有链供给可信牢靠的价值传输网络,上面能够继续组成去中心化运用(DAPP)或许布置联盟链,乃至传统数据库都行,在上层搭建C端运用。
数字财物与价值流通网络
这儿有张未来区块链开展的示意图:
ref: Metaverse元界白皮书-CN(概要)
“三巨子”中,比特币在“数字钱银”处,比特股在“去中心化买卖所”附近,以太坊在“去中心化组织”处。而实际上,区块链和现实的接触点,还在图示位置。所以区块链仍是一个正在生长的事物,结合图5,咱们希望构建一个根底设施完善的价值传输网络,上层运用丰富的区块链生态,依然需求付出巨大的努力。
下一步目标,是将财物数字化(类比财物证券化),例如咱们能够将珍稀物品(艺术品/古董)数字化、常识产权数字化、票据基金等收益权数字化,将极大的提升市场运作功率,装备智能合约,乃至人工智能,可编程社会不再是愿望。

cache
Processed in 0.010778 Second.