How do compressed cores work in agile coretime?

In this doc it is mentioned that compressed cores can reduce latency at the expense of bandwidth. Does this mean that rather than a core having a 6s block time and 1k TPS it could have a 0.6s block time at 100 TPS?

How does this technically work-- how do transactions on compressed blocks get finalized prior to being finalized on the relay chain? Wouldn’t there have to be validators validating every 0.6s per my example?

Would this enable Polkadot to potentially compete with low-latency blockchains such as Solana?

One core always has the same computational resources and the same bandwidth. But each Core is only doing validation work every 6 seconds for in maximum 2 seconds. This brings you the latency of 6 seconds. If you want to get faster feedback, your application could build faster blocks. Like you proposed every 0.6 seconds. In the end you combine then 10 of your 0.6 seconds blocks into one PoV that you send to the relay chain. The relay chain will then use the assigned core to validate your PoV. For the user perspective you get feedback faster, because you trust the collator that it build a valid block. However, ultimate truth is then coming from the relay chain after it has validated your blocks.

They don’t, or better it depends on what you call finality :wink: If you mean “ultimate finality” as provided by the relay chain, then no you can not finalize these txs/blocks before the relay chain has done it. Basically the relay chain in finalizing on the core level. If the output of a core was included in the relay chain block and this relay chain block was finalized, your PoV and all its blocks/txs are finalized. This takes around 12-18 seconds.
However, you can also get “weak finality” by saying that a transaction was only included in a block by a collator. The point being, it is very unlikely that this transaction then will get reverted, but yeah depends on if there exists forks etc.

In the end it all depends on what your application is doing. If you for example have a social network and want to record a like, waiting for the transaction to enter the transaction pool is probably good enough (one like maybe getting lost isn’t that bad). If you are a payment provider and you want to report back on a small transaction < 50$ for example, waiting for the transaction to be included in a block sounds totally valid. Then, for bigger amounts you may actually wait for finality or at least for the block getting successfully validated by the relay chain.

If you ask me, yes you can compete with Solana. As I explained above, it really depends on what your application is doing and what level of security you need. For better security, you just need to wait longer :wink:

3 Likes

Excellent thanks for the detailed answers-- it makes sense to me now. I guess there is risk that a collator may get corrupted, but it is unlikely as you mentioned.