王華
摘要:毫無疑問,區(qū)塊鏈技術是當下互聯網技術的一個風口,這個創(chuàng)新技術是一個計算機技術上的奇跡。那么,究竟什么是區(qū)塊鏈呢?區(qū)塊鏈技術除了在數字貨幣上的應用之外,在其它行業(yè)領域,是否也能發(fā)揮作用,本文將對此展開初步的探索與研究。
關鍵字:區(qū)塊鏈,互聯網,物流
中圖分類號:TP309 文獻標識碼:A 文章編號:1672-9129(2018)07-0131-02
Abstract: There is no doubt that blockchain technology is an outlet for current Internet technology. This innovative technology is a computer technology miracle. So what exactly is a blockchain? In addition to the application of blockchain technology in digital currency, whether it can also play a role in other industry sectors, this article will begin preliminary exploration and research.
Keywords: Blockchain, Internet, Logistics
1 區(qū)塊鏈技術的定義
最早伴隨著區(qū)塊鏈技術一起出現的加密數字貨幣——比特幣中是這樣定義區(qū)塊鏈的:區(qū)塊鏈,就是以比特幣或其它加密貨幣按時間順序公開地記錄交易的數字賬本。狹義的來講,區(qū)塊鏈是一種按照時間順序將數據區(qū)塊以順序相連的方式組合成的一種鏈式數據結構, 并以密碼學方式保證的不可篡改和不可偽造的分布式賬本。
更通俗的說,它是一個公開的數據庫,新的數據存儲在被稱之為區(qū)塊的容器中,并被添加到一個不可變的鏈中(因此被稱為區(qū)塊鏈),之前添加的數據也在該鏈中。對于比特幣或其它加密貨幣來說,這些數據就是一組組交易,不過,也可以是其它任何類型的數據。
2 區(qū)塊鏈技術的特征
2.1 去中心化:由于使用分布式核算和存儲,不存在中心化的硬件或管理機構,任意節(jié)點的權利和義務都是均等的。
2.2 開放性:系統(tǒng)是開放的,除了交易各方的私有信息被加密外,區(qū)塊鏈的數據對所有人公開,整個系統(tǒng)信息高度透明。
2.3 自治性:區(qū)塊鏈采用基于協商一致的規(guī)范和協議(比如一套公開透明的算法)使得整個系統(tǒng)中的所有節(jié)點能夠在去信任的環(huán)境自由安全的交換數據。
2.4 信息不可篡改:一旦信息經過驗證并添加至區(qū)塊鏈,就會永久的存儲起來。
2.5 匿名性:由于節(jié)點之間的交換遵循固定的算法,其數據交互是無需信任的,因此交易對手無須通過公開身份的方式讓對方自己產生信任。
3 區(qū)塊鏈技術在集卡物流信息鏈中的應用
物流行業(yè)往往涉及到諸多實體,包括貨主、貨代、承運人、供應商等等,這些實體之間存在大量復雜的協作和溝通。傳統(tǒng)模式下,不同實體各自保存各自的物流信息,嚴重缺乏透明度,造成了較高的時間成本和金錢成本,而且一旦出現問題難以追查和處理。
通過區(qū)塊鏈各方可以獲得一個透明可靠的統(tǒng)一信息平臺,可以實時查看狀態(tài),降低物流成本,追溯物品的生產和運送整個過程,從而提高物流鏈管理的效率。當發(fā)生糾紛時,舉證和追查也變得更加清晰和容易。
所以,物流領域是區(qū)塊鏈一個很有前景的應用方向。因此,在這篇文章中,我試著用不到50行的python代碼構造一個簡單的區(qū)塊鏈,僅僅作為區(qū)塊鏈技術應用在集卡物流鏈上的一種探索與研究,我把它叫做TruckCoin。
為了確保整個區(qū)塊鏈的完整性,每個區(qū)塊都會有一個自識別的哈希值。如在比特幣中,每個區(qū)塊的哈希是該塊的索引、時間戳、數據和前一個區(qū)塊的哈希值等數據的加密哈希值。這樣就有了區(qū)塊的結構了,不過我們需要創(chuàng)建的是一個區(qū)塊鏈,以此需要把區(qū)塊添加到一個實際的鏈中。如之前提到過的,每個區(qū)塊都需要前一個區(qū)塊的信息。比較特殊的是區(qū)塊鏈中的第一個區(qū)塊,這個區(qū)塊,也稱之為創(chuàng)世區(qū)塊,在很多情況下,它是手工添加的,或通過獨特的邏輯添加的。
我們將創(chuàng)建一個函數來簡單地返回一個創(chuàng)世區(qū)塊解決這個問題。這個區(qū)塊的索引為 0 ,其包含一些任意的數據值,其“前一哈希值”參數也是任意值。在集卡物流鏈中,這通常意味著添加了一部新車,因此這個區(qū)塊的數據,我們暫且簡單的就寫“添加新車”(當然也可以寫入其它更有意義的初始化數據)。
現在我們可以創(chuàng)建創(chuàng)世區(qū)塊了,我們需要一個函數來生成該區(qū)塊鏈中的后繼區(qū)塊。該函數將獲取鏈中的前一個區(qū)塊作為參數,為要生成的區(qū)塊創(chuàng)建數據,并用相應的數據返回新的區(qū)塊。新的區(qū)塊的哈希值來自于之前的區(qū)塊,這樣每個新的區(qū)塊都提升了該區(qū)塊鏈的完整性。如果我們不這樣做,外部參與者就很容易“改變過去”,把我們的鏈替換為他們的新鏈了。這個哈希鏈起到了加密的證明作用,并有助于確保一旦一個區(qū)塊被添加到鏈中,就不能被替換或移除。
每一個區(qū)塊里的內容包括了當前集卡的作業(yè)數據、時間戳、索引以及前一個區(qū)塊鏈的哈希值,并且會存儲這些數據加密后的哈希。
接下來我們創(chuàng)建自己的區(qū)塊鏈。在這里,這個區(qū)塊鏈是一個簡單的 Python 列表。其第一個的元素是我們的創(chuàng)世區(qū)塊,我們會添加后繼區(qū)塊。因為 TruckCoin 是一個極小的區(qū)塊鏈,可以想到,TruckCoin區(qū)塊鏈正常工作了。如果想要在主控臺查看更多的信息,可以繼續(xù)修改源代碼,比如輸出每個區(qū)塊的時間戳或數據。要使 TruckCoin達到現今的產品級的區(qū)塊鏈的高度,還需要添加更多的功能,如服務器層,以在多臺機器上跟蹤鏈的改變,并通過工作量證明算法(POW)來限制給定時間周期內可以添加的區(qū)塊數量(具體的技術細節(jié),可以查看最初的比特幣白皮書),但是本文作為區(qū)塊鏈技術應用在集卡物流鏈上的初步探索,并不打算深入研究這些。
4 結論
雖然這個極小的區(qū)塊鏈看上去很簡單,但是基本的區(qū)塊鏈技術原理都已實現,在此基礎上,再為其添加服務器層的功能,就可以讓它實現分布式存儲,甚至更進一步的實現去中心化。而一旦這種大數據級別的成熟的區(qū)塊鏈技術得以在集卡物流領域得以應用的話,必將為目前的物流信息鏈帶來極大的改變,實時、透明、高效、互信的物流信息平臺必將出現,這也是集卡物流這種傳統(tǒng)行業(yè)與互聯網+技術結合創(chuàng)新后的產業(yè)升級之路。
參考文獻:
[1]Eric Matthes,Python編程從入門到實踐,人民郵電出版社,2016.7
[2]劉長龍,Python高效開發(fā)實戰(zhàn),電子工業(yè)出版社,2016.10
[3]Mark Lutz,Programming Python,中國電力出版社,2015.1