
Security News
npm Adopts OIDC for Trusted Publishing in CI/CD Workflows
npm now supports Trusted Publishing with OIDC, enabling secure package publishing directly from CI/CD workflows without relying on long-lived tokens.
mygithub.libinneed.workers.dev/wealdtech/go-eth2-wallet-dirk
Ethereum 2 wallet held by dirk.
go-eth2-wallet-dirk
is a standard Go module which can be installed with:
go get github.com/wealdtech/go-eth2-wallet-dirk
Access to the wallet is through the Open()
call.
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 non-deterministically, i.e. there is no relationship between keys or idea of a "seed".
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.
Note that although non-deterministic wallets do not have passphrases they still need to be unlocked before accounts can be created. This can be carried out with walllet.Unlock(nil)
package main
import (
"github.com/wealdtech/go-eth2-wallet-dirk"
"google.golang.org/grpc/credentials"
)
func main() {
// Open a wallet
wallet, err := dirk.Open(context.Background(),
dirk.WithName("My wallet"),
dirk.WithEndpoints([]*Endpoint{
{"host": "host1.example.com", port: 12345},
{"host": "host2.example.com", port: 12345},
}),
dirk.WithCredentials(credentials.NewTLS(tlsConfig)),
)
if err != nil {
panic(err)
}
...
}
package main
import (
"github.com/wealdtech/go-eth2-wallet-dirk"
)
func main() {
// Open a wallet
wallet, err := dirk.Open(context.Background(),
dirk.WithName("My wallet"),
dirk.WithEndpoints([]*Endpoint{
{"host": "host1.example.com", port: 12345},
{"host": "host2.example.com", port: 12345},
}),
dirk.WithCredentials(credentials.NewTLS(tlsConfig)),
)
if err != nil {
panic(err)
}
// Dirk walllets have their own rules as to if a client is allowed to unlock them.
err = wallet.(e2wtypes.WalletLocker).Unlock(nil)
if err != nil {
panic(err)
}
// Always immediately defer locking the wallet to ensure it does not remain unlocked outside of the function.
defer wallet.(e2wtypes.WalletLocker).Lock()
accountCreator, isAccountCreator := wallet.(e2wtypes.WalletDistributedAccountCreator)
if !isAccountCreator {
panic(errors.New("not a distributed account creator"))
}
account, err := accountCreator.CreateDistributedAccount(context.Background(),"My account", 2, 3, nil)
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.(e2wtypes.WalletLocker).Lock()
...
}
Jim McDonald: @mcdee.
Contributions welcome. Please check out the issues.
Apache-2.0 © 2020 Weald Technology Trading Ltd
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
npm now supports Trusted Publishing with OIDC, enabling secure package publishing directly from CI/CD workflows without relying on long-lived tokens.
Research
/Security News
A RubyGems malware campaign used 60 malicious packages posing as automation tools to steal credentials from social media and marketing tool users.
Security News
The CNA Scorecard ranks CVE issuers by data completeness, revealing major gaps in patch info and software identifiers across thousands of vulnerabilities.