golang学习笔记19 用Golang实现以太坊代币转账
- 在以太坊区块链中,我们称代币为Token,是以太坊区块链中每个人都可以任意发行的数字资产。并且它必须是遵循erc20标准的,至于erc20标准,大家可以参考这篇文章 https://theethereum.wiki/w/index.php/ERC20_Token_Standard
- 它实际上一段智能合约代码,智能合约代码中必须要有以下的一些function 和 event。
contract ERC20 { function totalSupply() constant returns (uint totalSupply); function balanceOf(address _owner) constant returns (uint balance); function transfer(address _to, uint _value) returns (bool success); function transferFrom(address _from, address _to, uint _value) returns (bool success); function approve(address _spender, uint _value) returns (bool success); function allowance(address _owner, address _spender) constant returns (uint remaining); event Transfer(address indexed _from, address indexed _to, uint _value); event Approval(address indexed _owner, address indexed _spender, uint _value); }
-
能合约代码是运行在以太坊智能合约虚拟机中的。文档:https://solidity.readthedocs.io/en/latest/installing-solidity.html#building-from-source
-
我们看到上面那段类似golang中interface的代码,里面分别包含了总量、余额、转账等方法。我们今天重点讲的其实就是用golang来实现transfer、transferFrom方法。
连接以太坊RPC节点
- 目前广泛使用的是go-ethereum,他的客户端名是geth。你可以通过编译、安装等方式把节点搭建在你的电脑或者服务器中,并开启rpc服务。本文省略这一步骤,网上有很文章供你了解。
- 附上github:https://github.com/ethereum/go-ethereum
- geth默认的rpc端口是
8545
,我使用默认端口,后面我们都用http://127.0.0.1:8545
作为我们的rpc连接。