比特幣知識庫

Bitcoin Knowledge

簡單的 Q & A :

名詞解釋:

  • 地址(address):

    比特幣的地址看起來是這樣的: > 1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV。它由一串字母和數字組成。它實際上是一個公共密鑰160位哈希的base58check編碼版本。就像你讓別人給你發電子郵件一樣,你也會讓別人把比特幣發給你的一個比特幣地址。

  • 比特幣改進建議(bip):

    比特幣改進建議,比特幣社區的成員們提交了一套改進比特幣的提議。例如,BIP-21提議改進比特幣統一資源標識(URI)方案。

  • 比特幣(bitcoin):

    貨幣單位(coin)的名稱、網絡和軟件。

  • 區塊(block):

    以時間戳為標記的一組交易,以及上一個區塊的指紋。區塊的頭被進行哈希運算以產生工作證明,從而驗證交易。有效的區塊在網絡上達成共識後被到主區塊鏈中。

  • 區塊鏈(blockchain):

    一系列經過驗證的區塊組成的列表,每個區塊都鏈接到它的前一個區塊,一直到創世區塊。

  • 拜占庭將軍問題(Byzantine Generals Problem):

    一個可靠的計算機系統必須能夠處理它的一個或多個組件的故障情況。失敗的組件可能表現出一種經常被忽略的行為,即向系統的不同部分發送衝突信息。 處理這類失敗的問題抽象地表述為拜占庭將軍問題。

  • 幣基(coinbase):

    一種特殊的字段,用作幣基交易的的唯一輸入。coinbase允許聲明區塊獎勵,並可提供最多100字節的任意數據。 不要與幣基交易(coinbase transaction)混淆。

  • 幣基交易(coinbase transaction):

    區塊中的第一筆交易。通常由礦工創建,包含一個幣基。 不要與幣基交易(coinbase)混淆。

  • 冷存儲(cold storage):

    指的是保持比特幣的離線儲備。當比特幣私鑰被創建並存儲在安全的脫機環境中時,就可以實現冷存儲。對持有比特幣的人來說,冷存儲很重要。網絡計算機容易受到黑客攻擊,不應該用來儲存大量比特幣。

  • 彩色幣(colored coins):

    一個開源的比特幣2.0協議,允許開發者利用比特幣區塊鏈的功能創建數字資產。

  • 確認(confirmations):

    一旦交易包含在一個區塊中,它就有一個確認。只要有另一個區塊在同一個區塊鏈上開採,交易就會有兩個確認信息,依此類推。六個或更多的確認被認為足以證明交易無法撤銷。

  • 共識(consensus):

    當幾個節點(通常是網絡上的大多數節點)在其本地驗證的最佳塊鏈中都具有相同的塊時,即達成共識。 不要與共識規則(consensus rules)混淆。

  • 共識規則(consensus rules):

    完整節點遵循的塊驗證規則,為了與其他節點達成共識。 不要與共識(consensus)混淆。

  • 挖礦難度(difficulty):

    一個全網範圍的配置,控制需要多少計算來產生工作證明。

  • 難度重新計算(difficulty retargeting):

    每產生2,016個塊,全網重新計算一次挖礦難度,並考慮先前的2016個塊的哈希計算能力。

  • 難度目標(difficulty target):

    使網絡中平均10分鐘生產一個區塊的難度。

  • 雙重支付(double-spending):

    雙重支付是將某筆前成功花費一次以上的結果。通過驗證每個添加到區塊鏈的交易來確保交易的輸入先前沒有花費,比特幣可以防止雙重支出。

  • 橢圓曲線數字簽名算法(ECDSA):

    ECDSA (Elliptic Curve Digital Signature Algorithm)是比特幣使用的一種加密算法,以確保資金只能由其合法所有者使用。

  • 額外的隨機數(extra nonce):

    隨著困難的增加,礦工經常循環遍歷所有40億個臨時值,仍沒有產生區塊。因為幣基(coinbase)腳本可以存儲2到100個字節的數據,所以礦工開始使用這個空間作為額外的隨機數空間,允許他們探索更大範圍的區塊頭數據以找到有效的區塊。

  • 交易費(fees):

    交易的發起人通常會向網絡提供交易處理的費用。大多數交易需要0.5mBTC的最低費用。

  • 分叉(fork):

    分叉,或意外分叉,當兩個或兩個以上的塊具有相同的塊高度時發生,導致區塊鏈分叉。通常發生在兩個或更多礦工幾乎同時發現礦塊時,也可能作為一種攻擊方式發生。

  • 創世區塊(genesis block):

    區塊鏈中的第一個區塊,用來初始化加密貨幣。

  • 硬分叉(hard fork):

    硬分叉(Hard fork),也叫做硬分叉更改(Hard-Forking Change),是區塊鏈中的一種永久分歧,通常發生於未升級的節點無法驗證升級節點創建的區塊時。 不要與分叉(fork),軟分叉(soft fork),軟件分叉(software fork)或Git分叉(git fork)混淆。

  • 硬件錢包(hardware wallet):

    硬件錢包是一種特殊類型的比特幣錢包,它將用戶的私鑰存儲在安全的硬件設備中。

  • 哈希(hash):

    一些二進制輸入的數字指紋。

  • 哈希鎖(hashlocks):

    哈希鎖是一種限制一筆輸出在指定的數據公開前不能被消費的財產留置權。哈希鎖非常有用,一旦一把哈希鎖被打開,任何其他使用相同密鑰保護的哈希鎖也會被打開。這使得我們可以創建多個輸出,這些輸出都被同一個哈希鎖留置,並且可以在同一時間變成可消費的。

  • 分層確定性協議(HD protocol):

    分層確定性(HD)密鑰創建和傳輸協議(BIP32),允許從層次結構中的父密鑰創建子密鑰。

  • 分層確定性錢包(HD wallet):

    使用分層確定性(HD Protocol)密鑰創建和傳輸協議(BIP32)的錢包。

  • 分層確定性錢包種子(HD wallet seed):

    HD錢包種子或根種子是一種可能很短的值,用於生成HD錢包的主私鑰和主鏈代碼的種子。

  • 哈希時間鎖定合約(HTLC):

    哈希時間合約(Hashed TimeLock Contract)或HTLC是一種支付類型,它使用哈希鎖和時間鎖來要求一筆支付的收款方要麼在指定日期之前通過生成加密收款證明,要麼放棄接受支付的權力,將其返還給支付方。

  • 瞭解你的客戶(KYC):

    瞭解你的客戶(Know your customer,KYC)是一項企業活動,表示識別並驗證它的客戶。該術語也用於指代管理這些活動的銀行法規。

  • LevelDB:

    LevelDB是一個開源的基於磁盤的鍵值存儲引擎。LevelDB是一個用於持久化存儲的,輕量級的,單用途庫,與許多平臺綁定。

  • 閃電網絡(Lightning Networks):

    閃電網絡是帶有雙向支付渠道的哈希時間鎖合約(HTLC)的建議實現,其允許多筆支付在多個點對點支付渠道上安全路由。這樣就可以形成一個網絡,網絡中的任何一點都可以向任何其他點發起支付,即使他們之間沒有直接通道。

  • 鎖定時間(Locktime):

    Locktime, 或者更專業地叫做nLockTime, 是交易的一部分,它表明該交易可能被添加到區塊鏈時最早的時間或最早的區塊。

  • 內存池(mempool):

    比特幣內存池(memory poll)是經過比特幣節點驗證但尚未確認的所有交易數據的集合。

  • 默克爾根(merkle root):

    Merkle樹的根節點,區塊頭必須包含一個有效的merkle根,根據該塊中的所有交易生成。

  • 默克爾樹(merkle tree):

    通過計算每對兒數據(樹葉)的哈希值構建的樹,然後再對結果進行配對和哈希,直到只剩一個哈希值,即merkle根。在比特幣中,葉子幾乎總是來自單個塊的交易。

  • 礦工(miner):

    是指一個網絡節點,通過重複哈希計算,來尋找新區塊的有效工作證明。

  • 多重簽名(multisignature):

    多重簽名(multisigature)是指要求多個密鑰授權比特幣交易。

  • 網絡(network):

    一個點對點網絡,用於將交易和數據塊傳播到網絡上的每個比特幣節點。

  • 隨機數(nonce):

    比特幣區塊中的“nonce”是一個32位(4字節)的字段,通過設置它的值可以使得區塊的哈希值包含若干個前導零。其餘的字段可能不會改變,因為它們具有定義的含義。

  • 脫鏈交易(off-chain transactions):

    脫鏈交易是區塊鏈之外的價值轉移,鏈上交易(通常簡稱為交易)修改區塊鏈並依靠區塊鏈來確定其有效性,脫鏈交易依賴於其他方法來記錄和驗證交易。

  • opcode:

    比特幣腳本語言的操作代碼,用於在公鑰腳本或簽名腳本中推送數據或執行功能。

  • 開放資產協議(Open Assets protocol):

    開放資產協議(Open Assets Protocol)是一個建立在比特幣區塊鏈之上的簡單而強大的協議。它允許發佈和傳輸用戶創建的資產。開放資產協議是彩色幣概念的演變。

  • OP_RETURN:

    OP_RETURN交易中的一個輸出中使用的操作碼。不要與OP_RETURN交易混淆。

  • OP_RETURN 交易:

    一種交易類型,它將任意數據添加到可證明不可消費的pubkey腳本中,完整節點不需要存儲在其UTXO數據庫中。不要與OP_RETURN操作碼混淆。

  • 孤塊(orphan block):

    其父區塊還未被本地節點驗證的塊,所以它們也不能被完全驗證。不要和陳腐區塊(stale block)混淆

  • 孤兒交易(orphan transactions):

    由於缺少一個或多個輸入交易,而無法進入交易池的交易。

  • 輸出(output):

    輸出,交易輸出,或者TxOut,是交易中的輸出,其包含兩個字段:一> 個用於傳遞零個或多個聰(satoshis,比特幣最小單位)的值域和一個用於指示為了進一步花費這些聰必須滿足什麼條件的pubkey腳本。

  • P2PKH:

    向比特幣地址支付的交易包含P2PKH(Pay To PubKey Hash)腳本,由P2PKH鎖定的輸出可以通過公鑰和由對應的私鑰創建的數字簽名來解鎖(消費)。

  • P2SH:

    P2SH(Pay-to-Script-Hash)是一種功能強大的新型交易,大大簡化了複雜交易腳本的使用。通過P2SH,詳細說明消費輸出(贖回腳本)的複雜腳本不會顯示在鎖定腳本中,只有它的哈希值在鎖定腳本中。

  • P2SH地址:

    P2SH地址是一個腳本的20比特哈希值的Base58Check編碼, P2SH地址使用版本前綴“5”,導致Base58Check編碼後的地址以“3”開頭。P2SH地址隱藏了所有的複雜性,因此付款人看不到腳本。

  • P2WPKH:

    P2WPKH(Pay-to-Witness-Public-Key-Hash)的簽名包含與P2PKH支出相同的信息,但位於witness字段而不是scriptSig字段。scriptPubKey也被修改了。

  • P2WSH:

    P2SH和P2WSH(Pay-to-Witness-Script-Hash)之間的差異是加密證明信息的位置從scriptSig字段變為witness字段,scriptPubKey字段也被修改了。

  • 紙錢包(paper wallet):

    具體來講,紙質錢包是一個文件,其中包含生成任意數量的比特幣私鑰所需的所有數據,形成了密鑰的錢包。但是,人們經常使用這個術語來表示任何將比特幣作為物理文檔離線存儲的方式。第二個定義還包括紙密鑰和可兌換代碼。

  • 支付通道(payment channels):

    小額支付通道或支付通道是一類技術,旨在允許用戶進行多個比特幣交易,而無需將所有交易交給比特幣區塊鏈。在典型的支付通道中,只有兩筆交易被添加到區塊鏈中,但參與者之間可以進行無限次或幾乎無限次數的付款。

  • 礦池挖礦(pooled mining):

    礦池採礦是一種採礦方式,其中多個客戶端合力產生一個區塊,然後根據它們提供的處理能力分割區塊獎勵。

  • 權益證明(Proof-of-Stake):

    權益證明(Proof-of-Stake,PoS)是一種加密貨幣區塊鏈網絡實現分佈式共識的方法。權益證明要求用戶證明一定數量的貨幣(它們在貨幣中的“股份”)的所有權。

  • 工作量證明(Proof-of-Work):

    需要大量計算才能找到特定數據。在比特幣中,礦工必須找到SHA256算法的數字解決方案,以滿足整個網絡的目標,即難度目標。

  • 獎勵(reward):

    包含在每個新區塊中的一定數量的比特幣,作為對網絡中發現工作證明解決方案的礦工的獎勵。目前它是每個區塊12.5比特幣。

  • RIPEMD-160:

    RIPEMD-160是一個160位的加密哈希方法。RIPEMD-160是RIPEMD的一個加強版本,具有160位散列結果,預計在未來十年或更長時間內可以保證安全。

  • 中本聰(satoshi):

    聰(satoshi)是可以記錄在區塊鏈上的最小比特幣單位。它相當於0.00000001比特幣,以比特幣的創造者中本聰(Satoshi Nakamoto)命名

  • 中本聰(Satoshi Nakamoto):

    中本聰(Satoshi Nakamoto)是設計比特幣並開發原始參考實現代碼的一個人或幾個人的用名,作為實施的一部分,他們還設計了第一個區塊鏈數據庫。在這個過程中,他們率先解決了數字貨幣的雙重支付問題,但他們的真實身份仍然未知。

  • 腳本(Script):

    比特幣使用腳本系統進行交易。腳本很簡單,基於堆棧,並且從左到右進行處理。它故意設計成不是圖靈完備的,不支持循環。

  • 公鑰腳本(ScriptPubKey,pubkey script):

    ScriptPubKey或pubkey script, 是一個包含在輸出中的腳本,它為消費那些satoshis設定了必須滿足的條件。滿足條件的數據可以在簽名腳本中提供。

  • 簽名腳本(ScriptSig,signature script):

    ScriptSig或signature script, 是由付款人生成的,作為滿足公鑰腳本(PubKey Script)的變量

  • 私鑰(secret key,private key):

    解鎖特定地址上的比特幣的私密數字,看起來如下:

    5J76sF8L5jTtzE96r66Sf8cka9y44wdpJjMwCxR3tzLh3ibVPxh
    
  • 隔離見證(Segregated Witness):

    隔離見證是對比特幣協議的升級建議,技術上創新地將簽名數據與比特幣交易分開。隔離見證是一種建議的軟分叉,技術上的變化使得比特幣的協議規則更具限制性。

  • SHA:

    安全散列算法或SHA是美國國家標準與技術研究院(NIST)發佈的一系列加密散列函數。

  • 簡單支付驗證(Simplified Payment Verification,SPV):

    簡單支付驗證(SPV)或是一種驗證特定交易是否包含在一個區塊中的方法,不需要下載整個塊。該方法被一些輕量級比特幣客戶使用。

  • 軟分叉(soft fork):

    軟分叉是區塊鏈中的臨時分叉,通常當礦工使用不遵從新共識方法的未升級的節點時發生。不要和分叉、硬分叉、軟件分叉或Git分叉混淆。

  • 陳腐區塊(stale block):

    已成功開採但未包括在當前最佳區塊鏈中的區塊,可能是因為同一高度的其他區塊首先擴展了其鏈條。不要與孤兒塊混淆。

  • 時間鎖(timelocks):

    時間鎖是一種限制某些比特幣直到指定的未來時間或區塊高度才能支出的留置權。時間鎖在許多比特幣合約中有重要作用,包括支付通道,和哈希時間鎖定合約。

  • 交易(transaction):

    簡單來說,是指從一個地址向另一個地址傳輸比特幣。具體而言,交易是表示價值轉移的簽名數據結構。交易通過比特幣網絡進行傳輸,由礦工收集幷包含在區塊鏈中,永久保存在區塊鏈中。

  • 交易池(transaction pool):

    一個無序的交易集合,它不在主鏈中的區塊中,但是我們可以拿到輸入交易。

  • 圖靈完備(Turing completeness):

    如果程序語言能夠運行圖靈機可以運行的任何程序,並給予足夠的時間和內存,那麼它就稱為“圖靈完備”的。

  • 未花費交易輸出(unspent transaction output,UTXO):

    UTXO是一項未花費的交易輸出,可以作為新交易的輸入使用。

  • 錢包(wallet):

    擁有你的所有比特幣的地址和密鑰的軟件,用它來發送,接收和存儲你的比特幣。

  • 錢包導入格式(Wallet Import Format,WIF):

    WIF或電子錢包導入格式是一種數據交換格式,允許導出和導入帶有標誌的單個私鑰,該標誌表示它是否使用壓縮的公鑰。

Latest Posts

Grin 的貨幣政策
Grin 的貨幣政策

本篇文章是翻譯自Grin的Gitgub的內容,在說明Grin為什麼採取當前的發行政策,以前其背後對於比特幣等加密貨幣的思想,以及如何將自己的理解變為Grin中的發行政策。譯者認為加密貨幣的發行政策一直是大家鮮少注意到,卻極為重要的一塊,因此翻譯了這篇文章,簡單而言,Grin的核心貢獻者認為貨幣能有價值不在於有沒有硬頂,而是能不能有透明的發行政策。 by Williams Lai

Cypherpunks Taiwan (8) -如何使用github & 衛星計畫進度
Cypherpunks Taiwan (8) -如何使用github & 衛星計畫進度

活動影片:

Cypherpunks GitHub 教學演講
Cypherpunks GitHub 教學演講

GitHub 可以說是現今時代中工程師的一種社交網路, 當你發現原始作者有一些感興趣的專案時,你想為此專案作貢獻,加入原作者專案 Contributor 的行列時。就可以參考本文件一步一步操作。