Skip to content

goqihoo/go-web3

 
 

Repository files navigation

Ethereum Go Client

Build Status

This is a Ethereum compatible Go Client which implements the Eth JSON RPC Module, Personal JSON RPC Module and NET JSON RPC Module.

Status

This package is currently under active development. It is not already stable and the infrastructure is not complete and there are still several RPCs left to implement.

Usage

Deploying a contract

bytecode := ... #contract bytecode
abi := ... #contract abi

var connection = web3.NewWeb3(providers.NewHTTPProvider("127.0.0.1:8545", 10, false))
contract, err := connection.Eth.NewContract(abi)

transaction := new(dto.TransactionParameters)
coinbase, err := connection.Eth.GetCoinbase()
transaction.From = coinbase
transaction.Gas = big.NewInt(4000000)

hash, err := contract.Deploy(transaction, bytecode, nil)

fmt.Println(hash)
	

Using contract public functions

result, err = contract.Call(transaction, "balanceOf", coinbase)
if result != nil && err == nil {
	balance, _ := result.ToComplexIntResponse()
	fmt.Println(balance.ToBigInt())
}
	

Using contract payable functions

hash, err = contract.Send(transaction, "approve", coinbase, 10)
	

Using RPC commands

GetBalance

balance, err := connection.Eth.GetBalance(coinbase, block.LATEST)

SendTransaction

transaction := new(dto.TransactionParameters)
transaction.From = coinbase
transaction.To = coinbase
transaction.Value = big.NewInt(10)
transaction.Gas = big.NewInt(40000)
transaction.Data = types.ComplexString("p2p transaction")

txID, err := connection.Eth.SendTransaction(transaction)

Contribute!

In Progress =

Partially implemented =

TODO List

  • web3_clientVersion
  • web3_sha3
  • net_version
  • net_peerCount
  • net_listening
  • eth_protocolVersion
  • eth_syncing
  • eth_coinbase
  • eth_mining
  • eth_hashrate
  • eth_gasPrice
  • eth_accounts
  • eth_blockNumber
  • eth_getBalance
  • eth_getStorageAt (deprecated)
  • eth_getTransactionCount
  • eth_getBlockTransactionCountByHash
  • eth_getBlockTransactionCountByNumber
  • eth_getUncleCountByBlockHash
  • eth_getUncleCountByBlockNumber
  • eth_getCode
  • eth_sign
  • eth_sendTransaction
  • eth_sendRawTransaction
  • eth_call
  • eth_estimateGas
  • eth_getBlockByHash
  • eth_getBlockByNumber
  • eth_getTransactionByHash
  • eth_getTransactionByBlockHashAndIndex
  • eth_getTransactionByBlockNumberAndIndex
  • eth_getTransactionReceipt
  • eth_getUncleByBlockHashAndIndex
  • eth_getUncleByBlockNumberAndIndex
  • eth_getCompilers
  • eth_compileLLL
  • eth_compileSolidity (deprecated)
  • eth_compileSerpent
  • eth_newFilter
  • eth_newBlockFilter
  • eth_newPendingTransactionFilter
  • eth_uninstallFilter
  • eth_getFilterChanges
  • eth_getFilterLogs
  • eth_getLogs
  • eth_getWork
  • eth_submitWork
  • eth_submitHashrate
  • db_putString
  • db_getString
  • db_putHex
  • db_getHex
  • shh_post
  • shh_version
  • shh_newIdentity
  • shh_hasIdentity
  • shh_newGroup
  • shh_addToGroup
  • shh_newFilter
  • shh_uninstallFilter
  • shh_getFilterChanges
  • shh_getMessages
  • personal_listAccounts
  • personal_newAccount
  • personal_sendTransaction
  • personal_unlockAccount

Installation

go get

go get -u github.com/goqihoo/go-web3

glide

glide get github.com/goqihoo/go-web3

Requirements

  • go ^1.8.3
  • golang.org/x/net

Testing

Node running in dev mode:

geth --dev --ws --wsorigins="*" --rpc --rpcapi eth,web3,personal,ssh,net --mine

Full test:

go test -v test/modulename/*.go

Individual test:

go test -v test/modulename/filename.go

License

Package go-web3 is licensed under the GPLv3 License.

About

Ethereum Go Client [obsolete]

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%