-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Transactionless Relay-chain #323
Comments
The hardest aspect is staking/slashing. Given that parachain reversion can occur, moving staking and individual balances entirely onto a parachain will make it hard to do reversion without reverting slashing. This indicates to me that the relay chain will almost certainly have to manage balances of individuals, and whatever chain handles staking would be dealing in relay-chain DOTs. Still, reversion poses a challenge as it will cause the accounting to go out-of-sync. |
We've discussed this not so seriously occasionally. I though governance alone might be easiest but noticed these points: We do not engage in governance all the time, so a governance parachain slot is largely wasted unless the system is optimized for idle parachains. For this, we'd shift almost all parachain validator assignments from assigned validators to secondary checks, so like 1 or 2 validators assigned to each parachains and 5-20 secondary checks, or maybe some scheme with all secondary checks but one who announces early. We might want a governance parachain to run governance not just for the relay chain but for most other parachains, and to run parachain slot auctions, which sounds more complex. After launch, we could perhaps transition from relay chain governance to a governance parachain by introducing the governance parachain first to govern other parachains, and then add on the relay chain. |
I suppose the relay chain would handle parachain blocks, along with incoming and outgoing messages. Also, slashing would start with relay chain and eventually become a message to the staking chain. If we ignoring slashing related transactions, then we can tolerate almost arbitrary variance in block production time: X has produced a block for their upcoming slot time i. Y produces a block at slot time j<i. Assume i-j is small. Let P denote a parachain candidate in X's block. If Y included a candidate for P, then P cannot have time to build on Y's block, so X cannot be missing anything they might include for P, so X merely removes their candidate for P. If Y included a message for P, but not a block, then the candidate for P that X picked still builds on some previous relay chain block, and may thus be included by X when building on Y's block. In both cases, X could quickly convert their block into building upon Y's block by merely removing things, so an unusually short block update time i-j causes no problems for X. We also avoid excessively long block times by producing the extra low-priority "aura" blocks, like in aurababe, but now with a delay of many babe slots. |
The state-trie root update would be different, so the calculation would need to be redone. That's one of the heavier parts of block production |
Ahh, I'd naively imagined parachain candidates could only be addressed UTX0 style, but.. Yes, at least message (count) must be stored in some state-trie, only a rather shallow trie, but still.. |
incomplete, but still super stale (system parachains are a larger overarching concern. can reopen) |
This issue has been mentioned on Polkadot Forum. There might be relevant details there: https://forum.polkadot.network/t/multichain-friendly-account-abstraction/1298/1 |
This issue has been mentioned on Polkadot Forum. There might be relevant details there: https://forum.polkadot.network/t/the-future-of-polkadot-staking/1848/1 |
This would devolve the relay-chain to become a transaction-less chain, placing all public-interaction on special system-level parachains.
This has several advantages:
To implement this cumulus would definitely be required. In addition, we would need:
Root
origin.This will pave the way to offloading governance, staking, sessions and maybe even balances on to one or more parachains. There are three possible routes to doing this:
If we don't launch with this logic in parachains already then we might also want to have modules storage placed in their own child-trie by default in order to help eventual migration (both for deleting a large range of trie entries and allowing an efficient and secure import of the storage items into a fresh parachain).
CC @bkchr @rphmeier @cheme
The text was updated successfully, but these errors were encountered: