Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

About Fork Choice Rule Problem #2

Open
AndrewYEEE opened this issue Mar 12, 2018 · 0 comments
Open

About Fork Choice Rule Problem #2

AndrewYEEE opened this issue Mar 12, 2018 · 0 comments

Comments

@AndrewYEEE
Copy link

在casper_note.md筆記中"補充"部分有一段描述:
"''考慮一種狀況,如下圖,我們有個提案機制在 epoch=0 時,提出 Hash0,在 epoch=1 時,提出 Hash1,Hash1 指向 Hash0,但在某種緣故下,沒有任何足夠的 PREPARE 來達成 COMMIT。此外,因為故障的原因,提案機制對 epoch=0 提出 Hash0',這使得 Hash0' 獲得三分之二的聲明,二分之一的提交。

現在,提案機制可能發生兩種狀況,一種是繼續生成 Hash2 和 Hash3,但沒有哈希會被提交,除非有六分之一的人被懲罰條件給消減。另一種情形是,提案機制繼續提出 Hash1',但 Hash1' 無法被確認,因為 Hash1 掌握了二分之一的 prepare 所以他無法拿超過三分之二,提案機制繼續提出 Hash2',而這次 Hash2' 有可能被終結,提案機制會繼續提案繼續運作。""
image

關於這個問題有幾個不懂的地方:

  1. 這個假設中epoch 0 中的HASH0已經得到finalized了嗎?
  2. 為何出現故障後,提案機制可以針對epoch 0 再次提出 Hash 0'? 這樣是不是說提案機制可以任意的回朔到某個epoch提出新的Hash?
  3. 如果Hash 0 已經finalized,那為何Hash 0' 還可以拿到2/3個prepare呢? 這樣不是違反NO_DBL_PREPARE嗎?
  4. 文中說的 "除非有六分之一的人被懲罰條件給消減,才會有新的HASH被提交(commit)" 這裡我不太懂,這裡指的新的Hash是指hash 0'還是hash 1?

我還有另一個情景的問題:
文中 "不失一般性,考慮 e2 > e1 的狀況,因為有 PREPARE_REQ 的限制,表示在 C2,有三分之二的驗證者在 e2' < e2 的時期做了 prepare,同理,可以回推到 e2" 的時期" 這段提出了兩個對應情景:

  1. e2*=e1
  2. e2*<e1

而我另外又針對e2*=e1想了另一個情況:
(我自己想的)e2*=e1: 但這次c1和c2*在相同的epoch下,皆沒有prepare超過2/3,而此時提案機制在c2 HASH提出了c2_new HASH,接在c2後面,而此時c1已經達到2/3prepare並commit,而因為c1已經達到2/3prepare,因此投c1的validator可以去投c2_new而沒有違反PREPARE_REQ,因為他們投的epoch階段已經達到2/3prepare,而之後超過2/3的validators投c2_new prepare並commit,那此時c2不是沒有prepare成功但c2_new卻commit?

謝謝~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant