您正在查看: Ethereum-开源推荐 分类下的文章

简单的以太坊API以获取您的ERC20代币余额以及有用的信息

https://github.com/hunterlong/tokenbalance

import (
    "github.com/hunterlong/tokenbalance"
)

func main() {
    // connect to your Geth Server
    configs = &tokenbalance.Config{
         GethLocation: "https://eth.coinapp.io",
         Logs:         true,
    }
    configs.Connect()

    // insert a Token Contract address and Wallet address
    contract := "0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0"
    wallet := "0xbfaa1a1ea534d35199e84859975648b59880f639"

    // query the blockchain and wallet details
    token, err := tokenbalance.New(contract, wallet)

    // Token Balance will respond back useful things
    token.BalanceString()  // "600000.0"
    token.ETHString()      // "1.020095885777777767"
    token.Name             // "OmiseGO"
    token.Symbol           // "OMG"
    token.Decimals         // 18
    token.Balance          // big.Int() (token balance)
    token.ETH              // big.Int() (ether balance)
}

Ethereum HD Wallet derivations in Go

https://github.com/miguelmota/go-ethereum-hdwallet.git

Install

go get -u github.com/miguelmota/go-ethereum-hdwallet

Documenation

https://godoc.org/github.com/miguelmota/go-ethereum-hdwallet

Getting started

package main

import (
    "fmt"
    "log"

    "github.com/miguelmota/go-ethereum-hdwallet"
)

func main() {
    mnemonic := "tag volcano eight thank tide danger coast health above argue embrace heavy"
    wallet, err := hdwallet.NewFromMnemonic(mnemonic)
    if err != nil {
        log.Fatal(err)
    }

    path := hdwallet.MustParseDerivationPath("m/44'/60'/0'/0/0")
    account, err := wallet.Derive(path, false)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(account.Address.Hex()) // 0xC49926C4124cEe1cbA0Ea94Ea31a6c12318df947

    path = hdwallet.MustParseDerivationPath("m/44'/60'/0'/0/1")
    account, err = wallet.Derive(path, false)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(account.Address.Hex()) // 0x8230645aC28A4EdD1b0B53E7Cd8019744E9dD559
}

Signing transaction

package main

import (
    "log"
    "math/big"

    "github.com/davecgh/go-spew/spew"
    "github.com/ethereum/go-ethereum/common"
    "github.com/ethereum/go-ethereum/core/types"
    "github.com/miguelmota/go-ethereum-hdwallet"
)

func main() {
    mnemonic := "tag volcano eight thank tide danger coast health above argue embrace heavy"
    wallet, err := hdwallet.NewFromMnemonic(mnemonic)
    if err != nil {
        log.Fatal(err)
    }

    path := hdwallet.MustParseDerivationPath("m/44'/60'/0'/0/0")
    account, err := wallet.Derive(path, true)
    if err != nil {
        log.Fatal(err)
    }

    nonce := uint64(0)
    value := big.NewInt(1000000000000000000)
    toAddress := common.HexToAddress("0x0")
    gasLimit := uint64(21000)
    gasPrice := big.NewInt(21000000000)
    var data []byte

    tx := types.NewTransaction(nonce, toAddress, value, gasLimit, gasPrice, data)
    signedTx, err := wallet.SignTx(account, tx, nil)
    if err != nil {
        log.Fatal(err)
    }

    spew.Dump(signedTx)
}

CLI

go get -u github.com/miguelmota/go-ethereum-hdwallet/cmd/geth-hdwallet
$ geth-hdwallet -mnemonic "tag volcano eight thank tide danger coast health above argue embrace heavy" -path "m/44'/60'/0'/0/0"

public address: 0xC49926C4124cEe1cbA0Ea94Ea31a6c12318df947
private key: 63e21d10fd50155dbba0e7d3f7431a400b84b4c2ac1ee38872f82448fe3ecfb9

Test

make test

弹性的以太坊事件监听器,可将您的智能合约事件和后端微服务联系起来

https://github.com/eventeum/eventeum

以太坊事件监听器,将您的智能合约事件和后端微服务联系起来。Eventeum侦听以太坊网络发出的特定事件,并将这些事件广播到您的中间件层。这提供了不同的关注点分离,并且意味着您的微服务不必直接将事件订阅到以太坊节点。