diff --git a/lnwallet/btcwallet/blockchain.go b/lnwallet/btcwallet/blockchain.go index bc6237ec1..17078e35b 100644 --- a/lnwallet/btcwallet/blockchain.go +++ b/lnwallet/btcwallet/blockchain.go @@ -53,3 +53,28 @@ func (b *BtcWallet) GetTransaction(txid *wire.ShaHash) (*wire.MsgTx, error) { return tx.MsgTx(), nil } + +// GetBlock returns a raw block from the server given its hash. +// +// This method is a part of the lnwallet.BlockChainIO interface. +func (b *BtcWallet) GetBlock(blockHash *wire.ShaHash) (*wire.MsgBlock, error) { + block, err := b.rpc.GetBlock(blockHash) + if err != nil { + return nil, err + } + + return block, nil +} + +// GetBlockHash returns the hash of the block in the best block chain at the +// given height. +// +// This method is a part of the lnwallet.BlockChainIO interface. +func (b *BtcWallet) GetBlockHash(blockHeight int64) (*wire.ShaHash, error) { + blockHash, err := b.rpc.GetBlockHash(blockHeight) + if err != nil { + return nil, err + } + + return blockHash, nil +} diff --git a/lnwallet/interface.go b/lnwallet/interface.go index 6a114f3b4..23ec6c22f 100644 --- a/lnwallet/interface.go +++ b/lnwallet/interface.go @@ -210,8 +210,15 @@ type BlockChainIO interface { GetUtxo(txid *wire.ShaHash, index uint32) (*wire.TxOut, error) // GetTransaction returns the full transaction identified by the passed - // transaction ID. - GetTransaction(txid *wire.ShaHash) (*wire.MsgTx, error) + // transaction ID. + GetTransaction(txid *wire.ShaHash) (*wire.MsgTx, error) + + // GetBlockHash returns the hash of the block in the best block chain at the + // given height. + GetBlockHash(blockHeight int64) (*wire.ShaHash, error) + + // GetBlock returns a block by the given hash. + GetBlock(blockHash *wire.ShaHash) (*wire.MsgBlock, error) } // SignDescriptor houses the necessary information required to successfully sign