Erlang语言在区块链编程中的扮演什么角色

澳门新葡亰平台9411 9

随着区块链技术的出现,我们见证了越来越多人开始对去中心化应用感兴趣。区块链平台开发中常用的编程语言是面向对象语言。到目前为止,C
++,Python和专用的Solidity等语言在区块链技术中占主流。在构建Dapps时,函数式编程语言迅速获得开发人员的青睐,因为该类语言在很大程度上影响项目功能,并且能够使项目具有重要的相对优势。以下内容中,我们将讨论为什么函数式编程语言,尤其是Erlang,一种特别适用于开发分布式账本协议和智能合约的编程语言。为什么选择函数式编程语言?函数式编程语言在某些领域的权衡优于其他编程语言。Erlang特别适用于构建强大的后端或是构建多用途计算系统——实际上,90%的互联网流量目前通过Erlang运行节点进行路由。该语言具有可扩展性,高可用性和可以实时响应。有效的区块链系统需要在保持去中心化的同时实现扩大规模——过去非常困难。传统上要实现可扩展性,就必须以少数特定方处理信息和以“轮辐式(hub
and
spoke)”传输给卫星节点为代价。在区块链生态系统中的点对点网络中,每个节点要与他节点具有同样的处理功能。Erlang具有固有容错,大大减轻了处理负担——即使在某些操作失败的情况下,也允许进程继续运行,从而大大增加了整个系统正常运行时间(代码可热转换,意味着在运行时可以实时更新操作)。强大的模式匹配功能和内置功能确保可以构建和执行简洁紧凑的逻辑,并且由于函数式编程中的变量不可变,因此更容易预测和减少错误。当然,语言熟悉度同样是开发人员选择一个语言在系统上构建区块链的原因之一——Erlang支持与Rust,C和C
++等编程语言接口。Erlang语言的优势:构建效率从一开始,区块链开发人员就对Erlang引入的功能非常感兴趣。函数式编程语言的优势在分布式系统中非常明显。在分布式系统中,数百上千台不同的机器需要不断地传递信息。Python或Java等面向对象语言利用数据结构(“对象”)来聚合数据和行为,但为了实现清晰度,函数式语言将这些数据结构(“对象”)分开。此外,OOP语言中的数据通常是可变的,而函数式语言中的数据不可变。Erlang是一种优秀的编程语言。在开发后端系统时,特别需要:大量并发执行的活动、实时响应、不间断运行和容错。区块链的函数式编程语言正成为强大协议和智能合约脚本的首选工具(Cardano和Tezos都选择了这种语言)。许多好的团队用函数式编程语言创建区块链。有些团队是部署现有区块链,有些则是根据广泛采用的原则设计新的区块链。

区块链最初是一种公共、非许可型的技术,随着后来其它类型区块链的引入,每种区块链都有了自己特定的适用场景。公共非许可型的区块链是开放的、去中心化的,但速度很慢,而私有许可型的区块链则是部分或完全封闭和集中的。在本文中,我们将讨论构建基于区块链技术的应用程序需要学习什么内容?例如,不同类型的区块链之间有什么异同?采用哪种编程语言才能进行高效的区块链开发?采用哪个平台进行区块链开发?区块链编程的类型基于区块链架构的编程在一个区块链应用发布之前,其体系结构和所采用的协议等重大功能都必须稳定下来,而这些功能都是需要使用代码来实现的。例如,在
2009 年比特币发布之前,就先用 C++
实现了比特币的规则和条款。通常,像这样的区块链应用都会采用 C 和 Java
等语言来完成,因为这类语言更接近机器语言。构建智能合约或去中心化应用程序(DApp)在普通的中心化应用程序中,服务端代码通常在中心服务器上运行,而去中心化应用的服务端代码则在去中心的对等网络中运行。像其他应用程序一样,去中心化应用也可以使用任何语言来编写其前端代码,并通过用户界面来调用其服务端程序。当前流行的区块链编程平台Hyperledger(超级账本)Hyperledger
是一款开源的区块链项目,旨在推进区块链技术的发展,它提供了相关的工具、培训和活动,用以支持基于区块链的分布式账本的协同开发。其目标是提供模块化的区块链技术,其中包含丰富的、易用的应用程序编程接口(API)。Hyperledger
在一定程度上降低了交易的安全风险,确保了只有其想要参与交易,那么他才会是该交易的一部分。Hyperledger
提供了区块链架构、数据隐私、信息共享和数据不变性的所有功能。Ethereum(以太坊)Ethereum
是一个开源的区块链平台,用于开发基于区块链技术的去中心化应用程序。Ethereum
区块链平台有助于区块链脚本和智能合约的编写,通过网络中的节点运行,不仅可以用来追踪每一次交易,还可以对它们进行编程。Ethereum
可选择多种编程语言来进行编程,例如 C++、Go、Python、Java
等,该平台下智能合约是使用 Solidity 构建的,Solidity
是一种面向合约的高级编程语言。区块链编程语言 Top 5C++
让我们从最具历史、最受推崇的语言——C++ 开始,几乎所有人都知道 C++ 是 C
语言的扩展。在 C++
中,若创建了一个变量、函数或对象,就可以在其他程序中轻松的调用并复用,可以大大减少编程时间。但是现在已经有很多高级语言了,为什么还要用
C++ 呢?因为 C++
具有的某些特性仍然很吸引人,考虑到区块链开发要面临的诸多挑战,其应用更应该像是一个堡垒,同时还要兼备高效的资源管理特性,区块链应用不仅要与许多不被信任的节点进行交互,同时还要为每个节点甚至是所有节点提供快速服务。尤其是对加密货币来说,这种快速服务更是至关重要。要满足所有这些需求并能在最高优先级执行,你需要能完全控制
CPU 和内存的使用,而 C++ 刚好就能够满足用户这方面的需求。C++
另一个有趣的地方是移动语义(move
semantic)。移动语义提供了一种在对象之间移动内容而不是复制内容的方法。移动语义的优点是:只有在需要时才会获得某些数据的副本,通过减少代码冗余来提高性能。而高效的内存管理和高性能都是区块链开发所必须的特性。除此之外,区块链编程的挑战还包括并行任务和非并行任务的集成。可以想到的另一个关于区块链编程的挑战是并行任务和非并行的任务的集成。大多数编程语言只擅长其中一种,但是,C++
语言的线程能力使其可以同时处理并行和非并行任务。C++
语言允许多线程任务进行有效的线程间通信,并优化了单线程处理的性能。C++
的优点和缺点基于 C++ 语言的区块链开发案例C++
主要用于加密货币和重要的区块链项目,如比特币,Ripple,Litecoin,Stellar
和 Monero 等。JavaScriptJavaScript
是目前最流行的软件开发语言之一。JavaScript
语言及其相关的库和框架,例如:jQuery、React、Angular 和
Node.js,是推动现代 Web 开发技术快速发展的引擎。JavaScript 通常与 HTML
和 CSS 一起,用以增强 Web 在行为交互方面的功能,当前 JavaScript
主要用于创建交互性强的网页。JavaScript
非常擅长处理异步操作,这一主要特性使得它非常适用于区块链开发。随着区块链上的用户数量的增加,所有的操作都需要同时执行,JavaScript
可以更轻松地处理不同区块链节点之间的通信。但同时我们也不能否认,在最大化的密集计算处理能力方面
JavaScript 不如 C++ 高效。JavaScript 的优点和缺点基于 JavaScript
语言的区块链开发案例区块链开发人员可以在 web3.js 和 ethereum.js 中使用
JavaScript,用来构建应用程序的前端,用以连接以太坊网络和智能合约。
另外在区块链中经常采用 JavaScript 语言的是基于 node.js 平台的
Hyperledger Fabric SDK,这是一个在 IT
行业和企业中经常使用的大型框架。PythonPython
是一种相对现代的编程语言,通常是新程序员的最爱,因为它语法简单,可以在服务器上创建基于
Web
的应用程序,还可以用来连接数据库系统,也可以处理大数据并执行复杂的数学运算。Python
最吸引人的地方是它通过“另起一行”来作为命令的结束标识,而不像其他编程语言使用分号或括号。无论你采用哪一种区块链平台进行开发,都不能忽略
Python 的存在,因为几乎每个区块链的生态系统中都有一个或多个用 Python
编写的公共工具。Python 已经成为区块链领域中的流行编程语言。Python
的优点和缺点基于 Python 语言的区块链开发案例在区块链领域,Python 用于为
Hyperledger 编写智能合约,除此之外还有许多其他的项目也采用了 Python,如
Ethereum(pyethereum)也有自己的 Python 实现。同时 Python 也被用来为 NEO
创建智能合约,这是一个基于社区的非营利性区块链项目。GoGoLang,俗称
Go,是谷歌公司于 2007 年开发的一种相对现代的领域通用语言,并于 2012
年面向公众开放。它是一种静态类型的语言,语法有点类似于 C
语言。作为一种健壮的、多用途的语言,Go 试图将现代高级语言 (如 Python 和
JavaScript) 的语法和用户友好性与 C 语言的性能和安全优势结合起来。Go
是一种编译语言,提供了丰富的标准库。当你在区块链项目的多个组件中使用 Go
语言时,该特性将为你带来最大的灵活性。在 Go 中,名为 Goroutines
的方法提供了异步或并行运行多个程序的能力,这也是区块链项目所需要的一个重要的特性。而在
Java 和其他语言中往往会使用线程来实现该特性。Go 的优点和缺点基于 Go
语言的区块链开发案例区块链领域有很多与 Go
语言相关的项目,其中包含一些很受欢迎的项目,例如 Go-Ethereum 是 Ethereum
的 Go 语言实现,也是基于 Go 语言的最重要的项目之一。用 Go
语言实现的另一个重要项目是 Hyperledger
Fabric,它是大公司中最受欢迎的区块链解决方案之一。另一个是去中心化在线游戏项目
Loom Network,它采用 Go 语言实现了其链码。SoliditySolidity 是由 Ethereum
团队(Gavin Wood,Christian Reitwiessner 等)开发的一款类似于 JavaScript
、针对于特定领域、面向对象的高级语言。Solidity 受 C++,Python 和
JavaScript 的影响,为了在 Ethereum
平台的以太坊虚拟机(EVM)上创建去中心化应用程序而设计的。EVM 是在
Ethereum 平台上编写智能合约的运行时环境。Solidity
是一种静态类型语言,支持继承、库和复杂的用户自定义类型。到目前为止,它是
Ethereum 社区和区块链行业中最适合的领域特定语言(DSL)。若要尝试运行
Solidity 的代码示例,可以使用 Remix IDE,这是一款基于 Web 浏览器的 IDE
工具,同时集成 Solidity
的编译器和运行时环境,且没有服务器端组件。你可以在该 IDE 中编写 Solidity
代码并部署和运行智能合约。Solidity 的优点和缺点基于 Solidity
语言的区块链开发案例Solidity
语言主要用于开发以太坊智能合约,目前还没有看到其他项目使用
Solidity,但以太坊生态系统是巨大的,并且也是目前区块链开发中最重要的一部分。Solidity
是用于智能合约开发的最流行的语言之一。总结区块链技术将对每个领域和行业产生巨大的影响。在未来的几个月或者几年中,随着世界变得越来越去中心化,区块链也将被作为主流技术使用,它有着无限的未来。(来源:区块链前哨)

澳门新葡亰平台9411 1

区块链开发是一个迅速壮大的产业,我们正在见证着这个行业的成长。

澳门新葡亰平台9411 ,虽然区块链技术还处于初期阶段,但是这项革命性的技术已经席卷全球,在最近几年经历了前所未见的蓬勃发展。

目前许多资金充沛的项目都渴望搭建自己的区块链网络,并在网络上部署去中心化应用,但是有能力的区块链开发人员严重不足。

澳门新葡亰平台9411 2

区块链项目所用到的七大编程语言

区块链开发行业吸引到了数十亿美元的投资,各项目为了能吸引到市场上最好的区块链人才相互竞价,使得区块链开发人员的薪酬以及对相关人才的需求水涨船高。

这股淘金热可能会让部分开发者好奇他们是否拥有进入这个行业的实力,以及这个新行业中哪种编程语言最受欢迎。几乎所有受欢迎的编程语言在区块链行业中都有用到,但是开发者必须考虑自己要进行哪种类型的开发,因为不同的编程语言适用于不同的区块链项目和应用。

为了便于打算深入这个行业的开发者理解和打好基础,下文简要介绍了不同项目以及它们使用的编程语言。

澳门新葡亰平台9411 3

Solidity

——一种简单的新编程语言,在以太坊开发者中很受欢迎,因为以太坊智能合约的开发使用的就是这种语言。Solidity
是一种合约导向、图灵完备的编程语言,其开发者数目估计超过20万。

由于以太坊在智能合约上抢占先机,很多其他区块链平台也在确保与Solidity兼容,以便可以轻易地将智能合约从以太坊移植到他们的新区块链网络上。

以太坊——从技术层面讲,以太坊的作用相当于一个以太坊虚拟机,也被形象地描述为“全球计算机”(world
computer),由C++、Python、Ruby、Go和
Java等编程语言组合合成。JavaScript是以太坊的基础,因为它的作用相当于一个有脚本执行的运行环境。

澳门新葡亰平台9411 4

Java

——是一种并发执行、面向对象、基于类型的通用编程语言,Java的执行依赖很少。自1995年发布以来,Java已成为排名前3的编程语言,拥有超过900万名开发者。知名区块链平台NEM的区块链网络就是完全用Java(不久后会改用C++)编写的。

澳门新葡亰平台9411 5

C#

——一种面向对象的编程语言,开发者可以用它构建在.NET框架上运行的强大应用,C#全球至少拥有200万名开发者。C#诞生于2000年,一经推出便备受开发者欢迎,被用于编写可以在多个操作系统(例如:Windows、Mac、Linux、和Android)上运行的跨平台代码。用C#
编程的区块链项目有:

Stratis
是微软扶持的一家区块链服务提供商,它可以让企业构建属于自己的私有区块链系统。

NEO
虽然是用C#编写的,但是也支持Javascript、Java、Python和Go等编程语言。

澳门新葡亰平台9411 6

Javascript

——通常简称为JS,是一款多重范式编程语言,支持事件驱动、函数式和命令式(包括面向对象和基于原型)编程风格。它是世界上最受欢迎的编程语言之一,全世界使用人数至少有970万。

Lisk的侧链开发组件(SideChain Development
Kit,SDK)就是用JavaScript编写的,开发者可以用这个组件在Lisk的区块链平台上构建应用。

澳门新葡亰平台9411 7

SQL

——结构化查询语言(Structured Query
Language)或“Sequel”,是IBM开发的一种编程语言,用于与存储、查询和处理数据的数据库进行沟通。如今SQL约拥有700万名开发者。MySQL、PostgreSQL、SQL
Server、DB2、Oracle等主流数据库都使用SQL来开发应用程序。使用SQL的区块链项目有:

Aergo
是由区块链初创公司Blocko创造的一个面向企业的区块链解决方案,其所使用的Coinstack专利技术用的就是SQL智能合约。Aergo区块链包含一个基于SQL的智能合约平台,这个平台可以让企业在商业环境中创造并执行高级智能合约。

澳门新葡亰平台9411 8

C++

是一款通用的编程语言,约拥有440万名开发者。C++最大的优点在于它不仅能够扩展资源密集型应用,而且还能让应用顺畅地运行,因此它已成为最受3D游戏开发者欢迎的一款编程语言。使用C++的区块链项目有:

EOS——C++是EOS最主要使用的编程语言,其优点在于可以在区块链上灵活地运行大量的不同应用。EOS还支持任何编译为WebAssembly
的语言。

比特币核心钱包(Bitcoin Core)的网络也是用C++编写的。

澳门新葡亰平台9411 9

Golang

是一款基本上基于C语言语法的开源通用型编程语言,对开发者来说Golang很好学,测试者也能轻松理解。目前Golang大约拥有超过80万名开发者。使用Golang的联盟链网络(consortium
network)有:

HyperLedger Fabric ——大部分链代码(用HyperLedger
Fabrics构建的智能合约)都是用Golang编写的。他们还为区块链应用开发提供了一个Java
SDK。

如果您对区块链行业感兴趣,但愿这篇文章让您基本了解了从哪里开始以及什么需要深入研究。毋庸置疑,随着技术的进步和现实应用的出现,这个行业将在未来十几年内迎来爆炸式的发展。

“我自己是一名Java架构师,辞职目前在做讲师,整理了一份学习Java干货,无论是刚需的高级面试专题还是常用的数据算法都有整理,送给每一位Java小伙伴。在日新月异的程序世界里,我们每一个人都是学生。”

加群:712477306