ChainQueryApi (#926)

* ChainQueryApi

* cleanup
This commit is contained in:
rorp 2019-12-09 07:39:35 -08:00 committed by Chris Stewart
parent cbd038b514
commit af70acb03b
10 changed files with 37 additions and 10 deletions

View file

@ -5,7 +5,7 @@ import java.nio.file.Files
import akka.actor.ActorSystem
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.core.node.NodeApi
import org.bitcoins.core.api.NodeApi
import org.bitcoins.node.config.NodeAppConfig
import org.bitcoins.node.models.Peer
import org.bitcoins.node.networking.peer.DataMessageHandler

View file

@ -5,6 +5,7 @@ import org.bitcoins.chain.models.{
CompactFilterDb,
CompactFilterHeaderDb
}
import org.bitcoins.core.api.ChainQueryApi
import org.bitcoins.core.crypto.{DoubleSha256Digest, DoubleSha256DigestBE}
import org.bitcoins.core.gcs.FilterHeader
import org.bitcoins.core.p2p.CompactFilterMessage
@ -17,7 +18,7 @@ import scala.concurrent.{ExecutionContext, Future}
/**
* Entry api to the chain project for adding new things to our blockchain
*/
trait ChainApi {
trait ChainApi extends ChainQueryApi {
/**
* Adds a block header to our chain project
@ -50,7 +51,7 @@ trait ChainApi {
def getBlockCount(implicit ec: ExecutionContext): Future[Int]
/** Gets the hash of the block that is what we consider "best" */
def getBestBlockHash(
override def getBestBlockHash(
implicit ec: ExecutionContext): Future[DoubleSha256DigestBE]
/** Gets the best block header we have */
@ -186,4 +187,10 @@ trait ChainApi {
/** Returns the block height of the given block stamp */
def getHeightByBlockStamp(blockStamp: BlockStamp)(
implicit ec: ExecutionContext): Future[Int]
/** @inheritdoc */
override def getBlockHeight(blockHash: DoubleSha256DigestBE)(
implicit ec: ExecutionContext): Future[Option[Int]] =
getHeader(blockHash).map(_.map(_.height))
}

View file

@ -0,0 +1,20 @@
package org.bitcoins.core.api
import org.bitcoins.core.crypto.DoubleSha256DigestBE
import scala.concurrent.{ExecutionContext, Future}
/**
* This trait provides methods to query various types of blockchain data.
*/
trait ChainQueryApi {
/** Gets the height of the given block */
def getBlockHeight(blockHash: DoubleSha256DigestBE)(
implicit ec: ExecutionContext): Future[Option[Int]]
/** Gets the hash of the block that is what we consider "best" */
def getBestBlockHash(
implicit ec: ExecutionContext): Future[DoubleSha256DigestBE]
}

View file

@ -1,4 +1,4 @@
package org.bitcoins.core.node
package org.bitcoins.core.api
import org.bitcoins.core.crypto.DoubleSha256Digest
import org.bitcoins.core.util.FutureUtil

View file

@ -100,7 +100,7 @@ val syncF: Future[ChainApi] = configF.flatMap { _ =>
import org.bitcoins.wallet.api.LockedWalletApi
import org.bitcoins.wallet.api.InitializeWalletSuccess
import org.bitcoins.wallet.Wallet
import org.bitcoins.core.node.NodeApi
import org.bitcoins.core.api.NodeApi
val walletF: Future[LockedWalletApi] = configF.flatMap { _ =>
Wallet.initialize(NodeApi.NoOp).collect {
case InitializeWalletSuccess(wallet) => wallet

View file

@ -8,8 +8,8 @@ import org.bitcoins.chain.models.{
CompactFilterDAO,
CompactFilterHeaderDAO
}
import org.bitcoins.core.api.NodeApi
import org.bitcoins.core.crypto.DoubleSha256Digest
import org.bitcoins.core.node.NodeApi
import org.bitcoins.core.p2p.{NetworkPayload, TypeIdentifier}
import org.bitcoins.core.protocol.BlockStamp
import org.bitcoins.core.protocol.script.ScriptPubKey

View file

@ -2,9 +2,9 @@ package org.bitcoins.testkit.wallet
import akka.actor.ActorSystem
import com.typesafe.config.{Config, ConfigFactory}
import org.bitcoins.core.api.NodeApi
import org.bitcoins.core.crypto.DoubleSha256Digest
import org.bitcoins.core.currency._
import org.bitcoins.core.node.NodeApi
import org.bitcoins.core.util.FutureUtil
import org.bitcoins.db.AppConfig
import org.bitcoins.rpc.client.common.{BitcoindRpcClient, BitcoindVersion}

View file

@ -38,7 +38,7 @@ import org.bitcoins.core.hd.HDChainType.External
import org.bitcoins.wallet.models.AddressDb
import org.bitcoins.wallet.models.AccountDb
import _root_.akka.actor.Address
import org.bitcoins.core.node.NodeApi
import org.bitcoins.core.api.NodeApi
import org.scalatest.compatible.Assertion
import scala.concurrent.ExecutionContext

View file

@ -1,11 +1,11 @@
package org.bitcoins.wallet
import org.bitcoins.core.api.NodeApi
import org.bitcoins.core.compat._
import org.bitcoins.core.config.BitcoinNetwork
import org.bitcoins.core.crypto._
import org.bitcoins.core.currency._
import org.bitcoins.core.hd._
import org.bitcoins.core.node.NodeApi
import org.bitcoins.core.protocol.BitcoinAddress
import org.bitcoins.core.protocol.transaction._
import org.bitcoins.core.wallet.builder.BitcoinTxBuilder

View file

@ -1,12 +1,12 @@
package org.bitcoins.wallet.api
import org.bitcoins.core.api.NodeApi
import org.bitcoins.core.bloom.BloomFilter
import org.bitcoins.core.config.NetworkParameters
import org.bitcoins.core.crypto._
import org.bitcoins.core.currency.CurrencyUnit
import org.bitcoins.core.gcs.{GolombFilter, SimpleFilterMatcher}
import org.bitcoins.core.hd.{AddressType, HDPurpose}
import org.bitcoins.core.node.NodeApi
import org.bitcoins.core.protocol.BitcoinAddress
import org.bitcoins.core.protocol.blockchain.{Block, ChainParams}
import org.bitcoins.core.protocol.transaction.Transaction