Network Templates
Export, share, and import complete network configurations as portable templates. Templates capture everything needed to recreate a network: organizations, nodes, channels, policies, and chaincode definitions.
Overview
Network templates use a variable system (${varName.property}) to make configurations portable. When you export a network, concrete values (org IDs, node IDs, key IDs) are replaced with variables. When you import, you map those variables to resources on the target instance.
Supported platforms:
- Fabric — organizations, peers, orderers, channels, policies, consensus (etcdraft/smartbft), chaincode definitions
- Besu — validator keys, consensus config (QBFT), genesis parameters, alloc, smart contract definitions (ABI + bytecode)
Export a Network
Via API
curl http://localhost:8100/api/v1/networks/templates/export/1 \
-o my-network.json
Via CLI
chainlaunch network export --id 1 --output my-network.json
Template Structure
{
"version": "2.0.0",
"platform": "FABRIC",
"name": "supply-chain-network",
"description": "3-org supply chain network",
"variables": [
{
"name": "org1",
"type": "organization",
"description": "Manufacturing org"
},
{
"name": "org1Peer",
"type": "node",
"description": "Org1 peer node"
},
{
"name": "org1Key",
"type": "key",
"description": "Org1 signing key"
}
],
"network": {
"organizations": [
{
"mspId": "${org1.mspId}",
"peers": ["${org1Peer.id}"],
"orderers": ["${orderer1.id}"]
}
],
"channels": [
{
"name": "supply-chain",
"organizations": ["${org1.mspId}", "${org2.mspId}"],
"policies": {
"Readers": { "type": "ImplicitMeta", "rule": "ANY Readers" },
"Writers": { "type": "ImplicitMeta", "rule": "ANY Writers" },
"Admins": { "type": "ImplicitMeta", "rule": "MAJORITY Admins" }
}
}
],
"chaincodes": [
{
"name": "asset-tracker",
"version": "1.0",
"language": "golang",
"dockerImage": "chaincode/asset-tracker:1.0"
}
]
}
}
Validate a Template
Before importing, validate that a template is well-formed and all variables can be resolved:
curl -X POST http://localhost:8100/api/v1/networks/templates/validate \
-H "Content-Type: application/json" \
-d @my-network.json
Response:
{
"valid": true,
"variables": [
{ "name": "org1", "type": "organization", "resolved": false },
{ "name": "org1Peer", "type": "node", "resolved": false }
],
"warnings": []
}
If valid is false, the response includes errors explaining what's wrong.
Import a Template
Import creates the network and all associated resources (chaincodes, channels) in one operation.
Via API
curl -X POST http://localhost:8100/api/v1/networks/templates/import \
-H "Content-Type: application/json" \
-d '{
"template": <template-json>,
"variableBindings": {
"org1": { "organizationId": 1 },
"org1Peer": { "nodeId": 5 },
"org1Key": { "keyId": 3 },
"org2": { "organizationId": 2 },
"orderer1": { "nodeId": 10 }
}
}'
The variableBindings map template variables to actual resources on the target instance. You need to create the organizations, nodes, and keys first, then bind them during import.
Variable Types
| Type | Placeholder | Resolves to |
|---|---|---|
organization | ${varName.mspId} | Organization MSP ID |
node | ${varName.id} | Node ID |
key | ${varName.id} | Key ID |
mspId | ${varName} | Direct MSP ID string |
ethereumAddress | ${varName} | Ethereum address (Besu) |
publicKey | ${varName} | Public key hex (Besu) |
Besu Templates
Besu templates include genesis configuration with validator key references:
{
"version": "2.0.0",
"platform": "BESU",
"name": "defi-network",
"variables": [
{ "name": "validator0Key", "type": "key" },
{ "name": "validator1Key", "type": "key" }
],
"network": {
"chainId": 1337,
"consensus": "QBFT",
"blockPeriod": 5,
"epochLength": 30000,
"validatorKeys": [
"${validator0Key.id}",
"${validator1Key.id}"
],
"alloc": {
"${validator0Key.ethereumAddress}": {
"balance": "1000000000000000000000"
}
},
"smartContracts": [
{
"name": "TokenContract",
"abi": "[{...}]",
"bytecode": "0x608060..."
}
]
}
}
Example Templates
ChainLaunch ships with example templates in the examples/templates/ directory:
| Template | Platform | Description |
|---|---|---|
fabric-supply-chain | Fabric | 3-org supply chain with asset tracking chaincode |
besu-defi-network | Besu | 4-validator QBFT network with token contract |
fabric-multi-org | Fabric | Multi-org consortium with custom policies |
Use Cases
- Repeatable deployments — export a staging network template, import in production
- Client projects — system integrators can create template libraries for common patterns
- Disaster recovery — templates + backups give you full recovery capability
- Training — distribute pre-built network templates for workshops
- Cross-instance sharing — combined with Node Sharing, templates enable multi-org consortiums
Next Steps
- Multi-Org Fabric for building consortium networks
- Create a Besu Network for Besu-specific configuration
- Migration Guide for importing existing networks