//BasePeer is the interface for connection level peer
type BasePeer interface {
+ Moniker() string
Addr() net.Addr
ID() string
RemoteAddrHost() string
// PeerInfo indicate peer status snap
type PeerInfo struct {
ID string `json:"peer_id"`
+ Moniker string `json:"moniker"`
RemoteAddr string `json:"remote_addr"`
Height uint64 `json:"height"`
Ping string `json:"ping"`
return &PeerInfo{
ID: p.ID(),
+ Moniker: p.BasePeer.Moniker(),
RemoteAddr: p.Addr().String(),
Height: p.bestHeight,
Ping: ping.String(),
return p.isLAN
}
+// Moniker returns peer's moniker.
+func (p *Peer) Moniker() string {
+ return p.NodeInfo.Moniker
+}
+
// PubKey returns peer's public key.
func (p *Peer) PubKey() string {
return p.conn.(*connection.SecretConnection).RemotePubKey().String()
func (m *monitor) savePeerInfo(peerInfo *peers.PeerInfo) error {
xPub := &chainkd.XPub{}
- if err := xPub.UnmarshalText([]peerInfo.ID()); err != nil {
+ if err := xPub.UnmarshalText([]byte(peerInfo.ID)); err != nil {
return err
}
ormNode := &orm.Node{}
- if err := m.db.Model(&orm.Node{}).Where(&orm.Node{PublicKey: xPub.PublicKey.String()}).
+ if err := m.db.Model(&orm.Node{}).Where(&orm.Node{PublicKey: xPub.PublicKey().String()}).
UpdateColumn(&orm.Node{
+ Alias: peerInfo.Moniker,
+ Xpub: peerInfo.ID,
BestHeight: peerInfo.Height,
// LatestDailyUptimeMinutes uint64
}).First(ormNode).Error; err != nil {