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