區塊鏈的世界和其他技術領域沒有什么不同,都必須保持敏銳和奔跑,保持好奇和謙遜,不斷學習和實踐,修訂短板尋求突破,將成果分享給社區。正如系統需要極大的彈性,人也需要極大的韌性。共勉。
方向之難
“我是誰”、“我在哪”、“我要去哪兒”,一切都源于這么一個哲學三問。區塊鏈是什么?區塊鏈究竟能做什么?為什么區塊鏈這么火?不用區塊鏈行不行?這些問題都充滿了終極拷問的意味。
其實很難徹底回答這些問題,因為,并沒有標準答案。所有創新的前沿的事物大抵如此,在質疑和動蕩中發展,在黑暗和荒蕪中摸索,精華和糟粕齊飛,綠洲與韭菜一色,直到引爆點迸發。如果因為充滿疑慮而左右搖擺,或者裹足不前,那么在從事相關工作研究的過程,體驗會很糟糕,結果也不會好。
分享一點個人體會:區塊鏈領域從一開始就吸引了全世界無數的聰明人,不乏極客、學者、大師, 他們進行了大量的技術和社會實踐。這個領域蘊含著數學、計算機、密碼學、博弈論、經濟學、社會學等學科的精華,這是一個智力飛揚、思想激蕩的世界。目前,整個行業更是獲得前所未有的關注,包括政府、各行業巨頭都在關注,大量注意力和資源持續涌入,區塊鏈迎來了“最好的時節”。
在持續進化、結構多元的現代社會里,分布式商業的理念已經成為現實。人和人、機構和機構之間會產生更多的聯系和協作,信息和價值在新型網絡模式中快速流轉,作為分布式技術代表之一的區塊鏈,很有機會成為新一代基礎設施和創新的據點。
所以,方向并不是問題。即使你不把區塊鏈當做“信仰”,只看這個充滿魅力的技術本身,以及區塊鏈與實體經濟深度融合的機遇,還是可以給我們帶來信心。
概念之難
在哲學三問中,“區塊鏈是什么”是最晦澀的問題,區塊、交易、賬戶、共識、智能合約、雙花...這都是什么?!我自己在剛接觸區塊鏈時,也有一種被顛覆了認知的感覺。有一些介紹區塊鏈的文章,往往著眼在區塊鏈的社會和經濟效能,從價值理念講起,這些固然是必要的,但俗話說“科學要定性更要定量”,作為工程技術人員,我們更應該關注的是,區塊鏈里的知識點、基本原理,進而澄清術語、把握架構、處理邏輯和程序流程。
前面提到,區塊鏈蘊含著大量學科的精華,同時,行業也有一句俗語:“區塊鏈并沒有發明什么新技術,都是成熟技術的組合”。
這些成熟的技術包括數據結構,諸如鏈表、樹、圖、過濾器等,是大學里數據結構的基礎知識;
基礎密碼學,包括HASH和對稱非對稱加密、數字簽名等等,已經是幾十年的經典技術,而事關隱私保護等領域的新一代密碼學,更給密碼學專業人士開拓了一片廣闊的發揮空間;
分布式網絡和系統這門學科本身包羅萬象,覆蓋了海量服務的知識范疇,許多從事過海量互聯網服務技術的同學,都會對區塊鏈的P2P網絡和共識算法、并行計算模型、事務性一致性原理如數家珍;
博弈論和激勵相容是協作方面的知識點,是“區塊鏈思維”的重要組成部分,工科學生可能需要翻翻書,社科經管背景的同學估計會似曾相識吧;
至于智能合約,比如solidity語言、WebAssembly等,很少聽說嗎?其實這些語言以及編程模式學習曲線未必有javascript高,有幾年程序基礎的同學基本上一周就可以上手,寫出順溜的智能合約來。
區塊鏈讓人覺得認知困難,是因為它就像個“筐”,什么都可以往里裝,牽涉的技術繁雜,組合方式卻和常規技術套路不同。所以學習者一定程度上先要放空自己,避免讓自己在原有領域的思維定勢干擾了學習,在豐富自己知識面的同時,接受區塊鏈的“群體共識”、“防止篡改”、“不可否認”、“高度一致性”等神奇邏輯,然后潛心進去看每一個獨立的概念時,并不會覺得高不可攀。
突破概念之難的要點,是排除來自各種渠道的噪聲,有些信息似是而非,或者是各說各話,把同一件事用N種話術講出來,混淆了定義,模糊了本質,于事無補的同時還帶來更多疑問。靠譜的方法是著重閱讀權威媒體的正規內容,關注一些主流區塊鏈項目的文檔庫,認真地、全面地通讀技術文檔,然后找一個自己感興趣的領域(如共識算法),結合自身經驗知識進行對照研究。
同時,也可以加入活躍的開源社區和技術圈子,和有經驗的人多討論,勇于把問題拋出來,挨個術語,挨個流程討論透徹。我們在研究區塊鏈的初期,團隊經常就一個概念的定義咬文嚼字地爭論很久,最后愉快地達成共識時,大家都覺得神清氣爽。
在概念階段,切忌求全責備,不要變成資料收集機,一口吃不成胖子,基于靠譜的學習資料,澄清基本概念,在實踐中去驗證和發掘新的概念,建立發現問題、解決問題的方法論,慢慢就能舉一反三,說不定某一天就能醍醐灌頂了。
上手之難
好吧,哲學和概念問題終于不會阻礙我們學習的腳步了,那么怎么繼續“二十一天入門到精通”之路。作為技術人員,遇到新的技術平臺、軟件體系、編程語言...那當然是:“不要慫,就是干!”
幾年前,我們剛開始研究區塊鏈時,通讀過幾個國外流行的開源區塊鏈項目代碼,并搭建測試網進行試驗剖析,分析如何讓這些平臺能在復雜的金融業務上用起來。當時有個困惑,如果直接基于底層平臺開發應用,當需要實現更多功能時,是不是就得直接修改底層平臺代碼。
而當看到“智能合約”這個東西時,思路一下就打開了:采用智能合約作為中間層,在合約里編寫業務邏輯,并為調用者定義清晰的功能接口,這樣,業務可以很好和底層解耦,而底層平臺則定位成強大的引擎,通過架構的解耦,使得整個開發過程變得清晰合理、輕松愉快,感覺就像是從“C/S”架構到“B/S”架構的演變,多年互聯網海量服務開發的手感又回來了。
另外,我們覺得當時的開源項目主要是公鏈形態,在安全可控以及合規方面考慮沒有那么周全,并不適合金融場景使用。
那么,沒有趁手的平臺,就想辦法造一個。從此,深耕底層技術、迭代應用驗證的漫漫之路開啟了。這個過程也和開源社區一眾伙伴建立了緊密的合作,正是“來自開源并回饋開源”,經過開源工作組幾年的打磨,FISCO BCOS已經是一個全面開源、安全可控、高速穩定、易用友好的金融級底層技術平臺,面向金融和廣大的產業領域,提供豐富的功能和各種操作工具。豐富全面的文檔和便捷易用的體驗,可以幫助開發者從快速入門到精通,整體的技術門檻和開發成本變得前所未有的低。
有了基礎的底層平臺之后,下載、安裝、配置、運行、閱讀使用手冊、寫hello world和業務應用、Debug和分析日志...都是step by step的工作了。
我們目標是,用戶在幾分鐘內,用一鍵安裝、docker、云服務等方式順暢無錯地搭建出自己的區塊鏈網絡,在一周內通過學習就可以寫出完整的智能合約,基于支持多款語言的SDK(Java、Node.js、Python、Go...還在增補中)實現業務邏輯,將業務發布上線,保持穩定運行。
為了這個目標,我們一直在持續優化使用文檔、開發手冊,以及部署和運維工具。眾所周知,“碼農”們喜歡寫代碼,而寫注釋和文檔就比較痛苦了,為了向社區交出一份漂亮的作業,大家傾盡了有生以來的語文水平,一次又一次修訂,硬是寫出了數十萬字的文檔庫。
同時,開源社區推出了一系列的線下線上沙龍、培訓,用社區的方式,進行廣泛交流和技術支持。在多次的現場學習和黑客松大賽中,我們欣喜地看到,開發者用兩三天時間,就能基于FISCO BCOS實現他們精巧的項目設計,而且有開發者將其中和開源項目相關的優化貢獻到Github上。
到這個程度,即使是對沒有區塊鏈研發經驗的開發人員,快速上手已經沒有什么問題,即便區塊鏈底層還像一個黑盒子有待探索,但就像在電腦上安裝App、使用mysql、tomcat之類的軟件一樣,足可以用起來,感受區塊鏈的魅力了。
深入之難
對技術人員來說,探索技術的內涵永無止境:參與到區塊鏈底層開發,實現大型的區塊鏈應用,為區塊鏈生態增加更多有用的特性、工具,對現有功能性能進行極致優化,這些都是進入“深水區”的路線。
之前提到,區塊鏈系統知識點和框架涉獵廣泛,無論是知識面還是深度都有相當的規模。量化一下的話,可以套用一萬小時理論:如果每天學習工作8-10小時,一個月足以上手,一年可得小成,兩年輕車熟路,三年可成老司機...但老司機要行的前路依舊漫漫。我們希望通過持續的科普、交流、實踐,去縮短這個過程,但畢竟學習就是一種最基本的“工作量證明”,并沒有什么其他捷徑。
學習方法,首先是大量的泛讀,每天早上一睜眼到晚上,都可以看到持續更新的行業新聞、公眾號文章、技術大咖博客、郵件組討論組、開源項目......閱讀的過程或許會遇到不同觀點的碰撞,需要去偽存真,在心態開放的同時,也保持自己的立場和方向。
然后是深入的精讀,先選定一兩個感興趣的方向,研讀諸如密碼學、分布式理論等方面的一些經典論文。FISCO BCOS的核心共識算法使用的PBFT和RAFT算法,是基于對原版論文的研究解讀,有了深入的理解再去做的實現和優化。區塊鏈里廣泛用到密碼學原理,場景和邏輯多變,其原理有可能來自某一篇“頂會”論文。精讀深度原理剖析文章和學術論文,基于扎實的理論,才能根據自己的需要進行發揮,創造性地解決工程問題。
其實我們的在線文檔已經有數十萬字的規模,各種信息應有盡有,技術社區會定期對熱點知識進行解讀,只要讀者認真閱讀在線技術文檔,接受公眾號的體貼推送,并動手進行更多的實踐,隨著時間推移,必能深度理解區塊鏈的技術原理,參透架構設計的來龍去脈,建立起鞏固的知識體系。
最后,精讀的對象,自然也包括源代碼,畢竟“Talk is cheap, show me the code”,區塊鏈開源項目代碼大多是幾萬到幾十萬行的級別,閱讀代碼是達成庖丁解牛水準最直接的方法。在研究區塊鏈的歷程里,我們有許多長夜漫漫review代碼的日子,當讀到一瞇眼,眼前都是代碼在飛,各種接口和對象翩翩起舞,既優雅又有規律,脈絡清晰,那種愉悅簡直難以名狀。這種體驗,之前有,之后也會繼續有。
如果已經深入到了這個程度,領域門檻已經基本越過,考驗的就是開發者的腦力和體力了吧。
持續之難
在過去幾年因為魚目混珠、政策法規、技術障礙等等一系列情況,區塊鏈會遇到市場波動、應用落地延緩等挑戰。未來如何,雖然沒有預言家告訴我們,但現在大家已經看到了趨勢。這又回到了第一個問題:“方向”,明確清晰的方向,不但能回答“要不要進入這個領域”,同樣也能回答“要不要堅持下去”。我們一直在分布式商業模式中開拓場景,為公眾提供優質的服務,為行業提供完備和好用的開源技術,這是從開始到現在,乃至未來堅持的方向,從未改變。
再具體一點,如果我們已經用區塊鏈部署上線了業務系統,那么影響系統生命周期和持續性的問題還有:可運維性、可升級性、兼容性、數據容量、業務性能容量等等。
多次和社區朋友交流的過程,他們會提起一些問題,例如,新版本是否能兼容舊版本?隨著業務發展,越來越多的數據是否可以遷移和重用?這都是用戶的真實聲音。我們所構建的平臺,一定要走可持續發展的路線,重視軟件體系的兼容性,有合理的版本發布節奏,以及周全的數據遷移維護策略,可以更好地保護社區用戶利益,也使得用戶愿意長期與社區共同發展。
另外,區塊鏈領域還在高速發展中,各種新技術、新思潮、新模式、新政策還在層出不窮,這個領域集結了世界上大量的聰明人,他們不但聰明而且努力,從來都不閑著。于是在這個領域工作,每天都會有新的知識、新的刺激,這一方面是一種幸運,另一方面,也會讓人極其焦慮。
如何去消化這么海量的信息,如何去探索和掌握前沿的知識,如何更好滿足高速發展帶來的用戶需求和新挑戰,如何做出卓有成效的突破性創新,這真的是一個創新和焦慮并存的世界,讓人欲罷不能。
作為從業者,必須持續進行大量閱讀,在各種信息流里過濾和吸收,不斷地歸納/總結/思考/開拓;每一個需求和用戶ISSUE反饋都是一個小目標,每發布一個新版本都會是下一個版本的新起點。區塊鏈的世界和其他技術領域沒有什么不同,都必須保持敏銳和奔跑,保持好奇和謙遜,不斷學習和實踐,修訂短板尋求突破,將成果分享給社區。正如系統需要極大的彈性,人也需要極大的韌性。共勉。
責任編輯:ct
評論
查看更多