Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

everFinance/goether

Repository files navigation

goether

A simple Ethereum wallet implementation and utilities in Golang.

Install

go get -u github.com/everFinance/goether

Examples

More examples...

Send Eth with data

prvHex := "your prvkey"
rpc := "https://infura.io/v3/{{InfuraKey}}"
testWallet, err := goether.NewWallet(prvHex, rpc)
if err != nil {
 panic(err)
}
// default send DynamicFeeTx
txHash, err := testWallet.SendTx(
 common.HexToAddress("0xa06b79E655Db7D7C3B3E7B2ccEEb068c3259d0C9"), // To
 goether.EthToBN(0.12), // Value
 []byte("123"), // Data
 nil)
// send with opts
nonce := int(1)
gasLimit := int(999999)
txHash, err := testWallet.SendTx(
 common.HexToAddress("0xa06b79E655Db7D7C3B3E7B2ccEEb068c3259d0C9"),
 goether.EthToBN(0.12),
 []byte("123"),
 &goether.TxOpts{ // Configure nonce/gas yourself
 Nonce: &nonce,
 GasLimit: &gasLimit,
 GasPrice: goether.GweiToBN(10),
 })

Contract Interaction

abi := `[{"constant": true,"inputs": [{"name": "","type": "address"}],"name": "balanceOf","outputs": [{"name": "","type": "uint256"}],"payable": false,"stateMutability": "view","type": "function"},{"constant": false,"inputs": [{"name": "dst","type": "address"},{"name": "wad","type": "uint256"}],"name": "transfer","outputs": [{"name": "","type": "bool"}],"payable": false,"stateMutability": "nonpayable","type": "function"}]`
contractAddr := common.HexToAddress("contract address")
prvHex := "your prvkey"
rpc := "https://kovan.infura.io/v3/{{InfuraKey}}"
// init contract instance with wallet
testWallet, _ := goether.NewWallet(prvHex, rpc)
testContract, err := goether.NewContract(contractAddr, abi, rpc, testWallet)
if err != nil {
 panic(err)
}
// ERC20 BalanceOf
amount, err := testContract.CallMethod(
 "balanceOf", // Method name
 "latest", // Tag
 common.HexToAddress("0xa06b79e655db7d7c3b3e7b2cceeb068c3259d0c9")) // Args
// ERC20 Transfer
txHash, err := testContract.ExecMethod(
 "transfer", // Method name
 &goether.TxOpts{ // Configure nonce/gas yourself, nil load params from eth-node
 Nonce: &nonce,
 GasLimit: &gasLimit,
 GasPrice: goether.GweiToBN(10),
 },
 common.HexToAddress("0xab6c371B6c466BcF14d4003601951e5873dF2AcA"), // Args
 big.NewInt(100))

Modules

Signer

Ethereum Account which can be used to sign messages and transactions.

  • NewSignerFromMnemonic
  • SignTx
  • SignMsg
  • SignTypedData
  • GetPublicKey
  • GetPublicKeyHex
  • GetPrivateKey
  • Decrypt

Wallet

Connect to Ethereum Network, execute state changing operations.

  • SendTx
  • SendLegacyTx
  • GetAddress
  • GetBalance
  • GetNonce
  • GetPendingNonce

Contract

Creating Contract Instance for call & execute contract.

  • CallMethod
  • ExecMethod
  • EncodeData
  • EncodeDataHex
  • DecodeData
  • DecodeDataHex
  • DecodeEvent
  • DecodeEventHex

Utils

  • EthToBN
  • GweiToBN
  • EIP712Hash
  • Ecrecover
  • Encrypt

About

A simple Ethereum wallet implementation and utilities in Golang

Topics

Resources

License

Stars

Watchers

Forks

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /