ae5810bc50
This change paves the way for running btcwallet on the same system without having to change any settings. The well-known ports used by the reference implementation (8332 mainnet, 18332 testnet) will be exposed by the separate wallet process, which will in turn forward unknown requests to btcd via websockets (on 8334/18334). This allows the wallet process to ultimately provide a unified interface that exposes the same RPC-JSON API as the reference implementation will maintaining wallet and chain separation.
106 lines
3.5 KiB
Go
106 lines
3.5 KiB
Go
// Copyright (c) 2013 Conformal Systems LLC.
|
|
// Use of this source code is governed by an ISC
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package main
|
|
|
|
import (
|
|
"github.com/conformal/btcchain"
|
|
"github.com/conformal/btcwire"
|
|
"math/big"
|
|
)
|
|
|
|
// activeNetParams is a pointer to the parameters specific to the
|
|
// currently active bitcoin network.
|
|
var activeNetParams = netParams(defaultBtcnet)
|
|
|
|
// params is used to group parameters for various networks such as the main
|
|
// network and test networks.
|
|
type params struct {
|
|
netName string
|
|
btcnet btcwire.BitcoinNet
|
|
genesisBlock *btcwire.MsgBlock
|
|
genesisHash *btcwire.ShaHash
|
|
powLimit *big.Int
|
|
powLimitBits uint32
|
|
peerPort string
|
|
listenPort string
|
|
rpcPort string
|
|
dnsSeeds []string
|
|
}
|
|
|
|
// mainNetParams contains parameters specific to the main network
|
|
// (btcwire.MainNet). NOTE: The RPC port is intentionally different than the
|
|
// reference implementation because btcd does not handle wallet requests. The
|
|
// separate wallet process listens on the well-known port and forwards requests
|
|
// it does not handle on to btcd. This approach allows the wallet process
|
|
// to emulate the full reference implementation RPC API.
|
|
var mainNetParams = params{
|
|
netName: "mainnet",
|
|
btcnet: btcwire.MainNet,
|
|
genesisBlock: btcchain.ChainParams(btcwire.MainNet).GenesisBlock,
|
|
genesisHash: btcchain.ChainParams(btcwire.MainNet).GenesisHash,
|
|
powLimit: btcchain.ChainParams(btcwire.MainNet).PowLimit,
|
|
powLimitBits: btcchain.ChainParams(btcwire.MainNet).PowLimitBits,
|
|
listenPort: btcwire.MainPort,
|
|
peerPort: btcwire.MainPort,
|
|
rpcPort: "8334",
|
|
dnsSeeds: []string{
|
|
"seed.bitcoin.sipa.be",
|
|
"dnsseed.bluematt.me",
|
|
"dnsseed.bitcoin.dashjr.org",
|
|
"bitseed.xf2.org",
|
|
},
|
|
}
|
|
|
|
// regressionParams contains parameters specific to the regression test network
|
|
// (btcwire.TestNet). NOTE: The RPC port is intentionally different than the
|
|
// reference implementation - see the mainNetParams comment for details.
|
|
var regressionParams = params{
|
|
netName: "regtest",
|
|
btcnet: btcwire.TestNet,
|
|
genesisBlock: btcchain.ChainParams(btcwire.TestNet).GenesisBlock,
|
|
genesisHash: btcchain.ChainParams(btcwire.TestNet).GenesisHash,
|
|
powLimit: btcchain.ChainParams(btcwire.TestNet).PowLimit,
|
|
powLimitBits: btcchain.ChainParams(btcwire.TestNet).PowLimitBits,
|
|
listenPort: btcwire.RegressionTestPort,
|
|
peerPort: btcwire.TestNetPort,
|
|
rpcPort: "18334",
|
|
dnsSeeds: []string{},
|
|
}
|
|
|
|
// testNet3Params contains parameters specific to the test network (version 3)
|
|
// (btcwire.TestNet3). NOTE: The RPC port is intentionally different than the
|
|
// reference implementation - see the mainNetParams comment for details.
|
|
var testNet3Params = params{
|
|
netName: "testnet",
|
|
btcnet: btcwire.TestNet3,
|
|
genesisBlock: btcchain.ChainParams(btcwire.TestNet3).GenesisBlock,
|
|
genesisHash: btcchain.ChainParams(btcwire.TestNet3).GenesisHash,
|
|
powLimit: btcchain.ChainParams(btcwire.TestNet3).PowLimit,
|
|
powLimitBits: btcchain.ChainParams(btcwire.TestNet3).PowLimitBits,
|
|
listenPort: btcwire.TestNetPort,
|
|
peerPort: btcwire.TestNetPort,
|
|
rpcPort: "18334",
|
|
dnsSeeds: []string{
|
|
"testnet-seed.bitcoin.petertodd.org",
|
|
"testnet-seed.bluematt.me",
|
|
},
|
|
}
|
|
|
|
// netParams returns parameters specific to the passed bitcoin network.
|
|
func netParams(btcnet btcwire.BitcoinNet) *params {
|
|
switch btcnet {
|
|
case btcwire.TestNet:
|
|
return ®ressionParams
|
|
|
|
case btcwire.TestNet3:
|
|
return &testNet3Params
|
|
|
|
// Return main net by default.
|
|
case btcwire.MainNet:
|
|
fallthrough
|
|
default:
|
|
return &mainNetParams
|
|
}
|
|
}
|