Dock is a data exchange protocol designed to keep users in control of their own data at all times with cryptographic guarantees about data integrity and flow. The concept is two-sided. On one side, Dock provides an option for internet users to free themselves from the centralized, monolithic, data-hungry organizations that keep user data hostage in well-guarded silos. At the same time, it provides an option for progressive companies to build services where data exchange between companies is incentivized to break the data silos. Across the board, this data exchange is always controlled by the users’ permission of their own data.
We have been working towards this mission on both the blockchain side, which is the core infrastructure layer to realize the Dock vision, as well as on the user side with a working App for users and APIs for partners to get initiated with the Dock vision.
The biggest challenge that we face, like many other projects that want to use blockchain at scale, is to architect a scalable solution to implement the Dock protocol. A lot of projects on various major blockchains are working on different approaches and we compared a few for our use case in an earlier post. Since then we have successfully developed a POC rooted in a Plasma Cash-based approach.
In this post we will discuss our goals and findings from the POC as well as discuss how it all works together to solve the scalability problem for our use case. We will also share some of the challenges and the road ahead of us.
Dock POC Goals
The main goal of the Dock protocol blockchain POC was to test the feasibility and benefits that we hypothesized a Plasma Cash based solution might bring to our use case. The ERC-721 token has unique properties so we also wanted to demonstrate how we can leverage it in our solution.
Below are the POC goals we defined:
- Substitute generic ERC-20 for DOCK tokens to purchase ERC-721 tokens.
- Demonstrate that all data exchange logic can be carried out by using ERC-721 token.
- Allow participants to exit the Plasma node and exchange the ERC-721 tokens back to ERC-20 token.
- Implement a ERC-721 UTXO handler off chain in the plasma node.
- Implement a basic Transaction validator for the settlement process pertaining to the data exchange workflow.
- Implement a scalable solution of a happy case scenario using a single trusted node.
- Ethereum Mainnet Contract: The hook for the participants of the system to trust the off-chain Plasma node.
- Plasma Cash Layer: Provides the ERC-721 token manipulation in response to data exchange between participants.
- Dock Workflow Manager: The agreement between parties and user’s sign off for data exchange is recorded in this layer.
Let’s look at each layer in more detail:
1. Ethereum Mainnet Plasma Contract
This contract has the following major functions:
- Provide the entry point for participants into the system
- Ability to transfer ERC-721 tokens between participants
- Ability to withdraw Dock tokens
- Exit for participants from the Dock system
- Whenever the proof chain for delta of off-chain transactions is submitted by the Plasma node.
- When the participants exit the Dock system after withdrawing all their Dock tokens.
- Onboard new participants listening to entry events from Mainnet contract
- Serve as Transaction validator
- Maintain ERC-721 UTXO sets
- Provide ability to settle data exchange transaction payments off-chain
- Add persistent state storage
Comments or questions about our POC? Feel free to directly email the team working on it at [email protected] We love hearing your feedback!
You can also: