Documentation ¶
Index ¶
- Constants
- func WithAuthIdentityFilePath(authIdentityFilePath string) options.Option[Dashboard]
- func WithAuthIdentityPrivateKey(authIdentityPrivateKey string) options.Option[Dashboard]
- func WithAuthPasswordHash(authPasswordHash string) options.Option[Dashboard]
- func WithAuthPasswordSalt(authPasswordSalt string) options.Option[Dashboard]
- func WithAuthRateLimitEnabled(authRateLimitEnabled bool) options.Option[Dashboard]
- func WithAuthRateLimitMaxBurst(authRateLimitMaxBurst int) options.Option[Dashboard]
- func WithAuthRateLimitMaxRequests(authRateLimitMaxRequests int) options.Option[Dashboard]
- func WithAuthRateLimitPeriod(authRateLimitPeriod time.Duration) options.Option[Dashboard]
- func WithAuthSessionTimeout(authSessionTimeout time.Duration) options.Option[Dashboard]
- func WithAuthUsername(authUsername string) options.Option[Dashboard]
- func WithBindAddress(bindAddress string) options.Option[Dashboard]
- func WithDebugLogRequests(debugLogRequests bool) options.Option[Dashboard]
- func WithDeveloperMode(developerMode bool) options.Option[Dashboard]
- func WithDeveloperModeURL(developerModeURL string) options.Option[Dashboard]
- func WithWebsocketWriteTimeout(writeTimeout time.Duration) options.Option[Dashboard]
- type BlockMetadata
- type Dashboard
- type DatabaseSizesMetric
- type GossipMetrics
- type MetricsClient
- type Milestone
- type Msg
- type NodeInfoExtended
- type PublicNodeStatus
- type SyncStatus
- type Visualizer
- func (v *Visualizer) AddConfirmation(parents iotago.BlockIDs, conflictingBlocks iotago.BlockIDs)
- func (v *Visualizer) AddVertex(block *iotago.Block)
- func (v *Visualizer) ApplyConfirmedMilestoneChanged(ms *nodebridge.Milestone)
- func (v *Visualizer) ForEachCreated(consumer func(vertex *VisualizerVertex) bool, elementsCount ...int)
- func (v *Visualizer) Run(ctx context.Context)
- func (v *Visualizer) SetIsConflicting(blockID iotago.BlockID)
- func (v *Visualizer) SetIsReferenced(blockID iotago.BlockID)
- func (v *Visualizer) SetIsSolid(blockID iotago.BlockID)
- func (v *Visualizer) UpdateState(active bool)
- type VisualizerConfirmationInfo
- type VisualizerEvents
- type VisualizerMetaInfo
- type VisualizerTipInfo
- type VisualizerVertex
- type WebSocketMsgType
Constants ¶
const ( WebsocketCmdRegister = 0 WebsocketCmdUnregister = 1 )
const ( VisualizerInitValuesCount = 3000 VisualizerCapacity = 3000 )
const ( FeatureCoreAPI = "core/v2" FeatureDashboardMetrics = "dashboard-metrics/v1" FeatureIndexer = "indexer/v1" FeatureParticipation = "participation/v1" FeatureSpammer = "spammer/v1" BasePath = "" APIBasePath = "/api" CoreAPIRoute = BasePath + "/" + FeatureCoreAPI DashboardMetricsRoute = APIBasePath + "/" + FeatureDashboardMetrics IndexerRoute = BasePath + "/" + FeatureIndexer ParticipationRoute = BasePath + "/" + FeatureParticipation SpammerRoute = BasePath + "/" + FeatureSpammer )
const ( // ParameterBlockID is used to identify a block by its ID. ParameterBlockID = "blockID" // ParameterTransactionID is used to identify a transaction by its ID. ParameterTransactionID = "transactionID" // ParameterOutputID is used to identify an output by its ID. ParameterOutputID = "outputID" // ParameterMilestoneIndex is used to identify a milestone by index. ParameterMilestoneIndex = "milestoneIndex" // ParameterMilestoneID is used to identify a milestone by its ID. ParameterMilestoneID = "milestoneID" // ParameterPeerID is used to identify a peer. ParameterPeerID = "peerID" // RouteRoutes is the route for getting the routes the node exposes. // GET returns the routes. RouteRoutes = BasePath + "/routes" // RouteCoreInfo is the route for getting the node info. // GET returns the node info. RouteCoreInfo = CoreAPIRoute + "/info" // RouteCoreBlock is the route for getting a block by its blockID. // GET returns the block based on the given type in the request "Accept" header. // MIMEApplicationJSON => json // MIMEVendorIOTASerializer => bytes. RouteCoreBlock = CoreAPIRoute + "/blocks/:" + ParameterBlockID // RouteCoreBlockMetadata is the route for getting block metadata by its blockID. // GET returns block metadata (including info about "promotion/reattachment needed"). RouteCoreBlockMetadata = CoreAPIRoute + "/blocks/:" + ParameterBlockID + "/metadata" // RouteCoreTransactionsIncludedBlock is the route for getting the block that was included in the ledger for a given transaction ID. // GET returns the block based on the given type in the request "Accept" header. // MIMEApplicationJSON => json // MIMEVendorIOTASerializer => bytes. RouteCoreTransactionsIncludedBlock = CoreAPIRoute + "/transactions/:" + ParameterTransactionID + "/included-block" // RouteCoreMilestoneByID is the route for getting a milestone by its ID. // GET returns the milestone. // MIMEApplicationJSON => json // MIMEVendorIOTASerializer => bytes. RouteCoreMilestoneByID = CoreAPIRoute + "/milestones/:" + ParameterMilestoneID // RouteCoreMilestoneByIndex is the route for getting a milestone by its milestoneIndex. // GET returns the milestone. // MIMEApplicationJSON => json // MIMEVendorIOTASerializer => bytes. RouteCoreMilestoneByIndex = CoreAPIRoute + "/milestones/by-index/:" + ParameterMilestoneIndex // RouteCoreOutput is the route for getting an output by its outputID (transactionHash + outputIndex). // GET returns the output based on the given type in the request "Accept" header. // MIMEApplicationJSON => json // MIMEVendorIOTASerializer => bytes. RouteCoreOutput = CoreAPIRoute + "/outputs/:" + ParameterOutputID // RouteCorePeer is the route for getting peers by their peerID. // GET returns the peer // DELETE deletes the peer. RouteCorePeer = CoreAPIRoute + "/peers/:" + ParameterPeerID // RouteCorePeers is the route for getting all peers of the node. // GET returns a list of all peers. // POST adds a new peer. RouteCorePeers = CoreAPIRoute + "/peers" )
const ( // ParameterFoundryID is used to identify a foundry by its ID. ParameterFoundryID = "foundryID" // ParameterAliasID is used to identify an alias by its ID. ParameterAliasID = "aliasID" // ParameterNFTID is used to identify a nft by its ID. ParameterNFTID = "nftID" // RouteIndexerOutputsBasic is the route for getting basic outputs filtered by the given parameters. // GET with query parameter returns all outputIDs that fit these filter criteria. // Query parameters: "address", "hasStorageReturnCondition", "storageReturnAddress", "hasExpirationCondition", // "expiresBefore", "expiresAfter", "expiresBeforeMilestone", "expiresAfterMilestone", // "hasTimelockCondition", "timelockedBefore", "timelockedAfter", "timelockedBeforeMilestone", // "timelockedAfterMilestone", "sender", "tag", "createdBefore", "createdAfter" // Returns an empty list if no results are found. RouteIndexerOutputsBasic = IndexerRoute + "/outputs/basic" // RouteIndexerOutputsAliases is the route for getting aliases filtered by the given parameters. // GET with query parameter returns all outputIDs that fit these filter criteria. // Query parameters: "stateController", "governor", "issuer", "sender", "createdBefore", "createdAfter" // Returns an empty list if no results are found. RouteIndexerOutputsAliases = IndexerRoute + "/outputs/alias" // RouteIndexerOutputsAliasByID is the route for getting aliases by their aliasID. // GET returns the outputIDs or 404 if no record is found. RouteIndexerOutputsAliasByID = IndexerRoute + "/outputs/alias/:" + ParameterAliasID // RouteIndexerOutputsNFTs is the route for getting NFT filtered by the given parameters. // Query parameters: "address", "hasStorageReturnCondition", "storageReturnAddress", "hasExpirationCondition", // "expiresBefore", "expiresAfter", "expiresBeforeMilestone", "expiresAfterMilestone", // "hasTimelockCondition", "timelockedBefore", "timelockedAfter", "timelockedBeforeMilestone", // "timelockedAfterMilestone", "issuer", "sender", "tag", "createdBefore", "createdAfter" // Returns an empty list if no results are found. RouteIndexerOutputsNFTs = IndexerRoute + "/outputs/nft" // RouteIndexerOutputsNFTByID is the route for getting NFT by their nftID. // GET returns the outputIDs or 404 if no record is found. RouteIndexerOutputsNFTByID = IndexerRoute + "/outputs/nft/:" + ParameterNFTID // RouteIndexerOutputsFoundries is the route for getting foundries filtered by the given parameters. // GET with query parameter returns all outputIDs that fit these filter criteria. // Query parameters: "aliasAddress", "createdBefore", "createdAfter" // Returns an empty list if no results are found. RouteIndexerOutputsFoundries = IndexerRoute + "/outputs/foundry" // RouteIndexerOutputsFoundryByID is the route for getting foundries by their foundryID. // GET returns the outputIDs or 404 if no record is found. RouteIndexerOutputsFoundryByID = IndexerRoute + "/outputs/foundry/:" + ParameterFoundryID )
const ( // RouteDashboardNodeInfoExtended is the route to get additional info about the node. // GET returns the extended info of the node. RouteDashboardNodeInfoExtended = DashboardMetricsRoute + "/info" // RouteDashboardDatabaseSizes is the route to get the size of the databases. // GET returns the sizes of the databases. RouteDashboardDatabaseSizes = DashboardMetricsRoute + "/database/sizes" // RouteDashboardGossipMetrics is the route to get metrics about gossip. // GET returns the gossip metrics. RouteDashboardGossipMetrics = DashboardMetricsRoute + "/gossip" )
const ( // ParameterParticipationEventID is used to identify an event by its ID. ParameterParticipationEventID = "eventID" // RouteParticipationEvents is the route to list all events, returning their ID, the event name and status. // GET returns a list of all events known to the node. Optional query parameter returns filters events by type (query parameters: "type"). RouteParticipationEvents = ParticipationRoute + "/events" // RouteParticipationEvent is the route to access a single participation by its ID. // GET gives a quick overview of the participation. This does not include the current standings. RouteParticipationEvent = ParticipationRoute + "/events/:" + ParameterParticipationEventID // RouteParticipationEventStatus is the route to access the status of a single participation by its ID. // GET returns the amount of tokens participating and accumulated votes for the ballot if the event contains a ballot. Optional query parameter returns the status for the given milestone index (query parameters: "milestoneIndex"). RouteParticipationEventStatus = ParticipationRoute + "/events/:" + ParameterParticipationEventID + "/status" // RouteParticipationAdminCreateEvent is the route the node operator can use to add events. // POST creates a new event to track. RouteParticipationAdminCreateEvent = ParticipationRoute + "/admin/events" // RouteParticipationAdminDeleteEvent is the route the node operator can use to remove events. // DELETE removes a tracked participation. RouteParticipationAdminDeleteEvent = ParticipationRoute + "/admin/events/:" + ParameterParticipationEventID )
const ( // RouteSpammerStatus is the route to get the status of the spammer. // GET the current status of the spammer. RouteSpammerStatus = SpammerRoute + "/status" // RouteSpammerStart is the route to start the spammer (with optional changing the settings). // POST the settings to change and start the spammer. RouteSpammerStart = SpammerRoute + "/start" // RouteSpammerStop is the route to stop the spammer. // POST to stop the spammer. RouteSpammerStop = SpammerRoute + "/stop" )
const (
VisualizerIDLength = 10
)
Variables ¶
This section is empty.
Functions ¶
func WithAuthIdentityFilePath ¶ added in v1.0.0
func WithAuthIdentityPrivateKey ¶ added in v1.0.0
func WithAuthPasswordHash ¶ added in v1.0.0
func WithAuthPasswordSalt ¶ added in v1.0.0
func WithAuthRateLimitEnabled ¶ added in v1.0.0
func WithAuthRateLimitMaxBurst ¶ added in v1.0.0
func WithAuthRateLimitMaxRequests ¶ added in v1.0.0
func WithAuthRateLimitPeriod ¶ added in v1.0.0
func WithAuthSessionTimeout ¶ added in v1.0.0
func WithAuthUsername ¶ added in v1.0.0
func WithBindAddress ¶ added in v1.0.0
func WithDebugLogRequests ¶ added in v1.0.0
func WithDeveloperMode ¶ added in v1.0.0
func WithDeveloperModeURL ¶ added in v1.0.0
Types ¶
type BlockMetadata ¶
type Dashboard ¶
type Dashboard struct { // the logger used to log events. *logger.WrappedLogger // contains filtered or unexported fields }
func New ¶
func New( log *logger.Logger, daemon hivedaemon.Daemon, nodeBridge *nodebridge.NodeBridge, hub *websockethub.Hub, opts ...options.Option[Dashboard]) *Dashboard
type DatabaseSizesMetric ¶
type DatabaseSizesMetric struct { Tangle int64 `json:"tangle"` UTXO int64 `json:"utxo"` Total int64 `json:"total"` Time int64 `json:"ts"` }
DatabaseSizesMetric represents database size metrics.
type GossipMetrics ¶
type GossipMetrics struct { Incoming uint32 `json:"incoming"` New uint32 `json:"new"` Outgoing uint32 `json:"outgoing"` }
GossipMetrics represents a websocket message.
type MetricsClient ¶
type MetricsClient struct {
*nodeclient.Client
}
MetricsClient is an API wrapper over the dashboard metrics node API.
func NewMetricsClient ¶
func NewMetricsClient(client *nodeclient.Client) *MetricsClient
NewMetricsClient returns a new dashboard metrics node API instance.
func (*MetricsClient) DatabaseSizes ¶
func (client *MetricsClient) DatabaseSizes(ctx context.Context) (*DatabaseSizesMetric, error)
func (*MetricsClient) GossipMetrics ¶
func (client *MetricsClient) GossipMetrics(ctx context.Context) (*GossipMetrics, error)
func (*MetricsClient) NodeInfoExtended ¶
func (client *MetricsClient) NodeInfoExtended(ctx context.Context) (*NodeInfoExtended, error)
type Msg ¶
type Msg struct { Type WebSocketMsgType `json:"type"` Data interface{} `json:"data"` }
Msg represents a websocket message.
type NodeInfoExtended ¶
type NodeInfoExtended struct { Version string `json:"version"` LatestVersion string `json:"latestVersion"` Uptime int64 `json:"uptime"` NodeID string `json:"nodeId"` NodeAlias string `json:"nodeAlias"` MemoryUsage int64 `json:"memUsage"` }
NodeInfoExtended represents extended information about the node.
type PublicNodeStatus ¶
type PublicNodeStatus struct { PruningIndex uint32 `json:"pruningIndex"` IsHealthy bool `json:"isHealthy"` IsSynced bool `json:"isSynced"` }
PublicNodeStatus represents the public node status.
type SyncStatus ¶
SyncStatus represents the node sync status.
type Visualizer ¶
type Visualizer struct { sync.RWMutex // the logger used to log events. *logger.WrappedLogger Events *VisualizerEvents // contains filtered or unexported fields }
func NewVisualizer ¶
func NewVisualizer(log *logger.Logger, nodeBridge *nodebridge.NodeBridge, capacity int) *Visualizer
func (*Visualizer) AddConfirmation ¶
func (v *Visualizer) AddConfirmation(parents iotago.BlockIDs, conflictingBlocks iotago.BlockIDs)
func (*Visualizer) AddVertex ¶
func (v *Visualizer) AddVertex(block *iotago.Block)
func (*Visualizer) ApplyConfirmedMilestoneChanged ¶ added in v1.0.0
func (v *Visualizer) ApplyConfirmedMilestoneChanged(ms *nodebridge.Milestone)
func (*Visualizer) ForEachCreated ¶
func (v *Visualizer) ForEachCreated(consumer func(vertex *VisualizerVertex) bool, elementsCount ...int)
func (*Visualizer) Run ¶ added in v1.0.0
func (v *Visualizer) Run(ctx context.Context)
func (*Visualizer) SetIsConflicting ¶
func (v *Visualizer) SetIsConflicting(blockID iotago.BlockID)
func (*Visualizer) SetIsReferenced ¶
func (v *Visualizer) SetIsReferenced(blockID iotago.BlockID)
func (*Visualizer) SetIsSolid ¶
func (v *Visualizer) SetIsSolid(blockID iotago.BlockID)
func (*Visualizer) UpdateState ¶ added in v1.0.0
func (v *Visualizer) UpdateState(active bool)
type VisualizerConfirmationInfo ¶
type VisualizerConfirmationInfo struct { IDs []string `json:"ids"` ExcludedIDs []string `json:"excludedIds"` }
VisualizerConfirmationInfo signals confirmation of a milestone block with a list of exluded blocks in the past cone.
type VisualizerEvents ¶
type VisualizerEvents struct { VertexCreated *event.Event1[*VisualizerVertex] VertexSolidUpdated *event.Event1[*VisualizerVertex] VertexTipUpdated *event.Event1[*VisualizerVertex] // params: milestoneParents []string, excludedIDs []string Confirmation *event.Event2[[]string, []string] }
type VisualizerMetaInfo ¶
type VisualizerMetaInfo struct {
ID string `json:"id"`
}
VisualizerMetaInfo signals that metadata of a given block changed.
type VisualizerTipInfo ¶
tipinfo holds information about whether a given block is a tip or not.
type VisualizerVertex ¶
type VisualizerVertex struct { ID string `json:"id"` Parents []string `json:"parents"` IsSolid bool `json:"isSolid"` IsReferenced bool `json:"isReferenced"` IsConflicting bool `json:"isConflicting"` IsTransaction bool `json:"isTransaction"` IsMilestone bool `json:"isMilestone"` IsTip bool `json:"isTip"` // contains filtered or unexported fields }
VisualizerVertex defines a vertex in a DAG.
type WebSocketMsgType ¶ added in v1.0.0
type WebSocketMsgType byte
const ( // MsgTypeSyncStatus is the type of the SyncStatus message. MsgTypeSyncStatus WebSocketMsgType = iota // MsgTypePublicNodeStatus is the type of the PublicNodeStatus message. MsgTypePublicNodeStatus // MsgTypeNodeInfoExtended is the type of the NodeInfoExtended message. MsgTypeNodeInfoExtended // MsgTypeGossipMetrics is the type of the GossipMetrics message. MsgTypeGossipMetrics // MsgTypeMilestone is the type of the Milestone message. MsgTypeMilestone // MsgTypePeerMetric is the type of the PeerMetric message. MsgTypePeerMetric // MsgTypeConfirmedMsMetrics is the type of the ConfirmedMsMetrics message. MsgTypeConfirmedMsMetrics // MsgTypeVisualizerVertex is the type of the Vertex message for the visualizer. MsgTypeVisualizerVertex // MsgTypeVisualizerSolidInfo is the type of the SolidInfo message for the visualizer. MsgTypeVisualizerSolidInfo // MsgTypeVisualizerConfirmedInfo is the type of the ConfirmedInfo message for the visualizer. MsgTypeVisualizerConfirmedInfo // MsgTypeVisualizerMilestoneInfo is the type of the MilestoneInfo message for the visualizer. MsgTypeVisualizerMilestoneInfo // MsgTypeVisualizerTipInfo is the type of the TipInfo message for the visualizer. MsgTypeVisualizerTipInfo // MsgTypeDatabaseSizeMetric is the type of the database Size message for the metrics. MsgTypeDatabaseSizeMetric )