diff --git a/cmd/ingest/main.go b/cmd/ingest/main.go index 37ffcbe..a1a9cca 100644 --- a/cmd/ingest/main.go +++ b/cmd/ingest/main.go @@ -202,13 +202,15 @@ func getBlock(rpcClient *rpcclient.Client, height int) (*parser.Block, error) { func handleBlock(db *sql.DB, block *parser.Block) { - + prevBlockHash := hex.EncodeToString(block.GetPrevHash()) blockHash := hex.EncodeToString(block.GetEncodableHash()) + //blockHash := hex.EncodeToString(block.GetDisplayHash()) marshaledBlock, _ := proto.Marshal(block.ToCompact()) - + err := storage.StoreBlock( db, block.GetHeight(), + prevBlockHash, blockHash, block.HasSaplingTransactions(), marshaledBlock, diff --git a/parser/block.go b/parser/block.go index fec619c..2ebc0b1 100644 --- a/parser/block.go +++ b/parser/block.go @@ -93,12 +93,16 @@ func (b *Block) GetHeight() int { return int(blockHeight) } +func (b *Block) GetPrevHash() []byte { + return b.hdr.HashPrevBlock +} + func (b *Block) ToCompact() *walletrpc.CompactBlock { compactBlock := &walletrpc.CompactBlock{ //TODO ProtoVersion: 1, Height: uint64(b.GetHeight()), - Hash: b.GetEncodableHash(), PrevHash: b.hdr.HashPrevBlock, + Hash: b.GetEncodableHash(), Time: b.hdr.Time, } diff --git a/storage/sqlite3.go b/storage/sqlite3.go index 08a6c19..5ed2a36 100644 --- a/storage/sqlite3.go +++ b/storage/sqlite3.go @@ -28,6 +28,7 @@ func CreateTables(conn *sql.DB) error { blockTable := ` CREATE TABLE IF NOT EXISTS blocks ( block_height INTEGER PRIMARY KEY, + prev_hash TEXT, block_hash TEXT, sapling BOOL, compact_encoding BLOB @@ -121,15 +122,15 @@ func GetBlockRange(ctx context.Context, db *sql.DB, blockOut chan<- []byte, errO errOut <- nil } -func StoreBlock(conn *sql.DB, height int, hash string, sapling bool, encoded []byte) error { - insertBlock := "REPLACE INTO blocks (block_height, block_hash, sapling, compact_encoding) values (?, ?, ?, ?)" +func StoreBlock(conn *sql.DB, height int, prev_hash string, hash string, sapling bool, encoded []byte) error { + insertBlock := "REPLACE INTO blocks (block_height, prev_hash, block_hash, sapling, compact_encoding) values ( ?, ?, ?, ?, ?)" tx, err := conn.Begin() if err != nil { return errors.Wrap(err, fmt.Sprintf("creating db tx %d", height)) } - _, err = tx.Exec(insertBlock, height, hash, sapling, encoded) + _, err = tx.Exec(insertBlock, height, prev_hash, hash, sapling, encoded) if err != nil { return errors.Wrap(err, fmt.Sprintf("storing compact block %d", height)) }