如何知道Bitcoin Wallet有多少錢?

2021-08-20 00:15:14 字數 3295 閱讀 9847

bitcoin network 大致上有兩種

node

:如果只有

full node

,那我們就不用去想設計

merkle tree

,以及後來的

bloom filter

,那麼這個世界就簡單多了。但為了要讓

bitcoin wallet(錢包)

可以通行所有裝置,特別是手機,

spv node

就很重要了,不然就需要

100g

以上空間存放整個

blockchain

,這是不可行的。

自從中本聰的

bitcoin p2p network

**,2008

年橫空出世之來,他就**到,將來必定是

spv node

盛行,所以他很早就提出了

spv (simplified payment verification)

的概念。

而後來2012

年提出的

bip37 - connection bloom filtering

,是基於

spv的概念,用

bloom filter

,提出乙個更加可行的方案出來。

本篇先為這個問題:「

bitcion wallet

如何知道有多少

utxo

?」,提供簡單的回答。

我們知道,

wallet

只存所有的

block header

,而沒有全部的

transaction

,最多隻存屬於自己的

transaction

。一開始,連

block header

都沒有的情況下,如何知道

wallet

有些utxo(unspent transaction output)

呢?它要去問具有完整帳本

(blockchain)

的peer

。問的方式有兩種:

(blockchain)

後自己從裡面去找

方法二:向

peer

公開wallet

的所有訊息,

peer

就回傳屬於該

wallet

的utxo

方法三:向

peer

公開wallet

的部份訊息,

peer

回傳可能屬於該

wallet

的utxo

這個問題,講白一點,就是:「我想知道錢包有多少錢?」

要知道真實的錢包有多少錢,直接開啟來數一下就行了。

bitcoin wallet

,是電子錢包,執行的時候,會顯示目前的餘額,斷電的時候,不需要儲存餘額,因為下次重啟的時候,只要去問就好了。根據什麼來問?

wallet

惟一需要存放的,是一組

private keys

,被安全存放在晶元裡,可能是

secure element

或trust zone

。這一組

key是別人獲取不到的,甚至

自己也獲取不到。

wallet

的安全晶元,可以從

private key

去推算出

public key

。這個public key

可以視為

address

。有時候

address

是從public key

被hash

兩次算得來的。

我們把address

視為銀行的帳號。所以別人要給我

bitcoin

,我就要將

address

給別人,請他將錢匯到這個帳號,就行了。

回到原來的問題「我想知道錢包有多少錢?」

(blockchain)

,然後自己從裡面去找

這種方法,最簡單,但耗費的網路頻寬最多,至要要傳輸

100g

以上的資料量。因為

wallet

沒有向peer

表明,那些

address

屬於wallet

,所以peer

當然不知道那些

address

屬於wallet

。我們無法從

blockchain

存放的address

,往回推導出是從那乙個

wallet

產生出來的。所以

peer

只好將blockchain

一股腦傳給

wallet

,讓wallet

自己去找。

優點:結果精確,保留隱私

缺點:浪費頻寬

方法二:向

peer

公開wallet

的所有訊息,

peer

就回傳屬於該

wallet

的utxo

wallet

向peer

公開所有的

address

,可是這樣一來,就洩露隱私。

peer

拿到address

,就回報屬於該

wallet

的utxo

,及所屬的

block

。根據中本聰的**,此

block

不會自帶所有的

transaction

,而是merkle path

。優點:結果精確,簡省頻寬

缺點:洩露隱私

方法三:向

peer

公開wallet

的部份訊息,

peer

回傳可能屬於該

wallet

的utxo

wallet

向peer

公開部份訊息,以

bloom filter

呈現。peer

拿到bloom filter

,就回報「可能」屬於該

wallet

的utxo

,及所屬的

block header

,及merkle path

。因為bloom filter

沒有直接呈現

address

,所以保留了一點隱私。

但是bloom filter

,的特性是:

優點:保留一定程度的隱私,簡省頻寬

缺點:結果不精確

(但可接受

)-count

知道視窗控制代碼如何知道檔名

知道視窗控制代碼如何知道檔名?delphi windows sdk api 知道視窗控制代碼,怎麼得到該程式的檔名?先通過getwindowthreadprocessid取得視窗所屬程序的pid,再通過列舉系統程序,得到該程序的檔名。列舉程序可以通過系統快照 createtoolhelp32snap...

不知道如何提筆。

奔三的人了,雖然心態還不算老,但事實是殘酷的。今天的路何去何從。我真的看不太清。自己看好的方向卻很難找到機會。迫於生活的壓力只能將就了乙個比較接近的。但我就一普通人,看不清未來。現在就是堅定信念,在現在的領域努力。我相信,只要付出比別人多的努力,那麼機會就會光顧我的。堅信。總結下這個禮拜的學習內容。...

如何知道Apache的連線數目

統計httpd程序數,連個請求會啟動乙個程序.netstat nat grep i 80 wc l 452netstat an 會列印系統當前網路鏈結狀態.grep i 80 是用來提取與80埠有關的連線的,wc l進行連線數統計.netstat na grep established wc l 1...