Skip to main content

Storage + Chain Integration

Integrates 0G Storage with smart contracts for on-chain references to off-chain data, enabling NFT metadata storage and document verification.

Install this skill

or
48/100

Security score

The Storage + Chain Integration skill was audited on Feb 25, 2026 and we found 20 security issues across 2 threat categories. Review the findings below before installing.

Categories Tested

Security Issues

medium line 114

Template literal with variable interpolation in command context

SourceSKILL.md
114if (err) throw new Error(`Merkle tree error: ${err}`);
medium line 117

Template literal with variable interpolation in command context

SourceSKILL.md
117if (uploadErr) throw new Error(`Upload failed: ${uploadErr.message}`);
medium line 163

Template literal with variable interpolation in command context

SourceSKILL.md
163throw new Error(`Download failed: ${error.message}`);
medium line 189

Template literal with variable interpolation in command context

SourceSKILL.md
189if (imgErr) throw new Error(`Image upload failed: ${imgErr.message}`);
medium line 198

Template literal with variable interpolation in command context

SourceSKILL.md
198image: `0g://${imageRootHash}`,
medium line 209

Template literal with variable interpolation in command context

SourceSKILL.md
209const tempPath = path.join(os.tmpdir(), `metadata-${Date.now()}.json`);
medium line 219

Template literal with variable interpolation in command context

SourceSKILL.md
219if (metaErr) throw new Error(`Metadata upload failed: ${metaErr.message}`);
medium line 21

Access to .env file

SourceSKILL.md
21- `.env` with `PRIVATE_KEY`, `RPC_URL`, `STORAGE_INDEXER`
low line 104

Access to .env file

SourceSKILL.md
104const provider = new ethers.JsonRpcProvider(process.env.RPC_URL);
low line 105

Access to .env file

SourceSKILL.md
105const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, provider);
low line 108

Access to .env file

SourceSKILL.md
108const indexer = new Indexer(process.env.STORAGE_INDEXER!);
low line 116

Access to .env file

SourceSKILL.md
116const [, uploadErr] = await indexer.upload(file, process.env.RPC_URL!, wallet);
low line 146

Access to .env file

SourceSKILL.md
146const provider = new ethers.JsonRpcProvider(process.env.RPC_URL);
low line 158

Access to .env file

SourceSKILL.md
158const indexer = new Indexer(process.env.STORAGE_INDEXER!);
low line 177

Access to .env file

SourceSKILL.md
177const provider = new ethers.JsonRpcProvider(process.env.RPC_URL);
low line 178

Access to .env file

SourceSKILL.md
178const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, provider);
low line 179

Access to .env file

SourceSKILL.md
179const indexer = new Indexer(process.env.STORAGE_INDEXER!);
low line 188

Access to .env file

SourceSKILL.md
188const [, imgErr] = await indexer.upload(imageFile, process.env.RPC_URL!, wallet);
low line 218

Access to .env file

SourceSKILL.md
218const [, metaErr] = await indexer.upload(metadataFile, process.env.RPC_URL!, wallet);
low line 255

Access to .env file

SourceSKILL.md
255await indexer.upload(file, process.env.RPC_URL!, wallet); // Upload AFTER register — data not available!
Scanned on Feb 25, 2026
View Security Dashboard