Frequently Asked Questions (FAQ)
General Questions
What is ICN?
ICN (Intercooperative Network) is a peer-to-peer substrate for cooperatives. It provides the infrastructure layer for cooperative coordination: identity, trust, mutual credit ledger, governance, and distributed computation.
Think of it as "Git for economic coordination" - it handles the decentralized substrate so cooperatives can focus on their mission.
Is ICN a blockchain?
No. ICN is not a blockchain. Key differences:
| ICN | Blockchain |
|---|---|
| P2P gossip (no global consensus) | Global consensus (PoW/PoS) |
| Mutual credit (zero-sum) | Cryptocurrency (speculative) |
| Trust-gated access | Permissionless |
| Designed for cooperatives (10-1000 members) | Designed for global scale |
| Deterministic contracts (CCL) | Turing-complete (Solidity/etc) |
ICN uses gossip for eventual consistency, not global consensus. This is much more efficient for cooperative-scale coordination.
Who is ICN for?
Primary audience:
- Housing cooperatives
- Worker cooperatives
- Timebanks
- Community land trusts
- Food co-ops
- Tool libraries
- Mutual aid networks
Not for:
- Corporations seeking blockchain hype
- Cryptocurrency speculation
- Global-scale financial infrastructure
- Adversarial environments (use blockchain instead)
How is this different from [other project]?
vs. Holochain:
- ICN: Rust-based, actor runtime, CCL contracts
- Holochain: Holo/HDK, agent-centric, Wasm zomes
- Similarity: Both use gossip, both avoid global consensus
vs. Secure Scuttlebutt (SSB):
- ICN: Mutual credit ledger, governance, trust graph
- SSB: Social messaging, append-only logs
- Similarity: Both are P2P, both use gossip
vs. Ethereum/Smart Contract Platforms:
- ICN: Trust-first, cooperative-scale, deterministic
- Ethereum: Trustless, global-scale, Turing-complete
- Different: ICN is not a blockchain, no mining, no gas fees
Is ICN production-ready?
Status snapshot (2025-11-21):
- ✅ Substrate: assessed as production-capable at that time (Phase 15 complete, 423 tests passing)
- ✅ Security: Three-layer architecture (transport, message, application)
- ✅ Economic Safety: Dynamic credit limits, dispute resolution, new member throttling
- ✅ Operations: Backup/restore, monitoring, graceful restart
- 🚧 Pilot Deployment: first pilot community selection in progress (Track C1 at that time)
- ❌ General Availability: not yet in this snapshot (pilot learnings required first)
For current readiness, verify against the latest status docs and CI/workflow results rather than this dated snapshot.
Technical Questions
What language is ICN written in?
Rust (100%). Chosen for:
- Memory safety without garbage collection
- Excellent async runtime (Tokio)
- Strong type system
- Zero-cost abstractions
- Great cryptography libraries
What are the system requirements?
Minimum:
- CPU: 1 core (2+ recommended)
- RAM: 512 MB (1 GB+ recommended)
- Disk: 1 GB (10 GB+ for active node)
- OS: Linux, macOS, or Windows (WSL2)
- Network: 1 Mbps+ (5 Mbps+ for active node)
Recommended for pilot (10-50 members):
- CPU: 2 cores
- RAM: 2 GB
- Disk: 20 GB SSD
- OS: Linux (Ubuntu 22.04 LTS or Debian 12)
- Network: 10 Mbps+ with static IP
Does ICN work on Raspberry Pi?
Yes! ICN runs on ARM64:
- Raspberry Pi 4 (4 GB+ recommended)
- Raspberry Pi 5
- Other ARM64 SBCs
Build from source:
cargo build --release --target aarch64-unknown-linux-gnu
How do I connect nodes over the internet (not just LAN)?
ICN uses mDNS for local discovery and QUIC for connections. For internet connections:
Manual peering (easiest):
icnctl network add-peer <public-ip>:7777 <did>NAT traversal (Phases 1-3 complete):
- STUN for public IP discovery
- Hole punching for NAT traversal
- Configurable STUN servers
TURN relay (Phase 4, not yet implemented):
- For strict corporate firewalls
- Self-hosted TURN server
VPN/Tailscale (works today):
- Set up Tailscale/Wireguard
- Use Tailscale IPs for peering
See nat-traversal-design.md for details.
Can I run ICN in Docker?
Yes! Example Dockerfile:
FROM rust:1.75 as builder
WORKDIR /icn
COPY . .
RUN cd icn && cargo build --release
FROM debian:bookworm-slim
COPY --from=builder /icn/icn/target/release/icnd /usr/local/bin/
COPY --from=builder /icn/icn/target/release/icnctl /usr/local/bin/
EXPOSE 7777/udp 8080/tcp 9100/tcp
CMD ["icnd"]
Data persistence:
Mount the daemon data directory as a volume (icnd --data-dir /path). If using --data-dir ~/.icn, mount ~/.icn.
What ports does ICN use?
- 7777/UDP: QUIC networking (P2P connections)
- 8080/TCP: Gateway API (REST + WebSocket)
- 9100/TCP: Prometheus metrics
- 5353/UDP: mDNS discovery (LAN only)
Firewall configuration:
# Allow ICN P2P (QUIC)
sudo ufw allow 7777/udp
# Allow Gateway API (if hosting apps)
sudo ufw allow 8080/tcp
# Allow metrics (if using Prometheus)
sudo ufw allow 9100/tcp
Security & Privacy Questions
How is my identity secured?
- Private key: Stored in Age-encrypted keystore (
{data_dir}/identity.age) - Passphrase: You choose during
icnctl id init - Encryption: Age encryption (ChaCha20-Poly1305)
- Backup: Use
icnctl backupto create encrypted backups
Best practices:
- Use a strong passphrase (12+ characters, mix of types)
- Backup your keystore off-site
- Consider hardware keys (YubiKey support planned)
What if I lose my device?
If you have a backup:
icnctl restore ~/backup.tar.gz.age
If you don't have a backup:
- Your identity is lost (can't be recovered)
- Create a new identity with
icnctl id init - Request trust re-attestation from cooperative members
Multi-device identity (recommended): Use multiple devices so losing one doesn't lose your identity:
icnctl device add --name "My Phone"
See multi-device-identity-design.md.
Is communication encrypted?
Yes, three layers:
- Transport: QUIC with TLS 1.3 (all network traffic)
- Message: SignedEnvelope with Ed25519 signatures
- Application: EncryptedEnvelope with X25519-ChaCha20-Poly1305 (optional)
All P2P communication is encrypted by default.
Can cooperatives spy on each other?
No. ICN is multi-tenant by design:
- Each cooperative has its own ledger, trust graph, and governance
- Gossip topics are isolated by access control (Public, Private, TrustGated)
- Private topics are only visible to authorized members
- No cross-cooperative data leakage
What about GDPR compliance?
ICN provides tools for GDPR compliance:
- Right to access: Export data with
icnctl backup - Right to erasure: Delete keystore and request pruning from peers
- Data minimization: Only stores necessary data (no PII by default)
- Encryption: All data encrypted at rest and in transit
Cooperative responsibility:
- Establish data retention policies
- Document processing activities
- Appoint data protection officer (if required)
- Provide privacy policy to members
See legal-considerations.md for details.
Usage Questions
How do I set credit limits?
Credit limits are set by the cooperative's credit policy. Options:
Use defaults (from Phase 12 economic modeling):
- Initial: -20 credits
- Maximum: -500 credits
- Bonus: +10 per 50 cleared transactions
- Trust multiplier: 2x
Override per-member (admin):
# Not yet exposed in CLI, use RPC or CCL contractConfigure policy (via CCL contract):
// Define credit policy in cooperative contract // See docs/economic-safety.md
See economic-safety.md for details.
Can I use multiple currencies?
Yes! The ledger supports multiple currencies:
- Hours (timebanking)
- USD (or local currency)
- Credits (generic)
- kWh (energy)
- Custom units
Each currency has separate balances and credit policies.
icnctl ledger pay <did> 2 hours "Gardening help"
icnctl ledger pay <did> 10 USD "Grocery share"
How do I resolve a disputed transaction?
File a dispute:
icnctl ledger dispute <entry-hash> "Reason for dispute"Cooperative mediates:
- Assign a mediator (via governance proposal)
- Gather evidence
- Decide outcome
Resolve:
icnctl ledger resolve <entry-hash> <outcome> "Reasoning"
Outcomes: Uphold (keep entry), Reverse (cancel entry), Adjust (modify amount)
See economic-safety.md for details.
Can I delete my transaction history?
No. The ledger is immutable by design to maintain trust and accountability.
However:
- You can dispute incorrect entries
- You can write off bad debts (with governance approval)
- Old entries can be archived (removed from active state but kept in backups)
How does governance work?
ICN provides governance primitives, not a fixed system:
Create a governance domain:
icnctl gov domain create --domain-id my-coop --name "My Cooperative"Create a proposal:
icnctl gov proposal create --domain-id my-coop \ --title "Approve new supplier" --kind textOpen for voting:
icnctl gov proposal open --proposal-id <id>Vote:
icnctl gov vote cast --proposal-id <id> --choice forClose and tally:
icnctl gov proposal close --proposal-id <id>
See governance-primitives.md for details.
Troubleshooting
"No peers connected" - What do I do?
Check network connectivity:
icnctl network status
icnctl network peers
Common causes:
- Firewall blocking port 7777: Open firewall
- No peers on LAN: Manually add peer with
icnctl network add-peer - mDNS not working: Use manual peering
- NAT issues: Configure STUN or use VPN
Solution:
# Manual peering (most reliable)
icnctl network add-peer <ip>:7777 <did>
Tests are failing - What's wrong?
Common causes:
- Port already in use: Another ICN instance running
- Timing issues: Increase timeouts in flaky tests
- Disk full: Clean up
/tmpand~/.icn - Concurrent tests: Run with
--test-threads=1
Debug:
# Run with logs
RUST_LOG=debug cargo test <test_name> -- --nocapture
# Run single-threaded
cargo test -- --test-threads=1
# Clean and rebuild
cargo clean && cargo build && cargo test
Daemon won't start - What do I check?
Check logs:
# Systemd
journalctl -u icnd -f
# Manual run
RUST_LOG=debug icnd
Common issues:
- Port 7777 in use: Another process using the port
- Keystore locked: Wrong passphrase or corrupted keystore
- Permissions: Can't write to your configured data directory
- Missing dependencies: Reinstall ICN
How do I reset everything and start fresh?
CAUTION: This deletes your identity and all data!
# Stop daemon
sudo systemctl stop icnd
# Backup (optional)
icnctl backup ~/icn-backup-before-reset.tar.gz.age
# Delete data (example if you run with --data-dir ~/.icn)
rm -rf ~/.icn/
# Start fresh
icnctl --data-dir ~/.icn id init
Roadmap & Future
What's next for ICN?
See ROADMAP.md for detailed plans. Summary:
Immediate (2025 Q1):
- Track C1: Select pilot community
- Deploy pilot with real cooperative
- Weekly learning loop and feedback
Short-term (2025 Q2-Q3):
- Incorporate pilot learnings
- TypeScript SDK and reference app
- Additional governance patterns
- Federation (if multiple pilots)
Long-term (2025 Q4+):
- Multi-cooperative federation
- Advanced privacy features
- Mobile apps (if web isn't sufficient)
- Scale pilots to 10+ communities
Can I use ICN for [X]?
Good fit:
- Timebanks
- Housing cooperatives
- Worker cooperatives
- Tool libraries
- Community currencies
- Mutual aid networks
Maybe:
- Social networks (use SSB instead?)
- Supply chain tracking (depends on scale)
- Voting systems (governance primitives help)
Not a good fit:
- Global financial infrastructure (use blockchain)
- Adversarial environments (use blockchain)
- Real-time gaming (latency issues)
- Centralized applications (use traditional DB)
Ask yourself:
- Is this a cooperative/community organization?
- Do you need decentralized coordination?
- Is the scale 10-1000 members?
- Is trust a reasonable assumption?
If yes to all four, ICN is likely a good fit!
Getting Help
Documentation:
- Getting Started Guide
- Architecture Overview
- Operations Guide
- All docs in
docs/directory
Community:
- GitHub Issues: https://github.com/InterCooperative-Network/icn/issues
- Roadmap: ROADMAP.md
- Contributing: CONTRIBUTING.md
Have a question not answered here? Open an issue and we'll add it to the FAQ!