@duc, @0xkraken
Since you seem to be in charge of the Trustless Bridge/Bond Setup, I thought I would pass along some of my thoughts on the direction we should head towards with all this bridge business.
I propose creating a framework for,
Decentralized Collateralized Bridges
What are Bridges?
A bridge handles the shielding and unshielding of cryptocurrencies. Each individual integrated cryptocurrency has it’s own bridge.
BTC <-Bridge-> pBTC
XMR <-Bridge-> pXMR
ETH <-Bridge-> pETH
How can we Automate and Decentralize these Bridges?
To run a bridge, you need to be able to monitor transactions and interact with an external wallet of a particular crypto. You also need to have access to a Incognito Wallet with pVersions of that specified crypto. When users shield, they deposit into the external wallet, a Minting Proof is made, then the pVersion of the coin is sent out. When unshielding, the process happens in reverse.
What if we created a ‘bridge device’ similar to a pNode. This bridge device runs 24/7 and automates this process. Built in, the Device has a private incognito wallet key, and a private external wallet key.
This bridge would be 100% collateralized by the coin that it is bridging for. Meaning if it is bridging for BTC, then it must have BTC as collateral. The value of the external wallet combined with the incognito wallet must always equal the amount that is put up for collateral.
When someone adds collateral to the bridge, their incognito wallet in the bridge gets credited the same amount of coins but in pVersions. These can be minted when collateral is supplied.
When someone uses the Incognito App to request a shield address, one of these bridge devices gets selected to give it’s public external wallet address. A user deposits the crypto, and the device process’s the transaction and sends them a pVersion of the coin from the incognito wallet. This is an automated process and requires no effort. If for some reason the transaction is not made after the deposit was made, they forfeit an equal amount from their collateral, and a new device is selected to process the new transaction.
A bridge device can only be selected if it has enough collateral for the transaction. If for example a bridge device already recieved BTC in it’s external wallet, and sent out pBTC to keep balance. It can only be selected if the amount being shielded is less then or equal to (amount in collateral - amount in external wallet). However, for large transactions, i’m sure you could daisy chain multiple bridge devices if necessary. Same process in reverse.
Why Would people want to run Bridge Devices?
They can earn on transaction fee’s from unshielding.
The Idea:
These bridge devices can run many different wallets at once. With just a simple firmware update, a new wallet/bridge could be added. However it will only run bridges that it has collateral for.
Crypto communities of a particular coin can buy one of these devices and raise a large amount of capital to put as collateral. The collateral would be in the native coin, so if things get messy, you would be able to give people back their coins.
Possibilities:
Instead of making a new device, you could theoretically update regular nodes to handle this functionality. The bridge device is pretty similar to a node. It requires capital, and it processes transactions upon being selected. Only difference is that it would probably be used more often and it is now storing potentially large amounts of different crypto depending on the collateral that is supplied. Users don’t have to use this feature if they don’t want to. Realistically if a node operator has a sufficient amount of collateral, they can be the main bridge for a particular coin which is great for coin communities looking to join in.
Benefits:
Since bridging is decentralized, it would be almost impossible for a particular bridge address to get blacklisted. Incognito Bridge wallets would consist of thousands of different wallets from many different devices.
Technically Incognito could host their own bridge and have users submit collateral through a system like provide (crowd-sourcing). They would earn an APY based on the earnings from unshielding. Almost every coin would be available to earn from.
Problem Solving:
There are some problems to workout with this system.
For example, how are the bridges chosen? How do we daisy chain large transactions effectively? Where do we store the private keys for the collateral?
There might have to be a middleman server made to handle these problems.
- The bridge selection can work just like node selection, so that’s not to much of a problem, though a lot of tweaks would need to be made to verify states (A bridge could be maxed out and only allowed to be used for unshielding instead of shielding).
- For receiving large transactions, we would have to make it a 2 step process. A shielding address is generated by this middleman server, and then once the transaction is received it sends a multi address transaction to all the chosen bridges. Each bridge only accepting an amount they are allowed to process. The middleman server can connect to the bridges individually and send the incognito wallet address that needs pCoins to be sent to.
- The private keys would have to be stored by this middleman server. If the selected bridge doesn’t make the transaction, the middleman server would have to send the transaction again to a different bridge from the coins stored in the collateral wallet. This would also mean the middleman server would need read only keys from the Incognito wallets of each of these bridges to check if the transaction went through. Or at least be able to communicate with the bridges and ask for a response.
Obviously this is a lot of infrastructure and a big task, but I think it’s something worth pursuing as it would make the platform much better, safer, and private. As well as scaleable.