No validation for network configuration JSON (contract addresses, duplicate active versions, schema)
I maintainer di solito rispondono entro 1 giorno
@DarkLord017 ci sta già lavorando.
Dal 26/11/2025.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- typescript
- Ambito
- tooling
Direzione di ricerca
Individua il JSON di configurazione della rete e il punto di ingresso che lo carica; l’issue non indica file o test specifici. Leggi la struttura di configurazione esistente prima di valutare l’approccio di validazione proposto con Zod e viem. Il lavoro è completato quando lo schema richiesto, i controlli degli indirizzi e degli URL, le regole di versione e i vincoli specifici della rete vengono applicati senza fare affidamento su errori a runtime.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
The network configuration JSON (containing calibration/mainnet networks with contract deployments) has no validation layer, which could lead to runtime errors or deployment issues.
Missing Validations
1. Contract Address Format Validation
No checks that contract addresses are:
- Properly formatted (valid hex, correct length)
- Properly checksummed (EIP-55 format)
- Actually valid Ethereum/Filecoin addresses
Example from current config:
"implementation": "0x88449EcAd119B6c05fa5eFB18C80d86d5781fc10"
There's no validation that these addresses are valid before the app tries to use them.
2. Multiple Active Versions
No validation to prevent multiple versions with "status": "active" within the same network. This could cause ambiguity about which contract version should be used.
Example risk:
"versions": [
{
"version": "v0.1.0",
"status": "active", // ❌ First active version
...
},
{
"version": "v1.0.0",
"status": "active", // ❌ Second active version - which one is used?
...
}
]
3. Schema Validation
No validation for:
- Required fields (chainId, rpcUrl, contracts, etc.)
- Valid status values (should be enum: "active" | "inactive" | "testing")
- Nested contract structure completeness
- Type correctness at runtime
4. Business Logic Validation
No checks for:
- At least one active version per network
- Valid version format (semantic versioning)
- Valid URLs (rpcUrl, explorerUrl, linkToRelease)
- chainId matches network name expectations (314 for mainnet, 314159 for calibration)
Current Risks
Risk 1: Invalid address format
"proxy": "0xINVALID" // No validation, app crashes at runtime
Risk 2: Two active versions
"calibration": {
"versions": [
{ "status": "active", ... },
{ "status": "active", ... } // Which contracts does the app use?
]
}
Risk 3: Missing required fields
{
"version": "v1.0.0",
// Missing "status" field - no validation
"contracts": { ... }
}
Suggested Solution: Zod Schema
import { z } from 'zod'
import { isAddress } from 'viem'
const ContractSchema = z.object({
implementation: z.string().refine(isAddress, 'Invalid address'),
proxy: z.string().refine(isAddress, 'Invalid address'),
stateView: z.string().refine(isAddress, 'Invalid address').optional(),
// ...
})
const VersionSchema = z.object({
version: z.string().regex(/^v\d+\.\d+\.\d+$/),
status: z.enum(['active', 'inactive', 'testing']),
isNew: z.boolean(),
linkToRelease: z.string().url().or(z.literal('')),
contracts: z.object({
warmStorage: ContractSchema,
serviceProviderRegistry: ContractSchema,
})
})
const NetworkSchema = z.object({
name: z.string(),
rpcUrl: z.string().url(),
chainId: z.number(),
explorerUrl: z.string().url(),
versions: z.array(VersionSchema)
.refine(
(versions) => versions.filter(v => v.status === 'active').length <= 1,
'Only one version can be active'
)
})
- Lingua principale
- TypeScript
- Stelle
- 4
- Fork
- 10
- Merge medio
- 4h 10m
- PR unite (30g)
- 13
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di FilOzone/filecoin-cloud
-
Link Checker ReportApertabroken-links
Difficoltà 2/5 1-3 ore Idoneità per principianti 58/100
FilOzone/filecoin-cloud#393 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 43/100
FilOzone/filecoin-cloud#391 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
FilOzone/filecoin-cloud#338 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Link Checker ReportApertabroken-links
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
FilOzone/filecoin-cloud#315 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di FilOzone/filecoin-cloud
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
zapcooking/frontend#946 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
WiliamRosa/cosmos-semantic-platform#40 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
liberation-data/drivine#733 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
makecindy/cindy#10062 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno