hd

package module
v1.0.0-fix Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 26, 2020 License: Apache-2.0 Imports: 15 Imported by: 0

README

go-eth2-wallet-hd

Tag License GoDoc Travis CI codecov.io Go Report Card

Hierarchical deterministic Ethereum 2 wallet.

Table of Contents

Install

go-eth2-wallet-hd is a standard Go module which can be installed with:

go get github.com/wealdtech/go-eth2-wallet-hd

Usage

Access to the wallet is usually via go-eth2-wallet; the first two examples below shows how this can be achieved.

This wallet generates keys deterministically based on a seed phrase stored within the wallet itself.

The wallet uses the path m/12381/3600/n/0, where n is the number of the account created; for the first account created n is 0, for the second accout n is 1, etc.

Wallet and account names may be composed of any valid UTF-8 characters; the only restriction is they can not start with the underscore (_) character.

Example
Creating a wallet
package main

import (
	e2wallet "github.com/wealdtech/go-eth2-wallet"
)

func main() {

    // Create a wallet
    wallet, err := e2wallet.CreateWallet("My wallet", e2wallet.WithType("hierarchical deterministic"), e2wallet.WithPassphrase([]byte("my wallet secret")))
    if err != nil {
        panic(err)
    }

    ...
}
Accessing a wallet
package main

import (
	e2wallet "github.com/wealdtech/go-eth2-wallet"
)

func main() {

    // Open a wallet
    wallet, err := e2wallet.OpenWallet("My wallet")
    if err != nil {
        panic(err)
    }

    ...
}
Creating an account
package main

import (
	e2wallet "github.com/wealdtech/go-eth2-wallet"
)

func main() {

    // Open a wallet
    wallet, err := e2wallet.OpenWallet("My wallet")
    if err != nil {
        panic(err)
    }

    err = wallet.Unlock([]byte("my wallet secret"))
    if err != nil {
        panic(err)
    }
    // Always immediately defer locking the wallet to ensure it does not remain unlocked outside of the function.
    defer wallet.Lock()
    
    account, err := wallet.CreateAccount("My account", []byte("my account secret"))
    if err != nil {
        panic(err)
    }
    // Wallet should be locked as soon as unlocked operations have finished; it is safe to explicitly call wallet.Lock() as well
    // as defer it as per above.
    wallet.Lock()


    ...
}

Maintainers

Jim McDonald: @mcdee.

Contribute

Contributions welcome. Please check out the issues.

License

Apache-2.0 © 2019 Weald Technology Trading Ltd

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateWallet

func CreateWallet(name string, passphrase []byte, store wtypes.Store, encryptor wtypes.Encryptor) (wtypes.Wallet, error)

CreateWallet creates a new wallet with the given name and stores it in the provided store. This will error if the wallet already exists.

func CreateWalletFromSeed

func CreateWalletFromSeed(name string, walletIndex uint64, passphrase []byte, store wtypes.Store, encryptor wtypes.Encryptor, seed []byte) (wtypes.Wallet, error)

CreateWalletFromSeed creates a wallet with the given name from a seed and stores it in the provided store.

func DeserializeWallet

func DeserializeWallet(data []byte, store wtypes.Store, encryptor wtypes.Encryptor) (wtypes.Wallet, error)

DeserializeWallet deserializes a wallet from its byte-level representation

func Import

func Import(encryptedData []byte, passphrase []byte, store wtypes.Store, encryptor wtypes.Encryptor) (wtypes.Wallet, error)

Import imports the entire wallet, protected by an additional passphrase.

func OpenWallet

func OpenWallet(name string, store wtypes.Store, encryptor wtypes.Encryptor) (wtypes.Wallet, error)

OpenWallet opens an existing wallet with the given name.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL