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