mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-03-30 15:08:33 +00:00

* [NOD-570] Separate genesis variables for different netwroks * [NOD-570] Make Testnet genesis * [NOD-570] Make simnet and regtest genesis * [NOD-570] Remake devnet genesis * [NOD-570] Rename regNet -> regTest testnet->testNet * [NOD-570] Change network names to one word instead of camel case * [NOD-570] Change network names to one word instead of camel case * [NOD-570] Fix test names * [NOD-570] Fix TestGHOSTDAG Co-authored-by: Dan Aharoni <dereeno@protonmail.com>
134 lines
3.2 KiB
Go
134 lines
3.2 KiB
Go
// Copyright (c) 2013-2016 The btcsuite developers
|
|
// Use of this source code is governed by an ISC
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package wire
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// XXX pedro: we will probably need to bump this.
|
|
const (
|
|
// ProtocolVersion is the latest protocol version this package supports.
|
|
ProtocolVersion uint32 = 1
|
|
)
|
|
|
|
// ServiceFlag identifies services supported by a kaspa peer.
|
|
type ServiceFlag uint64
|
|
|
|
const (
|
|
// SFNodeNetwork is a flag used to indicate a peer is a full node.
|
|
SFNodeNetwork ServiceFlag = 1 << iota
|
|
|
|
// SFNodeGetUTXO is a flag used to indicate a peer supports the
|
|
// getutxos and utxos commands (BIP0064).
|
|
SFNodeGetUTXO
|
|
|
|
// SFNodeBloom is a flag used to indicate a peer supports bloom
|
|
// filtering.
|
|
SFNodeBloom
|
|
|
|
// SFNodeXthin is a flag used to indicate a peer supports xthin blocks.
|
|
SFNodeXthin
|
|
|
|
// SFNodeBit5 is a flag used to indicate a peer supports a service
|
|
// defined by bit 5.
|
|
SFNodeBit5
|
|
|
|
// SFNodeCF is a flag used to indicate a peer supports committed
|
|
// filters (CFs).
|
|
SFNodeCF
|
|
)
|
|
|
|
// Map of service flags back to their constant names for pretty printing.
|
|
var sfStrings = map[ServiceFlag]string{
|
|
SFNodeNetwork: "SFNodeNetwork",
|
|
SFNodeGetUTXO: "SFNodeGetUTXO",
|
|
SFNodeBloom: "SFNodeBloom",
|
|
SFNodeXthin: "SFNodeXthin",
|
|
SFNodeBit5: "SFNodeBit5",
|
|
SFNodeCF: "SFNodeCF",
|
|
}
|
|
|
|
// orderedSFStrings is an ordered list of service flags from highest to
|
|
// lowest.
|
|
var orderedSFStrings = []ServiceFlag{
|
|
SFNodeNetwork,
|
|
SFNodeGetUTXO,
|
|
SFNodeBloom,
|
|
SFNodeXthin,
|
|
SFNodeBit5,
|
|
SFNodeCF,
|
|
}
|
|
|
|
// String returns the ServiceFlag in human-readable form.
|
|
func (f ServiceFlag) String() string {
|
|
// No flags are set.
|
|
if f == 0 {
|
|
return "0x0"
|
|
}
|
|
|
|
// Add individual bit flags.
|
|
s := ""
|
|
for _, flag := range orderedSFStrings {
|
|
if f&flag == flag {
|
|
s += sfStrings[flag] + "|"
|
|
f -= flag
|
|
}
|
|
}
|
|
|
|
// Add any remaining flags which aren't accounted for as hex.
|
|
s = strings.TrimRight(s, "|")
|
|
if f != 0 {
|
|
s += "|0x" + strconv.FormatUint(uint64(f), 16)
|
|
}
|
|
s = strings.TrimLeft(s, "|")
|
|
return s
|
|
}
|
|
|
|
// KaspaNet represents which kaspa network a message belongs to.
|
|
type KaspaNet uint32
|
|
|
|
// Constants used to indicate the message kaspa network. They can also be
|
|
// used to seek to the next message when a stream's state is unknown, but
|
|
// this package does not provide that functionality since it's generally a
|
|
// better idea to simply disconnect clients that are misbehaving over TCP.
|
|
const (
|
|
// Mainnet represents the main kaspa network.
|
|
Mainnet KaspaNet = 0x3ddcf71d
|
|
|
|
// Testnet represents the test network.
|
|
Testnet KaspaNet = 0xddb8af8f
|
|
|
|
// Regtest represents the regression test network.
|
|
Regtest KaspaNet = 0xf396cdd6
|
|
|
|
// Simnet represents the simulation test network.
|
|
Simnet KaspaNet = 0x374dcf1c
|
|
|
|
// Devnet represents the development test network.
|
|
Devnet KaspaNet = 0x732d87e1
|
|
)
|
|
|
|
// bnStrings is a map of kaspa networks back to their constant names for
|
|
// pretty printing.
|
|
var bnStrings = map[KaspaNet]string{
|
|
Mainnet: "Mainnet",
|
|
Testnet: "Testnet",
|
|
Regtest: "Regtest",
|
|
Simnet: "Simnet",
|
|
Devnet: "Devnet",
|
|
}
|
|
|
|
// String returns the KaspaNet in human-readable form.
|
|
func (n KaspaNet) String() string {
|
|
if s, ok := bnStrings[n]; ok {
|
|
return s
|
|
}
|
|
|
|
return fmt.Sprintf("Unknown KaspaNet (%d)", uint32(n))
|
|
}
|