用Golang開發以太坊去中心化應用(連載一)

[TOC]html

我的簡介

HundredLee
2013年起,便奮鬥在數字貨幣交易平臺開發第一線,2016年接觸區塊鏈,今後走上不歸路。目前正在開發一套全新的高速撮合引擎。
微博 :weibo.com/hundredlee2…
郵箱 :hundred9411#gmail.comgit

連載準備

連載一,介紹以太坊,查詢餘額等。
連載二,go-ethereum轉出以太坊、如何對接token、如何查詢token餘額、如何轉出token。
連載三,交易平臺對接以太坊的一些經驗和總結。github

以太坊是神馬東西?

百度百科:golang

以太坊(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)
    }複製代碼

結束

接受捐贈,多少都是支持。
ui

WechatIMG13
WechatIMG13
相關文章
相關標籤/搜索