core: Fix first set of testnet4 bugs

This commit is contained in:
Chris Stewart 2025-02-28 14:35:44 -06:00
parent 1f7a982519
commit 3637580052
5 changed files with 30 additions and 24 deletions

View file

@ -35,7 +35,7 @@
<appender-ref ref="ASYNC-FILE"/>
</root>
<logger name="org.bitcoins.node" level="INFO"/>
<logger name="org.bitcoins.node" level="DEBUG"/>
<logger name="org.bitcoins.chain" level="INFO"/>

View file

@ -232,6 +232,7 @@ object BitcoinNetworks extends StringFactory[BitcoinNetwork] {
case "testnet3" => TestNet3
case "testnet" => TestNet3
case "test" => TestNet3
case "testnet4" => TestNet4
case "regtest" => RegTest
case "signet" => SigNet
case "sig" => SigNet

View file

@ -8,7 +8,6 @@ import org.bitcoins.core.currency.{Bitcoins, CurrencyUnit, Satoshis}
import org.bitcoins.core.number.{Int32, UInt32}
import org.bitcoins.core.protocol.script.{
EmptyScriptPubKey,
P2PKScriptPubKey,
ScriptPubKey,
ScriptSignature
}
@ -16,11 +15,7 @@ import org.bitcoins.core.protocol.transaction.*
import org.bitcoins.core.script.constant.{BytesToPushOntoStack, ScriptConstant}
import org.bitcoins.core.script.crypto.OP_CHECKSIG
import org.bitcoins.core.util.{BitcoinScriptUtil, NumberUtil}
import org.bitcoins.crypto.{
DoubleSha256Digest,
DoubleSha256DigestBE,
ECPublicKey
}
import org.bitcoins.crypto.{DoubleSha256Digest, DoubleSha256DigestBE}
import scodec.bits.{ByteVector, *}
import scala.concurrent.duration.{Duration, DurationInt}
@ -538,11 +533,17 @@ object TestNet4ChainParams extends BitcoinChainParams {
* blockchain.
*/
override val genesisBlock: Block = {
val asm = Seq(
BytesToPushOntoStack(33),
ScriptConstant(
"000000000000000000000000000000000000000000000000000000000000000000"),
OP_CHECKSIG
)
val spk = ScriptPubKey.fromAsm(asm)
createGenesisBlock(
timestamp =
"03/May/2024 000000000000000000001ebd58c244970b3aa9d783bb001011fbe8ea8e98e00e",
scriptPubKey = P2PKScriptPubKey(ECPublicKey.fromHex(
"000000000000000000000000000000000000000000000000000000000000000000")),
scriptPubKey = spk,
time = UInt32(1714777860),
nonce = UInt32(393743547),
nBits = UInt32.fromHex("1d00ffff"),

View file

@ -15,18 +15,22 @@ object HDUtil {
(hdPurpose, network) match {
case (SegWit, MainNet) | (Taproot, MainNet) => SegWitMainNetPriv
case (SegWit, TestNet3 | RegTest | SigNet) => SegWitTestNet3Priv
case (Taproot, TestNet3 | RegTest | SigNet) => SegWitTestNet3Priv
case (NestedSegWit, MainNet) => NestedSegWitMainNetPriv
case (NestedSegWit, TestNet3 | RegTest | SigNet) =>
case (SegWit, TestNet3 | RegTest | SigNet | TestNet4) =>
SegWitTestNet3Priv
case (Taproot, TestNet3 | RegTest | SigNet | TestNet4) =>
SegWitTestNet3Priv
case (NestedSegWit, MainNet) => NestedSegWitMainNetPriv
case (NestedSegWit, TestNet3 | RegTest | SigNet | TestNet4) =>
NestedSegWitTestNet3Priv
case (Multisig, MainNet) => LegacyMainNetPriv
case (Multisig, TestNet3 | RegTest | SigNet) =>
case (Multisig, TestNet3 | RegTest | SigNet | TestNet4) =>
LegacyTestNet3Priv
case (Legacy, MainNet) => LegacyMainNetPriv
case (Legacy, TestNet3 | RegTest | SigNet) => LegacyTestNet3Priv
case (HDPurpose(585), MainNet) => SegWitMainNetPriv
case (HDPurpose(585), TestNet3 | RegTest | SigNet) => SegWitTestNet3Priv
case (Legacy, MainNet) => LegacyMainNetPriv
case (Legacy, TestNet3 | RegTest | SigNet | TestNet4) =>
LegacyTestNet3Priv
case (HDPurpose(585), MainNet) => SegWitMainNetPriv
case (HDPurpose(585), TestNet3 | RegTest | SigNet | TestNet4) =>
SegWitTestNet3Priv
case (unknown: HDPurpose, _) =>
throw new IllegalArgumentException(s"Got unknown HD purpose $unknown")
}
@ -40,16 +44,16 @@ object HDUtil {
(hdPurpose, network) match {
case (SegWit, MainNet | SigNet) => ExtKeyPubVersion.SegWitMainNetPub
case (SegWit, TestNet3 | RegTest | SigNet) =>
case (SegWit, TestNet3 | RegTest | SigNet | TestNet4) =>
ExtKeyPubVersion.SegWitTestNet3Pub
case (NestedSegWit, MainNet) => ExtKeyPubVersion.NestedSegWitMainNetPub
case (NestedSegWit, TestNet3 | RegTest | SigNet) =>
case (NestedSegWit, TestNet3 | RegTest | SigNet | TestNet4) =>
ExtKeyPubVersion.NestedSegWitTestNet3Pub
case (Multisig, MainNet) => ExtKeyPubVersion.LegacyMainNetPub
case (Multisig, TestNet3 | RegTest | SigNet) =>
case (Multisig, TestNet3 | RegTest | SigNet | TestNet4) =>
ExtKeyPubVersion.LegacyTestNet3Pub
case (Legacy, MainNet) => ExtKeyPubVersion.LegacyMainNetPub
case (Legacy, TestNet3 | RegTest | SigNet) =>
case (Legacy, TestNet3 | RegTest | SigNet | TestNet4) =>
ExtKeyPubVersion.LegacyTestNet3Pub
case (unknown: HDPurpose, _) =>
throw new IllegalArgumentException(s"Got unknown HD purpose $unknown")

View file

@ -5,7 +5,7 @@ import org.apache.pekko.stream.scaladsl.SourceQueue
import org.bitcoins.asyncutil.AsyncUtil
import org.bitcoins.chain.config.ChainAppConfig
import org.bitcoins.core.api.node.{Peer, PeerManagerApi}
import org.bitcoins.core.config.{MainNet, RegTest, SigNet, TestNet3, TestNet4}
import org.bitcoins.core.config.{MainNet, RegTest, SigNet, TestNet3}
import org.bitcoins.core.p2p.{ServiceIdentifier, VersionMessage}
import org.bitcoins.core.util.StartStopAsync
import org.bitcoins.node.config.NodeAppConfig
@ -82,7 +82,7 @@ case class PeerFinder(
.filter(nodeAppConfig.torConf.enabled || !_.contains(".onion"))
val peers = BitcoinSNodeUtil.stringsToPeers(addresses)
Random.shuffle(peers)
case TestNet3 | TestNet4 | RegTest | SigNet =>
case TestNet3 | RegTest | SigNet =>
Vector.empty
}