go语言程序化交易 go语言gui编程( 四 )


就这么简单:)你可以用事务哈希来在Etherscan上查询合约的部署状态:
Commands
Store.sol
contract_deploy.go
solc version used for these examples
【go语言程序化交易 go语言gui编程】 这写章节需要了解如何将智能合约的ABI编译成Go的合约文件 。如果你还没看,前先读 上一个章节。
一旦使用 abigen 工具将智能合约的ABI编译为Go包,下一步就是调用“New”方法 , 其格式为“Newcontractname style="box-sizing: border-box; font-size: 16px; -ms-text-size-adjust: auto; -webkit-tap-highlight-color: transparent;"”,所以在我们的例子中如果你 回想一下它将是 NewStore。此初始化方法接收智能合约的地址,并返回可以开始与之交互的合约实例 。/contractname
Commands
Store.sol
contract_load.go
solc version used for these examples
这写章节需要了解如何将智能合约的ABI编译成Go的合约文件 。如果你还没看, 前先读 上一个章节。
在上个章节我们学习了如何在Go应用程序中初始化合约实例 。现在我们将使用新合约实例提供的方法来阅读智能合约 。如果你还记得我们在部署过程中设置的合约中有一个名为 version 的全局变量 。因为它是公开的,这意味着它们将成为我们自动创建的getter函数 。常量和view函数也接受 bind.CallOpts 作为第一个参数 。了解可用的具体选项要看相应类的 文档一般情况下我们可以用nil。
Commands
Store.sol
contract_read.go
solc version used for these examples
这写章节需要了解如何将智能合约的ABI编译成Go的合约文件 。如果你还没看,前先读 上一个章节。
写入智能合约需要我们用私钥来对交易事务进行签名 。
我们还需要先查到nonce和燃气价格 。
接下来,我们创建一个新的keyed transactor,它接收私钥 。
然后我们需要设置keyed transactor的标准交易选项 。
现在我们加载一个智能合约的实例 。如果你还记得 上个章节我们创建一个名为 Store 的合约 , 并使用 abigen 工具生成一个Go文件 。要初始化它,我们只需调用合约包的 New 方法,并提供智能合约地址和ethclient , 它返回我们可以使用的合约实例 。
我们创建的智能合约有一个名为 SetItem 的外部方法,它接受solidity“bytes32”格式的两个参数(key,value) 。这意味着Go合约包要求我们传递一个长度为32个字节的字节数组 。调用 SetItem 方法需要我们传递我们之前创建的 auth 对象(keyed transactor) 。在幕后,此方法将使用它的参数对此函数调用进行编码,将其设置为事务的 data 属性,并使用私钥对其进行签名 。结果将是一个已签名的事务对象 。
现在我就可以看到交易已经成功被发送到了以太坊网络了:
要验证键/值是否已设置,我们可以读取智能合约中的值 。
搞定!
Commands
Store.sol
contract_write.go
solc version used for these examples
有时您需要读取已部署的智能合约的字节码 。由于所有智能合约字节码都存在于区块链中,因此我们可以轻松获取它 。
首先设置客户端和要读取的字节码的智能合约地址 。
现在你需要调用客户端的 codeAt 方法 。codeAt 方法接受智能合约地址和可选的块编号,并以字节格式返回字节码 。
你也可以在etherscan上查询16进制格式的字节码
contract_bytecode.go
首先创建一个ERC20智能合约interface 。这只是与您可以调用的函数的函数定义的契约 。
然后将interface智能合约编译为JSON ABI,并使用 abigen 从ABI创建Go包 。
假设我们已经像往常一样设置了以太坊客户端,我们现在可以将新的 token 包导入我们的应用程序并实例化它 。这个例子里我们用 Golem代币的地址.

推荐阅读