Move ChainApi to core (#1888)

* Move Chain Db Reps to core

* Move ChainApi to Core
This commit is contained in:
Ben Carman 2020-08-25 07:08:42 -05:00 committed by GitHub
parent 304896e171
commit f468fff7ea
41 changed files with 68 additions and 58 deletions

View file

@ -5,9 +5,9 @@ import java.time.{ZoneId, ZonedDateTime}
import akka.http.scaladsl.model.ContentTypes._
import akka.http.scaladsl.server.ValidationRejection
import akka.http.scaladsl.testkit.ScalatestRouteTest
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.core.Core
import org.bitcoins.core.api.wallet.{AddressInfo, CoinSelectionAlgo}
import org.bitcoins.core.api.chain.db.ChainApi
import org.bitcoins.core.api.wallet.db.{
AccountDb,
AddressDb,

View file

@ -3,8 +3,8 @@ package org.bitcoins.server
import akka.actor.ActorSystem
import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server._
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.commons.serializers.Picklers._
import org.bitcoins.core.api.chain.db.ChainApi
case class ChainRoutes(chain: ChainApi)(implicit system: ActorSystem)
extends ServerRoute {

View file

@ -6,7 +6,6 @@ import akka.actor.ActorSystem
import akka.dispatch.Dispatchers
import akka.http.scaladsl.Http
import com.typesafe.config.ConfigFactory
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.chain.blockchain.ChainHandler
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.models.{
@ -15,6 +14,7 @@ import org.bitcoins.chain.models.{
CompactFilterHeaderDAO
}
import org.bitcoins.core.Core
import org.bitcoins.core.api.chain.db.ChainApi
import org.bitcoins.core.config.{BitcoinNetworks, MainNet, RegTest, TestNet3}
import org.bitcoins.core.util.{BitcoinSLogger, FutureUtil, NetworkUtil}
import org.bitcoins.db._

View file

@ -1,11 +1,11 @@
package org.bitcoins.rpc.v18
import org.bitcoins.chain.models.BlockHeaderDbHelper
import org.bitcoins.commons.jsonmodels.bitcoind.{
AddressInfoResultPostV18,
AddressInfoResultPreV18
}
import org.bitcoins.commons.jsonmodels.bitcoind.RpcOpts.AddNodeArgument
import org.bitcoins.core.api.chain.db.BlockHeaderDbHelper
import org.bitcoins.core.protocol.blockchain.RegTestNetChainParams
import org.bitcoins.rpc.client.common.BitcoindVersion
import org.bitcoins.rpc.client.v18.BitcoindV18RpcClient

View file

@ -2,7 +2,7 @@ package org.bitcoins.chain.blockchain
import akka.actor.ActorSystem
import org.bitcoins.rpc.util.RpcUtil
import org.bitcoins.testkit.chain.{ChainDbUnitTest, ChainUnitTest}
import org.bitcoins.testkit.chain.ChainDbUnitTest
import org.bitcoins.testkit.chain.fixture.BitcoindChainHandlerViaZmq
import org.scalatest.FutureOutcome

View file

@ -1,7 +1,7 @@
package org.bitcoins.chain.blockchain
import akka.actor.ActorSystem
import org.bitcoins.chain.models.BlockHeaderDb
import org.bitcoins.core.api.chain.db.BlockHeaderDb
import org.bitcoins.testkit.chain.fixture.ChainFixture
import org.bitcoins.testkit.chain.{BlockHeaderHelper, ChainUnitTest}
import org.scalatest.FutureOutcome

View file

@ -1,10 +1,13 @@
package org.bitcoins.chain.blockchain
import akka.actor.ActorSystem
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.models.{BlockHeaderDb, BlockHeaderDbHelper}
import org.bitcoins.chain.pow.Pow
import org.bitcoins.core.api.chain.db.{
BlockHeaderDb,
BlockHeaderDbHelper,
ChainApi
}
import org.bitcoins.core.gcs.{BlockFilter, FilterHeader}
import org.bitcoins.core.number.{Int32, UInt32}
import org.bitcoins.core.p2p.CompactFilterMessage
@ -27,7 +30,6 @@ import org.bitcoins.testkit.util.{FileUtil, ScalaTestUtil}
import org.scalatest.{Assertion, FutureOutcome}
import play.api.libs.json.Json
import scala.annotation.tailrec
import scala.concurrent.Future
import scala.io.BufferedSource

View file

@ -1,8 +1,8 @@
package org.bitcoins.chain.blockchain.sync
import akka.actor.ActorSystem
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.chain.blockchain.ChainHandler
import org.bitcoins.core.api.chain.db.ChainApi
import org.bitcoins.crypto.DoubleSha256DigestBE
import org.bitcoins.testkit.chain.fixture.BitcoindChainHandlerViaRpc
import org.bitcoins.testkit.chain.{ChainDbUnitTest, SyncUtil}

View file

@ -1,7 +1,7 @@
package org.bitcoins.chain.blockchain.sync
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.chain.blockchain.ChainHandler
import org.bitcoins.core.api.chain.db.ChainApi
import org.bitcoins.core.gcs.FilterType
import org.bitcoins.core.protocol.blockchain.BlockHeader
import org.bitcoins.testkit.chain.fixture.BitcoindV19ChainHandler

View file

@ -2,7 +2,6 @@ package org.bitcoins.chain.config
import java.nio.file.Files
import akka.actor.ActorSystem
import ch.qos.logback.classic.Level
import com.typesafe.config.ConfigFactory
import org.bitcoins.core.config.{MainNet, RegTest, TestNet3}

View file

@ -2,6 +2,7 @@ package org.bitcoins.chain.models
import akka.actor.ActorSystem
import org.bitcoins.chain.blockchain.Blockchain
import org.bitcoins.core.api.chain.db.{BlockHeaderDb, BlockHeaderDbHelper}
import org.bitcoins.core.number.{Int32, UInt32}
import org.bitcoins.core.protocol.blockchain.BlockHeader
import org.bitcoins.core.util.TimeUtil

View file

@ -1,8 +1,9 @@
package org.bitcoins.chain.validation
import akka.actor.ActorSystem
import org.bitcoins.chain.models.{BlockHeaderDAO, BlockHeaderDbHelper}
import org.bitcoins.chain.models.BlockHeaderDAO
import org.bitcoins.chain.pow.Pow
import org.bitcoins.core.api.chain.db.BlockHeaderDbHelper
import org.bitcoins.core.protocol.blockchain.BlockHeader
import org.bitcoins.testkit.chain.{BlockHeaderHelper, ChainDbUnitTest}
import org.scalatest.{Assertion, FutureOutcome}
@ -28,7 +29,7 @@ class TipValidationTest extends ChainDbUnitTest {
val currentTipDb = BlockHeaderHelper.header2Db
val blockchain = Blockchain.fromHeaders(Vector(currentTipDb))
it must "connect two blocks with that are valid" in { bhDAO =>
it must "connect two blocks with that are valid" in { _ =>
val newValidTipDb =
BlockHeaderDbHelper.fromBlockHeader(
566093,

View file

@ -1,6 +1,6 @@
package org.bitcoins.chain.blockchain
import org.bitcoins.chain.models.BlockHeaderDb
import org.bitcoins.core.api.chain.db.BlockHeaderDb
import scala.collection.mutable

View file

@ -1,6 +1,6 @@
package org.bitcoins.chain.blockchain
import org.bitcoins.chain.models.BlockHeaderDb
import org.bitcoins.core.api.chain.db.BlockHeaderDb
/** @inheritdoc */
case class Blockchain(headers: Vector[BlockHeaderDb]) extends BaseBlockChain {

View file

@ -2,8 +2,8 @@ package org.bitcoins.chain.blockchain
import org.bitcoins.chain.ChainVerificationLogger
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.models.BlockHeaderDb
import org.bitcoins.chain.validation.{TipUpdateResult, TipValidation}
import org.bitcoins.core.api.chain.db.BlockHeaderDb
import org.bitcoins.core.protocol.blockchain.BlockHeader
import org.bitcoins.core.util.SeqWrapper
import org.bitcoins.crypto.DoubleSha256DigestBE
@ -12,7 +12,7 @@ import scala.annotation.tailrec
// INTERNAL NOTE: Due to changes in the Scala collections in 2.13 this
// class and its companion object
// has to be implemented separetely for the different Scala versions.
// has to be implemented separately for the different Scala versions.
// The general idea is that all three implement a collection, but slightly
// different ones (the one that the 2.12 and 2.11 versions implement got
// removed in 2.13). The most interesting method is `compObjectFromHeaders`.

View file

@ -1,7 +1,7 @@
package org.bitcoins.chain.blockchain
import org.bitcoins.chain.models.BlockHeaderDb
import org.bitcoins.chain.validation.TipUpdateResult
import org.bitcoins.core.api.chain.db.BlockHeaderDb
import org.bitcoins.core.protocol.blockchain.BlockHeader
/** Represens the state of a batch of [[org.bitcoins.core.protocol.blockchain.BlockHeader BlockHeaders]] being added to our blockchain

View file

@ -1,11 +1,11 @@
package org.bitcoins.chain.blockchain
import org.bitcoins.chain.ChainVerificationLogger
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.models._
import org.bitcoins.chain.pow.Pow
import org.bitcoins.core.api.chain.ChainQueryApi.FilterResponse
import org.bitcoins.core.api.chain.db._
import org.bitcoins.core.gcs.FilterHeader
import org.bitcoins.core.number.UInt32
import org.bitcoins.core.p2p.CompactFilterMessage
@ -23,7 +23,7 @@ import scala.concurrent._
/**
* Chain Handler is meant to be the reference implementation
* of [[org.bitcoins.chain.api.ChainApi ChainApi]], this is the entry point in to the
* of [[ChainApi ChainApi]], this is the entry point in to the
* chain project.
*
* @param blockHeaderDAO block header DB

View file

@ -1,7 +1,7 @@
package org.bitcoins.chain.blockchain
import org.bitcoins.chain.models.BlockHeaderDb
import org.bitcoins.chain.validation.TipUpdateResult
import org.bitcoins.core.api.chain.db.BlockHeaderDb
import org.bitcoins.core.protocol.blockchain.BlockHeader
/** The result indicating how the [[org.bitcoins.chain.validation.TipUpdateResult TipUpdateResult]]

View file

@ -1,10 +1,9 @@
package org.bitcoins.chain.blockchain.sync
import org.bitcoins.chain.ChainVerificationLogger
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.chain.blockchain.ChainHandler
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.models.BlockHeaderDb
import org.bitcoins.core.api.chain.db.{BlockHeaderDb, ChainApi}
import org.bitcoins.core.protocol.blockchain.BlockHeader
import org.bitcoins.crypto.DoubleSha256DigestBE

View file

@ -1,9 +1,12 @@
package org.bitcoins.chain.blockchain.sync
import org.bitcoins.chain.ChainVerificationLogger
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.models.{BlockHeaderDb, CompactFilterHeaderDb}
import org.bitcoins.core.api.chain.db.{
BlockHeaderDb,
ChainApi,
CompactFilterHeaderDb
}
import org.bitcoins.core.gcs.{FilterHeader, GolombFilter}
import org.bitcoins.core.p2p.CompactFilterMessage
import org.bitcoins.core.protocol.blockchain.BlockHeader

View file

@ -4,8 +4,9 @@ import java.nio.file.Path
import com.typesafe.config.{Config, ConfigException}
import org.bitcoins.chain.db.ChainDbManagement
import org.bitcoins.chain.models.{BlockHeaderDAO, BlockHeaderDbHelper}
import org.bitcoins.chain.models.BlockHeaderDAO
import org.bitcoins.chain.pow.Pow
import org.bitcoins.core.api.chain.db.BlockHeaderDbHelper
import org.bitcoins.core.util.FutureUtil
import org.bitcoins.db._

View file

@ -2,6 +2,7 @@ package org.bitcoins.chain.models
import org.bitcoins.chain.blockchain.Blockchain
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.core.api.chain.db.BlockHeaderDb
import org.bitcoins.core.number.{Int32, UInt32}
import org.bitcoins.crypto.DoubleSha256DigestBE
import org.bitcoins.db._

View file

@ -1,6 +1,7 @@
package org.bitcoins.chain.models
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.core.api.chain.db.CompactFilterDb
import org.bitcoins.core.gcs.FilterType
import org.bitcoins.crypto.DoubleSha256DigestBE
import org.bitcoins.db.{CRUD, SlickUtil}

View file

@ -1,6 +1,7 @@
package org.bitcoins.chain.models
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.core.api.chain.db.CompactFilterHeaderDb
import org.bitcoins.crypto.DoubleSha256DigestBE
import org.bitcoins.db.{CRUD, SlickUtil}

View file

@ -2,7 +2,7 @@ package org.bitcoins.chain.pow
import org.bitcoins.chain.blockchain.Blockchain
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.models.BlockHeaderDb
import org.bitcoins.core.api.chain.db.BlockHeaderDb
import org.bitcoins.core.number.UInt32
import org.bitcoins.core.protocol.blockchain._
import org.bitcoins.core.util.NumberUtil
@ -49,7 +49,7 @@ sealed abstract class Pow {
case RegTestNetChainParams =>
RegTestNetChainParams.compressedPowLimit
case TestNetChainParams | MainNetChainParams =>
//if we can't find a non min diffulty block, let's just fail
//if we can't find a non min difficulty block, let's just fail
throw new RuntimeException(
s"Could not find non mindifficulty block in chain of size=${blockchain.length}! hash=${tip.hashBE.hex} height=${currentHeight}")
}
@ -63,8 +63,9 @@ sealed abstract class Pow {
val firstHeight: Int =
currentHeight - (chainParams.difficultyChangeInterval - 1)
require(firstHeight >= 0,
s"We must have our first height be postive, got=${firstHeight}")
require(
firstHeight >= 0,
s"We must have our first height be positive, got=${firstHeight}")
val firstBlockAtIntervalOpt: Option[BlockHeaderDb] =
blockchain.findAtHeight(firstHeight)

View file

@ -1,6 +1,6 @@
package org.bitcoins.chain.validation
import org.bitcoins.chain.models.BlockHeaderDb
import org.bitcoins.core.api.chain.db.BlockHeaderDb
import org.bitcoins.core.protocol.blockchain.BlockHeader
/** Represents the result of updating the chain with

View file

@ -1,15 +1,14 @@
package org.bitcoins.chain.validation
import org.bitcoins.chain.ChainVerificationLogger
import org.bitcoins.chain.blockchain.Blockchain
import org.bitcoins.chain.models.{BlockHeaderDb, BlockHeaderDbHelper}
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.pow.Pow
import org.bitcoins.core.api.chain.db.{BlockHeaderDb, BlockHeaderDbHelper}
import org.bitcoins.core.number.UInt32
import org.bitcoins.core.protocol.blockchain.BlockHeader
import org.bitcoins.core.util.NumberUtil
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.ChainVerificationLogger
/**
* Responsible for checking if we can connect two
* block headers together on the blockchain. The checks

View file

@ -1,4 +1,4 @@
package org.bitcoins.chain.models
package org.bitcoins.core.api.chain.db
import org.bitcoins.core.number.{Int32, UInt32}
import org.bitcoins.core.protocol.blockchain.BlockHeader

View file

@ -1,10 +1,5 @@
package org.bitcoins.chain.api
package org.bitcoins.core.api.chain.db
import org.bitcoins.chain.models.{
BlockHeaderDb,
CompactFilterDb,
CompactFilterHeaderDb
}
import org.bitcoins.core.api.chain.ChainQueryApi
import org.bitcoins.core.gcs.FilterHeader
import org.bitcoins.core.p2p.CompactFilterMessage

View file

@ -1,4 +1,4 @@
package org.bitcoins.chain.models
package org.bitcoins.core.api.chain.db
import org.bitcoins.core.gcs.{BlockFilter, FilterType, GolombFilter}
import org.bitcoins.crypto.{CryptoUtil, DoubleSha256DigestBE}

View file

@ -1,4 +1,4 @@
package org.bitcoins.chain.models
package org.bitcoins.core.api.chain.db
import org.bitcoins.core.gcs.FilterHeader
import org.bitcoins.crypto.DoubleSha256DigestBE

View file

@ -45,7 +45,7 @@ on regtest.
import org.bitcoins.chain.blockchain.ChainHandler
import org.bitcoins.chain.blockchain.sync.ChainSync
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.core.api.chain.db.ChainApi
import org.bitcoins.chain.models._
import org.bitcoins.core.api._

View file

@ -8,7 +8,7 @@ import org.bitcoins.chain.models.{
CompactFilterDAO,
CompactFilterHeaderDAO
}
import org.bitcoins.core.api.chain.ChainQueryApi
import org.bitcoins.core.api.chain._
import org.bitcoins.core.api.node.NodeApi
import org.bitcoins.core.p2p.{NetworkPayload, TypeIdentifier}
import org.bitcoins.core.protocol.transaction.Transaction
@ -63,7 +63,7 @@ trait Node extends NodeApi with ChainQueryApi with P2PLogger {
/** Unlike our chain api, this is cached inside our node
* object. Internally in [[org.bitcoins.node.networking.P2PClient p2p client]] you will see that
* the [[org.bitcoins.chain.api.ChainApi chain api]] is updated inside of the p2p client
* the [[ChainApi chain api]] is updated inside of the p2p client
*/
lazy val clientF: Future[P2PClient] = {
for {

View file

@ -1,7 +1,7 @@
package org.bitcoins.node.networking.peer
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.core.api.chain.db.ChainApi
import org.bitcoins.core.gcs.BlockFilter
import org.bitcoins.core.p2p._
import org.bitcoins.crypto.DoubleSha256DigestBE

View file

@ -1,7 +1,6 @@
package org.bitcoins.node.networking.peer
import akka.actor.ActorRefFactory
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.chain.blockchain.ChainHandler
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.models.{
@ -9,6 +8,7 @@ import org.bitcoins.chain.models.{
CompactFilterDAO,
CompactFilterHeaderDAO
}
import org.bitcoins.core.api.chain.db.ChainApi
import org.bitcoins.core.p2p.{NetworkMessage, _}
import org.bitcoins.node.config.NodeAppConfig
import org.bitcoins.node.models.Peer

View file

@ -5,7 +5,7 @@ import java.net.InetAddress
import akka.actor.ActorRef
import akka.io.Tcp
import akka.util.Timeout
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.core.api.chain.db.ChainApi
import org.bitcoins.core.bloom.BloomFilter
import org.bitcoins.core.number.Int32
import org.bitcoins.core.p2p._

View file

@ -1,8 +1,8 @@
package org.bitcoins.testkit.chain
import org.bitcoins.chain.models.{BlockHeaderDb, BlockHeaderDbHelper}
import org.bitcoins.chain.pow.Pow
import org.bitcoins.chain.validation.TipValidation
import org.bitcoins.core.api.chain.db.{BlockHeaderDb, BlockHeaderDbHelper}
import org.bitcoins.core.number.{Int32, UInt32}
import org.bitcoins.core.protocol.blockchain.BlockHeader
import org.bitcoins.crypto.{

View file

@ -1,7 +1,7 @@
package org.bitcoins.testkit.chain
import org.bitcoins.chain.models._
import org.bitcoins.chain.pow.Pow
import org.bitcoins.core.api.chain.db._
import org.bitcoins.core.gcs.{BlockFilter, FilterHeader, GolombFilter}
import org.bitcoins.core.protocol.blockchain.{
BlockHeader,

View file

@ -5,12 +5,18 @@ import java.net.InetSocketAddress
import akka.actor.ActorSystem
import com.typesafe.config.ConfigFactory
import org.bitcoins.chain.ChainVerificationLogger
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.chain.blockchain.ChainHandler
import org.bitcoins.chain.blockchain.sync.ChainSync
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.models._
import org.bitcoins.chain.pow.Pow
import org.bitcoins.core.api.chain.db.{
BlockHeaderDb,
BlockHeaderDbHelper,
ChainApi,
CompactFilterDb,
CompactFilterHeaderDb
}
import org.bitcoins.core.protocol.blockchain.{Block, BlockHeader}
import org.bitcoins.crypto.DoubleSha256DigestBE
import org.bitcoins.db.AppConfig

View file

@ -3,14 +3,14 @@ package org.bitcoins.testkit.node
import java.net.InetSocketAddress
import akka.actor.{ActorSystem, Cancellable}
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.chain.models.{
import org.bitcoins.core.api.chain.ChainQueryApi
import org.bitcoins.core.api.chain.db.{
BlockHeaderDb,
ChainApi,
CompactFilterDb,
CompactFilterHeaderDb
}
import org.bitcoins.core.api.chain.ChainQueryApi
import org.bitcoins.core.config.NetworkParameters
import org.bitcoins.core.gcs.FilterHeader
import org.bitcoins.core.p2p.CompactFilterMessage

View file

@ -68,7 +68,7 @@ val bitcoind = BitcoindRpcClient(bitcoindInstance)
// when this future completes, we have
// synced our chain handler to our bitcoind
// peer
import org.bitcoins.chain.api.ChainApi
import org.bitcoins.core.api.chain.db.ChainApi
val syncF: Future[ChainApi] = configF.flatMap { _ =>
import org.bitcoins.crypto.DoubleSha256DigestBE
val getBestBlockHashFunc = { () =>