Disposable Parachains (for Airdrops and other ideas)

Who would pay for it? The teams?

Yes. Teams looking to benefit from these airdrops would pay the super low costs for blockspace that Polkadot offers.

It could also be designed that users pay the costs for blockspace through transaction fees included in the blocks, if the chain becomes popular enough.

I think chain forks look important too, especially for validator ellections.

A chain fork would copy the entire state of one or more parachains, like say AssetHub, onto new collators or new processes on the same collators, and launch a new parachain with that state root in a subtree. After which, they launch the parachain using modified code, which say runs the validator ellection, and then the final block and/or state gets used elsewhere.

Airdrops could use a chain fork if they really wanted everyone. A priori, air drops should use off-chain messages, so a chain fork saves the complexity of user code doing cross chain proofs, but that’s likely minor. A chain fork would not save “worse case” computation over off-chain messages, since the “worse case” merkle proofs work out similarly.

Instead, chain forks would more likely fit heavy computations, or multi-party computations like maybe resharing DKGs, although not sure even there.

As an aside, you can simulate JAM’s accumulate function on existing pokadot using chain forks btw, by having an asynchronous accumulate function in the original parachain, which merges the computation from the forked parachain back into the main parachain. “Asynchronous accumulation” like this winds up like 30 x cheaper than JAM’s accumulate, does not impose the restrictive runtimes, and supports multiple relay chains better. Anything “asynchronous” like this winds up being harder to program for though. In particular, you need some locking mechanism for “must merge” computations, just like off-chain messaging requires more work to be “must deliver”. JAM’s synchronous accumulate would inherently be “must merge”, just like on-chain XCM are inherently “must deliever”.

How do you will know, from the original parachain view, that the forked parachain is unique and in a valid state to be merged back? Will it be a continuous process committing state roots in some kind of accumulator (MMR, double-batched merkle,…) from the fork to the mainline, without witness and function to validate the witness and transition of state or how?

It’s being validated by polkadot, using some runtime you control, so it’s ready whenever it says so, and gets included in teh relay chain.

Got it! :smile: