INNER CODE UNIT · Go
NewAddress
volodymyrprokopyuk/go-blockchain · chain/account.go:52
func NewAddress(pub *ecdsa.PublicKey) Address {
jpub, _ := json.Marshal(newP256k1PublicKey(pub))
hash := make([]byte, 64)
sha3.ShakeSum256(hash, jpub)
return Address(hex.EncodeToString(hash[:32]))
}
type Account struct {
prv *ecdsa.PrivateKey
addr Address // derived
}
func NewAccount() (Account, error) {
prv, err := ecdsa.GenerateKey(ecc.P256k1(), rand.Reader)
if err != nil {
return Account{}, err
}
addr := NewAddress(&prv.PublicKey)