区块链编程完全指南:平台、语言与结论
区块链,代表着未来的发展方向。是的,在文章开头,我们首先给出这样的结论。当然,认定未来将围绕这一新兴技术而延拓绝不是什么牵强附会。区块链最初是一种公开且不存在准入限制的技术,但随着后续发展又有新的类型逐步出现,而且每种区块链都有着自己特定的用例集合。公开/无准入区块链的特征包括开放、去中心化以及速度缓慢,而私有/准入型区块链则采取部分或者完全封闭的集中管理方式。
通过今天的文章,我们将共同探讨需要学习哪些知识才能立足区块链技术开发应用程序。当我本人(原文作者)刚刚开始学习区块链时,跟大家一样,我也觉得脑袋里塞满了模糊而难解的疑问。区块链分为哪些不同类型?我应该使用哪种编程语言进行高效编程?区块链又有哪些可选的开发平台?别急,这些问题都将在今天的文章中一一得到解答。
下面,就让我们从编程语言开始,逐步了解如何开发出能够充分运用区块链技术优势的应用成果。
区块链编程类型 区块链架构编程在区块链发布之前,开发者首先需要解决构成其架构与协议的各项重要功能,而功能自然必须使用代码来编写。举例来说,在2009年正式发布之前,比特币项目的管理规则与条款是使用C++编写的。这方面编码工作通常使用C及Java等语言来完成,其特点就是表达方式更接近于机器的处理习惯。
构建智能合约,或者去中心化应用(简称DApp)在一般的中心化应用程序当中,后端代码运行在中央服务器之上;与此不同,DApp的后端代码则在去中心化的对等网络中运行。与其它应用程序一样,DApp也能够使用任意语言及用户界面进行前端代码编写,并直接调用后端提供的功能。
常见区块链编程平台Hyperledger
Hyperledger实际上是开源区块链领域的一个总集类项目,旨在推进相关技术发展,并通过自身引导发布相关工具、培训与活动,从而支持全球区块链分布式分类账的协同开发工作。该项目的目标在于提供模块化区块链技术,其中也包括各类丰富且易于使用的应用程序编程接口(简称API)。Hyperledger能够显著降低安全风险,并确保只有希望参与交易的各方才能加入到交易过程中来。总而言之,Hyperledger能够提供区块链架构、数据隐私保护、信息共享以及不可变性等全部与区块链密切相关的功能。
以太坊以太坊是一套开源区块链平台,用于开发可运行在区块链技术之上的去中心化应用或者DApp。以太坊区块链平台提供强大的脚本或脚本合约支持能力,并将其运行在自身网络的各节点当中。以太坊不仅能够追踪交易活动,还可以对其进行编程。目前以太坊提供多种编程语言选项,具体包括C++、Go、Python以及Java等。智能合约则需要使用Solidity构建,这是一种面向合约的高级编程语言。
五大常用区块链编程语言
1. C++下面让我们从清单当中最古老、也最受推崇的语言——编程语言界的常青树C++开始。相信大家都很清楚,C++语言属于C语言的扩展方案。在C++中,我们可以创建数据、函数与对象包,并在其它程序中轻松对其进行调用与复用,这将大大缩短编码的时间周期。
然而,考虑到当前可选择的高级语言多种多样,我们为什么还要使用C++?
简单来讲,这是因为C++具有某些无法替代的特性,并因此获得了强大的吸引力。考虑到区块链开发中的种种挑战,我们可以将理想的区块链开发成果视为一种安全堡垒,同时要求其提供高效的资源管理能力。区块链需要与诸多不受信任的节点进行交互,同时确保能够为一切节点提供快速服务。更重要的是,服务的快速性往往直接决定着加密货币项目的命运。因此,开发人员必须面对资源需求争用问题并将核心功能设定为最高优先级,这就要求大家必须完全控制CPU与内存资源的使用——重点来了,C++能够帮助用户很好地实现这一目标。
C++的另一大有趣之处,在于其具备move语义。Move语义提供了一种在不同对象之间进行内容移动,而非内容复制的方法。Move语义的优势在于,我们可以仅在必要时才获取某些数据的副本,这将显著减少代码冗余进而提高性能水平。因此,C++所代表的内存管理与强大性能表现恰好契合区块链技术的实际应用需求。
在区块链编程方面,我能想到的另一个重要挑战,在于如何将并行化任务与非并行化任务整合起来。大多数语言往往只专注于其中一种,但C++的线程化能力使其能够同时应对并行与非并行任务。C++允许多线程设施实现高效的线程间通信,同时对其中的单线程性能做出优化。
C++的优势与短板 C++区块链用例C++语言主要用于加密货币以及其它一些重要的区块链项目,包括比特币、Ripple、Bitcoin cash、Litecoin、Stellar以及Monero。
2. JavaScript中国观察