mirror of
https://github.com/ACINQ/eclair.git
synced 2025-02-23 06:35:11 +01:00
Use chain getblockchaininfo.chain to infer the magic value (#45)
* use chain getblockchaininfo.chain to infer the magic value, remove bitcoind.network conf parameter (closes #43) * minor: renamed socket->socketAddress, also rebased
This commit is contained in:
parent
16d3960f75
commit
eba5915f8c
3 changed files with 11 additions and 15 deletions
|
@ -9,7 +9,6 @@ eclair {
|
|||
port = 8080
|
||||
}
|
||||
bitcoind {
|
||||
network = "regtest"
|
||||
host = "localhost"
|
||||
port = 18333
|
||||
rpcport = 18332
|
||||
|
|
|
@ -13,7 +13,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent
|
|||
import ch.qos.logback.classic.{Logger, LoggerContext}
|
||||
import ch.qos.logback.core.FileAppender
|
||||
import com.sun.javafx.application.LauncherImpl
|
||||
import fr.acinq.bitcoin.{Base58Check, OP_CHECKSIG, OP_DUP, OP_EQUALVERIFY, OP_HASH160, OP_PUSHDATA, Script}
|
||||
import fr.acinq.bitcoin.{Base58Check, Message, OP_CHECKSIG, OP_DUP, OP_EQUALVERIFY, OP_HASH160, OP_PUSHDATA, Script}
|
||||
import fr.acinq.eclair.api.Service
|
||||
import fr.acinq.eclair.blockchain.peer.PeerClient
|
||||
import fr.acinq.eclair.blockchain.rpc.BitcoinJsonRPCClient
|
||||
|
@ -76,7 +76,12 @@ class Setup(datadir: String) extends Logging {
|
|||
implicit val formats = org.json4s.DefaultFormats
|
||||
implicit val ec = ExecutionContext.Implicits.global
|
||||
val (chain, blockCount, progress) = Await.result(bitcoin_client.client.invoke("getblockchaininfo").map(json => ((json \ "chain").extract[String], (json \ "blocks").extract[Long], (json \ "verificationprogress").extract[Double])), 10 seconds)
|
||||
assert(chain == "test" || chain == "regtest" || chain == "segnet4", "you should be on testnet or regtest or segnet4")
|
||||
logger.info(s"using chain=$chain")
|
||||
val magic = chain match {
|
||||
case "test" => Message.MagicTestnet3
|
||||
case "regtest" => Message.MagicTestNet
|
||||
case _ => throw new RuntimeException("only regtest and testnet are supported for now")
|
||||
}
|
||||
assert(progress > 0.99, "bitcoind should be synchronized")
|
||||
Globals.blockCount.set(blockCount)
|
||||
val defaultFeeratePerKw = config.getLong("default-feerate-perkw")
|
||||
|
@ -95,8 +100,7 @@ class Setup(datadir: String) extends Logging {
|
|||
//val finalScriptPubKey = OP_0 :: OP_PUSHDATA(Base58Check.decode(finalAddress)._2) :: Nil
|
||||
val finalScriptPubKey = Script.write(OP_DUP :: OP_HASH160 :: OP_PUSHDATA(Base58Check.decode(finalAddress)._2) :: OP_EQUALVERIFY :: OP_CHECKSIG :: Nil)
|
||||
|
||||
|
||||
val peer = system.actorOf(SimpleSupervisor.props(PeerClient.props(config.getConfig("bitcoind")), "bitcoin-peer", SupervisorStrategy.Restart))
|
||||
val peer = system.actorOf(SimpleSupervisor.props(PeerClient.props(new InetSocketAddress(config.getString("bitcoind.host"), config.getInt("bitcoind.port")), magic), "bitcoin-peer", SupervisorStrategy.Restart))
|
||||
val watcher = system.actorOf(SimpleSupervisor.props(PeerWatcher.props(nodeParams, bitcoin_client), "watcher", SupervisorStrategy.Resume))
|
||||
val paymentHandler = system.actorOf(SimpleSupervisor.props(config.getString("payment-handler") match {
|
||||
case "local" => Props[LocalPaymentHandler]
|
||||
|
|
|
@ -5,23 +5,16 @@ import java.net.InetSocketAddress
|
|||
import akka.actor._
|
||||
import akka.io.Tcp.Connected
|
||||
import akka.pattern.{Backoff, BackoffSupervisor}
|
||||
import com.typesafe.config.Config
|
||||
import fr.acinq.bitcoin._
|
||||
|
||||
import scala.compat.Platform
|
||||
import scala.concurrent.duration._
|
||||
|
||||
class PeerClient(config: Config) extends Actor with ActorLogging {
|
||||
class PeerClient(socketAddress: InetSocketAddress, magic: Long) extends Actor with ActorLogging {
|
||||
|
||||
val magic = config.getString("network") match {
|
||||
case "mainnet" => Message.MagicMain
|
||||
case "test" => Message.MagicTestnet3
|
||||
case "regtest" => Message.MagicTestNet
|
||||
}
|
||||
val peer = new InetSocketAddress(config.getString("host"), config.getInt("port"))
|
||||
val supervisor = BackoffSupervisor.props(
|
||||
Backoff.onStop(
|
||||
Props(classOf[PeerHandler], peer, self),
|
||||
Props(classOf[PeerHandler], socketAddress, self),
|
||||
childName = "peer-conn",
|
||||
minBackoff = 1 seconds,
|
||||
maxBackoff = 10 seconds,
|
||||
|
@ -75,7 +68,7 @@ class PeerClient(config: Config) extends Actor with ActorLogging {
|
|||
}
|
||||
|
||||
object PeerClient {
|
||||
def props(config: Config) = Props(new PeerClient(config))
|
||||
def props(socketAddress: InetSocketAddress, magic: Long) = Props(new PeerClient(socketAddress, magic))
|
||||
}
|
||||
|
||||
object PeerClientTest extends App {
|
||||
|
|
Loading…
Add table
Reference in a new issue