比特幣的起源
區(qū)塊鏈的歷史起始于比特幣,它是世界上第一個(gè)加密貨幣。它的創(chuàng)造者是一個(gè)被稱(chēng)為“中本聰”的神秘人。此人提出了一個(gè)愿景,就是創(chuàng)造一種完全去中心化的數(shù)字貨幣,也就是說(shuō),再也沒(méi)有一個(gè)單一實(shí)體可以控制這種貨幣并且控制貨幣的轉(zhuǎn)移、創(chuàng)造和存儲(chǔ)。
這種數(shù)字貨幣將完全屬于使用它的人。
為此,中本聰制定了一個(gè)對(duì)等計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議。當(dāng)比特幣網(wǎng)絡(luò)上的某一用戶(hù)A想要將比特幣轉(zhuǎn)移給另一個(gè)用戶(hù)B時(shí),A必須把要與B進(jìn)行新交易的意圖在同一時(shí)刻通知網(wǎng)絡(luò)上的其他用戶(hù)。
根據(jù)網(wǎng)絡(luò)規(guī)則,所有網(wǎng)絡(luò)內(nèi)的計(jì)算機(jī)都必須存儲(chǔ)所有比特幣完整的交易歷史。這就好比是每臺(tái)電腦都有一個(gè)賬本,記錄著在網(wǎng)絡(luò)上所有人比特幣的交易情況。這種去中心化的過(guò)程使比特幣不僅擺脫了由單一方控制的集中數(shù)據(jù)庫(kù),還能有效維持交易歷史。
為了準(zhǔn)確地跟蹤加密貨幣的流動(dòng)狀態(tài),這些比特幣賬本必須存儲(chǔ)相同的信息。然而,網(wǎng)絡(luò)是不可靠的。在用戶(hù)可以隨意進(jìn)出網(wǎng)絡(luò)的情況下,使每個(gè)人的賬本都保持完全同步還存在一些困難。
這就需要引入?yún)^(qū)塊鏈來(lái)幫助解決上述問(wèn)題。
解決方案:區(qū)塊鏈
用戶(hù)將交易寫(xiě)入賬本時(shí),不是一次寫(xiě)一個(gè),而是成批地寫(xiě)。這種批量寫(xiě)入的交易就被稱(chēng)為“塊”。
一些被稱(chēng)為“礦工”的用戶(hù)負(fù)責(zé)創(chuàng)建這些塊。礦工們通過(guò)網(wǎng)絡(luò)來(lái)監(jiān)測(cè)用戶(hù)們是否進(jìn)行了比特幣交易。一旦一個(gè)交易被抓取到并記錄下來(lái),那么發(fā)現(xiàn)此次交易的礦工就可以發(fā)布?jí)K,這個(gè)塊包含了所有新交易。新發(fā)布的塊中其實(shí)不僅包含新交易,也囊括了此前所有的交易。
在礦工將一個(gè)塊發(fā)布到網(wǎng)絡(luò)前,首先要確保每個(gè)用戶(hù)的交易真實(shí)有效。判斷標(biāo)準(zhǔn)是一組預(yù)定義的規(guī)則(這個(gè)規(guī)則指的是,比如不可以花費(fèi)自己賬戶(hù)上沒(méi)有的錢(qián),以及錢(qián)不是憑空捏造的等等)。一旦確定新塊真實(shí)有效,礦工就會(huì)把它添加到不斷增長(zhǎng)的交易列表中。由此,這些不斷增多的交易塊被稱(chēng)為區(qū)塊鏈。用戶(hù)可將交易歷史存儲(chǔ)在一個(gè)塊鏈的數(shù)據(jù)庫(kù)中。
區(qū)塊鏈還有各種各樣的奇妙之處,它允許通過(guò)網(wǎng)絡(luò)安全發(fā)送加密貨幣。
如果你想了解更多關(guān)于如何開(kāi)展挖掘工作、去中心化系統(tǒng)如何抵御攻擊、比特幣如何使用密碼提供訪問(wèn)資金通道,或者想深入了解決策等內(nèi)容,請(qǐng)閱讀CertiK介紹比特幣的系列文章。
在區(qū)塊鏈上進(jìn)行交易的流程:
· 區(qū)塊鏈?zhǔn)且粋€(gè)數(shù)據(jù)庫(kù),它以相同的副本存在于世界各地的計(jì)算機(jī)中。
· 當(dāng)用戶(hù)想在區(qū)塊鏈上進(jìn)行或處理交易,就必須將此交易內(nèi)容發(fā)送出去,等待礦工將其發(fā)布到新塊中。要使一個(gè)塊真實(shí)有效,就必須得到網(wǎng)絡(luò)上所有用戶(hù)的認(rèn)可。
· 一旦發(fā)布了新塊,用戶(hù)的新交易就會(huì)被添加到區(qū)塊鏈中。
· 交易不能被刪除或者撤銷(xiāo),它們將永遠(yuǎn)被記錄在區(qū)塊鏈歷史中。
區(qū)塊鏈?zhǔn)俏覀冇涗浗灰椎姆绞?,也是比特幣等去中心化加密貨幣的支柱。要讓每個(gè)人都將所有交易記錄下來(lái),就必須要達(dá)成一個(gè)共識(shí),而這個(gè)共識(shí)必須是不易被破解或改變的。
閱讀到這里時(shí),相信你已經(jīng)了解了區(qū)塊鏈的基礎(chǔ)知識(shí)。
以太坊和智能合約
如果區(qū)塊鏈系統(tǒng)不僅僅用于交易和付款呢?如果我們做到一組信息和規(guī)則達(dá)成一致后,再更改這些信息,結(jié)果會(huì)是如何?
在比特幣中,被追蹤的信息集是網(wǎng)絡(luò)上每個(gè)用戶(hù)的比特幣資金。信息集的規(guī)則非常簡(jiǎn)單:沒(méi)有人可以花別人的錢(qián),沒(méi)有人可以花自己沒(méi)有的錢(qián),區(qū)塊鏈本身的框架也編碼了一些其他的規(guī)則和限制。
然而,區(qū)塊鏈不應(yīng)該被限制在簡(jiǎn)單的資金轉(zhuǎn)移領(lǐng)域。理論上講,我們存儲(chǔ)的信息可以是我們想要存儲(chǔ)的任何東西,我們也應(yīng)該憑借自己的想法去修改它的規(guī)則。
這是一個(gè)改變數(shù)字世界的發(fā)現(xiàn)。
設(shè)想一個(gè)標(biāo)準(zhǔn)計(jì)算機(jī)程序:它始于接受用戶(hù)輸入的某個(gè)存儲(chǔ)狀態(tài),然后根據(jù)用戶(hù)輸入,通過(guò)一組預(yù)定的指令來(lái)運(yùn)行及修改該狀態(tài)。
那么任何像這樣的程序都可以被“區(qū)塊鏈化”。用戶(hù)所輸入的狀態(tài)可以在區(qū)塊鏈上表示出來(lái),而任何交易都可以作為這個(gè)計(jì)算機(jī)程序的輸入。代表這些計(jì)算機(jī)程序的指令可以與區(qū)塊鏈網(wǎng)絡(luò)上的每個(gè)礦工和用戶(hù)進(jìn)行交互,他們就可以根據(jù)最新的交易表來(lái)更新?tīng)顟B(tài)。
在比特幣的領(lǐng)域中,我們更新的狀態(tài)是賬戶(hù)余額集。雖然比特幣交易是用戶(hù)自己輸入的,但賬戶(hù)余額其實(shí)是通過(guò)減去支出者的余額,再將交易金額加到接收者賬戶(hù)上計(jì)算出來(lái)的。
區(qū)塊鏈本身只是一個(gè)交易列表,或者也可以說(shuō)是交易狀態(tài)本身。例如雖然所有的帳戶(hù)余額并沒(méi)有寫(xiě)到這個(gè)列表中,但是任何用戶(hù)都可以使用已知的網(wǎng)絡(luò)規(guī)則計(jì)算出當(dāng)前的交易狀態(tài)。
舉個(gè)例子,以太坊是由比特幣愛(ài)好者Vitalik Buterin發(fā)明的。他曾主張?jiān)诒忍貛胖惺褂谩爸悄芎霞s”,但是比特幣社區(qū)拒絕了他的提議。于是他決定自己創(chuàng)建可以替代區(qū)塊鏈的系統(tǒng),而這個(gè)系統(tǒng)可以使用智能合約。
要理解為什么Vitalik要制造以太坊,我們首先要明白什么是智能合約,以及懂得智能合約的重要性。其實(shí),智能合約只是一個(gè)程序,它允許我們以預(yù)定方式對(duì)貨幣流進(jìn)行編程,但對(duì)區(qū)塊鏈?zhǔn)澜鐏?lái)說(shuō),智能合約的意義不止于此。
想象一下,在小區(qū)、小太和小幣這三個(gè)人之間有一份真正的法律合同。這份合同是這樣寫(xiě)的:“如果小太在8月13日前付給小區(qū)1000美元,那么小區(qū)將付給小幣2000美元。否則小區(qū)不會(huì)付錢(qián)給小幣?!?/p>
從某種意義上說(shuō),這是一種根據(jù)一定條件,由法律強(qiáng)制執(zhí)行的轉(zhuǎn)移資金的“程序”。智能合約的原理也是一樣的,但它是由機(jī)器強(qiáng)制執(zhí)行的。這臺(tái)機(jī)器必須牢不可破,并且在沒(méi)有中央權(quán)威的情況下自動(dòng)執(zhí)行。
智能合約可行的基礎(chǔ)是區(qū)塊鏈這項(xiàng)技術(shù)支持用戶(hù)使用傾向的加密貨幣狀態(tài)轉(zhuǎn)移程序。以太坊允許用戶(hù)在區(qū)塊鏈上發(fā)布他們的智能合約,并根據(jù)這些合約指示未來(lái)貨幣的流向。
發(fā)布智能合約時(shí),必須編寫(xiě)以太坊交易,而這個(gè)交易內(nèi)必須含有合約代碼。一旦交易成功,此合約將永遠(yuǎn)成為區(qū)塊鏈狀態(tài)的一部分。
在以太坊上,用戶(hù)和上傳的智能合約都有他們所引用的“地址”。任何人都可以將加密貨幣發(fā)送到他們所希望發(fā)送的地址,從而實(shí)現(xiàn)自由的去中心化交換。
用戶(hù)可以決定要將貨幣發(fā)送到哪里。如果是智能合約發(fā)送了加密貨幣,那么加密貨幣流將由智能合約的代碼確定。這段代碼將決定這些加密貨幣最終是會(huì)支付給另一個(gè)用戶(hù),還是永遠(yuǎn)留在智能合約中。
在以太坊中,交易不止是簡(jiǎn)單的轉(zhuǎn)賬。這些“交易”包括發(fā)布新的智能合約或者與現(xiàn)有的智能合約進(jìn)行交互。
智能合約的某些函數(shù)是公開(kāi)的,允許終端用戶(hù)與之交互。當(dāng)其他用戶(hù)在區(qū)塊鏈上發(fā)布交易,并想要調(diào)用某些函數(shù)時(shí),需要說(shuō)明想要調(diào)用的函數(shù)名稱(chēng)及其參數(shù)。當(dāng)帶有函數(shù)調(diào)用的交易被挖掘和發(fā)布時(shí),以太坊網(wǎng)絡(luò)上的每臺(tái)計(jì)算便以可預(yù)測(cè)的方式在應(yīng)用程序中運(yùn)行并執(zhí)行該函數(shù)。這意味著可以根據(jù)代碼所描述的狀態(tài)變量來(lái)任意轉(zhuǎn)移或修改貨幣。
順便說(shuō)一下,這些應(yīng)用程序雖然被稱(chēng)為“合約”,但并不意味著它們與現(xiàn)實(shí)世界的合約功能等同。在區(qū)塊鏈的世界里一切皆有可能,你可以編寫(xiě)任何想要的程序,在以太坊上發(fā)布包括游戲、拍賣(mài)、分散交換、代幣銷(xiāo)售等等各類(lèi)應(yīng)用程序。
智能合約只是區(qū)塊鏈管家,它可以轉(zhuǎn)移代碼,并為了實(shí)現(xiàn)自動(dòng)化、去中心化世界中的任何可能,不斷升級(jí)。
來(lái)源: CertiK
評(píng)論
查看更多