比特幣多個輸入地址嗎
Ⅰ 入門科普:比特幣的私鑰、公鑰和地址是什麼
上一篇,我們講到了幣圈要注意防範傳銷、洗錢等一類的騙局,保護好自己的資產。這一篇,我要告訴大家,進行比特幣交易時,都會用到的私鑰、公鑰與地址,如果你還不了解它們的重要性,隨便交易,很容易弄丟自己的資產。那什麼是私鑰、公鑰與地址?三者之間有著什麼樣的關系呢?
01
私鑰
1.導出:
創建錢包後,輸入密碼可以導出私鑰,私鑰由很長的字元串組成,且是隨機生成的, 一個地址只有一個私鑰。
2.用途:
用於控制交易時的簽名,擁有私鑰才能控制賬戶的資金,相當於銀行賬戶的交易密碼,用來解密公鑰加密的信息。
3.注意事項:
私鑰是用來證明這筆交易的發起人確實是比特幣的所有者。所以 私鑰一定不能曝光,私鑰一旦泄露,你的比特幣將會有被盜的風險。 用戶必須保管好私鑰,防止泄露或丟失。
02
公鑰
1.導出:
公鑰是由私鑰通過演算法生成的,使用了橢圓曲線加密, 通過私鑰可以計算出唯一的公鑰。
2.用途:
公鑰是用來驗證交易的簽名,一個私鑰簽名的數據,只有對應的公鑰才能對其進行驗證,公鑰相當於銀行賬戶,公開後無風險。
03
地址
1.導出:
地址由公鑰生成的,使用了哈希運算。創建錢包後會生成一個以「0x」 開頭的 42 位字元串,這個字元串就是錢包地址,一個錢包對應一個錢包地址, 地址唯一且不能修改,也就是說一個錢包中所有代幣的轉賬收款地址都是一樣的。
2.用途:
由於公鑰太長,在交易中不方便使用,所以就有了地址,地址是由公鑰生成的,地址相當於銀行卡號,用來發送和接收比特幣。
3.注意事項:
平台上不同代幣的轉賬收款地址一般都不同,因此,轉幣到交易平台前一定要確認好地址。
總結
私鑰 → 公鑰 → 錢包地址 (不可逆)
私鑰用來簽名交易,公鑰用來驗證私鑰簽名的交易,地址用來收款。
公鑰、私鑰以及地址都在比特幣交易中起到了不同的作用,所以才能順利的完成一筆數字貨幣的交易。 所以用戶必須好好保存,防止泄露重要信息。
Ⅱ 怎樣查看比特幣錢包私鑰
比特幣錢包私鑰在線無法查看,比特幣存在平台要下載core 或者classic才是真正的錢包,然後就可以查看了。
【比特幣錢包私鑰的說明】:
1、錢包加密是指對儲存有私鑰的錢包進行自動加密存儲。 比特幣官方客戶端從0.4.0 版本開始支持錢包加密。加密的錢包在每次付款的時候,都會提示您輸入密碼。如果密碼錯誤,客戶端會拒絕付款。
2、如果用最早備份的錢包(wallet.dat)替換回來,還是一樣可以正常交易。考慮到比特幣的原理應該也可得出,只要有私鑰(錢包)存在,就可以證明你是這個錢包的合法擁有者,不管對這個錢包(核心就是某個地址對應的私鑰)是進行了加密還是刪除,都不能否定它。
3、備份比特幣錢包時,還需注意由於比特幣支付找零機制的存在(比如把一個完整的100 btc中的50 btc發送給某個地址,系統會發送其中的50 btc到對方的地址,並退回50 btc到你客戶端的一個新地址上,這個地址不會直接顯示在你的地址列表中)。
4、每發送了100次比特幣給其它地址或者使用了100個不同的地址接收比特幣後,請重新備份錢包,否則後面交易退回的和接收到的比特幣會永久丟失。 除了給錢包加密外,用戶還可以自行生成離線的紙錢包和腦錢包。
Ⅲ 比特幣系統規定要幾個個體確認後才算交易完成呢
6個區塊確認。
解釋:
A君給B君轉1個比特幣,除了要輸入交易金額1個比特幣外,還需要設置一定量的礦工費,在輸入秘鑰並點擊發送之後,需等待交易打包和6個區塊確認,才能完成這筆轉賬,而這個過程大概需要花費30分鍾~1小時。
比特幣網路上有很多節點,假設B和C節點在短時間差內都計算出工作量證明解,然後把自己挖到的區塊傳播到網路中,先傳播給鄰近節點,而後傳播到整個網路。
B和C礦工的區塊數據是不一樣的,但都是正確的,因此在這一刻出現了兩個都滿足要求的不同區塊,B和C附近進的D、E、F等等礦工在監聽到這個兩個區塊時,是有先後順序區別的。怎麼辦,先入為主,節點把先監聽的區塊復制過來,然後開啟新區塊的挖礦工作。
那這個時候不同節點,同時有不同版本的區塊鏈,而這兩個版本的區塊鏈,都被礦工們繼續開采。但是兩個版本的區塊鏈其增長速是不一樣的,總有一條鏈的長度要超過另一條鏈。當D、E、F等等礦工發現全網路中有一個條更長鏈的時候,他們會拋棄當前較短的鏈,轉到更長鏈上進行挖礦。而那些被礦工成功挖掘的塊,因為不是在最長鏈上而被拋棄了,他們叫過時塊。這些過時塊中的數據,又需要等待重新被寫入區塊中。
當一筆交易獲得6個區塊確認後,從而以確認該交易是在最長分支的區塊鏈里,不可篡改,然後才能夠花費小星轉他的比特幣。
(3)比特幣多個輸入地址嗎擴展閱讀
比特幣交易確認過程
(1)錢包創建交易
錢包軟體通過收集UTXO、 提供正確的解鎖腳本、 構造支付給接收者的輸出這一系列的方式來創建交易。 產生的交易隨後將被發送到比特幣網路臨近的節點, 從而使得該交易能夠在整個比特幣網路中傳播。
(2)交易獨立效驗
每一個收到交易的比特幣節點將會首先驗證該交易,有效的交易將被傳遞到臨近的節點,這將確保只有有效的交易才會在網路中傳播, 而無效的交易將會在第一個節點處就被廢棄。
驗證的交易添加到交易地:驗證交易後, 比特幣節點會將這些交易添加到自己的交易池, 用來暫存尚未被加入到區塊的交易記錄。
(3)節點確認交易
假設有個比特幣網路節點A,其收集到了區塊277,314。接下來A節點做兩件事:1.嘗試挖掘新區塊;2.監聽其他節點是否挖出新的區塊。 如果A節點監聽到了區塊277315,則標志著277,315區塊競爭結束。與此同時開啟區塊277,316的競賽。
A節點在接收並驗證區塊277,315後,會檢查內存池中的全部交易, 移除已經在區塊277,315中出現過的交易記錄,確保任何留在內存池中的交易都是未確認的,等待被記錄到新區塊中,而被移除的交易記錄獲得一次確認交易。把包含在區塊內且被添加到區塊鏈上的交易稱為確認交易。
Ⅳ 比特幣交易構成 你知道多少
交易類型
產量交易(Generation)
每個Block都對應一個產量交易(Generation TX),該類交易是沒有輸入交易的,挖出的新幣是所有幣的源頭。
合成地址交易(Script Hash)
該類交易的接收地址不是通常意義的地址,而是一個合成地址,以3開頭,需要幾對公私鑰一起生成合成地址,在生成過程中可以指定,幾對公私鑰中的幾個簽名以後,就可以消費該地址的比特幣。
通用地址交易(Pubkey Hash)
該類是最常見的交易類型,由N個輸入、M個輸出構成。
輸入和輸出可以御橋旦簡單的理解成,發出幣的地址就是輸入,收到幣的地址就是輸出。
數據結構
字鎮擾段
數據類型
欄位大小
欄位描述
versionuint32_t
4交易數據結構的版本號tx_in countvar_int1+輸入交易的數量tx_intx_in[]41+輸入交易的數組,每個輸入=41位元組
tx_out countvar_int1+輸出地址的數量tx_outtx_out[]9+輸入地址的數組,每個輸入=9位元組lock_timeuint32_t4
lock_time是一個多意欄位,表示在某個高度的Block之前或某個時間點之前該交易處於鎖消慎定態,無法收錄進Block。
值
含義
0立即生效 500000000含義為Block高度,處於該Block之前為鎖定(不生效)= 500000000含義為Unix時間戳,處於該時刻之前為鎖定(不生效)
若該筆交易的所有輸入交易的sequence欄位,均為INT32最大值(0xffffffff),則忽略lock_time欄位。否則,該交易在未達到Block高度或達到某個時刻之前,是不會被收錄進Block中的。
示例
為了演示方便,我們讀取稍早期的塊數據,以高度116219 Block為例。
# ~ bitcoind getblock
{
hash : ,
confirmations : 144667,
size : 1536,
height : 116219,
version : 1,
merkleroot : ,
tx : [
,
,
,
,
],
time : 1301705313,
nonce : 1826107553,
bits : 1b00f339,
difficulty : 68977.78463021,
previousblockhash : ,
nextblockhash :
}
該Block裡面有5筆交易,第一筆為Generation TX,解析出來看一下具體內容:
# ~ bitcoind getrawtransaction 1
{
hex : ,
txid : ,
version : 1,
locktime : 0,
vin : [
{
coinbase : 0439f3001b0134,
sequence : 4294967295
}
],
vout : [
{
value : 50.01000000,
n : 0,
scriptPubKey : {
asm : OP_CHECKSIG,
hex : 41ac,
reqSigs : 1,
type : pubkey,
addresses : [
]
}
}
],
blockhash : ,
confirmations : 145029,
time : 1301705313,
blocktime : 1301705313
}
Generation TX的輸入不是一個交易,而帶有coinbase欄位的結構。該欄位的值由挖出此Block的人填寫,這是一種「特權」:可以把信息寫入貨幣系統(大家很喜歡用系統中的數據結構欄位名來命名站點,例如blockchain、coinbase等,這些詞的各種後綴域名都被搶注一空)。中本聰在比特幣的第一個交易中的寫入的coinbase值是:
coinbase:722062616e6b731
將該段16進制轉換為ASCII字元,就是那段著名的創世塊留言:
The Times 03/Jan/2009 Chancellor on brink of second lout for banks1
接下來展示的是一個三個輸入、兩個輸出的普通交易:
# ~ bitcoind getrawtransaction 1
{
hex : ,
txid : ,
version : 1,
locktime : 0,
vin : [
{
txid : ,
vout : 0,
scriptSig : {
asm : 01 ,
hex :
},
sequence : 4294967295
},
{
txid : ,
vout : 1,
scriptSig : {
asm : 01 ,
hex :
},
sequence : 4294967295
},
{
txid : ,
vout : 1,
scriptSig : {
asm : 1d01 ,
hex :
},
sequence : 4294967295
}
],
vout : [
{
value : 0.84000000,
n : 0,
scriptPubKey : {
asm : OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG,
hex : 76a91488ac,
reqSigs : 1,
type : pubkeyhash,
addresses : [
]
}
},
{
value : 156.83000000,
n : 1,
scriptPubKey : {
asm : OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG,
hex : 76a91488ac,
reqSigs : 1,
type : pubkeyhash,
addresses : [
]
}
}
],
blockhash : ,
confirmations : 147751,
time : 1301705313,
blocktime : 1301705313
}5859606162636465666768
欄位hex記錄了所有相關信息,後面顯示的是hex解析出來的各類欄位信息。下面把逐個分解hex內容(hex可以從上面的直接看到):
01000000 // 版本號,UINT32
03 // Tx輸入數量,變長INT。3個輸入。
/*** 第一組Input Tx ***/
// Tx Hash,固定32位元組
00000000 // 消費的Tx位於前向交易輸出的第0個,UINT32,固定4位元組
8a // 簽名的長度, 0x8A = 138位元組
// 138位元組長度的簽名,含有兩個部分:公鑰+簽名
47 // 簽名長度,0x47 = 71位元組
01
41 // 公鑰長度,0x41 = 65位元組
ffffffff // sequence,0xffffffff = 4294967295, UINT32, 固定4位元組
/*** 第二組Input Tx。與上同理,省略分解 ***/
ffff
/*** 第三組Input Tx ***/
2fffffffff
02 // Tx輸出數量,變長INT。兩個輸出。
/*** 第一組輸出 ***/
00bd010500000000 // 輸出的幣值,UINT64,8個位元組。位元組序需翻轉,~= 0x000000000501bd00 = 84000000 satoshi
19 // 輸出目
Ⅳ 如何挖礦比特幣
說起比特幣,最近可以火熱了。到處互聯網都在討論,甚至在經濟學報在也討論這個神秘的幣種,報紙也在討論可行性,比特幣流行在電腦極客中,這些人都是對自由的嚮往,話說當年中本聰發表論文,到現在比特幣已經逐漸火熱起來。許多國外的網站甚至購物都已經接受了比特幣的付款,國內的比較少。比特幣現在的價值比較高,一個比特產就值三百幾美刀,值人民幣上一千多塊,多麼吸引人呀,但是它就是一個股票,一下漲一貶。比特產有風險,入行請小心。
今天我就把在比特幣探礦的體會和工具寫下來,我也是一個新手,跟喜愛比特幣的人一同分享一下。
1、先下載你的比特幣電子錢包,網路一下Bitcoin客戶端就有,不用注冊的,它是默認綁定你的電腦的,下載安裝好,它就會更你的網路數據塊,這個夠坑爹,聽說是下載所有網路節點的信息,是全世界的,這該有多大,我更新了好幾天都下載完數據塊。
Bitcoin客戶端界面:
2.界面還是比較簡單的,有了這個客戶端,你這可以實現比特幣的付款和收款了。點下圖圈圈處就可以看到下方有一串的數字和字母的字元串,你可以把這串東東復制下來,發給別人,相等你把銀行卡帳號給別人,別人就可以付款了,你點「發送貨幣」,把別人發來的帳號粘貼下就可以輕松給對方付款比特幣,這個過程完全沒有第三方的存在,所以安全放心。
3.介紹一下如何挖礦,也是比特幣產生的重要方式。挖礦工具是guiminer,它是個綠色包,也就文件夾,不用安全,下載下來直接解壓就可以用了,找到下方圖標,雙擊運行。
界面:
4.有了工具就要用到,就要找到一個好地方生產礦產,也是就是礦池,在現在比特幣產量越來越少了,如果個人挖不知何年何月才挖得出比特幣來,如果你是銀河系列超級計算機就另談,個人電腦可以忽略掉,礦池有很多,但號稱比特幣全球最大礦池deepbit,它是網址是
https://deepbit.net/ 登陸網站注冊帳號。點我的帳戶
5、進入我的帳戶信息,這里看到你的礦工信息,帳戶有多少比特幣的分成,c貢獻
6、我的帳戶的具體設置。
1、<你的比特幣地址,用來接收報酬:>在框里內輸入你接受比特幣的地址,不要寫錯了,不然就白挖礦了,上面圖文說過了。
2、《自動支付最小值:》 自己設置,當你在礦池有這么多錢後,這個網站就會自動把錢打到你的上面設置的比特幣帳戶地址。你看所以上面設置重要吧
3設置礦工了,點creat new vorker,中文是創建新的礦工,礦工就可以幫你的挖礦的工人,你可以設置多個,然後在很多電腦一塊開挖,效果更明顯,收入更豐厚
名稱上就隨便寫,要寫英文,外國的東西最好寫英文。
密碼自己寫,不要寫得長,簡單就行了重要性不大
失敗檢測閥值 (1-3600 分鍾): 寫上60就行了,
當礦工不工作時發送郵件通知?* :果斷不選,拒絕垃圾郵件,
礦工支付方式:果斷選按比例拉,多勞多得,這才是符合人類發展。
最後點 sava setting ,就可以保存你的礦工了,返回可以看到你礦工的信息。
7.把礦工信息填入到挖礦工具guiminer,
file->new opencl miner->填入你喜愛的名字-》sever處選擇deepbit-》username填入礦工的,記得要連你的注冊帳號一起形式的你的郵箱加礦工,上面有,密碼你懂的,device 是選擇你用什麼硬體來工作,一般是用顯卡來的,選擇你要用的顯卡,如果找不到,記得更新一下顯卡驅動就可以用了,然後start mining了.就可以坐等收礦了。具體速度要看你電腦配置。
註:礦池還有許多的,工具也有,具體我就不介紹了,只因為我是用我上面的說,誰用誰知道,用了才有發言處,其它的我可能不懂。小心的電費都不夠本,如果真的有了就可以上中國比特幣網買賣比特幣,把它換的真金,對不。
Ⅵ 比特幣機制研究
現今世界的電子支付系統已經十分發達,我們平時的各種消費基本上在支付寶和微信上都可以輕松解決。但是無論是支付寶、微信,其實本質上都依賴於一個中心化的金融系統,即使在大多數情況這個系統運行得很好,但是由於信任模型的存在,還是會存在著仲裁糾紛,有仲裁糾紛就意味著不存在 不可撤銷的交易 ,這樣對於 不可撤銷的服務 來說,一定比例的欺詐是不可避免的。在比特幣出來之前,不存在一個 不引入中心化的可信任方 就能解決在通信通道上支付的方案。
比特幣的強大之處就在於:它是一個基於密碼學原理而不是依賴於中心化機構的電子支付系統,它能夠允許任何有交易意願的雙方能直接交易而不需要一個可信任的第三方。交易在數學計算上的不可撤銷將保護 提供不可撤銷服務 的商家不被欺詐,而用來保護買家的 程序化合約機制 也比較容易實現。
假設網路中有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 設計還有一個技術上的理由,這種特別的數據結構可以讓雙重花費更容易驗證。對比一下:
Ⅶ 比特幣交易怎麼交易費怎麼算
交易手續費怎麼算,可參考以下內容。
1、一般一個普通的比特幣交易由一個輸入和兩個輸出(交易輸出和變更輸出)組成,約200位元組。如果默認收費是每1000位元組0、0001個比特幣,那麼一個比特幣轉賬的手續費大概是0、001-0、002個比特幣。然而,當單個輸入不足以支付輸出時,就會出現上述多個事務輸入構成未用輸出的問題,進而其數據量會變大。但是,未使用的事務輸出的組成越復雜,需要處理的位元組就越多,處理費用就越高。
2、在比特幣的基礎協議中,沒有規定比特幣交易手續費的具體金額,但要求在地址中輸入的總額不小於總產出,即你錢包中的比特幣總額必須大於轉賬金額和手續費金額之和。這一點很好理解。你只有10塊錢,轉賬10塊錢要收1塊錢手續費,也就是說你要花11塊錢,10-11=-1,所以這筆交易自然不能完成。
3、比特幣交易費用由交易數據大小、交易次數等因素決定。比特幣遵循UTXO模型,每個交易包含若干個交易輸入和交易輸出。事實上,每個未使用的事務輸出的組成取決於您的事務輸入。當您需要將一個比特幣轉移到另一個地址時,在您的交易輸入中可能包含五個0、2比特幣或十個0、1比特幣。
Ⅷ 【區塊鏈】什麼是比特幣地址
比特幣地址是一串由字母和數字組成的26位到34位字元串,看起來有些像亂碼。但它就是你個人的比特幣賬戶,相當於你的銀行卡卡號,任何人都可以通過你的比特幣地址給你轉賬比特幣。
它與比特幣私鑰不同,不會因為信息泄露而造成比特幣丟失,因此你可以將比特幣地址放心的告訴任何人。
通過區塊鏈瀏覽器可以查看每個比特幣地址所有的轉賬交易記錄。
常用的比特幣區塊鏈瀏覽器有:
https://btc.com/block
https://www.blockchain.com/zh-cn/explorer
我們常用的比特幣地址格式一般有如下四種。
1、BASE58格式
BASE58格式是人們常見的比特幣地址格式,一般由1開頭的。
例如:
2、HASH160格式
HASH160格式為RIPEMD160演算法對130位公鑰的SHA256簽名進行計算得出的結果 。
例如:
3、WIF壓縮格式
WIF壓縮格式即錢包輸入格式,是將BASE58格式進行壓縮後的結果130位公鑰格式 這是最原始的由ECDSA演算法計算出來的比特幣公鑰。
例如:
4、60位公鑰格式
60位公鑰格式即130位公鑰進行壓縮後得出的結果。
例如:
比特幣是建立在數學加密學基礎上的,中本聰大神用了橢圓加密演算法(ECDSA)來產生比特幣的私鑰和公鑰。
由私鑰是可以計算出公鑰的,公鑰的值經過一系列數字簽名運算會得到比特幣地址。
比特幣地址是由演算法隨機生成,那麼就會有人問,既然都是隨機生成的,那麼比特幣的地址會不會重復呢?關於這個問題,想必就更不用擔心。
因為比特幣的私鑰長度是256位的二進制串,那麼隨機生成的兩個私鑰正好重復的的概率是2 ^ 256 ≈ 10 ^ 77之一,這個數字大到你根本無法想像,比中彩票的概率還要小好多;所以不用擔心的啦,每個人的比特幣地址都是獨一無二的。