比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > BNB價格 > Info

二次算術程序:關于零知識證明的論述_SYM

Author:

Time:1900/1/1 0:00:00

作者:VitalikButerin

原標題:《QuadraticArithmeticPrograms:fromZerotoHero》

發表時間:2016年12月10日

最近人們對zk-SNARKs背后的技術有很多興趣,人們越來越多地試圖去揭開一些被許多人稱為“月球數學”的東西的神秘面紗,因為人們認為它的復雜性非常難以理解。zk-SNARKs的理解確實相當具有挑戰性,尤其是由于整個系統需要組裝起來才能工作的移動部件太多,但如果我們把這項技術一件一件地分解,那么理解起來就會變得更簡單。

這篇文章的目的不是用于完整的介紹zk-SNARKs,它假定您具有以下背景知識:

1-你知道zk-SNARKs和他的大致原理;

2-你有足夠的數學知識,能理解一些基本的多項式知識。(如ifP(x)+Q(x)=(P+Q)(x),P和Q代表多項式,如果你對這類多項式表述方式已經非常熟悉,說明你符合繼續閱讀的要求)。

zk-SNARK知識管道圖,EranTromer繪制

如上圖,可以將以上零知識證明分為由上至下的兩個階段。首先,zk-SNARK不能直接應用于任何計算問題;相反,您必須將問題轉換為操作的正確“形式”。這種形式被稱為“二次算術程序”(QAP),將函數的代碼轉換成這些代碼本身就非常重要。與將函數代碼轉換為QAP的過程一起運行的還有另一個過程,這樣,如果對代碼有輸入,就可以創建相應的解決方案(有時稱為QAP的“見證”)。這就是本文需要講述的內容。

在此之后,還有另一個相當復雜的過程來為這個QAP創建實際的“零知識證明”,還有一個單獨的過程來驗證別人傳給你的證據,但是這些細節超出了本文的范圍。

Solana鏈上活動持續凍結,驗證者準備第二次嘗試重啟:2月26日消息,Solana網絡的深度凍結仍在繼續,驗證者正在準備第二次重啟嘗試,希望能夠恢復該鏈的用戶服務。

到紐約時間晚上,運行Solana基礎設施的驗證者早已得出結論,解決目前問題的最佳方法是同步重啟并分叉鏈。當驗證者意識到他們選擇了錯誤的重啟點時,第一次嘗試被放棄,進一步延長了延遲時間。

驗證者和開發人員表示,最初的問題是交易處理緩慢,現在已經演變成Solana上的活動幾乎完全中斷,例如停止出塊,交易沒有被處理或驗證。這意味著用戶們的鏈上加密資產不可移動,持續凍結,直到關鍵的后端基礎設施重新上線。

危機發生數小時后,Solana生態系統的關鍵人物仍在尋找事件發生的原因。一個主要的理論是,一個“fat block”影響了該區塊鏈的機制。值得注意的是,在問題開始前不久,該網絡正在升級。

截至發稿時,驗證者與Solana Labs的開發人員合作,再次嘗試重啟區塊鏈,并獲得了70%的stake支持,該網絡需要80%的絕對多數支持才能繼續運作。

另外,Solana Status發推稱,協調重啟正在進行中,以解決從1.13升級到1.14期間導致區塊終結速度顯著變慢的問題。[2023/2/26 12:29:55]

在下面示例中,我們將選擇一個非常簡單的問題:

求一個三次方程的解:x**3+x+5==35(提示:答案是3)。

這個問題很簡單,但是重要的,你可以由此案例看到所有的功能是如何發揮作用的。

用編程語言描述以上方程如下:

defqeval(x):??y=x**3??returnx+y+5我們在這里使用的簡單編程語言支持基本的算術(+、-、、/)、恒等冪指數(x7,但不是x*y)和變量賦值,這足夠強大到理論上可以在其中進行任何計算(只要計算步驟的數量是有界的;不允許循環)。注意模(%)和比較運算符(<、>、≤≥)不支持,因為沒有有效的方法做模或直接比較有限循環群算法(感謝;如果有任何一種方法可以做到這一點,那么橢圓曲線密碼破環的速度將超過“二分查找”和“中國剩余定理”)。

前沿有理旗艦基金二次升級獲批,已成為香港持牌加密貨幣對沖基金:金色財經報道,香港證監會近日已批準了前沿有理資本管理有限公司旗艦基金(Flagship Fund SP)的第二次升級(Uplift),該旗艦基金是現行香港發牌制度下唯一采用多策略并獲得正向回報的加密貨幣對沖基金,不但投資標的品種寬泛,可交易流動性前100的幣種,也可利用杠桿和交易加密金融衍生品。

據悉,Fore Elite旗艦基金于2022年3月成立。自推出至2022年12月,盡管加密貨幣市場下跌近58%,該基金仍獲得約9.2%正回報凈收益,并于2022年底仍向股東派發了約7000萬港元的股息。[2023/2/21 12:19:12]

您可以通過位分解來將語言擴展到模和比較,不過請注意,條件的兩個“路徑”都需要執行,如果您有許多嵌套的條件,那么這會導致大量開銷。

現在讓我們一步一步地經歷這個過程。如果你想自己做任何代碼,我在這里用Python實現了一段代碼

第一步:壓扁

第一步是一個“壓扁”的過程,我們把原來的代碼分解為最簡單的表達式,這種表達式有兩種形式:

1-x=y(y可以是變量或數字)2-x=y(op)z(op可以+,-,*,/,y和z可以是變量,數字或子表達式)。

你可以把這些表述看成是電路中的邏輯門。上述表達式x**3+x+5的扁平化過程結果如下:

sym_1=x*xy=sym_1*x//相當于實現了冪函數y=x**3sym_2=y+x~out=sym_2+5

你可以認為上述的每一行聲明都是一個電路中的邏輯門,與原始代碼相比,這里我們引入了兩個中間變量sym_1和sym_2,還有一個表示輸出的冗余變量~out,不難看出“壓扁”后的聲明序列和原始代碼是等價的。

英國1922委員會將于北京時間7日凌晨1點開會討論是否對英國首相發起第二次不信任投票:金色財經報道,英國1922委員會將于北京時間7日凌晨1點開會,討論是否改變規則以對英國首相約翰遜發起第二次不信任投票。據金色財經觀察,近日,英國首相約翰遜近期接連發表不當聲明,并為涉嫌行為不檢的原保守黨副黨鞭平徹護短,引發信任危機,英國多位部長辭職。[2022/7/6 1:55:33]

第二步:轉為R1CS

現在,我們把它轉換成一個稱為R1CS的東西。R1CS是由三個向量(a,b,c)組成的序列,R1CS的解是一個向量s,其中s必須滿足方程

s.a*s.b-s.c=0

其中.代表內積運算。

例如,以下是一個令人滿意的R1CS:

a=(5,0,0,0,0,1),b=(1,0,0,0,0,0),c=(0,0,1,0,0,0),s=(1,3,35,9,27,30),

上述例子只是一個約束,接下來我們要將每個邏輯門轉化成一個約束,轉化的方法取決于聲明是什么運算(+,-,*,/)和聲明的參數是變量還是數字。在我們這個例子中,除了“壓扁”后的五個變量('x','~out','sym_1','y','sym_2')外,還需要在第一個分量位置處引入一個冗余變量~one來表示數字1,就我們這個系統而言,一個向量所對應的6個分量是(可以是其他順序,只要對應起來即可):

'~one','x','~out','sym_1','y','sym_2'

第一個門

sym_1=x*x,即x*x-sym_1=0

我們可以得到如下向量組:

EOS生態二次眾籌平臺Pomelo已正式上線,申請50萬美元生態扶持資金:11月7日,EOS生態二次眾籌平臺Pomelo正式上線。作為EOS網絡基金會資金申請正式渠道,Pomelo平臺細分的生態扶持項目包括基礎設施、開發工具、藝術與媒體、社區、教育、安全、生態系統增長、DeFi、治理、隱私等多個類別,用戶可通過Pomelo.io官網申請第一批價值50萬美元的生態基礎設施建設項目扶持資金。Pomelo將通過二次方籌資的方式進行資金分配。[2021/11/8 6:37:25]

a=b=c=

如果解向量s的第二個標量是3,第四個標量是9,無論其他標量是多少,都成立,因為:a=3*1,b=3*1,c=9*1,即a*b=c。同樣,如果s的第二個標量是7,第四個標量是49,也會通過檢查,第一次檢查僅僅是為了驗證第一個門的輸入和輸出的一致性。

第二個門

y=sym_1*x,即sym_1*x-y=0可以得到以下向量組:

a=b=c=

第三個門

sym_2=y+x,加法門需要轉換為:(x+y)*1-sym_2=0得到以下向量組:

a=b=對應常量1,用~one位c=

第四個門

~out=sym_2+5,即(sym_2+5)*1-~out=0得到以下向量組:

a=b=c=

現在,我們假設x=3,根據第一個門,得到sym_1=9,根據第二個門得到y=27,根據第三個門,得到sym_2=30,根據第四個門得到~out=35,因此,根據:'~one','x','~out','sym_1','y','sym_2',可以得到:

分析 | 多軍不要急,還有二次回踩可能:據Huobi數據顯示,BTC現報7630.16美元,今日漲幅0.02%。針對當前走勢,金色盤面特邀分析師保羅大帝表示:昨日晚間BTC驚濤駭浪,當時考慮BTC從高點10350到8100一直沒有像樣的反彈。市場監管不斷深入,低迷的交易額,種種跡象表明BTC短期并不樂觀。

技術上看,30分鐘小周期,比特幣反彈至布林上軌受到壓制,BOLL開口開始縮口。附圖指標,MACD金叉向上延伸出現小幅背離趨勢,靈敏指標KDJ拐頭向下,DMI-PDI20以下持續運行。綜合來看,BTC小周期反彈后,遇到上方壓力開始受阻,后期小周期偏弱勢震蕩。

今日操作:上方壓力位7700美元,第一支撐位7550美元,第二支撐位7300美元。合約方面,今日如遇反彈,高點跟空,15分鐘第一支撐7600,第二支撐7450(如下圖)。現貨方面,比特幣轉牛失敗后,已回踩差不多,關注重要支撐7300美元能否撐住。

注1:以上合約操作價格為火幣季度合約價格,現貨為火幣現貨價格。[2019/11/22]

s=

如果假設不同的x,都可以得到不同的s,但所有s都可以用來驗證(a,b,c)

現在我們得到了四個約束的R1CS,完整的R1CS如下:

A

B

C

第三步:從R1CS到QAP

下一步是將這個R1CS轉換成QAP形式,它實現了完全相同的邏輯,只是使用多項式而不是內積。我們是這樣做的:從4組長度為6的3個向量到6組長度為3度的多項式,在每個x坐標處求多項式代表一個約束條件。也就是說,如果我們求出x=1處的多項式,我們就得到了第一組向量,如果我們求出x=2處的多項式,我們就得到第二組向量,以此類推。

我們可以用拉格朗日插值來做這個變換。拉格朗日插值法解決的問題是:如果你有一組點(即(x,y)坐標對),然后對這些點做拉格朗日插值得到一個經過所有這些點的多項式。我們通過分解問題:對于每個x坐標,我們創建一個多項式,所需的y坐標的x坐標和y坐標0在所有其他的x坐標我們感興趣,然后讓最終結果我們一起添加所有的多項式。

讓我們做一個例子。假設我們想要一個多項式經過(1,3),(2,2)和(3,4)。我們首先做一個多項式,經過(1,3)(2,0)和(3,0)。事實證明,一個多項式,“伸出”x=1和0的其他的興趣點是很容易的,我們只要做以下多項式即可:

y=(x-2)*(x-3)

如下圖:

然后,在y軸方向“拉伸”,使用如下方程:

y=(x-2)*(x-3)*3/((1-2)*(1-3))

經整理,得到:

y=1.5*x**2-7.5*x+9

滿足同時經過(1,3)(2,0)和(3,0)三個點,如下圖:

將(2,2)和(3,4)兩點代入上式,可以得到:

y=1.5*x**2-5.5*x+7

就是我們想要的坐標方程。上述算法需要O(n3)時間,因為有n個點,每個點都需要O(n2)時間將多項式相乘。稍微思考一下,這就可以減少到O(n**2)的時間,再多思考一下,使用快速的傅里葉變換算法等等,它可以進一步減少——這是一個關鍵的優化,當在zk-spuks中使用的函數通常有成千上萬個門時。

在這里我直接給出拉格朗日插值公式:

通過n個點(x1,y1),(x2,y2),(x3,y3),...,(xn,yn)的n-1階多項式為:

例如上例中,通過點(1,3),(2,2),(3,4)的多項式為:

學會使用這個公式后可以繼續我們的步驟了。現在我們要將四個長度為六的三向量組轉化為六組多項式,每組多項式包括三個三階多項式,我們在每個x點處來評估不同的約束,在這里,我們共有四個約束,因此我們分別用多項式在x=1,2,3,4處來評估這四個向量組。

現在我們使用拉格朗日差值公式來將R1CS轉化為QAP形式。我們先求出四個約束所對應的每個a向量的第一個值的多項式,也就是說使用拉格朗日插值定理求過點(1,0),(2,0),(3,0),(4,0)的多項式,類似的我們可以求出其余的四個約束所對應的每個向量的第i個值的多項式。

這里,直接給出答案:

Apolynomials

Bpolynomials

Cpolynomials

這些系數是升序排序的,例如上述第一個多項式是0.833*x**3-5*x**2+9.166*x-5.如果我們將x=1帶入上述十八個多項式,可以得到第一個約束的三個向量

(0,1,0,0,0,0),(0,1,0,0,0,0),?(0,0,0,1,0,0),...類似的我們將x=2,3,4帶入上述多項式可以恢復出R1CS的剩余部分。

第四步:檢查QAP

通過將R1CS轉換成QAP我們可以通過多項式的內積運算來同時檢查所有的約束而不是像R1CS那樣單獨的檢查每一個約束。如下圖所示:

因為在這種情況下,點積檢驗是一系列多項式的加法和乘法,結果本身就是一個多項式。如果得到的多項式,在我們上面用來表示邏輯門的每一個x坐標處的值,等于0,那就意味著所有的檢查都通過了;如果結果多項式至少有一個非零值,那么這就意味著進出邏輯門的值是不一致的。

值得注意的是,得到的多項式本身不一定是零,事實上在大多數情況下不是;它可以在不符合任何邏輯門的點上有任何行為,只要在所有符合某些門的點上結果是零。為了驗證正確性,我們不計算多項式t=A.s*B.s-C.s在每一點對應一個門;相反,我們把t除以另一個多項式Z,然后檢查Z是否均勻地除t,也就是說,除法t/Z沒有余數。

Z定義為(x-1)*(x-2)*(x-3)…-最簡單的多項式,在所有對應邏輯門的點上都等于0。這是代數的一個基本事實任何多項式在所有這些點上等于零都必須是這個最小多項式的倍數,如果一個多項式是Z的倍數那么它在任何這些點上的值都是零;這種對等使我們的工作容易得多。

現在,讓我們用上面的多項式做內積檢驗。

首先,我們得到中間多項式:

A.s=B.s=C.s=(譯者注:以上計算過程:43.0=-5*1+8*3+0*35-6*9+4*27-1*30,-73.333=9.166*1-11.333*3+0*35+9.5*9-7*27+1.833*30,...-3=3*1-2*3+0*35+0*9+0*27+0*30...)

以上多項式經過:A.s*B.s-C.s計算后得到:

t=(譯者注:計算過程:A.s==-5.166*x3+38.5*x2-73.333*x+43,B.s==0.666*x3-5*x2+10.333*x-3.0,C.s==2.833*x3-24.5*x2+71.666*x-41.0A.s*B.s-C.s就是上面多項式的計算,計算后,按冪從低到高排列系數,得到:

點擊這里查看計算過程

最小多項式為:

Z=(x-1)*(x-2)*(x-3)*(x-4)

即:

Z=

以上計算過程點擊這里查看

現在計算多項式相除:

h=t/Z=

h必須是沒有任何余數的整除。

可以點這里查看到過來驗證。

我們有了QAP的解。如果我們試圖偽造R1CS中的變量,而這個R1CS推導出了QAP解決方案——比如,將s的最后一個數字設為31,而不是30,我們將得到一個t多項式失敗的檢查(在特定情況下,在x=3=1而不是0),而且不會是Z的倍數;相反,除以t/Z會得到的余數。

注意,以上只是一個非常簡單的示例;在現實世界中,加減乘除運算通常伴隨著非常規的數字,所以所有的我們知道并且愛戴的代數定律還是有用的,但是,所有答案是一些——的尺寸的元素,通常是從0到n-1范圍內的整數n。例如,如果n=13,然后1/2=7(7*2=1),3*5=2,等等。使用有限域算法消除了對舍入誤差的擔心,并允許系統與橢圓曲線很好地工作,這最終對使zk-SNARK協議變得真正安全。

Tags:SYMOUTSOLARKSymVerseOUT幣SOL幣走勢ARKM幣

BNB價格
王峰在 Element2.0 線上發布演講實錄:我要讓整個團隊都聽見我激動的心跳_ELE

來源:Element 本文由整理自王峰在Element2.0線上發布演講實錄,以下為全部內容:我認為,NFT是加密市場之光。有了NFT,GameFi和元宇宙才有了基礎組件.

1900/1/1 0:00:00
Sudoswap 引領的 NFT-Fi Summer 來了?_OPTI

作者:Bryan,IOSGVenturesSudoswap引領的NFT-FiSummer來了?本文為IOSG原創內容,僅做行業學習交流之用,不構成任何投資參考.

1900/1/1 0:00:00
GoPlus Security 將為硬件錢包 Keystone 輸出安全檢測服務_PLUS

鏈捕手消息,據官方推特,GoPlusSecurity宣布將與硬件錢包Keystone達成戰略合作,GoPlusSecurity將向Keystone輸出安全檢測服務.

1900/1/1 0:00:00
探索 Web3 錢包安全問題:以太坊社區需要什么樣的恢復系統?_以太坊

原文標題:《DAOrayaki|以太坊社區需要什么樣的社會恢復系統》撰文:Vitalik,isthisanart 編譯:Xinyang 讓加密貨幣和區塊鏈應用程序對普通用戶可用的最大挑戰之一是安.

1900/1/1 0:00:00
長文解讀:AMM 演化史_SWAP

作者:BennyAttar編譯:wesely,DeFi之道自金融概念出現以來,就有了構建對應的金融“市場”,這一概念最早可以追溯到17世紀的香料交易中.

1900/1/1 0:00:00
狗狗鏈 Dogechain 指南:模因文化的新維度_ECH

原標題:《WhatIsDogechain?HowDoesItWork?ADetailedGuide》作者:JoelAgbo,Coingecko 編譯:餅干,鏈捕手 2022年8月13日.

1900/1/1 0:00:00
ads