Documentation
¶
Index ¶
- Variables
- func NewMnemonic(bits int) (string, error)
- func NewSeed() ([]byte, error)
- func NewSeedFromMnemonic(mnemonic string) ([]byte, error)
- type DerivationPath
- type Wallet
- func (w *Wallet) Accounts() []accounts.Account
- func (w *Wallet) Address(account accounts.Account) (common.Address, error)
- func (w *Wallet) AddressBytes(account accounts.Account) ([]byte, error)
- func (w *Wallet) AddressHex(account accounts.Account) (string, error)
- func (w *Wallet) Close() error
- func (w *Wallet) Contains(account accounts.Account) bool
- func (w *Wallet) Derive(path DerivationPath, pin bool) (accounts.Account, error)
- func (w *Wallet) Open(passphrase string) error
- func (w *Wallet) Path(account accounts.Account) (string, error)
- func (w *Wallet) PrivateKey(account accounts.Account) (*ecdsa.PrivateKey, error)
- func (w *Wallet) PrivateKeyBytes(account accounts.Account) ([]byte, error)
- func (w *Wallet) PrivateKeyHex(account accounts.Account) (string, error)
- func (w *Wallet) PublicKey(account accounts.Account) (*ecdsa.PublicKey, error)
- func (w *Wallet) PublicKeyBytes(account accounts.Account) ([]byte, error)
- func (w *Wallet) PublicKeyHex(account accounts.Account) (string, error)
- func (w *Wallet) SelfDerive(base DerivationPath, chain hpb.ChainStateReader)
- func (w *Wallet) SignHash(account accounts.Account, hash []byte) ([]byte, error)
- func (w *Wallet) SignHashWithPassphrase(account accounts.Account, passphrase string, hash []byte) ([]byte, error)
- func (w *Wallet) SignTx(account accounts.Account, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error)
- func (w *Wallet) SignTxWithPassphrase(account accounts.Account, passphrase string, tx *types.Transaction, ...) (*types.Transaction, error)
- func (w *Wallet) Status() (string, error)
- func (w *Wallet) URL() accounts.URL
- func (w *Wallet) Unpin(account accounts.Account) error
Constants ¶
This section is empty.
Variables ¶
var DefaultBaseDerivationPath = DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0, 0}
DefaultBaseDerivationPath is the base path from which custom derivation endpoints are incremented. As such, the first account will be at m/44'/60'/0'/0/0, the second at m/44'/60'/0'/0/1, etc.
var DefaultRootDerivationPath = DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0}
DefaultRootDerivationPath is the root path to which custom derivation endpoints are appended. As such, the first account will be at m/44'/60'/0'/0, the second at m/44'/60'/0'/1, etc.
var LegacyLedgerBaseDerivationPath = DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0}
LegacyLedgerBaseDerivationPath is the legacy base path from which custom derivation endpoints are incremented. As such, the first account will be at m/44'/60'/0'/0, the second at m/44'/60'/0'/1, etc.
Functions ¶
func NewMnemonic ¶
NewMnemonic returns a randomly generated BIP-39 mnemonic using 128-256 bits of entropy.
func NewSeedFromMnemonic ¶
NewSeedFromMnemonic returns a BIP-39 seed based on a BIP-39 mnemonic.
Types ¶
type DerivationPath ¶
type DerivationPath []uint32
DerivationPath represents the computer friendly version of a hierarchical deterministic wallet account derivaion path.
The BIP-32 spec https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki defines derivation paths to be of the form:
m / purpose' / coin_type' / account' / change / address_index
The BIP-44 spec https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki defines that the `purpose` be 44' (or 0x8000002C) for crypto currencies, and SLIP-44 https://github.com/satoshilabs/slips/blob/master/slip-0044.md assigns the `coin_type` 60' (or 0x8000003C) to Ethereum.
The root path for Ethereum is m/44'/60'/0'/0 according to the specification from https://github.com/ethereum/EIPs/issues/84, albeit it's not set in stone yet whether accounts should increment the last component or the children of that. We will go with the simpler approach of incrementing the last component.
func MustParseDerivationPath ¶
func MustParseDerivationPath(path string) DerivationPath
MustParseDerivationPath parses the derivation path in string format into []uint32 but will panic if it can't parse it.
func ParseDerivationPath ¶
func ParseDerivationPath(path string) (DerivationPath, error)
ParseDerivationPath converts a user specified derivation path string to the internal binary representation.
Full derivation paths need to start with the `m/` prefix, relative derivation paths (which will get appended to the default root path) must not have prefixes in front of the first element. Whitespace is ignored.
func (DerivationPath) MarshalJSON ¶
func (path DerivationPath) MarshalJSON() ([]byte, error)
MarshalJSON turns a derivation path into its json-serialized string
func (DerivationPath) String ¶
func (path DerivationPath) String() string
String implements the stringer interface, converting a binary derivation path to its canonical representation.
func (*DerivationPath) UnmarshalJSON ¶
func (path *DerivationPath) UnmarshalJSON(b []byte) error
UnmarshalJSON a json-serialized string back into a derivation path
type Wallet ¶
type Wallet struct {
// contains filtered or unexported fields
}
Wallet is the underlying wallet struct.
func NewFromMnemonic ¶
NewFromMnemonic returns a new wallet from a BIP-39 mnemonic.
func NewFromSeed ¶
NewFromSeed returns a new wallet from a BIP-39 seed.
func (*Wallet) Accounts ¶
Accounts implements accounts.Wallet, returning the list of accounts pinned to the wallet. If self-derivation was enabled, the account list is periodically expanded based on current chain state.
func (*Wallet) AddressBytes ¶
AddressBytes returns the address in bytes format of the account.
func (*Wallet) AddressHex ¶
AddressHex returns the address in hex string format of the account.
func (*Wallet) Close ¶
Close implements accounts.Wallet, however this does nothing since this is not a hardware device.
func (*Wallet) Contains ¶
Contains implements accounts.Wallet, returning whether a particular account is or is not pinned into this wallet instance.
func (*Wallet) Derive ¶
Derive implements accounts.Wallet, deriving a new account at the specific derivation path. If pin is set to true, the account will be added to the list of tracked accounts.
func (*Wallet) Open ¶
Open implements accounts.Wallet, however this does nothing since this is not a hardware device.
func (*Wallet) PrivateKey ¶
PrivateKey returns the ECDSA private key of the account.
func (*Wallet) PrivateKeyBytes ¶
PrivateKeyBytes returns the ECDSA private key in bytes format of the account.
func (*Wallet) PrivateKeyHex ¶
PrivateKeyHex return the ECDSA private key in hex string format of the account.
func (*Wallet) PublicKeyBytes ¶
PublicKeyBytes returns the ECDSA public key in bytes format of the account.
func (*Wallet) PublicKeyHex ¶
PublicKeyHex return the ECDSA public key in hex string format of the account.
func (*Wallet) SelfDerive ¶
func (w *Wallet) SelfDerive(base DerivationPath, chain hpb.ChainStateReader)
SelfDerive implements accounts.Wallet, trying to discover accounts that the user used previously (based on the chain state), but ones that he/she did not explicitly pin to the wallet manually. To avoid chain head monitoring, self derivation only runs during account listing (and even then throttled).
func (*Wallet) SignHashWithPassphrase ¶
func (w *Wallet) SignHashWithPassphrase(account accounts.Account, passphrase string, hash []byte) ([]byte, error)
SignHashWithPassphrase implements accounts.Wallet, attempting to sign the given hash with the given account using the passphrase as extra authentication.
func (*Wallet) SignTx ¶
func (w *Wallet) SignTx(account accounts.Account, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error)
SignTx implements accounts.Wallet, which allows the account to sign an Ethereum transaction.
func (*Wallet) SignTxWithPassphrase ¶
func (w *Wallet) SignTxWithPassphrase(account accounts.Account, passphrase string, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error)
SignTxWithPassphrase implements accounts.Wallet, attempting to sign the given transaction with the given account using passphrase as extra authentication.
func (*Wallet) Status ¶
Status implements accounts.Wallet, returning a custom status message from the underlying vendor-specific hardware wallet implementation, however this does nothing since this is not a hardware device.