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

450 阅读2分钟

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

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

对加密函数的支持

GO语言之所以被称之为区块链编程第一语言,主要是因为其对加密函数的支持性高,为开发者直接提供了md5\sha1\sha256\sha512四个官方包,我们直接调用包即可,大大减少了代码的冗余。代码举例: //sha-256

func Sum256 (data []byte)[32]byte{
    var d digest
    d.Reset()
    d.Write(data)
    return d.checkSum()
}

//MD5

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文件中的函数 代码实例

编写智能合约

// 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按钮即可复制

image.png

控制台输入命令

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

GO调用

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

速度与效率

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

分布式系统的宠儿

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

结语

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

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