如何使用 BTC 區(qū)塊瀏覽器 blockchain.info 查詢 BTC 交易信息?
在以太坊世界中, 當(dāng)我們發(fā)起一筆轉(zhuǎn)賬交易, 可以從 Etherscan 這樣的以太坊區(qū)塊鏈瀏覽器上搜索查看交易的詳細(xì)信息, 我在之前有寫過詳細(xì)的關(guān)于 Etherscan 的使用教程, 那么今天, 讓我們來到比特幣的世界, 學(xué)習(xí)如何使用 Blockchain.info來查詢比特幣的交易。
前言
1. 什么是 UTXO 機(jī)制
為了方便大家理解后續(xù) Blockchain 上所顯示的內(nèi)容, 我們還是要首先講解一下 UTXO 機(jī)制, 這也是比特幣和以太坊的一個(gè)重要的區(qū)別。UTXO 代表 Unspent Transaction Output, 它是比特幣交易的基本單位是未經(jīng)使用的一個(gè)交易輸出[1]。UTXO 是不能再分割、被所有者鎖住的或記錄于區(qū)塊鏈中的并被整個(gè)網(wǎng)絡(luò)識(shí)別成貨幣單位的一定量的比特幣[2]。
舉一個(gè)很詳細(xì)的例子來說明, 小明的媽媽想去買兩瓶醬油, 一瓶醬油的價(jià)格是 6 元錢, 但是由于小明的媽媽需要在家做飯, 所以委托小明去商店購(gòu)買, 小明的媽媽給小明 1 張 10 元, 一張 5 元, 和 一張 1 元, 并承諾其中的 1 元錢做為小明的 “跑腿費(fèi)”。于是小明將 1 元錢先 “納入麾下”, 然后到商店, 將 15 元給到售貨員, 換取兩瓶醬油花費(fèi) 12 元。售貨員找回 3 元錢, 小明回到家將三元錢還給媽媽。
在這個(gè)故事中, 10 元和 5 元屬于小明媽媽的 output[注1], 而對(duì)于小明來說, 他充當(dāng)?shù)氖?礦工的角色, 所以小明媽媽給小明的 1 元錢是礦工費(fèi), 而對(duì)于商店售貨員來說, 他的 12 塊錢是 input, 而找回的 3 元錢, 對(duì)于小明媽媽而言, 就是 UTXO。
這里還要提到有趣的一點(diǎn), 就是上述小明媽媽最初拿出的 10 元和 5 元分別是一個(gè) UTXO, 是小明媽媽在買其他貨物的時(shí)候, 作為找零獲得的。并且 10 元和 5 元都是不可分割的。同時(shí)如果一個(gè) UTXO 比一筆交易所需數(shù)量大, 它仍會(huì)被當(dāng)做一個(gè)整體而消耗掉, 但是同時(shí)會(huì)在交易中生成零頭。
圖1-1
2. 比特幣找零地址
上述這個(gè)故事中, 有一個(gè)概念我們要著重講解一下, 就是 “找零機(jī)制”。首先我們要知道, 找零地址可以是我們之前使用的地址 (即轉(zhuǎn)賬地址), 也可以是新的地址。如果我們?cè)谵D(zhuǎn)賬的時(shí)候, 不設(shè)置找零地址的話, 那么所有的 “找零” 都將支付給礦工。在上述例子中, 如果小明買完醬油之后, 小明的媽媽忘記向小明要回找零的 3 元錢, 那這筆錢是不是就被小明 “私吞” 了呢? 同樣, 如果你有 100 個(gè) BTC, 轉(zhuǎn)賬給朋友 1 個(gè) BTC之后, 忘記設(shè)定找零地址, 那么剩下的 99 個(gè) BTC 將全部 “無償” 捐獻(xiàn)給打包這筆交易的礦工。聽上去是不是很可怕?
但是, imToken 的用戶則無需擔(dān)心忘記設(shè)置找零地址, 因?yàn)?imToken 已經(jīng)自動(dòng)幫你完成這一切, 即每次轉(zhuǎn)賬都會(huì)新為你生成一個(gè)找零地址[注2]。
那么有的人會(huì)問道, 為什么每次都要生成一個(gè)新的地址, 用于接收找零代幣? 直接使用原地址接收找零不好嗎? 這個(gè)問題我們會(huì)在下邊談到。
基礎(chǔ)篇
3. 如何查詢轉(zhuǎn)賬地址信息
如果你對(duì)上述概念還是一知半解, 沒有關(guān)系, 我通過實(shí)戰(zhàn)操作再來幫助你深入理解。打開 https://blockchain.info/ 網(wǎng)站, 輸入你的 BTC 轉(zhuǎn)賬地址, 點(diǎn)擊 Search 按鈕, 進(jìn)行查詢。
圖 3-1
這里可以看到, 我當(dāng)前地址曾經(jīng)一共收到過 0.01 個(gè)BTC (Total Received 所顯示), 但是由于我使用 imToken 發(fā)起過一次轉(zhuǎn)賬交易, 所以當(dāng)前的地址中所剩 BTC 為 0 (Final Balance 所顯示)。
這里有一個(gè)問題, 我當(dāng)前地址本來有 0.01 個(gè) BTC, 而我只轉(zhuǎn)出 0.001 個(gè) BTC, 為什么當(dāng)前地址余額變成了 0 ?
其實(shí)這就是文章開篇提到的比特幣 UTXO 機(jī)制, 比特幣為了安全性和匿名性, 可以在每次使用一個(gè)地址轉(zhuǎn)賬過后, 將 “找零” 轉(zhuǎn)向新的地址??梢钥吹綀D 3-2 的 Transactions 類目下一筆轉(zhuǎn)賬交易竟然出現(xiàn)兩個(gè) “收款地址”, 一個(gè)是真正的轉(zhuǎn)賬目標(biāo)地址, 另一個(gè)則是找零地址。但是我們單從地址上無法分辨到底哪個(gè)是找零地址, 哪個(gè)是轉(zhuǎn)賬地址, 只能通過已知哪個(gè)是目標(biāo)地址, 然后使用排除法判斷。但通過我測(cè)試, 一般情況下第一個(gè)都是轉(zhuǎn)賬地址, 第二個(gè)為找零地址 (多筆轉(zhuǎn)賬不適宜)。
圖 3-2
4. 如何查詢交易是否成功
如圖 4-1, 我使用 imToken 中生成的 BTC 地址 19Fbiok5SuP7YWReGDwMp
77tfx1vVDVih1 向 1Aqyai7gLr44DPmPdW3S24YeEKfiiW9foV 地址轉(zhuǎn)賬0.0009 個(gè) BTC, 這時(shí)候交易屬于 Uncomfirmed Transaction 轉(zhuǎn)賬, 也就是說還沒有礦工確認(rèn)打包。BTC 和以太坊目前都是 POW 機(jī)制, 即交易需要礦工打包確認(rèn)。不同的是, 以太坊的出塊速度是 15 秒, 而比特幣需要 10 分鐘。
圖 4-1
我們普遍認(rèn)為確認(rèn)一筆比特幣交易確認(rèn)需要 6 個(gè)區(qū)塊確認(rèn), 但是一般情況下只要看到 1 個(gè)區(qū)塊確認(rèn), 即 1 Comfirmation(如圖 3-2), 就基本可以確定這筆交易成功了, 同時(shí)也可以使用 imToken 查看到余額的變化。
圖 4-2
5. 如何查詢礦工費(fèi)
比特幣和以太坊一樣, 轉(zhuǎn)賬也需要支付足夠的礦工費(fèi)。比特幣的最小計(jì)數(shù)單位是 “聰” (Satoshi, 簡(jiǎn)稱 sat)。其實(shí)在比特幣的底層協(xié)議中, 并沒有規(guī)定每筆交易的礦工費(fèi)需要多少, 只是要求地址中總輸入(input)不小于總輸出(output), 所以從理論上來說, 如果一筆轉(zhuǎn)賬交易不支付礦工費(fèi), 也是會(huì)被礦工打包, 并且交易成功, 但是時(shí)間確是不確定的, 有可能會(huì)等上很多年。
目前比特幣的轉(zhuǎn)賬礦工費(fèi), 是按照交易數(shù)據(jù)字節(jié)大小和 input 以及 output 的數(shù)量來來確定的。數(shù)據(jù)越大, 交易數(shù)量越多, 礦工費(fèi)越多。一般情況下每筆交易的字節(jié)數(shù)在 200 ~ 300 bytes, 而每個(gè) bit 你所愿意支付的費(fèi)用可以自定義, 例如使用 imToken 設(shè)置 20 sat/b, 以圖 5-1 為例。
圖 5-1
這筆交易的數(shù)據(jù)大小是 226 bytes, 而我設(shè)置的礦工費(fèi)是 20 sat/b, 所以我消耗的礦工費(fèi)是 gas fee = 226 * 20 * 10e-8, 大約是 0.0000452 個(gè) BTC。
但其實(shí)絕大多數(shù)錢包服務(wù)商在計(jì)算用戶交易礦工費(fèi)的時(shí)候, 是提前估算好的, 所以會(huì)存在一些偏差。
進(jìn)階篇
6. From -> To OR Input -> Output
用戶在使用 Blockchain 查詢 BTC 交易的時(shí)候, 會(huì)發(fā)現(xiàn)很多和使用 Ethereum 的不同之處。因?yàn)橐蕴粚儆?account 模型, 它是 “From -> To“ 結(jié)構(gòu), 我們發(fā)起轉(zhuǎn)賬時(shí), 每一個(gè) TxId 都包含一個(gè)付款地址和一個(gè)收款地址。
而比特幣則不然, 它是 UTXO 機(jī)制, 即多個(gè) input 可以對(duì)應(yīng)多個(gè) output[注3], 大家可以回憶一下開篇我們講到的故事, 小明的媽媽給小明 10 元和 5 元, 這是兩個(gè) output, 而 input 是 12 元, 但我們可以認(rèn)為 12 元其實(shí)是多個(gè) input, 包括給采購(gòu)商的價(jià)格、給政府的稅收、店家的利潤(rùn)以及成本等等。
圖 6-1
所以我們?cè)诓樵円还P BTC 交易的時(shí)候, 如果輸入交易號(hào)進(jìn)行查詢, 可能會(huì)出現(xiàn)多個(gè)地址同時(shí)向一個(gè)地址發(fā)起一筆交易, 也可能會(huì)出現(xiàn)一個(gè)地址向多個(gè)地址同時(shí)發(fā)起交易。圖 6-1 向我們展示了多個(gè) output 對(duì)應(yīng)一個(gè) input。
7. 關(guān)于 Unable to decode output address
我們?cè)谑褂?blockchain.info 查詢一些交易信息的時(shí)候, 會(huì)發(fā)現(xiàn)如圖7-1這樣的情況, 有些收款地址顯示為 Unable to decode output address, 卻看不到真正的收款地址。那么這個(gè)是怎么回事呢?
點(diǎn)擊交易號(hào), 進(jìn)入該筆交易的詳情, 我們可以看到 Output Scripts 里:`RETURN PUSHDATA(32) [some garbage]` 這個(gè)腳本從 `OP_RETURN` 開始, 被稱為空數(shù)據(jù)輸出, 用于用戶在區(qū)塊鏈中存儲(chǔ)任意數(shù)據(jù)。由于這些輸出數(shù)據(jù)不同于代幣轉(zhuǎn)賬, 是不能進(jìn)行花費(fèi)的, 所以 scripts 腳本不能對(duì)他進(jìn)行有效評(píng)估。但其實(shí)這樣的數(shù)據(jù)輸出大多是伴隨著一個(gè)正常轉(zhuǎn)賬輸出出現(xiàn)的。舉個(gè)例子, 這有點(diǎn)像轉(zhuǎn)賬信息備注, 比如圖7-2, 用戶在做這筆 0.577 個(gè) BTC 轉(zhuǎn)賬的時(shí)候, 就可以將轉(zhuǎn)賬的一些信息寫入這筆交易 “ Alice send to Bob”. 但是這樣的信息是無法進(jìn)行消費(fèi)的, 所以會(huì)永遠(yuǎn)處于 Unspent 狀態(tài), 并且出現(xiàn) Unable to decode output address (無法解析輸出地址) 這樣的情況。
結(jié)語(yǔ)
8. UTXO 的好處
上邊我們?cè)谥v到找零地址的時(shí)候, 拋出一個(gè)問題, 為什么比特幣在做每筆轉(zhuǎn)賬的時(shí)候, 都要設(shè)置新的找零地址。其實(shí)這一點(diǎn), 中本聰在<<比特幣: 一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)>> 里邊, 在談及隱私 (Privacy) 特性時(shí)有提到: “作為額外的預(yù)防措施, 使用者可以讓每次交易都生成一個(gè)新的地址, 以確保這些交易不被追溯到一個(gè)共同的所有者。” [4]
所以說, 比特幣的 UTXO 機(jī)制, 更好的保障了比特幣的匿名性。如果我們?cè)诓榭匆粋€(gè)有多筆輸出的錢包地址情況下, 很難確認(rèn)哪個(gè)是找零地址, 哪個(gè)是收款地址, 除非我們是當(dāng)事人。
作者注:
注[1]: input 和 output 是一個(gè)相互轉(zhuǎn)化的關(guān)系, 因?yàn)槟惝?dāng)前錢包的余額是由 input 得來, 而當(dāng)你發(fā)起轉(zhuǎn)賬時(shí), 他就變成了 output. 所以說 input 和 output 是一個(gè)抽象出來的概念。
注[2]: 在使用 imToken 的時(shí)候, 如果你是使用助記詞導(dǎo)入的比特幣錢包, 那么每次的找零地址, 會(huì)是一個(gè)新的地址。如果你是 WIF 導(dǎo)入, 既使用明文私鑰導(dǎo)入錢包, 那么每次轉(zhuǎn)賬的找零地址, 就是你當(dāng)前錢包的地址, 不會(huì)生成新的接收地址。
注[3]: 這里所說的多個(gè) input 對(duì)應(yīng)多個(gè) output 可以是1個(gè) input 對(duì)應(yīng)多個(gè) output, 也可以是多個(gè) output 對(duì)應(yīng) 1 個(gè) input或者多個(gè) input 對(duì)應(yīng) 多個(gè) output。
參考文獻(xiàn):
1. <<Mastering Bitcoin>>
2. https://bitcoin.stackexchange.com/questions/64504/what-does-unable-to-decode-output-address-mean?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
3. [請(qǐng)問比特幣交易,同一個(gè)txid能有多筆交易嗎? - 區(qū)塊鏈技術(shù)中文社區(qū)](https://bitshuo.com/topic/59a3e901acad6ff75e62978f)
4. <<比特幣: 一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)>>
以上就是如何使用 BTC 區(qū)塊瀏覽器 blockchain.info 查詢 BTC 交易信息?的詳細(xì)內(nèi)容,更多關(guān)于查詢 BTC 交易信息的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)推薦:
BTC(Bitcoin)比特幣錢包基本概念介紹 http://www.dbjr.com.cn/blockchain/801414.html
你可能感興趣的文章
-
BTC(Bitcoin)比特幣錢包基本概念介紹
這篇文章主要介紹了BTC(Bitcoin)比特幣錢包基本概念介紹的相關(guān)資料,希望小編的這篇關(guān)于BTC(Bitcoin)比特幣錢包基本概念介紹的文章,能夠幫助各位投資者對(duì)比特幣錢包有一個(gè)…
2021-12-09 -
區(qū)塊鏈BTCS幣是什么幣?BTCS幣官網(wǎng)總量和上架交易所介紹
這篇文章主要介紹了區(qū)塊鏈BTCS幣是什么幣?BTCS幣官網(wǎng)總量和上架交易所介紹的相關(guān)資料,需要的朋友可以參考下,…
2021-12-03 -
誤將USDT轉(zhuǎn)到BTC比特幣地址?教你用比特派錢包找回USDT
這篇文章主要介紹了誤將USDT轉(zhuǎn)到BTC比特幣地址?教你用比特派錢包找回USDT的相關(guān)資料,希望這篇關(guān)于比特派錢包找回USDT的文章,能夠幫助到各位投資者對(duì)比特派錢包有一個(gè)更加…
2021-11-30 -
閃電比特幣是什么幣?閃電比特幣LBTC怎么樣
這篇文章主要介紹了閃電比特幣是什么幣?閃電比特幣LBTC怎么樣的相關(guān)資料,需要的朋友可以參考下,真的是一款能夠讓人受益的數(shù)字貨幣,立馬就上機(jī)器開干了起來,不過有好東西…
2021-11-30 -
USDT怎么換成BTC?USDT兌換比特幣教程
這篇文章主要介紹了USDT怎么換成BTC?USDT兌換比特幣教程的相關(guān)資料,需要的朋友可以參考下,其實(shí)穩(wěn)定幣USDT是Tether公司基于穩(wěn)定價(jià)值貨幣美元發(fā)行的代幣TetherUSD。…
2021-11-22 -
比特幣錢包哪個(gè)好?好的BTC錢包有哪些?
這篇文章主要介紹了比特幣錢包哪個(gè)好?好的BTC錢包有哪些?的相關(guān)資料,需要的朋友可以參考下,…
2021-11-22 -
Hitbtc注冊(cè)充值提現(xiàn)教程圖文分享?Hitbtc交易平臺(tái)怎么樣?
這篇文章主要介紹了Hitbtc注冊(cè)充值提現(xiàn)教程圖文分享?Hitbtc交易平臺(tái)怎么樣?的相關(guān)資料,需要的朋友可以參考下面小編W為大家整理一篇詳細(xì)的教程,希望能幫助投資君!…
2021-11-15 -
非小號(hào)APP使用教程:BTC指標(biāo)數(shù)據(jù)說明介紹
這篇文章主要介紹了非小號(hào)APP使用教程:BTC指標(biāo)數(shù)據(jù)說明介紹的相關(guān)資料,希望通過這篇關(guān)于BTC指標(biāo)數(shù)據(jù)介紹的文章,可以讓更多人了解BTC指標(biāo),下面一起來看看詳細(xì)的說明介紹…
2023-04-24 -
BTC100交易所怎么提現(xiàn)?BTC100交易所提現(xiàn)人民幣教程
這篇文章主要介紹了BTC100交易所怎么提現(xiàn)?下面小編W為大家整理一篇比較詳細(xì)的教程,希望對(duì)投資君有所幫助!…
2021-09-28 -
OTCBTC是什么交易所?OTCBTC交易所怎么樣?
這篇文章主要介紹了OTCBTC是什么交易所?OTCBTC交易所怎么樣?的相關(guān)資料,希望這篇關(guān)于OTCBTC交易所的全面介紹,能夠幫助各位投資者對(duì)這一交易所有一個(gè)更加全面深入的了解,…
2021-09-24