最北科技讲述如何将区块链技术应用于项目开发之中

最北科技讲述如何将区块链技术应用于项目开发之中

新闻资讯   2019-02-13 10:45

区块链是现在一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个献身共同性功率且保证终究共同性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错才干很强的点对点网络,恰恰满足了共享经济的一个有必要要求——低成本的可信环境。

本文以联盟链为例,描绘了实践一个联盟链的根本进程,包含以下内容:

业务场景的构建与开端剖析,
业务场景建模,
开发途径,
开发难点。
本文无法包含全部类型的开发,首要供应一些开发思路,并顺便说明一下可行的做法。

一、 整体思路

首要要判定做个区块链的类型,是公证型区块链仍是价值型?

公证型区块链:是指仅限一些要害数据自证、披露、防篡改等功用的区块链,一般是在价值型区块链中顺便的功用,也可以单独扩展,用于公示揭露等。
价值型区块链:是指可以进行资产全部权搬运的一种记账账本。

在价值型区块链上,我们需求判定方针区块链的整体定位:
到底是一个普适的价值传输区块链,仍是特定场景下的区块链?
假设是特定场景下的区块链,我们一般引荐超级账本作为技术原型,假设是比较通用的价值区块链,我们引荐以太坊的思路。

二、 业务场景的构建与开端剖析

首要要明确的观念是,区块链不是万能的。许多场景其实是不需求区块链应用开发技术也能处理的。

在跨境付出领域,区块链能很好的发挥是由于存在许多点对点的跨境安排有很多的付出清算需求,而又不期望中心安排参与的话,区块链是很好的挑选。

但是在一些集团内部,大型公司内部,区块链应用开发处理方案根本上远远不如传统的企业资源处理方案的。

1. 需求痛点剖析

一般需求痛点在满足以下条件的时分,可以考虑运用区块链:

存在一个不信赖的P2P网络环境
节点之间是对等节点,不存在一个绝对仲裁者。
节点之间的行为是博弈行为。
P2P网络或许包含输入和输出,当包含输入和输出时,区块链不再关闭。

关于某个节点一般有以下几种行为(包含但不限于):

不信赖其他节点;
保证自己的收益最大化;
自私获取但不贡献资源。
针对以上情景的业务建模,需求针对具体的业务逻辑结合博弈论推导出满足自己需求的方案即可。

案例1:

一般我们有不同的安排A,B,C,存在不对称的信息交换需求,即A,B,C分别具有部分数据,但三者组合到一起具有商场的全量数据。

但是作为A,想知道B,C是否拥有自己数据调会集的某个点数据,根据这个成果来调整自己的购买战略。

案例2:

我们有不同的安排X,Y,Z,存在信息反响的需求,当Z收到Y的效力时,会给Y一个信息反响,这种反响或许是信用评价,也或许只是响应反响。总之这种反响需求记录在案,X会根据Z的信息反响成果调整自己的购买战略。当X购买效力时,同样会给Y一个反响,Z也会收到反响。

2. 非区块链技术能否处理

以上两个案例首要考虑运用非区块链是否可以处理:

针对案例1,敏感数据和私有数据是不会揭露的,即便加密也不会被答应上传到区块链。所以产生了一个数据输入输出区块链的进程,该进程是区块链不行控制的。

那么运用传统的技术是否可以控制呢?形似也不行,可以满足不暴露敏感数据的方案也只要HASH核算和同态加密。

但是这两者都要求数据传输到指定方位。

一般我们会考虑运用零知识证明作为处理方案,但是具体的算法或许需求根据具体业务逻辑进行构建,结合简略智能合约,根据查询成果产生不同输出。

针对案例2,反响信息的简单篡改性,可刷单等问题是最大的,怎样保证这种信息反响是客观中立不行篡改的,可以结合区块链代币的币龄使生意具有方向性来防止做弊行为。

三、业务场景建模

针对第二节中的两个案例,我们接下来要进行建模,除去核心痛点,我们必然还有记账的需求,本质上任何案例中每个节点都既是效力方,也是客户方,那么怎样衡量自己贡献和索取了多少呢?
所以任何区块链途径上,有必要是要有代币体系的,否则记账将非常困难
在业务场景建模进程中,我们首要注重怎样使节点之间达到帕累托改进,而不是由于每个节点是自私行为,让区块链效力名存实亡。

四、 开发途径

1. 区块链原型选取

根据本文开头的叙述,假设是特定场景的区块链处理方案,建议Hyperledger fabric,当然树立以太坊私有链也是可以的。

下图是一些以太坊和fabric的比较:

以太坊与HyperLedger相同点:

都是供应区块链业务结束的途径,业务结束都是通过智能合约来结束,以抵达最大的灵活性和对底层的不修正。
以太坊是:EVM虚拟机,Solidity合约言语
HyperLedger是: Shim链码容器, 用GO编写合约。
官方版别都运用GO言语结束
由于都是供应第三方可编程才干,由于难度大,内部难免存在缝隙。对外则存在恶意程序侵犯的挟制。尤其是在做为公有链时,挟制将会更大。上个月以太坊已有报合约solidity言语缝隙

以太坊与HyperLedger不同点:

以太坊只供应智能合约才干。也恰好符合他的定位:智能合约和去中心化运用途径。对体系安全性或准入机制无底层无核心上的支撑。
而HyperLedger,在吸收以太坊智能合约特色的一起,供应MemberShip及身份验证人物管理等模块。更贴近商业运用场景。
共同机制不同。
由于共同的不一样,所以每秒可处理的生意量也不一样,以太坊是每秒千级其他处理量。而HyperLedger可以抵达十万级其他处理量。
选用的技术结束思路上不一样。以太坊更多的是靠自己结束,自己照轮子,有点开发人员炫技的感觉,如自己供应合约言语solidity, 自己结束EVM(这个或许是实际需求)

下图是笔者从前的一个私链项目中对两者的比较(私链考虑了Hydrachain的可行性):

最北科技讲述如何将区块链技术应用于项目开发之中 

当然,假设考虑自行开发,建议树立基础比特币网络,做加法,更改以下:

共同算法
网络传送协议
附加合约(可选)
其实智能合约在一些场景中不是必选项,关于用户来说,可靠便利实时是第一需求,假设针对特定的运用场景,将“合约”固化在区块链里边,也是一种可行的思路。

针对以上两种联盟链结束,笔者还想强调的是,并不是全部效力一定得是区块链的,笔者构想了一个通用的保护伞型结构,

如比特币的侧链技术,主链供应基础账本效力,侧链供应特定场景效力,侧链上的运用可以对错区块链结束的,只需接口注册即可。

3.交互接口规划

在交互接口规划上,引荐运用现在业界通用的Json-RPC接口,扩展性和友好性兼备。
一般我们将接口分为两类:打开接口和账户接口。
打开接口是指区块链自身的描绘信息,是不需求认证的。
而账户接口是需求账户认证的。

4. 基础账本规划

包含以下几个问题:
原型区块链是否已经满足需求?
假设针对以太坊,根本上是不需求改动基础账本的,只需构建智能合约即可。
怎样以比特币体系为基础,则或许有较大的改动。

不满足需求怎样改动基础账本?
这个其实要视账户模型而定,假设运用UTXO方式时,改动重点在怎样嵌入模板生意体。
假设运用Balance方式,那么则没有这个问题。

5. 业务扩展层规划

包含以下几个问题:
扩展层是外接区块链仍是内置到区块链?
假设包含数据输入,是否需求脱敏?脱敏后怎样上链?

五、开发改动和开发难点

1. 开发思想的改动

与传统网络效力不同的是:区块链开发不再以面向效力为首要重角度,而是面向账本和生意。

开发者面临的不再是以高可用高并发的运用程序为首要方针,而是切换到了面向用户的,注重用户友好性和开发扩展性的终端程序开发。

所以高并发高性能不再是区块链终端的核心方针,安全性,可扩展性,友好性成了首要方针。

下图是笔者在中国技术打开日上提到的一个作业流程:

最北科技讲述如何将区块链技术应用于项目开发之中

仅适用(联盟链/私有链)项目。

2. 开发难点

开发难点有三:

现在开发人力资源储藏缺乏
现在比较老练的技术体系有:比特币及衍生技术体系,以太坊,超级账本HyperLedger fabric,比特股Bitshares,瑞波Ripple,未来币NXT。

其间列出的前三个项目是最有影响力的区块链项目。比特币以及衍生技术多以C++言语进行开发;以太坊支撑大部分干流言语,官方以Golang为主,也有其他分支的项目如Rust言语的Parity钱包;超级账本现在以Golang为主。

从现在重庆区域的区块链从业人员来看,保存估计在400~500左右。按一半的开发人员核算,也才200多个,面临巨大的商场需求,人才是极度稀缺的。

由于C++现在仅在金融和游戏领域有部分需求,所以C++工程师不多,尤其是高水平的C++工程师就更少了。Go作为新式言语,发展势头很猛,但是Go的生态也不如JAVA大。

假设从JAVA的角度看,怎样把JAVA的生态使用起来,现在区块链还没有做到那个境地。

概括来看,区块链在技术方面与其他技术的结合还有待探究。

区块链是交叉学科,需求各方面工程实践的经历
在实践方面,我们期望区块链从业人员一起了解技术和金融业务,这个要求比较高。

对各个区块链技术体系了解的误差,区块链技术和概念日新月异,闭门开发或许会走到死胡同,怎样坚持一部分精力更新知识体系,一起保证开发进度对开发人员是有较大应战的。

区块链作为一门新式的技术,包含了去中心化,去信赖,共享经济,分布式核算,分布式存储等多方面的内容,检测着技术人员的学习才干和考虑才干。在未来,区块链将同人工智能一起,会影响到普通人日子的方方面面。

相关新闻