GO语言凭什么是区块链的首选语言
GO语言凭什么是区块链的首选语言
区块链的火热也带动了GO语言开发者的突增,那凭什么GO语言会成为最主要的区块链构建语言之一。我认为这得益于GO语言的性能、抽象度、简单性和现代性。并且,当下最成功、最流行的go-ethereum和Fabric都是使用GO语言实现的,在这两个的带领下,为了减少开发时间和成本,GO语言也成为开发区块链的优选。
对加密函数的支持
GO语言之所以被称之为区块链编程第一语言,主要是因为其对加密函数的支持性高,为开发者直接提供了md5sha1sha256sha512四个官方包,我们直接调用包即可,大大减少了代码的冗余。代码举例: //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语言框架