如何利用地址來(lái)查詢(xún)比特幣交易
在比特幣應(yīng)用開(kāi)發(fā)中,一個(gè)常見(jiàn)的問(wèn)題就是,在知道比特幣地址的情況下,如何查詢(xún)這個(gè)地址上發(fā)生的所有交易?或者類(lèi)似的說(shuō)法,如何查詢(xún)一個(gè)指定的比特幣地址發(fā)生的所有交易? 本文將給出這一問(wèn)題的三種解決方案。
如果要快速掌握比特幣的對(duì)接與應(yīng)用開(kāi)發(fā),推薦匯智網(wǎng)的在線(xiàn)互動(dòng)課程: Java比特幣開(kāi)發(fā)詳解 ----- Php比特幣開(kāi)發(fā)詳解 ----- C#比特幣開(kāi)發(fā)詳解
1、將比特幣交易數(shù)據(jù)存入數(shù)據(jù)庫(kù)由于比特幣的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),不可能直接利用比特幣的原始API來(lái)查詢(xún)指定地址的歷史交易數(shù)據(jù)。因此最樸素(Naive)的第一種解決方案,就是將比特幣區(qū)塊鏈上的每一筆交易數(shù)據(jù)存到自己的數(shù)據(jù)庫(kù)里,然后針對(duì)交易地址信息(例如Scriptpubkey、pubkey或者地址本身)建立索引,這樣就可以在數(shù)據(jù)庫(kù)上自由、高效地查詢(xún)了。
2、利用第三方的服務(wù)樸素的第一種方案需要自己解析比特幣區(qū)塊鏈數(shù)據(jù),自己搭建數(shù)據(jù)庫(kù)環(huán)境,可能你覺(jué)得有點(diǎn)麻煩。好在有很多第三方機(jī)構(gòu)已經(jīng)做了這件繁瑣的事情,并且通過(guò)開(kāi)放API的形式提供出來(lái),你可以直接使。
例如,你可以使用blockchain.info的api來(lái)實(shí)現(xiàn)這個(gè)功能:
$ curl https://blockchain.info/rawaddr/$bitcoin_address
3、換一種比特幣節(jié)點(diǎn)實(shí)現(xiàn)軟件如果你不愿意自己搞數(shù)據(jù)庫(kù),也不愿意使用第三方的開(kāi)放API,還有第三種解決方案,就是換一種支持按比特幣地址查詢(xún)交易的節(jié)點(diǎn)實(shí)現(xiàn)軟件,例如btcd,這是一個(gè)go語(yǔ)言實(shí)現(xiàn)的比特幣節(jié)點(diǎn)軟件,當(dāng)你啟動(dòng)btcd時(shí),只要使用--addrindex標(biāo)志就可以自動(dòng)建立比特幣地址索引了:
$ btcd --addrindex





