.github
Create FUNDING.ymlcmd
Add initial CLIexample
update makefilevendor
Update btcutil. Resolves #31,#34.gitignore
Update .gitignore.goreleaser.yml
Update .goreleaser.yml.travis.yml
Update .travis.ymlCONTRIBUTING.md
Add CONTRIBUTING.md file with guidelines for reporting bugs, suggesting enhancements, and submitting pull requestsfunding.json
Add projectId filego.mod
Update btcutil. Resolves #31,#34go.sum
Update btcutil. Resolves #31,#34Gopkg.lock
dep ensureGopkg.toml
dep inithdwallet_test.go
Add unit tests for wallet derivation functionality, verifying address, private key, and public key against predefined test vectorshdwallet.go
Update private key derivation to ensure secp256k1 compliance. Add tests for verifying curve types and parameters in HD wallet implementation. Resolves #37LICENSE
update readmeMakefile
Update Makefile and READMEREADME.md
Update READMEgo-ethereum-hdwallet
Ethereum HD Wallet derivations from [mnemonic] seed in Go (golang). Implements the go-ethereum
accounts.Walletinterface.
Install
go get -u github.com/miguelmota/go-ethereum-hdwalletDocumenation
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 install github.com/miguelmota/go-ethereum-hdwallet/cmd/geth-hdwallet@latest$ 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: 63e21d10fd50155dbba0e7d3f7431a400b84b4c2ac1ee38872f82448fe3ecfb9Development
Build CLI:
make buildFormat code:
make formatTest
Run tests:
make testRelease
Git tag after committing latest changes:
git tag v0.1.xCreate a release with goreleaser:
make releaseContributing
Pull requests are welcome!
For contributions please create a new branch and submit a pull request for review.
License
Released under the MIT license.