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