Documentation ¶
Index ¶
Constants ¶
const ( BurnBtcReward = 1 << iota BurnJaxNetReward = 1 << iota BurnJaxReward = 1 << iota )
const ( // MaxInvPerMsg is the maximum number of inventory vectors that can be in a // single bitcoin inv message. MaxInvPerMsg = 50000 // MaxInvVectPayload is maximum payload size for an inventory vector. MaxInvVectPayload = 4 + chainhash.HashSize // InvWitnessFlag denotes that the inventory vector type is requesting, // or sending a version which includes witness data. InvWitnessFlag = 1 << 30 )
const ( // ProtocolVersion is the latest protocol version this package supports. ProtocolVersion uint32 = 70013 // MultipleAddressVersion is the protocol version which added multiple // addresses per message (pver >= MultipleAddressVersion). MultipleAddressVersion uint32 = 209 // NetAddressTimeVersion is the protocol version which added the // timestamp field (pver >= NetAddressTimeVersion). NetAddressTimeVersion uint32 = 31402 // BIP0031Version is the protocol version AFTER which a pong message // and nonce field in ping were added (pver > BIP0031Version). BIP0031Version uint32 = 60000 // BIP0035Version is the protocol version which added the mempool // message (pver >= BIP0035Version). BIP0035Version uint32 = 60002 // BIP0037Version is the protocol version which added new connection // bloom filtering related messages and extended the version message // with a relay flag (pver >= BIP0037Version). BIP0037Version uint32 = 70001 // RejectVersion is the protocol version which added a new reject // message. RejectVersion uint32 = 70002 // BIP0111Version is the protocol version which added the SFNodeBloom // service flag. BIP0111Version uint32 = 70011 // SendHeadersVersion is the protocol version which added a new // sendheaders message. SendHeadersVersion uint32 = 70012 // FeeFilterVersion is the protocol version which added a new // feefilter message. FeeFilterVersion uint32 = 70013 )
XXX pedro: we will probably need to bump this.
const JaxBurnAddr = " JAX "
const JaxNetLink = " https://jax.network "
Variables ¶
This section is empty.
Functions ¶
func MaxNetAddressPayload ¶
MaxNetAddressPayload returns the max payload size for a bitcoin NetAddress based on the protocol version.
Types ¶
type BloomUpdateType ¶
type BloomUpdateType uint8
BloomUpdateType specifies how the filter is updated when a match is found
const ( // BloomUpdateNone indicates the filter is not adjusted when a match is // found. BloomUpdateNone BloomUpdateType = 0 // BloomUpdateAll indicates if the filter matches any data element in a // public key script, the outpoint is serialized and inserted into the // filter. BloomUpdateAll BloomUpdateType = 1 // BloomUpdateP2PubkeyOnly indicates if the filter matches a data // element in a public key script and the script is of the standard // pay-to-pubkey or multisig, the outpoint is serialized and inserted // into the filter. BloomUpdateP2PubkeyOnly BloomUpdateType = 2 )
type InvType ¶
type InvType uint32
InvType represents the allowed types of inventory vectors. See InvVect.
const ( InvTypeError InvType = 0 InvTypeTx InvType = 1 InvTypeBlock InvType = 2 InvTypeFilteredBlock InvType = 3 InvTypeWitnessBlock InvType = InvTypeBlock | InvWitnessFlag InvTypeWitnessTx InvType = InvTypeTx | InvWitnessFlag InvTypeFilteredWitnessBlock InvType = InvTypeFilteredBlock | InvWitnessFlag )
These constants define the various supported inventory vector types.
type InvVect ¶
InvVect defines a bitcoin inventory vector which is used to describe data, as specified by the Type field, that a server wants, has, or does not have to another server.
type JaxNet ¶
type JaxNet uint32
JaxNet represents which bitcoin network a message belongs to.
const ( // MainNet represents the main jax network. MainNet JaxNet = 0xd9b4bef9 // RegTest represents the regression test network. RegTest JaxNet = 0xdab5bffa // TestNet3 represents the test network (version 3). TestNet3 JaxNet = 0x0709110b // SimNet represents the simulation test network. SimNet JaxNet = 0x12141c16 // FastTestNet represents the development jax network. FastTestNet JaxNet = 0x12121212 )
Constants used to indicate the message bitcoin 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.
type MessageError ¶
type MessageError struct { Func string // Function name Description string // Human readable description of the issue }
MessageError describes an issue with a message. An example of some potential issues are messages from the wrong bitcoin network, invalid commands, mismatched checksums, and exceeding max payloads.
This provides a mechanism for the caller to type assert the error to differentiate between general io errors such as io.EOF and issues that resulted from malformed messages.
func Error ¶
func Error(f string, desc string) *MessageError
messageError creates an error for the given function and description.
func (*MessageError) Error ¶
func (e *MessageError) Error() string
Error satisfies the error interface and prints human-readable errors.
type NetAddress ¶
type NetAddress struct { // Last time the address was seen. This is, unfortunately, encoded as a // uint32 on the wire and therefore is limited to 2106. This field is // not present in the bitcoin version message (MsgVersion) nor was it // added until protocol version >= NetAddressTimeVersion. Timestamp time.Time // Bitfield which identifies the services supported by the address. Services ServiceFlag // IP address of the server. IP net.IP // Port the server is using. This is encoded in big endian on the wire // which differs from most everything else. Port uint16 }
NetAddress defines information about a server on the network including the time it was last seen, the services it supports, its IP address, and port.
func NewNetAddress ¶
func NewNetAddress(addr *net.TCPAddr, services ServiceFlag) *NetAddress
NewNetAddress returns a new NetAddress using the provided TCP address and supported services with defaults for the remaining fields.
func NewNetAddressIPPort ¶
func NewNetAddressIPPort(ip net.IP, port uint16, services ServiceFlag) *NetAddress
NewNetAddressIPPort returns a new NetAddress using the provided IP, port, and supported services with defaults for the remaining fields.
func NewNetAddressTimestamp ¶
func NewNetAddressTimestamp( timestamp time.Time, services ServiceFlag, ip net.IP, port uint16) *NetAddress
NewNetAddressTimestamp returns a new NetAddress using the provided timestamp, IP, port, and supported services. The timestamp is rounded to single second precision.
func (*NetAddress) AddService ¶
func (na *NetAddress) AddService(service ServiceFlag)
AddService adds service as a supported service by the server generating the message.
func (*NetAddress) HasService ¶
func (na *NetAddress) HasService(service ServiceFlag) bool
HasService returns whether the specified service is supported by the address.
type RejectCode ¶
type RejectCode uint8
RejectCode represents a numeric value by which a remote server indicates why a message was rejected.
const ( RejectMalformed RejectCode = 0x01 RejectInvalid RejectCode = 0x10 RejectObsolete RejectCode = 0x11 RejectDuplicate RejectCode = 0x12 RejectNonstandard RejectCode = 0x40 RejectDust RejectCode = 0x41 RejectInsufficientFee RejectCode = 0x42 RejectCheckpoint RejectCode = 0x43 )
These constants define the various supported reject codes.
func (RejectCode) String ¶
func (code RejectCode) String() string
String returns the RejectCode in human-readable form.
type ServiceFlag ¶
type ServiceFlag uint64
ServiceFlag identifies services supported by a bitcoin server.
const ( // SFNodeNetwork is a flag used to indicate a server is a full node. SFNodeNetwork ServiceFlag = 1 << iota // SFNodeGetUTXO is a flag used to indicate a server supports the // getutxos and utxos commands (BIP0064). SFNodeGetUTXO // SFNodeBloom is a flag used to indicate a server supports bloom // filtering. SFNodeBloom // SFNodeWitness is a flag used to indicate a server supports blocks // and transactions including witness data (BIP0144). SFNodeWitness // SFNodeXthin is a flag used to indicate a server supports xthin blocks. SFNodeXthin // SFNodeBit5 is a flag used to indicate a server supports a service // defined by bit 5. SFNodeBit5 // SFNodeCF is a flag used to indicate a server supports committed // filters (CFs). SFNodeCF // SFNode2X is a flag used to indicate a server is running the Segwit2X // software. SFNode2X )
func (ServiceFlag) String ¶
func (f ServiceFlag) String() string
String returns the ServiceFlag in human-readable form.
type TimeSorter ¶
type TimeSorter []int64
TimeSorter implements sort.Interface to allow a slice of timestamps to be sorted.
func (TimeSorter) Len ¶
func (s TimeSorter) Len() int
Len returns the number of timestamps in the slice. It is part of the sort.Interface implementation.
func (TimeSorter) Less ¶
func (s TimeSorter) Less(i, j int) bool
Less returns whether the timstamp with index i should sort before the timestamp with index j. It is part of the sort.Interface implementation.
func (TimeSorter) Swap ¶
func (s TimeSorter) Swap(i, j int)
Swap swaps the timestamps at the passed indices. It is part of the sort.Interface implementation.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package jaxjson provides primitives for working with the bitcoin JSON-RPC API.
|
Package jaxjson provides primitives for working with the bitcoin JSON-RPC API. |
Package wire implements the bitcoin wire protocol.
|
Package wire implements the bitcoin wire protocol. |