From 6155fd5d01dec6f62345da434ba3c6e38e270cfe Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Tue, 22 Mar 2016 18:46:54 -0700 Subject: [PATCH] channeldb: move node ID/addr funds to node.go --- channeldb/nodes.go | 53 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/channeldb/nodes.go b/channeldb/nodes.go index d03b3406..a1193997 100644 --- a/channeldb/nodes.go +++ b/channeldb/nodes.go @@ -1 +1,54 @@ package channeldb + +import ( + "fmt" + + "golang.org/x/crypto/ripemd160" + + "github.com/boltdb/bolt" + "github.com/btcsuite/btcutil" +) + +var ( + idBucket = []byte("i") +) + +// PutIdKey saves the hash160 of the public key used for our identity within +// the Lightning Network. +func (d *DB) PutIdKey(pkh []byte) error { + return d.db.Update(func(tx *bolt.Tx) error { + // Get the bucket dedicated to storing the meta-data for open + // channels. + bucket, err := tx.CreateBucketIfNotExists(idBucket) + if err != nil { + return err + } + + return bucket.Put(identityKey, pkh) + }) +} + +// GetIdKey returns the hash160 of the public key used for out identity within +// the Lightning Network as a p2pkh bitcoin address. +func (d *DB) GetIdAdr() (*btcutil.AddressPubKeyHash, error) { + pkh := make([]byte, ripemd160.Size) + err := d.db.View(func(tx *bolt.Tx) error { + // Get the bucket dedicated to storing the meta-data for open + // channels. + bucket := tx.Bucket(idBucket) + if bucket == nil { + return fmt.Errorf("id bucket not created") + } + + pkBytes := bucket.Get(identityKey) + copy(pkh, pkBytes) + + return nil + }) + if err != nil { + return nil, err + } + + log.Infof("identity key has length %d", len(pkh)) + return btcutil.NewAddressPubKeyHash(pkh, ActiveNetParams) +}