diff --git a/assets/pdp-explorer-mockups.excalidraw b/assets/pdp-explorer-mockups.excalidraw index f25fd0b..1018c3f 100644 --- a/assets/pdp-explorer-mockups.excalidraw +++ b/assets/pdp-explorer-mockups.excalidraw @@ -268,13 +268,13 @@ "updated": 1733889770087, "link": null, "locked": false, - "text": "Search for a ProofSet/Owner 🔍 ", + "text": "Search for a DataSet/Owner 🔍 ", "fontSize": 16, "fontFamily": 5, "textAlign": "center", "verticalAlign": "top", "containerId": null, - "originalText": "Search for a ProofSet/Owner 🔍 ", + "originalText": "Search for a DataSet/Owner 🔍 ", "autoResize": true, "lineHeight": 1.25 }, @@ -1883,13 +1883,13 @@ "updated": 1733892069758, "link": null, "locked": false, - "text": "ProofSet#", + "text": "DataSet#", "fontSize": 16, "fontFamily": 5, "textAlign": "center", "verticalAlign": "top", "containerId": null, - "originalText": "ProofSet#", + "originalText": "DataSet#", "autoResize": true, "lineHeight": 1.25 }, @@ -2586,13 +2586,13 @@ "updated": 1733892286732, "link": null, "locked": false, - "text": "ProofSet\nSize", + "text": "DataSet\nSize", "fontSize": 16, "fontFamily": 5, "textAlign": "center", "verticalAlign": "top", "containerId": null, - "originalText": "ProofSet\nSize", + "originalText": "DataSet\nSize", "autoResize": true, "lineHeight": 1.25 }, @@ -3060,13 +3060,13 @@ "updated": 1733893406824, "link": null, "locked": false, - "text": "ProofSet #ID Overview", + "text": "DataSet #ID Overview", "fontSize": 19.200000000000003, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "ProofSet #ID Overview", + "originalText": "DataSet #ID Overview", "autoResize": true, "lineHeight": 1.25 }, @@ -3173,13 +3173,13 @@ "updated": 1733896128383, "link": null, "locked": false, - "text": "ProofSet Change", + "text": "DataSet Change", "fontSize": 16, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "ProofSet Change", + "originalText": "DataSet Change", "autoResize": true, "lineHeight": 1.25 }, @@ -6572,13 +6572,13 @@ "updated": 1733896159564, "link": null, "locked": false, - "text": "# of active proof sets\n# of all proof sets (including deleted ones)\n# of total data size stored\n# of total pieces stored\n# of faults\nFirst Seen\nLast Seen\n\n", + "text": "# of active proof sets\n# of all proof sets (including deleted ones)\n# of total data size stored\n# of total Pieces stored\n# of faults\nFirst Seen\nLast Seen\n\n", "fontSize": 16, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "# of active proof sets\n# of all proof sets (including deleted ones)\n# of total data size stored\n# of total pieces stored\n# of faults\nFirst Seen\nLast Seen\n\n", + "originalText": "# of active proof sets\n# of all proof sets (including deleted ones)\n# of total data size stored\n# of total Pieces stored\n# of faults\nFirst Seen\nLast Seen\n\n", "autoResize": true, "lineHeight": 1.25 }, @@ -7914,13 +7914,13 @@ "updated": 1733896243335, "link": null, "locked": false, - "text": "ProofSet\nSize", + "text": "DataSet\nSize", "fontSize": 16, "fontFamily": 5, "textAlign": "center", "verticalAlign": "top", "containerId": null, - "originalText": "ProofSet\nSize", + "originalText": "DataSet\nSize", "autoResize": true, "lineHeight": 1.25 }, diff --git a/backend/indexer/internal/infrastructure/database/postgres.go b/backend/indexer/internal/infrastructure/database/postgres.go index 000ad18..10f636f 100644 --- a/backend/indexer/internal/infrastructure/database/postgres.go +++ b/backend/indexer/internal/infrastructure/database/postgres.go @@ -77,7 +77,7 @@ func (p *PostgresDB) DeleteReorgedData(ctx context.Context, startHeight, endHeig return fmt.Errorf("failed to delete reorged proof sets: %w", err) } - // Proofs + // Data if err := p.DeleteReorgedProofs(ctx, startHeight, endHeight); err != nil { return fmt.Errorf("failed to delete reorged proofs: %w", err) } @@ -87,7 +87,7 @@ func (p *PostgresDB) DeleteReorgedData(ctx context.Context, startHeight, endHeig return fmt.Errorf("failed to delete reorged fault records: %w", err) } - // Roots + // Pieces if err := p.DeleteReorgedRoots(ctx, startHeight, endHeight); err != nil { return fmt.Errorf("failed to delete reorged roots: %w", err) } @@ -131,6 +131,6 @@ func (p *PostgresDB) CleanupFinalizedData(ctx context.Context, currentBlockNumbe if err := p.CleanupFinalizedRoots(ctx, currentBlockNumber); err != nil { return fmt.Errorf("failed to cleanup finalized roots: %w", err) } - + return nil } diff --git a/backend/indexer/internal/infrastructure/database/proof_sets.go b/backend/indexer/internal/infrastructure/database/proof_sets.go index aedf240..0b65033 100644 --- a/backend/indexer/internal/infrastructure/database/proof_sets.go +++ b/backend/indexer/internal/infrastructure/database/proof_sets.go @@ -9,7 +9,7 @@ import ( ) // StoreProofSet stores a proof set record with version control -func (p *PostgresDB) StoreProofSet(ctx context.Context, proofSet *models.ProofSet) error { +func (p *PostgresDB) StoreProofSet(ctx context.Context, proofSet *models.DataSet) error { _, err := p.pool.Exec(ctx, ` INSERT INTO proof_sets ( set_id, owner, listener_addr, total_faulted_periods, total_data_size, @@ -44,7 +44,7 @@ func (p *PostgresDB) StoreProofSet(ctx context.Context, proofSet *models.ProofSe } // FindProofSet finds a proof set by its set_id, optionally including historical versions -func (p *PostgresDB) FindProofSet(ctx context.Context, setId int64, includeHistory bool) ([]*models.ProofSet, error) { +func (p *PostgresDB) FindProofSet(ctx context.Context, setId int64, includeHistory bool) ([]*models.DataSet, error) { query := ` SELECT id, set_id, owner, listener_addr, total_faulted_periods, total_proved_roots, total_data_size, total_roots, total_fee_paid, last_proven_epoch, next_challenge_epoch, challenge_range, @@ -63,9 +63,9 @@ func (p *PostgresDB) FindProofSet(ctx context.Context, setId int64, includeHisto } defer rows.Close() - var proofSets []*models.ProofSet + var proofSets []*models.DataSet for rows.Next() { - ps := &models.ProofSet{} + ps := &models.DataSet{} var totalFeePaidStr string var totalDataSizeStr string diff --git a/backend/indexer/internal/models/proof_set.go b/backend/indexer/internal/models/proof_set.go index 0923e4f..ea3799a 100644 --- a/backend/indexer/internal/models/proof_set.go +++ b/backend/indexer/internal/models/proof_set.go @@ -5,7 +5,7 @@ import ( "time" ) -type ProofSet struct { +type DataSet struct { ReorgModel // Embed ReorgModel to inherit base fields and methods SetId int64 `db:"set_id" json:"set_id"` Owner string `db:"owner" json:"owner"` diff --git a/backend/indexer/internal/processor/handlers/proof_set_created_handler.go b/backend/indexer/internal/processor/handlers/proof_set_created_handler.go index 7c20551..c7fdd65 100644 --- a/backend/indexer/internal/processor/handlers/proof_set_created_handler.go +++ b/backend/indexer/internal/processor/handlers/proof_set_created_handler.go @@ -134,7 +134,7 @@ func (h *ProofSetCreatedHandler) HandleEvent(ctx context.Context, eventLog *type } // Create new proof set - proofSet := &models.ProofSet{ + proofSet := &models.DataSet{ ReorgModel: models.ReorgModel{ BlockNumber: blockNumber, BlockHash: eventLog.BlockHash, diff --git a/backend/indexer/internal/processor/handlers/roots_remove_handler.go b/backend/indexer/internal/processor/handlers/roots_remove_handler.go index b1684d8..91451a2 100644 --- a/backend/indexer/internal/processor/handlers/roots_remove_handler.go +++ b/backend/indexer/internal/processor/handlers/roots_remove_handler.go @@ -100,7 +100,7 @@ func (h *RootsRemovedHandler) HandleEvent(ctx context.Context, eventLog *types.L // First get the root to get its raw_size root, err := h.db.FindRoot(ctx, setId.Int64(), rootIdInt) if err != nil { - return fmt.Errorf("[Roots Removed] failed to find root: %w", err) + return fmt.Errorf("[Pieces Removed] failed to find root: %w", err) } if root != nil { diff --git a/backend/indexer/internal/processor/handlers/types.go b/backend/indexer/internal/processor/handlers/types.go index 1de7293..e2e61e9 100644 --- a/backend/indexer/internal/processor/handlers/types.go +++ b/backend/indexer/internal/processor/handlers/types.go @@ -13,9 +13,9 @@ type Database interface { StoreProvider(ctx context.Context, provider *models.Provider) error FindProvider(ctx context.Context, address string, includeHistory bool) ([]*models.Provider, error) - // ProofSet methods - StoreProofSet(ctx context.Context, proofSet *models.ProofSet) error - FindProofSet(ctx context.Context, setId int64, includeHistory bool) ([]*models.ProofSet, error) + // DataSet methods + StoreProofSet(ctx context.Context, proofSet *models.DataSet) error + FindProofSet(ctx context.Context, setId int64, includeHistory bool) ([]*models.DataSet, error) // ProofFee methods StoreProofFee(ctx context.Context, proofFee *models.ProofFee) error diff --git a/backend/server/internal/handlers/handlers.go b/backend/server/internal/handlers/handlers.go index e758c4a..692cf9f 100644 --- a/backend/server/internal/handlers/handlers.go +++ b/backend/server/internal/handlers/handlers.go @@ -17,12 +17,12 @@ type Handler struct { type Service interface { GetProviders(offset, limit int) ([]Provider, int, error) GetProviderDetails(providerID string) (*ProviderDetails, error) - GetProofSets(sortBy string, order string, offset, limit int) ([]ProofSet, int, error) + GetProofSets(sortBy string, order string, offset, limit int) ([]DataSet, int, error) GetProofSetDetails(proofSetID string) (*ProofSetDetails, error) GetProofSetHeatmap(proofSetID string) ([]HeatmapEntry, error) GetNetworkMetrics(ctx context.Context) (map[string]interface{}, error) Search(ctx context.Context, query string, limit int) ([]map[string]interface{}, error) - GetProviderProofSets(providerID string, offset, limit int) ([]ProofSet, int, error) + GetProviderProofSets(providerID string, offset, limit int) ([]DataSet, int, error) GetProviderActivities(providerID string, activityType string) ([]Activity, error) GetProofSetEventLogs(proofSetID string, filter string, offset, limit int) ([]EventLog, int, error) GetProofSetTxs(proofSetID string, filter string, offset, limit int) ([]Transaction, int, error) @@ -45,7 +45,7 @@ type Provider struct { LastSeen time.Time `json:"lastSeen"` } -type ProofSet struct { +type DataSet struct { ID int64 `json:"id"` SetID int64 `json:"setId"` Owner string `json:"owner"` @@ -77,7 +77,7 @@ type ProviderDetails struct { NumRoots int64 `json:"numRoots"` FirstSeen time.Time `json:"firstSeen"` LastSeen time.Time `json:"lastSeen"` - ProofSets []ProofSet `json:"proofSets"` + ProofSets []DataSet `json:"proofSets"` } type ProofSetDetails struct { diff --git a/backend/server/internal/repository/repository.go b/backend/server/internal/repository/repository.go index b331c3e..de7c48e 100644 --- a/backend/server/internal/repository/repository.go +++ b/backend/server/internal/repository/repository.go @@ -28,7 +28,7 @@ type Provider struct { LastSeen time.Time // Computed field } -type ProofSet struct { +type DataSet struct { SetID int64 `db:"set_id"` Owner string `db:"owner"` ListenerAddr string `db:"listener_addr"` @@ -84,18 +84,18 @@ type EventLog struct { } type Root struct { - SetId int64 `db:"set_id"` - RootId int64 `db:"root_id"` - RawSize int64 `db:"raw_size"` - Cid string `db:"cid"` - Removed bool `db:"removed"` - TotalPeriodsFaulted int64 `db:"total_periods_faulted"` - TotalProofsSubmitted int64 `db:"total_proofs_submitted"` - LastProvenEpoch int64 `db:"last_proven_epoch"` - LastProvenAt *time.Time `db:"last_proven_at"` - LastFaultedEpoch int64 `db:"last_faulted_epoch"` - LastFaultedAt *time.Time `db:"last_faulted_at"` - CreatedAt time.Time `db:"created_at"` + SetId int64 `db:"set_id"` + RootId int64 `db:"root_id"` + RawSize int64 `db:"raw_size"` + Cid string `db:"cid"` + Removed bool `db:"removed"` + TotalPeriodsFaulted int64 `db:"total_periods_faulted"` + TotalProofsSubmitted int64 `db:"total_proofs_submitted"` + LastProvenEpoch int64 `db:"last_proven_epoch"` + LastProvenAt *time.Time `db:"last_proven_at"` + LastFaultedEpoch int64 `db:"last_faulted_epoch"` + LastFaultedAt *time.Time `db:"last_faulted_at"` + CreatedAt time.Time `db:"created_at"` } func NewRepository(db *pgxpool.Pool) *Repository { @@ -203,7 +203,7 @@ func (r *Repository) GetProviders(ctx context.Context, offset, limit int) ([]Pro return providers, total, nil } -func (r *Repository) GetProviderDetails(ctx context.Context, providerID string) (*Provider, []ProofSet, error) { +func (r *Repository) GetProviderDetails(ctx context.Context, providerID string) (*Provider, []DataSet, error) { var provider Provider err := r.db.QueryRow(ctx, ` WITH latest_provider AS ( @@ -314,9 +314,9 @@ func (r *Repository) GetProviderDetails(ctx context.Context, providerID string) } defer rows.Close() - var proofSets []ProofSet + var proofSets []DataSet for rows.Next() { - var ps ProofSet + var ps DataSet err := rows.Scan( &ps.SetID, &ps.Owner, @@ -343,7 +343,7 @@ func (r *Repository) GetProviderDetails(ctx context.Context, providerID string) return &provider, proofSets, nil } -func (r *Repository) GetProofSets(ctx context.Context, sortBy, order string, offset, limit int) ([]ProofSet, int, error) { +func (r *Repository) GetProofSets(ctx context.Context, sortBy, order string, offset, limit int) ([]DataSet, int, error) { var total int err := r.db.QueryRow(ctx, ` SELECT COUNT(DISTINCT set_id) FROM proof_sets WHERE is_active = true @@ -414,9 +414,9 @@ func (r *Repository) GetProofSets(ctx context.Context, sortBy, order string, off } defer rows.Close() - var proofSets []ProofSet + var proofSets []DataSet for rows.Next() { - var ps ProofSet + var ps DataSet err := rows.Scan( &ps.SetID, &ps.Owner, @@ -443,8 +443,8 @@ func (r *Repository) GetProofSets(ctx context.Context, sortBy, order string, off return proofSets, total, nil } -func (r *Repository) GetProofSetDetails(ctx context.Context, proofSetID string) (*ProofSet, error) { - var ps ProofSet +func (r *Repository) GetProofSetDetails(ctx context.Context, proofSetID string) (*DataSet, error) { + var ps DataSet err := r.db.QueryRow(ctx, ` WITH latest_block AS ( SELECT MAX(block_number) as max_block_number @@ -597,7 +597,7 @@ func (r *Repository) GetNetworkMetrics(ctx context.Context) (map[string]interfac metrics["totalDataSize"] = totalDataSize var totalPieces int - // Total data pieces + // Total data Pieces err = r.db.QueryRow(ctx, ` SELECT COALESCE(SUM(total_roots), 0) FROM ( @@ -608,7 +608,7 @@ func (r *Repository) GetNetworkMetrics(ctx context.Context) (map[string]interfac ) unique_proof_sets `).Scan(&totalPieces) if err != nil { - return nil, fmt.Errorf("failed to get total pieces: %w", err) + return nil, fmt.Errorf("failed to get total Pieces: %w", err) } metrics["totalPieces"] = totalPieces @@ -743,7 +743,7 @@ func (r *Repository) Search(ctx context.Context, query string) ([]map[string]int return results, nil } -func (r *Repository) GetProviderProofSets(ctx context.Context, providerID string, offset, limit int) ([]ProofSet, int, error) { +func (r *Repository) GetProviderProofSets(ctx context.Context, providerID string, offset, limit int) ([]DataSet, int, error) { var total int err := r.db.QueryRow(ctx, ` SELECT COUNT(DISTINCT set_id) @@ -792,9 +792,9 @@ func (r *Repository) GetProviderProofSets(ctx context.Context, providerID string } defer rows.Close() - var proofSets []ProofSet + var proofSets []DataSet for rows.Next() { - var ps ProofSet + var ps DataSet err := rows.Scan( &ps.SetID, &ps.Owner, @@ -954,7 +954,7 @@ func (r *Repository) GetProofSetEventLogs(ctx context.Context, proofSetID string query += ` ORDER BY created_at DESC LIMIT $2 OFFSET $3 - `; + ` rows, err := r.db.Query(ctx, query, proofSetID, limit, offset) if err != nil { @@ -1029,7 +1029,7 @@ func (r *Repository) GetProofSetTxs(ctx context.Context, proofSetID string, filt query += ` ORDER BY created_at DESC LIMIT $2 OFFSET $3 - `; + ` rows, err := r.db.Query(ctx, query, proofSetID, limit, offset) if err != nil { @@ -1101,13 +1101,13 @@ func (r *Repository) GetProofSetRoots(ctx context.Context, proofSetID string, or last_faulted_at, created_at FROM LatestRoots - `; - if orderBy != "" { - query += fmt.Sprintf(" ORDER BY %s %s", orderBy, order) - } - query += ` + ` + if orderBy != "" { + query += fmt.Sprintf(" ORDER BY %s %s", orderBy, order) + } + query += ` LIMIT $2 OFFSET $3 - `; + ` // Get roots rows, err := r.db.Query(ctx, query, proofSetID, limit, offset) if err != nil { @@ -1138,4 +1138,4 @@ func (r *Repository) GetProofSetRoots(ctx context.Context, proofSetID string, or } return roots, total, nil -} \ No newline at end of file +} diff --git a/backend/server/internal/service/service.go b/backend/server/internal/service/service.go index 7da8803..460be1a 100644 --- a/backend/server/internal/service/service.go +++ b/backend/server/internal/service/service.go @@ -50,9 +50,9 @@ func (s *Service) GetProviderDetails(providerID string) (*handlers.ProviderDetai return nil, fmt.Errorf("failed to get provider details: %w", err) } - mappedProofSets := make([]handlers.ProofSet, len(proofSets)) + mappedProofSets := make([]handlers.DataSet, len(proofSets)) for i, ps := range proofSets { - mappedProofSets[i] = handlers.ProofSet{ + mappedProofSets[i] = handlers.DataSet{ SetID: ps.SetID, Owner: ps.Owner, ListenerAddr: ps.ListenerAddr, @@ -88,15 +88,15 @@ func (s *Service) GetProviderDetails(providerID string) (*handlers.ProviderDetai }, nil } -func (s *Service) GetProofSets(sortBy, order string, offset, limit int) ([]handlers.ProofSet, int, error) { +func (s *Service) GetProofSets(sortBy, order string, offset, limit int) ([]handlers.DataSet, int, error) { proofSets, total, err := s.repo.GetProofSets(context.Background(), sortBy, order, offset, limit) if err != nil { return nil, 0, fmt.Errorf("failed to get proof sets: %w", err) } - result := make([]handlers.ProofSet, len(proofSets)) + result := make([]handlers.DataSet, len(proofSets)) for i, ps := range proofSets { - result[i] = handlers.ProofSet{ + result[i] = handlers.DataSet{ SetID: ps.SetID, Owner: ps.Owner, ListenerAddr: ps.ListenerAddr, @@ -169,15 +169,15 @@ func (s *Service) Search(ctx context.Context, query string, limit int) ([]map[st return s.repo.Search(ctx, query) } -func (s *Service) GetProviderProofSets(providerID string, offset, limit int) ([]handlers.ProofSet, int, error) { +func (s *Service) GetProviderProofSets(providerID string, offset, limit int) ([]handlers.DataSet, int, error) { proofSets, total, err := s.repo.GetProviderProofSets(context.Background(), providerID, offset, limit) if err != nil { return nil, 0, fmt.Errorf("failed to get provider proof sets: %w", err) } - result := make([]handlers.ProofSet, len(proofSets)) + result := make([]handlers.DataSet, len(proofSets)) for i, ps := range proofSets { - result[i] = handlers.ProofSet{ + result[i] = handlers.DataSet{ SetID: ps.SetID, Owner: ps.Owner, ListenerAddr: ps.ListenerAddr, diff --git a/backend/server/openapi.yaml b/backend/server/openapi.yaml index 2257f65..70b669d 100644 --- a/backend/server/openapi.yaml +++ b/backend/server/openapi.yaml @@ -73,7 +73,7 @@ paths: /proofsets: get: - summary: Get list of all Proof Sets + summary: Get list of all Data Sets description: Retrieve a list of the top 5 proof sets, sorted by a specified metric such as number of proofs submitted or data size. parameters: - name: sortBy @@ -190,7 +190,7 @@ paths: description: Total data size stored (in bytes) totalPiecesStored: type: integer - description: Total number of pieces stored + description: Total number of Pieces stored faults: type: integer description: Number of faults @@ -228,7 +228,7 @@ paths: /proofsets/{proofSetId}: get: - summary: Get ProofSet Details + summary: Get DataSet Details description: Retrieve detailed information about a specific proof set. parameters: - name: proofSetId @@ -254,7 +254,7 @@ paths: default: all responses: "200": - description: ProofSet details + description: DataSet details content: application/json: schema: @@ -305,7 +305,7 @@ paths: /proofsets/{proofSetId}/heatmap: get: - summary: Get ProofSet 7-Day Heatmap + summary: Get DataSet 7-Day Heatmap description: Retrieve a 7-day heatmap showing proof submissions and faults for a proof set. parameters: - name: proofSetId diff --git a/check_goldsky.sh b/check_goldsky.sh new file mode 100644 index 0000000..05a885f --- /dev/null +++ b/check_goldsky.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +PORT=35681 +STATUS_FILE="/tmp/subgraph_status.txt" +echo "Initializing..." > "$STATUS_FILE" + +# 登录 +echo "准备登录 Goldsky..." +goldsky login || { echo "登录失败"; exit 1; } +echo -e "\n登录成功,开始监控子图状态...\n" + +# HTTP服务函数 +start_http_service() { + PIPE="/tmp/subgraph_http_pipe" + rm -f "$PIPE"; mkfifo "$PIPE" + + while true; do + { + # 读取请求头 + while read -r line; do [[ "$line" == $'\r' || -z "$line" ]] && break; done + + # 读取最新状态(移除换行符) + current_status=$(tr -d '\n' < "$STATUS_FILE") + + # 生成JSON响应 + echo -e "HTTP/1.1 200 OK\r\nContent-Type: application/json\r\nConnection: close\r\n\r\n" + echo "{" + echo " \"timestamp\": \"$(date '+%Y-%m-%d %H:%M:%S')\"," + echo " \"status\": \"${current_status//\"/\\\"}\"" # 转义双引号 + echo "}" + } < "$PIPE" | nc -l $PORT > "$PIPE" + done +} + +# 启动HTTP服务 +start_http_service & +HTTP_PID=$! +trap 'kill $HTTP_PID; rm -f "$PIPE" "$STATUS_FILE"; exit' INT TERM + +# 主监控循环 +while true; do + # 获取并处理状态(生成单行输出) + new_status=$(goldsky subgraph list 2>&1 | awk ' + BEGIN { RS = "\\* "; FS = "\n"; output = "" } + /^[^ ]/ { + subgraph_name = substr($1, 14) + for (i=2; i<=NF; i++) { + if ($i ~ /Status:/) { + split($i, parts, ": ") + status = parts[2] + gsub(/[ \t$$]+/, " ", status) + sub("^ +| +$", "", status) + + # 构建字符串输出 + output = output "Subgraph: " subgraph_name " - Status: " status "; " + break + } + } + } + END { print output }') + + # 更新状态文件(确保无换行) + if [ -n "$new_status" ]; then + echo "$new_status" > "$STATUS_FILE" + else + echo "No status available" > "$STATUS_FILE" + fi + + echo "[$(date '+%H:%M:%S')] 当前状态: $(cat "$STATUS_FILE")" + sleep 60 +done \ No newline at end of file diff --git a/client/src/api/apiService.ts b/client/src/api/apiService.ts index 3e16396..d142b14 100644 --- a/client/src/api/apiService.ts +++ b/client/src/api/apiService.ts @@ -16,7 +16,7 @@ export interface Provider { } export interface ProviderDetailsResponse extends Provider { - proofSets: ProofSet[] + proofSets: DataSet[] } export interface Activity { @@ -27,7 +27,7 @@ export interface Activity { value: number } -export interface ProofSet { +export interface DataSet { setId: number owner: string listenerAddr: string @@ -83,7 +83,7 @@ export interface EventLog { createdAt: string } -export interface Roots { +export interface Pieces { rootId: number cid: string size: number @@ -141,7 +141,7 @@ export const getProviderProofSets = async ( return response.data } -// ProofSet-related API calls +// DataSet-related API calls export async function getProofSets( sortBy: string = 'proofsSubmitted', order: string = 'desc', diff --git a/client/src/components/proof-heatmap.tsx b/client/src/components/proof-heatmap.tsx index e0fd387..14ab7b5 100644 --- a/client/src/components/proof-heatmap.tsx +++ b/client/src/components/proof-heatmap.tsx @@ -4,12 +4,12 @@ import { TooltipProvider, TooltipTrigger, } from '@/components/ui/tooltip' -import { Roots } from '@/api/apiService' +import { Pieces } from '@/api/apiService' import { formatDate } from '@/utility/helper' import { useMemo } from 'react' -const ProofHeatMap = ({ roots }: { roots: Roots[] }) => { - const calculateRootHealthScore = (root: Roots) => { +const ProofHeatMap = ({ roots }: { roots: Pieces[] }) => { + const calculateRootHealthScore = (root: Pieces) => { const totalProofs = root.totalProofsSubmitted || 0 const totalFaults = root.totalPeriodsFaulted || 0 @@ -72,7 +72,7 @@ const ProofHeatMap = ({ roots }: { roots: Roots[] }) => {
Root ID: {root.rootId}
CID: {root.cid}
- Total Proofs: {root.totalProofsSubmitted} + Total Data: {root.totalProofsSubmitted}
Total Faulted Periods: {root.totalPeriodsFaulted}
diff --git a/client/src/pages/Landing.tsx b/client/src/pages/Landing.tsx
index 956f403..254b066 100644
--- a/client/src/pages/Landing.tsx
+++ b/client/src/pages/Landing.tsx
@@ -26,7 +26,7 @@ interface Provider {
lastSeen: string
}
-interface ProofSet {
+interface DataSet {
setId: number
owner: string
listenerAddr: string
@@ -67,7 +67,7 @@ interface SearchResult {
export const Landing = () => {
const [providers, setProviders] = useState