當前位置:首頁 » 比特幣問答 » 比特幣中transaction

比特幣中transaction

發布時間: 2023-02-19 01:23:21

㈠ 超詳細整理區塊鏈和加密貨幣行業術語(建議收藏)

比特幣詞彙表:你需要知道的每一個區塊鏈和加密貨幣短語

盡管困難重重,區塊鏈技術已成為主流。比特幣已成為家喻戶曉的詞,世界各地的金融機構都投資於加密貨幣或允許其客戶這樣做。與此同時,NFT 吸引了各路名人的加入和贊賞。

但盡管如此,區塊鏈技術仍然非常神秘。只有才華橫溢的工程師才能真正理解這些——其中許多人是比特幣和以太幣等加密貨幣的早期採用者,而對於外行來說可能仍是很困難的。

以下是您可能會覺得有用的區塊鏈術語的詞彙表。(所有短語按英文字母順序排列)

空投(Airdrop)

空投是指公司將加密貨幣或 NFT 直接放入您的錢包中。 區塊鏈 服務將推出代 並空投給曾使用過該服務的用戶,而不是首次公開募股。這樣做有幾個原因:它可以是純粹的營銷,因為空投提高了人們可以投資的代幣的意識,或者可以為 DAO 提供治理代幣。

最近的一個例子:以太坊名稱服務允許用戶將他們的錢包號碼更改為錢包名稱(如 CNET.eth)。去年 12 月,它推出了自己的 ENS 代幣,向所有使用該服務的人空投了一定金額。使用以太坊名稱服務的人越多,他們被空投的代幣就越多——在某些情況下價值數萬美元。

山寨幣(Altcoin)

任何不是 比特幣 以太幣的加密貨幣都被稱為山寨幣(Altcoin) 。有時候也被稱為「 shitcoins。

幣安(Binance)

世界上最大的 加密貨幣 交易所,人們在這里購買和交易加密貨幣。它正在接受美國司法部和美國國稅局的逃稅和洗錢調查。

區塊鏈(Blockchain)

區塊鏈是「分布式資料庫」。簡單來說,它是一個去中心化的賬本,將信息記錄在數字「塊」中。一旦一個塊被挖掘並添加到鏈中,它就不能被更改,因此區塊鏈提供了不可更改數據的公共記錄。

有許多不同的區塊鏈具有不同程度的去中心化、效率和安全性。許多人擁有自己的加密貨幣——例如,以太幣是一種建立在 以太坊區塊 鏈上的加密貨幣。

比特幣(Bitcoin)

比特幣是第一個 加密貨幣 ,建立在比特幣區塊鏈之上。它是由一個人或一群人以中 本聰 的筆名於 2009 年創建的。只能鑄造2100 萬枚,其中大約1890 萬枚已經在流通。

銷毀(Burning)

加密貨幣 通過發送到只能接收而不能發出的錢包而被「燒毀」。銷毀機制通常被用來造成通縮影響:流通中的 代幣 越少,投資者持有的 代幣 就越稀缺。

買跌(Buy the dip)

這是指在價格下跌後購買更多資產。例如,如果價格下跌 10,000 美元,比特幣持有者可能會「逢低買入」。

冷錢包(Cold Wallet)

未連接到互聯網的加密貨幣錢包。這些錢包更安全,更不容易受騙。

跨鏈(Cross-chain)

將數據、代幣或資產從一個區塊鏈發送到另一個區塊鏈的能力。這不同於為在多個區塊鏈上工作而構建的「 多鏈 」服務。

密碼學(Cryptography)

一種信息加密形式,其中數據只能使用密鑰進行解密。使用 工作量證明 協議的 區塊鏈 依賴於解決極其復雜的密碼學難題,以便挖掘和驗證新區塊。

加密貨幣(Cryptocurrency)

加密貨幣是 區塊鏈 原生的代 。加密貨幣通常隨著每個新區塊的開采而鑄造。例如,每 挖出 一個新的 以太坊 區塊, 都會 獲得兩個以太幣作為對礦工的補償。

加密貨幣是一種代 。它們的誕生是它們的決定性因素:其他代幣是使用構建在區塊鏈之上的平台和應用程序創建的,而加密貨幣則內置於區塊鏈的協議中。

去中心化應用(Dapps)

去中心化應用程序的縮寫。

道(DAO)

一個去中心化的自治組織。DAO 是一個通過共識做出決策的組織:所有 治理代幣的 持有者都在組織決策中獲得投票權,投票最多的解決方案是 DAO 的行動方案。想像一個去中心化的投資銀行,但不是由基金經理做出投資決定,而是由其 治理代幣 的持有者投票決定如何投資其國庫中的資金。

去中心化交易所(Decentralized exchange)

去中心化交易所用於購買和交易 加密貨幣 。與典型的交易所不同,這些交易所使用繞過任何中心化權威的點對點交易。其中包括 Uniswap 和 Sushiswap。

去中心化金融(DeFi)

「decentralized finance」的縮寫。DeFi 是使用 區塊鏈 技術繞過中心化機構任何金融工具,例如 智能合約 DAO

鑽石手(Diamond Hands)

鑽石手是長期或在價格動盪期間持有金融資產的人。

DYOR

「Do Your Own Research」的縮寫。

以太幣(ETH)

在以太坊區塊鏈上開採的 加密貨幣 。以太 的市值僅次於 比特幣 ,但卻是一種更常用的加密貨幣。大多數 山寨幣 也是 基於以太坊構建的 ,因此與以太 幣掛鉤 。大多數 NFT 也建立在以太坊上,這就是為什麼以太是 NFT 交易中使用的主要代幣。

以太坊(Ethereum)

比特幣 競爭的區塊鏈。它旨在採用 比特幣 開發人員開創的區塊鏈技術,並將其用於更復雜的金融工具,如 智能合約

閃貸(Flash loan)

閃電貸是一種 DeFi 工具,允許在沒有抵押品的情況下進行貸款。閃電貸允許您借錢購買資產,但前提是可以購買資產並在同一區塊內償還利息。想像一下,使用貸款購買一棟 100 萬美元的房子,但只有當您已經排好另一個願意支付足夠費用讓您償還貸款和利息的買家時,貸款才會被批准。

這些貸款使用 智能合約 技術。

FUD

「fear, uncertainty and doubt」的縮寫。這可能是合法的,例如人們對代幣或 NFT 項目的安全性或合法性或安全性表示擔憂,例如鼓勵人們出售、降低資產價格的有組織的舉動。

Gas

Gas 是您使用 以太坊 網路所要支付的價格。每筆交易都需要支付gas ,這取決於 區塊鏈的 過載程度。每筆交易的價格通常在 50 美元到 500 美元之間,但在網路負載過重時價格可能會飆升。

治理代幣(Governance token)

治理代幣是賦予所有者對給定項目投票權的加密貨幣。另請參閱: DAO

GWEI

gas 的成本以 GWEI 表示。作為粗略的指導,當 gwei 低於 50 時,gas 會很便宜,而當 gwei 高於 100 時,gas 會很貴。

HODL

「hold」的故意拼寫錯誤,用於鼓勵人們在價格下跌期間持有他們的代幣。

Layer 1和Layer 2

如果您涉足 加密貨幣, 您會聽說Layer 1和Layer 2解決方案。Layer 1是 區塊鏈 架構本身,而Layer 2是指建立在區塊鏈之上的架構。

例如,以以太坊的高gas成本問題為例。Layer 1解決方案是讓 以太坊區塊 鏈更高效,例如通過採用 權益證明 協議。Layer 2解決方案的一個例子是 Immutible X,這是一個建立在以太坊之上的交易所,它使用 智能合約 技術允許無氣體、碳中和的交易。

流動性市場(Liquid Market)

流動性市場是一個擁有大量買家和賣家的市場,它允許幾乎立即完成買賣訂單。 加密貨幣 市場具有流動性,而 NFT 市場則不然。大多數合法的加密貨幣可以隨時買賣,因為 NFT 交易者需要列出待售物品,希望買家手動購買。

主網(Mainnet)

一個供公眾使用的區塊鏈協議將被放入主網。這將它與測試網區分開來,後者更像是區塊鏈協議的測試版發布。

模因幣(Memecoins)

許多加密貨幣旨在提供實用程序或服務為目的。Memecoins 不提供實用前景,純粹作為投機資產存在。狗狗幣是最知名的 ,但還有很多很多。


元掩碼(MetaMask)

一種基於瀏覽器的在線數字錢包,主要用於 以太坊區塊鏈 上的交易。

礦業(Mining)

挖礦是驗證交易並將區塊添加到區塊 鏈的過程 。這通常涉及解決復雜 密碼 問題的強大計算機。至關重要的是,這也是將新的 加密貨幣 添加到流通中的方式。

礦機(Mining Rig)

為挖掘 加密貨幣 的特定目的而設置的功能強大的計算機。

礦場(Mining Farm)

全天運行的采礦設備倉庫(或房間),用於挖掘 加密貨幣

鑄幣(Mint)

在區塊鏈上,鑄幣意味著驗證信息並將其作為區塊鏈上的一個塊。

「鑄造」 NFT 意味著在公開發售期間從其創建者那裡購買它。「鑄幣價格」是指它的創造者出售它的價格——例如無聊猿遊艇俱樂部的「鑄幣價格」是 0.08 以太幣。在一個集合中的所有 NFT 都被鑄造之後,想要接觸該集合的交易者需要從 OpenSea 等二級市場購買它們。

多鏈(Multi-chain)

設計用於多個 區塊鏈 的應用程序或服務。這與 跨鏈 應用程序和服務不同, 跨鏈 應用程序和服務旨在將數據或資產從一個區塊鏈發送到另一個區塊鏈。

月球(MOON)

價格的急劇飆升被稱為「mooning」或「a moon」。「To the moon(去月球)」是一個常見的短語。

NFT

不可替代的代幣(Non-fungible token)。這些是證明數字資產所有權的數字契約。目前,它們與藝術相關,但 NFT 可以證明任何數字的所有權。

鏈下/鏈上(Off-Chain/On-chain)

鏈上是指存在於 區塊鏈 上的東西,鏈下是指存在於 區塊 鏈之外的東西。 加密貨幣 是鏈上貨幣,法定貨幣是鏈下貨幣。

OpenSea

它是最大的 NFT 市場,專門研究基於 以太坊 的 NFT。(建立在不同區塊鏈上的 NFT 通常在專門的市場上出售。例如,Solana NFT 在 Solanat 上出售。)

Play to Earn(P2E)

Play to Earn (P2E) 游戲 集成了區塊鏈,並以 游戲 內 加密貨幣 獎勵玩家。這些 游戲 中的加密貨幣可以兌換成比特幣或以太幣。最突出的例子是 Axie Infinity,玩家可以獲得 Smooth Love Potion ($SLP)。

工作量證明(Proof of Work)

工作量證明(POW)是一種共識機制,通過該機制將塊添加到區塊鏈中。工作量證明要求礦工解決復雜的 密碼學 難題,這需要強大的采礦設備提供大量能源,以驗證新的區塊鏈交易。

工作量證明是一種安全且去中心化的共識機制,但效率低下是出了名的。這就是比特幣和以太坊區塊鏈的運作方式,盡管以太坊很快就會轉向更高效 的權益證明(Proof of Stake)

權益證明(Proof of Stake)

面對工作量 證明 的巨大能源需求, 權益 證明(POS)是一種更新的共識機制,可以更有效地挖掘區塊。權益證明允許 加密貨幣 持有者在相關區塊 上驗證新區塊。

他們通過抵押他們的 加密貨幣來 做到這一點。網路用戶質押他們的加密貨幣,如果他們的股份是通過隨機演算法選擇的,他們就有機會驗證一個新區塊——為此他們將獲得更多加密貨幣形式的獎勵。質押的加密貨幣越多,選擇用戶驗證新區塊的機會就越大。

工作證明獎勵那些花費最多計算能力來解決密碼難題的人,而權益證明獎勵那些長期投資加密貨幣的人。

抽水和傾銷(Pump and mp)

抽水和傾銷計劃涉及對產品的人為刺激,從而導致人們購買並提高其價格。然後,抽水和傾銷協調者以高價出售其資產,從而導致價格急劇下跌。

這些存在於傳統市場中,但在 加密貨幣 交易中更為常見,因為微市值加密貨幣的低流動性使其價格更容易操縱。

地毯拉動(Rug pull)

地毯拉動是指 加密貨幣 的創造者消失,並帶走資金。最近的一個例子是偽造的Squid Game 硬幣,盡管這些硬幣遠非罕見。「地毯」本質上是「騙局」的簡寫。

中本聰(Satoshi Nakamoto)

比特幣 創造者的化名。解釋去中心化金融的必要性和解釋比特幣如何運作的白皮書由中本聰簽署,但沒有人知道真實的人是誰。據推測,中本聰實際上是幾個人。


助記詞(Seed Phrase)

當你創建一個 加密貨幣 錢包時,你會得到一個 12 字的種子短語。每次在新設備上登錄錢包時,都需要使用助記詞。 永遠不要把你的助記詞給任何人

分片(Sharding)

分片在 區塊鏈上 分配網路負載,允許每秒處理更多事務。這聽起來很枯燥,但它非常重要。 以太坊 將在明年整合分片,這將使使用它更便宜,對環境的破壞也更小。

垃圾幣(Shitcoin)

Shitcoin 是一種不提供任何效用的 山寨幣 ,無論是 memecoin 還是無效的 山寨幣

絲綢之路(Silk Road)

Silk Road 是一個在線黑市,於 2013 年被 FBI 關閉。這是許多人第一次接觸 加密貨幣的地方 ,因為 比特幣 是該網站非法商品的流行支付方式。

智能合約(Smart contract)

智能合約是在滿足所需條件時自行執行的數字合約。例如,如果 Wallet X 向 Wallet Y 發送 0.08 ether,Wallet Y 向 Wallet X 發送 NFT Z。它們最常用於自動交易,但也可用於更復雜的用途,例如 快速貸款

穩定幣(Stable coin)

穩定幣是與美元掛鉤的加密貨幣。其中包括 Tether 和 USDC。他們的目的是讓 加密貨幣 交易者將他們的代幣保存在加密生態系統中,而不會經歷 比特幣 以太幣 價格波動的波動。

質押(Staking)

權益質押是在加密貨幣錢包中鎖定持有資金,從而支持區塊鏈網路運營。從本質上講,它包括鎖定加密貨幣以獲得獎勵。在大多數情況下,該流程需要用戶使用個人加密錢包參與到區塊鏈活動中。

權益質押的概念與權益證明(PoS)機制密切相關。它被用於許多基於PoS或相類似的其他區塊鏈系統中。

TLT

「think long term」的縮寫。

代幣(Token)

代幣是多種形式的區塊鏈資產。像 比特幣 這樣的 加密貨幣 是一種代幣。其他類型包括 治理代幣 ,它授予持有者在 DAO 或服務中的投票權,或 實用代幣 ,其中根據持有的代幣數量授予對服務的訪問許可權。

TXN

交易(transaction)的縮寫。

實用代幣(Utility Token)

旨在提供某種功能的代幣。這些可以是對應用程序、服務或 游戲 的訪問。示例包括 Filecoin,它授予對基於區塊鏈的數字存儲的訪問許可權,以及 Link,它連接 了鏈下 類型數據的智能合約。

虛榮地址(Vanity Address)

由 Ethereum Name Service 等公司提供的個性化錢包地址。它允許您將錢包地址更改為您選擇的單詞或短語,例如 CNET.eth。

Vaporware

承諾但從未真正進入市場的產品。該術語在 90 年代後期隨著最初的互聯網繁榮而流行起來,並且由於陰暗的 加密貨幣 創造者而得到了復興。

維塔利克·布特林(Vitalik Buterin)

以太坊區塊鏈 背後的創造者。

錢包(Wallet)

加密貨幣錢包是您可以存儲加密貨幣和 NFT 的地方。這些錢包可以是熱錢包或冷錢包——即連接到互聯網的瀏覽器錢包或未連接到互聯網的物理硬體。錢包可以讀寫,這意味著它們可以接收信息,也可以作為簽名或在線 ID。

Web 3

Web3 是區塊鏈愛好者想像的互聯網的下一次迭代。從互聯網發明到 2005 年左右,Web1 是只讀互聯網。Web2 指的是用戶能夠製作內容並將其上傳到互聯網上的出現。Web3 將是一個集成了區塊鏈的互聯網。想像一下,將您的社交媒體帖子作為 NFT 擁有,使用像以太幣這樣的 加密貨幣 作為通用貨幣,並將您的錢包作為一種 ID 形式而不是電子郵件/密碼組合。

鯨(Whale)

持有大量加密貨幣的人。

白名單 ( Whitelist)

加密貨幣 NFT 的 預售清單。列入白名單的投資者可以在公開發行前購買資產,有時以折扣價購買。

WAGMI

「we're all going to make it」的縮寫。


㈡ 詳解比特幣挖礦原理

可以將區塊鏈看作一本記錄所有交易的公開總帳簿(列表),比特幣網路中的每個參與者都把它看作一本所有權的權威記錄。

比特幣沒有中心機構,幾乎所有的完整節點都有一份公共總帳的備份,這份總帳可以被視為認證過的記錄。

至今為止,在主幹區塊鏈上,沒有發生一起成功的攻擊,一次都沒有。

通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采210,000個塊,大約耗時4年,貨幣發行速率降低50%。

在2016年的某個時刻,在第420,000個區塊被「挖掘」出來之後降低到12.5比特幣/區塊。在第13,230,000個區塊(大概在2137年被挖出)之前,新幣的發行速度會以指數形式進行64次「二等分」。到那時每區塊發行比特幣數量變為比特幣的最小貨幣單位——1聰。最終,在經過1,344萬個區塊之後,所有的共20,999,999.9769億聰比特幣將全部發行完畢。換句話說, 到2140年左右,會存在接近2,100萬比特幣。在那之後,新的區塊不再包含比特幣獎勵,礦工的收益全部來自交易費。

在收到交易後,每一個節點都會在全網廣播前對這些交易進行校驗,並以接收時的相應順序,為有效的新交易建立一個池(交易池)。

每一個節點在校驗每一筆交易時,都需要對照一個長長的標准列表:

交易的語法和數據結構必須正確。

輸入與輸出列表都不能為空。

交易的位元組大小是小於MAX_BLOCK_SIZE的。

每一個輸出值,以及總量,必須在規定值的范圍內 (小於2,100萬個幣,大於0)。

沒有哈希等於0,N等於-1的輸入(coinbase交易不應當被中繼)。

nLockTime是小於或等於INT_MAX的。

交易的位元組大小是大於或等於100的。

交易中的簽名數量應小於簽名操作數量上限。

解鎖腳本(Sig)只能夠將數字壓入棧中,並且鎖定腳本(Pubkey)必須要符合isStandard的格式 (該格式將會拒絕非標准交易)。

池中或位於主分支區塊中的一個匹配交易必須是存在的。

對於每一個輸入,如果引用的輸出存在於池中任何的交易,該交易將被拒絕。

對於每一個輸入,在主分支和交易池中尋找引用的輸出交易。如果輸出交易缺少任何一個輸入,該交易將成為一個孤立的交易。如果與其匹配的交易還沒有出現在池中,那麼將被加入到孤立交易池中。

對於每一個輸入,如果引用的輸出交易是一個coinbase輸出,該輸入必須至少獲得COINBASE_MATURITY (100)個確認。

對於每一個輸入,引用的輸出是必須存在的,並且沒有被花費。

使用引用的輸出交易獲得輸入值,並檢查每一個輸入值和總值是否在規定值的范圍內 (小於2100萬個幣,大於0)。

如果輸入值的總和小於輸出值的總和,交易將被中止。

如果交易費用太低以至於無法進入一個空的區塊,交易將被拒絕。

每一個輸入的解鎖腳本必須依據相應輸出的鎖定腳本來驗證。

以下挖礦節點取名為 A挖礦節點

挖礦節點時刻監聽著傳播到比特幣網路的新區塊。而這些新加入的區塊對挖礦節點有著特殊的意義。礦工間的競爭以新區塊的傳播而結束,如同宣布誰是最後的贏家。對於礦工們來說,獲得一個新區塊意味著某個參與者贏了,而他們則輸了這場競爭。然而,一輪競爭的結束也代表著下一輪競爭的開始。

驗證交易後,比特幣節點會將這些交易添加到自己的內存池中。內存池也稱作交易池,用來暫存尚未被加入到區塊的交易記錄。

A節點需要為內存池中的每筆交易分配一個優先順序,並選擇較高優先順序的交易記錄來構建候選區塊。

一個交易想要成為「較高優先順序」,需滿足的條件:優先值大於57,600,000,這個值的生成依賴於3個參數:一個比特幣(即1億聰),年齡為一天(144個區塊),交易的大小為250個位元組:

High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000

區塊中用來存儲交易的前50K位元組是保留給較高優先順序交易的。 節點在填充這50K位元組的時候,會優先考慮這些最高優先順序的交易,不管它們是否包含了礦工費。這種機制使得高優先順序交易即便是零礦工費,也可以優先被處理。

然後,A挖礦節點會選出那些包含最小礦工費的交易,並按照「每千位元組礦工費」進行排序,優先選擇礦工費高的交易來填充剩下的區塊。

如區塊中仍有剩餘空間,A挖礦節點可以選擇那些不含礦工費的交易。有些礦工會竭盡全力將那些不含礦工費的交易整合到區塊中,而其他礦工也許會選擇忽略這些交易。

在區塊被填滿後,內存池中的剩餘交易會成為下一個區塊的候選交易。因為這些交易還留在內存池中,所以隨著新的區塊被加到鏈上,這些交易輸入時所引用UTXO的深度(即交易「塊齡」)也會隨著變大。由於交易的優先值取決於它交易輸入的「塊齡」,所以這個交易的優先值也就隨之增長了。最後,一個零礦工費交易的優先值就有可能會滿足高優先順序的門檻,被免費地打包進區塊。

UTXO(Unspent Transaction Output) : 每筆交易都有若干交易輸入,也就是資金來源,也都有若干筆交易輸出,也就是資金去向。一般來說,每一筆交易都要花費(spend)一筆輸入,產生一筆輸出,而其所產生的輸出,就是「未花費過的交易輸出」,也就是 UTXO。

塊齡:UTXO的「塊齡」是自該UTXO被記錄到區塊鏈為止所經歷過的區塊數,即這個UTXO在區塊鏈中的深度。

區塊中的第一筆交易是筆特殊交易,稱為創幣交易或者coinbase交易。這個交易是由挖礦節點構造並用來獎勵礦工們所做的貢獻的。假設此時一個區塊的獎勵是25比特幣,A挖礦的節點會創建「向A的地址支付25.1個比特幣(包含礦工費0.1個比特幣)」這樣一個交易,把生成交易的獎勵發送到自己的錢包。A挖出區塊獲得的獎勵金額是coinbase獎勵(25個全新的比特幣)和區塊中全部交易礦工費的總和。

A節點已經構建了一個候選區塊,那麼就輪到A的礦機對這個新區塊進行「挖掘」,求解工作量證明演算法以使這個區塊有效。比特幣挖礦過程使用的是SHA256哈希函數。

用最簡單的術語來說, 挖礦節點不斷重復進行嘗試,直到它找到的隨機調整數使得產生的哈希值低於某個特定的目標。 哈希函數的結果無法提前得知,也沒有能得到一個特定哈希值的模式。舉個例子,你一個人在屋裡打檯球,白球從A點到達B點,但是一個人推門進來看到白球在B點,卻無論如何是不知道如何從A到B的。哈希函數的這個特性意味著:得到哈希值的唯一方法是不斷的嘗試,每次隨機修改輸入,直到出現適當的哈希值。

需要以下參數

• block的版本 version

• 上一個block的hash值: prev_hash

• 需要寫入的交易記錄的hash樹的值: merkle_root

• 更新時間: ntime

• 當前難度: nbits

挖礦的過程就是找到x使得

SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET

上式的x的范圍是0~2^32, TARGET可以根據當前難度求出的。

簡單打個比方,想像人們不斷扔一對色子以得到小於一個特定點數的游戲。第一局,目標是12。只要你不扔出兩個6,你就會贏。然後下一局目標為11。玩家只能扔10或更小的點數才能贏,不過也很簡單。假如幾局之後目標降低為了5。現在有一半機率以上扔出來的色子加起來點數會超過5,因此無效。隨著目標越來越小,要想贏的話,扔色子的次數會指數級的上升。最終當目標為2時(最小可能點數),只有一個人平均扔36次或2%扔的次數中,他才能贏。

如前所述,目標決定了難度,進而影響求解工作量證明演算法所需要的時間。那麼問題來了:為什麼這個難度值是可調整的?由誰來調整?如何調整?

比特幣的區塊平均每10分鍾生成一個。這就是比特幣的心跳,是貨幣發行速率和交易達成速度的基礎。不僅是在短期內,而是在幾十年內它都必須要保持恆定。在此期間,計算機性能將飛速提升。此外,參與挖礦的人和計算機也會不斷變化。為了能讓新區塊的保持10分鍾一個的產生速率,挖礦的難度必須根據這些變化進行調整。事實上,難度是一個動態的參數,會定期調整以達到每10分鍾一個新區塊的目標。簡單地說,難度被設定在,無論挖礦能力如何,新區塊產生速率都保持在10分鍾一個。

那麼,在一個完全去中心化的網路中,這樣的調整是如何做到的呢?難度的調整是在每個完整節點中獨立自動發生的。每2,016個區塊(2周產生的區塊)中的所有節點都會調整難度。難度的調整公式是由最新2,016個區塊的花費時長與20,160分鍾(兩周,即這些區塊以10分鍾一個速率所期望花費的時長)比較得出的。難度是根據實際時長與期望時長的比值進行相應調整的(或變難或變易)。簡單來說,如果網路發現區塊產生速率比10分鍾要快時會增加難度。如果發現比10分鍾慢時則降低難度。

為了防止難度的變化過快,每個周期的調整幅度必須小於一個因子(值為4)。如果要調整的幅度大於4倍,則按4倍調整。由於在下一個2,016區塊的周期不平衡的情況會繼續存在,所以進一步的難度調整會在下一周期進行。因此平衡哈希計算能力和難度的巨大差異有可能需要花費幾個2,016區塊周期才會完成。

舉個例子,當前A節點在挖277,316個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第277,316個區塊(父區塊為277,315)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。

比特幣共識機制的第三步是通過網路中的每個節點獨立校驗每個新區塊。當新區塊在網路中傳播時,每一個節點在將它轉發到其節點之前,會進行一系列的測試去驗證它。這確保了只有有效的區塊會在網路中傳播。

每一個節點對每一個新區塊的獨立校驗,確保了礦工無法欺詐。在前面的章節中,我們看到了礦工們如何去記錄一筆交易,以獲得在此區塊中創造的新比特幣和交易費。為什麼礦工不為他們自己記錄一筆交易去獲得數以千計的比特幣?這是因為每一個節點根據相同的規則對區塊進行校驗。一個無效的coinbase交易將使整個區塊無效,這將導致該區塊被拒絕,因此,該交易就不會成為總賬的一部分。

比特幣去中心化的共識機制的最後一步是將區塊集合至有最大工作量證明的鏈中。一旦一個節點驗證了一個新的區塊,它將嘗試將新的區塊連接到到現存的區塊鏈,將它們組裝起來。

節點維護三種區塊:

· 第一種是連接到主鏈上的,

· 第二種是從主鏈上產生分支的(備用鏈),

· 第三種是在已知鏈中沒有找到已知父區塊的。

有時候,新區塊所延長的區塊鏈並不是主鏈,這一點我們將在下面「 區塊鏈分叉」中看到。

如果節點收到了一個有效的區塊,而在現有的區塊鏈中卻未找到它的父區塊,那麼這個區塊被認為是「孤塊」。孤塊會被保存在孤塊池中,直到它們的父區塊被節點收到。一旦收到了父區塊並且將其連接到現有區塊鏈上,節點就會將孤塊從孤塊池中取出,並且連接到它的父區塊,讓它作為區塊鏈的一部分。當兩個區塊在很短的時間間隔內被挖出來,節點有可能會以相反的順序接收到它們,這個時候孤塊現象就會出現。

選擇了最大難度的區塊鏈後,所有的節點最終在全網范圍內達成共識。隨著更多的工作量證明被添加到鏈中,鏈的暫時性差異最終會得到解決。挖礦節點通過「投票」來選擇它們想要延長的區塊鏈,當它們挖出一個新塊並且延長了一個鏈,新塊本身就代表它們的投票。

因為區塊鏈是去中心化的數據結構,所以不同副本之間不能總是保持一致。區塊有可能在不同時間到達不同節點,導致節點有不同的區塊鏈視角。解決的辦法是, 每一個節點總是選擇並嘗試延長代表累計了最大工作量證明的區塊鏈,也就是最長的或最大累計難度的鏈。

當有兩個候選區塊同時想要延長最長區塊鏈時,分叉事件就會發生。正常情況下,分叉發生在兩名礦工在較短的時間內,各自都算得了工作量證明解的時候。兩個礦工在各自的候選區塊一發現解,便立即傳播自己的「獲勝」區塊到網路中,先是傳播給鄰近的節點而後傳播到整個網路。每個收到有效區塊的節點都會將其並入並延長區塊鏈。如果該節點在隨後又收到了另一個候選區塊,而這個區塊又擁有同樣父區塊,那麼節點會將這個區塊連接到候選鏈上。其結果是,一些節點收到了一個候選區塊,而另一些節點收到了另一個候選區塊,這時兩個不同版本的區塊鏈就出現了。

分叉之前

分叉開始

我們看到兩個礦工幾乎同時挖到了兩個不同的區塊。為了便於跟蹤這個分叉事件,我們設定有一個被標記為紅色的、來自加拿大的區塊,還有一個被標記為綠色的、來自澳大利亞的區塊。

假設有這樣一種情況,一個在加拿大的礦工發現了「紅色」區塊的工作量證明解,在「藍色」的父區塊上延長了塊鏈。幾乎同一時刻,一個澳大利亞的礦工找到了「綠色」區塊的解,也延長了「藍色」區塊。那麼現在我們就有了兩個區塊:一個是源於加拿大的「紅色」區塊;另一個是源於澳大利亞的「綠色」。這兩個區塊都是有效的,均包含有效的工作量證明解並延長同一個父區塊。這個兩個區塊可能包含了幾乎相同的交易,只是在交易的排序上有些許不同。

比特幣網路中鄰近(網路拓撲上的鄰近,而非地理上的)加拿大的節點會首先收到「紅色」區塊,並建立一個最大累計難度的區塊,「紅色」區塊為這個鏈的最後一個區塊(藍色-紅色),同時忽略晚一些到達的「綠色」區塊。相比之下,離澳大利亞更近的節點會判定「綠色」區塊勝出,並以它為最後一個區塊來延長區塊鏈(藍色-綠色),忽略晚幾秒到達的「紅色」區塊。那些首先收到「紅色」區塊的節點,會即刻以這個區塊為父區塊來產生新的候選區塊,並嘗試尋找這個候選區塊的工作量證明解。同樣地,接受「綠色」區塊的節點會以這個區塊為鏈的頂點開始生成新塊,延長這個鏈。

分叉問題幾乎總是在一個區塊內就被解決了。網路中的一部分算力專注於「紅色」區塊為父區塊,在其之上建立新的區塊;另一部分算力則專注在「綠色」區塊上。即便算力在這兩個陣營中平均分配,也總有一個陣營搶在另一個陣營前發現工作量證明解並將其傳播出去。在這個例子中我們可以打個比方,假如工作在「綠色」區塊上的礦工找到了一個「粉色」區塊延長了區塊鏈(藍色-綠色-粉色),他們會立刻傳播這個新區塊,整個網路會都會認為這個區塊是有效的,如上圖所示。

所有在上一輪選擇「綠色」區塊為勝出者的節點會直接將這條鏈延長一個區塊。然而,那些選擇「紅色」區塊為勝出者的節點現在會看到兩個鏈: 「藍色-綠色-粉色」和「藍色-紅色」。 如上圖所示,這些節點會根據結果將 「藍色-綠色-粉色」 這條鏈設置為主鏈,將 「藍色-紅色」 這條鏈設置為備用鏈。 這些節點接納了新的更長的鏈,被迫改變了原有對區塊鏈的觀點,這就叫做鏈的重新共識 。因為「紅」區塊做為父區塊已經不在最長鏈上,導致了他們的候選區塊已經成為了「孤塊」,所以現在任何原本想要在「藍色-紅色」鏈上延長區塊鏈的礦工都會停下來。全網將 「藍色-綠色-粉色」 這條鏈識別為主鏈,「粉色」區塊為這條鏈的最後一個區塊。全部礦工立刻將他們產生的候選區塊的父區塊切換為「粉色」,來延長「藍色-綠色-粉色」這條鏈。

從理論上來說,兩個區塊的分叉是有可能的,這種情況發生在因先前分叉而相互對立起來的礦工,又幾乎同時發現了兩個不同區塊的解。然而,這種情況發生的幾率是很低的。單區塊分叉每周都會發生,而雙塊分叉則非常罕見。

比特幣將區塊間隔設計為10分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。

㈢ 誰是最大的比特幣持有者

作者| 哈希派-LucyCheng

比特幣被絕大部分人認為是世界上最為透明的支付網路沒錯,但它的地址是由用戶錢包匿名生成的;所以「誰是BTC最大的持有者」一直以來都沒有準確的答案。根據網路資料及Bitinfocharts的數據顯示,比特幣富豪榜前十名內除了半數已知的交易所錢包之外,其他皆為持有者不詳的神秘地址。

比特幣前十名富豪榜地址(數據源自:bitinfocharts.com)

這些地址大都以接收比特幣為主,其中最為神秘的是BTC富豪榜里排名第七的(有分析指出此為Mt.Gox於2011年黑客攻擊中被盜BTC的接收地址);該地址於2011年3月1日轉入的79956枚比特幣至今仍未轉出。如果按照當時0.92美元的價格來計算,這七萬多枚比特幣截至目前為止已經翻了一萬多倍。

地址的比特幣轉入轉出情況(數據源自:bitinfocharts.com)

而更為重要的是,持幣者和錢包地址並不是簡單的一對一關系;將BTC分散存儲在多個地址內才是大多數比特幣富豪們的常規操作。也就是說,不僅僅是誰,就連他持有多少比特幣我們也無法找到確切的答案。

圖片源自:quora.com

不過多年以來,大家還是能從領域的花邊新聞以及部分好奇人士的分析研究中,得到一些不太准確但有意思的結論。

比如說,紐約加密貨幣交易所Gemini的所有人Winklevoss兄弟曾在2013年表示,他們擁有當前流通量約1%的比特幣(按照該時間點約1200萬的BTC流通總量來看,這兩兄弟大概持有12萬枚比特幣)。而同樣擁有六位數比特幣的還有在《東方時空》聲稱自己是中國持有比特幣第一人的李笑來、被稱為「比特幣耶穌」的Roger Ver、收繳了絲綢之路運營者14.4萬BTC的FBI以及在打擊犯罪中沒收二十多萬枚比特幣的保加利亞執法部門。

另外撇開這些花邊新聞,根據RSA演算法提出者之一Adi Shamir發布的論文《Quantitative Analysis of the Full Bitcoin Transaction Graph》中的說法,擁有比特幣最多的人持有量可能不多於70萬BTC。這位以色列數學家通過分析比特幣前18000塊鏈的交易數據得出, 歷史 上出現過持幣量大於50萬BTC的有兩個實體(包括個人以及交易機構),而且收入(不算支出)最多的人交易轉入數量在70萬BTC以下。但需要強調的是,這已經是2012年的分析了,八年後的今天數據可能得刷新一下。

往期回顧: (十 )最誇張的比特幣估價是多少? 下期預告: (十二) 2100萬並不是比特幣的最終總量 比特幣你不知道的故事系列合集,將持續更新,敬請期待......

㈣ Transaction交易是什麼

是發送到比特幣網路的一條消息,通告全網一次比特幣的所有權轉移發生了,使得接收者能夠花費掉收到的比特幣,同時組織發送者再次使用已經發送了的比特幣。

㈤ 比特幣有無追蹤性

比特幣有追蹤性。
比特幣的交易信息可以被所以人看到(這里指資金流動去向,比如你把多少比特幣轉到了另外一個賬戶),但是與這個賬戶關聯的用戶信息是看不到的。
對於單筆比特幣的交易實時追蹤溯源需求,可以通過訪問區塊鏈瀏覽器,輸入交易產生的唯一txid(transactionid)去觀察資金流向。

㈥ UXTO與余額

區塊鏈入門從使用錢包開始,我們最關注的是錢包的賬戶余額。可看過很多區塊鏈資料以後,一直存在一個疑問,錢包的余額信息存在區塊鏈的什麼位置?一直沒有找到,只有一個相近的概念叫UTXO(Unspent Transaction Output),但看完以後還是對應不上。直到翻遍網上所有關於UXTO的資料,才知道在中本聰設計的比特幣系統中,並沒有餘額這個概念,「比特幣余額」是由比特幣等錢包應用派生出來的產物。錢包的余額是通過與賬戶相關的多個UXTO算出來的。下面且聽我詳細道來。

了解過一點點會計學,我們現在的會計系統絕大部分採用的是一種叫做「借貸記賬法」的方法,賬目分成借方和貸方,每發生一筆業務都要登記兩個以上的科目。

簡單來說,Alice轉賬給Bob 1美元,使用借貸記賬法至少要產生兩條賬目,Alice賬戶減少1美元,Bob賬戶增加1美元。這種記賬法在企業經營、企業審計中有無數的好處。但是這種記賬法也有一個最大的缺點,就是容易產生記賬錯誤和記賬誤差。一筆交易需要登記兩條以上的賬目,本質上記錄的是「交易的結果」,而不是「交易本身」。

中本聰發明了UTXO(Unspent Transaction Output)交易模型,並將其應用到比特幣當中。UTXO是「未花費的交易輸出」,簡單來說就是,每一筆比特幣交易實際上都是由若干個交易輸入和輸出組成的。交易輸入是資金來源,交易輸出是資金去向,每一筆交易都要從交易輸入中花費出去一部分,這一部分就是未花費的交易輸出(UTXO)。每一次的交易輸入都可以追溯到之前的UTXO,直至最初的挖礦所得。

由挖礦所得創建的比特幣交易,是每個區塊中的首個交易,又稱之為coinbase交易,它由礦工創建,沒有上一筆交易輸出。

在比特幣交易中 UTXO 就是基本單位,一個UTXO一旦被創建就不可被繼續分割,它只能當作是下一筆交易的輸入被花費掉,花費後產生新的UTXO,這樣周而復始地實現貨幣的價值轉移。所以我們在比特幣錢包中所看到的賬戶余額,實際上是錢包通過掃描區塊鏈並聚合所有屬於該用戶的UTXO計算得來的。

因此,當我們在說某人擁有1枚比特幣的時候,我們實際上說的是,在當前的區塊鏈記錄中,有若干筆交易的 UTXO 收款地址寫的是這個人的錢包地址,這些UTXO的總和是1個比特幣。

比特幣的UXTO系統遵守兩個規則:

我們以以太賬戶為例,打開 etherscan.io ,選擇BLOCKCHAIN->All Accounts,這樣可以看到所有地址與余額,可以選擇其中一個查看詳細信息。如果看不懂, 沒關系,把自己的以太地址輸入到右上角的搜索框回車後,會顯示地址的余額和詳細交易記錄,如下圖。

至此,我能理解李笑來老師說為什麼他的賬戶沒有餘額,只有UXTO了,O(∩_∩)O哈哈~,內行人不要說外行話嘛。

㈦ 比特幣機制研究

現今世界的電子支付系統已經十分發達,我們平時的各種消費基本上在支付寶和微信上都可以輕松解決。但是無論是支付寶、微信,其實本質上都依賴於一個中心化的金融系統,即使在大多數情況這個系統運行得很好,但是由於信任模型的存在,還是會存在著仲裁糾紛,有仲裁糾紛就意味著不存在 不可撤銷的交易 ,這樣對於 不可撤銷的服務 來說,一定比例的欺詐是不可避免的。在比特幣出來之前,不存在一個 不引入中心化的可信任方 就能解決在通信通道上支付的方案。
比特幣的強大之處就在於:它是一個基於密碼學原理而不是依賴於中心化機構的電子支付系統,它能夠允許任何有交易意願的雙方能直接交易而不需要一個可信任的第三方。交易在數學計算上的不可撤銷將保護 提供不可撤銷服務 的商家不被欺詐,而用來保護買家的 程序化合約機制 也比較容易實現。

假設網路中有A, B ,C三個人。
A付給B 1比特幣 ,B付給C 2比特幣 ,C付給A 3比特幣
如下圖所示:

為了刺激比特幣系統中的用戶進行記賬,記賬是有獎勵的。獎勵來源主要有兩方面:

比特幣中每一筆交易都會有手續費,手續費會給記賬者

記賬會有打包區塊的獎勵,中本聰在08年設計的方案是: 每10分鍾打一個包,每打一個包獎勵50個比特幣,每4年單次打包的獎勵數減半,即4年後每打一個包獎勵25個比特幣,再過四年後就獎勵12.5個比特幣... 這樣我們其實可以算出比特幣的總量:

要說明打包的記錄以誰為準的問題,我們需要引入一個知名的 拜占庭將軍問題 (Byzantine failures)。拜占庭將軍問題是由萊斯利·蘭伯特提出的點對點通信中的基本問題。含義是在存在消息丟失的不可靠信道上試圖通過消息傳遞的方式達到一致性是不可能的。

假設有9個互相遠離的將軍包圍了拜占庭帝國,除非有5個及以上的將軍一起攻打,拜占庭帝國才能被打下來。而這9個將軍之間是互不信任的,他們並不知道這其中是否有叛徒,那麼如何通過遠距離協商來讓他們贏取戰斗呢?

口頭協議有3個默認規則:
1.每個信息都能夠被准確接收
2.接收者知道是誰發送給他的
3.誰沒有發送消息大家都知道
4.接受者不知道轉發信息的轉發者是誰
將軍們遵循口頭規則的話,那就是下面的場景:將軍1對其他8個將軍發送了信息,然後將軍2~9將消息進行轉達(廣播),每個將軍都是消息的接受者和轉發者,這樣一輪下來,總共就會有9×8=72次發送。這樣將軍就可以根據自己手中的信息,選擇多數人的投票結果行動即可,這個時候即便有間諜,因為少數服從多數的原則,只要大部分將軍同意攻打拜占庭,自己就去行動。
這個方案有很多缺點:
1.首先是發送量大,9個將軍之間要發送72次,隨著節點數的增加,工作量呈現幾何增長。
2.再者是無法找出誰是叛徒,因為是口頭協議,接受者不知道轉發信息的轉發者是誰,每個將軍手裡的數據僅僅只是一個數量的對比:

這里我們假設有3個叛徒,在一種最極端的情況下即叛徒轉發信息時總是篡改為「不進攻」,那麼我們最壞的結果就如上圖所示。將軍1根據手裡的信息可以推出要進攻的結論,卻無法獲知將軍裡面誰是叛徒。
這樣我們就有了方案二:書面協議。

書面協議即將軍在接受到信息後可以進行簽字,並且大家都能夠識別出這個簽字是否是本人,換種說法就是如果有人篡改簽字大家可以知道。書面協議相對比口頭協議就是增加了一個認證機制,所有的消息都有記錄。一旦發現有人所給出的信息不一致,就是追查間諜。
有了書面協議,那麼將軍1手裡的信息就是這樣的:

可以很明顯得看出,在最壞的一種情況——叛徒總是轉發「不進攻」的消息之下,將軍7、8、9是團隊里的叛徒。
這個方案解決了口頭協議里歷史信息不可追溯的問題,但是在發送量方面並沒有做到任何改進。

在我們的示例中,比特幣系統里的每個用戶發起了一筆交易,都會通過自己的私鑰進行簽名,用數學公式表示就是:

所以之前的區塊就變成了這樣:

這樣每一筆交易都由交易發起者通過私鑰進行數字簽名,由於私鑰是不公開的,所以交易信息也就無法被偽造了。

如書面協議末尾所說的那樣,書面協議未能解決信息交流過多的問題。當比特幣系統中存在上千萬節點的時候,如果要互相廣播驗證,請求響應的次數那將是一個非常龐大的數字,顯然勢必會造成網路擁堵、節點處理變慢。為了解決這個問題,中本聰乾脆讓整個10分鍾出一個區塊,這個區塊由誰來打包發出呢?這里就採用了工作量證明機制(PoW)。工作量證明,說白了就是解一個數學題,誰先解出來數學題,誰就能有打包區塊的權力。換在拜占庭將軍的例子中就是,誰先做出數學題,誰就成為將軍們裡面的總司令,其他將軍聽從他發號的命令。

首先,礦工會將區塊頭所佔用的128位元組的字元串進行兩次sha256求值,即:

這樣求得一個值Hash,將其與目標值相比對,如果符合條件,則視為工作量證明成功。
工作量證明成功的條件寫在了區塊鏈頭部的 難度數 欄位,它要求了最後進行兩次sha256運算的Hash值必須小於定下的目標值;如果不是的話,那就改變區塊頭的 隨機數 (nonce),通過一次次地重復計算檢驗,直到符合條件為止。

此外, 比特幣有自己的一套難度控制系統,使得比特幣系統要在全網不同的算力條件下,都保持10分鍾生成一個區塊的速率。這也就意味著:難度值必須根據全網算力的變化進行調整。難度調整的策略是由最新2016個區塊的花費時長與期望時長(期望時長為20160分鍾即兩周,是按每10分鍾一個區塊的產生速率計算出的總時長)比較得出的,根據實際時長與期望時長的比值,進行相應調整(或變難或變易)。也就是說,如果區塊產生的速率比10分鍾快則增加難度,比10分鍾慢則降低難度。

PoW其實在比特幣中是做了以下的三件事情。

這樣可以防止一台高性能機器同時跑上萬個節點,因為每完成一個工作都要有足夠的算力。

有經濟獎勵就會加速整個系統的去中心化,也鼓勵大家不要去作惡,要積極地按照協議本來的執行方式去執行。(所以說,無幣區塊鏈其實是不可行的,無幣區塊鏈一定導致中心化。)

也就是說,每個節點都不能以自身硬體條件去控制出快速度。現在的比特幣上平均10分鍾出一個塊,性能再好的機器也無法打破這個規則,這就能夠保證 區塊鏈是可以收斂到共同的主鏈上的 ,也就是我們所說的共識。

綜上,共識只是PoW三個作用中的一點,事實上PoW設計的作用有點至少有這么三種。

默克爾樹的概念其實很簡單,如圖所示

這樣,我們區塊的結構就大致完整了,這里分成了區塊頭和區塊體兩部分。

區塊鏈的每個節點,都保存著區塊鏈從創世到現在的每一區塊,即每一筆交易都被保存在節點上,現在已經有幾百個GB了。
每當比特幣系統中有一筆新的交易生成,就會將新交易廣播到所有的節點。每個節點都把新交易收集起來,並生成對應的默克爾根,拼接完區塊頭後,就開始調整區塊頭里的隨機數值,然後就開始算數學題

將算出的result和網路中的目標值進行比對,如果是結果是小於的話,就全網廣播答案。其他礦工收到了這個信息後,就會立馬放下手裡的運算,開始下一個區塊的計算。
舉個例子,當前A節點在挖38936個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第38936個區塊(前一個區塊為38935)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。
整個流程就像下一張圖所展示的這樣:

簡單來說,雙花問題是一筆錢重復花了兩次。具體來講,雙花問題可分為兩種情況:
1.同一筆錢被多次使用;
2.一筆錢只被使用過一次,但是通過黑客攻擊或造假等方式,將這筆錢復制了一份,再次使用。
在我們生活的數字系統中,由於數據的可復制性,使得系統可能存在同一筆數字資產因不當操作被重復使用的情況,為了解決雙花問題,日常生活中是依賴於第三方的信任機構的。這類機構對數據進行中心化管理,並通過實時修改賬戶余額的方法來防止雙重支付的出現。而作為去中心化的點對點價值傳輸系統,比特幣通過UTXO、時間戳等技術的整合來解決雙花問題。

UTXO的英文全稱是 unspent transaction outputs ,意為 未使用的交易輸出 。UTXO是一種有別於傳統記賬方式的新的記賬模型。
銀行里傳統的記賬方式是基於賬戶的,主要是記錄某個用戶的賬戶余額。而UTXO的交易方式,是基於交易本身的,甚至沒有賬戶的概念。在UTXO的記賬機制里,除了貨幣發行外,所有的資金來源都必須來自於前面某一個或幾個交易。任何一筆的交易總量必須等於交易輸出總量。UTXO的記賬機制使得比特幣網路中的每一筆轉賬,都能夠追溯到它前面一筆交易。
比特幣的挖礦節點獲得新區塊的挖礦獎勵,比如 12.5 個比特幣,這時,它的錢包地址得到的就是一個 UTXO,即這個新區塊的幣基交易(也稱創幣交易)的輸出。幣基交易是一個特殊的交易,它沒有輸入,只有輸出。
當甲要把一筆比特幣轉給乙時,這個過程是把甲的錢包地址中之前的一個 UTXO,用私鑰進行簽名,發送到乙的地址。這個過程是一個新的交易,而乙得到的是一個新的 UTXO。
這就是為什麼有人說在這個世界上根本沒有比特幣,只有 UTXO,你的地址中的比特幣是指沒花掉的交易輸出。
以Alice向Bob進行轉賬的過程舉例的話:

UTXO 與我們熟悉的賬戶概念的差別很大。我們日常接觸最多的是賬戶,比如,我在銀行開設一個賬戶,賬戶里的余額就是我的錢。
但在比特幣網路中沒有賬戶的概念,你可以有多個錢包地址,每個錢包地址中都有著多個 UTXO,你的錢是所有這些地址中的 UTXO 加起來的總和。
中本聰發明比特幣的目標是創建一個點對點的電子現金,UTXO 的設計正可以看成是借鑒了現金的思路:我們可能在這個口袋裡裝點現金,在那個櫃子角落裡放點現金,在這種情況下不存在一個賬戶,你放在各處的現金加起來就是你所有的錢。
採用 UTXO 設計還有一個技術上的理由,這種特別的數據結構可以讓雙重花費更容易驗證。對比一下:

㈧ 比特幣的加密(秘鑰、地址、腳本驗證)

https://en.bitcoin.it/wiki/Address

https://www.cnblogs.com/zhaoweiwei/p/address.html
生成方式:

P2PKH的交易腳本

舉個真實的例子:
ScriptSig:
PUSHDATA(72)[9701] PUSHDATA(33)
[]

這裡面的一個scriptSig由2部分組成,第一部分是簽名,第二部分是公鑰,PUSHDATA(N),表示要壓入棧頂的byte,1個byte表示2個字元,PUSHDATA(72)表示壓入144個字元

Output Scripts
HASH160 PUSHDATA(20)[] EQUAL
DUP HASH160 PUSHDATA(20)[] EQUALVERIFY CHECKSIG

第二個找零output地址因為是P2PKH開頭的,所以格式和描述的一樣

https://www.hibtc.org/2428.html
結合多重簽名一起使用
scriptSig: ..signatures... <serialized script>
scriptPubKey: OP_HASH160 <scriptHash> OP_EQUAL

表示一共有n個參與方,只要有m個參與方同意了這筆交易,則這筆交易就生效了,具體的規則是通過scriptHash裡面的腳本內容決定的
m-of-n multi-signature transaction:
scriptSig: 0 <sig1> ... <script>
script: OP_m <pubKey1> ... OP_n OP_CHECKMULTISIG

ScriptSig:
0[] PUSHDATA(72)[1201] PUSHDATA(71)[01] PUSHDATA1[]

HASH160 PUSHDATA(20)[] EQUAL

結合P2SH的新特徵

https://en.bitcoin.it/wiki/Transaction
目前比特幣支持兩種類型的交易:Pay-to-PubkeyHash、Pay-to-Script-Hash

驗證一筆P2PKH交易的一個輸入是否合法:

總結:先驗證這筆output是不是屬於該用戶,再驗證該用戶的簽名是否有效

參考:
https://blog.csdn.net/jerry81333/article/details/56824166

初級版的比特幣交易
https://www.jianshu.com/p/a57795ec562c

㈨ bitcoin: coinbase的tx結構

查找下 block 400000 的coinbase的交易.

第一個 Transactions 就是 coinbase .

使用rpc命令 getrawtransaction 得到 rawtransaction .

在使用 decoderawtransaction 解析 上一步得到的 rawtransaction ,即 794d88ac00000000

結果如下:

coinbase tx手動分析下

tx結構不一樣 https://btc.com/
bip143

參考:

sipa的回答 https://bitcoin.stackexchange.com/a/20725

https://en.bitcoin.it/wiki/Transaction

https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer

https://bitcoin.stackexchange.com/a/5241

㈩ 交易及記賬(上) | 小白學比特幣之二

在 精讀「Mastering Bitcoin」1 中, 提到比特幣不僅是一個 電子現金 (系統),也是一個公開的賬本,這賬本上記錄了每筆交易的信息。用比特幣交易,其實就跟我們用人民幣或者美元交易買賣東西一樣。作者給比特幣交易行為的定義是:

那麼,在比特幣系統里,是以什麼樣的形式將這些交易記錄下來的呢?

跟傳統記賬一樣,在比特幣系統中也對交易採用復式記賬的方法 (double-entry bookkeeping ledger),直白點翻譯就是雙入口記賬。復式記賬,簡單理解就是以下兩點 [1] :

每一筆交易都要至少在兩個賬戶上進行記錄 ,在會計記賬中有三個基本賬戶也就是資產賬戶、負債賬戶以及所有者權益賬戶,跟會計等式 資產(Assets) = 負債 (Liabiliteis) + 所有者權益 (Equity) 是一一對應的。那麼單獨每個賬戶又是以怎麼樣的方式呈現出來的呢?方法是每個賬戶都需要記錄這個賬戶的debits和credits(見上圖):

說完復式記賬,再回到《Mastering Bitcoin》(精通比特幣) ,在書中,作者給出的記賬例子如下面那張截圖;一筆交易中可以包含多個Input和output。這里的Input和output如何理解呢?

總結一下:

通過作者這句話, 可以看到比特幣系統其實執行的是價值交易。更進一步地,可以理解為價值的輸入和輸出。

上筆交易和下筆交易之間會形成一個「無形的鏈」:

作者用一張圖形象的說明了什麼是「交易鏈」。

對於同一個地址而言,上一筆交易中的output將會作為下一筆交易的輸入,這樣就形成了一個交易鏈。

在上面的交易截圖中,我們可以看到這幾筆交易里有 spent unspent change change 為找零地址,為什麼會有找零地址呢?

比特幣系統中的找零概念和平時用現金交易的找零概念是一樣的,如果你要買一個1塊錢的包子,但是你身上只有一張20塊錢的紙幣,這個時候就需要包子鋪老闆找給你19元零錢。

在比特幣系統中,每一個input就相當於一定面值的紙幣。如果一筆交易中只包含一個Input,為20個BTC,當這個地址向其他地址支付1個BTC時候,就需要對方找還19個BTC。不同的是,比特幣不像紙幣那樣只有幾種面值固定的紙幣,比特幣系統可以隨時創建「新面值」。

出於保護隱私的考慮,找零地址沒必要跟原先的付款地址一樣,通常錢包會生成一個新的找零地址。

在真實應用中,並不會在找零地址旁邊標注 change 的字樣,如下圖顯示(截圖來自blockchain.info上的某筆交易),

比特幣系統可以隨時創建「新面值」來用於找零,而且這「零錢」可以用於下次交易。在每個輸出(output)記錄里,可消費的比特幣數量會被標記成 unspent ,這樣的輸出有一個專門的名字叫做 Unspent Transaction Outputs (UTXO)。可以把unspent的輸出理解為面值不同的、可用於下次消費的紙幣,就好像10元面值紙幣、100元面值紙幣那樣。

[1] Mastering Bitcoin 第二版 https://github.com/bitcoinbook/bitcoinbook
[2] http://learnmeabitcoin.com

熱點內容
doge表情大全 發布:2025-05-26 09:10:50 瀏覽:881
手機屏幕顯示btc 發布:2025-05-26 09:10:43 瀏覽:253
doge是什麼品牌的車 發布:2025-05-26 09:04:44 瀏覽:782
以太坊智能合約實現 發布:2025-05-26 08:59:27 瀏覽:932
32000比特幣是多少人民幣 發布:2025-05-26 08:54:37 瀏覽:565
高一圍繞到遠方去中心意思寫作文 發布:2025-05-26 08:51:22 瀏覽:899
數字貨幣都是資金盤嗎 發布:2025-05-26 08:51:10 瀏覽:841
區塊鏈應用匿名 發布:2025-05-26 08:50:23 瀏覽:607
USDT交易教學網 發布:2025-05-26 08:43:20 瀏覽:863
比特幣行情歷史走勢 發布:2025-05-26 08:38:17 瀏覽:961