• 区块链功能架构

    2019-04-04 18:37:54
    区块链功能架构一个了解区块链技术范围的方法是,学习其具备的核心功能。这一部分描述了一个通过对市场上存在的各种方法进行分析归纳后得出的通用的模块构造方式。在2016年,看上去市场上这样的方式有很多,但是这...

    区块链的功能架构

    一个了解区块链技术范围的方法是,学习其具备的核心功能。这一部分描述了一个通过对市场上存在的各种方法进行分析归纳后得出的通用的模块构造方式。

    在2016年,看上去市场上这样的方式有很多,但是这其中存在整合机会,并且我们将逐渐减少底层架构的讨 论,而增加对顶层能力的研究。最终,这种类型的基础设施架构技术将会被认为是理所应当的,并且其大部分会被整合成“开箱即用”的模式,而非像以前那样弄成 “宜家盒子”(IKEA box)的方式。

    以下是区块链技术的核心部分:

    image.png

    下面我们将详细介绍上述每个部分的功能。

    其他区块链所需特性

    ● 加密交易(保密传输)。

    ● 监控(统计和分析)。

    ● 审计。

    ● 安全。

    链外服务

    ● 声誉。

    ● 信息。

    ● 存储(例如DHT、文件系统)。

    ● 交换(例如资产、现金流等)。

    ● 支付网关。

    最终用户视图

    ● 命令行。

    ● 特殊浏览器。

    ● 钱包。

    ● 应用。

    ● 可下载客户端。

    链内服务

    ● 时间戳。

    ● 签名证书。

    ● Oracles认证。

    ● 身份认证管理(例如线上检验、合法检验、防伪检验)。

    ● 投票。

    ● 智能合约管理。

    ● 标记。

    ● 信息。

    ● 资产连接。

    ● 存在性证明。

    区块链软件技术的发展

    各种各样关于区块链的软件技术发展,包括以下多个方面:

    ● API(应用程序编程接口)。

    ● 多种客户端的实现(例如C++、Python、Go、Java、HaskeⅡ等)。

    ● 集成开发环境和快速应用程序开发框架。

    ● 智能合约语言和脚本。

    ● 测试工具。

    ● 沙箱环境(Sandbox environments)。[4]

    内核与协议

    P2P网络

    P2P网络是一种通过节点方式相互连接的集成网络,也是一种不断合成的拓扑结构。它是区块链的一项最基本的 功能元素。每个节点都在相同的网络中运行,因此它们会提交整个网络固有的冗余,这意味着一旦一个节点停止工作或者不再响应,在网络中的其他节点会进行修正 弥补。其实从本质上而言,一个P2P网络很难崩溃,除非我们关闭每一个运行的节点。

    一致性算法

    规定哪些和多少节点可以参与到确认交易之中的各种方法,是一致性算法配置的一部分,并且它们可以帮助确认结果是公共的、私有的还是半私有形式的。数据挖掘可能不会涉及其中,钥匙和签名证书是该功能的一部分。

    早期区块链的发展被诸多对哪种共识是有效的热议困扰,但是随着这些技术的日渐成熟,在2018年之前,这种形式的一致性算法将会成为不断争议的话题。当然,只要这种算法是有效的、安全的,它就会被广泛支持。

    虚拟机

    这是一个被著名JVM(Java虚拟机)方法借鉴的概念,在区块链发展的环境下它是由以太坊发起的。虚拟机 描述了部分处理内部状态和计算的协议。它可以被视为一个巨大的包含数以万计账户信息的分布式计算机(事实上是由几个P2P机器构成),该计算机可以更新内 部数据库,编译代码,同时相互作用。应用智能合约语言编写的程序,可以被编译进虚拟机当中,并且创建你发送包含代码交易的合约。

    历史记录

    交易在连续的数据区块当中被记录(因而形成区块链一词),所以这是一个历史的、只能添加这些持续进行和更新 交易的日志文件。把区块链仅仅看作分布式账目,这是一个谬论,在技术层面上,它不是,但它行使类似职能,因为在数据区块中的连续交易记录等同于分布式账 目。然而,你可以搭建一个基于区块链提供历史记录的不可变分布式账目应用程序。

    状态余额

    比特币并非围绕着账户的概念而设计,尽管账户是一个常用记录交易发生的地方,因为我们同样也习惯于查看我们 的银行交易记录。更深一步来讲,比特币应用了一种名为未消费交易输出(Unspent Transaction Outputs,简称UTXO)的方法,这是一个可以把未消费交易作为输出,并作为新交易中的输入而消费的方法。其他区块链运用不同的方法持续跟踪状态余 额。Ripper网络中的金钱都用“债务”表示,所有交易均表现为账户余额的变化。在以太坊当中,状态是由名为“账户”的对象构成。在每个“账户”当中可 以进行直接的价值和信息之间状态转换。

    image.png

    去中心化的应用程序的编写

    区块链的一致性过程在本质上是去中心化的,这必然催生了新一代的去中心化的应用。一个分布式应用程序可以从技术上、政治上或两者兼有地去中心化。

    现实情况是分布式应用程序不能支持所有情况,同样,不是所有的情况都能有效契合分布式应用程序范例。然而,依然有很多能够适合区块链分布式范例的应用,并且这将意味着对开发者、创新者和远见者而言又多了很多机会。

    分布式应用程序首先要求对所有权、交易需求和逻辑制定它们自己的规则。下面是一些编写分布式应用程序时的复杂规则:

    1.使用加密电子货币(crytocurrentcy)作为支付服务的货币单位。

    2.使用区块链服务作为一种特性,举例而言就是注册资产或验证其真实性的一个过程,一般通过API得以实现。

    3.在区块链上使用智能合约来运行一些商业逻辑,如果特定条件能满足的情况下可以返回一个特殊值,比如金融衍生品。在该种情况下,将会产生一个其所有权和使用权归属于区块链的数字资产。

    4.用一种更加基础的方式使用区块链,此时应用程序离开区块链将无法行使其职能。一般而言,你将会建立一个以节点方式存在的特殊P2P网络,比如OpenBazaar——一个分布式应用程序。

    5.在没有经济象征或货币单位的情况下,使用你自己的区块链(可以与他人分享)。这就是很多被许可的区块链在企业之中得以运行的原因。

    6.在包含经济象征或货币单位的情况下,使用你自己的区块链(或另一个区块链)去创建价值的经济网络,比如MaidSafe,该系统创造了一个为P2P网络用户提供闲置计算机资源的市场。

    来源:我是码农,转载请保留出处和链接!

    本文链接:http://www.54manong.com/?id=463

    '); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
    '); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
    展开全文
  • 记者日前从上海科学院获悉,上海计算机软件技术开发中心作为合作协议具体任务执行方将联合区块链企业、行业协会等,开展区块链技术的自主创新研发,筹建区块链功能型服务平台。在这里,区块链跨链、区块链沙箱、...

    日前,沪上首个区块链生态谷落户上海市北高新园区市北高新区块链生态谷。记者日前从上海科学院获悉,上海计算机软件技术开发中心作为合作协议具体任务执行方将联合区块链企业、行业协会等,开展区块链技术的自主创新研发,筹建区块链功能型服务平台。在这里,区块链跨链、区块链沙箱、区块链芯片一体机等一批关键共性技术,有望取得突破。

    区块链既是数字经济时代的前沿新技术,也是互联网之后的“新基建”中信息基础设施的重要内容。我国区块链技术的起步几乎与国际同步,在技术上没有代际差距,比如区块链一体机,全球至今尚无商用产品。上海科学院上海计算机软件技术开发中心主任张绍华透露,自主可控的区块链底层操作系统、打通已有区块链链条的跨链技术、搭建技术试验环境的沙箱技术、开发区块链芯片和一体机,都已列入研发进程。

    阶段,上海软件中心将进一步联合区块链相关机构,发挥产学研协同创新策源能力和行业龙头企业的“明星”效应,研发突破一批区块链共性关键技术,树立上海乃至全国的区块链生态标杆,为信息基础设施“新基建”和上海数字经济发展提供有力支撑。

    展开全文
  • 点击上方“蓝色字”可关注我们!暴走时评:WordPress正在推出一个由谷歌,以太坊开发工作室ConsenSys等支持的新平台,特别的是这一次将在平台内置区块链工具。新产...
        
    640?wx_fmt=png点击上方“蓝色字”可关注我们!







    640?wx_fmt=jpeg

    暴走时评:WordPress正在推出一个由谷歌,以太坊开发工作室ConsenSys等支持的新平台,特别的是这一次将在平台内置区块链工具。新产品Newspack于周一宣布,是一个并不“昂贵”的平台,为中小型新闻机构提供技术和支持。ConsenSys的代表确认了这次投资,称访问Newspack的新闻室将提供ConsenSys支持的Civil Media的基于区块链功能的选项。

    作者:Yogita Khatri  翻译:Miranda

    WordPress正在推出一个由谷歌,以太坊开发工作室ConsenSys等支持的新平台,特别的是这一次将在平台内置区块链工具。

    新产品Newspack于周一宣布,是一个并不“昂贵”的平台,为中小型新闻机构提供技术和支持。

    谷歌公司投资了120万美元,成为了Newspack的大股东,ConsenSys投资了35万美元。Lenfest新闻学院和John S. and James L. Knight基金会分别投入了40万美元和25万美元。

    周三,CoinDesk向ConsenSys的代表确认了这次投资,并补充说,访问Newspack的新闻室将提供ConsenSys支持的Civil Media的基于区块链功能的选项。

    具体而言,Civi’s Publisher的产品允许新闻编辑室在去中心化的网络上永久存档内容,它将作为插件安装在WordPress平台上,供任何新闻编辑室使用。

    ConsenSys的代表说:“插件还将作为一个门户网站,引导用户如何加入Civil的登记处,社区审查和批准的新闻编辑室的中心,”并补充道,它还将提供“发现门户网站”访问为消费者提供新闻。

    虽然Civil遇到了一些问题,包括它必须重新启动基于代币的筹款活动,但公司协助了一家新闻网站在12月份存档关于以太坊区块链的完整文章。而且,在8月份,美联社宣布将与Civil合作开发基于区块链技术的内容许可。

    本文仅代表作者个人观点,不代表区块链铅笔的立场,不构成投资建议,内容仅供参考。

    640?wx_fmt=jpeg

    3分钟了解什么是区块链?(中文动画)|(英文动画教程

    3分钟了解什么是DAO?(中文动画)|(英文动画教程)

    3分钟看懂以太坊和智能合约?(中文动画)|(英语动画教程)

    3分钟了解比特币挖矿和区块链共识机制?(中文动画)|(英文动画教程)

    3分钟了解公有链和私有链(中文动画教程)|(英文动画教程)

    3分钟了解区块链的六层模型(中文动画教程)|(英文动画教程)

    什么是区块链英文版(动画教程)

    肖风:区块链与另类资产配置

    逐鹿区块链!详解三大巨头BAT区块链战略布局

    麦肯锡报告:区块链对保险行业的影响

    八张图表解读区块链的未来发展

    震惊全球的The DAO黑客事件全程回顾

    Circle获得包括IDG、百度、万向在内6000万美元融资


    关注本公众号后,进入公众号

    回复关键词可以查阅资料,以下是部分关键词


    回复 WEF ,查看《WEF:世界经济论坛认为区块链是互联网金融行业的未来报告》

    回复 智能合约 ,查看《巴克莱银行报告》

    回复 moody ,查看《穆迪120个区块链项目报告》

    回复 SWIFT ,查看SWIFT《区块链对证券交易全流程产生的影响及潜力》报告

    回复 论文11 ,查看论文《可扩展的去中心区块链》

    回复 埃森哲2 ,查看埃森哲《区块链每年可以为投资银行节省120亿美元》报告

    回复 联合国报告 ,查看联合国报告《数字货币和区块链技术在构建社会和可信金融之间扮演的角色》

    回复 用户特性 ,查看普林斯顿大学首本比特币教科书初稿《比特币用户的特性(Characteristics of Bitcoin Users)》

    回复 普林斯顿 ,查看普林斯顿大学首本比特币教科书初稿《比特币和数字货币技术(Bitcoin and Cryptocurrency Technologies)》

    回复 IMF,查看国际货币基金组织报告《Virtual Currencies and Beyond: Initial Considerations》

    回复 DTCC ,查看美国存管信托清算公司报告《DTCC: 拥抱分布式》

    回复 广发 ,查看报告《科技前沿报告:区块链:正快速走进公众和政策视野》

    回复 川财1 ,查看报告《川财证券:区块链技术调研报告之一:具有颠覆所有行业的可能性》

    回复 川财2 ,查看报告《川财证券:区块链技术调研报告之二:区块链技术进化论-区块链技术的国内实践和展望》

    回复 桑坦德 ,查看桑坦德银行报告《The Fintech 2.0 Paper: rebooting financial services》

    回复 拜占庭 ,查看《拜占庭将军问题详解》

    回复 论文1 ,查看论文《比特币闪电网络:可扩展的离线即时支付》

    回复 论文2 ,查看论文《比特币骨干协议》

    回复 论文3 ,查看论文《数字货币是否应该进入Barbados央行国际储备货币组合中》

    回复 帮助 ,查看本公众号全部关键词列表

    640?wx_fmt=jpeg

    点击下方“阅读原文”查看更多页面出现后再点击“来源”可以查看译文原文链接 ↓↓↓


    展开全文
  • 区块链如何测试?

    2018-03-12 20:56:16
    区块链技术最近热的发紫,大多数的文章都在普及区块链概念。区块链可能会成为未来10年互联应用的一个底层技术,会应用于各行各业的各种项目。比如:商品溯源,传统溯源系统采用集中数据存储数据,其实这样的数据对...

    区块链技术最近热的发紫,大多数的文章都在普及区块链概念。区块链可能会成为未来10年互联应用的一个底层技术,会应用于各行各业的各种项目。比如:商品溯源,传统溯源系统采用集中数据存储数据,其实这样的数据对数据库持有者来说,想怎么修改,就怎么修改,那它的数据可信度有多少?之前甚至出现过某银行储户的资金不翼而飞的情况。既然区块链会易用到各种系统,QA同学当然有必要了解下区块链该怎么测了。小编结合实际整理了下区块链测试相关内容,一起来看看吧!



     

    背景

    区块链的特性回顾:

    • 去中介化/中心化的信任。

    • 稳定性、可靠性、持续性。因为它是一个分布式的网络架构,没有一个中心节点可以被打击或者攻击,所以在整体的技术布置方面有着更强的稳定性、可靠性和持续性。

    • 强安全、共识机制不需要第三方的进入,而是通过一个技术来达到,先前预定的一个技术来达到整个交易的完成。

    • 交易的公开透明和不可篡改性。

    简单概括:去中心化,不可篡改、所有节点公开全账本、账户信息持续可追踪、对等网络,没有上帝角色(系统管理员等)。

     

    技术储备

    一、区块链测试的难点

    区块链测试与传统的软件测试有很大的不同,主要体现在以下几点:

    •  系统边界模糊。传统的软件,不管是是独立的应用程序,还是客户端/服务器模式的应用程序,都有明显的系统边界,可以通过UI用户界面或者客户端去进行测试。区块链底层,则是一个完全去中心化的分布式网络。这个网络有可能跨越多个子网、多个数据中心、多个运营商、甚至多个国家,其边界是模糊的。对于区块链底层的测试,不仅仅是前端API与某个区块链节点之间的测试,还涉及大量区块链节点与节点之间的测试。

    • 故障类型复杂。一般软件故障包括3类:

      1. 宕机故障(Crash Failure);

      2. 宕机-恢复故障 (Crash-Recovery Failures);

      3. 拜占庭故障 (Byzantine Failures)。所谓拜占庭故障,来自一个著名的“拜占庭将军问题”,指系统存在某些恶意节点,用一个形象的比喻就是“叛变的Byzantine将军”。从不同观察者角度看这类节点,表现出不一致的症状,这在需要共识的系统中,往往会导致系统服务失效。

     一般软件最多只需要解决前两种故障,而区块链系统,则需要同时处理所  有的故障,确保系统的可靠运行。

    • 区块链类型不同。区块链本身包含公有链、私有链、联盟链等多种类型,不同类型在管理、用户身份、最大节点数等平台自身特征方面均有不同,测评需要考虑所有的模式,导致测试方案更加复杂。(如下表)

    二、测试点的考量

    根据目前行业发布的白皮书,区块链的评测标准包括:

    技术要求

    区块链相关的落地系统,也可能包括我们熟悉的传统架构软件的测试内容。比如之前某些厂商的带宽共享、共享云,也会有独立的APP支持在线查询管理等;对于区块链底层的测试,则需要掌握的技术包括如下几点:

    1. 首先要掌握密码学的基本知识(例如对称加密、非对称加密、数字签名的原理);

    2. 理解数据结构中的链表概念,树的概念;

    3. 区块链的交易记账模型(如何实现转账的,如何避免双花的,如何实现所有权验证的);

    4. 若是基于以太坊代码做,那还得理解虚拟机运行原理;

    区块链项目重点测试如下内容:

    1. 转账,向单/多签名地址转账,向脚本转账;

    2. 如果对币的机制有修改,双花攻击测试;

    3. 智能合约功能及安全测试;

    4. 打包及交易确认效率。

    其实,任何软件的测试,都是可以基于“输入-输出-行为”模型(又叫IBO模型)来做测试分析和设计。

     

    业务场景及性能测试

    一、 业务场景

    我们以金融业务为例,通常分为实施业务、和非实时业务,两种业务的特点在于:

    1. 实时业务:秒级支付、私有链、无单点故障和高扩展性;

    2.  非实时业务:去中心化、联盟链、防篡改、数据零丢失;

    具体如下图:

    二、关于性能测试的一些思考

    对于性能评测部分,主要关注一下4个指标:

    对于不同的性能指标,几点思考:

    •  延迟:P2P系统中都是虚拟链接,实际路由可能每次都不一样。

    •  共识率:系统中设定一些节点,故意篡改释放假数据,看是否成功。

    • 吞吐率:检查矿工的效率,即整个系统每秒的有效交易数。

    • 目前性能评测中,常见的是脱离网络规模和区块大小谈每秒交易数(TPS)

      1. 实际中,网络规模越大,需要达成共识的节点越多,达成共识的进度,越慢,吞吐量(TPS)就越低

      2. 区块越大,可扩展性越大,吞吐量可能发生抖动,大概率是变低。

         

    结束语

    目前对于区块链的测试内容上,短期还会出现针对不同行业的差异性,但最终会走向融合和统一。测试手段上,也将随着时间逐步由人工测试,转向自动化测试,有周边的功能深入到底层。

    参考文献:

    1. 区块链测评概览https://www.jianshu.com/p/7d88c4176d4c

    2. 区块链成熟度评测报告https://www.jianshu.com/p/45e0eef2f34c

    3. 嘿丫科技_程文彬的对话整理         

    展开全文
  • 区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的技术实现。 无论你擅长什么编程语言,都能够参考...

    前言

    区块链作为一种架构设计的实现,与基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的技术实现。

    无论你擅长什么编程语言,都能够参考这种设计去实现一款区块链产品。与此同时,梳理与之相关的知识图谱和体系,帮助大家系统的去学习研究。

    基本概念

    区块链的概念最近很火,它来自于比特币等加密货币的实现,但是目前,这项技术已经逐步运用在各个领域。什么是区块链技术?为了感性认识这个问题,我们可以使用谷歌地球的例子做类比,ajax不是什么新技术,但组合在一起就成就了产品谷歌地球,与之类似,区块链也不是什么新技术,但与加密解密技术、P2P网络等组合在一起,就诞生了比特币。技术人员,特别是Web开发工程师,学习了解ajax技术最早是被谷歌地球酷炫的效果所吸引。而现在,历史再一次重演,很多人被比特币的疯狂发展所吸引,进而开始研究其背后的技术——区块链。

    区块链原本是比特币等加密货币存储数据的一种独特方式,是一种自引用的数据结构,用来存储大量交易信息,每条记录从后向前有序链接起来,具备公开透明、无法篡改、方便追溯的特点。实际上,这种特性也直接体现了整个比特币的特点,因此使用区块链来概括加密货币背后的技术实现是非常直观和恰当的。区块链是一项技术,加密货币是其开发实现的一类产品(含有代币,也有不含代币的区块链产品),不能等同或混淆。与加密货币相比,区块链这个名字抛开了代币的概念,更加形象化、技术化、去政治化,更适合作为一门技术去研究、去推广。

    所以,目前当大家单独说到区块链的时候,就是指的区块链技术,是实现了数据公开、透明、可追溯的产品的架构设计方法,算作广义的区块链。而当在具体产品中谈到区块链的时候,可以指类似比特币的数据存储方式,或许是数据库设计,或许是文件形式的设计,这算作狭义的区块链。广义的区块链技术,必须包含点对点网络设计、加密技术应用、分布式算法的实现、数据存储技术的使用等4个方面,其他的可能涉及到分布式存储、机器学习、VR、物联网、大数据等。狭义的区块链仅仅涉及到数据存储技术,数据库或文件操作等。本文的区块链,指的是广义的区块链。

    架构图

    从架构设计上来说,区块链可以简单的分为三个层次,协议层、扩展层和应用层。其中,协议层又可以分为存储层和网络层,它们相互独立但又不可分割。如图:
    这里写图片描述

    协议层

    所谓的协议层,就是指代最底层的技术。这个层次通常是一个完整的区块链产品,类似于我们电脑的操作系统,它维护着网络节点,仅提供Api供调用。通常官方会提供简单的客户端(通称为钱包),这个客户端钱包功能也很简单,只能建立地址、验证签名、转账支付、查看余额等。这个层次是一切的基础,构建了网络环境、搭建了交易通道、制定了节点奖励规则,至于你要交易什么,想干什么,它一概不过问,也过问不了。典型的例子,自然是比特币,还有各种二代币,比如莱特币等,本书介绍的亿书币也是。这个层次,是现阶段开发者聚集的地方,这说明加密货币仍在起步当中。

    从用到的技术来说,协议层主要包括网络编程、分布式算法、加密签名、数据存储技术等4个方面,其中网络编程能力是大家选择编程语言的主要考虑因素,因为分布式算法基本上属于业务逻辑上的实现,什么语言都可以做到,加密签名技术是直接简单的使用(请看书中相关的加密解密文章,不建议自由发挥,没有过多的编码逻辑),数据库技术也主要在使用层面,只有点对点网络的实现和并发处理才是开发的难点,所以对于那些网络编程能力强,对并发处理简单的语言,人们就特别偏爱。也因此,Nodejs开发区块链应用,逐渐变得更加流行,Go语言也在逐渐兴起。

    上面的架构设计图里,我把这个层面进一步分成了存储层和网络层。数据存储可以相对独立,选择自由度大一些,可以单独来讨论。选择的原则无非是性能和易用性。我们知道,系统的整体性能,主要取决于网络或数据存储的I/O性能,网络I/O优化空间不大,但是本地数据存储的I/O是可以优化的。比如,比特币选择的是谷歌的LevelDB,据说这个数据库读写性能很好,但是很多功能需要开发者自己实现。目前,困扰业界的一个重大问题是,加密货币交易处理量远不如现在中心化的支付系统(银行等),除了I/O,需要全方位的突破。

    分布式算法、加密签名等都要在实现点对点网络的过程中加以使用,所以自然是网络层的事情,也是编码的重点和难点,《Nodejs开发加密货币》全书分享的基本上就是这部分的内容。当然,也有把点对点网络的实现单独分开的,把节点查找、数据传输和验证等逻辑独立出来,而把共识算法、加密签名、数据存储等操作放在一起组成核心层。无论怎么组合,这两个部分都是最核心、最底层的部分,都是协议层的内容。

    扩展层

    这个层面类似于电脑的驱动程序,是为了让区块链产品更加实用。目前有两类,一是各类交易市场,是法币兑换加密货币的重要渠道,实现简单,来钱快,成本低,但风险也大。二是针对某个方向的扩展实现,比如基于亿书侧链,可为第三方出版机构、论坛网站等内容生产商提供定制服务等。特别值得一提的就是大家听得最多的“智能合约”的概念,这是典型的扩展层面的应用开发。所谓“智能合约”就是“可编程合约”,或者叫做“合约智能化”,其中的“智能”是执行上的智能,也就是说达到某个条件,合约自动执行,比如自动转移证券、自动付款等,目前还没有比较成型的产品,但不可否认,这将是区块链技术重要的发展方向。

    扩展层使用的技术就没有什么限制了,可以包括很多,上面提到的分布式存储、机器学习、VR、物联网、大数据等等,都可以使用。编程语言的选择上,可以更加自由,因为可以与协议层完全分离,编程语言也可以与协议层使用的开发语言不相同。在开发上,除了在交易时与协议层进行交互之外,其他时候尽量不要与协议层的开发混在一起。这个层面与应用层更加接近,也可以理解为B/S架构的产品中的服务端(Server)。这样不仅在架构设计上更加科学,让区块链数据更小,网络更独立,同时也可以保证扩展层开发不受约束。

    从这个层面来看,区块链可以架构开发任何类型的产品,不仅仅是用在金融行业。在未来,随着底层协议的更加完善,任何需要第三方支付的产品都可以方便的使用区块链技术;任何需要确权、征信和追溯的信息,都可以借助区块链来实现。我个人觉得,这个目标应该很快就能实现。

    应用层

    这个层面类似于电脑中的各种软件程序,是普通人可以真正直接使用的产品,也可以理解为B/S架构的产品中的浏览器端(Browser)。这个层面的应用,目前几乎是空白。市场亟待出现这样的应用,引爆市场,形成真正的扩张之势,让区块链技术快速走进寻常百姓,服务于大众。大家使用的各类轻钱包(客户端),应该算作应用层最简单、最典型的应用。很快,亿书将基于亿书网络推出文档协作工具,这个就是典型的应用层的产品。

    限于当前区块链技术的发展,亿书只能从协议层出发,把目标指向应用层,同时为第三方开发者提供扩展层的强大支持。这样做既可以避免贪多,又可以避免无法落地,是真正理性的开发路线。因为纯粹的开发协议层或扩展层,无法真正理解和验证应用层,会脱离实际,让第三方开发者很难使用。如果仅仅考虑应用层,市面上又找不到真正牢固、易用的协议层或扩展层的产品。所以,我们只好全面发力,采取完全开源开放的态度,通过社区的力量,共同去做一件有意义的事情,也算为中国区块链技术发展做点技术积累和微薄贡献。

    编程实现

    很多小伙伴,习惯结合自己的技术背景,来理解上面的架构设计。这里,结合具体的编程语言,简单介绍几款产品,仅供参考。

    (1)C/C++
    这两个语言是无法逾越的,任何开发遇到瓶颈,基本上都会找到它们,自然应该排在第一位要介绍的。同时,区块链技术的鼻祖,比特币(协议层)就是用C++语言开发的,而且目前为止,没有比比特币更加成功的区块链产品。所以,无论你使用什么语言开发,在正式进入这个行业的过程中,都应该先研究研究比特币。比特币官方客户端钱包用的Qt,第三方钱包有Python语言开发的,特别是第三方整理的开发库(Api包)很多是Nodejs设计的。比特币的架构,与上面的架构设计基本相同,另外,因为共识算法采用的是工作量证明机制(PoW:Proof of work),还有一些特殊的挖矿的过程。其他竞争币都是直接来自比特币的分支,所以编程语言相同,具体的技术选型和技术实现上可能有所改进,比如:莱特币,使用了其他的加密算法。

    官方网站:https://bitcoin.org/

    源码库:https://github.com/bitcoin

    (2)Nodejs/Javascript
    Nodejs平台强大的网络编程能力,以及js脚本语言的简单快捷,在区块链领域自然少不了它的身影。亿书便是这样一个区块链产品,亿书币是它的协议层,使用了著名的express开发框架,基于http协议开发而成。同时,它采用了授权股权证明机制(DPoS),算法上的改进,让它在处理交易时更加轻量,处理能力大大提升。它提供了强大的协作机制,为数字出版、版权保护提供了便利;扩展了侧链功能,可以基于它开发任何去中心化的应用,从而为专业作者、博客爱好者和开发者提供很多方便。《Nodejs开发加密货币》这本书完整分享了它的源码,从区块链基础概念到代码实现,从基本原理到开发设计思路,都做了比较详细的探索,目前为止,从协议层面深入代码讲解区块链技术实现的书籍极少,这算作一本。

    官方网站:http://ebookchain.org/

    源码库:https://github.com/Ebookcoin

    (3)Python
    如果是Python语言爱好者,我建议研究研究以太坊(Ethereum)的Python实现。尽管因为The Dao事件闹得沸沸扬扬,但从技术实现的角度来说,仍然值得参考学习。以太坊官方定位为一种开发管理分布式应用的平台,主攻方向就是“智能合约”,并为其定制了一种编程语言Solidity。以太坊的核心是以太坊虚拟机(EVM),允许用户按照自己的意愿创建操作。以太坊给出了Go、Java、Python等多语言的实现。其中以python为基础的实现主要包括三个部分:Pyethapp是客户端部分;pyethereum是核心库,实现了区块链、以太坊模拟机和挖矿等功能;pydevp2p是点对点网络库,实现了节点发现、合约代码传输、加密签名等功能,这三者组合在一起就是完整的区块链实现,后面两个核心库共同组成了协议层。另外,go-ethereum是go语言的完整实现;Ethereum(J) 是纯Java实现,它作为可以嵌入任何Java/Scala项目的库提供。客户端方面,还有Rust、Ruby、Javascript等语言的实现。

    官方网站:https://ethereum.org/

    源码库:https://github.com/ethereum/pyethapp

    (4)Go
    在多核时代,Go语言备受喜爱,它可以让你用同步方式轻松实现高并发,特别是在分布式系统、网络编程等领域,应用非常广。所以,在区块链开发领域,也有很多使用Go语言的项目。其中,由linux基金会主导的超级账本(HyperLeger),版本库的名字叫Fabric,就是其中一个。该项目试图为新一代的事务应用创建一种开放的分布式账本标准,支持许可式区块链(这种方式可能无法再现比特币那种强大的网络效应)。Fabric的开发环境建立在VirtualBox虚拟机上,部署环境可以自建网络,也可以直接部署在BlueMix上,部署方式可docker化,支持用Go和JavaScript开发智能合约。它采用PBFT分布式算法,网络编程方面用gRPC来做P2P通讯,使用 Protocol Buffer来序列化要传递的数据结构。在架构设计上,Fabric可能与比特币等区块链产品有所不同,但是上述基本组成部分还是不可或缺的。

    官方网站:https://www.hyperledger.org/

    源码库:https://github.com/hyperledger
    其他编程语言,比如:C#等,也有具体实例,这里就不再列举。总之,针对不同的编程语言,在具体的编码或架构设计上可能有所差别,甚至很大,但是协议层所使用的技术并没有太大的变化。其中,网络编程是重点和难点,多数没有现成的框架可用,都是使用编程语言自身提供的库来设计开发,所以比较底层,非常考验开发者的编码功底。

    知识图谱

    循着上面的分析,我们已经可以了解区块链是什么,并知道怎么实现了,顺便梳理一下其中的编程技术知识,自然也就清晰多了。
    这里写图片描述
    根据个人的理解,我把与区块链相关的知识分为下面5个方面:

    (1)基础知识

    区块链是新技术,与之相关的是其背后大量的新概念、新理论。这些知识,虽然不直接体现在编码里,但却是理解区块链,掌握区块链技术的基本知识。所以,理当成为区块链技术不可或缺的一部分。这部分从基本概念入手,到工作原理的描述,就能够把区块链基础知识全部覆盖。

    (2)技术实现

    区块链是一项技术,但从上面的分析可以看出,它应该是一种架构应用,架构的实现理当是我们知识库的核心。正如大家看到的,任何一款区块链产品,协议层必须包括点对点网络、加密签名、数据存储、分布式算法等4个部分,应用层也必然要提供钱包、客户端浏览器等基础应用。所以,把这部分独立出来,也是合情合理。

    在扩展层的部分,区块链技术可以对接各种应用,比如:金融、物联网、网络安全、版权保护、电子商务等等,现有的很多技术都可以用在这里。只不过,如何与区块链结合,如何实现跨行业使用,自然是这部分内容研究的课题。所以,这里所罗列或涉及到的技术,理应归为技术实现的一个重要部分。

    (3)开发环境

    区块链是多项技术的组合,有其自身的复杂性,个别应用对开发环境依赖较大,开发工具与环境搭建,是让开发者快速上手的重要内容。

    (4)项目实践

    据说,短短数年,全球区块链产品已经有几千个,其中不乏创新应用。有些优秀的开源产品和项目实践,是最好的学习研究资料。

    (5)开发文档

    这个自然不用说了,每一种产品也都会有自己的开发文档。另一个,就是有心的开发者整理汇总的一些资源,可以帮助我们节省很多查询的时间。

    我在考虑这个知识体系的过程中,主要思考的是,读者循着这些标签去查阅文章,能否快速掌握区块链技术,并最终上手开发实现一个区块链产品。另外,也刻意规避了与具体编程语言,以及特定领域相关的词汇,唯一可以区分的就是这些节点之下对应的文章标签。所以,这些分类就显得非常中性。也考虑过使用比特币、竞争币、智能合约、数字资产、智能资产等具体领域的实现作为分类方法,但又怕限制了读者的思维,同时随着区块链的发展,这个图谱将不停的修改下去。这里,呼吁一下,希望读到这篇文章的小伙伴提供您的宝贵意见,让我们把这个关于区块链的知识分类图谱做得更加科学合理,使用更加方便。

    总结

    这篇文章,我们把区块链技术基础架构描述了一下,需要再次强调的是,这仅仅是一种实现方式,绝非所有的区块链产品都是如此,我们也期待更多创新出现,也相信一定会出现。编程实现罗列了几种编程语言与其实现的典型产品,因为协议层技术较为底层,并没有太多现成的框架需要介绍或讨论,同时,具体的技术细节,也绝非几行字能够罗列清楚,所幸,这些产品都是开源产品,大家可以结合自己的技术背景,进一步查看对应的产品源码,很快就能了解其中的奥妙。

    转自:http://www.8btc.com/ebook-blockchain

    展开全文
  • 目前国内越来越多的人开始关注区块链在会员生态权益通证系统领域的应用。 积分体系作为保持用户忠诚度和活跃度的有效营销手段之一,一直被广大企业所认可。但传统的积分体系分布零散,且渠道封闭,消费者对此是又爱...
  • 区块链中的模块

    2018-11-30 15:59:43
    Hyperledger Fabric Model 本节概述Hyperledger Fabric中的一些关键设计的特性,这些特性提供了一套它全方位的、可定制的、企业级的解决方案。 1.资产:资产的定义确保了在网络之间可以通过货币进行交换,从整个的...
  • 区块链介绍

    2018-02-02 18:06:22
    一、区块链的本质 区块链是什么?一句话,它是一种特殊的分布式数据库。 首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。 其次,任何人...
  • 前言区块链的概念已经在国内传播两年多了,越来越多的人开始了解区块链的原理、架构和开发技术。同时,区块链相关的项目也是层出不穷。但是,除了比特币,还没有消费级的产品出现。现在,区块链领域在快速发展,国内...
  • Startcrowd产品已经启动 (暂时还没有开通区块链功能)。平台上目前的项目涵盖了智能农业 、 绿色能源、药物开发等人工智能的各种应用。 还有基础研究方面的项目,例如将波尔兹曼机器和遍历理论结合起来的研究。 更...
  • 区块链技术工坊36期】基于“GS1+区块链”的药品疫苗溯源案例解析 2)议题: 疫苗安全问题已是迫切需要解决的民生问题,国家食药监总局暂停执行药监码,药企及相关上下游必须要具备药品可追溯能力,来继续满足...
  • 过去两年,区块链行业的技术类公司发展都很快,并逐渐从技术实现进入到功能落地,特别是在改善区块链功能以及商业应用方面,有很多令人兴奋的新项目。 我通过搜索研究以及业内朋友推荐,将区块链项目的市场格局分成...
  • 而前不久先达“区块链技术开发+会员生态系统”的思路就给未来商业提出了突破性建议。  传统会员制度有哪些弊端?    传统会员制度的弊端有4种:    1.对用户:认证步骤繁杂,用户体验差 ...
  • 记者日前从上海科学院获悉,上海计算机软件技术开发中心作为合作协议具体任务执行方将联合区块链企业、行业协会等,开展区块链技术的自主创新研发,筹建区块链功能型服务平台。在这里,区块链跨链、区块链沙箱、...
  • 1. 什么领域适合区块链技术? 在现阶段区块链适合的场景有三个特征: 存在去中心化、多方参与和写入数据的需求; 对数据真实性要求高的场景; 初始情况下相互不信任的多个参与者建立分布式信任的需求; 2. 区块链...
  • 试验中使用的是开放式资产议定书,按常规部署了彩色币,提供了额外的比特币区块链功能层。通过使用开放式资产,比特币可以进行特殊标记,在区块链上表示其他的资产。 根据3月8日的新闻稿,试验的参与者包括日本IT...
  • 区块链的模型结构

    2019-06-11 22:34:19
    关于区块链的模型结构问题,行业内已经谈论千万遍了,基本上已经成为一种定义式的问题了。总体上来看,区块链的基础架构可以分为六层,包括数据层、网络层、共识层、激励层、合约层、应用层。每一层分别完成一项核心...
  • 区块链积分系统前端功能模块,excel版本,可以看到前端功能拆分。对有志做区块链系统的研发人员来说,善莫大焉
  • 在这里大概列举了一下,对于一个区块链系统可能包含的多种模块 这些是一个区块的基础系统的一个架构组成 它包含这些核心节点,核心节点里面,就是一些基础技术栈,或者说是核心技术栈的一些实现 账户、网络、账本...
  • 人工智能代表先进的生产力,区块链代表先进的生产关系。 在整个历史的尺度上,生产力发展水平要求生产关系与之相适应。但以人的生命为尺度,每个人在其一生中能够实实在在感受到的,是生产关系对于生产力发展强烈的...
1 2 3 4 5 ... 20
收藏数 40,198
精华内容 16,079