WIP: next hard fork #5
21 changed files with 146 additions and 149 deletions
|
@ -11,8 +11,8 @@
|
||||||
# For more information how to use this docker image visit:
|
# For more information how to use this docker image visit:
|
||||||
# https://github.com/btcsuite/btcd/tree/master/docs
|
# https://github.com/btcsuite/btcd/tree/master/docs
|
||||||
#
|
#
|
||||||
# 8333 Mainnet Bitcoin peer-to-peer port
|
# 9246 Mainnet Bitcoin peer-to-peer port
|
||||||
# 8334 Mainet RPC port
|
# 9245 Mainet RPC port
|
||||||
|
|
||||||
ARG ARCH=amd64
|
ARG ARCH=amd64
|
||||||
# using the SHA256 instead of tags
|
# using the SHA256 instead of tags
|
||||||
|
|
|
@ -34,61 +34,61 @@ var someIP = "173.194.115.66"
|
||||||
func addNaTests() {
|
func addNaTests() {
|
||||||
// IPv4
|
// IPv4
|
||||||
// Localhost
|
// Localhost
|
||||||
addNaTest("127.0.0.1", 8333, "127.0.0.1:8333")
|
addNaTest("127.0.0.1", 9244, "127.0.0.1:9244")
|
||||||
addNaTest("127.0.0.1", 8334, "127.0.0.1:8334")
|
addNaTest("127.0.0.1", 9245, "127.0.0.1:9245")
|
||||||
|
|
||||||
// Class A
|
// Class A
|
||||||
addNaTest("1.0.0.1", 8333, "1.0.0.1:8333")
|
addNaTest("1.0.0.1", 9244, "1.0.0.1:9244")
|
||||||
addNaTest("2.2.2.2", 8334, "2.2.2.2:8334")
|
addNaTest("2.2.2.2", 9245, "2.2.2.2:9245")
|
||||||
addNaTest("27.253.252.251", 8335, "27.253.252.251:8335")
|
addNaTest("27.253.252.251", 9246, "27.253.252.251:9246")
|
||||||
addNaTest("123.3.2.1", 8336, "123.3.2.1:8336")
|
addNaTest("123.3.2.1", 9247, "123.3.2.1:9247")
|
||||||
|
|
||||||
// Private Class A
|
// Private Class A
|
||||||
addNaTest("10.0.0.1", 8333, "10.0.0.1:8333")
|
addNaTest("10.0.0.1", 9244, "10.0.0.1:9244")
|
||||||
addNaTest("10.1.1.1", 8334, "10.1.1.1:8334")
|
addNaTest("10.1.1.1", 9245, "10.1.1.1:9245")
|
||||||
addNaTest("10.2.2.2", 8335, "10.2.2.2:8335")
|
addNaTest("10.2.2.2", 9246, "10.2.2.2:9246")
|
||||||
addNaTest("10.10.10.10", 8336, "10.10.10.10:8336")
|
addNaTest("10.10.10.10", 9247, "10.10.10.10:9247")
|
||||||
|
|
||||||
// Class B
|
// Class B
|
||||||
addNaTest("128.0.0.1", 8333, "128.0.0.1:8333")
|
addNaTest("128.0.0.1", 9244, "128.0.0.1:9244")
|
||||||
addNaTest("129.1.1.1", 8334, "129.1.1.1:8334")
|
addNaTest("129.1.1.1", 9245, "129.1.1.1:9245")
|
||||||
addNaTest("180.2.2.2", 8335, "180.2.2.2:8335")
|
addNaTest("180.2.2.2", 9246, "180.2.2.2:9246")
|
||||||
addNaTest("191.10.10.10", 8336, "191.10.10.10:8336")
|
addNaTest("191.10.10.10", 9247, "191.10.10.10:9247")
|
||||||
|
|
||||||
// Private Class B
|
// Private Class B
|
||||||
addNaTest("172.16.0.1", 8333, "172.16.0.1:8333")
|
addNaTest("172.16.0.1", 9244, "172.16.0.1:9244")
|
||||||
addNaTest("172.16.1.1", 8334, "172.16.1.1:8334")
|
addNaTest("172.16.1.1", 9245, "172.16.1.1:9245")
|
||||||
addNaTest("172.16.2.2", 8335, "172.16.2.2:8335")
|
addNaTest("172.16.2.2", 9246, "172.16.2.2:9246")
|
||||||
addNaTest("172.16.172.172", 8336, "172.16.172.172:8336")
|
addNaTest("172.16.172.172", 9247, "172.16.172.172:9247")
|
||||||
|
|
||||||
// Class C
|
// Class C
|
||||||
addNaTest("193.0.0.1", 8333, "193.0.0.1:8333")
|
addNaTest("193.0.0.1", 9244, "193.0.0.1:9244")
|
||||||
addNaTest("200.1.1.1", 8334, "200.1.1.1:8334")
|
addNaTest("200.1.1.1", 9245, "200.1.1.1:9245")
|
||||||
addNaTest("205.2.2.2", 8335, "205.2.2.2:8335")
|
addNaTest("205.2.2.2", 9246, "205.2.2.2:9246")
|
||||||
addNaTest("223.10.10.10", 8336, "223.10.10.10:8336")
|
addNaTest("223.10.10.10", 9247, "223.10.10.10:9247")
|
||||||
|
|
||||||
// Private Class C
|
// Private Class C
|
||||||
addNaTest("192.168.0.1", 8333, "192.168.0.1:8333")
|
addNaTest("192.168.0.1", 9244, "192.168.0.1:9244")
|
||||||
addNaTest("192.168.1.1", 8334, "192.168.1.1:8334")
|
addNaTest("192.168.1.1", 9245, "192.168.1.1:9245")
|
||||||
addNaTest("192.168.2.2", 8335, "192.168.2.2:8335")
|
addNaTest("192.168.2.2", 9246, "192.168.2.2:9246")
|
||||||
addNaTest("192.168.192.192", 8336, "192.168.192.192:8336")
|
addNaTest("192.168.192.192", 9247, "192.168.192.192:9247")
|
||||||
|
|
||||||
// IPv6
|
// IPv6
|
||||||
// Localhost
|
// Localhost
|
||||||
addNaTest("::1", 8333, "[::1]:8333")
|
addNaTest("::1", 9244, "[::1]:9244")
|
||||||
addNaTest("fe80::1", 8334, "[fe80::1]:8334")
|
addNaTest("fe80::1", 9245, "[fe80::1]:9245")
|
||||||
|
|
||||||
// Link-local
|
// Link-local
|
||||||
addNaTest("fe80::1:1", 8333, "[fe80::1:1]:8333")
|
addNaTest("fe80::1:1", 9244, "[fe80::1:1]:9244")
|
||||||
addNaTest("fe91::2:2", 8334, "[fe91::2:2]:8334")
|
addNaTest("fe91::2:2", 9245, "[fe91::2:2]:9245")
|
||||||
addNaTest("fea2::3:3", 8335, "[fea2::3:3]:8335")
|
addNaTest("fea2::3:3", 9246, "[fea2::3:3]:9246")
|
||||||
addNaTest("feb3::4:4", 8336, "[feb3::4:4]:8336")
|
addNaTest("feb3::4:4", 9247, "[feb3::4:4]:9247")
|
||||||
|
|
||||||
// Site-local
|
// Site-local
|
||||||
addNaTest("fec0::1:1", 8333, "[fec0::1:1]:8333")
|
addNaTest("fec0::1:1", 9244, "[fec0::1:1]:9244")
|
||||||
addNaTest("fed1::2:2", 8334, "[fed1::2:2]:8334")
|
addNaTest("fed1::2:2", 9245, "[fed1::2:2]:9245")
|
||||||
addNaTest("fee2::3:3", 8335, "[fee2::3:3]:8335")
|
addNaTest("fee2::3:3", 9246, "[fee2::3:3]:9246")
|
||||||
addNaTest("fef3::4:4", 8336, "[fef3::4:4]:8336")
|
addNaTest("fef3::4:4", 9247, "[fef3::4:4]:9247")
|
||||||
}
|
}
|
||||||
|
|
||||||
func addNaTest(ip string, port uint16, want string) {
|
func addNaTest(ip string, port uint16, want string) {
|
||||||
|
@ -119,7 +119,7 @@ func TestAddAddressByIP(t *testing.T) {
|
||||||
err error
|
err error
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
someIP + ":8333",
|
someIP + ":9244",
|
||||||
nil,
|
nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -127,7 +127,7 @@ func TestAddAddressByIP(t *testing.T) {
|
||||||
addrErr,
|
addrErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
someIP[:12] + ":8333",
|
someIP[:12] + ":9244",
|
||||||
fmtErr,
|
fmtErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -212,7 +212,7 @@ func TestAttempt(t *testing.T) {
|
||||||
n := addrmgr.New("testattempt", lookupFunc)
|
n := addrmgr.New("testattempt", lookupFunc)
|
||||||
|
|
||||||
// Add a new address and get it
|
// Add a new address and get it
|
||||||
err := n.AddAddressByIP(someIP + ":8333")
|
err := n.AddAddressByIP(someIP + ":9244")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Adding address failed: %v", err)
|
t.Fatalf("Adding address failed: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -234,7 +234,7 @@ func TestConnected(t *testing.T) {
|
||||||
n := addrmgr.New("testconnected", lookupFunc)
|
n := addrmgr.New("testconnected", lookupFunc)
|
||||||
|
|
||||||
// Add a new address and get it
|
// Add a new address and get it
|
||||||
err := n.AddAddressByIP(someIP + ":8333")
|
err := n.AddAddressByIP(someIP + ":9244")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Adding address failed: %v", err)
|
t.Fatalf("Adding address failed: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -261,14 +261,14 @@ func TestNeedMoreAddresses(t *testing.T) {
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
for i := 0; i < addrsToAdd; i++ {
|
for i := 0; i < addrsToAdd; i++ {
|
||||||
s := fmt.Sprintf("%d.%d.173.147:8333", i/128+60, i%128+60)
|
s := fmt.Sprintf("%d.%d.173.147:9244", i/128+60, i%128+60)
|
||||||
addrs[i], err = n.DeserializeNetAddress(s, wire.SFNodeNetwork)
|
addrs[i], err = n.DeserializeNetAddress(s, wire.SFNodeNetwork)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to turn %s into an address: %v", s, err)
|
t.Errorf("Failed to turn %s into an address: %v", s, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
srcAddr := wire.NewNetAddressIPPort(net.IPv4(173, 144, 173, 111), 8333, 0)
|
srcAddr := wire.NewNetAddressIPPort(net.IPv4(173, 144, 173, 111), 9244, 0)
|
||||||
|
|
||||||
n.AddAddresses(addrs, srcAddr)
|
n.AddAddresses(addrs, srcAddr)
|
||||||
numAddrs := n.NumAddresses()
|
numAddrs := n.NumAddresses()
|
||||||
|
@ -289,14 +289,14 @@ func TestGood(t *testing.T) {
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
for i := 0; i < addrsToAdd; i++ {
|
for i := 0; i < addrsToAdd; i++ {
|
||||||
s := fmt.Sprintf("%d.173.147.%d:8333", i/64+60, i%64+60)
|
s := fmt.Sprintf("%d.173.147.%d:9244", i/64+60, i%64+60)
|
||||||
addrs[i], err = n.DeserializeNetAddress(s, wire.SFNodeNetwork)
|
addrs[i], err = n.DeserializeNetAddress(s, wire.SFNodeNetwork)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Failed to turn %s into an address: %v", s, err)
|
t.Errorf("Failed to turn %s into an address: %v", s, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
srcAddr := wire.NewNetAddressIPPort(net.IPv4(173, 144, 173, 111), 8333, 0)
|
srcAddr := wire.NewNetAddressIPPort(net.IPv4(173, 144, 173, 111), 9244, 0)
|
||||||
|
|
||||||
n.AddAddresses(addrs, srcAddr)
|
n.AddAddresses(addrs, srcAddr)
|
||||||
for _, addr := range addrs {
|
for _, addr := range addrs {
|
||||||
|
@ -323,7 +323,7 @@ func TestGetAddress(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a new address and get it
|
// Add a new address and get it
|
||||||
err := n.AddAddressByIP(someIP + ":8333")
|
err := n.AddAddressByIP(someIP + ":9244")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Adding address failed: %v", err)
|
t.Fatalf("Adding address failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ func TestIPTypes(t *testing.T) {
|
||||||
rfc4193, rfc4380, rfc4843, rfc4862, rfc5737, rfc6052, rfc6145, rfc6598,
|
rfc4193, rfc4380, rfc4843, rfc4862, rfc5737, rfc6052, rfc6145, rfc6598,
|
||||||
local, valid, routable bool) ipTest {
|
local, valid, routable bool) ipTest {
|
||||||
nip := net.ParseIP(ip)
|
nip := net.ParseIP(ip)
|
||||||
na := *wire.NewNetAddressIPPort(nip, 8333, wire.SFNodeNetwork)
|
na := *wire.NewNetAddressIPPort(nip, 9246, wire.SFNodeNetwork)
|
||||||
test := ipTest{na, rfc1918, rfc2544, rfc3849, rfc3927, rfc3964, rfc4193, rfc4380,
|
test := ipTest{na, rfc1918, rfc2544, rfc3849, rfc3927, rfc3964, rfc4193, rfc4380,
|
||||||
rfc4843, rfc4862, rfc5737, rfc6052, rfc6145, rfc6598, local, valid, routable}
|
rfc4843, rfc4862, rfc5737, rfc6052, rfc6145, rfc6598, local, valid, routable}
|
||||||
return test
|
return test
|
||||||
|
@ -192,7 +192,7 @@ func TestGroupKey(t *testing.T) {
|
||||||
|
|
||||||
for i, test := range tests {
|
for i, test := range tests {
|
||||||
nip := net.ParseIP(test.ip)
|
nip := net.ParseIP(test.ip)
|
||||||
na := *wire.NewNetAddressIPPort(nip, 8333, wire.SFNodeNetwork)
|
na := *wire.NewNetAddressIPPort(nip, 9246, wire.SFNodeNetwork)
|
||||||
if key := addrmgr.GroupKey(&na); key != test.expected {
|
if key := addrmgr.GroupKey(&na); key != test.expected {
|
||||||
t.Errorf("TestGroupKey #%d (%s): unexpected group key "+
|
t.Errorf("TestGroupKey #%d (%s): unexpected group key "+
|
||||||
"- got '%s', want '%s'", i, test.name,
|
"- got '%s', want '%s'", i, test.name,
|
||||||
|
|
|
@ -62,7 +62,7 @@ var (
|
||||||
DefaultSignetDNSSeeds = []DNSSeed{
|
DefaultSignetDNSSeeds = []DNSSeed{
|
||||||
{"178.128.221.177", false},
|
{"178.128.221.177", false},
|
||||||
{"2a01:7c8:d005:390::5", false},
|
{"2a01:7c8:d005:390::5", false},
|
||||||
{"v7ajjeirttkbnt32wpy3c6w3emwnfr3fkla7hpxcfokr3ysd3kqtzmqd.onion:38333", false},
|
{"v7ajjeirttkbnt32wpy3c6w3emwnfr3fkla7hpxcfokr3ysd3kqtzmqd.onion:39246", false},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -522,7 +522,7 @@ var TestNet3Params = Params{
|
||||||
var SimNetParams = Params{
|
var SimNetParams = Params{
|
||||||
Name: "simnet",
|
Name: "simnet",
|
||||||
Net: wire.SimNet,
|
Net: wire.SimNet,
|
||||||
DefaultPort: "18555",
|
DefaultPort: "39246",
|
||||||
DNSSeeds: []DNSSeed{}, // NOTE: There must NOT be any seeds.
|
DNSSeeds: []DNSSeed{}, // NOTE: There must NOT be any seeds.
|
||||||
|
|
||||||
// Chain parameters
|
// Chain parameters
|
||||||
|
@ -615,7 +615,7 @@ func CustomSignetParams(challenge []byte, dnsSeeds []DNSSeed) Params {
|
||||||
return Params{
|
return Params{
|
||||||
Name: "signet",
|
Name: "signet",
|
||||||
Net: wire.BitcoinNet(net),
|
Net: wire.BitcoinNet(net),
|
||||||
DefaultPort: "38333",
|
DefaultPort: "39246",
|
||||||
DNSSeeds: dnsSeeds,
|
DNSSeeds: dnsSeeds,
|
||||||
|
|
||||||
// Chain parameters
|
// Chain parameters
|
||||||
|
|
|
@ -96,20 +96,20 @@ type config struct {
|
||||||
ConfigFile string `short:"C" long:"configfile" description:"Path to configuration file"`
|
ConfigFile string `short:"C" long:"configfile" description:"Path to configuration file"`
|
||||||
ListCommands bool `short:"l" long:"listcommands" description:"List all of the supported commands and exit"`
|
ListCommands bool `short:"l" long:"listcommands" description:"List all of the supported commands and exit"`
|
||||||
NoTLS bool `long:"notls" description:"Disable TLS"`
|
NoTLS bool `long:"notls" description:"Disable TLS"`
|
||||||
|
TLSSkipVerify bool `long:"skipverify" description:"Do not verify tls certificates (not recommended!)"`
|
||||||
Proxy string `long:"proxy" description:"Connect via SOCKS5 proxy (eg. 127.0.0.1:9050)"`
|
Proxy string `long:"proxy" description:"Connect via SOCKS5 proxy (eg. 127.0.0.1:9050)"`
|
||||||
ProxyPass string `long:"proxypass" default-mask:"-" description:"Password for proxy server"`
|
ProxyPass string `long:"proxypass" default-mask:"-" description:"Password for proxy server"`
|
||||||
ProxyUser string `long:"proxyuser" description:"Username for proxy server"`
|
ProxyUser string `long:"proxyuser" description:"Username for proxy server"`
|
||||||
RegressionTest bool `long:"regtest" description:"Connect to the regression test network"`
|
|
||||||
RPCCert string `short:"c" long:"rpccert" description:"RPC server certificate chain for validation"`
|
RPCCert string `short:"c" long:"rpccert" description:"RPC server certificate chain for validation"`
|
||||||
RPCPassword string `short:"P" long:"rpcpass" default-mask:"-" description:"RPC password"`
|
RPCPassword string `short:"P" long:"rpcpass" default-mask:"-" description:"RPC password"`
|
||||||
RPCServer string `short:"s" long:"rpcserver" description:"RPC server to connect to"`
|
RPCServer string `short:"s" long:"rpcserver" description:"RPC server to connect to"`
|
||||||
RPCUser string `short:"u" long:"rpcuser" description:"RPC username"`
|
RPCUser string `short:"u" long:"rpcuser" description:"RPC username"`
|
||||||
SimNet bool `long:"simnet" description:"Connect to the simulation test network"`
|
TestNet3 bool `long:"testnet" description:"Connect to testnet (default RPC server: localhost:19245)"`
|
||||||
TLSSkipVerify bool `long:"skipverify" description:"Do not verify tls certificates (not recommended!)"`
|
RegressionTest bool `long:"regtest" description:"Connect to the regression test network (default RPC server: localhost:29245)"`
|
||||||
TestNet3 bool `long:"testnet" description:"Connect to testnet"`
|
SimNet bool `long:"simnet" description:"Connect to the simulation test network (default RPC server: localhost:39245)"`
|
||||||
SigNet bool `long:"signet" description:"Connect to signet"`
|
SigNet bool `long:"signet" description:"Connect to signet (default RPC server: localhost:49245)"`
|
||||||
|
Wallet bool `long:"wallet" description:"Connect to wallet RPC server instead (default: localhost:9244, testnet: localhost:19244, regtest: localhost:29244)"`
|
||||||
ShowVersion bool `short:"V" long:"version" description:"Display version information and exit"`
|
ShowVersion bool `short:"V" long:"version" description:"Display version information and exit"`
|
||||||
Wallet bool `long:"wallet" description:"Connect to wallet"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// normalizeAddress returns addr with the passed default port appended if
|
// normalizeAddress returns addr with the passed default port appended if
|
||||||
|
@ -121,35 +121,33 @@ func normalizeAddress(addr string, chain *chaincfg.Params, useWallet bool) (stri
|
||||||
switch chain {
|
switch chain {
|
||||||
case &chaincfg.TestNet3Params:
|
case &chaincfg.TestNet3Params:
|
||||||
if useWallet {
|
if useWallet {
|
||||||
defaultPort = "18332"
|
defaultPort = "19244"
|
||||||
} else {
|
} else {
|
||||||
defaultPort = "18334"
|
defaultPort = "19245"
|
||||||
}
|
|
||||||
case &chaincfg.SimNetParams:
|
|
||||||
if useWallet {
|
|
||||||
defaultPort = "18554"
|
|
||||||
} else {
|
|
||||||
defaultPort = "18556"
|
|
||||||
}
|
}
|
||||||
case &chaincfg.RegressionNetParams:
|
case &chaincfg.RegressionNetParams:
|
||||||
if useWallet {
|
if useWallet {
|
||||||
// TODO: add port once regtest is supported in btcwallet
|
defaultPort = "29244"
|
||||||
paramErr := fmt.Errorf("cannot use -wallet with -regtest, btcwallet not yet compatible with regtest")
|
|
||||||
return "", paramErr
|
|
||||||
} else {
|
} else {
|
||||||
defaultPort = "29245"
|
defaultPort = "29245"
|
||||||
}
|
}
|
||||||
|
case &chaincfg.SimNetParams:
|
||||||
|
if useWallet {
|
||||||
|
defaultPort = "39244"
|
||||||
|
} else {
|
||||||
|
defaultPort = "39245"
|
||||||
|
}
|
||||||
case &chaincfg.SigNetParams:
|
case &chaincfg.SigNetParams:
|
||||||
if useWallet {
|
if useWallet {
|
||||||
defaultPort = "38332"
|
defaultPort = "49244"
|
||||||
} else {
|
} else {
|
||||||
defaultPort = "38332"
|
defaultPort = "49245"
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
if useWallet {
|
if useWallet {
|
||||||
defaultPort = "8332"
|
defaultPort = "9244"
|
||||||
} else {
|
} else {
|
||||||
defaultPort = "8334"
|
defaultPort = "9245"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -120,7 +120,7 @@ type config struct {
|
||||||
ExternalIPs []string `long:"externalip" description:"Add an ip to the list of local addresses we claim to listen on to peers"`
|
ExternalIPs []string `long:"externalip" description:"Add an ip to the list of local addresses we claim to listen on to peers"`
|
||||||
Generate bool `long:"generate" description:"Generate (mine) bitcoins using the CPU"`
|
Generate bool `long:"generate" description:"Generate (mine) bitcoins using the CPU"`
|
||||||
FreeTxRelayLimit float64 `long:"limitfreerelay" description:"Limit relay of transactions with no transaction fee to the given amount in thousands of bytes per minute"`
|
FreeTxRelayLimit float64 `long:"limitfreerelay" description:"Limit relay of transactions with no transaction fee to the given amount in thousands of bytes per minute"`
|
||||||
Listeners []string `long:"listen" description:"Add an interface/port to listen for connections (default all interfaces port: 8333, testnet: 18333)"`
|
Listeners []string `long:"listen" description:"Add an interface/port to listen for connections (default all interfaces port: 9246, testnet: 19246, regtest: 29246)"`
|
||||||
LogDir string `long:"logdir" description:"Directory to log output."`
|
LogDir string `long:"logdir" description:"Directory to log output."`
|
||||||
MaxOrphanTxs int `long:"maxorphantx" description:"Max number of orphan transactions to keep in memory"`
|
MaxOrphanTxs int `long:"maxorphantx" description:"Max number of orphan transactions to keep in memory"`
|
||||||
MaxPeers int `long:"maxpeers" description:"Max number of inbound and outbound peers"`
|
MaxPeers int `long:"maxpeers" description:"Max number of inbound and outbound peers"`
|
||||||
|
@ -153,7 +153,7 @@ type config struct {
|
||||||
RPCKey string `long:"rpckey" description:"File containing the certificate key"`
|
RPCKey string `long:"rpckey" description:"File containing the certificate key"`
|
||||||
RPCLimitPass string `long:"rpclimitpass" default-mask:"-" description:"Password for limited RPC connections"`
|
RPCLimitPass string `long:"rpclimitpass" default-mask:"-" description:"Password for limited RPC connections"`
|
||||||
RPCLimitUser string `long:"rpclimituser" description:"Username for limited RPC connections"`
|
RPCLimitUser string `long:"rpclimituser" description:"Username for limited RPC connections"`
|
||||||
RPCListeners []string `long:"rpclisten" description:"Add an interface/port to listen for RPC connections (default port: 8334, testnet: 18334)"`
|
RPCListeners []string `long:"rpclisten" description:"Add an interface/port to listen for RPC connections (default port: 9245, testnet: 19245, regtest: 29245)"`
|
||||||
RPCMaxClients int `long:"rpcmaxclients" description:"Max number of RPC clients for standard connections"`
|
RPCMaxClients int `long:"rpcmaxclients" description:"Max number of RPC clients for standard connections"`
|
||||||
RPCMaxConcurrentReqs int `long:"rpcmaxconcurrentreqs" description:"Max number of concurrent RPC requests that may be processed concurrently"`
|
RPCMaxConcurrentReqs int `long:"rpcmaxconcurrentreqs" description:"Max number of concurrent RPC requests that may be processed concurrently"`
|
||||||
RPCMaxWebsockets int `long:"rpcmaxwebsockets" description:"Max number of RPC websocket connections"`
|
RPCMaxWebsockets int `long:"rpcmaxwebsockets" description:"Max number of RPC websocket connections"`
|
||||||
|
|
|
@ -617,7 +617,7 @@ func TestListeners(t *testing.T) {
|
||||||
// Setup a connection manager with a couple of mock listeners that
|
// Setup a connection manager with a couple of mock listeners that
|
||||||
// notify a channel when they receive mock connections.
|
// notify a channel when they receive mock connections.
|
||||||
receivedConns := make(chan net.Conn)
|
receivedConns := make(chan net.Conn)
|
||||||
listener1 := newMockListener("127.0.0.1:8333")
|
listener1 := newMockListener("127.0.0.1:9246")
|
||||||
listener2 := newMockListener("127.0.0.1:9333")
|
listener2 := newMockListener("127.0.0.1:9333")
|
||||||
listeners := []net.Listener{listener1, listener2}
|
listeners := []net.Listener{listener1, listener2}
|
||||||
cmgr, err := New(&Config{
|
cmgr, err := New(&Config{
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
index.md
|
|
24
params.go
24
params.go
|
@ -28,7 +28,15 @@ type params struct {
|
||||||
// to emulate the full reference implementation RPC API.
|
// to emulate the full reference implementation RPC API.
|
||||||
var mainNetParams = params{
|
var mainNetParams = params{
|
||||||
Params: &chaincfg.MainNetParams,
|
Params: &chaincfg.MainNetParams,
|
||||||
rpcPort: "8334",
|
rpcPort: "9245",
|
||||||
|
}
|
||||||
|
|
||||||
|
// testNet3Params contains parameters specific to the test network (version 3)
|
||||||
|
// (wire.TestNet3). NOTE: The RPC port is intentionally different than the
|
||||||
|
// reference implementation - see the mainNetParams comment for details.
|
||||||
|
var testNet3Params = params{
|
||||||
|
Params: &chaincfg.TestNet3Params,
|
||||||
|
rpcPort: "19245",
|
||||||
}
|
}
|
||||||
|
|
||||||
// regressionNetParams contains parameters specific to the regression test
|
// regressionNetParams contains parameters specific to the regression test
|
||||||
|
@ -37,29 +45,21 @@ var mainNetParams = params{
|
||||||
// details.
|
// details.
|
||||||
var regressionNetParams = params{
|
var regressionNetParams = params{
|
||||||
Params: &chaincfg.RegressionNetParams,
|
Params: &chaincfg.RegressionNetParams,
|
||||||
rpcPort: "18334",
|
rpcPort: "29245",
|
||||||
}
|
|
||||||
|
|
||||||
// testNet3Params contains parameters specific to the test network (version 3)
|
|
||||||
// (wire.TestNet3). NOTE: The RPC port is intentionally different than the
|
|
||||||
// reference implementation - see the mainNetParams comment for details.
|
|
||||||
var testNet3Params = params{
|
|
||||||
Params: &chaincfg.TestNet3Params,
|
|
||||||
rpcPort: "18334",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// simNetParams contains parameters specific to the simulation test network
|
// simNetParams contains parameters specific to the simulation test network
|
||||||
// (wire.SimNet).
|
// (wire.SimNet).
|
||||||
var simNetParams = params{
|
var simNetParams = params{
|
||||||
Params: &chaincfg.SimNetParams,
|
Params: &chaincfg.SimNetParams,
|
||||||
rpcPort: "18556",
|
rpcPort: "39245",
|
||||||
}
|
}
|
||||||
|
|
||||||
// sigNetParams contains parameters specific to the Signet network
|
// sigNetParams contains parameters specific to the Signet network
|
||||||
// (wire.SigNet).
|
// (wire.SigNet).
|
||||||
var sigNetParams = params{
|
var sigNetParams = params{
|
||||||
Params: &chaincfg.SigNetParams,
|
Params: &chaincfg.SigNetParams,
|
||||||
rpcPort: "38332",
|
rpcPort: "49245",
|
||||||
}
|
}
|
||||||
|
|
||||||
// netName returns the name used when referring to a bitcoin network. At the
|
// netName returns the name used when referring to a bitcoin network. At the
|
||||||
|
|
|
@ -290,13 +290,13 @@ func TestPeerConnection(t *testing.T) {
|
||||||
"basic handshake",
|
"basic handshake",
|
||||||
func() (*peer.Peer, *peer.Peer, error) {
|
func() (*peer.Peer, *peer.Peer, error) {
|
||||||
inConn, outConn := pipe(
|
inConn, outConn := pipe(
|
||||||
&conn{raddr: "10.0.0.1:8333"},
|
&conn{raddr: "10.0.0.1:9246"},
|
||||||
&conn{raddr: "10.0.0.2:8333"},
|
&conn{raddr: "10.0.0.2:9246"},
|
||||||
)
|
)
|
||||||
inPeer := peer.NewInboundPeer(peer1Cfg)
|
inPeer := peer.NewInboundPeer(peer1Cfg)
|
||||||
inPeer.AssociateConnection(inConn)
|
inPeer.AssociateConnection(inConn)
|
||||||
|
|
||||||
outPeer, err := peer.NewOutboundPeer(peer2Cfg, "10.0.0.2:8333")
|
outPeer, err := peer.NewOutboundPeer(peer2Cfg, "10.0.0.2:9246")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -316,13 +316,13 @@ func TestPeerConnection(t *testing.T) {
|
||||||
"socks proxy",
|
"socks proxy",
|
||||||
func() (*peer.Peer, *peer.Peer, error) {
|
func() (*peer.Peer, *peer.Peer, error) {
|
||||||
inConn, outConn := pipe(
|
inConn, outConn := pipe(
|
||||||
&conn{raddr: "10.0.0.1:8333", proxy: true},
|
&conn{raddr: "10.0.0.1:9246", proxy: true},
|
||||||
&conn{raddr: "10.0.0.2:8333"},
|
&conn{raddr: "10.0.0.2:9246"},
|
||||||
)
|
)
|
||||||
inPeer := peer.NewInboundPeer(peer1Cfg)
|
inPeer := peer.NewInboundPeer(peer1Cfg)
|
||||||
inPeer.AssociateConnection(inConn)
|
inPeer.AssociateConnection(inConn)
|
||||||
|
|
||||||
outPeer, err := peer.NewOutboundPeer(peer2Cfg, "10.0.0.2:8333")
|
outPeer, err := peer.NewOutboundPeer(peer2Cfg, "10.0.0.2:9246")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -457,8 +457,8 @@ func TestPeerListeners(t *testing.T) {
|
||||||
AllowSelfConns: true,
|
AllowSelfConns: true,
|
||||||
}
|
}
|
||||||
inConn, outConn := pipe(
|
inConn, outConn := pipe(
|
||||||
&conn{raddr: "10.0.0.1:8333"},
|
&conn{raddr: "10.0.0.1:9246"},
|
||||||
&conn{raddr: "10.0.0.2:8333"},
|
&conn{raddr: "10.0.0.2:9246"},
|
||||||
)
|
)
|
||||||
inPeer := peer.NewInboundPeer(peerCfg)
|
inPeer := peer.NewInboundPeer(peerCfg)
|
||||||
inPeer.AssociateConnection(inConn)
|
inPeer.AssociateConnection(inConn)
|
||||||
|
@ -468,7 +468,7 @@ func TestPeerListeners(t *testing.T) {
|
||||||
verack <- struct{}{}
|
verack <- struct{}{}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
outPeer, err := peer.NewOutboundPeer(peerCfg, "10.0.0.1:8333")
|
outPeer, err := peer.NewOutboundPeer(peerCfg, "10.0.0.1:9246")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("NewOutboundPeer: unexpected err %v\n", err)
|
t.Errorf("NewOutboundPeer: unexpected err %v\n", err)
|
||||||
return
|
return
|
||||||
|
@ -630,9 +630,9 @@ func TestOutboundPeer(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
r, w := io.Pipe()
|
r, w := io.Pipe()
|
||||||
c := &conn{raddr: "10.0.0.1:8333", Writer: w, Reader: r}
|
c := &conn{raddr: "10.0.0.1:9246", Writer: w, Reader: r}
|
||||||
|
|
||||||
p, err := peer.NewOutboundPeer(peerCfg, "10.0.0.1:8333")
|
p, err := peer.NewOutboundPeer(peerCfg, "10.0.0.1:9246")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("NewOutboundPeer: unexpected err - %v\n", err)
|
t.Errorf("NewOutboundPeer: unexpected err - %v\n", err)
|
||||||
return
|
return
|
||||||
|
@ -687,8 +687,8 @@ func TestOutboundPeer(t *testing.T) {
|
||||||
|
|
||||||
peerCfg.NewestBlock = newestBlock
|
peerCfg.NewestBlock = newestBlock
|
||||||
r1, w1 := io.Pipe()
|
r1, w1 := io.Pipe()
|
||||||
c1 := &conn{raddr: "10.0.0.1:8333", Writer: w1, Reader: r1}
|
c1 := &conn{raddr: "10.0.0.1:9246", Writer: w1, Reader: r1}
|
||||||
p1, err := peer.NewOutboundPeer(peerCfg, "10.0.0.1:8333")
|
p1, err := peer.NewOutboundPeer(peerCfg, "10.0.0.1:9246")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("NewOutboundPeer: unexpected err - %v\n", err)
|
t.Errorf("NewOutboundPeer: unexpected err - %v\n", err)
|
||||||
return
|
return
|
||||||
|
@ -717,8 +717,8 @@ func TestOutboundPeer(t *testing.T) {
|
||||||
peerCfg.ChainParams = &chaincfg.RegressionNetParams
|
peerCfg.ChainParams = &chaincfg.RegressionNetParams
|
||||||
peerCfg.Services = wire.SFNodeBloom
|
peerCfg.Services = wire.SFNodeBloom
|
||||||
r2, w2 := io.Pipe()
|
r2, w2 := io.Pipe()
|
||||||
c2 := &conn{raddr: "10.0.0.1:8333", Writer: w2, Reader: r2}
|
c2 := &conn{raddr: "10.0.0.1:9246", Writer: w2, Reader: r2}
|
||||||
p2, err := peer.NewOutboundPeer(peerCfg, "10.0.0.1:8333")
|
p2, err := peer.NewOutboundPeer(peerCfg, "10.0.0.1:9246")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("NewOutboundPeer: unexpected err - %v\n", err)
|
t.Errorf("NewOutboundPeer: unexpected err - %v\n", err)
|
||||||
return
|
return
|
||||||
|
@ -773,20 +773,20 @@ func TestUnsupportedVersionPeer(t *testing.T) {
|
||||||
|
|
||||||
localNA := wire.NewNetAddressIPPort(
|
localNA := wire.NewNetAddressIPPort(
|
||||||
net.ParseIP("10.0.0.1"),
|
net.ParseIP("10.0.0.1"),
|
||||||
uint16(8333),
|
uint16(9246),
|
||||||
wire.SFNodeNetwork,
|
wire.SFNodeNetwork,
|
||||||
)
|
)
|
||||||
remoteNA := wire.NewNetAddressIPPort(
|
remoteNA := wire.NewNetAddressIPPort(
|
||||||
net.ParseIP("10.0.0.2"),
|
net.ParseIP("10.0.0.2"),
|
||||||
uint16(8333),
|
uint16(9246),
|
||||||
wire.SFNodeNetwork,
|
wire.SFNodeNetwork,
|
||||||
)
|
)
|
||||||
localConn, remoteConn := pipe(
|
localConn, remoteConn := pipe(
|
||||||
&conn{laddr: "10.0.0.1:8333", raddr: "10.0.0.2:8333"},
|
&conn{laddr: "10.0.0.1:9246", raddr: "10.0.0.2:9246"},
|
||||||
&conn{laddr: "10.0.0.2:8333", raddr: "10.0.0.1:8333"},
|
&conn{laddr: "10.0.0.2:9246", raddr: "10.0.0.1:9246"},
|
||||||
)
|
)
|
||||||
|
|
||||||
p, err := peer.NewOutboundPeer(peerCfg, "10.0.0.1:8333")
|
p, err := peer.NewOutboundPeer(peerCfg, "10.0.0.1:9246")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("NewOutboundPeer: unexpected err - %v\n", err)
|
t.Fatalf("NewOutboundPeer: unexpected err - %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var connCfg = &ConnConfig{
|
var connCfg = &ConnConfig{
|
||||||
Host: "localhost:8332",
|
Host: "localhost:9244",
|
||||||
User: "user",
|
User: "user",
|
||||||
Pass: "pass",
|
Pass: "pass",
|
||||||
HTTPPostMode: true,
|
HTTPPostMode: true,
|
||||||
|
|
|
@ -13,7 +13,7 @@ import (
|
||||||
func main() {
|
func main() {
|
||||||
// Connect to local bitcoin core RPC server using HTTP POST mode.
|
// Connect to local bitcoin core RPC server using HTTP POST mode.
|
||||||
connCfg := &rpcclient.ConnConfig{
|
connCfg := &rpcclient.ConnConfig{
|
||||||
Host: "localhost:8332",
|
Host: "localhost:9245",
|
||||||
User: "yourrpcuser",
|
User: "yourrpcuser",
|
||||||
Pass: "yourrpcpass",
|
Pass: "yourrpcpass",
|
||||||
HTTPPostMode: true, // Bitcoin core only supports HTTP POST mode
|
HTTPPostMode: true, // Bitcoin core only supports HTTP POST mode
|
||||||
|
|
|
@ -14,7 +14,7 @@ import (
|
||||||
func main() {
|
func main() {
|
||||||
// Connect to local bitcoin core RPC server using HTTP POST mode.
|
// Connect to local bitcoin core RPC server using HTTP POST mode.
|
||||||
connCfg := &rpcclient.ConnConfig{
|
connCfg := &rpcclient.ConnConfig{
|
||||||
Host: "localhost:8332",
|
Host: "localhost:9245",
|
||||||
User: "yourrpcuser",
|
User: "yourrpcuser",
|
||||||
Pass: "yourrpcpass",
|
Pass: "yourrpcpass",
|
||||||
DisableConnectOnNew: true,
|
DisableConnectOnNew: true,
|
||||||
|
|
|
@ -38,7 +38,7 @@ func main() {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
connCfg := &rpcclient.ConnConfig{
|
connCfg := &rpcclient.ConnConfig{
|
||||||
Host: "localhost:8334",
|
Host: "localhost:9245",
|
||||||
Endpoint: "ws",
|
Endpoint: "ws",
|
||||||
User: "yourrpcuser",
|
User: "yourrpcuser",
|
||||||
Pass: "yourrpcpass",
|
Pass: "yourrpcpass",
|
||||||
|
|
|
@ -34,7 +34,7 @@ func main() {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
connCfg := &rpcclient.ConnConfig{
|
connCfg := &rpcclient.ConnConfig{
|
||||||
Host: "localhost:18332",
|
Host: "localhost:19245",
|
||||||
Endpoint: "ws",
|
Endpoint: "ws",
|
||||||
User: "yourrpcuser",
|
User: "yourrpcuser",
|
||||||
Pass: "yourrpcpass",
|
Pass: "yourrpcpass",
|
||||||
|
|
|
@ -2792,7 +2792,7 @@ func (c *Client) UnloadWalletAsync(walletName *string) FutureUnloadWalletResult
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnloadWallet unloads the referenced wallet. If the RPC server URL already
|
// UnloadWallet unloads the referenced wallet. If the RPC server URL already
|
||||||
// contains the name of the wallet, like http://127.0.0.1:8332/wallet/<walletname>,
|
// contains the name of the wallet, like http://127.0.0.1:9245/wallet/<walletname>,
|
||||||
// the parameter must be nil, or it'll return an error.
|
// the parameter must be nil, or it'll return an error.
|
||||||
func (c *Client) UnloadWallet(walletName *string) error {
|
func (c *Client) UnloadWallet(walletName *string) error {
|
||||||
return c.UnloadWalletAsync(walletName).Receive()
|
return c.UnloadWalletAsync(walletName).Receive()
|
||||||
|
|
|
@ -198,16 +198,16 @@
|
||||||
; rpclisten=0.0.0.0
|
; rpclisten=0.0.0.0
|
||||||
; All ipv6 interfaces on default port:
|
; All ipv6 interfaces on default port:
|
||||||
; rpclisten=::
|
; rpclisten=::
|
||||||
; All interfaces on port 8334:
|
; All interfaces on port 9245:
|
||||||
; rpclisten=:8334
|
; rpclisten=:9245
|
||||||
; All ipv4 interfaces on port 8334:
|
; All ipv4 interfaces on port 9245:
|
||||||
; rpclisten=0.0.0.0:8334
|
; rpclisten=0.0.0.0:9245
|
||||||
; All ipv6 interfaces on port 8334:
|
; All ipv6 interfaces on port 9245:
|
||||||
; rpclisten=[::]:8334
|
; rpclisten=[::]:9245
|
||||||
; Only ipv4 localhost on port 8334:
|
; Only ipv4 localhost on port 9245:
|
||||||
; rpclisten=127.0.0.1:8334
|
; rpclisten=127.0.0.1:9245
|
||||||
; Only ipv6 localhost on port 8334:
|
; Only ipv6 localhost on port 9245:
|
||||||
; rpclisten=[::1]:8334
|
; rpclisten=[::1]:9245
|
||||||
; Only ipv4 localhost on non-standard port 8337:
|
; Only ipv4 localhost on non-standard port 8337:
|
||||||
; rpclisten=127.0.0.1:8337
|
; rpclisten=127.0.0.1:8337
|
||||||
; All interfaces on non-standard port 8337:
|
; All interfaces on non-standard port 8337:
|
||||||
|
|
|
@ -40,10 +40,10 @@ func TestMessage(t *testing.T) {
|
||||||
// Create the various types of messages to test.
|
// Create the various types of messages to test.
|
||||||
|
|
||||||
// MsgVersion.
|
// MsgVersion.
|
||||||
addrYou := &net.TCPAddr{IP: net.ParseIP("192.168.0.1"), Port: 8333}
|
addrYou := &net.TCPAddr{IP: net.ParseIP("192.168.0.1"), Port: 9246}
|
||||||
you := NewNetAddress(addrYou, SFNodeNetwork)
|
you := NewNetAddress(addrYou, SFNodeNetwork)
|
||||||
you.Timestamp = time.Time{} // Version message has zero value timestamp.
|
you.Timestamp = time.Time{} // Version message has zero value timestamp.
|
||||||
addrMe := &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8333}
|
addrMe := &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 9246}
|
||||||
me := NewNetAddress(addrMe, SFNodeNetwork)
|
me := NewNetAddress(addrMe, SFNodeNetwork)
|
||||||
me.Timestamp = time.Time{} // Version message has zero value timestamp.
|
me.Timestamp = time.Time{} // Version message has zero value timestamp.
|
||||||
msgVersion := NewMsgVersion(me, you, 123123, 0)
|
msgVersion := NewMsgVersion(me, you, 123123, 0)
|
||||||
|
|
|
@ -38,7 +38,7 @@ func TestAddr(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure NetAddresses are added properly.
|
// Ensure NetAddresses are added properly.
|
||||||
tcpAddr := &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8333}
|
tcpAddr := &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 9246}
|
||||||
na := NewNetAddress(tcpAddr, SFNodeNetwork)
|
na := NewNetAddress(tcpAddr, SFNodeNetwork)
|
||||||
err := msg.AddAddress(na)
|
err := msg.AddAddress(na)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -105,7 +105,7 @@ func TestAddrWire(t *testing.T) {
|
||||||
Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST
|
Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST
|
||||||
Services: SFNodeNetwork,
|
Services: SFNodeNetwork,
|
||||||
IP: net.ParseIP("127.0.0.1"),
|
IP: net.ParseIP("127.0.0.1"),
|
||||||
Port: 8333,
|
Port: 9246,
|
||||||
}
|
}
|
||||||
na2 := &NetAddress{
|
na2 := &NetAddress{
|
||||||
Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST
|
Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST
|
||||||
|
@ -129,7 +129,7 @@ func TestAddrWire(t *testing.T) {
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x01, // IP 127.0.0.1
|
0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x01, // IP 127.0.0.1
|
||||||
0x20, 0x8d, // Port 8333 in big-endian
|
0x24, 0x1e, // Port 9246 in big-endian
|
||||||
0x29, 0xab, 0x5f, 0x49, // Timestamp
|
0x29, 0xab, 0x5f, 0x49, // Timestamp
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
@ -216,7 +216,7 @@ func TestAddrWireErrors(t *testing.T) {
|
||||||
Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST
|
Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST
|
||||||
Services: SFNodeNetwork,
|
Services: SFNodeNetwork,
|
||||||
IP: net.ParseIP("127.0.0.1"),
|
IP: net.ParseIP("127.0.0.1"),
|
||||||
Port: 8333,
|
Port: 9246,
|
||||||
}
|
}
|
||||||
na2 := &NetAddress{
|
na2 := &NetAddress{
|
||||||
Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST
|
Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST
|
||||||
|
@ -234,7 +234,7 @@ func TestAddrWireErrors(t *testing.T) {
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x01, // IP 127.0.0.1
|
0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x01, // IP 127.0.0.1
|
||||||
0x20, 0x8d, // Port 8333 in big-endian
|
0x24, 0x1e, // Port 9246 in big-endian
|
||||||
0x29, 0xab, 0x5f, 0x49, // Timestamp
|
0x29, 0xab, 0x5f, 0x49, // Timestamp
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
|
@ -22,9 +22,9 @@ func TestVersion(t *testing.T) {
|
||||||
|
|
||||||
// Create version message data.
|
// Create version message data.
|
||||||
lastBlock := int32(234234)
|
lastBlock := int32(234234)
|
||||||
tcpAddrMe := &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8333}
|
tcpAddrMe := &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 9246}
|
||||||
me := NewNetAddress(tcpAddrMe, SFNodeNetwork)
|
me := NewNetAddress(tcpAddrMe, SFNodeNetwork)
|
||||||
tcpAddrYou := &net.TCPAddr{IP: net.ParseIP("192.168.0.1"), Port: 8333}
|
tcpAddrYou := &net.TCPAddr{IP: net.ParseIP("192.168.0.1"), Port: 9246}
|
||||||
you := NewNetAddress(tcpAddrYou, SFNodeNetwork)
|
you := NewNetAddress(tcpAddrYou, SFNodeNetwork)
|
||||||
nonce, err := RandomUint64()
|
nonce, err := RandomUint64()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -377,7 +377,7 @@ func TestVersionOptionalFields(t *testing.T) {
|
||||||
Timestamp: time.Time{}, // Zero value -- no timestamp in version
|
Timestamp: time.Time{}, // Zero value -- no timestamp in version
|
||||||
Services: SFNodeNetwork,
|
Services: SFNodeNetwork,
|
||||||
IP: net.ParseIP("192.168.0.1"),
|
IP: net.ParseIP("192.168.0.1"),
|
||||||
Port: 8333,
|
Port: 9246,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
onlyRequiredVersionEncoded := make([]byte, len(baseVersionEncoded)-55)
|
onlyRequiredVersionEncoded := make([]byte, len(baseVersionEncoded)-55)
|
||||||
|
@ -390,7 +390,7 @@ func TestVersionOptionalFields(t *testing.T) {
|
||||||
Timestamp: time.Time{}, // Zero value -- no timestamp in version
|
Timestamp: time.Time{}, // Zero value -- no timestamp in version
|
||||||
Services: SFNodeNetwork,
|
Services: SFNodeNetwork,
|
||||||
IP: net.ParseIP("127.0.0.1"),
|
IP: net.ParseIP("127.0.0.1"),
|
||||||
Port: 8333,
|
Port: 9246,
|
||||||
}
|
}
|
||||||
addrMeVersionEncoded := make([]byte, len(baseVersionEncoded)-29)
|
addrMeVersionEncoded := make([]byte, len(baseVersionEncoded)-29)
|
||||||
copy(addrMeVersionEncoded, baseVersionEncoded)
|
copy(addrMeVersionEncoded, baseVersionEncoded)
|
||||||
|
@ -480,13 +480,13 @@ var baseVersion = &MsgVersion{
|
||||||
Timestamp: time.Time{}, // Zero value -- no timestamp in version
|
Timestamp: time.Time{}, // Zero value -- no timestamp in version
|
||||||
Services: SFNodeNetwork,
|
Services: SFNodeNetwork,
|
||||||
IP: net.ParseIP("192.168.0.1"),
|
IP: net.ParseIP("192.168.0.1"),
|
||||||
Port: 8333,
|
Port: 9246,
|
||||||
},
|
},
|
||||||
AddrMe: NetAddress{
|
AddrMe: NetAddress{
|
||||||
Timestamp: time.Time{}, // Zero value -- no timestamp in version
|
Timestamp: time.Time{}, // Zero value -- no timestamp in version
|
||||||
Services: SFNodeNetwork,
|
Services: SFNodeNetwork,
|
||||||
IP: net.ParseIP("127.0.0.1"),
|
IP: net.ParseIP("127.0.0.1"),
|
||||||
Port: 8333,
|
Port: 9246,
|
||||||
},
|
},
|
||||||
Nonce: 123123, // 0x1e0f3
|
Nonce: 123123, // 0x1e0f3
|
||||||
UserAgent: "/btcdtest:0.0.1/",
|
UserAgent: "/btcdtest:0.0.1/",
|
||||||
|
@ -503,12 +503,12 @@ var baseVersionEncoded = []byte{
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0xff, 0xff, 0xc0, 0xa8, 0x00, 0x01, // IP 192.168.0.1
|
0x00, 0x00, 0xff, 0xff, 0xc0, 0xa8, 0x00, 0x01, // IP 192.168.0.1
|
||||||
0x20, 0x8d, // Port 8333 in big-endian
|
0x24, 0x1e, // Port 9246 in big-endian
|
||||||
// AddrMe -- No timestamp for NetAddress in version message
|
// AddrMe -- No timestamp for NetAddress in version message
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x01, // IP 127.0.0.1
|
0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x01, // IP 127.0.0.1
|
||||||
0x20, 0x8d, // Port 8333 in big-endian
|
0x24, 0x1e, // Port 9246 in big-endian
|
||||||
0xf3, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // Nonce
|
0xf3, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // Nonce
|
||||||
0x10, // Varint for user agent length
|
0x10, // Varint for user agent length
|
||||||
0x2f, 0x62, 0x74, 0x63, 0x64, 0x74, 0x65, 0x73,
|
0x2f, 0x62, 0x74, 0x63, 0x64, 0x74, 0x65, 0x73,
|
||||||
|
@ -526,13 +526,13 @@ var baseVersionBIP0037 = &MsgVersion{
|
||||||
Timestamp: time.Time{}, // Zero value -- no timestamp in version
|
Timestamp: time.Time{}, // Zero value -- no timestamp in version
|
||||||
Services: SFNodeNetwork,
|
Services: SFNodeNetwork,
|
||||||
IP: net.ParseIP("192.168.0.1"),
|
IP: net.ParseIP("192.168.0.1"),
|
||||||
Port: 8333,
|
Port: 9246,
|
||||||
},
|
},
|
||||||
AddrMe: NetAddress{
|
AddrMe: NetAddress{
|
||||||
Timestamp: time.Time{}, // Zero value -- no timestamp in version
|
Timestamp: time.Time{}, // Zero value -- no timestamp in version
|
||||||
Services: SFNodeNetwork,
|
Services: SFNodeNetwork,
|
||||||
IP: net.ParseIP("127.0.0.1"),
|
IP: net.ParseIP("127.0.0.1"),
|
||||||
Port: 8333,
|
Port: 9246,
|
||||||
},
|
},
|
||||||
Nonce: 123123, // 0x1e0f3
|
Nonce: 123123, // 0x1e0f3
|
||||||
UserAgent: "/btcdtest:0.0.1/",
|
UserAgent: "/btcdtest:0.0.1/",
|
||||||
|
@ -549,12 +549,12 @@ var baseVersionBIP0037Encoded = []byte{
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0xff, 0xff, 0xc0, 0xa8, 0x00, 0x01, // IP 192.168.0.1
|
0x00, 0x00, 0xff, 0xff, 0xc0, 0xa8, 0x00, 0x01, // IP 192.168.0.1
|
||||||
0x20, 0x8d, // Port 8333 in big-endian
|
0x24, 0x1e, // Port 9246 in big-endian
|
||||||
// AddrMe -- No timestamp for NetAddress in version message
|
// AddrMe -- No timestamp for NetAddress in version message
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x01, // IP 127.0.0.1
|
0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x01, // IP 127.0.0.1
|
||||||
0x20, 0x8d, // Port 8333 in big-endian
|
0x24, 0x1e, // Port 9246 in big-endian
|
||||||
0xf3, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // Nonce
|
0xf3, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // Nonce
|
||||||
0x10, // Varint for user agent length
|
0x10, // Varint for user agent length
|
||||||
0x2f, 0x62, 0x74, 0x63, 0x64, 0x74, 0x65, 0x73,
|
0x2f, 0x62, 0x74, 0x63, 0x64, 0x74, 0x65, 0x73,
|
||||||
|
|
|
@ -18,7 +18,7 @@ import (
|
||||||
// TestNetAddress tests the NetAddress API.
|
// TestNetAddress tests the NetAddress API.
|
||||||
func TestNetAddress(t *testing.T) {
|
func TestNetAddress(t *testing.T) {
|
||||||
ip := net.ParseIP("127.0.0.1")
|
ip := net.ParseIP("127.0.0.1")
|
||||||
port := 8333
|
port := 9246
|
||||||
|
|
||||||
// Test NewNetAddress.
|
// Test NewNetAddress.
|
||||||
na := NewNetAddress(&net.TCPAddr{IP: ip, Port: port}, 0)
|
na := NewNetAddress(&net.TCPAddr{IP: ip, Port: port}, 0)
|
||||||
|
@ -79,7 +79,7 @@ func TestNetAddressWire(t *testing.T) {
|
||||||
Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST
|
Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST
|
||||||
Services: SFNodeNetwork,
|
Services: SFNodeNetwork,
|
||||||
IP: net.ParseIP("127.0.0.1"),
|
IP: net.ParseIP("127.0.0.1"),
|
||||||
Port: 8333,
|
Port: 9246,
|
||||||
}
|
}
|
||||||
|
|
||||||
// baseNetAddrNoTS is baseNetAddr with a zero value for the timestamp.
|
// baseNetAddrNoTS is baseNetAddr with a zero value for the timestamp.
|
||||||
|
@ -92,7 +92,7 @@ func TestNetAddressWire(t *testing.T) {
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x01, // IP 127.0.0.1
|
0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x01, // IP 127.0.0.1
|
||||||
0x20, 0x8d, // Port 8333 in big-endian
|
0x24, 0x1e, // Port 9246 in big-endian
|
||||||
}
|
}
|
||||||
|
|
||||||
// baseNetAddrNoTSEncoded is the wire encoded bytes of baseNetAddrNoTS.
|
// baseNetAddrNoTSEncoded is the wire encoded bytes of baseNetAddrNoTS.
|
||||||
|
@ -101,7 +101,7 @@ func TestNetAddressWire(t *testing.T) {
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFNodeNetwork
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x01, // IP 127.0.0.1
|
0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x01, // IP 127.0.0.1
|
||||||
0x20, 0x8d, // Port 8333 in big-endian
|
0x24, 0x1e, // Port 9246 in big-endian
|
||||||
}
|
}
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
|
@ -211,7 +211,7 @@ func TestNetAddressWireErrors(t *testing.T) {
|
||||||
Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST
|
Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST
|
||||||
Services: SFNodeNetwork,
|
Services: SFNodeNetwork,
|
||||||
IP: net.ParseIP("127.0.0.1"),
|
IP: net.ParseIP("127.0.0.1"),
|
||||||
Port: 8333,
|
Port: 9246,
|
||||||
}
|
}
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
|
|
Loading…
Reference in a new issue