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
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
Template literal with variable interpolation in command context
| 114 | if (err) throw new Error(`Merkle tree error: ${err}`); |
Template literal with variable interpolation in command context
| 117 | if (uploadErr) throw new Error(`Upload failed: ${uploadErr.message}`); |
Template literal with variable interpolation in command context
| 163 | throw new Error(`Download failed: ${error.message}`); |
Template literal with variable interpolation in command context
| 189 | if (imgErr) throw new Error(`Image upload failed: ${imgErr.message}`); |
Template literal with variable interpolation in command context
| 198 | image: `0g://${imageRootHash}`, |
Template literal with variable interpolation in command context
| 209 | const tempPath = path.join(os.tmpdir(), `metadata-${Date.now()}.json`); |
Template literal with variable interpolation in command context
| 219 | if (metaErr) throw new Error(`Metadata upload failed: ${metaErr.message}`); |
Access to .env file
| 21 | - `.env` with `PRIVATE_KEY`, `RPC_URL`, `STORAGE_INDEXER` |
Access to .env file
| 104 | const provider = new ethers.JsonRpcProvider(process.env.RPC_URL); |
Access to .env file
| 105 | const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, provider); |
Access to .env file
| 108 | const indexer = new Indexer(process.env.STORAGE_INDEXER!); |
Access to .env file
| 116 | const [, uploadErr] = await indexer.upload(file, process.env.RPC_URL!, wallet); |
Access to .env file
| 146 | const provider = new ethers.JsonRpcProvider(process.env.RPC_URL); |
Access to .env file
| 158 | const indexer = new Indexer(process.env.STORAGE_INDEXER!); |
Access to .env file
| 177 | const provider = new ethers.JsonRpcProvider(process.env.RPC_URL); |
Access to .env file
| 178 | const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, provider); |
Access to .env file
| 179 | const indexer = new Indexer(process.env.STORAGE_INDEXER!); |
Access to .env file
| 188 | const [, imgErr] = await indexer.upload(imageFile, process.env.RPC_URL!, wallet); |
Access to .env file
| 218 | const [, metaErr] = await indexer.upload(metadataFile, process.env.RPC_URL!, wallet); |
Access to .env file
| 255 | await indexer.upload(file, process.env.RPC_URL!, wallet); // Upload AFTER register — data not available! |
Install this skill with one command
/learn @0gfoundation/storage-plus-chain