This is a Ethereum compatible Go Client
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.
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)
result, err = contract.Call(transaction, "balanceOf", coinbase)
if result != nil && err == nil {
balance, _ := result.ToComplexIntResponse()
fmt.Println(balance.ToBigInt())
}
hash, err = contract.Send(transaction, "approve", coinbase, 10)
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)- Create at least one test for you implementation.
- Don't change the import path to your github username.
- run
go fmtfor all your changes. - run
go test -v ./...
- Please use the travis log if an error occurs.
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
go get -u github.com/apexliu/go-web3glide get github.com/apexliu/go-web3- go ^1.8.3
- golang.org/x/net
Node running in dev mode:
geth --dev --shh --ws --wsorigins="*" --rpc --rpcapi admin,db,eth,debug,miner,net,shh,txpool,personal,web3 --mineFull test:
go test -v ./test/...Individual test:
go test -v test/modulename/filename.goPackage go-web3 is licensed under the GPLv3 License.