filecoin-project / consensus

Filecoin consensus work
Other
42 stars 5 forks source link

[Consensus] Finality #29

Closed sternhenri closed 5 years ago

sternhenri commented 5 years ago

Finality is key to reasoning about FIL security and usage in general. It is the point beyond which the chain can be assumed to be stable or final.

It is both a result of other design decisions, and can itself be used as a strategy to help achieve other guarantees.

Depends on

Construction ideas

Impacts bootstrapping: how does a new miner find which chain to mine on?

Related to https://github.com/filecoin-project/aq/issues/69, https://github.com/filecoin-project/aq/issues/19

sternhenri commented 5 years ago

Snow White Chapter 5 shows how they have done it and their results. Running this sim to get a good heuristic for "confirmation times" in EC implies a number of other parameters being set (eg block time). Hard proofs or additional tools to enforce finality will be a v2 improvement.

sternhenri commented 5 years ago

Adding here an idea from @whyrusleeping for posterity on how we might use finality to our advantage:

Given a block B, that has some number of blocks mined on top of it, if >50% of the miners in the power table of that block have mined blocks in a chain that includes B, then we can say that B is final and we can define a slashing rule that enforces this. This is effectively like collecting signatures of >50% of miners for a given block, except with no added communication overhead.

Note that this intuition is based on the premise that miners can't double commit (lest 50% not be enough), which may mean letting some confirmation type elapse to catch and punish double commits. Allows us to think about epoch based finality (or sliding window).

However, this may mean very slow convergence, again, per Why:

Given moderately decentralized power, getting to 50% of power mining on one chain takes quite a while 1000 miners with randomly assigned power takes ~550 blocks to hit that point

It may reduce given other means of proving double mining but that is a whole other issue

mhammersley commented 5 years ago

Blocked -- difficulty adjustment, block time, seed sampling. Implications into product. Needs brainstorm.

sternhenri commented 5 years ago

Closing in favor of https://github.com/filecoin-project/consensus/issues/51