为什么要用golang语言进行区块链编程开发?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。

我们在决定做Karachain的时候,考量(benchmark)了C,C++, Java, 甚至NodeJs,我们也试着用一些算法来作为考量标准。而现在,我表示我们正在用Go来实现此目标,并且感觉不错。

啊,现在建造一个区块链,恰如当时建造一个操作系统!

我们在建造像区块链平台这样复杂的东西时,把注意力放在了那些核心问题上。经过差不多4周的开发与探索,我们才发现这门奇妙的语言是如何优雅地解答了我们的难题。

1
长期项目中的易维护代码
Go语言很简单。并且每次你中途休息(cessation)之后回到代码中时,它没有那么多诡异的错误(quirk)来浪费你的时间。再加上,它所需要的学习量很少,因为它的语法比较大众,开发者的学习曲线很平缓,这样的特性本身就很吸引开发者。这也导致(facilitate)出现Bug的几率很低。所以整个开发过程显得如此简单快速。

一般来讲,代码量越多,项目越难维护。而一个区块链系统需要的代码可达几千行,所以我们需要一门语言,来让维护变得轻松。

2
轻松变成Go语言大师
我们初期有20位出色的工程师,大多来自JavaScript, Java, 和Python,也有的是系统工程师,善使C器。

我们自然需要同一个语言来协同工作。说服(convince)他们来学习Go非常容易,但让他们一个月速成Go语言工程师,却也是挺简单。。。我倒不确定选择其他语言是否也能有此神速。

3
速度与效率
不似Python, Go不是一种解释型语言——它是编译型的。这大大地(drastically)减少了在运行中突然出现的Bug。这一点有点像C语言,代码先被编译,错误会在编译时出现并得到处理,然后才能运行;但是,它比C更高级,比JavaScript和Python更具生产力。

一个区块链非常需要高效性,鉴于其使用的是加密(cryptographic)算法,鉴于它把大量数据传输(propagate)于网络,并存储于网络。

4
为分布式系统而生
这一点,在那些用Golang打造的工具和软件中显而易见。Docker,作为一种微服务的容器,也是用Golang打造。

我们已经看到了我们能用Golang打造的微服务轻松驾驭百万数量的请求。

5
Goroutines
并发(Concurrency)是让几个程序或者一个程序的几个部分同时间运行,或者说并行,以提升计算机的吞吐量(throughput)。通常,在Java或其他一些语言中,通过线程(threads)来实现并发。而Go则用的是“Goroutines”方法。Goroutines就是说一些函数,它们可以同另外的一些函数同时被执行。一个Goroutine在内存中占用大概4kb,而一个线程需要大约1024kb的内存。所以,Goroutines同其他语言所使用的线程比起来,小了250倍,这使得它也可以同时执行不断增加的其他Goroutines。

以下是Go语言在处理线程方面与Java的不同之处:

在Java中,对象(object)在工作单元间共享,其中某一单元为了访问到这个数据,必须先得到它的对象锁。在Golang中,工作单元间共享一种被称为信道(channel)的东西,一个信道基本上就是一个先入先出通道(FIFO pipe)——工作单元可以向信道发起数据读写。

Go语言遵循着它的准则——“不要通过内存共享进行通讯,应当通过通讯来共享内存”(not to communicate by sharing memory, instead share memory by communicating)。

并行操作对于区块链是有着特殊意义的。同时跑大量函数——这一巧妙而天然的特性使得Go程序灵活地运行于分布式系统,这正是区块链的主要需求。不过这一特性早已被发掘,有Docker,MongoDB,Netflix,Uber等等等,他们的产品功能也都主要依赖于高并发。

6
区块链领域的所有人都用它
很多基于稳定区块链的DApps和tools都是用的Go语言。你所需要的某个功能,很轻松就能找到一个相对应的库。

Go是编译型的,所以直接由操作系统执行。这让我们可以更自如地实现像以太坊沙盒(EVM (Ethereum Virtual Machine))一样的技术。而如果是Java,因为它本身的运行载体JVM就是一个虚拟机,要再在上面做一个沙盒,实质是更高一层的抽象,这完全没有必要,会浪费计算机资源。

当然,Go的使用体验像是脚本语言,学习成本很低,所以非常适合小型项目。而在QPS(The Queries per second)上,比起Java好太多,所以又适合用来构建高请求量的服务。

参考学习课程下载地址:golang语言基础区块链编程开发项目实战全套视频教程

课程包含:

  1. golang基础之核心技术 高并发服务器开发
  2. 去中心化前端与web服务器开发
  3. 区块链理论 kotlin 函数式编程
  4. Java分布式 springboot springcloud 微服务 数据库技术开发
  5. spring cloud和区块链×××项目、以太坊和智能合约项目实战

原文地址:https://blog.51cto.com/aino007/2359289

时间: 2024-08-02 01:47:59

为什么要用golang语言进行区块链编程开发?的相关文章

基于Go语言构建区块链:part1

Golang语言和区块链理论学习完毕后,快速入门方法无疑是项目实战.本文将参考https://jeiwan.cc/tags/blockchain/教程,学习如何基于Go语言构建区块链. 1.编程环境设置 编程工具使用GoLand,前文已介绍软件安装经验.软件安装完成后,还需要设置工作路径"GOPATH".在电脑上新建一个空白目录,然后点击点击Goland菜单按钮:"File"->"Settings"->"GO"-&

基于Java语言构建区块链(一)—— 基本原型

引言 区块链技术是一项比人工智能更具革命性的技术,人工智能只是提高了人类的生产力,而区块链则将改变人类社会的生产关系,它将会颠覆我们人类社会现有的协作方式.了解和掌握区块链相关知识和技术,是我们每位开发人员必须要去做的事情,这样我们才能把握住这波时代趋势的红利. 本文将基于Java语言构建简化版的blockchain,来实现数字货币. 创建区块区块链是由包含交易信息的区块从后向前有序链接起来的数据结构.区块被从后向前有序地链接在这个链条里,每个区块都指向前一个区块.以比特币为例,每个区块主要包含

Go语言与区块链——阶段性学习建议

2019年Go语言与区块链 链接: https://pan.baidu.com/s/1rtstZKws3t9L8bcFZmUd3Q 提取码: gx1r 阶段一:区块链主流语言:Go语言开发实战 本阶段需要掌握Linux和Windows双系统开发环境,建立面向对象思维,能对问题进行抽象归类.掌握基础的并发理论. 主要内容包括有:Go语言介绍及开发环境搭.基础类型.运算符.流程控制.函数.工程管理.复合类型.面向对象编程.异常处理.文本文件处理.案例:开发实战. 阶段二:区块链后端技术体系:Go语言

Fomo3d区块链游戏开发

区块链结合游戏火爆模式:Fomo3d区块链游戏开发[纪如,137.9436.2OI4,可薇可电],在Solidity中,与合约有些不同,Library不能处理ether.你可以把它当作一个EVM中的单例,又或者是一个部署一次后不再部署,然后能被做任意其它合约调用的公共代码. 这带来的一个显然好处是节省大量的gas(当然也可以减少重复代码对区块链带来的污染),因为代码不用一而再,再而三的部署,不同的合约可以依赖于同一个已部署的合约. Fomo3d区块链游戏开发规则: "fomo3D系统"

区块链应用开发技术架构模式介绍

区块链应用开发技术架构模式介绍区块链应用场景多样,从数字货币金融到去中心化互联网.大多数用例都可以归纳为几种模式.源中瑞ruiecjo给大家讲解基于区块链的去中心化应用的常见的4种架构模式.1.IAM的架构模式背景信息: IAM环境包括许多用户和服务提供商.IAM系统为每个用户提供一个帐户和一组功能,使用户可以前往服务提供商,展示其帐户所有权,然后根据其功能接收服务.力量:需要实现一个分散的IAM环境,在该环境中,一个恶意用户或几个用户不会对系统造成重大影响.解决方案:建议的模式候选者以以下方式

国内知名区块链技术应用研发公司,区块链交易系统开发

[本文由jys-wu编辑/系统开发微信:jys-wu]银行重金投向区块链等科技创新,欲打金融科技翻身仗据上海证券报报道,银行重金投向科技创新,一是加强基础技术研发与平台建设,推进人工智能.区块链等新兴技术落地应用:二是对线下网点进行统一改造,打造数字化银行,降低成本等.一家大行IT部负责人表示,"在金融科技形势倒逼下,银行IT角色已经改变.过去IT部门是配角,现在要起引领作用,IT目标已经上升到战略层面,需要进行顶层设计,全面赋能业务."美国最大医疗保险公司UnitedHealth宣布

2018虚拟数字资产区块链交易系统开发新模式

虚拟数字资产区块链交易系统开发[138-2655 -7202]一.数字资产交易所的定义 数字资产交易所系统开发是指进行数字资产间.数字资产与法币间交易撮合的平台,是加密数字资产交易流通和价格确定的主要场所. 与传统证券交易所相比,数字资产交易所除撮合交易之外,还承担做市商和投资银行的角色.交易所的做市商角色能增加市场的流动性,交易所从中赚取交易差价.交易所的投资银行角色为数字资产提供发行.承销等服务,交易所从中收取上币费,或者以交易所社区投票的形式收取保证金. 数字资产交易所的商业模式 1.数字

区块链技术开发要点 聊区块链技术企业开发

不论在哪个时代,科技创新总是引领商业热潮的推进力,而现今区块链技术开发已获得全球经济.产业.学术各个领域的高度关注和认可,在商业合作中,区块链技术开发很好的解决了网络间的互通信.交易速度.隐私保护等问题,伴随区块链技术开发的商业应用范围渐广,它转变了各组织看待技术基础结构的方式. 迎合时代趋势,参与技术革新,抢时间,就是抢市场! 技术的革新使得全球各方参与者具有能认同商业交易.信息传输.法律合约及无需中心,新人机构的商品鉴证等各项行为和活动的能力,与其特有的共识机制成为区块链技术的灵魂核心,而跨

区块链技术开发 聊区块链+物联网场景应用

几乎在同一时期,区块链技术开发的诞生与物联网概念出现,但"遗憾"的是,二者直到最近一两年才"擦出火花",一方面,物联网几何级扩张后问题暴露得更加明显,亟待寻找解决方案,另一方面,区块链带来的全新思维方式也逐渐被主流商业群体所接受,空白的市场吸引了各行各业切入其中,抢时间成为了大家做区块链技术开发的共同目标. 从区块链技术开发的结构机制来看,去中心化的架构直接颠覆了物联网旧有的中心架构,不但大大减轻中心计算的压力,而且释放了物联网组织结构的更多可能,为创新提供了更多空