-
David Wagner authoredDavid Wagner authored
dev.md 2.04 KiB
go-ipfs development
This is a simple description of where the codebase stands.
There are multiple subpackages:
-
bitswap
- the block exchange -
blocks
- handles dealing with individual blocks and sharding files -
blockservice
- handles getting and storing blocks -
cmd/ipfs
- cli ipfs tool - the main entrypoint atm -
config
- load/edit configuration -
core
- the core node, joins all the pieces -
fuse/readonly
- mount/ipfs
as a readonly fuse fs -
importer
- import files into ipfs -
merkledag
- merkle dag data structure -
path
- path resolution over merkledag data structure -
peer
- identity + addresses of local and remote peers -
routing
- the routing system -
routing/dht
- the dht default routing system implementation -
swarm
- connection multiplexing, many peers and many transports -
util
- various utilities
What's done:
- merkle dag data structure
- path resolution over merkle dag
- local storage of blocks
- basic file import/export (
ipfs add
,ipfs cat
) - mounting
/ipfs
(try{cat, ls} /ipfs/<path>
) - multiplexing connections (tcp atm)
- peer addressing
- dht - impl basic kademlia routing
- bitswap - impl basic block exchange functionality
- crypto - building trust between peers in the network
- block splitting on import - Rabin fingerprints, etc
What's in progress:
- ipns - impl
/ipns
obj publishing + path resolution - expose objects to the web at
http://ipfs.io/<path>
What's next:
- version control -
commit
like data structure - more...
Cool demos
A list of cool demos to work towards
- boot a VM from an image in ipfs
- boot a VM from a filesystem tree in ipfs
- publish static websites directly from ipfs
- expose objects to the web at
http://ipfs.io/<path>
- mounted auto-committing versioned personal dropbox
- mounted encrypted personal/group dropbox
- mounted {npm, apt, other pkg manager} registry
- open a video on ipfs, stream it in
- watch a video with a topology of 1 seed N leechers (N ~100)
- more in section 3.8 in the paper