From 98d6dda0c4b0fdb83440350bf014cc3acbb5e1ec Mon Sep 17 00:00:00 2001 From: Jan Pochyla Date: Wed, 6 Sep 2017 11:01:45 +0200 Subject: [PATCH] rocksdb implements outpoint address lookup --- rocksdb.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/rocksdb.go b/rocksdb.go index aa2e3111..0f970871 100644 --- a/rocksdb.go +++ b/rocksdb.go @@ -55,6 +55,20 @@ func (d *RocksDB) Close() error { return nil } +func (d *RocksDB) GetOutpointAddresses(txid string, vout uint32) ([]string, error) { + log.Printf("rocksdb: outpoint get %s:%d", txid, vout) + k, err := packOutpointKey(txid, vout) + if err != nil { + return nil, err + } + v, err := d.db.Get(d.ro, k) + if err != nil { + return nil, err + } + defer v.Free() + return unpackOutpointValue(v.Data()) +} + func (d *RocksDB) GetAddressTransactions(address string, lower uint32, higher uint32, fn func(txids []string) error) (err error) { log.Printf("rocksdb: address get %d:%d %s", lower, higher, address) @@ -164,7 +178,7 @@ func (d *RocksDB) writeOutpoints(wb *gorocksdb.WriteBatch, block *Block) error { for _, tx := range block.Txs { for _, vout := range tx.Vout { - k, err := packOutpointKey(block.Height, tx.Txid, vout.N) + k, err := packOutpointKey(tx.Txid, vout.N) if err != nil { return err } @@ -178,14 +192,12 @@ func (d *RocksDB) writeOutpoints(wb *gorocksdb.WriteBatch, block *Block) error { return nil } -func packOutpointKey(height uint32, txid string, vout uint32) (b []byte, err error) { - h := packUint(height) +func packOutpointKey(txid string, vout uint32) (b []byte, err error) { t, err := packTxid(txid) if err != nil { return nil, err } v := packVarint(vout) - b = append(b, h...) b = append(b, t...) b = append(b, v...) return