首页 > 其他分享 >GO语言凭什么是区块链的首选语言

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

时间:2022-12-21 16:35:14浏览次数:43  
标签:语言 -- abi go GO 区块

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语言的优点还有很多,就不多赘述了。

标签:语言,--,abi,go,GO,区块
From: https://www.cnblogs.com/python9090/p/16996526.html

相关文章

  • 五款最棒的Go语言开发工具?
    新一代编程神语言Go,由于其同时提供了开发效率与运行效率,可谓是近几年在编程界最耀眼的新星,越来越多的大神投入其中,也越来越成熟,开源库代码越来越多.想必现在也有......
  • golang对比java的优势_golang语言和其它编程语言的对比
    golang对比java的优势_golang语言和其它编程语言的对比 在软件行业做过一段时间的人都知道,没有万能的编程语言,也没有万能开发框架,更没有万能的解决方案。任何新技术的产......
  • go语言能做什么
    一、执行性能缩短API的响应时长,解决批量请求访问超时的问题。在Uwork的业务场景下,一次API批量请求,往往会涉及对另外接口服务的多次调用,而在之前的PHP实现模式下,要做到并行......
  • 基于Go语言实现高并发推荐系统架构设计
    你好!我是封幼林,在小年糕负责推荐系统,主要从事服务架构相关工作。今天我要和你分享的话题是《高并发推荐系统架构设计》。这次分享主要分为以下这几个部分:推荐系统的基......
  • go通过chan和go func进行并发控制
    原文:Go并发实战核心编程【一】1.需求启动一个goroutine,将1-10000的数字放入chan中启动4个goroutine从chan中读取数字,并计算是不是素数是素数就讲结果放入结果chan......
  • C语言学习初识day1
    全局变量,局部变量:      放在大括号里的变量就是局部变量;全局变量生命周期是整个程序。当局部变量和全局变量辆重名时,局部变量优先。常量,变量,常变量:C语言中的常量分......
  • forms组件渲染标签 、forms组件展示信息 、forms组件校验补充、 forms组件参数补充 、
    目录forms组件渲染标签forms组件展示信息forms组件校验补充forms组件参数补充forms组件源码剖析modelform组件django中间件forms组件渲染标签<p>forms组件渲染标签的方式......
  • STL 算法 <algorithm>,
    STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成。要使用STL中的算法函数必须包含头文件<algorithm>,对于数值算法须包含<numeric>,<functional>......
  • golang接口
    1.ConstrainedGenericTypepackagemainimport( "fmt")typeStringer=interface{String()string}typeIntegerintfunc(iInteger)String()str......
  • Argocd/Argocd Rolloouts/Argocd-cli/kubectl argo rollouts插件部署
    argocd部署官网​​https://argo-cd.readthedocs.io/en/stable/getting_started/​​部署地址参考​​https://argo-cd.readthedocs.io/en/stable/getting_started/​​​​......