理工男的網紅生意, 6000萬月活50萬條日更的背後, 內容鏈還能這樣操做?

原文轉自(CSDN 區塊鏈大本營):https://mp.weixin.qq.com/s/EM...算法

圖片描述

在區塊鏈開發者隊伍中,有一批來自傳統的互聯網開發人員。在區塊鏈圈子裏崇尚年輕和「天才」的文化氛圍中,這批開發者因經歷了兩次重大浪潮的洗禮而更加的紮實和沉穩。數據庫

戴碩就是其中一位。安全

戴碩,內容公鏈Contentos首席科學家,清華畢業,中科院碩士,曾在騰訊任職,後又在獵豹移動負責社交產品LiveMe開發工做。對於底層開發和安全的理解更爲深刻。網絡

正是有了這樣的經歷,戴碩直言區塊鏈的開發入門成本遠高於傳統互聯網,「不建議剛畢業的年輕人直接從事區塊鏈開發」。架構

做爲數字內容公鏈,Contentos主要從圖片、短視頻和直播領域切入,數據類型多樣,給數據存儲帶來了很大的挑戰。此外,面對6000萬月活、100萬全球內容創做者和天天超過50萬條的內容交互,複雜程度甚至超過比特幣和以太坊。異步

圖片描述
在Contentos生態產品Cheez,用戶利用通證COS創做和消費短視頻分佈式

圖片描述
直播平臺LiveMe用戶創做的內容能夠利用Contentos「上鍊」工具

那麼,戴碩和他的團隊是如何實現這樣的內容公鏈的?做爲曾經的傳統互聯網開發者,他對區塊鏈開發又有哪些心得?他又是怎樣理解區塊鏈的一些核心技術的呢?性能

帶着這些問題,營長近日對內容公鏈Contentos的首席科學家戴碩進行了一次專訪。如下爲精華整理。學習

「應屆畢業生,不建議直接上手區塊鏈」

營長:在作區塊鏈以前,你的經歷是什麼?
戴碩:我本科在清華讀計算機專業,後來又在中科院拿了碩士學位。畢業後就開始從事軟件開發和信息安全有關的工做。先在江民殺毒軟件作了很長時間的信息安全,又在騰訊作了一段時間。以後又去了獵豹移動,開始是作「電池醫生」App,屬於工具類應用,後來主要精力所有放在了直播和短視頻類應用的開發工做。

營長:你如今作起區塊鏈的緣由是什麼?
戴碩:決定從事區塊鏈研究必定不能選擇「跟風」。在個人職業生涯裏,很長時間都在作信息安全。我發現,用技術解決安全問題,其實是沒法造成閉環的。這就好像把一個要保護的東西放在保險櫃裏,而後保險櫃的鑰匙放在另一個櫃子裏,以此類推,最後一把鑰匙總要交給所謂的「信任」。

我一直有一個心結,就是用技術方案解決信任問題,造成閉環。而區塊鏈之因此吸引我,正是由於它是計算機歷史上,第一次用技術構建了一種被你們公認的信任機制,而且對其餘行業產生顛覆重意義。

營長:做爲曾經的移動開發者,在你看來,區塊鏈開發與移動開發的不一樣點有哪些?
戴碩:咱們都知道,在移動開發中有一個理念叫「敏捷開發」,即快速試錯,小步快跑。根據用戶的反饋不斷優化。但這一理念放在區塊鏈當中是不可能的。

一款移動App若是一個月不更新一個版本,確定不是一個好的App。但一條公鏈,且不說一個月,就算是三個月更新一次版本,就無法用了。因此公鏈最終的交付目標必定是穩定、安全、高性能的,由於版本更新的代價過高了,並且還有分叉的風險。

營長:從移動開發者到區塊鏈開發者,須要學習哪些技能?成長週期大概是多長時間?
戴碩:區塊鏈開發要學的知識比App開發要多得多。首先要學的就是密碼學的知識,以後要學分佈式系統原理,包括分佈式系統上面的共識原理和技術名詞。此外,若是是作公鏈開發,還涉及存儲的問題,因此也要對數據存儲有所瞭解。

從個人經驗來看,從一個零基礎成長爲一個合格的公鏈開發者,至少要三年左右。因此我不建議沒有任何開發經驗的人或者應屆畢業生直接上手區塊鏈開發,至少要有三年左右的開發經驗,才能比較順暢的入門。

營長:這樣說來,有什麼比較好的學習建議嗎?
戴碩:想要作區塊鏈開發,第一步要對一些基本概念有了解,好比區塊鏈是什麼?什麼是礦工?什麼是挖礦?什麼是數字代幣等,能夠去看一些科普類的文章。

第二,要從實操入手。任何技術都是這樣,你得親手去試。網上有不少項目,好比加密貨幣,能夠先試着買一些。另外,像智能合約部署等,要明白實現原理,能夠親手試一下。用了一段時間,才能對區塊鏈裏的基本概念瞭解更快。

第三,學習源代碼。不少項目都是開源的,源代碼是最好的學習資料,若是想深刻了解區塊鏈開發,至少要研究一下比特幣和EOS的源代碼。一個是PoW,一個是DPoS。經過研究一些源代碼,再配合錢包的使用,智能合約的部署等,結合起來學習,能夠更快地瞭解區塊鏈內部實現的原理。

源於Steem,高於Steem

營長:在內容公鏈中,Steem是繞不開的一個話題,在技術上大家與Steem有哪些不一樣?
戴碩:剛開始作Contentos這個項目,你們的經驗都不是很豐富,咱們看了下,Steemit跟咱們的業務重合度較高,並且已經很成熟。因此咱們先從Steem的源代碼入手,經過學習人家的源代碼,提高本身的能力。另外,咱們也看到了Steem自己的一些欠缺和不足。

營長:能舉個例子嗎?
戴碩:好比Steemit網站的用戶基數不是很大,日活躍用戶只有5萬左右,但咱們想作的內容公鏈是遠超過這個量級的項目。經過分析,咱們發現Steem現有的技術選型,並不能達到更高量級的要求。由於Steem最大的特色就是單節點的性能決定了整個網絡的性能。

圖片描述
Contentos團隊對Steem公鏈項目的信息統計

咱們都知道區塊鏈是一個鏈上全部信息的集合,這個集合是存儲到單機上的,這個自己沒有問題,但問題是它是存儲到內存裏的。一臺機器的內存,要存儲這個鏈上全部的東西。這樣作的好處就是快(內存確定比硬盤要快,比網絡也要快),可是缺點也很明顯,就是天花板過低了。

若是要接入百萬PV的網站,上面全部的操做都要入到咱們的狀態數據庫裏面,按照Steem如今運行的情況,若是它的訪問量乘以100,那1~2T的內存能夠供多長時間?答案就是三個月之內。

若是使用Steem的技術選型,結局註定是失敗的。

咱們也去研究了一些其餘的替代方案,好比以太坊,發現行不通。由於以太坊的數據模型是比較簡單的,本質上只存儲帳戶信息。但咱們要作的業務類型可能有幾十種上百種邏輯上的數據類型彼此交互。

因此現有的技術方案,根本沒法知足咱們的業務需求,咱們只好本身從新作了一套存儲方案。

營長:能具體說一下這個存儲方案的實現機制嗎?
戴碩:首先內存型的數據庫被咱們pass掉了,不能用內存的,咱們只好用基於硬盤的。同時,咱們也採用了可插拔技術,爲從此的多機方案做準備,好比在測試網和主網上線以後,仍然使用單機數據庫。在不修改代碼只修改配置文件的狀況下,把單機數據庫直接遷移到一個分佈式的存儲網絡上。

圖片描述
Contentos數據存儲方案架構

另外一方面,咱們本質上用的是K-V存儲數據庫,但在業務邏輯上是一種關係型數據庫的需求。由於咱們的數據類型不少,彼此間有千絲萬縷的聯繫。因此,咱們在K-V數據存儲上面直接作了一層相似於關係型數據的中間層的實現。

共識算法設計的兩大原則

營長:Contentos的共識算法是DPoS+saBFT,這種設計是出於哪些原則?
戴碩:所謂共識算法,實際上能夠理解爲分佈式網絡上各個獨立節點之間彼此通信的一套規則。全部好的節點都會按照這套規則去操做;惡意節點則相反。

所以,規則的制定,要遵循共識算法的兩個特性:安全性和可用性。

安全性是在有拜占庭節點(惡意節點)的狀況下,好的節點要麼達成共識yes,要麼達成共識no。不能一個說yes一個說no,這樣就發生了分叉。

可用性是指,在理論上能夠達成共識的狀況下,必定能夠達成共識。不能說由於惡意節點的存在,就形成了好的節點不知所措,結果被鎖死在某個狀態而沒法達成共識。沒法作到這兩點的很難稱爲合格的算法。

營長:那麼,DPoS和saBFT兩種共識算法的做用分別是什麼?以及saBFT和BFT的區別是什麼?
戴碩:簡單來講,DPoS決定了由誰來出塊,saBFT決定了出的塊是否有效。與BFT算法相比,saBFT是異步處理,它無需向BFT那樣出一個塊你們進行投票,經過後再出一個。它的處理方式是一邊出塊,一邊確認。

舉個例子,我連續出100個塊,但在第90個塊的時候網絡條件出現了抖動,形成共識速度落後於出塊的速度,中間差了10個塊。saBFT能夠跳過第91個塊,直接對第100個塊進行確認。

由於一個塊是一個鏈式結構,你對靠後的塊的確認,實際上間接的確認了這個塊以前的全部鏈接點。也就是說,等於一會兒把90-100之間的全確認了。

圖片描述
saBFT算法實現原理

營長:在衆多共識算法中,爲何選擇了這種模式?
戴碩:從行業發展的角度,區塊鏈行業未來必定是多鏈協做的模式,而多鏈協做的本質就是鏈上數據的共享。但目前困擾區塊鏈行業的一個痛點就是「交易確認時間」。很惋惜,基於PoW的交易確認時間是無窮的。

還有一個致命的概念叫「相對安全時間」,也就是說你在比特幣和以太坊上完成了一筆交易,一段時間後,若是這筆交易沒有被逆轉,它就「相對安全」了,但這並非百分之百的。

若是這種模式發生在多鏈數據共享中,一旦有一筆「相對安全」的數據被回滾,就會引起雪崩效應,給全部協做的節點帶來災難。

因此,咱們在選擇共識算法的時候,首先考慮的是以最快的速度達到100%確認的狀態。目前,咱們的平均確認時間是1秒之內,已經徹底接近中心化網站或移動應用的交易確認時間了。

「區塊鏈,往大了說是會造福全人類的」

營長:你如何定義「內容公鏈」?
戴碩:其實,沒有一個很是嚴格的定義。我以爲,內容公鏈應該是一個基礎設施平臺,能夠承接全部形式的數字內容,包括文章、圖片、音樂、視頻等信息。固然,這個基於區塊鏈技術開發的開放內容平臺,打破了現有中心化內容平臺的信息隔閡,爲價值內容交易提供一條高速通道。

營長:去中心化的內容平臺與中心化的內容平臺區別是什麼?
戴碩:去中心化的內容平臺更加公平透明,它打破了公司制中心化內容平臺的霸權,從而回歸價值於內容創做者。所以,特別吸引中長尾的創做者。

若是一個視頻創做新手想要在中心化的平臺上得到粉絲關注,這基本上是很難的。對於中心化平臺而言,中長尾創做者不能更好地帶給他們商業利益,也根本得不到平臺分發過來的流量。但基於區塊鏈技術的內容平臺,把內容的價值迴歸給了用戶本身,咱們要作的是把決定權迴歸給用戶。

營長:除了內容公鏈外,你還看好哪些區塊鏈應用方向?
戴碩:還看好區塊鏈金融相關,好比區塊鏈發票、白條。還有存證相關的,法院能夠接受的憑證。最後是遊戲。

營長:最後,跟區塊鏈大本營(blockchain_camp)的讀者說幾句話吧?
戴碩:從我我的來說很是相信區塊鏈有一個很是美好的將來,緣由我說了,你們公認的這種信任,信任是整我的類社會合做發展的一個最重要的技術。並且我也算是一種信仰,我相信區塊鏈的將來是很是美好的。人一旦有了信仰,就能夠抗住不少的困難和壓力,也不容易輕易的放棄。

我以爲若是做爲區塊鏈的創業者或從業者,若是沒有這個信仰支撐,我以爲就不要作了。由於沒有信仰的人,看有信仰的人以爲像傻子同樣;可是沒有信仰的人,在遇到困難和挫折的時候,必定比較容易退卻。

因此我但願那些對區塊鏈的將來一樣有信心的人,能夠一塊兒努力。像區塊鏈這樣的技術革命,實際上也不常發生。咱們可以在年富力強的時候進入這個行業,遇上這個技術革新,也是很是幸運的一件事情,但願你們經過本身的努力,可以推進這個事業的發展。

這個事業往大了說,是會造福全人類的。


歡迎加入COS技術開發論壇:https://forum.contentos.io/,領取bounty獎勵!

圖片描述

相關文章
相關標籤/搜索