就像数据库一样,每个区块链平台都会提供主流 开发语言的 SDK(Software Development Kit,软件开发工具包),由于 Geth 本身就是用 Go 语言 编写的,因此若想使用 Go 语言连接节点、发交易,直接在工程内导入 go-ethereum(Geth 源码) 包就可以了,剩下的问题就是流程和 API 的事情了 。
总结一下 , 智能合约被调用的两个关键点是节点和 SDK 。
由于 IPC 要求后端与节点必须在同一主机,所以很多时候开发者都会采用 RPC 模式 。除了 RPC , 以太坊也为开发者提供了 json- rpc 接口,本文就不展开讨论了 。
接下来介绍如何使用 Go 语言,借助 go-ethereum 源码库来实现智能合约的调用 。这是有固定 步骤的 , 我们先来说一下总体步骤,以下面的合约为例 。
步骤 01:编译合约 , 获取合约 ABI(Application Binary Interface,应用二进制接口) 。单击【ABI】按钮拷贝合约 ABI 信息,将其粘贴到文件 calldemo.abi 中(可使用 Go 语言IDE 创建该文件,文件名可自定义,后缀最好使用 abi) 。
最好能将 calldemo.abi 单独保存在一个目录下,输入“ls”命令只能看到 calldemo.abi 文件,参 考效果如下:
步骤 02:获得合约地址 。注意要将合约部署到 Geth 节点 。因此 Environment 选择为 Web3 Provider 。
在【Environment】选项框中选择“Web3 Provider”,然后单击【Deploy】按钮 。
部署后,获得合约地址为:0xa09209c28AEf59a4653b905792a9a910E78E7407 。
步骤 03:利用 abigen 工具(Geth 工具包内的可执行程序)编译智能合约为 Go 代码 。abigen 工具的作用是将 abi 文件转换为 Go 代码 , 命令如下:
其中各参数的含义如下 。(1)abi:是指定传入的 abi 文件 。(2)type:是指定输出文件中的基本结构类型 。(3)pkg:指定输出文件 package 名称 。(4)out:指定输出文件名 。执行后,将在代码目录下看到 funcdemo.go 文件 , 读者可以打开该文件欣赏一下,注意不要修改它 。
步骤 04:创建 main.go , 填入如下代码 。注意代码中 HexToAddress 函数内要传入该合约部署后的地址,此地址在步骤 01 中获得 。
步骤 04:设置 go mod,以便工程自动识别 。
前面有所提及,若要使用 Go 语言调用智能合约,需要下载 go-ethereum 工程,可以使用下面 的指令:
【go语言简单工厂模式 go语言编程模式】该指令会自动将 go-ethereum 下载到“$GOPATH/src/github.com/ethereum/go-ethereum” , 这样还算 不错 。不过,Go 语言自 1.11 版本后 , 增加了 module 管理工程的模式 。只要设置好了 go mod,下载 依赖工程的事情就不必关心了 。
接下来设置 module 生效和 GOPROXY,命令如下:
在项目工程内 , 执行初始化 , calldemo 可以自定义名称 。
步骤 05:运行代码 。执行代码 , 将看到下面的效果 , 以及最终输出的 2020 。
上述输出信息中,可以看到 Go 语言会自动下载依赖文件,这就是 go mod 的神奇之处 。看到 2020 , 相信读者也知道运行结果是正确的了 。
go语言适合做什么?Go语言 。他主要是在一些网页版的服务器中用于系统编程的一种语言 。他是谷歌开发的一种编程语言 。在一定程度上,谷歌有一定的垄断作用 。不能随随便便的在语言当中添加其他的语言成分 。
go语言 python ruby,这三个怎么选择这选择显然是因人而异go语言简单工厂模式的 。。至于怎么选go语言简单工厂模式,要看你是初学者,还是老手go语言简单工厂模式? 。。对性能有要求,还是没要求?
如果是完全没有基础 , go语言简单工厂模式我建议哪个都不选,如果非要选一个 , 那就选PYTHON 。。如果你是初学者,把网上的教程看个遍 , 再买上几本书 。。。你所学会的也仅仅是语法,而根本不会编程 。。。因为这些教程,也仅仅是教你语法 , 而没有教你编程 。。你甚至把网上的教程看个精光,却连个最基本的OA系统都做不出来 。。。只能在一个黑乎乎的控制台上,打印一堆破字符 。。
推荐阅读
- js获取雷鸣,js实现扫雷
- sqlserver遍历数组,plsql遍历数组
- 格斗进化怪兽游戏视频,格斗进化的格斗进化0
- at命令linux,at命令已弃用,请改用schtasks
- linux发包命令 linux查看发包进程
- 电脑怎么还原原系统,电脑怎么还原原系统设置
- 游戏界面怎么开发票的简单介绍
- linux服务器分区,linux服务器分区使用率突然增涨
- mysql分页怎么实现 mysql分页实现原理