Monetising Resources on a SoLiD Pod Using Blockchain Transactions (ESWC Demo)
Hendrik Becker, Hung Vu, Anett Katzenbach, Christoph Braun & Tobias Käfer, Institute AIFB, Karlsruhe Institute of Technology (KIT), Germany
Abstract. Our demo showcases a system that allows users to provide access to web resources in exchange for payments via the Ethereum blockchain. The system enables users to create offers for their resources or buy access rights for resources belonging to other users. Access rights can be granted only for a limited amount of time. We built our system as SoLiD Pods and Apps: We developed two server modules for SoLiD Pods that automatically (1) grant access for valid payments via the blockchain and (2) remove expired access rights. On top, we developed a SoLiD App that allows to offer resources, browse and request offered resources, and make payments via the blockchain.
Resource | URI |
---|---|
Teaser (1 min) | https://www.youtube.com/watch?v=sqIeYRTrkEg |
Website (inkl. 3 min video) | http://people.aifb.kit.edu/co1683/2021/eswc-demo-solibra/ |
Paper | http://people.aifb.kit.edu/co1683/2021/eswc-demo-solibra/solibra.pdf |
Code | https://github.com/bright-fox/SolidBlockchain |
Below, you find detailled instructions on how to set up our demo application.
- Clone the repository.
- Install Docker Desktop e.g. from their homepage.
- Optional Step: If you want to also run the server modules:
- Navigate into the
Solidblockchain
folder and open thedocker-compose.yml
file. - Uncomment the server modules you want to use.
- Navigate into the
server_modules
folder and into the folders with the server modules you want to run e.g.processNotifications
folder - Create an .env file with the fields provided by the example.env file and fill it out with your information.
- Go to your browser and login to your Solid Pod specified in the .env file and add
https://solid-node-client
as a trusted application with read, write, append and control permissions in the preferences tab in your profile.
- Navigate into the
- Setup your Solid Account
- Navigate into the Solidblockchain folder.
- Run
docker-compose up --build
to build the images and start the ganache container and the application container.
-
Download the Metamask extension e.g. for Chrome to create a cryptocurrency wallet.
-
Follow the metamask instructions and create a new account.
-
Change the network to Localhost:8545 (Ethereum Main Net > Localhost:8545)
-
Click on the colored icon > Import account.
- IMPORTANT: Import the ethereum account for the Solid account that you will login to in this application. The ethereum address of Metamask and inside your Solid profile has to match.
- Copy and paste the private key to import the account (see below for the accounts)
Example: The private key 0x586439f4062db2f604e1edf57f5e5bbf09d8c57fd969f1d98802ca425c83f0d9 will import the ethereum address 0x6a04b3199DD582ABF6ee3DA94968a9D92DdAe00E
-
-
Go on your browser (where the Metamask extension is also installed) to your locally deployed application URL e.g. http://localhost:3000.
- If Metamask pops up, connect with the imported account that has 100 ETH.
-
Login with your Solid Account.
-
Search on the
Retrieve Resources
page for other users and pay for an offer (If you use the server modules search for the user specified in the .env file to see the server modules in action).
- Go to your browser and login to your Solid Pod.
- Choose for every Solid account a different ethereum account and save it in the profile of the Solid account.
Save the ethereum account in the Solid profile.
@prefix ethon: <http://ethon.consensys.net/>.
@prefix : <#>.
:me ethon:controlsAccount :EthereumAccount.
:EthereumAccount a ethon:ExternalAccount;
ethon:address "0xYOURCHOSENADDRESS".
Available Accounts on Ganache Blockchain (do not use these accounts for trading real cryptocurrencies)
Available Accounts
(0) 0x7A59ba2A7edDBE60aCF31C56D7fEaB8574692359
(1) 0x6a04b3199DD582ABF6ee3DA94968a9D92DdAe00E
(2) 0x84EB7fb899dbC2DF379b162BE22698a1956216Ad
(3) 0xF88E89187F4F2247ad013436512c553541E0b6fB
(4) 0x0E08647796f6a2C065e4326F84226f71d1EEcEa4
(5) 0xB388b489b3bed496Aec036587aA2f457a78fa49c
(6) 0xab8Cf0805cC58E43B6Ae4B2b9f12B0C928223e8C
(7) 0x81096928961B0c9aDcB0fB13A961B2ce292F80F1
(8) 0x21daE63b3F015A6569738F9c151a7c5Fef8dd8cf
(9) 0xfB07DBE3C40068e2a4BE1A079021eB0B102863B2
Private Keys
(0) 0x71bc615d073e619e87e8734caed35fb2fb0fa91d3530f20caba2277fd02c9ac7
(1) 0x586439f4062db2f604e1edf57f5e5bbf09d8c57fd969f1d98802ca425c83f0d9
(2) 0xf4892982cf7b4b8fc4657526200452dcb6dd110d39426b38b46c4621aa19a717
(3) 0xcd985ab29662323c5b08ad893926868a898398e09725598c10ceb088f536b354
(4) 0x108958cc802b29d20d1710a39efeb0e0192d25d265cb659bc72d3cbcde38374e
(5) 0xac7ef6baa6a19e88ea1e9e4080345e74d793a71a836a08d26b901cf291f7ffb5
(6) 0x28680c7e3cbd078b4c71c11baa5a5d1dfed44bf423874dbcc93800912780ba21
(7) 0x95e5d1e15c7b198765d2278d7e646445877d47b03a054478bda496f75e98f02a
(8) 0x505292f1658cc9163307118c65d58b8caa8688f775d498dd74fed6a4cf2c91c7
(9) 0x0fbc2f04202939a80857c0a527bc8025357b3886da9577333575cf95c6682b53
- Add the URL of the application e.g
http://localhost:3000
as a trusted application in the Preferences tab of the solid pod and give it read, write, append and control permissions.