為了加深EGO會員之間的相互了解,同時也為更多的技術(shù)人提供相互學(xué)習(xí)交流的機會,EGO開展了每周四21:00的線上分享活動。本文根據(jù)第23期嘉賓——鐘馥百8月18日線上分享內(nèi)容整理而成。作為新晉會員,看看他關(guān)于區(qū)塊鏈及應(yīng)用實踐的經(jīng)驗分享吧。 鐘馥百 同心互助聯(lián)合創(chuàng)始人兼CTO、EGO會員 同心互助(https://www.)聯(lián)合創(chuàng)始人兼CTO,海豚瀏覽器前高級研發(fā)總監(jiān),曾任趨勢科技高級開發(fā)工程師,畢業(yè)于華中科技大學(xué)。區(qū)塊鏈技術(shù)專家,對高并發(fā)服務(wù)器架構(gòu)有豐富的經(jīng)驗。 大家好,我是鐘馥百,同心互助聯(lián)合創(chuàng)始人兼CTO。同心互助是國內(nèi)首家區(qū)塊鏈互助的落地應(yīng)用。今天由我來給大家分享一些關(guān)于區(qū)塊鏈及應(yīng)用實踐的經(jīng)驗。 區(qū)塊鏈BlockChain,是比特幣的核心技術(shù)。區(qū)塊鏈包含兩個重要的技術(shù)要點:
1. 分布式帳本 帳本的模型比較簡單,其基礎(chǔ)模塊是Block(區(qū)塊),Block按順序挨個相鏈,組成一個長長的鏈表;Block中包含其創(chuàng)建信息(創(chuàng)建者-挖礦人)、產(chǎn)生時間、Hash(用于引用和驗證),以及Transaction數(shù)組(交易數(shù)據(jù))。 Transaction中存儲的就是“帳本信息”,理論上可以是任意的數(shù)據(jù),可以是對CryptoCurrency(加密數(shù)字貨幣)的操作、也可以是單純的狀態(tài)信息。 分布式帳本的另一個特點是:Block、Transaction這樣的有序鏈表,是存儲在整個區(qū)塊鏈網(wǎng)絡(luò)的每個節(jié)點中(當(dāng)然,基于實際商業(yè)的需求,可以讓一部分敏感數(shù)據(jù)不存儲在非授權(quán)節(jié)點中)。只要節(jié)點連入?yún)^(qū)塊鏈網(wǎng)絡(luò),它就會自動用P2P的機制下載缺失的Block、Transaction數(shù)據(jù),并且驗證其數(shù)據(jù)的正確性(基于Hash、智能合約的執(zhí)行結(jié)果對比),保證每個節(jié)點數(shù)據(jù)的統(tǒng)一性、一致性。 所以,基于這樣的結(jié)構(gòu)設(shè)計,使得區(qū)塊鏈擁有如下的重要特征: 公開、透明: 鏈上的數(shù)據(jù)都是公開的,(理論上)每個節(jié)點都可以獲取并驗證; 不可篡改:鏈?zhǔn)怯行虻?、有時間戳的;同時,攻擊者需要控制至少超過50%的節(jié)點,才能篡改其中的數(shù)據(jù)。只要節(jié)點足夠多,攻擊者的成本就越高,其不可篡改的特性就越強; 2. 共識機制 共識機制是另一個關(guān)鍵點。共識機制的核心是在分布式網(wǎng)絡(luò)中,利用一種規(guī)則(算法)來保證全網(wǎng)對于Block的創(chuàng)建是一致的。 比如在比特幣中,采用的是POW(Powerof Work)工作量證明,各個節(jié)點用本地資源,計算滿足同一條件的Hash值,誰先計算出來,這個Block就是誰的。這個Hash值的計算,對每個節(jié)點都是一樣的、公平的。 另一種現(xiàn)在流行在使用的就是POS(Powerof Stake),采用類似股權(quán)證明+投票的機制,選出記帳人,由它來創(chuàng)建Block。 所以從技術(shù)角度來看,共識算法實質(zhì)上解決的是 “拜占庭將軍問題 https://zh./zh/拜占庭將軍問題 ”。所以,現(xiàn)在大家也都在嘗試使用Paxos、Raft、PBFT等算法來代替POW、POS等共識機制。 比如,Ethereum以太坊現(xiàn)在使用的POW,接下來會采用POS代替;BitShares(比特股)采用的是更高效的DPOS;HyperLedger直接采用的是PBFT算法。 從另一個角度來看,共識機制直接影響區(qū)塊鏈的TPS(Transaction per Second)。以比特幣為例,受限于POW,它的tps只能達(dá)到7/s;DPOS的代表BitShares,根據(jù)官方數(shù)據(jù),最高能達(dá)到10w/s的tps。 所以,在區(qū)塊鏈的商業(yè)落地中,共識機制的選擇直接影響實際業(yè)務(wù)的效果。 同心互助是首個區(qū)塊鏈上的落地應(yīng)用,區(qū)塊鏈的第一個價值在于提供信任,因為數(shù)據(jù)、交易記錄都是公開的、透明的。所以,在同心互助中,我們把用戶的脫敏信息、互助計劃信息、資金流水記錄等全部記錄在區(qū)塊鏈中。 區(qū)塊鏈中的數(shù)據(jù)存儲有兩種載體,一種是Raw Transaction,另一種是智能合約。兩種方式的存儲,本質(zhì)上都是一個Linked List with Key/Value Pair;但是從存取等操作方式上來看,各有優(yōu)缺點,看實際的使用場景。 在當(dāng)前的同心互助中,我們優(yōu)先使用的是Raw Transaction模式:將數(shù)據(jù)封裝成JSON(便于查看和瀏覽;推薦使用Binary format,比如Protobuf or Thrift,空間的占用少)格式,創(chuàng)建一個新的Transaction,通過RPC的方式提交Transaction到區(qū)塊鏈節(jié)點,由它來完成Block的創(chuàng)建和Transaction的分發(fā)。 這種模式下,數(shù)據(jù)Schema需要預(yù)定義,建議是結(jié)構(gòu)化的;否則后期無法二次處理、狀態(tài)遷移。 另一種智能合約的方式,在Ethereum的Solidity語言中,就是 key/value pair。由智能合約將 Solidity的 key/value pair轉(zhuǎn)成binary,存儲在Transaction中。 同時,為了更好的讓用戶理解區(qū)塊鏈、感受區(qū)塊鏈的價值,我們提供了區(qū)塊鏈地圖(https://www./pc/blockchain/index)、區(qū)塊瀏覽器(https://www./explorer),讓大家更便捷的查看區(qū)塊鏈的狀態(tài)、節(jié)點狀態(tài)以及鏈上的數(shù)據(jù)。 區(qū)塊鏈的第二個價值在于效率提升,利用永不宕機、自動執(zhí)行、強制執(zhí)行等特性,可以大幅度提高效率,降低人工干預(yù)、參與的成本。 在同心互助中,我們還利用區(qū)塊鏈的“交易即清算、交易即結(jié)算”的特性,來對資金流水進(jìn)行自動實時對帳。當(dāng)然,這是單獨的另一個私有鏈了。 在這個場景中,我們記錄用戶的資金流水,通過智能合約驗證帳目一致性(狀態(tài)),采用數(shù)據(jù)貨幣的特性來保證資金變更不出錯。其核心的思路如下: 以用戶為中心,通過驗證的資金記錄需要滿足如下狀態(tài)記錄
狀態(tài)記錄不滿足,則出現(xiàn)問題,通過另外的方式(自動or人工)解決。 借助于區(qū)塊鏈,對帳系統(tǒng)的復(fù)雜度得到了極大的簡化,同時效率也得到了提升,可以做到準(zhǔn)實時~ 同心互助區(qū)塊鏈的開發(fā)實踐中,我們遇到了一些比較有意思的問題,一并分享給大家: 1. 用戶隱私 正如區(qū)塊鏈的價值一樣,公開透明是深入技術(shù)低層,所以用戶的隱私保護(hù)是首個問題。 在這塊上面,我們借鑒采用了如下幾種方法:
2. 數(shù)據(jù)寫錯了 另想了,數(shù)據(jù)上了鏈,就下不來了。即使你控制超過50%的節(jié)點,也不能這樣干^_^ 在這種情況下,我們的選擇就是:特定的Transaction,聲明前面某一條記錄有誤,補充一條正確的新記錄。 這不僅僅是一個實現(xiàn)問題,還是一個區(qū)塊鏈實現(xiàn)的原則:記錄的數(shù)據(jù)需要自帶“修改”的語意,需要從邏輯上能推導(dǎo)出“修改”。否則就會存在正確數(shù)據(jù)被錯誤數(shù)據(jù)攻擊的風(fēng)險。 同樣的,涉及到交易凍結(jié)、撤銷,也同樣需要這樣的機制。 3. 智能合約升級 智能合約,即業(yè)務(wù)邏輯代碼,同樣的也是存在區(qū)塊鏈上的,也不能修改。那么,如果智能合約代碼存在bug、業(yè)務(wù)邏輯需要變更,怎么辦?前段時間,以太坊社區(qū)的TheDAO的漏洞事件,鬧得沸沸揚揚,就是這個問題。 我們有兩個解決方案:
從我們的實際經(jīng)驗來看,需要在低層提供合約代級的功能,即第一個解決方案,用起來會比較合適。 4. 性能!性能??!性能!??! 區(qū)塊鏈的優(yōu)勢在于提高效率,但是現(xiàn)有的區(qū)塊鏈實現(xiàn)都還不夠快,最快的BitShares(DPOS)又不能拿來當(dāng)區(qū)塊鏈技術(shù)來使用,還是加密數(shù)據(jù)貨幣。 性能的優(yōu)化,共識機制首當(dāng)其沖,需要根據(jù)實際業(yè)務(wù)場景的需求,定義一個合適的高效的算法;而非簡單的拿來主義(當(dāng)然,還得看實際的場景)。 解決了共識機制后,其次就是相對大家都很熟悉的性能優(yōu)化領(lǐng)域了。 關(guān)于共識機制的優(yōu)化,我們也還在研究和探索,希望下次能給大家分享實際的優(yōu)化案例。 Q:區(qū)塊鏈?zhǔn)且环N協(xié)議也是一種技術(shù),那我想問問區(qū)塊鏈如何與征信行業(yè)結(jié)合呢? A:對于征信而言,區(qū)塊鏈的一個結(jié)合點在于“數(shù)據(jù)永不篡改”。征信報告只是一個瞬時的結(jié)果,征信記錄才是永恒。區(qū)塊鏈可以做到:
這樣對于征信數(shù)據(jù)的提供方和消費方,大家都可以平等的分享整個征信記錄。 Q:在區(qū)塊鏈技術(shù)的運用過程中,遇到了哪些方面的挑戰(zhàn)或問題,是如何解決的? A:主要的一個問題是,了解區(qū)塊鏈的開發(fā)者太少了,能寫區(qū)塊鏈實現(xiàn)代碼的開發(fā)者更少。解決方法就是“讀代碼、寫代碼”,慢慢學(xué)~ 第二個問題是業(yè)務(wù)與區(qū)塊鏈的結(jié)合點:區(qū)塊鏈不是萬能藥,它也有它的限制,它也不能解決所有問題。所以一定要搞清楚區(qū)塊鏈的優(yōu)點和缺點,結(jié)合實際的業(yè)務(wù)場景來設(shè)計方案。 Q:有人說區(qū)塊鏈技術(shù)是金融風(fēng)控的終結(jié)者,關(guān)于這個觀點,您怎么看? A:從我的經(jīng)驗來看,金融風(fēng)控是一個非常龐大的話題,并非“區(qū)塊鏈”這一個“分布式帳本”技術(shù)所能解決的。從金融風(fēng)控的角度來看,區(qū)塊鏈?zhǔn)且粋€非常好的“信息收集”者,它能保證數(shù)據(jù)一直在、不會丟失、不會變化;它無法對數(shù)據(jù)進(jìn)行分析、挖掘,找到高危風(fēng)險,這種事情,還得靠數(shù)據(jù)挖掘、AI等技術(shù)。 順便打個廣告,我們公司的英文名叫ABC FinTech,ABC 即 AI + BlockChain + Cloud;你看,光有BlockChain還不行呢~ 順便再打一個廣告,最近世界經(jīng)濟論壇發(fā)布最新權(quán)威區(qū)塊鏈報告:區(qū)塊鏈技術(shù)將構(gòu)成新金融基礎(chǔ)設(shè)施的基礎(chǔ)http://www3./docs/WEF_The_future_of_financial_infrastructure.pdf 推薦有興趣的朋友閱讀。 Q:區(qū)塊鏈實現(xiàn)代碼開發(fā)者少?那以太坊是用來干嘛的? A:以太坊是一個區(qū)塊鏈的實現(xiàn)。但是它設(shè)計的初衷是“加密數(shù)據(jù)貨幣”,所以引入了“以太幣”、Gas、POW共識機制等。這些機制對于大多數(shù)商業(yè)應(yīng)用,其實是用不上的,或者說沒有太大必要。 所以,商業(yè)實踐中,一定需要對以太坊這種實現(xiàn)進(jìn)行修改和大幅度調(diào)整,所以需要區(qū)塊鏈的開發(fā)者。當(dāng)然,HyperLedger看起來還不錯,對商業(yè)應(yīng)用的支持設(shè)計的很到位。 還有一個是區(qū)塊鏈應(yīng)用的開發(fā)者,這種人現(xiàn)在也很少,也直接影響區(qū)塊鏈應(yīng)用的開發(fā)速度和進(jìn)展。
|
|