零知識證明與zkSNARK

最近以太坊啟動(dòng)了“大都會(huì)”硬分叉扛伍,很重要的一個(gè)功能就是整合了ZCash的零知識證明技術(shù)zkSNARK圃阳。我們一起來看一下zkSNARK這個(gè)拗口的技術(shù)到底是什么鬼谦趣。

零知識證明

要了解zkSNARK慰照,必須先理解什么是零知識證明富腊。

關(guān)于零知識證明蛆挫,概念并不難理解赃承,我們以一個(gè)老掉牙的故事作為例子。

阿里巴巴被強(qiáng)盜抓住悴侵,為了保命瞧剖,他需要向強(qiáng)盜證明自己擁有打開石門的密碼,同時(shí)又不能把密碼告訴強(qiáng)盜可免。他想出一個(gè)解決辦法抓于,先讓強(qiáng)盜離開自己一箭之地,距離足夠遠(yuǎn)讓強(qiáng)盜無法聽到口令浇借,足夠近讓阿里巴巴無法在強(qiáng)盜的弓箭下逃生捉撮。阿里巴巴就在這個(gè)距離下向強(qiáng)盜展示了石門的打開和關(guān)閉。

這個(gè)整個(gè)過程就是零知識證明妇垢,證明者能夠在不向驗(yàn)證者提供任何有用信息(石門的口令)的情況下巾遭,使驗(yàn)證者相信某個(gè)論斷(阿里巴巴知道打開石門的方法)是正確的。

當(dāng)然闯估,現(xiàn)實(shí)生活中類似的應(yīng)用有很多灼舍,大家可以參考阿里巴巴的零知識證明或者零知識證明

在計(jì)算機(jī)世界里面涨薪,零知識的應(yīng)用場景就更多了骑素,例如我們常用非對稱加密來做身份認(rèn)證,驗(yàn)證方只要使用公鑰解出自己提供的隨機(jī)數(shù)刚夺,即可證明被認(rèn)證方的身份献丑,不需要其提供自己的私鑰末捣。

以上例子都是針對特定場景的特定方法,比如說石門不是通過口令控制而是通過實(shí)物鑰匙控制创橄,這個(gè)方法就不可用了塔粒,是否有一個(gè)通用方法去認(rèn)證任何事件呢?

zkSNARK

zkSNARK是zero-knowledge succint non-interactive arguments of knowledge的簡稱筐摘,全稱里面每個(gè)單詞都有特定的含義:

Zero knowledge:零知識證明卒茬,見前文。

Succinctness:證據(jù)信息較短咖熟,方便驗(yàn)證

Non-interactivity:幾乎沒有交互圃酵,證明者基本上只要提供一個(gè)字符串義工驗(yàn)證。對于區(qū)塊鏈來說馍管,這一點(diǎn)至關(guān)重要郭赐,意味著可以把該消息放在鏈上公開驗(yàn)證。

Arguments:證明過程是計(jì)算完好(computationally soundness)的确沸,證明者無法在合理的時(shí)間內(nèi)造出偽證(破解)捌锭。跟計(jì)算完好對應(yīng)的是理論完好(perfect soundness),密碼學(xué)里面一般都是要求計(jì)算完好罗捎。

of knowledge:對于一個(gè)證明者來說观谦,在不知曉特定證明 (witness) 的前提下,構(gòu)建一個(gè)有效的零知識證據(jù)是不可能的桨菜。

接下來豁状,我們一步一步解釋這個(gè)zkSNARK到底是怎么實(shí)現(xiàn)的。

同態(tài)隱藏

說到zkSNARK倒得,不能不提的一個(gè)概念就是同態(tài)隱藏泻红,說它是zkSNARK的核心技術(shù)一點(diǎn)都不為過。

滿足下面三個(gè)條件的函數(shù)E(x)霞掺,我們稱之為加法同態(tài)谊路。

1.對于大部分的x,在給定的E(x)通常很難求解出x.

2.不同輸入將會(huì)得到不同輸出 - 因此如果x≠y,菩彬,則E(x)≠E(y).

3.如果某人知道了E(x)和E(y),缠劝,則他可以生成在算數(shù)運(yùn)算式中的x和y.。比如挤巡,他們可以使用E(x)和E(y).來計(jì)算E(x+y)剩彬。

同理我們可以定義乘法同態(tài)甚至是全同態(tài)酷麦。

我們常用的的非對稱加密方式RSA和ECC都支持加法同態(tài)矿卑,計(jì)算和證明證明需要比較多的公式運(yùn)算,有時(shí)間另外開一篇文章講解沃饶。

跟RSA和ECC一樣母廷,注意這里的E(x)計(jì)算是在有限域里面進(jìn)行轻黑,這個(gè)域下文稱為Fp。

有了同態(tài)隱藏這個(gè)利器以后琴昆,我們就可以實(shí)現(xiàn)一定程度的零知識證明了氓鄙。

A擁有x和y兩個(gè)秘密的數(shù)字,需要向B證明這兩個(gè)數(shù)字的和是7业舍,只需要執(zhí)行下面三個(gè)步驟:

1.A計(jì)算E(x)抖拦,E(y),并發(fā)送給B

2.因?yàn)楹瘮?shù)E(x)滿足加法同態(tài)舷暮,B可以通過E(x)态罪,E(y)計(jì)算E(x+y)

3.B獨(dú)立計(jì)算E(7),并驗(yàn)證E(x+y)=E(7)

多項(xiàng)式盲驗(yàn)證

利用加法同態(tài)的特性下面,我們可以簡單的把零知識證明推廣到多項(xiàng)式中复颈。

假定A知道一個(gè)最高d次的多項(xiàng)式P,而B想要知道對應(yīng)某個(gè)s的E(P(s))

我們希望在驗(yàn)證的過程中沥割,A只知道P耗啦,不知道s,B只知道s机杜,不知道P帜讲,可以通過下面方式實(shí)現(xiàn):

1.對s的每個(gè)指數(shù),B計(jì)算E(1)椒拗,E(s)舒帮,...,E(sd)陡叠,并發(fā)送給A

2.A知道多項(xiàng)式的所有系數(shù)玩郊,可以利用同態(tài)特性計(jì)算P(s),并回送給B

KCA以及完整的多項(xiàng)式盲驗(yàn)證

上一章提供的多項(xiàng)式盲驗(yàn)證方式有一個(gè)致命的問題枉阵,就是B根本沒法驗(yàn)證A是真正利用多項(xiàng)式P(s)去計(jì)算結(jié)果译红,也就是說無法證明A真正知道這個(gè)多項(xiàng)式P(X)。我們繼續(xù)完善一下上面的驗(yàn)證兴溜。

我們先定義一個(gè)概念:α對是指滿足b=α*a的一對值(a侦厚,b)。注意這里的乘法其實(shí)是橢圓曲線(ECC)上的乘法拙徽,橢圓曲線上的運(yùn)算符合兩個(gè)特性:一是當(dāng)α值很大的情況下刨沦,很難通過a和b倒推出α,二是加法和乘法滿足可交換群的特性膘怕,也就是說加法和乘法交換律在橢圓曲線上也是成立的想诅。橢圓曲線的運(yùn)算很復(fù)雜,本文暫不詳述,大家只要記住橢圓函數(shù)的乘法滿足同態(tài)隱藏的特性来破,即可完成下面的證明篮灼。

我們利用α對的特性,構(gòu)建一個(gè)稱為KCA(Knowledge of Coefficient Test and Assumption)的過程

1.B隨機(jī)選擇一個(gè)α生成α對(a徘禁,b)侧到,α自己保存黔宛,(a踩娘,b)發(fā)送給A

2.A選擇γ搔谴,生成(a′,b′)=(γ?a,γ?b),把(a′,b′)回傳給B驶沼。利用交換律它改,可以證明(a′,b′)也是一個(gè)α對,b′=γ?b=γα?a=α(γ?a)=α?a′

3.B校驗(yàn)(a′,b′)商乎,證實(shí)是α對央拖,就可以斷言A知道γ

這個(gè)證明可以推廣到多個(gè)α對的場景,稱為d-KCA

1.B發(fā)送一系列的α對給A

2.A使用(a′,b′)=(c1?a1+c2?a2,c1?b1+c2?b2)生成新的α對

3.B驗(yàn)證通過鹉戚,可以斷言A知道c數(shù)組

這個(gè)KCA咋看似乎沒有什么用鲜戒,但正好可以補(bǔ)足了之前多項(xiàng)式盲驗(yàn)證 的缺陷,一個(gè)完整的多項(xiàng)式盲驗(yàn)證過程如下

0.因?yàn)闄E圓曲線的乘法符合同態(tài)隱藏的特性抹凳,A和B可以共同選擇x?g作為E(x)

1.B計(jì)算g,s?g,…,sd?g和α?g,αs?g,…,αsd?g并發(fā)送給A遏餐,實(shí)際上過程同上一章的第一步,只是把E(x)替代成乘法赢底,增加了αs相應(yīng)的多項(xiàng)式結(jié)果

2.A計(jì)算a=P(s)?g失都,b=αP(s)?g并回傳

3.a值即為B所需校驗(yàn)的E(P(s))結(jié)果,同時(shí)KCA保證了a值必然是通過多項(xiàng)式生成

好了幸冻,到這里喘口氣粹庞,回顧一下我們現(xiàn)在到底做到了些什么。

通過加法同態(tài)洽损,我們可以實(shí)現(xiàn)加法隱藏庞溜,讓B在不知道x和y的情況下,校驗(yàn)x+y的值碑定。進(jìn)一步流码,通過多項(xiàng)式盲驗(yàn)證,我們可以在不暴露多項(xiàng)式P(X)的情況下延刘,讓B校驗(yàn)任意給定s對應(yīng)的P(s)漫试。

接下來坐好扶穩(wěn),我們要從多項(xiàng)式推廣到任意計(jì)算的盲驗(yàn)證了碘赖。

任意計(jì)算轉(zhuǎn)換到多項(xiàng)式證明

直接上例子驾荣,假定A需要向B證明他知道c1外构,c2,c3秘车,使(c1?c2)?(c1+c3)=7典勇,按照慣例劫哼,c1叮趴,c2,c3需要對B保密权烧。

我們要做的第一步就是把計(jì)算“拍平”眯亦,通過基本的運(yùn)算符把原計(jì)算畫成這樣的“計(jì)算門電路”。


當(dāng)然我們也可以用程序員比較熟悉的方式來表達(dá)

S1=C1*C2

S2=C1+C3

S3=S1*S2

通過增加中間變量般码,我們把復(fù)雜的計(jì)算拍平妻率,使用最簡單的門電路表達(dá)。新的門電路跟原計(jì)算是等價(jià)的板祝。

我們要做的第二步就是把每一個(gè)門電路表示為等價(jià)的向量點(diǎn)積形式宫静,這個(gè)過程成為R1CS(rank-1 constraint system)。

對每個(gè)門電路券时,我們定義一組向量(a,b,c)孤里,使得s . a * s . b - s . c = 0。其中s代表全部輸入的向量橘洞,也就是[C1,C2,C3,S1,S2,S3]捌袜,為了讓加法門也能用同樣的方式表達(dá),我們增加一個(gè)虛擬的變量成為one炸枣,s向量變成[one,C1,C2,C3,S1,S2,S3]虏等。

對應(yīng)到第一個(gè)門

a=[0,1,0,0,0,0,0]

b=[0,0,1,0,0,0,0]

c=[0,0,0,0,1,0,0]

把s,a适肠,b和c代入s . a * s . b - s . c = 0霍衫,得到C1*C2-S1=0,即這個(gè)向量表達(dá)跟第一個(gè)門是完全等價(jià)的侯养。

同理我們可以計(jì)算第二個(gè)門

a=[1,0,0,0,0,0,0]

b=[0,1,0,1,0,0,0]

c=[0,0,0,0,0,1,0]

第三個(gè)門

a=[0,0,0,0,1,0,0]

b=[0,0,0,0,0,1,0]

c=[0,0,0,0,0,0,1]

好了慕淡,到這里,我們把一個(gè)計(jì)算式拍平成為門電路沸毁,接著又通過R1CS把門電路“編碼”成向量的表達(dá)方式峰髓。

接下來是最重要的一步,把向量表達(dá)式表示為多項(xiàng)式息尺,從而把向量的驗(yàn)證轉(zhuǎn)化為多項(xiàng)式的驗(yàn)證携兵,這個(gè)過程稱為QAP(Quadratic Arithmetic Programs)。

具體辦法是搂誉,在Fp上面選定任意三個(gè)不同的值徐紧,例如我們選定1,2,3并级,尋找一組多項(xiàng)式

使得多項(xiàng)式在x取值1拂檩,2,3的時(shí)候a嘲碧,b稻励,c數(shù)組的取值分別對應(yīng)到前述三個(gè)門電路的向量。

問題轉(zhuǎn)化為通過已知解倒推多項(xiàng)式定義愈涩,這部分可以使用拉格朗日插值完成望抽,本文不再詳述。這個(gè)過程中需要對向量的每個(gè)取值做拉格朗日插值履婉,對于復(fù)雜問題煤篙,這個(gè)向量會(huì)非常龐大,計(jì)算過程會(huì)很復(fù)雜毁腿,這里可以利用快速傅里葉變換進(jìn)行優(yōu)化辑奈。

到這里,我們把原來的三個(gè)向量組表示成為一個(gè)用x表示的數(shù)組a(x),b(x),c(x)已烤。

取多項(xiàng)式P(x)=s . a(x) * s . b(x) - s . c(x)鸠窗,根據(jù)我們原來的定義,在x取值為1草戈,2或3的時(shí)候塌鸯,P(x)=0。根據(jù)多項(xiàng)式特性唐片,P(a)=0等價(jià)于P可以被(x-a)整除丙猬,P(x)一定能被(x-1)(x-2)(x-3)整除,也就是說存在H(X)费韭,使P(x)=T(x)*H(x)茧球,其中T(x)=(x-1)(x-2)(x-3)。

注意QAP這個(gè)過程把原來三個(gè)點(diǎn)的取值轉(zhuǎn)化成為一個(gè)多項(xiàng)式星持,相當(dāng)于中間插入了很多沒有意義的值抢埋,這些值的取值與原公式是無關(guān)的。也就是說多項(xiàng)式的驗(yàn)證與原計(jì)算的驗(yàn)證本質(zhì)并不等價(jià)督暂,但驗(yàn)證了多項(xiàng)式也就驗(yàn)證了元計(jì)算揪垄。

好了,最終我們把原算式的證明轉(zhuǎn)化成為多項(xiàng)式的證明逻翁,只要證明P(x)=T(x)*H(x)饥努,即可驗(yàn)證原算式。

匹諾曹協(xié)議

通過QAP八回,我們已經(jīng)把計(jì)算式的證明轉(zhuǎn)化為多項(xiàng)式的證明酷愧,現(xiàn)在萬事具備驾诈,只欠東風(fēng),就差一個(gè)完整的驗(yàn)證流程了溶浴。

為了簡化下文描述乍迄,我們定義s . a(x)為L(x),s . b(x)為R(x)士败,s . c(x)為O(x)闯两,那么我們需要證明的等式就改寫成L(x)*R(x)-O(x)=T(x)*H(x)。L拱烁,R和O的最高階數(shù)是d生蚁,所以這個(gè)等式的最高階數(shù)是2d噩翠,我們知道戏自,兩個(gè)不等價(jià)的多項(xiàng)式交點(diǎn)數(shù)量最多只有2d個(gè),2d相較于有限域的元素個(gè)數(shù)p來說很小的情況下伤锚,我們可以采用采樣的方式驗(yàn)證多項(xiàng)式相等擅笔,A隨意選擇多項(xiàng)式P(x)被校驗(yàn)通過的概率只有2d/p。隨機(jī)采樣校驗(yàn)的過程如下:

1.A按照上一章方法選擇多項(xiàng)式L,R,O,H

2.B選擇隨機(jī)點(diǎn)s屯援,計(jì)算E(T(s))

3.A計(jì)算E(L(s)),E(R(s)),E(O(s)),E(H(s))? (根據(jù)B發(fā)過來的E(s)猛们,E(s2),...)

4.B檢驗(yàn)E(L(s)*R(s)-O(s))=E(H(s)*T(s))

這個(gè)證明過程還有四個(gè)問題需要解決:

1.保證L,R,O從同一組參數(shù)s生成

這個(gè)證明過程存在一個(gè)缺陷,正如按照我們的定義L(x)=s . a(x)狞洋,R(x)=s . b(x)弯淘,O(x)=s . c(x),這里隱含了一個(gè)限定條件是L吉懊,R和O必須是由同一個(gè)向量s生成庐橙,證明中忽略了這一點(diǎn),也就是說A可以通過選擇不符合這個(gè)限定條件的多項(xiàng)式來作弊借嗽。解決辦法仍然是KCA态鳖,只不過這次的KCA要復(fù)雜一些。

先定義兩個(gè)公式:


這個(gè)公式的含義是要把L恶导,R浆竭,O的指數(shù)錯(cuò)開,如果L惨寿,R邦泄,O真是從同一組s=[s1,....sm]生成的話,必然有

換句話說裂垦,只要A能給出F和Fi的線性組合顺囊,即可證明L,R缸废,O符合限定條件包蓝。這個(gè)限定條件的問題就轉(zhuǎn)化為一個(gè)d-KCA的問題了驶社。

1.B選擇隱秘的α,計(jì)算E(α*Fi)并發(fā)送給A

2.A計(jì)算E(αF)回傳給B

3.B根據(jù)本文公式自行計(jì)算E(F)并校驗(yàn)α對

2.防止暴力破解

在現(xiàn)在的流程里面测萎,A需要把E(L(s)),E(R(s)),E(O(s))亡电,根據(jù)同態(tài)隱藏的特性,根據(jù)這些值無法倒推原多項(xiàng)式硅瞧。但是如果需要驗(yàn)證的問題份乒,解不多的情況下,B還是可以通過窮舉的方式暴力破解原問題腕唧,得到A的原始數(shù)據(jù)或辖。例如我們已知A有兩個(gè)正整數(shù),要求盲驗(yàn)證這兩個(gè)正整數(shù)的乘積是12枣接,那么B完全可以窮舉乘積是12的所有正整數(shù)組合颂暇,正向執(zhí)行驗(yàn)證過程,與E(L(s))但惶,E(R(s))和E(O(s))比對即可知道正確的答案是什么耳鸯。

當(dāng)然,我們也有解決辦法膀曾。解決思路就是在生成L县爬,R,O的時(shí)候引入隨機(jī)偏置


因?yàn)?/p>


新的組合

任然可以通過多項(xiàng)式的校驗(yàn)添谊,而因?yàn)锽不知道隨機(jī)數(shù)财喳,也無法通過暴力破解的方式知曉原始參數(shù)。

3.乘法同態(tài)

匹諾曹協(xié)議的最后一步斩狱,B需要檢驗(yàn)E(L(s)*R(s)-O(s))=E(H(s)*T(s))耳高,而事實(shí)上,我們之前只提到E(x)滿足加法同態(tài)喊废,B是無法通過E(H(s))計(jì)算出E(H(s)*T(s))的祝高。

解決辦法需要回歸到我們的數(shù)學(xué)工具上,我們需要用到橢圓曲線配對的特性污筷,這里說來話長工闺,本文只給出結(jié)論。通過橢圓曲線配對瓣蛀,我們可以得到一個(gè)弱化版的乘法同態(tài)陆蟆。

定義E1(x):=x?g,E2(x):=x?h,E(x):=x?g,因?yàn)槿齻€(gè)函數(shù)都是橢圓曲線惋增,自然分別都符合加法同態(tài)叠殷,同時(shí)橢圓曲線配對特性可以保證我們能通過E1(x),E2(y)計(jì)算E(xy)诈皿。

4.減少交互

最后一個(gè)問題也是最關(guān)鍵的一個(gè)問題是林束,匹諾曹協(xié)議中需要A和B之間做很多的消息交互像棘,而在區(qū)塊鏈中,我們想要做到的是“公開認(rèn)證”壶冒。最理想的情況就是只要A把證據(jù)作為一個(gè)字符串放置到鏈上缕题,任何人都能驗(yàn)證結(jié)論。

可惜的是胖腾,實(shí)際上這種嚴(yán)格意義上的零交互證明已經(jīng)被證明不能滿足所有的證明場景烟零。我們退而求其次,采用了一種稱為CRS(COMMON REFERENCE STRING)的方式咸作。原理很簡單锨阿,實(shí)際上就是把隨機(jī)數(shù)α和s內(nèi)置于“系統(tǒng)”中。

所以終極版的zkSNARK過程就是:

0.配置α和s记罚,以之計(jì)算 (E1(1),E1(s),…,E1(sd),E2(α),E2(αs),…,E2(αsd))E2(α),并公示

1.A使用公示參數(shù)計(jì)算驗(yàn)證多項(xiàng)式

2.B校驗(yàn)多項(xiàng)式墅诡,乘法同態(tài)部分利用橢圓曲線配對的特性完成,形如E(αx)=Tate(E1(x),E2(α))

當(dāng)然CRS有一個(gè)極其嚴(yán)重的問題就是毫胜,“系統(tǒng)”內(nèi)建的隨機(jī)參數(shù)非常重要书斜,知道這個(gè)秘密參數(shù)的人就擁有超級管理員的權(quán)限诬辈,可以任意制造偽幣酵使,這在一個(gè)去中心化的系統(tǒng)中幾乎是不可接受的。

事實(shí)上焙糟,ZCash的系統(tǒng)參數(shù)采用了一種影視劇中經(jīng)常出現(xiàn)的橋段去“保護(hù)”這個(gè)不應(yīng)該也不需要由任何人掌握的配置數(shù)據(jù)口渔。選擇世界各地六個(gè)可信任的人,每人生成密鑰一部分穿撮,六個(gè)人的密碼拼接在一起生成公示的數(shù)據(jù)后缺脉,再分別銷毀掉各自手上的密鑰。除非六人合謀作弊悦穿,否則沒有人擁有超級管理員的權(quán)限攻礼。

參考文獻(xiàn)

ZCash7篇,有社區(qū)翻譯版栗柒,但還是推薦看原汁原味的? ? ?https://z.cash/blog/snark-explain.html

Vitalik3篇礁扮,小天才作者我就不介紹了,這三篇介紹得也是很透徹

https://medium.com/@VitalikButerin/quadratic-arithmetic-programs-from-zero-to-hero-f6d558cea649

https://medium.com/@VitalikButerin/exploring-elliptic-curve-pairings-c73c1864e627

https://medium.com/@VitalikButerin/zk-snarks-under-the-hood-b33151a013f6

一篇不錯(cuò)的中文介紹材料?http://news.btc123.com/news/detail?id=8125

libsnark開源庫地址?https://github.com/scipr-lab/libsnark

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瞬沦,一起剝皮案震驚了整個(gè)濱河市太伊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逛钻,老刑警劉巖僚焦,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異曙痘,居然都是意外死亡芳悲,警方通過查閱死者的電腦和手機(jī)立肘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來名扛,“玉大人赛不,你說我怎么就攤上這事“罩蓿” “怎么了踢故?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長惹苗。 經(jīng)常有香客問我殿较,道長,這世上最難降的妖魔是什么桩蓉? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任淋纲,我火速辦了婚禮,結(jié)果婚禮上院究,老公的妹妹穿的比我還像新娘洽瞬。我一直安慰自己,他們只是感情好业汰,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布伙窃。 她就那樣靜靜地躺著,像睡著了一般样漆。 火紅的嫁衣襯著肌膚如雪为障。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天放祟,我揣著相機(jī)與錄音鳍怨,去河邊找鬼。 笑死跪妥,一個(gè)胖子當(dāng)著我的面吹牛鞋喇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播眉撵,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼侦香,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了执桌?” 一聲冷哼從身側(cè)響起鄙皇,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仰挣,沒想到半個(gè)月后伴逸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膘壶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年错蝴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洲愤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡顷锰,死狀恐怖柬赐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情官紫,我是刑警寧澤肛宋,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站束世,受9級特大地震影響酝陈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜毁涉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一沉帮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贫堰,春花似錦穆壕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至漫玄,卻和暖如春茄蚯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背睦优。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壮不,地道東北人汗盘。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像询一,于是被迫代替她去往敵國和親隐孽。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

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

  • 1. 關(guān)于診斷X線機(jī)準(zhǔn)直器的作用健蕊,錯(cuò)誤的是()菱阵。 (6.0 分) A. 顯示照射野 B. 顯示中心線 C. 屏蔽多...
    我們村我最帥閱讀 10,270評論 0 5
  • 在互聯(lián)網(wǎng)晴及、電商的沖擊下,傳統(tǒng)零售行業(yè)中的供應(yīng)商和零售商面臨著巨大的轉(zhuǎn)型壓力嫡锌。供應(yīng)商傳統(tǒng)渠道網(wǎng)絡(luò)優(yōu)勢虑稼、區(qū)域終端管控能...
    小商妹兒閱讀 1,733評論 0 0
  • 當(dāng)你懂得越來越多蛛倦,學(xué)習(xí)的越來越多歌懒,卻發(fā)現(xiàn)被太多條條框框的知識束縛。這是在寫這篇書評前最大的感受溯壶,另一個(gè)原因也許是因...
    梓夢柔閱讀 958評論 6 8
  • 心血來潮看了一部老電影《王牌對王牌》及皂,影帝的演技果然非常精彩。兩位談判專家都非常能掌控局面且改,在塞比爾出場之前躲庄,法利...
    喂了自由閱讀 226評論 0 0
  • 你在南方優(yōu)雅肅靜的杭州,我在西北粗獷豪放的蘭州钾虐。當(dāng)你吃著外賣的披薩噪窘,我吃著食堂里地道的菜拌面。 我們在同一...
    deedee閱讀 197評論 0 2