Bloom Filter 的數(shù)學(xué)原理和在區(qū)塊鏈里的應(yīng)用

布隆過濾器(Bloom Filter),可以不用知道一個(gè)塊里的所有交易數(shù)據(jù),而只用下載很少的數(shù)據(jù),就能知道一個(gè)交易是否在一個(gè)塊里(如果在塊里,那么一定告訴你在塊里,如果不在塊里,有很小概率告訴你在塊里). 算法的設(shè)計(jì)的還是很妙的,值得去學(xué)習(xí)一下這種概率型算法思維。

原理:

Step1 :

假設(shè)一個(gè)塊有n個(gè)交易,那么做一個(gè)m=2*n長度的bit array,這里稱為A

用一個(gè)hash函數(shù)把交易映射到A的響應(yīng)位置x=hash[transaction], 并設(shè)置A[x]=1。并不處理沖突的情況。

那么查交易的時(shí)候,如果交易在塊里的話A[hash[transation]]一定為1,

如果不在塊里的話,A[hash[transaction]]為1的概率<=1/2 (因?yàn)锳的長度m=2*n)。

現(xiàn)在這個(gè)算法的問題是1/2的誤報(bào)概率太大了。

Step2:?

做多個(gè)bit array, A1, A2 ... Ak.?

先看兩個(gè)bit array的情況: 用個(gè)兩個(gè)不同的hash函數(shù)來填充A1,A2.

對一筆不在塊里的交易,A1,A2相對應(yīng)位置都為1的概率是1/2*1/2= 1/4,優(yōu)化了很多

假設(shè)用10個(gè)bit array, 那么誤報(bào)的概率為(1/2)^10 = 1/1024,是一個(gè)非常小的數(shù)字。

也就是說為了達(dá)到p的誤報(bào)率,就用log2(1/p)個(gè)bit array就可以了

通過記錄這些很少的hash數(shù)據(jù),比特幣的輕錢包可以快速定位交易在哪個(gè)塊里。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 貨幣的演變——從貝殼到比特幣 當(dāng)社會分工產(chǎn)生之后,人類就產(chǎn)生了商品交換的需求。在貨幣被發(fā)明之前,人類是以以物換...
    longlee閱讀 7,934評論 1 23
  • 價(jià)格肯定取決于供求關(guān)系,當(dāng)你的用自己的時(shí)間為別人提供了有用的價(jià)值,并且你提供的答案獨(dú)一無二的話那你的時(shí)間就會值錢...
    falseplanet閱讀 175評論 0 1
  • 曾經(jīng)在網(wǎng)上看到說,人的意志是有限的,所以在一個(gè)時(shí)間段,只能干一件事情,比方說,減肥和考研,這兩者就不要在同個(gè)時(shí)間進(jìn)...
    舟?閱讀 815評論 0 0
  • 就像聽馬頔Intor口白版是會讓人聽到流淚的就像天冷我想為你親自帶圍脖是奢望的就像每次玫瑰花酥餅想跟你分享都是想想...
    橙兮閱讀 358評論 0 1
  • 公主從小深閨宮殿,偶得一次出城,路遇一老式溜冰場,場內(nèi)偌大的音響播放著叛逆的音樂,充斥著自由的氣息,于是公主走進(jìn)去...
    超人姐姐閱讀 314評論 0 0

友情鏈接更多精彩內(nèi)容