如何使用区块链开发一个落地项目?这位实战大牛手把手教会你

简介:

区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。本文以联盟链为例,简单描述了实践一个联盟链的基本过程。


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


作者 |陈浩,维优区块链CTO


先要确定这个区块链的类型,是公证型区块链还是价值型?


公证型区块链是指仅限一些关键数据自证、披露、防篡改等功能的区块链,通常是在价值型区块链中附带的功能,也可以单独扩展,用于公示公开等。价值型区块链是指可以进行资产所有权转移的一种记账账本。


如果确定是价值型区块链,我们又需要确定目标区块链的总体定位:到底是一个普适的价值传输区块链,还是特定场景下的区块链?如果是特定场景下的区块链,我们通常推荐超级账本作为技术原型,如果是比较通用的价值区块链,我们推荐以太坊的思路。


业务场景的构建与初步分析


首先要明确的观点是,区块链不是万能的。很多场景其实是不需要区块链技术也能解决的。像跨境支付领域,区块链能很好的发挥是因为存在很多点对点的跨境机构有大量的支付清算需求,而又不希望中间机构参与,区块链是很好的选择。但是在一些集团内部,大型公司内部,区块链解决方案基本上远远不如传统的企业资源解决方案。


A、需求痛点分析


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

  1. 存在一个不相互信任的P2P网络环境;

  2. 节点之间是对等的,不存在一个绝对仲裁者;

  3. 节点之间是博弈行为。

P2P网络可能包含输入和输出,当包含输入和输出时,区块链不再封闭。


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

  1. 不信任其他节点;

  2. 保证自己的收益最大化;

  3. 自私获取但不贡献资源。

针对以上情景的业务建模,需要针对具体的业务逻辑结合博弈论推导出满足自己需求的方案。


B、非区块链技术能否解决


案例1:


通常我们有不同的机构A、B、C,存在不对称的信息交换需求,即A、B、C分别具有部分数据,但三者组合到一起具有市场的全量数据。但是作为A,想知道B、C是否拥有自己数据集合中的某个点数据,根据这个结果来调整自己的购买策略。


案例2:


有不同的机构X、Y、Z,存在信息反馈的需求,当Z收到Y的服务时,会给Y一个信息反馈,这种反馈可能是信用评价,也可能只是响应反馈。总之这种反馈需要记录在案,X会根据Z的信息反馈结果调整自己的购买策略。当X购买服务时,同样会给Y一个反馈,Z也会收到反馈。


以上两个案例首先考虑使用非区块链是否可以解决:


针对案例1,敏感数据和私有数据是不会公开的,即使加密也不会被允许上传到区块链。所以产生了一个数据输入输出区块链的过程,该过程是区块链不可控制的。


那么使用传统的技术是否可以控制呢?貌似也不行,能够满足不暴露敏感数据的方案也只有HASH计算和同态加密。但是这两者都要求数据传输到指定位置。

通常我们会考虑使用零知识证明作为解决方案,然而具体的算法可能需要根据具体业务逻辑进行构建,结合简单智能合约,根据查询结果产生不同输出。


针对案例2,反馈信息容易被篡改,可刷单等问题是最大的,如何保证这种信息反馈是客观中立不可篡改的,可以结合区块链代币的币龄使交易具有方向性来防止作弊行为。



业务场景建模


针对第二节中的两个案例,我们接下来要进行建模,除去核心痛点,我们必然还有记账的需求,本质上任何案例中每个节点都既是服务方,也是客户方,那么怎么衡量自己贡献和索取了多少呢?


所以任何区块链平台上,必须是要有代币系统的,否则记账将非常困难。在业务场景建模过程中,我们主要关注如何使节点之间达成帕累托改进,而不是因为每个节点是自私行为,让区块链服务名存实亡。


开发路径


A、区块链原型选取


根据本文开头的叙述,如果是特定场景的区块链解决方案,建议Hyperledger fabric,当然搭建以太坊私有链也是可以的。下面是一些以太坊和Fabric的比较:


以太坊与HyperLedger相同点:


  1. 都是提供区块链业务实现的平台,业务实现都是通过智能合约来完成,以达到最大的灵活性和对底层的不修改。

    以太坊是:EVM虚拟机,Solidity合约语言;

    HyperLedger是: Shim链码容器,用GO编写合约。

  2. 官方版本都使用GO语言实现。

  3. 因为都是提供第三方可编程能力,由于难度大,内部难免存在漏洞。对外则存在恶意程序攻击的威胁。尤其是在做为公有链时,威胁将会更大。上个月以太坊已有报合约solidity语言漏洞。


以太坊与HyperLedger不同点:


  1. 以太坊只提供智能合约能力。也恰好吻合它的定位:智能合约和去中心化应用平台。对系统安全性或准入机制无底层无核心上的支持。而HyperLedger在吸收以太坊智能合约特点的同时,提供MemberShip及身份验证角色管理等模块,更贴近商业应用场景。

  2. 共识机制不同。由于共识的不一样,所以每秒可处理的交易量也不一样,以太坊是每秒千级别的处理量,而HyperLedger可以达到十万级别。

  3. 采用的技术实现思路上不一样。以太坊更多的是靠自己实现,自己造轮子,有点开发人员炫技的感觉,如自己提供合约语言solidity,自己实现EVM(这个可能是实际需要)。


表1是笔者曾经的一个私链项目中对两者的比较(私链考虑了Hydrachain的可行性)。


640?wx_fmt=jpeg


读者可以根据自己实际的TPS需求,进行共识的选型。表2是不同共识的一些参考数据。


640?wx_fmt=jpeg


当然,如果考虑自行开发,建议搭建基础比特币网络,做加法,更改共识算法,网络传送协议以及附加合约(可选)。


其实智能合约在一些场景中不是必选项,对用户来说,可靠方便实时是第一需求,如果针对特定的应用场景,将“合约”固化在区块链里面,也是一种可行的思路。


针对以上两种联盟链实现,笔者还想强调,并不是所有服务一定得是区块链的,笔者构想了一个通用的保护伞型结构,如比特币的侧链技术,主链提供基础账本服务,侧链提供特定场景服务,侧链上的应用可以是非区块链实现的,只需接口注册即可。


640?wx_fmt=jpeg


B、交互接口设计


在交互接口设计上,推荐使用目前业界通用的Json-RPC接口,扩展性和友好性兼备。


一般我们将接口分为两类:开放接口和账户接口。开放接口是指区块链本身的描述信息,是不需要认证的,而账户接口是需要账户认证的。


C、基础账本设计


基础账本设计包含以下两个问题:


首先是原型区块链是否已经满足需求?如果针对以太坊,基本上不需要改动基础账本,只需构建智能合约即可。如果以比特币体系为基础,则可能有较大的改动。


不满足需求时如何改动基础账本?这个其实要视账户模型而定,如果使用UTXO模式时,改动重点在如何嵌入模板交易体。如果使用Balance模式,那么则没有这个问题。


D、业务扩展层设计


业务扩展设计方面的内容比较复杂,篇幅问题这里也只是抛砖引玉提出两个问题:


1. 扩展层是外接区块链还是内置到区块链?

2. 如果包含数据输入,是否需要脱敏?脱敏后如何上链?


先想清楚这两个问题或许能帮你更好地规划业务扩展层的内容。



开发转变和难点


A、开发思维的转变


与传统网络服务不同的是,区块链开发不再以面向服务为主要关注点,而是面向账本和交易。


开发者面对的不再是以高可用高并发的应用程序为主要指标,而是切换到了面向用户,关注用户友好性和开发扩展性的终端程序开发。


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


图2是一个适用于联盟链/私有链项目的工作流程。

640?wx_fmt=jpeg


B、开发难点

目前来讲,区块链项目开发的难点有三个:


1. 开发人力资源储备不足


目前比较成熟的技术体系有比特币及衍生技术体系、以太坊、超级账本HyperLedger fabric、比特股Bitshares、瑞波Ripple和未来币NXT。其中前三个是最有影响力的区块链项目。比特币以及衍生技术多以C++语言进行开发;以太坊支持大部分主流语言,官方以Go为主,也有其他分支的项目如Rust语言的Parity钱包;超级账本目前以Go为主。


从目前上海地区的区块链从业人员来看,保守估计在400~500左右。按一半为开发人员计算,也才200多个,面对巨大的市场需求,人才是极度稀缺的。


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


如果从Java的角度看,如何把其生态利用起来,目前区块链还没有做到那个地步。


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


2. 区块链是交叉学科,需要各方面工程实践的经验


在实践方面,我们希望区块链从业人员同时了解技术和金融业务,这个对人员的素质要求比较高,相应的符合标准的人就更少了。


3. 关于对各个区块链技术体系理解的偏差。区块链技术和概念日新月异,闭门开发可能会走到死胡同,如何保持一部分精力更新知识体系,同时保证开发进度对开发人员是有较大挑战的。


区块链作为一门新兴的技术,涵盖了去中心化、去信任、共享经济、分布式计算、分布式存储等多方面的内容,考验着技术人员的学习和思考能力。在未来,区块链将同人工智能一起,会影响到普通人生活的方方面面。





原文发布时间为:2018年01月30日
本文作者:区块链大本营
本文来源:CSDN,如需转载请联系原作者。

目录
打赏
0
0
0
0
357
分享
相关文章
区块链农场游戏系统开发运营版/玩法详情/规则方案/案例设计/项目源码
Developing a blockchain farm game system is an interesting and challenging task. Here is a design solution that can help you get started developing such a system
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
【专栏】区块链和智能合约的未来发展潜力巨大,期待更多创新应用
【4月更文挑战第27天】本文探讨了区块链技术与智能合约的边界及挑战。区块链,以其不可篡改和安全特性,广泛应用于金融、供应链和物联网等领域。智能合约作为区块链上的自动执行代码,实现无需第三方的可信交易。然而,技术上面临扩展性、性能和安全问题,法律与监管层面也需适应智能合约的自动执行特性及跨境法律协调。尽管挑战重重,区块链和智能合约的未来发展潜力巨大,期待更多创新应用。
220 1
揭秘区块链:以太坊智能合约开发的奥秘与挑战,你准备好迎接未来了吗?
【10月更文挑战第25天】本文介绍了区块链技术的基本概念及其核心特点,重点讲解了以太坊智能合约的开发流程和实际开发中的注意事项。通过安装 Truffle、Ganache 和 Remix 等工具,读者可以快速上手编写、编译、部署和测试智能合约。文章还对比了以太坊去中心化应用与传统集中式应用的优势和挑战,帮助读者全面了解以太坊智能合约开发。
94 0
探索区块链技术与智能合约开发的边界
随着信息技术的发展,区块链作为一种分布式数据库技术正深刻影响社会。本文探讨区块链基本原理及其在金融、供应链等领域的应用,并聚焦智能合约——一种自动执行且不可篡改的代码,介绍其开发流程与丰富案例。同时,文章分析了技术与法律层面面临的挑战,展望未来发展趋势。
86 4
链动未来:WPF与区块链的创新融合——从智能合约到去中心化应用,全方位解析开发安全可靠DApp的最佳路径
【8月更文挑战第31天】本文以问答形式详细介绍了区块链技术的特点及其在Windows Presentation Foundation(WPF)中的集成方法。通过示例代码展示了如何选择合适的区块链平台、创建智能合约,并在WPF应用中与其交互,实现安全可靠的消息存储和检索功能。希望这能为WPF开发者提供区块链技术应用的参考与灵感。
99 0
基于Java的区块链数字身份认证系统设计与开发
基于Java的区块链数字身份认证系统设计与开发
区块链技术与智能合约开发的边界究竟在哪里?
【6月更文挑战第10天】本文探讨了区块链技术与智能合约的界限和挑战。区块链,本质是分布式数据库,以其不可篡改性和安全性在金融、供应链和物联网等领域广泛应用。智能合约,作为区块链上的自动执行代码,无需第三方介入,确保了执行的自动性和安全性。然而,技术上面临扩展性、性能和安全问题,法律与监管层则需解决合规监管和跨国法律协调的难题。尽管如此,随着技术进步和应用场景拓展,区块链与智能合约的潜力和未来前景依然广阔。
117 2
区块链开发团队DappNetWork
区块链开发团队由跨学科专家组成,包括区块链专家、智能合约开发者、系统架构师和测试工程师。团队负责战略规划、技术开发、系统测试和运维优化,需要深入理解区块链技术、安全性和敏捷开发。通过敏捷管理和自动化工具,团队实现高效协作,为金融、供应链等领域提供安全可靠的区块链应用解决方案。如需开发加V:DappNetWork

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等