stasatdaglabs 53cccd405f
[NOD-1220] Add network string field to Version message (#852)
* [NOD-1220] Add network name to the version message.

* [NOD-1220] Ban peers from the wrong network.

* [NOD-1220] Add the network parameter to protowire.

* [NOD-1220] Add "kaspa-" to network names.
2020-08-09 18:11:13 +03:00

80 lines
2.2 KiB
Go

package protowire
import (
"github.com/kaspanet/kaspad/domainmessage"
"github.com/kaspanet/kaspad/netadapter/id"
"github.com/kaspanet/kaspad/util/mstime"
)
func (x *KaspadMessage_Version) toDomainMessage() (domainmessage.Message, error) {
// Address is optional for non-listening nodes
var address *domainmessage.NetAddress
if x.Version.Address != nil {
var err error
address, err = x.Version.Address.toWire()
if err != nil {
return nil, err
}
}
selectedTipHash, err := x.Version.SelectedTipHash.toWire()
if err != nil {
return nil, err
}
subnetworkID, err := x.Version.SubnetworkID.toWire()
if err != nil {
return nil, err
}
err = domainmessage.ValidateUserAgent(x.Version.UserAgent)
if err != nil {
return nil, err
}
return &domainmessage.MsgVersion{
ProtocolVersion: x.Version.ProtocolVersion,
Network: x.Version.Network,
Services: domainmessage.ServiceFlag(x.Version.Services),
Timestamp: mstime.UnixMilliseconds(x.Version.Timestamp),
Address: address,
ID: id.FromBytes(x.Version.Id),
UserAgent: x.Version.UserAgent,
SelectedTipHash: selectedTipHash,
DisableRelayTx: x.Version.DisableRelayTx,
SubnetworkID: subnetworkID,
}, nil
}
func (x *KaspadMessage_Version) fromDomainMessage(msgVersion *domainmessage.MsgVersion) error {
err := domainmessage.ValidateUserAgent(msgVersion.UserAgent)
if err != nil {
return err
}
versionID, err := msgVersion.ID.SerializeToBytes()
if err != nil {
return err
}
// Address is optional for non-listening nodes
var address *NetAddress
if msgVersion.Address != nil {
address = wireNetAddressToProto(msgVersion.Address)
}
x.Version = &VersionMessage{
ProtocolVersion: msgVersion.ProtocolVersion,
Network: msgVersion.Network,
Services: uint64(msgVersion.Services),
Timestamp: msgVersion.Timestamp.UnixMilliseconds(),
Address: address,
Id: versionID,
UserAgent: msgVersion.UserAgent,
SelectedTipHash: wireHashToProto(msgVersion.SelectedTipHash),
DisableRelayTx: msgVersion.DisableRelayTx,
SubnetworkID: wireSubnetworkIDToProto(msgVersion.SubnetworkID),
}
return nil
}