Hypercore basic usage
Installing from npm
Assuming you already have a Node.js project started, install the npm module to node_modules:
npm install --save hypercore
This will also update your package.json.
If you need help setting up Node.js and creating a project, here is a guide.
Creating a hypercore on disk
Try creating a new Node.js file, let's call it
const hypercore = require('hypercore') const feed = hypercore('./my-feed')
When you first run
node create-feed, it will create the
under your current directory, and it will have the following files in it:
$ ls my-feed bitfield key secret_key signatures tree
This is where the data for the hypercore will be stored. We haven't stored any data yet, but we can see that some files have already been created.
These files are called SLEEP files - they are all binary formatted files. The format is documented in the SLEEP Paper (pdf).
These files are the backing database for hypercore, so you should never need to touch them. But it is useful to know what they are.
key file is 32 bytes long and contains the public key for the hypercore
feed. Likewise, the
secret_key file is 64 bytes long and contains the secret
These are binary files, so you can use the
hexdump system utility to display
them (if you have it):
$ hexdump my-feed/key 0000000 e1 3a be 5e 44 cb 7b 41 1e 8c 46 2c b7 7e bd e4 0000010 01 2e 00 2e 6e c6 15 72 0b 06 f7 37 32 98 4f 23 0000020
$ hexdump my-feed/secret_key 0000000 eb 21 ea 4a f3 9d c7 04 ec a4 4d 0f 8e 63 3d 06 0000010 b7 53 03 7a 5b e4 44 93 b8 bc e2 77 b7 52 bd d0 0000020 e1 3a be 5e 44 cb 7b 41 1e 8c 46 2c b7 7e bd e4 0000030 01 2e 00 2e 6e c6
Hypercore uses Ed25519 public-key cryptography for it's key pairs. This modern cyrptography system is extremely fast and also has short keys. The 32-byte binary secret key shown above can be printed as a 64-character hexadecimal string, which can also be used as a dat: URL, eg.:
With the public key, anybody can verify that records written to the hypercore were created with the secret key.
Normally, you should never distribute the secret key. You should just keep it on disk in the SLEEP format for internal use by the hypercore for when it needs to write new data.