時(shí)間:2023-07-09|瀏覽:229
大家好,我是底層組的Alvin。在公眾號(hào)上一期的介紹中提到,Cashbox下一步將添加一個(gè)bitcoin完全去中心化的SPV錢(qián)包。我在項(xiàng)目主要負(fù)責(zé)的任務(wù)就是bitcoin去中心化錢(qián)包的開(kāi)發(fā)。
下面我將從技術(shù)背景和實(shí)現(xiàn)方式兩方面介紹bitcoin的SPV錢(qián)包。
什么是SPV
首先先介紹SPV的概念??赡軐?duì)于不熟悉區(qū)塊的鏈的開(kāi)發(fā)者來(lái)說(shuō),并不熟悉什么是SPV。SPV的全稱(chēng)是簡(jiǎn)單支付認(rèn)證。想要完整的了解SPV的概念,需要先了解BTC的P2P結(jié)構(gòu)。
比特幣的網(wǎng)絡(luò)結(jié)構(gòu),是一個(gè)P2P網(wǎng)絡(luò),也就是一個(gè)點(diǎn)對(duì)點(diǎn)對(duì)等網(wǎng)絡(luò)。每個(gè)比特幣服務(wù),都稱(chēng)為一個(gè)比特幣節(jié)點(diǎn)。完整的比特幣節(jié)點(diǎn)包含路由,區(qū)塊鏈數(shù)據(jù)庫(kù),挖礦,錢(qián)包服務(wù)四種功能的集合。完全擁有這四種功能的節(jié)點(diǎn)又稱(chēng)為全節(jié)點(diǎn)。比特幣主要依靠這種全節(jié)點(diǎn)來(lái)維持運(yùn)行。每個(gè)節(jié)點(diǎn)都參與全網(wǎng)絡(luò)的路由功能,同時(shí)也可能包含其他功能。每個(gè)節(jié)點(diǎn)都參與驗(yàn)證并傳播交易及區(qū)塊信息,發(fā)現(xiàn)并維持與對(duì)等節(jié)點(diǎn)的連接。
一些節(jié)點(diǎn)保有一份完整的、最新的區(qū)塊鏈拷貝,這樣的節(jié)點(diǎn)被稱(chēng)為“全節(jié)點(diǎn)”。全節(jié)點(diǎn)能夠獨(dú)立自主地校驗(yàn)所有交易,而不需借由任何外部參照。和全節(jié)點(diǎn)相對(duì)的,就是SPV節(jié)點(diǎn)。SPV節(jié)點(diǎn)最大的特點(diǎn)就是不需要儲(chǔ)存完整的區(qū)塊鏈數(shù)據(jù)庫(kù),只需要存儲(chǔ)區(qū)塊鏈數(shù)據(jù)頭。根據(jù)比特幣區(qū)塊鏈的設(shè)計(jì),SPV存儲(chǔ)的數(shù)據(jù)大小,只有完整區(qū)塊鏈數(shù)據(jù)大小的1/1000。目前為止,一份比特幣主網(wǎng)的區(qū)塊數(shù)據(jù)大小已經(jīng)超過(guò)300G,而采用SPV技術(shù)的節(jié)點(diǎn),只需要使用幾百m大小的數(shù)據(jù)即可。
由此可見(jiàn),在存儲(chǔ)大小受限的設(shè)備上SPV將是一個(gè)更好的選擇。隨著區(qū)塊鏈的普及,會(huì)有大量的用戶使用手機(jī)來(lái)運(yùn)行區(qū)塊鏈錢(qián)包,在手機(jī)上運(yùn)行超過(guò)300g大小的全節(jié)點(diǎn)顯然不是用戶的最佳選擇。而SPV技術(shù)的使用,使得在手機(jī)上使購(gòu)買(mǎi)比特幣用完全去中心化的bitcoin錢(qián)包成為可能。我們把這種運(yùn)行SPV節(jié)點(diǎn)的應(yīng)用,稱(chēng)為輕錢(qián)包。
去中心化
介紹完SPV的概念之后,我們來(lái)講講完全去中心化。去中心化,一直是我們也研究過(guò)其他的開(kāi)源技術(shù)錢(qián)包,發(fā)現(xiàn)一個(gè)最主要的特點(diǎn):不夠去中心化。
現(xiàn)在區(qū)塊鏈的用戶賬戶數(shù)據(jù)模型主要分為兩大類(lèi),一類(lèi)是以太坊為代表的賬戶模型,還有一類(lèi)是以比特幣為代表的UTXO模型。賬戶模型大致相當(dāng)于銀行賬戶,UTXO模型則又稱(chēng)為UnspentTransactionOutput,是未花費(fèi)的輸出,可以簡(jiǎn)單理解為還沒(méi)有用掉的收款。由于UTXO模型的復(fù)雜性,導(dǎo)致我們拿到一個(gè)用戶地址之后,想要驗(yàn)證用戶的UTXO是一件非常困難的事情。
所以大多數(shù)錢(qián)包有一個(gè)自己的后端。這個(gè)后端主要的功能就是要解決UTXO驗(yàn)證困難的問(wèn)題。后端對(duì)應(yīng)一份完整的區(qū)塊鏈數(shù)據(jù),這樣后端可以對(duì)交易進(jìn)行索引方便查詢UTXO。另一方面,這個(gè)完整的后端對(duì)應(yīng)的是一個(gè)比特幣全節(jié)點(diǎn),廣播交易的功能也交給了后端。從這個(gè)意義上來(lái)看,傳統(tǒng)錢(qián)包不夠去中心化,也不符合SPV的概念。是把一個(gè)去中心化的比特幣,做成了中心化的服務(wù),這個(gè)模型中有太多功能需要依賴(lài)自建的后端。
我們使用的SPV去中心化錢(qián)包,錢(qián)包端存儲(chǔ)的是2百兆左右的區(qū)塊數(shù)據(jù)頭。我們?cè)谌ブ行幕X(qián)包的內(nèi)部,啟動(dòng)的是比特幣的P2P網(wǎng)絡(luò),利用比特幣網(wǎng)絡(luò)協(xié)議直接接入比特幣網(wǎng)絡(luò)去獲取需要的信息。不需要完整的后端支持。大多數(shù)傳統(tǒng)錢(qián)包,都需要把交易有關(guān)的信息傳遞給后端,才可以實(shí)現(xiàn)篩分UTXO和廣播交易的功能,而我們的錢(qián)包,因?yàn)镾PV節(jié)點(diǎn)的存在,直接和和錢(qián)包繼承,在用戶的手機(jī)內(nèi)部即可實(shí)現(xiàn),不需要和我們進(jìn)行數(shù)據(jù)交互。這個(gè)概念是是非常符合去中心化思想的。而且在使用錢(qián)包的過(guò)程中,因?yàn)椴恍枰臀覀兊暮蠖擞惺裁存溄?,用戶完全不?dān)心泄露自己的隱私。用戶最重要的私鑰也存在自己的手機(jī)中,即便需要廣播交易也只是直接接入比特幣P2P網(wǎng)絡(luò)。真正符合區(qū)塊鏈完全去中心化思想。
本期主要講解概念,咱們下期不見(jiàn)不散。
熱點(diǎn):錢(qián)包