区块链将是技术的发展方向。

我认为未来将围绕区块链一新兴技术构建,这绝不是什么牵强附会。区块链最初被设计成一种公共的,无权限的技术,后来引入了另一种区块链,每种区块链都有自己独特的用例集。公共/无权限区块链是开放的,分布式并且缓慢的,而私有/许可的区块链是部分或完全封闭和集中的。

在本篇文章中,我将与你讨论需要学习哪些知识,才能开始构建和使用区块链技术的应用程序。

当我第一次开始学习区块链时,很多问题都浮现在我脑海中。区块链有哪些不同类型?我应该用哪种编程语言进行有效开发?区块链开发的平台是什么?

在本文中,我们将共同讨论应该学习的不同编程语言,以便开始开发使用区块链技术的应用程序。

区块链编程的类型

区块链架构编程

在开发区块链之前,我们必须先解决构成其体系结构和协议的重要函数,它必须用代码编写。例如,比特币在2009年被发布之前,管理该情况的规则和协议是用C++编写的。这种编程通常用C和Java等语言完成,这些语言更接近机器。

构建智能合约或分散式应用程序(DApp)

在普通的中心化应用程序中,后端代码在中央服务器上运行,而Dapp的后端代码在分布式的对等网络上运行。像普通应用程序一样,DApp可以使用任何语言和用户界面编写其前端代码,方便调用后端API。

流行的区块链编程平台

Hyperledger

Hyperledger是开源区块链的一个综合项目,旨在帮助推进区块链技术发展,通过它的引领下,包括提供的相关工具,培训和社区活动,支持基于区块链的分布式账本的协同开发。Hyperledger的目标是提供模块化区块链技术,其中包含了丰富,易用的API。Hyperledger降低了安全风险,并确保只有想要交易的各方才能成为交易的一部分。Hyperledger提供了区块链架构,数据隐私,信息共享和不可变性的全部功能。

以太坊

以太坊是一个开源的区块链平台,用来开发以区块链技术运行的分布式应用程序或DApps。

以太坊区块链平台能够有效帮助脚本或智能合约,顺利通过网络中的节点运行。它不仅能够跟踪交易,还可以对它们进行编程。

以太坊提供了许多编程语言供开发者选择,包括C++,Go,Python,Java等语言。智能合约是使用Solidity构建的,Solidity语言是一种面向合约的高级编程语言。

区块链编程语言之TOP5

1. C ++

让我们从列表中最古老,最受推崇的常青语言 C++开始,我们所有编程的人都知道它是C语言的扩展。在C++中,创建一个数据,函数和对象包后,可以在其他程序中轻松调用和重用,这样可以大大减少编码时间。

那么问题来了,现在有那么多高级语言,偏偏为啥要用C++?

好吧,因为C++具有某些功能,让它非常吸引人。考虑到区块链发展中的种种挑战,区块链应该像一个安全的堡垒,也可以有效的进行资源管理。

区块链应该与许多不受信任的节点进行交互,同时仍然可以为任何和所有节点提供快速服务。这种快速服务对数字加密货币的成功至关重要。要完成所有这些需求并在最高级别执行完,你需要完全控制CPU和内存使用,而C++恰恰为用户提供了这一点。

C++的另一个有趣的一面是移动语义。移动语义指的是提供了一种在对象之间移动内容而不是复制的方法。移动语义的优点是,只有在需要时才去获得某些数据的副本,另外通过减少冗余来提高程序性能。有效的存储器管理和高性能都是区块链所需要的。

另外可以想到的关于区块链编程的另一个挑战是,集成并行化与不并行化的不同任务。大多数的编程语言只专注在一个方面,但是C++的线程化能力可以处理并行和非并行任务。C++允许多设备进行线程间的有效通信,并优化单线程性能。

C++的优点与缺点

优点 缺点
独立和跨平台 复杂且难于调试
静态类型 学习曲线高
快速 不支持垃圾收集

C++区块链用例

C++主要用来做加密货币和重要的区块链项目,如比特币,瑞波Ripple,比特币现金,Litecoin,Stellar和Monero等。

2. JavaScript

JavaScript是现今流行的软件开发语言之一。JavaScript有很多有用的库和框架,比如jQuery,React,Angular和Node.js,它是推动现代Web开发的超级引擎。与HTML和CSS一起,增强网站大量的交互功能。

JavaScript有一个主要特性非常适合区块链处理。JS非常擅长处理异步操作,随着区块链上的用户数量的增加,会有很多同步执行的操作,而使用JS可以更轻松地处理所有这些不同区块链节点之间的通信。但是,不能否认JavaScript在计算机处理能力的利用率方面不如C++高效。

JavaScript的优点与缺点

优点 缺点
面向对象 动态
基于原型 解释权取决于浏览器
支持函数式编程 任何人都可以查看源代码

区块链中的JavaScript用例

区块链开发人员使用的JavaScript都在web3.js和ethereum.js中,它可以帮助开发者连接应用程序的前端,连接以太坊网络和智能合约。

区块链中另一种常用的JavaScript是针对node.js的Hyperledger Fabric SDK。这是一个在IT行业和企业中经常使用的大型框架。所以,如果你喜欢这种编码,它可能是一个很好的选择。

3. Python

作为一种相对现代的编程语言,Python通常是新新编码者的最爱。Python具有类似于英语的简单语法。在服务器端使用Python来开发基于Web的应用程序,还可用于连接数据库系统。Python可以处理大数据并执行复杂的数学运算。

Python吸引人的方面是它使用新行来完成一行命令,而不像其他编程语言,通常使用分号或花括号。

不论你尝试什么语言,我们都离不开Python,几乎每个区块链生态系统都有一个或多个用Python编写的公共工具。

Python也许正在成为更流行的语言。

Python的优点和缺点

优点

缺点
适用于多种平台(Windows,Mac,Linux,Raspberry等) 主要用作服务器端语言
与其他编程语言相比,开发人员编写更少的代码。 不那么吸引人的背景
在编译系统上运行。原型设计非常快。 扩展库并不总是以足够全的方式记录

区块链中的Python用例

在区块链领域,Python用于为Hyperledger编写智能合约。还有许多其他良好的项目,比如以太坊(pyethereum),它们有自己的实现。Python也被用来为NEO创建智能协约。

GoLang

GoLang,也称为Go,是一种相对现代的通用领域语言。它由谷歌于2007年开发并于2012年公开应用。

Go是一种静态类型的语言,语法与C语言有些类似。它的设计理念为健壮,多用途语言,Go是尝试将现代语言(如Python和JavaScript)的语法和用户友好性与C语言的性能和安全性优势相结合。

Go是一种编译型语言,它提供了功能丰富的标准库。当你在使用Go在区块链项目的多个部分使用时,Go具有最大的灵活性。

在Go语言中,名为Goroutines的方法提供了异步或并行运行多个程序,或程序的几个部分的能力,这是区块链项目所需要的重要特性。通常,线程用于在语言中实现这一点,例如Java和其它语言。

Go的优点与缺点

优点 缺点
编译时间很快 不是很容易学习
程序简单,简洁,安全 Go没有像python或javascript这样的软件包
超强类型,可扩展 对于一些开发人员来说,语法并不清晰
垃圾收集 非常年轻的语言和社区,没有像其它流行语言那么大

Go在区块链中的应用案例

有一系列与Golang相关的区块链项目,包括为数不少的热门项目。比如Go-Ethereum是用Golang编写的最重要的项目之一。用Go编写的另一个重要项目是Hyperledger Fabric,这是很多大公司都欢迎的区块链解决方案之一。另一个针对分布式在线游戏的好项目是Loom Network,其中包含用Go编写的链码。

Solidity

Solidity是由以太坊团队的Gavin Wood,Christian Reitwiessner等人开发,它长得类似JavaScript,用于特定领域,同时也是面向对象的高级语言。

Solidity受C++,Python和JavaScript语言的影响,其宗旨是在以太坊平台上创建应用程序和以太坊虚拟机(EVM)。EVM是在以太坊平台上编写的智能合约运行时环境。Solidity是一种静态类型语言,支持继承,库和复杂的用户定义类型。迄今为止,它是以太坊社区和区块链行业中最匹配的DSL。

要运行Solidity的代码示例,我们可以使用Remix IDE。Remix是一个基于Web浏览器的IDE,具有集成的编译器和Solidity运行时环境,没有服务器端组件。它除了可以编写Solidity代码,并且可以部署和运行智能合约。

Solidity的优点与缺点

优点 缺点
在协约中提供继承属性 非常年轻的语言,技术社区还不大,支持力较小。
静态打字 由于标准库不可用,使用非常复杂
简单易学 不普遍; 仅在以太坊生态系统中使用

区块链中的Solidity使用案例

Solidity语言用于开发以太坊智能合约。暂时没有看到任何其他项目使用,具有一定的可靠性。以太坊开发生态系统是庞大的,并且也是目前区块链开发中最重要的部分之一,因此Solidity是智能合约开发中使用的最流行的语言。

小结

区块链技术预计将对每个行业和行业产生巨大影响。在未来几个月到几年中,随着互联风世界变得越来越分布化,区块链被成为主流技术,未来将有无限的想像!

相关引用:

https://phys.org/news/2019-01-transparency-privacy-empowering-people-blockchain.html

https://blockgeeks.com/guides/what-is-blockchain-technology/

编译:楚龙

来源:21CTO社区

相关文章推荐

2019,区块链正在改变数字世界!

开发区块链的五大编程语言

Gartner 公布 2019年十大技术趋势:边缘计算、量子计算、AI驱动的开发、区块链等

区块链ICO交易简明指南

区块链和数据库,技术到底有何区别?

区块链开发指南_区块链开发完全指南相关推荐

  1. 区块链开发指南_区块链开发权威指南

    区块链开发指南 by Haseeb Qureshi 由Haseeb Qureshi 区块链开发权威指南 (The authoritative guide to blockchain developme ...

  2. 以太坊区块链也拥堵_以太坊开发人员:EOS刻意拥堵以太坊网络 推高交易费到1美元...

    金色财经 比特币7月16日讯根据一些DApp开发人员表示,EOS正在攻击以太坊,试图将交易费提高到1美元.据悉,相关开发人员指责EOS通过随机代币"空投"造成以太坊网络堵塞,而且这 ...

  3. 不是区块链的特征_区块链的四大特征

    在对比特币和以太坊这两个主要系统,讨论了区块链的价值表示和价值转移这两个基础功能,探讨了数字资产.通证与通证经济系统之后,我们再来看看区块链的特征与用途,尝试回答"区块链有什么用" ...

  4. 区块链运作机制_区块链如何运作? 铂 4

    区块链运作机制 This article was originally published on Blockchain Review. Thank you for supporting the par ...

  5. 区块链核心技术:技术准备_区块链:我们还没有准备好进行的革命

    区块链核心技术:技术准备 by Haseeb Qureshi 由Haseeb Qureshi 区块链:我们还没有准备好进行的革命 (Blockchain: the revolution we're n ...

  6. 区块如何防篡改_区块链数据不可篡改的详细解释

    区块链数据不可篡改的详细解释 背景介绍 本人新人一枚,学习区块链的过程中,在网上看到了很多讨论区块链区块数据不可篡改的文章,以比特币为例哈,主要存在2种解释: 解释1:由于哈希指针的存在,假设存在某节 ...

  7. 区块如何防篡改_区块链为什么能防篡改?

    作为高级攻城狮一定要心中有树,因为这个的确能提升底层认知. 希望每人都能够做到心中有树,面对面试高频问题,方能有的放矢. 01. 区块链中的树 体会一下:区块链上交易的篡改,会给区块带来什么影响? 如 ...

  8. 区块如何防篡改_区块链是如何防篡改的?

    我们可以结合比特币来看看区块链是不是真的"防篡改". 一开始可能有人想,是不是可以通过技术手段修改我钱包里的比特币,但比特币的的安全性是由三个维度来保证的: 第一个维度,分布式账本 ...

  9. 易格斯拖链选型手册_拖链相关知识

    下载全文PDF文件联系小编,希望大家在下载资料的同时多多支持! 一.综述 塑料拖链的性能介绍 1)拖链外形似坦克链,由众多的单元链接组成,链接之间转动自如. 2)相同系列的拖链的内高.外高.节距相同, ...

最新文章

  1. 知乎 CTO 李大海:创业公司如何拥抱开源
  2. [Google Android] Creating Your Own Spelling Checker Service
  3. 服务人员在Hybris ASM手动分配coupon给某个客户
  4. mysql数据库迁移到另一台电脑上
  5. 算法 --- 二叉树的最大深度
  6. 在Java Web应用程序中阻止CSRF
  7. c语言随机生成1到100随机数_VB之生成随机数
  8. config parser 模块
  9. 戴尔DCS两周年庆 推新型数据中心设备
  10. 制造行业主数据治理项目实施心得
  11. C/C++利用netsh设置动态IP和静态IP
  12. 适合记录日常工作的便签如何在电脑桌面上添加
  13. springboot项目快速搭建
  14. python画笑脸图案-如何用Python画滑稽笑脸!
  15. 运用Java获取当前时间
  16. 比乌镇人少!西塘安静!杭州这3个古镇 1h 直达!
  17. 栈实战之检查括号是否闭合
  18. mysql多表删除_MySQL中多表删除方法
  19. 庆祝祖国成立72周年 做点题目之 BUUCTF Crypto 刷题
  20. Servlet——映射细节、3.0注解配置、Servlet是单例会造成线程不安全问题

热门文章

  1. 【实践】图推荐算法在EE问题上的应用(附交流视频和PPT下载链接)
  2. AI换脸APP“ZAO”刷屏并一夜爆火,它能红多久?
  3. github无法显示图片,其他一切正常的解决办法
  4. pytorch查缺补漏之CUDA,自动求导
  5. KDD'21 | 揭秘Facebook升级版语义搜索技术
  6. 垂直电商独立站,到底有何优势?
  7. 2020跨境电商独立站将喷发式增长?
  8. 做Tiktok如何选择地区?
  9. 中国wms仓储管理系统行业发展状况分析?
  10. c语言在中职的作用,C语言程序下的中职教学论文