官术网_书友最值得收藏!

2

數(shù)字貨幣基本原理

(一)防止貨幣偽造

對于杜絕偽造貨幣,比特幣的解決方案是保留所有貨幣的所有流通信息(即全網(wǎng)總賬本),可對每一個貨幣的來源進(jìn)行追溯,一直到創(chuàng)造出該貨幣的那個時刻;每進(jìn)行一次交易,就多記錄一次流通信息,并在點對點網(wǎng)絡(luò)上進(jìn)行廣播,使得所有節(jié)點(即參與流通渠道維護(hù)的所有計算機(jī))都保存有全部貨幣的全部流通信息。這樣任意一個節(jié)點在交易之前就可以輕松發(fā)現(xiàn)偽造的貨幣,從而杜絕偽造貨幣的流通。

(二)防止重復(fù)支付

為了防止同一個貨幣被同一個人重復(fù)花費(fèi),中本聰采用了工作量證明法。如前所述,每個交易都要向網(wǎng)絡(luò)進(jìn)行廣播,重復(fù)花費(fèi)多次就意味著多次廣播關(guān)于同一個比特幣的交易。其他網(wǎng)絡(luò)節(jié)點將把其接收到的其中某一次交易放到一個區(qū)塊A內(nèi)(一個區(qū)塊包含了多個近期的交易單)進(jìn)行驗證,驗證方法是進(jìn)行一次耗時的計算,如果計算成功,則向全網(wǎng)進(jìn)行廣播。如果另一個節(jié)點在區(qū)塊A的基礎(chǔ)上完成了下一個區(qū)塊B的驗證,它就會把B的區(qū)塊掛在A區(qū)塊之后,依此類推,形成一個區(qū)塊鏈。

對于同一比特幣的多次交易會形成多個區(qū)塊鏈,最終的結(jié)果就是:哪個鏈條最長,哪個交易就被確認(rèn)為有效,其他交易則被廢棄。這樣就確保了一個比特幣只能被一個人支付一次。

(三)無須第三方監(jiān)管

通過工作量證明法,比特幣還基本杜絕了非法篡改歷史交易記錄的可能性,因為歷史記錄一旦被篡改,就意味著某個比特幣的交易記錄出現(xiàn)了一個新分支,篡改者需要自行對新分支進(jìn)行驗證;與此同時,其他所有網(wǎng)絡(luò)節(jié)點仍在老分支上進(jìn)行驗證,持續(xù)構(gòu)造驗證鏈,除非篡改者擁有超越其他所有網(wǎng)絡(luò)節(jié)點之和的計算能力,否則它的分支增長速度永遠(yuǎn)無法追上老分支,結(jié)果是他的篡改行為必將被宣告無效。

在所有節(jié)點上保存全部交易記錄,通過耗時的計算對交易進(jìn)行驗證,二者結(jié)合起來,就構(gòu)成了一個安全、可靠的去中心化的支付系統(tǒng)。其本質(zhì)是把集中監(jiān)管的工作量交付給一個人人參與的龐大網(wǎng)絡(luò),網(wǎng)絡(luò)中的所有節(jié)點都承擔(dān)監(jiān)管職責(zé)。如欲偽造貨幣或欺騙其他用戶,就是與整個網(wǎng)絡(luò)作對,因而無法得逞。

(四)比特幣的發(fā)行

比特幣的發(fā)行源于貨幣流通渠道自身。由于每個比特幣的每筆交易都需要進(jìn)行驗證,為了鼓勵節(jié)點全身心投入驗證以維護(hù)系統(tǒng)的正常運(yùn)作,中本聰提出了相應(yīng)的激勵機(jī)制:“對每個區(qū)塊的第一筆交易進(jìn)行特殊化處理,該交易產(chǎn)生一枚由該區(qū)塊創(chuàng)造者(也就是第一個對交易進(jìn)行成功驗證的人)擁有的新的電子貨幣。這樣就增加了促使節(jié)點支持該網(wǎng)絡(luò)的激勵,并在沒有中央集權(quán)機(jī)構(gòu)發(fā)行貨幣的情況下,提供了一種將電子貨幣分配到流通領(lǐng)域的方法”, “如果某筆交易的輸出值小于輸入值,那么差額就是交易費(fèi),該交易費(fèi)將被增加到該區(qū)塊的激勵中”。也就是說,第一批比特幣可被視為“創(chuàng)世紀(jì)”比特幣,在被“創(chuàng)造”出來之后進(jìn)行流通,后續(xù)比特幣通過驗證“創(chuàng)世紀(jì)”比特幣參與的交易產(chǎn)生,再加入流通渠道,產(chǎn)生滾雪球效應(yīng),從而使得比特幣越來越多。

但是比特幣無法永遠(yuǎn)增加,由于算法本身的設(shè)計,每4年產(chǎn)生的比特幣數(shù)值會減半,因而最終比特幣的數(shù)量會趨近于2100萬個。

因為對比特幣系統(tǒng)進(jìn)行維護(hù)的人可以通過復(fù)雜的計算獲得比特幣獎勵,過程類似于礦工挖礦,因此維護(hù)者被稱為“礦工”,其維護(hù)行為被稱為“挖礦”。值得注意的是,“礦工”自帶設(shè)備(一般為定制化的計算機(jī),又稱礦機(jī))、自發(fā)參與維護(hù),因而人數(shù)很多且時刻變化,不會形成固定的“第三方監(jiān)管者”。而在特定的時間間隔內(nèi),只有一個礦工能夠得到獎勵,挖礦的爭奪非常激烈,從而保證了系統(tǒng)的安全性和穩(wěn)固性。

(五)挖礦

比特幣的本質(zhì)是一個互相驗證的公開記賬系統(tǒng),而挖礦的本質(zhì)則是在爭奪記賬權(quán)。從工作內(nèi)容來看,“挖礦”是將過去一段時間內(nèi)發(fā)生的、尚未經(jīng)過網(wǎng)絡(luò)公認(rèn)的交易信息收集、檢驗、確認(rèn),最后打包加密成為一個無法被篡改的交易記錄信息塊,從而成為這個比特幣網(wǎng)絡(luò)上公認(rèn)已經(jīng)完成的交易記錄,永久保存。

在比特幣的世界里,大約每10分鐘會向公開賬本上記錄一個數(shù)據(jù)塊,這個數(shù)據(jù)塊里包含了這10分鐘內(nèi)全網(wǎng)已被驗證的交易。因為所有的挖礦計算機(jī)都在嘗試打包這個數(shù)據(jù)塊提交,于是最后以誰提交的為最終結(jié)果,是需要爭奪的。最終成功生成那個“交易記錄塊”(即區(qū)塊)的人,可以獲得伴隨這些交易而生成的交易費(fèi)用,外加一筆額外的報酬。交易費(fèi)用一般都是轉(zhuǎn)出資金方自愿提供給挖礦者的,因此不是系統(tǒng)新增的貨幣;額外的報酬是新生成的比特幣——這就是前面所說的“比特幣的發(fā)行”。

比特幣的有限性就由“額外的報酬”數(shù)量來控制。依據(jù)比特幣系統(tǒng)的設(shè)計,大約每10分鐘可以生產(chǎn)一個“交易記錄塊”,最初每生產(chǎn)一個“交易記錄塊”可以獲得50比特幣的額外報酬,這意味著比特幣網(wǎng)絡(luò)每天增加7200個比特幣,但是該報酬每4年就會減半,因此最終整個系統(tǒng)中最多只能有2100萬個比特幣。

(六)區(qū)塊鏈

礦工們?yōu)闋帄Z記賬權(quán)所運(yùn)行的計算,實際上是根據(jù)哈希值反向求解隨機(jī)數(shù)。大家比賽的是在10分鐘內(nèi)看誰找到一個隨機(jī)數(shù),這個隨機(jī)數(shù)與上一個數(shù)據(jù)塊的哈希以及10分鐘內(nèi)驗證過的新交易記錄合起來可以得到滿足某個條件的最小哈希值。這個值越小對應(yīng)的比特幣網(wǎng)絡(luò)的難度系數(shù)越高。由于哈希值的結(jié)果相當(dāng)隨機(jī),無法預(yù)知結(jié)果大小,所以只能采取窮舉法比拼算力。如果某個礦工10分鐘內(nèi)沒搶到記賬權(quán),就只能等待下一輪的競爭。

之所以在求解隨機(jī)數(shù)時要加上一個區(qū)塊的哈希,是因為這樣所有的數(shù)據(jù)塊就被組成了一條可以從前到后不斷驗證的數(shù)據(jù)鏈條。修改中間任何一個數(shù)據(jù)塊的任何交易記錄,都會導(dǎo)致從此之后的所有數(shù)據(jù)塊的哈希無法驗證成功,而如果企圖修改記錄后重新找一個合理值算出符合條件的哈希重新打包,那就意味著之后所有的數(shù)據(jù)塊都需要重新計算哈希,即使都找到了還必須比整個比特幣網(wǎng)絡(luò)計算得更快,才能讓網(wǎng)絡(luò)接受你的結(jié)果,這意味著攻擊者要擁有超過整個比特幣網(wǎng)絡(luò)其他部分的計算力,換句話說,要使用超過整個網(wǎng)絡(luò)50%以上的計算力才能保證攻擊有效。

這個數(shù)據(jù)鏈條就稱為區(qū)塊鏈,又稱全網(wǎng)總賬本,它永久保存在每個用戶的計算機(jī)上。只有擁有50%以上全網(wǎng)算力才可能篡改這個全網(wǎng)總賬本,比特幣系統(tǒng)就是通過區(qū)塊鏈+“挖礦”的機(jī)制實現(xiàn)了貨幣無法被偽造、交易無法被篡改和雙重支付無法得逞的目標(biāo)。

(七)計算難度與確認(rèn)次數(shù)

礦工找到一個有效的哈希值后,就會迅速把生成的數(shù)據(jù)塊轉(zhuǎn)發(fā)出去,別的礦工收到并認(rèn)可這個數(shù)據(jù)塊后,就會以它為基礎(chǔ)進(jìn)行下一輪的計算。如果期間收到具有更小哈希值的塊,則首先以數(shù)據(jù)鏈長度為優(yōu)先,其次以哈希值更小為優(yōu)先,拋棄之前的結(jié)果,在新的基礎(chǔ)上繼續(xù)進(jìn)行下一輪計算。

為了自動協(xié)調(diào)比特幣的發(fā)行速度,系統(tǒng)根據(jù)之前若干數(shù)據(jù)塊生成的平均速度自動調(diào)整挖礦難度。如果之前數(shù)據(jù)塊的生成時間低于10分鐘,就把難度提高,如果高于10分鐘就自動把難度降低。難度提升很簡單,就是降低哈希值的下限,由于哈希算法的特性,這會造成計算量的指數(shù)級上升,因而會增加礦工計算的時間。

對于某筆特定的比特幣交易(主要指轉(zhuǎn)賬,即把比特幣由一個地址轉(zhuǎn)到另外一個地址),正常情況下,這筆交易的交易單會被打包到當(dāng)前的數(shù)據(jù)塊中。當(dāng)某個礦工計算出了滿足當(dāng)前數(shù)據(jù)塊要求的哈希值并廣播出去,這筆交易得到第1次確認(rèn)。其他礦工過10分鐘后把新的數(shù)據(jù)塊掛接在當(dāng)前數(shù)據(jù)塊之后,區(qū)塊鏈延長,每延長一個塊就意味著得到的確認(rèn)加1。當(dāng)一筆交易獲得了6次確認(rèn),就可以認(rèn)為這筆交易已經(jīng)得到了全網(wǎng)的認(rèn)同,合法、有效,而且不可撤銷。

(八)客戶端錢包軟件

在比特幣體系里,用戶的賬戶(地址)由本地客戶端自動生成,是類似1Gz9XmfTK4aH89MVXky1QxtyMcG44NqDRv的一串字符。用戶告訴別人這一地址后,對方就可以向該地址轉(zhuǎn)賬了。

比特幣地址其實是一套非對稱密鑰對中的公鑰,這對密鑰通過橢圓曲線算法生成,其獨特之處在于:使用公鑰加密一段信息后,使用公鑰解不開,必須使用私鑰才可以解開;同樣,使用私鑰加密一段信息后,使用私鑰解不開,必須使用公鑰才可以解開。更加獨特的是,根據(jù)私鑰可以很容易地算出公鑰,但是根據(jù)公鑰幾乎無法算出私鑰。

因此,用戶可以把自己的地址(公鑰)告訴別人,與其進(jìn)行加密通信。例如,用戶A把自己的公鑰告訴B,然后以自己的私鑰加密信息,用戶B用A的公鑰解開這份加密信息,并可確認(rèn)該信息由A發(fā)出(因為只有用A的公鑰才可以解開);用戶B用A的公鑰加密信息,用戶A用自己的私鑰解開這份加密信息,并可確認(rèn)該信息是發(fā)給自己的(因為只有用自己的私鑰才能解開)。但是用戶絕不能把私鑰告訴別人,因為私鑰唯一確定了地址(公鑰)的所有權(quán),而且無法通過公鑰計算出來。一旦告訴了別人自己的私鑰,就等于把該地址里所存的比特幣拱手讓給了對方,對方可根據(jù)私鑰計算出公鑰(地址),然后從區(qū)塊鏈(全網(wǎng)總賬本)中查找該地址關(guān)聯(lián)的比特幣信息,并動用這些比特幣。

用戶賬戶的地址和私鑰都保存在比特幣錢包文件里,一般情況下私鑰是看不見的,由比特幣客戶端軟件自動進(jìn)行加密、解密運(yùn)算。因此,錢包文件必須妥善保管,一旦丟失,錢包里所有地址保存的所有比特幣就不安全了,有可能被別人盜走。由于整套比特幣體系的去中心化和匿名性特性,比特幣一旦被盜,沒有任何人有權(quán)力或能力找回。

用戶賬戶的地址及對應(yīng)的私鑰均由客戶端軟件自動生成。由于可使用的地址數(shù)目足夠多,理論上超過2160個,而全世界的沙粒僅有約263個,每粒沙子都可以分配297個地址,仍然是一個巨大的天文數(shù)字。因此,不同用戶賬戶地址重合的可能性基本上不存在。由于賬戶地址輸入錯誤,導(dǎo)致這一地址恰好是別人賬戶地址的概率,比飛入你眼中的一粒沙,恰好是去年你在海灘踩到的一粒沙的概率還小得多。

(九)比特幣轉(zhuǎn)賬

因為比特幣不存在現(xiàn)金交易的概念,一切的交易都依靠賬戶間的數(shù)字轉(zhuǎn)移,所以比特幣的支付概念類似于銀行轉(zhuǎn)賬。假設(shè)A有100個比特幣,他要轉(zhuǎn)賬給B。那么A寫一條信息“從A的地址轉(zhuǎn)賬100比特幣到B的地址”,然后用自己錢包里的私鑰加密并傳播到整個比特幣網(wǎng)絡(luò)上,網(wǎng)絡(luò)上的人都用A的地址(公鑰)解密驗證這條信息確實是由A發(fā)出,而通過歷史交易數(shù)據(jù)計算出A的地址確實擁有100個比特幣,于是整個網(wǎng)絡(luò)公認(rèn)此次轉(zhuǎn)賬操作,搶得記賬權(quán)的礦工把當(dāng)前時間區(qū)間內(nèi)的所有交易記錄(當(dāng)然包括A給B的轉(zhuǎn)賬)打包掛在區(qū)塊鏈上,A錢包中存款減少100比特幣,B錢包中存款增加100比特幣,并顯示該筆轉(zhuǎn)賬被確認(rèn)了一次。大約一個小時后,6次確認(rèn)完成,B獲得了這100個比特幣的支配權(quán),這次轉(zhuǎn)賬徹底完成。

非對稱加密技術(shù)使這個轉(zhuǎn)賬過程得以順利實現(xiàn),礦工的挖礦則保證了交易的合法性、有效性和不可撤回性。

(十)匿名與公開

由于沒有傳統(tǒng)銀行開戶和身份認(rèn)證的過程,比特幣系統(tǒng)是純匿名的,即無法把用戶賬戶的地址與用戶本人相關(guān)聯(lián),擁有某個地址私鑰的人就擁有對該地址的唯一所有權(quán)。雖然我們可以根據(jù)本地完整的交易記錄查詢每個賬號的流水信息,但卻幾乎沒有辦法知道這個賬號的主人是誰。只要愿意,每個人都可以擁有幾乎無限個地址。同樣也沒有任何人有能力操作他人賬號上的比特幣。這是人類歷史上第一次從技術(shù)上保障了“貨幣”不可追蹤、不可凍結(jié)、不可未經(jīng)許可而占有。

反之,賬戶所有人可以輕易證明自己擁有某個地址上的財富。只需要使用私鑰加密一條信息發(fā)布出來,大家就可以確認(rèn)他對該賬戶的擁有權(quán),而不必把私鑰公開,這同樣適用于證明某筆匿名支付確實由某人發(fā)出。

當(dāng)然,雖然比特幣系統(tǒng)是匿名的,但若一個組織愿意公開自己的比特幣賬號,那么整個網(wǎng)絡(luò)可以隨時追蹤到該賬號的所有流水信息。每一筆轉(zhuǎn)賬的到賬時間、數(shù)額和支出都可以清晰地看到,相當(dāng)于直接查詢銀行內(nèi)部原始賬單。對于NGO(非政府組織)或公益組織來說,可以大幅降低賬目維護(hù)成本,做到100%的透明度。2013年的蘆山地震,壹基金就曾接受比特幣捐贈,其比特幣賬目在網(wǎng)絡(luò)上清晰可查。

(十一)不可撤銷與不可找回

前面已經(jīng)提到,如果一筆交易被確認(rèn)了足夠多次,該交易即不可撤銷、不可逆轉(zhuǎn)。這意味著,如果一個人錯誤地把比特幣打到另外一個人的合法地址中,除非對方愿意把比特幣再打回來,否則這個人的比特幣將永遠(yuǎn)無法追回。因為比特幣世界不存在仲裁者,無法強(qiáng)制用戶進(jìn)行操作,因此錯誤的交易能否被挽回,只取決于對方的自覺性。

基于同樣的原因,如果用戶的錢包文件(私鑰)損壞,就意味著錢包包含的所有地址上的所有比特幣都徹底丟失了,徹底躺在了交易記錄的歷史中,任何人都可以看到它,但卻得不到。因為這里可沒有拿身份證找回這一碼事。而如果想通過破解私鑰的辦法拿回丟失的比特幣,只能等到量子計算機(jī)出現(xiàn)了。依據(jù)當(dāng)前的加密理論,只有量子計算機(jī)才有可能在較短時間內(nèi)破解橢圓曲線加密算法。

主站蜘蛛池模板: 太仆寺旗| 龙口市| 宜君县| 长阳| 伊金霍洛旗| 碌曲县| 嘉义县| 连南| 江华| 茂名市| 方城县| 富阳市| 犍为县| 珲春市| 定州市| 永定县| 桂阳县| 尼玛县| 西宁市| 交城县| 福海县| 会同县| 于都县| 齐河县| 来凤县| 漯河市| 卓资县| 综艺| 政和县| 嵊州市| 江孜县| 大余县| 疏附县| 仁布县| 镇康县| 望谟县| 共和县| 孝感市| 手游| 精河县| 乌拉特中旗|