ResArtifact - Resilient based Artifact Repository

 

ResVault is a novel decentralized tool that utilizes blockchain technology to track and store valuable artifact information securely. We have applied a blockchain-based distributed database, Resili...

ResVault is a novel decentralized tool that utilizes blockchain technology to track and store valuable artifact information securely. We have applied a blockchain-based distributed database, ResilientDB, for digital and physical artifact repositories for museums, auction houses, institutions, and individuals. ResArtifact will be available for all users to review its transactions on a collection page displaying each artifact’s name, image, and description. Each artifact will contain a ledger of all transactions that provides its precedence of location, date moved, and changes in condition. This information is available for the public to learn about an artifact or determine whether a claimed artifact is valid and make an update.

Since each transaction is important in proving an artifact’s validity, we must ensure that only authenticated users can add artifacts. Institutions or individuals that own artifacts will have access to a secure account that allows them to add new artifacts, view their private collections, and transfer artifacts. They will also be able to view the history of their individual artifacts. Without needing a login, a user can view the collection of all artifacts from all users and search for artifacts as well. This accessibility to both the general public and authorized users allows everyone to use the ResArtifact.

Logo
Figure 1. Image describing ResArtifact

Problem Identified

Our market opportunity is to provide art museums and collectors with a way to verify and conduct transactions on valuable art pieces. We believe that there currently is no decentralized platform to host transactions for art pieces and that ResArtifact will provide both security to this market. Furthermore, there will be general interest from art enthusiasts who won’t have access to creating and logging transactions but will be able to search for artifacts and view them.

Solution

To solve this problem we use blockchain technology, which has already been successfully applied in similar fields such as land registries. This improves the security of the database by preserving essential information about all known artifacts. A registrar for artifacts is extremely valuable as the documentation for an artifact’s history is directly tied to its value. All entries into the database must be authenticated and data will not be lost thanks to the redundancy of all distributed nodes owning the most current ledger. Institutions may purchase or trade artifacts without worry of fakes thanks to the ledger’s information on the validity of the piece as well as any changes in ownership. Art enthusiasts may also know whether the original artifact is available for public viewing.

Technology Stack

  • React.js
  • Backend: ResilientDb GraphQL server, MongoDB
  • Database: ResilientDB

Logo
Figure 2. Technology Stack of ResArtifact

Architecture

Logo
Figure 3. Sequence Diagram of Adding an Artifact

Logo
Figure 4. Sequence Diagram of Transferring an Artifact

Logo
Figure 5. High-Level Design of Artifact

Features and User Guide

Home Page

Logo
Figure 6. Home Page

Logo
Figure 7. What we offer through ResArtifact

  • Getting Started: To access the dashboard, users need to log in using Resvault. After a user is authenticated, they will be brought to the Dashboard page.

Logo
Figure 8. Login Page

  • Straightforward actions: This Dashboard gives users to option to add a new artifact or view their personal collection.

Logo
Figure 9. Dashboard

Inventory

  • Easy Addition Process: Allows users to easily add an artifact by inputting an artifact’s information: name, unique ID, place of origin, origin year, artifact description, condition, curator ID, museum ID, recipient’s public key, and an image URL.

Logo
Figure 10. Add Artifact Page

  • View Personal Inventory: Shows an exclusive inventory of artifacts that only the user has added. Users can transfer any artifact in their personal inventory to another user.

Logo
Figure 11. View Artifact Page

  • Seamless Transfer: In case a user wants to transfer an artifact to another user, they can update the artifact’s information and easily send it.

Logo
Figure 12. Transfer Artifact Page

  • Inventory View: Shows a detailed display of updated inventory information on all artifacts that any user has added.

Logo
Figure 13. Artifact Collection Page

  • Individual Artifact View: Shows all the information stored for an artifact.

Logo
Figure 14. Individual Artifact Information Page

  • History: Shows the history of an artifact with all past information about it.

Logo
Figure 15. Artifact Transaction History

Demo Video

Logo

Steps to run the system

Alright, folks, this is just the beginning — it’s like looking at a tall mountain, but trust us, we’re going to climb it together and reach the top. You’ve got this!

Before we jump into setting up ResilientDB, let’s quickly check that we have all the prerequisites in place.

Ensure you have the following installed and configured before proceeding:

Node 20.17.0

Bazel 6.0.0

Python 3.10

Ubuntu 22.04

MongoDB 7.0.15

With these prerequisites in place, we can move on to the setup.

Setup Crow HTTP server, SDK, and GraphQL server

Clone the ResilientDB repository:

git clone https://github.com/resilientdb/resilientdb.git

Navigate into the ResilientDB directory:

cd resilientdb

Install the required dependencies:

sh INSTALL.sh

Start the ResilientDB KV Service (Take a short break, folks! The first time might take a few minutes!):

./service/tools/kv/server_tools/start_kv_service.sh

Setup Crow HTTP server, SDK, and GraphQL server

Clone the ResilientDB GraphQL repository:

git clone https://github.com/ResilientDB-GraphQL

Navigate into the ResilientDB-GraphQL directory:

cd ResilientDB-GraphQL

Install the Crow dependencies:

sudo apt update
sudo apt install build-essential
sudo apt install python3.10-dev
sudo apt install apt-transport-https curl gnupg

Build the Crow HTTP server (this might take a few minutes the first time, so kick back, relax, and maybe stretch your legs while it does its thing!):

bazel build service/http_server:crow_service_main

Start the Crow HTTP server:

bazel-bin/service/http_server/crow_service_main service/tools/config/interface/service.config service/http_server/server_config.config

Create virtual environment for the Python SDK:

python3 -m venv venv –without-pip

Activate the virtual environment:

source venv/bin/activate

Install pip in the virtual environment for the Python dependencies:

curl https://bootstrap.pypa.io/get-pip.py | python

Install the Python dependencies:

pip install -r requirements.txt

Start the GraphQL server:

python3 app.py

Setup Wallet

This is your key to ResArtifact

Here is the link to setup ResVault

Setup MongoDB

All you need to do is set up MongoDB, and don’t worry about the rest — the resilient-node-cache will take care of everything else for you!

Refer to this guide to install MongoDB in 7 simple steps

Check if MongoDB is Running using :

sudo systemctl status mongod

Contributions:

The team members of this project are Alyssa Yee, Amy Vu, Alexander Gao, Zijin Cui, Guransh Anand. Alyssa Yee is the leader of our project and has handled submitting all assignments and has supported backend transactions. Amy led the frontend development and connected the frontend application to the backend. Alexander supported the frontend development and strategic planning for features of the application. Guransh managed the backend development, which includes setting up transactions, making custom transactions required for this application, and testing the functionality on a sample frontend. Zijin Cui is gathering and organizing reference materials needed for this project.