JuniDB
- Team Name: Uddug
- Payment Address: 0xc45eAd98E95D1962133d9c15847e2EA4E16dfD0b
- Status: Terminated
Project Overview πβ
Overviewβ
It's a very highload action to store large amounts of data on-chain. The most-common and useful solution for decentralised apps is to use IPFS as a data storage and store on-chain only hashes. Our team inspired by the OrbitDB will focus on the scalability, decentralised, easy-learning solution for substrat developers that want to manipulate big amounts of data easily.
Key advantagesβ
- Usability - just integrate and code
- Security - built-in encryption
- Scaling - ready for changes and big data
Available storage data typesβ
- Key-value - simple key-value storage
- Hash - hash storage like Redis hash
Motivationβ
Working a lot with blockchain technologies, our team found that itβs data-driven, and thus there are rapidly growing interests in integrating them for more secure and efficient data storage and sharing.We are convinced that blockchain technologies change the world, and have been working hard to create more transparent solutions. We designed and built core infrastructure for decentralised projects.
We have been observing and learning Substrate technologies and find Polkadot as the best ecosystem for us to join depending on technology and strong market position. We believe that our protocol will be useful for other projects in the Polkadot ecosystem.
Project Detailsβ
Substrate pallet provides a configurable database module allows to store and manipulate a big amount of data. Pallet works as an offchain worker and connect data between blockchain and ipfs via offchain::worker.
Encryption moduleβ
Built-in encryption module allows to create a secure database and encrypt all data before its uploading to the database with user account keys. With enabled encryption only account users have access to the database. Data could be decrypted via Web-application after receiving. Module is based on asymmetrical cryptography and uses an account public key to encrypt data on the blockchain side and a private key to decrypt data on the client side.
We plan to make it based on ed25519 crypto scheme and use ecies-ed2551 crate to implement encryptions on backend side.
- receive data by RPC request
- Encrypt data by account public key
- Insert encrypted data into ipfs via offfchain::ipfs
- Insert received ipfs hash into storage
- catch request to get data by RPC request
- get ipfs hash from storage
- fetch encrypted data from ipfs via offchain::ipfs
- receive encrypted data in RPC response
- decrypt data using user account private key via app ddecryption module
Technical stackβ
-
Rust - main language
-
Substrate - blockchain framework
-
Substrate-front-end-template - web-app template
-
Offchain::ipfs - substrate-ipfs bridge
-
IPFS - data storage
-
ecies-ed25519 - encryption crate
Public Methodsβ
-
KeyValueInit(name) - initialise new keyValue database
-
KeyValueSet(key, value) - set given value in keyValue database
-
KeyValueGet(key) - get value for given key
-
KeyValueDel(key) - delete value from keyValue database
-
KeyValueAll() - fetch all values from keyValue database
-
HashInint(name) - initialise Hash database
-
HashCreate(hashName) - create new empty cash
-
HashSetField(hash, field, value) - set hash field with given value
-
HashGetField(hash, field) - get hash field
-
HashDelFied(hash, field) - delete field from hash
-
HashAll(hash) - get all hash fields
Storageβ
- Data Map - mapping ipfs hashes and data keys
- Key-value - database meta info
Scheme 1. Palett structureβ
Data uploadingβ
- Rpc/wss request to pallet to insert data
- Validating data based on database schema
- Formatting data
- Encrypted (if needed)
- Store to ipfs via offchain::ipfs
- Retrieving ipfs hash with data
- Store ipfs hash into pallet storage
Data retrievingβ
- RPC/wsss request to pallet to fetch get data
- Validating data query
- Get ipfs hash from storage
- Fetch data from ipfs via offchain::ipfs
- Return data object in response
Scheme 2. Interaction with Substrateβ
Infrastructureβ
Testing substrate nodes with offchain::orbitDB pallet orchestrated by kubernetes cluster deployed on GCP.
Ci/Cdβ
Ci/Cs organized by github actions
Frontendβ
Simple SPA web application powered by react and polkadot.js. Using for testing purposes.
Ecosystem Fitβ
Pallet is suitable for substrate developers and strives to become a complex solution for data storage and manipulation.
We expect that the project will be useful for the Web3 community.
Team π₯β
Team membersβ
Tech lead, backend: Andrew Skurlatov
https://www.linkedin.com/in/andrew-skurlatov/
Head of product: Mike Manko
https://www.linkedin.com/in/mikhail-manko-97a491a2/
Product design: Anuar Zhumaev
https://www.linkedin.com/in/yxorama/
DevOps: Ivan Podcebnev
https://www.linkedin.com/in/naykip/
Data Science: Constantine Czerniak
https://www.linkedin.com/in/%D1%81czerniak/
Frontend: Nikita Velko
https://www.linkedin.com/in/nikichv/
Contactβ
Contact Name: Mikhail Manko
Contact Email: ms@uddug.com
Legal Structureβ
Registered Address: PO301650, RUSSIA, UL. OVRAZHNAYA, D. 35, S. TETYAKOVKA, NOVOMOSKOVSKIJ R-N, OBL. TUL'SKAYA.
Registered Legal Entity: PE SKURLATOV ANDREY ALEKSEEVICH
Team's experienceβ
Core of our team is of united, like-minded professionals with solid experience. We are constantly evolving our capabilities to help software technology companies to do more with less: develop software solutions faster and ensure high quality within time constraints, with fewer resources, and lower costs. We combine proven methodologies, business domain knowledge and technology expertise of skilled software professionals to deliver highly optimized solutions and services across a wide range of industry domains.
Team range of experience begins from developing small scaled websites up to complex blockchain architectures. Our projects are diverse, but all of them share the need to have a software solution for humans.
Team Code Reposβ
Commitsβ
https://github.com/uddugteam/thc-node/commits/master
Related domainβ
Development Status πβ
We have already developed the pre-alfa pallet for Trusted Health Council (https://github.com/uddugteam/thc-node).
Link to initial pull request (https://github.com/uddugteam/General-Grants-Program/blob/master/grants/speculative/trusted_health_consul.md).
Link to 2nd pull request (https://github.com/uddugteam/Open-Grants-Program/blob/master/applications/ML-as-a-service.md).
Development Roadmap π©β
- Total Estimated Duration: 4 months
- Full-Time Equivalent (FTE): 2.5 FTE
- Total Costs: 28 000 USD
Milestone 1β
- Estimated Duration: 1 month
- FTE: 2.5
- Costs: 7 000 USD
Number | Deliverable | Specification |
---|---|---|
0a. | License | License: GNU GPL v3 |
0b. | Documentation | Documentation of the code and a basic tutorial describing how the software can be used and tested. |
0c. | Testing Guide | Complex quality assurance for all platform features. Core functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. |
0d. | Article | We will publish an article that explains the functionality of the proposed pallet in this milestone. |
1. | Substrate ML pallet | Basic database layout implementation with key-value data storage |
2. | Web application | Interacting with blockchain + form with fields to manipulate with data. Based on the substrate-front-end-template |
3. | Docker image | We will provide a dockerfile to demonstrate the full functionality of testing Substrate chain with integrated Database pallet. |
Milestone 2β
- Estimated Duration: 1 month
- FTE: 2.5
- Costs: 7 000 USD
Number | Deliverable | Specification |
---|---|---|
0a. | License | License: GNU GPL v3 |
0b. | Documentation | Documentation of the code and a basic tutorial describing how the software can be used and tested. |
0c. | Testing Guide | Complex quality assurance for all platform features. Core functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. |
0d. | Article | We will publish an article that explains the functionality of the proposed pallet in this milestone. |
1. | Update offchain::ipfs | We will coordinate with equilibrium.co to update offchain::ipfs to the latest Substrate version via PR to the existing repository |
2. | Docker image | We will provide a dockerfile to demonstrate the full functionality of testing Substrate chain with integrated Database pallet. |
Milestone 3β
- Estimated Duration: 1 month
- FTE: 2.5
- Costs: 7 000 USD
Number | Deliverable | Specification |
---|---|---|
0a. | License | License: GNU GPL v3 |
0b. | Documentation | Documentation of the code and a basic tutorial describing how the software can be used and tested. |
0c. | Testing Guide | Complex quality assurance for all platform features. Core functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. |
0d. | Article | We will publish an article that explains the functionality of the proposed pallet in this milestone. |
1. | Substrate pallet | Implement an encryption module to allow encrypt and decrypt needed data out of the box. |
2. | Web application | Update web application to interact with the encryption system. |
3. | Docker image | We will provide a dockerfile to demonstrate the full functionality of testing Substrate chain with integrated Database pallet. |
Milestone 4β
- Estimated Duration: 1 month
- FTE: 2.5
- Costs: 7 000 USD
Number | Deliverable | Specification |
---|---|---|
0a. | License | License: GNU GPL v3 |
0b. | Documentation | Documentation of the code and a basic tutorial describing how the software can be used and tested. |
0c. | Testing Guide | Complex quality assurance for all platform features. Core functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. |
0d. | Article | We will publish an article that explains the functionality of the proposed pallet in this milestone. |
1. | Substrate pallet | Add hash data storage to the pallet. Update rpc module to interact with new data storage. Database optimizations. |
2. | Web application | Update web application with new data storage rpc. |
3. | Docker image | We will provide a dockerfile to demonstrate the full functionality of testing Substrate chain with integrated Database pallet. |
Future Plansβ
Further development (adding new data storages, indexing system, concurrency queries)
Community engagement
Also we want to realise this idea and integrate it as the core part of our project in the healthcare sphere βTrusted Health Councilβ. We have reached agreements with medical institutes in the field of further development of the project concept such as belgium "University of Antwerp" and russian "Pirogov Medical University" on the further development of the project, in particular, providing access to their databases, as well as the creation of specialized departments on the basis of institutes for the innovative development of universities, promotion, participation in healthcare exhibitions and advisors.
Additional Information ββ
The development of the prototype and initial research have been started with the personal funds. We have tried for a General Grant first, and decided to start with an Open grant Program relying on recommendation. Also we have applied for the Substrate Builders Programm and have proceeded with a general interview to iterate around steps going forward. We have also opened a dialogue with Blockchers & IPFS.