This IPFS consortium tool allows you to jointly host IPFS data in a with a group of other IPFS users ( called a consortium ).
The IPFS consortium is configured by an array of participants in the consortium that can propose manifest files of IPFS hashes to be pinned by the members in the consortium.
What problems does IPFS Pinning Consortium try to solve ?
- A structured metadata format to describe
consortiumdetails andmanifestfiles of IPFS hashes. - A formal description of the metadata format (a JSON schema)
- A client utility to support and automate persisting data ( a.k.a pinning IPFS hashes )
- Proof of Persistence (TODO) : status reporting among consortium members
npm install ipfsconsortiumproxy
Via DappNode
/ipfs/QmXVaWaW9CyTpx6CU4hP9M7Tg9eAvagnf4WCWuqokD1AEu
You can set a number of environment variables to configure the script:
IPFSAPIHOST=localhost
IPFSAPIPORT=5001
WEB3HOSTWS="ws://localhost:8546"
Check / modify the settings in the enclosed .env-dist file
By default the IPFS API is assumed to be on localhost port 5001 using the HTTP protocol
The Ethereum node connects through a websocket on localhost port 8546
ipfsconsortiumproxy \
--ipfsapihost localhost \
--ipfsapiport 5001 \
--web3hostws "ws://localhost:8546" \
Type ipfsconsortiumproxy -h for more info about the available parameters.
just type ipfsconsortiumproxy to start it up.
The consortium is configured by a consortium config file that is hosted on IPFS.
The consortium config file is retrieved from ENS. It currently reads the text record from
consortium.dappnode.eth with the key consortium. This should resolve to an IPFS hash
with the format
/ipfs/<IPFSHASH>
If you resolve this IPFS hash - you will get a consortium config file.
The format of the config is as follows :
{
"type": "consortium",
"quotum": "100000000000",
"members": [
{
"ensname": "consortium.dappnode.eth",
"quotum": "10000000000"
},
...
]
}
Where
quotumis the total file size in bytes that all members combined of this consortium can ever store.membersis the list of members , each containing theirensnamepointing to the manifest of IPFS hashes they want to persist (see below) and a memberquotumspecifying the maximum amount of bytes this member is allowed to store in this consortium.
Each member of the consortium should define an ENS name (eg. consortium.dappnode.eth) with
a text record with the key consortiumManifest pointing again to an IPFS hash of the format
/ipfs/<IPFSHASH>
This IPFS hash must resolve to a JSON payload of the following format :
{
"type": "manifest",
"quotum": "10000000000",
"pin": [
"/ipfs/<IPFSHASH>",
"/ipfs/<IPFSHASH>",
...
"/ipfs/<IPFSHASH>"
]
}
Where
quotumis the capacity the member currently requires (should be smaller or equal to the members' quotum in the consortium config - the quotum in the consortium config has precedence over this value)pinis an array of IPFS hashes to pinunpinis an array of IPFS hashes to unpin (optional)
- Go to the IPFSConsortium chat on Riot ( see below ) and ask for help
- OR: Deploy your own payload to ENS - modify the config file and start your own consortium
- OR: Join an existing consortium - talk to people in our Riot channel
Setup a DappNode - install this app and start listening to one or more IPFS consortium ENS configurations.
just install the npm module + an IPFS node and run the script
npm install -g ipfsconsortiumproxy
ipfsconsortiumproxy <options>
We use ZenHub as a project management tool for this project.
- Install the ZenHub chrome plugin ( https://chrome.google.com/webstore/detail/zenhub-for-github/ogcgkffhplmphkaahpmffcafajaocjbd )
- visit the project board : ipfsconsortium/pm#2 (comment)
- check the
backlogandnew issuespipeline
If you don't want to install this plugin , just check the issues on the project
- IPFSConsortium chat on Riot: https://riot.im/app/#/room/#ipfsconsortium:matrix.org