-
Notifications
You must be signed in to change notification settings - Fork 3
Description
In an effort to support stablecoins on GoChain, backed by existing stablecoins on Ethereum (USDC, TUSD, PAX, etc), I propose the following cross chain transaction concept, aka GOST Protocol, to be built into GoChain. This concept keeps the transfers decentralized as the protocol is built directly into GoChain and requires all nodes in the network to participate. Tokens can be transferred to GoChain and transferred back to Ethereum at any time. This would make GoChain one of the first (if not the first) truly interoperable blockchains.
Why Move Tokens to GoChain
Much faster transaction speeds, supports much higher transaction volumes and much lower fees that can support day-to-day purchases such as buying coffee or playing games.
Fees
As of right now, the average transaction fee for Ethereum is $0.15:
And the average transaction fee for Bitcoin is $3.66:
Those fees are much too high for day-to-day transactions. You can't use it as payments for coffee if the fee costs just as much as the product.
Speed
Similarly you can't buy coffee if customers have to wait at the cashier for minutes or hours. GoChain transactions are almost always under 5 seconds.
Bitcoin typically takes a minimum of 10 minutes for a single block confirmation since block times are 10 minutes. It's usually longer since the network is typically congested. Ethereum block times are 15 seconds which is a vast improvement over Bitcoin, but the problem is the Ethereum network is also almost always congested so it typically takes minutes for a transaction to make it into a block.
Here is an example of two transactions at the same time performed at a random day/time on GoChain and Ethereum. Ethereum took 3 minutes 29 seconds to make it into a block while the GoChain transaction took 1 second.
Cross Chain Consensus
Consensus so far in blockchains has been limited to agreement on a single blockchain (ie: the database). There is no reason why consensus has to be restricted to a single data set. GOST Protocol works by the GoChain node network coming to consensus on both GoChain data and another chain's data (Ethereum to start). After a certain number of blocks have passed, we can be fairly certain that the data is set in stone and can no longer be modified, much like exchanges accept transactions after a certain number of block confirmations.
Transferring Tokens to GoChain
Each token on GoChain represents exactly one of the same token on the original chain. Let’s use USDC in this example. Transferring to GoChain requires two steps:
- User deposits X USDC to a special smart contract on Ethereum - GOST-C1 (very similar to a multi-sig wallet)
- GoChain nodes monitor this contract for transactions
- If a transaction is found, the nodes will wait X blocks for confirmation (30-60)
- After confirmation, a minting transaction is confirmed. X USDC on GoChain (USDC? GOUSDC? GOUSD?) is minted in an ERC20/GO20 token contract on GoChain to the original depositors address
Transferring Tokens back to Ethereum
User has to burn tokens on GoChain to get the original tokens back. This could work the following way:
- User sends a burn transaction tx3 to burn tokens in in the token contract on GoChain (can include extra data such as a withdrawal address on Ethereum)
- GoChain nodes accept the burn transaction, tx3, immediately removing the tokens from circulation
- After X (30-60) block confirmations, each node sends in a transaction to the GOST-C1 wallet on Ethereum which says to transfer the funds to the address in tx3
- Once a high percent of nodes (75%?) submit their transaction, the transaction proceeds and the tokens are transferred to the user
Future
Beyond this initial use case, this paves the way for massive scalability increases for GoChain by enabling multiple GoChain networks to work together. GoChain -> GoChain transactions means we can create any number of GoChain shards which can then transact across each other.