Skip to content

An example of usage IPFS in Ethereum Smart Contracts

Notifications You must be signed in to change notification settings

pedrohdq/ipfs-eth-database

 
 

Repository files navigation

IPFS in Ethereum Smart Contracts

This is a simple blog application that is a proof of concept of connecting Ethereum's smart contracts to JSON database stored on IPFS. The communication is based on Oraclize service.

How to run?

Prepare a blog contract

First you have to deploy a contract.

Here is an example how to deploy to Rinkeby testnet via infura node.

Set your mnemonic in wallet-config.json.

Run migrations:

 truffle migrate --network rinkeby-infura --reset

You should see the address of the contract:

Blog: 0x461192ab19b0a963a77fdc8dea5ee9ac4287ff31

We have to set this address in app/blog/config/blog.json file.

Install IPFS

You have to have your own IPFS node that will store the database. Installation process is described here.

After installation we can run the daemon:

ipfs daemon

Run the server

Install npm dependencies:

npm install

and run the server

./node_modules/.bin/parcel app/index.html

Prepare blogposts

Each blogpost is stored in JSON object that consists of two attributes: title and content.

Let's prepare two blogposts.

echo '{"title":"Title of the first post", "content": "This is the awesome content!"}' > post_1.json
echo '{"title":"Title of the second post", "content": "This is the most awesome content!"}' > post_2.json

And we have to add them to IPFS as follows:

ipfs add post_1.json; ipfs add post_2.json

You should see two hashes (addresses) of the files:

added QmU2yr8CQfrd26Yghjx2xGdg8ZdmRKRSwcD7eBgpvL91xf post_1.json
added QmRPdMo8HEoSWSPXg1NxvLPcDNdL7YocvhXdYHjGQaXmfC post_2.json

You should be able to read the files by ipfs cat command or by a public gateway:

ipfs cat QmU2yr8CQfrd26Yghjx2xGdg8ZdmRKRSwcD7eBgpvL91xf

{"title":"Title of the first post", "content": "This is the awesome content!"}
curl http://ipfs.io/ipfs/QmU2yr8CQfrd26Yghjx2xGdg8ZdmRKRSwcD7eBgpvL91xf

{"title":"Title of the first post", "content": "This is the awesome content!"}

Keep the hashes for the next step.

Now we can add our blogposts using following command:

node scripts/add-blog-post.js <FILE_ADDRESS>

In our case:

node scripts/add-blog-post.js QmU2yr8CQfrd26Yghjx2xGdg8ZdmRKRSwcD7eBgpvL91xf
node scripts/add-blog-post.js QmRPdMo8HEoSWSPXg1NxvLPcDNdL7YocvhXdYHjGQaXmfC

Then you should see the link to your blog

Your blog is available here:
http://localhost:1234/#/u/0x351944e0d307d536737de4c6f07382548437fb53

Now we can open the link above and check if our blog works properly.

About

An example of usage IPFS in Ethereum Smart Contracts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Solidity 89.5%
  • JavaScript 9.4%
  • Other 1.1%