官术网_书友最值得收藏!

4.1 技術的邊界

人們在設計一款新產品時,都必須了解當下技術的邊界:哪些技術已經可以完全使用了,哪些技術還要等待一段時間。對于需要等待的技術,人們不得不在之后再進行考慮。當然,科學和技術有一些不同,科學研究可以給出理論上的極限邊界,而從工程設計的角度更多考慮的是如何在大概率情況會出現的大致邊界內,整體上做到最好。這類似于一種優化問題,需要知道給定的約束條件,才能正確地求解。

就共識機制而言,前人的研究已經給出了兩個重要的邊界:

● Fischer-Lynch-Paterson定理:它證明了在一個多進程的異步系統中,只要有一個進程不可靠,那么就不存在一個協議,此協議能保證有限時間內使所有進程達成一致;

● CAP原理:分布式計算系統不可能同時確保一致性(Consistency)、可用性(Availability)和分區容忍性(Partition tolerance),設計中往往需要弱化對某個特性的保證。

其中一致性是指系統中服務節點對于處理結果達成的一致;可用性是指在有限時間內,任何非失敗節點都能應答請求;分區容忍性是指網絡可能發生分區,使得節點之間的通信得不到保障。

科學家認為在分布式場景下達成完全一致性是不可能的,但是工程上的許多問題的解決,都在于如何進行合理地取舍,可以犧牲一部分代價來換取分布式場景的一致性。目前,基于區塊鏈設計的各種共識機制的不同主要來源于以下兩個方面:

第一、算法假設的條件不同。如Paxos、Raft等算法假設節點不會故意發送錯誤的消息,這是一個比較強的條件。在比特幣使用的PoW共識機制的前提條件是并不預先知道系統內有多少記賬的節點,而聯盟鏈里常使用的PBFT等協議則假設節點需要許可。

第二、付出一些代價以換取一定程度的一致性。例如根據CAP原理,弱化可用性,在系統故障時拒絕服務,Paxos、Raft等算法就是弱化了可用性來保證結果的一致性。再如比特幣犧牲了一部分容錯性(有可能出現分叉),但是保證了整個區塊鏈系統在一定時限后的一致性。

算法當然不是萬能的,它的邊界決定了必須要引入一些其他的激勵和約束機制來使得整個系統正常工作。在基于PoS(Proof of Stake,權益證明)的區塊鏈項目中,創建新的區塊并不需要消耗算力,而節點作惡也并沒有什么懲罰;對于一個節點來說,利益最大化的選擇是在多條鏈上同時挖礦,這會造成嚴重的分叉現象,一般需要針對這些情況引入額外的規則,如加入懲罰的協議等。

主站蜘蛛池模板: 苏尼特左旗| 玉龙| 灵武市| 清丰县| 昌乐县| 乐平市| 高雄市| 渝北区| 巴里| 合作市| 中江县| 宜春市| 黄陵县| 清流县| 宁陕县| 沙湾县| 阳曲县| 桂阳县| 广西| 密云县| 周口市| 南丹县| 田林县| 庆阳市| 乡宁县| 通海县| 苗栗市| 汉源县| 花垣县| 濮阳县| 宜丰县| 萨迦县| 年辖:市辖区| 普定县| 潮安县| 信丰县| 白山市| 保定市| 霍城县| 察隅县| 曲周县|