[TOC]
個人簡介
HundredLee
2013年起,便奮鬥在數字貨幣交易平臺開發第一線,2016年接觸區塊鏈,從此走上不歸路。目前正在開發一套全新的高速撮合引擎。
微博 :weibo.com/hundredlee2…
郵箱 :hundred9411#gmail.com
連載準備
連載一,介紹以太坊,查詢餘額等。
連載二,go-ethereum轉出以太坊、如何對接token、如何查詢token餘額、如何轉出token。
連載三,交易平臺對接以太坊的一些經驗和總結。
以太坊是神馬東西?
百度百科:
以太坊(Ethereum)並不是一個機構,而是一款能夠在區塊鏈上實現智慧合約、開源的底層系統,以太坊從誕生到2017年5月,短短3年半時間,全球已有200多個以太坊應用誕生。以太坊是一個平臺和一種程式語言,使開發人員能夠建立和釋出下一代分散式應用。 以太坊可以用來程式設計,分散,擔保和交易任何事物:投票,域名,金融交易所,眾籌,公司管理, 合同和大部分的協議,智慧財產權,還有得益於硬體整合的智慧資產。
安裝geth客戶端
- geth是目前使用最廣泛的客戶端,他可以用於挖礦、建立私有鏈、管理以太坊賬戶等。
- osx 使用者可以直接通過brew來安裝。具體參考 blog.csdn.net/ethchinese/…
- 若希望通過原始碼編譯安裝,那麼請參照這裡 www.cnblogs.com/dophin459/p…
- 當然官方github的readme文件,也是非常詳細的,建議可以看看 github.com/ethereum/go…
- 這裡不再詳細介紹安裝方式,網上資料特別多 。
開發
連線以太坊
首先比較重要的一步,先
go get https://github.com/ethereum/go-ethereum
如果上一步你成功安裝了geth客戶端,並開啟了rpc功能,例如
http://127.0.0.1
,那麼你就可以在golang中連線rpc。直接上程式碼:
import (
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/rpc"
)
func connectToRpc() (*ethclient.Client, error) {
client, err := rpc.Dial("http://127.0.0.1")
if err != nil {
return nil, err
}
conn := ethclient.NewClient(client)
return conn, nil
}複製程式碼
查詢以太坊(eth)餘額
- 在開發以太坊應用中,經常需要獲取賬戶內的餘額。
- 由於上一步我們已經成功連線上了以太坊客戶端,那麼我們只需要直接簡單的呼叫介面就可以了。
import (
"context"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
)
//特別注意,這裡的address就是你要查詢的以太坊餘額的地址。一般是0xddddd 這樣的形式
func GetBalance(address string) {
client,err := connectToRpc()
if err != nil {
panic(err.Error())
}
balance, err := client.BalanceAt(context.TODO(),common.HexToAddress(address), nil)
}複製程式碼
- 特別注意的是以太坊的Decimal是18,那麼我們獲得的餘額要乘以10^-18,才能得到正常的以太坊數量。
- 以太坊的其他token也一樣,會有不同的Decimal,但是會有相應的方法獲得,這個不需要擔心,在下一個連載會講到。
if err != nil {
beego.Error(err.Error())
} else {
//這個就是地址中以太坊的餘額
balanceV := float64(balance.Int64()) * math.Pow(10, -18)
}複製程式碼
結束
接受捐贈,多少都是支援。
WechatIMG13