作者ripple0129 (perry tsai)
看板DigiCurrency
標題[閒聊] 還是沒搞懂比特幣如何計算私鑰餘額
時間Sat Mar 4 13:01:41 2023
一個比特幣私鑰可以產生大量公鑰
公鑰可以產生一堆地址
如果我使用比特幣錢包
基本上我創建一個錢包私鑰
然後用多個不同的地址去收款
錢包是如何加總我所有地址的餘額的?
----
Sent from
BePTT on my iPhone 13 Pro Max
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 75.157.229.193 (加拿大)
※ 文章網址: https://www.ptt.cc/bbs/DigiCurrency/M.1677906103.A.45D.html
推 MACD: 加總是前端做的事03/04 13:09
推 yyhsiu: 你自己不是都講完了…加法不就是機器最會做的事03/04 13:28
推 kugwa: 你的錢包知道這些地址都是你的啊03/04 13:47
→ kugwa: 當然其他任何人都不知道03/04 13:47
推 wahaha99: 我對這問題也不太懂 我猜是反正私鑰對這些地址都有控制03/04 13:58
→ wahaha99: 能力 所以餘額加總是自己錢包的事 鍊只管這些地址有錢03/04 13:58
→ wahaha99: 猜錯請指正03/04 13:58
→ ripple0129: 不是啊,地址無限多耶,怎麼全部加總03/04 14:58
推 GGylin: 交易有限阿 比特幣的區塊鏈 是記錄交易又不是記錄餘額03/04 15:03
交易有限,問題是我怎麼知道此筆交易的地址是屬於我這個私鑰的
推 DarkerDuck: UTXOs set是有限集合03/04 15:13
→ DarkerDuck: 直接看最後的餘額章節03/04 15:16
Account based用習慣了,UTXO真是很難理解,我支付一筆交易,背後整合我的UTXO來支付,
要使用哪些UTXO,這部分又是誰來決定的,礦工或是我的錢包軟體?我們使用者只是很直觀
的從我的地址支付到另一個地址,但是整個運作底層根本不是這樣XD
※ 編輯: ripple0129 (75.157.229.193 加拿大), 03/04/2023 15:46:35
※ 編輯: ripple0129 (75.157.229.193 加拿大), 03/04/2023 16:03:50
推 wahaha99: 不過除了稍微混淆一下追蹤者外 我是看不出太大意義 03/04 16:41
→ wahaha99: 畢竟這種交易方式很浪費資源不是嗎 03/04 16:41
→ ripple0129: 問了AI是錢包軟體來整合UTXO 03/04 17:56
→ ripple0129: XD 03/04 17:56
推 now99: 畢竟公開帳本,隱匿性也很重要 03/04 18:22
→ ofy: 是一個助記詞(Seed)能產生一堆公私鑰對,不是一把私鑰一堆公鑰 03/04 19:04
→ ofy: HD錢包內部通常會預生成約10~100個地址(公私鑰對) 03/04 19:04
→ ofy: 你的幣會從這裡加總,當有掃到使用紀錄(收付)時 03/04 19:04
→ ofy: 會往後多掃N個地址(依各錢包軟體不同) 03/04 19:04
→ ofy: UTXO花用那些input一般由錢包軟體自動以支出output額度決定 03/04 19:05
→ ofy: 不過你會手刻一樣能手刻,input=output(含找回)+fee 就行了 03/04 19:07
→ ofy: 只要你有能力給那些input有效簽章(有用到的地址私鑰) 03/04 19:10
→ ofy: 你花用同地址的兩筆input只要用該地址的私鑰簽章 03/04 19:13
→ ofy: 你花用不同地址的input,要用那些有用到的地址私鑰 03/04 19:13
→ ofy: 某種程度這也是多簽交易,少了一把交易就不成立無法上鍊 03/04 19:15
推 DarkerDuck: @wahaha99,UTXO這種顛覆傳統的記帳模式絕對才是 03/04 19:27
→ DarkerDuck: 中本聰最大的創見 (PoW也不算是中本聰獨立發明的) 03/04 19:28
→ DarkerDuck: 確保隱私性只能算是UTXO最不重要的優點 03/04 19:29
→ DarkerDuck: 可以說因為有了UTXO才讓Bitcoin有潛力變成 03/04 19:30
→ DarkerDuck: 全球通用的電子現金 03/04 19:30
推 DarkerDuck: *UTXO原生性只能被花一次,所以可以達成零確認支付 03/04 19:33
→ DarkerDuck: 而account-based則一定要等待確認,甚至是多個確認 03/04 19:38
→ DarkerDuck: 以BCH的日常支付來說,三秒等待double-spend proof 03/04 19:39
→ DarkerDuck: 就已經非常安全,至於BTC被啥anti-feature搞自行研究 03/04 19:40
推 DarkerDuck: *UTXO因為是stateless,對於全球擴容有極大的優勢 03/04 19:42
→ DarkerDuck: 礦工不在乎各錢包甚至是各地址的狀態,就可驗證。 03/04 19:44
→ DarkerDuck: 因為礦工驗證的是UTXO狀態而不是address或wallet狀態 03/04 19:46
→ DarkerDuck: 甚至有能力達成硬體化的平行驗證,達成極大的TPS 03/04 19:47
→ DarkerDuck: 只要有利益,要讓礦工在TPS上再現算力的指數增長根本 03/04 19:54
→ DarkerDuck: 小菜一蝶,實在無法想像為什麼現在卡在這邊了 03/04 19:55
→ DarkerDuck: 而儲存空間也不成問題,前面已經講過礦工只在乎UTXO 03/04 19:56
→ DarkerDuck: 所以歷史狀態都可驗證完後被丟棄。 03/04 19:57
→ DarkerDuck: Bitcoin白皮書第八章提到的SPV錢包也必須依靠UTXO 03/04 20:01
→ DarkerDuck: 現在的web3錢包並非是trustless,他必須有可信的RPC 03/04 20:02
→ DarkerDuck: 但中本聰提出SPV錢包可以獨立驗證自己的交易是否可信 03/04 20:02
→ DarkerDuck: 是一種真的可以在客戶端truetless又去中心化的錢包 03/04 20:03
推 wahaha99: 感謝回應...我消化一下 03/05 00:41
推 wahaha99: 想了一下,stateless做到0確認的前提是用的node可信吧? 03/05 02:48
→ wahaha99: 應該說,要多次確認除了店家怕遇到假帳與雙花,鍊也怕分岔 03/05 02:49
→ wahaha99: 歷史狀態驗證完就丟棄...那不就沒用到區塊鍊了? 03/05 02:51
→ wahaha99: 只存在於pool的概念? 03/05 02:51
→ DarkerDuck: 要做到接受零確認支付的確前提是必須是well-connected 03/05 03:13
推 DarkerDuck: 而Bitcoin錢包預設就會和多個全節點"同時"連接 03/05 03:14
→ DarkerDuck: 通常會是六個,也就是這六個節點必需共謀日蝕攻擊 03/05 03:15
→ DarkerDuck: 這難度比連到一個不可信的節點還來的高太多 03/05 03:15
推 DarkerDuck: 原始區塊鏈是一種timestamp server的觀念 03/05 03:19
→ DarkerDuck: 對於一個已經在線上一直運作的節點而言 03/05 03:19
→ DarkerDuck: 已經驗證過的區塊以後就不會再驗證一次 03/05 03:19
→ DarkerDuck: 當然沒必要留在硬碟占空間,但是區塊鏈還是會一直增長 03/05 03:20
→ DarkerDuck: 一直都會有新的區塊需要驗證 03/05 03:21
→ DarkerDuck: 而且無論如何一定還是要有一些archieve node 03/05 03:21
→ DarkerDuck: 讓一些新加入的驗證節點,有需要的時候可以從頭驗證 03/05 03:22
→ DarkerDuck: 一定還是會有一些節點儲存完整的區塊鏈 03/05 03:22