mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-22 05:56:43 +00:00

* [NOD-510] Change coinbase flags to kaspad. * [NOD-510] Removed superfluous spaces after periods in comments. * [NOD-510] Rename btcd -> kaspad in the root folder. * [NOD-510] Rename BtcEncode -> KaspaEncode and BtcDecode -> KaspaDecode. * [NOD-510] Rename BtcEncode -> KaspaEncode and BtcDecode -> KaspaDecode. * [NOD-510] Continue renaming btcd -> kaspad. * [NOD-510] Rename btcjson -> kaspajson. * [NOD-510] Rename file names inside kaspajson. * [NOD-510] Rename kaspajson -> jsonrpc. * [NOD-510] Finish renaming in addrmgr. * [NOD-510] Rename package btcec to ecc. * [NOD-510] Finish renaming stuff in blockdag. * [NOD-510] Rename stuff in cmd. * [NOD-510] Rename stuff in config. * [NOD-510] Rename stuff in connmgr. * [NOD-510] Rename stuff in dagconfig. * [NOD-510] Rename stuff in database. * [NOD-510] Rename stuff in docker. * [NOD-510] Rename stuff in integration. * [NOD-510] Rename jsonrpc to rpcmodel. * [NOD-510] Rename stuff in limits. * [NOD-510] Rename stuff in logger. * [NOD-510] Rename stuff in mempool. * [NOD-510] Rename stuff in mining. * [NOD-510] Rename stuff in netsync. * [NOD-510] Rename stuff in peer. * [NOD-510] Rename stuff in release. * [NOD-510] Rename stuff in rpcclient. * [NOD-510] Rename stuff in server. * [NOD-510] Rename stuff in signal. * [NOD-510] Rename stuff in txscript. * [NOD-510] Rename stuff in util. * [NOD-510] Rename stuff in wire. * [NOD-510] Fix failing tests. * [NOD-510] Fix merge errors. * [NOD-510] Fix go vet errors. * [NOD-510] Remove merged file that's no longer relevant. * [NOD-510] Add a comment above Op0. * [NOD-510] Fix some comments referencing Bitcoin Core. * [NOD-510] Fix some more comments referencing Bitcoin Core. * [NOD-510] Fix bitcoin -> kaspa. * [NOD-510] Fix more bitcoin -> kaspa. * [NOD-510] Fix comments, remove DisconnectBlock in addrindex. * [NOD-510] Rename KSPD to KASD. * [NOD-510] Fix comments and user agent.
65 lines
2.1 KiB
Go
65 lines
2.1 KiB
Go
package p2p
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/addrmgr"
|
|
"github.com/kaspanet/kaspad/config"
|
|
"github.com/kaspanet/kaspad/peer"
|
|
"github.com/kaspanet/kaspad/wire"
|
|
)
|
|
|
|
// OnVersion is invoked when a peer receives a version kaspa message
|
|
// and is used to negotiate the protocol version details as well as kick start
|
|
// the communications.
|
|
func (sp *Peer) OnVersion(_ *peer.Peer, msg *wire.MsgVersion) {
|
|
// Add the remote peer time as a sample for creating an offset against
|
|
// the local clock to keep the network time in sync.
|
|
sp.server.TimeSource.AddTimeSample(sp.Addr(), msg.Timestamp)
|
|
|
|
// Signal the sync manager this peer is a new sync candidate.
|
|
sp.server.SyncManager.NewPeer(sp.Peer)
|
|
|
|
// Choose whether or not to relay transactions before a filter command
|
|
// is received.
|
|
sp.setDisableRelayTx(msg.DisableRelayTx)
|
|
|
|
// Update the address manager and request known addresses from the
|
|
// remote peer for outbound connections. This is skipped when running
|
|
// on the simulation test network since it is only intended to connect
|
|
// to specified peers and actively avoids advertising and connecting to
|
|
// discovered peers.
|
|
if !config.ActiveConfig().SimNet {
|
|
addrManager := sp.server.addrManager
|
|
|
|
// Outbound connections.
|
|
if !sp.Inbound() {
|
|
// TODO(davec): Only do this if not doing the initial block
|
|
// download and the local address is routable.
|
|
if !config.ActiveConfig().DisableListen /* && isCurrent? */ {
|
|
// Get address that best matches.
|
|
lna := addrManager.GetBestLocalAddress(sp.NA())
|
|
if addrmgr.IsRoutable(lna) {
|
|
// Filter addresses the peer already knows about.
|
|
addresses := []*wire.NetAddress{lna}
|
|
sp.pushAddrMsg(addresses, sp.SubnetworkID())
|
|
}
|
|
}
|
|
|
|
// Request known addresses if the server address manager needs
|
|
// more.
|
|
if addrManager.NeedMoreAddresses() {
|
|
sp.QueueMessage(wire.NewMsgGetAddr(false, sp.SubnetworkID()), nil)
|
|
|
|
if sp.SubnetworkID() != nil {
|
|
sp.QueueMessage(wire.NewMsgGetAddr(false, nil), nil)
|
|
}
|
|
}
|
|
|
|
// Mark the address as a known good address.
|
|
addrManager.Good(sp.NA(), msg.SubnetworkID)
|
|
}
|
|
}
|
|
|
|
// Add valid peer to the server.
|
|
sp.server.AddPeer(sp)
|
|
}
|