TPS百萬級(jí)的超級(jí)區(qū)塊鏈架構(gòu)解析

作者|區(qū)塊鏈名媛

這次有幸邀請(qǐng)到迅雷鏈總工程師來鑫跟大家聊聊迅雷鏈的同構(gòu)多鏈框架层坠。

迅雷自 2004 年開始創(chuàng)業(yè)交掏,到 07 年就與 QQ 并肩風(fēng)靡一時(shí)。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和用戶需求的變化需忿,迅雷調(diào)整了業(yè)務(wù)戰(zhàn)略拖叙,從 2014 年起氓润,開始涉足云業(yè)務(wù),并給迅雷帶來連續(xù) 8 個(gè)季度的營(yíng)收增長(zhǎng)薯鳍。迅雷基于成熟的分布式技術(shù)優(yōu)勢(shì)和龐大的用戶基礎(chǔ)咖气,使玩客云迅速占據(jù)市場(chǎng)。

隨著 2017 年區(qū)塊鏈技術(shù)的興起挖滤,讓迅雷看到了更適合的商業(yè)邏輯:將區(qū)塊鏈技術(shù)應(yīng)用到共享計(jì)算上崩溪。這一過程對(duì)于迅雷本身而言,是把區(qū)塊鏈技術(shù)與共享計(jì)算技術(shù)相結(jié)合壶辜,保證復(fù)雜的“共享計(jì)算資源有償共享和使用”機(jī)制悯舟,實(shí)現(xiàn)即時(shí)性、安全性和公平性砸民,從而對(duì)用戶的分享行為起到激勵(lì)作用抵怎。這是迅雷發(fā)明的創(chuàng)新型共享計(jì)算模式奋救。

她叫來鑫,是迅雷鏈的總工程師

曾在百度參與建設(shè)分布式計(jì)算及網(wǎng)頁(yè)搜索架構(gòu)反惕,后擔(dān)任騰訊云高級(jí)工程師尝艘,主導(dǎo)去中心化負(fù)載均衡系統(tǒng)的大規(guī)模使用,以及分布式消息隊(duì)列服務(wù)姿染、信鴿移動(dòng)推送背亥、應(yīng)用加固等多項(xiàng)技術(shù)研發(fā)。在分布式計(jì)算領(lǐng)域擁有豐富的經(jīng)驗(yàn)悬赏。

2015 年加入迅雷狡汉,負(fù)責(zé)星域調(diào)度系統(tǒng)的技術(shù)研發(fā),目前主導(dǎo)玩客云及區(qū)塊鏈業(yè)務(wù)方案設(shè)計(jì)闽颇,建設(shè)共享計(jì)算的區(qū)塊鏈底層平臺(tái)盾戴。個(gè)人擁有分布式計(jì)算多項(xiàng)專利。

迅雷鏈在做什么兵多?

隨著區(qū)塊鏈 3.0 的技術(shù)革新尖啡,在保證區(qū)塊鏈本身公開、篡改剩膘、透明特性的基礎(chǔ)上衅斩,還需要能夠支持商業(yè)級(jí)別的高性能的底層平臺(tái)技術(shù)。迅雷做的是云計(jì)算服務(wù)怠褐,同一般的后臺(tái)服務(wù)一樣畏梆,需要通過平行擴(kuò)展來提高性能,這樣的技術(shù)一樣能夠用到區(qū)塊鏈上惫搏。

例如具温,24 核服務(wù)機(jī)器可以做到每秒 2000TPS 的處理,一個(gè)超級(jí)節(jié)點(diǎn)需要 120 核筐赔,每秒能夠處理 3000TPS,這已經(jīng)是很理想的狀態(tài)了揖铜。但如果做到 100 萬 TPS 就需要 500 組茴丰,成本需要上億。而這對(duì)于迅雷來說并不需要花那么多錢買機(jī)器天吓,因?yàn)檠咐子猩习偃f的共享計(jì)算的節(jié)點(diǎn)贿肩。共享計(jì)算是把老百姓家里閑置的帶寬跟企業(yè)所需要的帶寬有效的結(jié)合起來,提升整個(gè)社會(huì)資源配置效率龄寞。

那么汰规,區(qū)塊鏈起到一個(gè)什么作用?區(qū)塊鏈做的事物邑,就是能夠平衡供給方和需求方的權(quán)力義務(wù)關(guān)系溜哮,讓分散的個(gè)體滔金,能夠平等的與企業(yè)對(duì)話,從而激勵(lì)用戶自發(fā)地參與到共享計(jì)算的體系中來∶ぃ現(xiàn)在已經(jīng)有了百萬級(jí)的共享計(jì)算節(jié)點(diǎn)餐茵,而且還在快速增加,這是迅雷追求區(qū)塊鏈技術(shù)高性能的動(dòng)力和來源述吸。

迅雷鏈的系統(tǒng)架構(gòu)是怎樣的呢忿族?

下圖為迅雷區(qū)塊鏈的技術(shù)棧,可以直觀的看出各模塊的分工和協(xié)作蝌矛。

(一)最上層的應(yīng)用層道批,是 C 端用戶直接接觸到產(chǎn)品和服務(wù),包括賬戶客戶端入撒、第三方客戶端和合約應(yīng)用屹徘。

賬戶客戶端:主要指迅雷鏈的鏈克口袋,負(fù)責(zé)管理鏈上資產(chǎn)衅金。用戶可以通過鏈克獲取網(wǎng)絡(luò)加速噪伊、數(shù)字內(nèi)容等多種增值服務(wù)。而鏈克的查詢氮唯、兌換請(qǐng)求是通過服務(wù)層的“數(shù)據(jù)請(qǐng)求服務(wù)”提供的接口來完成鉴吹。另一方面,鏈上資產(chǎn)如果是依托于某個(gè)智能合約惩琉,這部分資產(chǎn)的查詢和信息修改豆励,就需要通過服務(wù)層提供的“合約調(diào)用”接口轉(zhuǎn)發(fā)到基礎(chǔ)層的鏈上執(zhí)行。

第三方客戶端:主要指接入鏈克兌換的產(chǎn)品和服務(wù)瞒渠,比如迅雷直播良蒸。用戶在這些應(yīng)用中使用鏈克兌換產(chǎn)品和服務(wù),會(huì)命令鏈克口袋相應(yīng)鏈克伍玖。如果是在 pc嫩痰、電視端等發(fā)出的請(qǐng)求,會(huì)彈出二維碼響應(yīng)窍箍。服務(wù)層的“數(shù)據(jù)請(qǐng)求服務(wù)”會(huì)跟第三方客戶端的后臺(tái)服務(wù)交互串纺,通知兌換信息是否入鏈成功。

合約應(yīng)用:指基于迅雷鏈開發(fā)的 DAPP椰棘。應(yīng)用中使用的合約通過服務(wù)層的“合約部署”服務(wù)部署到區(qū)塊鏈上纺棺。DAPP 中的合約調(diào)用通過服務(wù)層的“合約調(diào)用”模塊進(jìn)行校驗(yàn),合法的才會(huì)轉(zhuǎn)到鏈上處理邪狞。

(二)中間的服務(wù)層作為應(yīng)用和鏈之間的橋梁祷蝌,提供應(yīng)用層需要的接口和服務(wù)。包括安全控制帆卓、合約部署巨朦、合約請(qǐng)求和數(shù)據(jù)請(qǐng)求服務(wù)米丘。

安全控制:這一層類似互聯(lián)網(wǎng)架構(gòu)的接入層,其核心功能就是做好鑒權(quán)罪郊、合法性校驗(yàn)等安全工作蠕蚜,將問題擋在最外層。

合約部署:合約部署的觸發(fā)主要是迅雷鏈內(nèi)部的審核系統(tǒng)觸發(fā)悔橄,只有企業(yè)資質(zhì)審核通過并且產(chǎn)品內(nèi)容合法合規(guī)靶累,才會(huì)被部署到迅雷鏈上。同時(shí)癣疟,迅雷鏈?zhǔn)峭瑯?gòu)多鏈框架挣柬,合約會(huì)有自己所屬的鏈,并在該鏈上完成合約創(chuàng)建睛挚。而普通鏈上的用戶發(fā)起合約調(diào)用時(shí)邪蛔,用戶所在鏈請(qǐng)求入塊后,需要知道將該請(qǐng)求和區(qū)塊路由到哪個(gè)鏈上扎狱,所以合約部署時(shí)還需將合約的路由信息通知到所有鏈侧到。

合約調(diào)用:檢查合約調(diào)用接口中參數(shù)的合法性,比如合約地址是否存在等淤击。對(duì)于不合法的請(qǐng)求直接返回失敗匠抗,合法的請(qǐng)求會(huì)轉(zhuǎn)發(fā)給基礎(chǔ)層。

數(shù)據(jù)請(qǐng)求服務(wù):該模塊包含鏈克相關(guān)的所有請(qǐng)求污抬,包括查詢余額汞贸、查詢兌換記錄、執(zhí)行兌換等印机。對(duì)于余額矢腻、兌換記錄這類請(qǐng)求量很大的模塊,會(huì)在所有接入節(jié)點(diǎn)上做緩存射赛,每個(gè)節(jié)點(diǎn)通過基礎(chǔ)層的“訂閱及通知服務(wù)”訂閱區(qū)塊信息多柑。當(dāng)收到區(qū)塊產(chǎn)生的通知后,可以立即解析區(qū)塊內(nèi)信息咒劲,并修改緩存中的余額和兌換記錄顷蟆。對(duì)于執(zhí)行兌換的請(qǐng)求先校驗(yàn)合法性,再將合法請(qǐng)求轉(zhuǎn)到基礎(chǔ)層腐魂。

(三) 最底層也叫基礎(chǔ)層,是構(gòu)成迅雷鏈最核心的組成部分逐纬,由 11 個(gè)模塊組成蛔屹。

路由模塊:包括普通請(qǐng)求路由和合約路由。當(dāng)請(qǐng)求到達(dá)時(shí)豁生,路由模塊會(huì)根據(jù)請(qǐng)求中 from(發(fā)起方)地址兔毒,將請(qǐng)求路由到該用戶所屬的鏈漫贞;另一方面,當(dāng)請(qǐng)求入塊育叁,需要鏈間通信將請(qǐng)求和區(qū)塊信息同步到目的鏈時(shí)迅脐,也需要路由模塊的信息。

跨鏈模塊:包括鏈間通信和跨鏈確認(rèn)豪嗽。該模塊將已入鏈的區(qū)塊中谴蔑,需要跨鏈的請(qǐng)求、證明信息龟梦、區(qū)塊信息同步到對(duì)應(yīng)鏈隐锭。

訂閱通知模塊:該模塊是為了支持“數(shù)據(jù)請(qǐng)求服務(wù)”功能,需要及時(shí)拿到新入鏈的區(qū)塊數(shù)據(jù)计贰,比如監(jiān)控服務(wù)钦睡、余額查詢服務(wù)等。

共識(shí):包括共識(shí)算法和校驗(yàn)躁倒。這是區(qū)塊鏈與分布式存儲(chǔ)服務(wù)共同的核心模塊荞怒,區(qū)塊鏈的共識(shí)比普通的分布式存儲(chǔ)服務(wù)多了一些安全上的校驗(yàn),比如日志秧秉。所有參與共識(shí)的節(jié)點(diǎn)需要對(duì)區(qū)塊校驗(yàn)其內(nèi)部數(shù)據(jù)的合法性褐桌。至于如何達(dá)成共識(shí)就跟共識(shí)算法有關(guān)了,迅雷鏈采用的共識(shí)算法是 pbft福贞,具體算法的原理和選擇理由下一次分享會(huì)繼續(xù)介紹撩嚼。

賬戶管理:主要是賬戶密鑰的生成,這部分會(huì)做成庫(kù)給賬戶客戶端使用挖帘。另一方面是對(duì)賬戶的權(quán)限管理完丽。

請(qǐng)求池:收到的請(qǐng)求需要在這里等待校驗(yàn)合法性,通過后被放入等待入塊的隊(duì)列拇舀。

智能合約:迅雷鏈上有越來越多的應(yīng)用在接入逻族,這些應(yīng)用的業(yè)務(wù)邏輯代碼其實(shí)就是智能合約。而智能合約代碼是獨(dú)立于區(qū)塊鏈程序的骄崩,所以需要在區(qū)塊鏈程序中運(yùn)行虛擬機(jī)來解釋和執(zhí)行聘鳞。再者,智能合約里面需要讀取和修改區(qū)塊鏈上的數(shù)據(jù)要拂,所以虛擬機(jī)還要提供方法來與區(qū)塊鏈交互抠璃。

數(shù)據(jù)存儲(chǔ):包括區(qū)塊、原始請(qǐng)求和用戶數(shù)據(jù)脱惰。相比于以比特幣為代表的 UTXO 模型搏嗡,迅雷鏈選擇了基于賬戶模型,方便支持智能合約。迅雷鏈的本地存儲(chǔ)系統(tǒng)選擇的是 leveldb采盒,在數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)上借鑒了以太坊的精髓旧乞,包括交易樹、賬戶樹磅氨、事件樹尺栖。每種樹都是一個(gè) merkletree,在區(qū)塊頭部只存儲(chǔ)樹的 root 的 hash烦租。

密碼學(xué):包括簽名和加密延赌。這也是區(qū)塊鏈非常核心和獨(dú)特的模塊,區(qū)塊鏈的不可篡改左权、隱私保護(hù)等特點(diǎn)都是源于此皮胡,涉及簽名、摘要計(jì)算赏迟、公私鑰對(duì)的生成等屡贺。

網(wǎng)絡(luò)通信:包括 P2P 和 RPC。區(qū)塊鏈中所有參與的記賬節(jié)點(diǎn)都是對(duì)等的锌杀,記賬節(jié)點(diǎn)之間包括請(qǐng)求甩栈、區(qū)塊等信息都需要網(wǎng)絡(luò)送達(dá),當(dāng)然要做一個(gè)健壯的區(qū)塊鏈網(wǎng)絡(luò)糕再,在網(wǎng)絡(luò)通信模塊還需要不斷優(yōu)化量没。

通用模塊:包括壓縮和事件機(jī)制。因?yàn)橘~戶模型里要存儲(chǔ)的數(shù)據(jù)信息相對(duì)較多突想,而且隨著時(shí)間推移殴蹄,鏈的長(zhǎng)度也越來越大,所以數(shù)據(jù)落盤前需要壓縮猾担。事件機(jī)制主要是為外圍系統(tǒng)提供鏈上執(zhí)行合約袭灯、鏈上區(qū)塊產(chǎn)生等底層支持。

案例:上鏈請(qǐng)求的執(zhí)行過程

以用戶在客戶端應(yīng)用中發(fā)起鏈克兌換為例绑嘹。


鏈克口袋將請(qǐng)求發(fā)到鏈的服務(wù)層——從架構(gòu)角度看的最外層就是接入層稽荧;

接入層會(huì)根據(jù) from(發(fā)起方)地址將請(qǐng)求路由到對(duì)應(yīng)鏈的鏈,接入層也會(huì)判斷請(qǐng)求的合法性工腋,針對(duì)非法的請(qǐng)求直接返回失斠陶伞;

外層驗(yàn)證 ok 后擅腰,會(huì)進(jìn)入服務(wù)層——從架構(gòu)角度看的內(nèi)層蟋恬,會(huì)驗(yàn)證請(qǐng)求是否為重放、余額是否不足等趁冈;

服務(wù)層驗(yàn)證通過的請(qǐng)求到達(dá)基礎(chǔ)層——從架構(gòu)角度看就是我們的記賬節(jié)點(diǎn)筋现,也叫驗(yàn)證人;

記賬節(jié)點(diǎn)之間轉(zhuǎn)發(fā)請(qǐng)求箱歧,記賬節(jié)點(diǎn)中本輪的 proposer 負(fù)責(zé)發(fā)起區(qū)塊矾飞,區(qū)塊數(shù)據(jù)在幾個(gè)記賬節(jié)點(diǎn)之間也相互轉(zhuǎn)發(fā),收到區(qū)塊的節(jié)點(diǎn)進(jìn)行投票呀邢,并把投票信息廣播洒沦,根據(jù)我們的 pbft 共識(shí)算法記賬節(jié)點(diǎn)達(dá)成共識(shí),區(qū)塊入鏈价淌;

新區(qū)塊產(chǎn)生后申眼,記賬節(jié)點(diǎn)中鏈間通信的模塊會(huì)針對(duì)新區(qū)塊中涉及跨鏈的請(qǐng)求,依次根據(jù)請(qǐng)求的目的鏈蝉衣,將跟該目的鏈有關(guān)的請(qǐng)求原始數(shù)據(jù)括尸、本鏈的區(qū)塊頭信息、本鏈的交易證明信息等轉(zhuǎn)發(fā)給目的鏈的記賬節(jié)點(diǎn)病毡;

目的鏈的記賬節(jié)點(diǎn)將收到的信息轉(zhuǎn)發(fā)濒翻,并達(dá)成共識(shí),將請(qǐng)求寫入目的鏈區(qū)塊的同時(shí)也完成了目的鏈對(duì)應(yīng)地址的余額增加啦膜。

從使用的角度再看同構(gòu)多鏈框架

所謂同構(gòu)多鏈框架有送,顧名思義就是有多條鏈,每條鏈上都運(yùn)行相同的程序僧家。不同用戶的請(qǐng)求會(huì)發(fā)到不同的鏈上進(jìn)行處理雀摘。

當(dāng) A、B八拱、C阵赠、D 同時(shí)發(fā)起請(qǐng)求,比如有 A->B肌稻,A->C清蚀,A->D , 同時(shí)有 B->C, C->D,D->E灯萍。A轧铁、B、C旦棉、D 根據(jù)路由規(guī)則落到不同的鏈上齿风,四條鏈可以并行進(jìn)行處理,如果一條鏈每秒的打包請(qǐng)求并落區(qū)塊的速度是 1000绑洛,那么上千條鏈救斑,就可以達(dá)到百萬 TPS。

對(duì)于普通請(qǐng)求真屯,消耗的鏈克 gas 是固定的脸候,這種鏈間的處理是相對(duì)容易的,而支持智能合約,需要一些額外的處理运沦。因?yàn)橐乐箰阂獾暮霞s或者合約本身的 bug 導(dǎo)致占用大量資源泵额,所以需要根據(jù)合約執(zhí)行情況扣除相應(yīng)的鏈克 gas。

消耗的鏈克 gas 是需要從請(qǐng)求發(fā)起方的賬戶里扣除的携添,而真正執(zhí)行合約的是在合約所在的另一條鏈嫁盲,所以最終需要的具體數(shù)量,在發(fā)起請(qǐng)求方所在鏈入鏈這筆請(qǐng)求的時(shí)候尚未可知烈掠,這怎么辦呢羞秤?

解決辦法是在發(fā)起方所在鏈扣除請(qǐng)求中傳入的 gasLimit 值,也就是用戶指定的上限值左敌,這個(gè)請(qǐng)求入塊后同步到合約所在鏈瘾蛋,合約執(zhí)行后請(qǐng)求入塊能知道這筆請(qǐng)求真正扣掉的通證數(shù)量,再通過鏈間通信將鏈里面入塊的合約調(diào)用請(qǐng)求同步到發(fā)起方所在鏈矫限,發(fā)起方確認(rèn)合約鏈的區(qū)塊數(shù)據(jù)哺哼,并把多扣掉的通證退回給發(fā)起方。這些對(duì)賬戶余額的操作在鏈上都有相應(yīng)的操作記錄寫入奇唤,方便對(duì)賬幸斥。

迅雷鏈整體性能如何按需進(jìn)行水平擴(kuò)展?

前文介紹了整體吞吐的提升主要通過增加新鏈的方式咬扇,那怎么能做到輕量地增加新鏈呢甲葬?

迅雷鏈的路由規(guī)則選擇的是最簡(jiǎn)單直接的針對(duì)地址取模,比如針對(duì) 1024 取模懈贺,因?yàn)榈刂肥歉鶕?jù)公鑰經(jīng)過 hash 運(yùn)算出來的经窖,整體隨機(jī)分布,所以基本上所有用戶會(huì)平均分布到這些鏈上梭灿。

以當(dāng)前有 1024 條鏈舉例画侣,其編號(hào)從 0 到 1023,地址取模結(jié)果是 1堡妒、1025配乱、2049、3073皮迟、……會(huì)落到 1 號(hào)鏈搬泥。 那么當(dāng)我們想擴(kuò)容到 2048 條鏈的時(shí)候,實(shí)際上是原來每條鏈上的一半用戶遷移到新鏈伏尼。新鏈啟動(dòng)時(shí)區(qū)塊數(shù)據(jù)來自原來的鏈忿檩,比如 1025 號(hào)鏈的數(shù)據(jù)來自原來的 1 號(hào)鏈,原來在 1 號(hào)鏈上地址取模為 1025爆阶、3073燥透、……的用戶數(shù)據(jù)之后會(huì)都落在 1025 這條鏈沙咏;而原來在 1 號(hào)鏈上地址取模為 1、2049班套、……的用戶數(shù)據(jù)之后還在 1 號(hào)這條鏈上肢藐。

通過這樣的方式,可以讓擴(kuò)鏈的整體變動(dòng)最小化孽尽。

整體分享下來窖壕,我們發(fā)現(xiàn),迅雷一直在根據(jù)自身優(yōu)勢(shì)確定技術(shù)方向杉女。正如來鑫所說:“做技術(shù)重點(diǎn)是解決問題,而不需要對(duì)標(biāo)什么”鸳吸。在分享結(jié)束后的 QA 環(huán)節(jié)熏挎,我們收集到很多有針對(duì)性的問題,來鑫都一一做了解答晌砾。

(原創(chuàng)文章坎拐,轉(zhuǎn)載請(qǐng)注明出處)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市养匈,隨后出現(xiàn)的幾起案子哼勇,更是在濱河造成了極大的恐慌,老刑警劉巖呕乎,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件积担,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡猬仁,警方通過查閱死者的電腦和手機(jī)帝璧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來湿刽,“玉大人的烁,你說我怎么就攤上這事≌┕耄” “怎么了渴庆?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)雅镊。 經(jīng)常有香客問我襟雷,道長(zhǎng),這世上最難降的妖魔是什么漓穿? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任嗤军,我火速辦了婚禮,結(jié)果婚禮上晃危,老公的妹妹穿的比我還像新娘叙赚。我一直安慰自己老客,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布震叮。 她就那樣靜靜地躺著胧砰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苇瓣。 梳的紋絲不亂的頭發(fā)上尉间,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音击罪,去河邊找鬼哲嘲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛媳禁,可吹牛的內(nèi)容都是我干的眠副。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼竣稽,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼囱怕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起毫别,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤娃弓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后岛宦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體台丛,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年恋博,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了齐佳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡债沮,死狀恐怖炼吴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情疫衩,我是刑警寧澤硅蹦,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站闷煤,受9級(jí)特大地震影響童芹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鲤拿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一假褪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧近顷,春花似錦生音、人聲如沸宁否。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)慕匠。三九已至,卻和暖如春域醇,著一層夾襖步出監(jiān)牢的瞬間台谊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工譬挚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锅铅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓殴瘦,卻偏偏與公主長(zhǎng)得像狠角,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蚪腋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容