GO语言凭什么是区块链的首选语言

区块链的火热也带动了GO语言开发者的突增,那凭什么GO语言会成为最主要的区块链构建语言之一。我认为这得益于GO语言的性能、抽象度、简单性和现代性。并且,当下最成功、最流行的go-ethereum和Fabric都是使用GO语言实现的,在这两个的带领下,为了减少开发时间和成本,GO语言也成为开发区块链的优选。

对加密函数的支持

GO语言之所以被称之为区块链编程第一语言,主要是因为其对加密函数的支持性高,为开发者直接提供了md5\sha1\sha256\sha512四个官方包,我们直接调用包即可,大大减少了代码的冗余。代码举例: //sha-256 go func Sum256 (data []byte)[32]byte{ var d digest d.Reset() d.Write(data) return d.checkSum() } //MD5 go func Md5(str string) string { h := md5.New() h.Write([]byte(str)) return hex.EncodeToString(h.Sum(nil)) } 对于不同的输入,SUM256都能返回一个32字节的值。

geth将solidity与go交互简单

要使go与solidiy交互只需要以下步骤

  • 安装geth
  • 编写智能合约
  • 复制合约abi
  • 控制台输入命令
  • go调用solidity生成.go文件中的函数 代码实例

    编写智能合约

“`solidity // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; contract Faucet { //每天转账次数 uint transferNum=0; //每次转账金额 uint eachAmount =1 ether;

function withdraw(address addr) payable public { payable(addr).transfer(eachAmount); transferNum++; }

fallback() payable external {}receive() payable external {}

} “`

复制abi

如果是使用remix编写智能合约的话,只需要找到abi按钮即可复制

控制台输入命令

cmd 文件夹为合约保存的文件夹 geth abigen --abi fileName.abi --pkg packageName --type fileName --out fileName.go

GO调用

当生成.go文件后,它就相当于一个接口,我们只需要调用就好了。

速度与效率

Go不是一种解释型语言——它是编译型的。这大大地(drastically)减少了在运行中突然出现的Bug。这一点有点像C语言,代码先被编译,错误会在编译时出现并得到处理,然后才能运行。 并且GO语言的开发效率和性能效率都是非常快的,集各种优点于一身,区块链正需要这种高效性。

分布式系统的宠儿

Docker,作为一种微服务的容器,也是用Golang开发出来的,是当下非常火热的微服务框架。

结语

go语言的优点还有很多,就不多赘述了。

本文正在参加技术专题18期-聊聊Go语言框架