過了一把區塊鏈的癮!帶你了解一下!
大家好,我是敖丙。
在很早以前,一個網站還只對應著一個數據庫,所有的數據都以一定規則存儲在某臺服務器上。假設這臺存儲數據的服務器宕機了并且數據還沒有進行備份,那么結局你懂的。。
人們意識到了要將數據或者流量分布在不同的節點上以防止突發情況——分布式技術誕生了。但盡管如此,分布式技術也同樣會帶來些許問題,比如多節點數據同步、以及節點權限等問題。
后來人們思考,是否可以在分布式的思想基礎上做到權限統一、共同維護的特點?就像是每個人手握一份”賬本“,所有人都能看到相同的記錄,然后再統一地校驗數據呢?
于是「分布式賬本」被提倡了出來。秉著”公開透明“、”不可偽造“、”不可篡改“的特點,它成為了區塊鏈的核心,讓區塊鏈迅速進入了人們的視野。
什么是區塊鏈?
6月底,我參加了首屆techoday騰訊技術開放日的活動,了解了區塊鏈的技術背景和市場價值,我決定跟大家分享一下。
使用區塊鏈技術你可以知道一款產品從生產到流通環節的全過程;作為近年來趨于成熟的技術,它被用于支付、產品檢驗等眾多領域。
你可以理解為它是由“區塊” + “鏈”組成,這條鏈接串聯起了一個個區塊。即使分布形式上和傳統數據庫有所不同,其本質功能也是用于承載信息流,每一條信息流都是以數據記錄為基本單位來存儲的。區塊和區塊之間通過廣播的方式進行通信,那么通信的目的又是什么呢?沒錯,一切都是為了交易。
整個區塊鏈其實都是一個不斷實時同步的分布式賬本,每個區塊節點相當于一個賬本。在這個賬本上,每一個動作都可以算作一筆“交易”,這樣一筆筆的交易構成了區塊鏈的全部。
我們上面說了區塊鏈存儲的基本單位是數字記錄,所以你可以理解”交易“的過程就是一筆筆數字被記錄的過程。
知道了交易,我們還需要了解一下另外幾個術語:
上鏈
因為區塊鏈是由一個個賬本連接起來的區塊鏈接。所以想要加入到這條鏈中就需要上鏈登記,這是使用區塊鏈重要的一步。
通過上鏈就可以將我們局域實現的“賬本”共享到區塊鏈。比如想發揮你項目的優勢讓更多人認識你的業務,只需要將它進行上鏈,區塊鏈會將你做的事情都記錄下來并且廣播給其他人。這個記錄是公開透明的,會伴隨著這條鏈永久存在。
那我們要如何創造一條記錄呢?
哈希算法
我們上鏈的每一條記錄必須是系統認可且實際發生過的存在,所以就需要使用到哈希加密。哈希算法想必大家都熟。以MD5算法為例,任何一串字符使用它加密后都會得到一串獨一無二的散列值,只要原輸入有任何改動經過哈希加密后的數字就會完全不同。所以使用區塊鏈之后任何信息都無法更改,即便你是系統管理員。這就保證了信息的安全透明。
智能合約
啥是合約嘞?舉一個生活中的栗子,假如你往自動售貨機里面投入了兩枚硬幣,因為售貨機已經事先設置了固定程序,所以它會吐出你所選的飲料出來。這就是你和售貨機之間的“合約”。
區塊鏈的智能合約,就是你事先在區塊鏈平臺定義的固定承諾。因為區塊鏈的特點是“數字化”,所以智能合約就是用數字和程序的方式定義的“承諾“,所有的行為都基于這一系列承諾而執行。所以我們的應用開發過程在區塊鏈就是一個寫合約的過程。
另外,這一系列合約記錄都是不可刪除的喲。
怎么用?
還是拿騰訊云為例,我帶大家手把手操作。
首先進入騰訊云TBaaS官網https://console.cloud.tencent.com/tbaas/ ,點擊「免費體驗長安鏈」-選擇適合自己的測試組織-之后進入控制中心。
來到長安鏈區塊鏈網絡的控制中心,你就可以看到節點的整體情況了。
騰訊云一共提供了4個組織4個節點,每個節點都是16核,32G和1000GB的磁盤存儲。好家伙,這個配置實屬是高呀。
你可以看到其它用戶的上鏈信息和交易列表。
正如你所見的,區塊鏈上的交易信息都是透明的,包括交易筆數,交易時間和組織等。
ok,在知道了它的整體布局之后,下一步的操作就是去安裝智能合約。
長安鏈為我們提供了智能合約Demo,使用的合約語言是長安鏈自研的DockerGo,我們需要在合約詳情中下載合約文件。
下載完畢之后需要將合約進行編譯,流程可以查看開發指南,我這里也帶大家詳細編譯一遍~
此次編譯需要在Linux環境下并且安裝docker喲。
首先輸入以下命令拉取一下長安鏈的docker鏡像,靜靜的等待它完成。
docker pull chainmakerofficial/chainmaker-docker-go-contract:v2.2.1
安裝完鏡像后執行以下docker run命令,目的是將上面下載好的鏈接掛在到你的工作目錄中以便隨時能用。$WORK_DIR就是你的工作目錄所在路徑。
docker run -it --name chainmaker-docker-go-contract -v $WORK_DIR:/home chainmakerofficial/chainmaker-docker-go-contract:v2.2.1 bash
接下來就是比較重點的部分了,需要進行合約的編譯和壓縮。
cd /home
tar xvf /data/contract_docker_go_template.tar.gz
cd contract_docker_go
./build.sh
please input contract name, contract name should be same as name in tx:
<contract_name> #此處contract_name必須和交易中的合約名一致
please input zip file:
<zip_file_name> #建議與contract_name保持一致(不包含文件后綴)
按照我上面的步驟安裝,看到Everything is Ok后,那就說明編譯成功了。
以上這個就是我們編譯好的文件啦,下一步只需要將它裝進合約文件。
點擊確認,一個新的合約就生成好了。
除了DockerGo,目前一共還支持Solidity、Rust、C++ 四種編程語言。每一種智能合約官方都寫了詳細的參考文檔,點擊你對應的語言即可查看詳細文檔:
- 智能合約開發(DockerGo)。
- 智能合約開發(Solidity)。
- 智能合約開發(Rust)。
- 智能合約開發(C++)。
安裝完智能合約之后就是去測試它是否成功,這也是距離使用區塊鏈最近的一步了。點擊「快速上鏈」,發起快速調用。
上鏈操作完畢后就會返回上鏈結果了:
達到了這里,就代表著你已經成功進入到區塊鏈了。連接建立后最后一步就要讓TBaaS和我們的應用做對接了。這里也就是業務銜接的部分。
具體對接過程你可以查閱:云 API 對接說明。
完事之后你的業務行為就會被視為交易發送到鏈上,通過【區塊鏈瀏覽器】就可以一眼查閱實時的交易記錄。
TBaaS平臺就這么將區塊鏈實現可視化,接下來你就可以自由查看區塊和交易去感受區塊鏈了。
總結
區塊鏈給咱的整體操作過程就是一個從加入體驗網絡->安裝智能合約->業務對接->交易申請的過程,在此之后就可以輕松地在騰訊云后臺上查看到你的節點和業務的關聯信息了。
較比傳統的業務平臺搭建和監控確實更加便捷迅速,成本也更低。我認為作為騰訊云的重點建設項目TBaaS平臺今后也會研發出更多豐富的功能,值得期待一波。