引言
在一堆不同的項目中,我們需要允許用戶從EVM存入某種鏈下狀態,該狀態在鏈上表示為Merkle累加器。該Merkle樹根據有效性證明或欺詐證明+同步假設進行更新。
SNARK友好的哈希函數非常昂貴,因此有必要最小化它的成本。在optimisticrollups世界中,它并不那么昂貴,但每次存款的成本限制了它在某些場景下的應用,例如大規模遷移。
要從EVM存入Merkle樹,需要執行tree_depth哈希從而能夠包含一個葉子節點。甚至在一個區塊中有兩筆存款都需要tree_depth的哈希值。那么有必要將它們合并在一起,這樣它們只需要花費個哈希值。
這些存款為
在這里,我們提出了一種存儲批處理方法,即
在另一篇文章中,我們將這些優化應用于mixers和optimisticrollups。
之前的工作
MerkleMountainRanges專注于創建深度隨時間增長的Merkle樹。在這個使用案例中,我們需要一個恒定深度的樹,并且不能有可變數量的哈希值。在optimisticrollup中,這也不理想,因為隨著樹的深度的增長,需要更改放在鏈上的數據。
富邦香港CSO:虛擬銀行成功試點證明香港金管局“金融科技2025”方向正確:金色財經報道,前眾安銀行行政總裁、現任富邦銀行(香港)執行副總裁兼首席策略官許洛圣接受采訪時表示,虛擬銀行“由零開始”可以自定方向,從監管角度,香港金管局公布“金融科技2025” 策略時,第一個范疇為全面推展銀行數字化(all banks go FinTech),他認為虛擬銀行成功作出試點,反映這個方向正確,所有銀行都應該采納。(信報)[2023/8/1 16:12:13]
將此用于存儲是有問題的,因為隨著數據集變大,峰值袋變得越來越稀少,因此存款速度變得越來越慢。這可能導致用戶無限期地等待他們的資金存入。
另一種方法是多重證明但在這里不能使用,因為它需要在存款人之間安排協調員。鑒于不斷變化的存款隊列,狀態很可能在協調更新得到處理之前已經改變。
方法
創建存款隊列
如果您曾經玩過2048,您可能會從合并兩個相同值的區塊中獲得樂趣。我們在這里對于Merkle樹也這么做。
我們從一個空的存款樹開始。當存款進來時,我們將其存儲在隊列中并等待。當下一筆存款進入此哈希時,將此哈希保存到我們當前深度為1、同時有2個待處理存款的存款樹。然后我們可以停止存儲與第一筆存款相關的任何數據。
當另一筆存款進來時,我們會再次存儲它。然后對于下一個存款,我們用指定值對其進行哈希,然后用存款樹對結果進行哈希。創建我們的深度為2、有4個待處理存款的存款樹。
LBank Labs宣布投資知名基金管理公司Sparkle Ventures:據官方消息,LBank Labs宣布完成對知名基金管理公司Sparkle Ventures的投資。此基金的GP成員包括The Sandbox的聯合創始人兼首席運營官Sébastien Borget,Animoca Brands的創始人兼董事長Yat Siu,Nomura Digital前戰略投資和技術主管Julien Pageaud,前Tezos區塊鏈協議技術負責人Thibaut Chessé。其投資包括DeFi SaaS平臺Kiln.fi、數據分析軟件AbsoluteLabs.io和ZKP系統Polyhedra.network等。
Sparkle Ventures是LBank Labs FOF戰略投資里的第六個基金,并計劃在未來幾個月繼續擴張FOF投資,以加強投資組合之間的配合和網絡效應。[2023/6/1 11:52:24]
我們已經有效地合并了存款。
將存款樹插入余額樹中
此時,我們有一個深度為2的存款樹,其中有4個待處理的存款。我們還有一個余額樹,它包含一些先前存入的賬戶,其他地方都是零。我們不想覆蓋樹中的帳戶。因為這會毀掉這些用戶的賬戶。我們只需要將它們替換0。
為了將新葉子插入余額樹,我們需要證明:
一個節點的子節點全為零。我們需要這樣做以防止覆蓋已經有過存款的賬戶。
Coinbase推出以太坊鏈上Token資產恢復工具:金色財經報道,Coinbase 宣布推出一款資產恢復工具,可以幫助客戶恢復發送到 Coinbase 賬本的 4000 多種以太坊鏈上 ERC-20 Token。此前若將 Coinbase 不支持的資產發送到其用戶地址,會收到一條消息稱資產已在鏈上成功交付,但實際上并沒有到達接收者的錢包。通常,這些資產是不可恢復的,現在這些 ERC-20 Token 都可以恢復以返還給意外發送的用戶。
據悉,該功能將在未來幾周內推出,但不適用于日本或 Coinbase Prime 用戶。Coinbase 表示,金額低于 100 美元不收取追回費用,但價值超過 100 美元的交易,除了單獨網絡費用之外還將收取 5% 的費用。[2022/12/15 21:47:29]
舉個例子,假設我們有一個節點有2個子節點。我們知道,如果2個子節點都是0,那么節點==hash(0,0)。
但是如果樹真的很深,在EVM/SNARK中計算這個哈希可能效率不高。因此,不如預先計算這個列表,并將其作為一個映射存儲在智能合約中進行部署。
然后每當我們想要檢查一個節點的子節點是否全為零時,我們只需查找此映射。所以有用Merkle證明該節點在樹中,然后通過檢查存儲的映射證明它的子節點全為零。新的Merkle根只更改了零節點,其他一切都相同。
Filecoin公布Hack FEVM獲獎名單:金色財經報道,Filecoin在其博客中公布了Hack FEVM獲獎名單,其中,首屆Hack FEVM迎來了400多名開發者,共創建建和展示了117個項目,并通過各類獎項獲得了超過5萬美元的獎金。Soulmates為本次ETHGlobal、Filecoin大獎得主。據悉,Soulmates是一個建立在FEVM上的soulbound代幣?(SBT)發行商,它包括一組FEVM智能合約,由17個文件、11個測試文件以及大約500行solidity代碼組成。它是一個功能齊全的前端dapp,可用于“創建、分配和認領SBT”。
FEVM是兼容EVM的Filecoin虛擬機,為Ethereum開發人員計算Filecoin網絡存儲交易的元數據提供了開箱即用的體驗。[2022/12/10 21:35:06]
我們之前已經證明了一片葉子的子節點全為零,現在我們想要改變那片葉子,同時保持樹的其余部分不變。
使用相同的Merkle路徑,我們計算了用deposit_tree替換的沒有葉子的根。
然后我們將這個新的Merkle根存儲為包含所有存放葉子的新余額樹,使用我們用來證明葉子在樹中的相同Merkle路徑確保了所有其他葉子不會改變,并且只允許我們更新零節點的子節點。
知情人士:推特首輪或裁員25%:金色財經報道,一位知情人士透露,該團隊正在決定第一輪裁員計劃,首輪或將裁員25%,總數超過7,000人。該知情人士表示,裁員將涉及幾乎所有部門,尤其在未來幾天對銷售、產品、工程、法律、信任和安全等部門產生影響。據華盛頓郵報看到的文件,其中一些員工的年收入超過30萬美元。
據透露,代表馬斯克多年的著名律師Alex Spiro正在管理Twitter的多個團隊,周末組織了推特剩余高管們就內容審核和垃圾郵件方法以及裁員25%的員工計劃進行了詳細討論。
此前報道,馬斯克稱自己將擔任推特CEO。(華盛頓郵報)[2022/11/1 12:03:36]
同步的注意事項
像zksnarks/optimisticrollup這樣的一些系統需要證明時間才能執行存款。如果在這種情況下存款樹發生變化,則證明可能無效。因此,最好有一種方法可以在某個存款樹被存入時暫停更新。
概括
這里我們提出了一種合并存款的方法。我們在EVM中查詢存款,當它們被存入更大的Merkle樹時,它們會將它們合并。
在后續文章中,我們將把它應用到mixer存款和optimisticrollup存款/大規模遷移。
討論:
weijiekoh
假設隊列長度是8而不是4。
令storage為存儲一個值所需的gas量。
令hash為哈希兩個值所需的gas量。
這是否意味著存儲在2^n位置用戶由于其在隊列中的位置而處于劣勢。
barryWhiteHat
與現狀相比,對每個人來說都更便宜?
weijiekoh
它確實對每個人來說都更便宜,在我看來,當考慮到每次哈希的成本時,這種權衡是一個偏好問題。如果哈希函數是便宜的(例如kecack),那么成本差異可以忽略不計,但如果哈希函數是昂貴的(例如Poseidon)那么
的使用者的gas花費加起來也比較昂貴。
vbuterin
因此KateCommitment值得探索。使用KateCommitment,只需一個組元素就可以輕松證明來自單個狀態的任意數量的位置。這可以與隊列方法結合使用,以確保有大量存款可以批量處理。Kate方法的另一個好處是很容易將其插入基于橢圓曲線的SNARK/PLONK證明中。
weijiekoh
請問你對使用KateCommitment有什么想法?是把所有的存款根積累到KateCommitment而不是余額樹的嗎?
vbuterin
將KateCommitment使用于存款和余額。
weijiekoh
盡管用我們擁有的最好的開發工具(帶circom的BN254)來驗證在snark中的KateCommitment仍然是不可行的。但我的意見是,我們必須等到更先進的snarks變得可行。
vbuterin
我沒想過讓snark從字面上驗證橢圓曲線配對計算。我正在考慮使用類似PLONK的多項式證明,其中KateCommitment和opening作為兩個參數傳入,您只需直接對它們進行多項式檢查。所以沒有“一個系統驗證另一個系統”的開銷。
weijiekoh
請問這是你心目中的snark嗎?
在這種情況下,像commit()函數需要一個SRS并且還需要對EC取冪來計算Kate承諾。我可能是錯的,但由于在現有的alt_bn128的SRSes上執行EC操作的成本很高,我們是否需要在BabyJub曲線上進行新的'PowersofTauCeremony',以便我們可以擁有對snark友好的KateCommitment?
MichaelConnor
可以批量處理成KateCommitment的項目數量是否有實際上限?限制是SRS的大小?如果是這樣,Merkle樹不是提供更大的匿名集嗎?
vbuterin
我的意思是直接對KateCommitment進行多重證明。所以你會有一個承諾P,你只需做一個標準的muti-opening來證明對于一組(x,y)有P(xi)=yi成立。
可以更進一步:為了避免每對都進行一次EC乘法,(x,y)對本身可以用多項式承諾進行編碼,muti-opening將變成一個等價證明:,然后這些多項式承諾將同時成為PLONK證明的一部分。
weijiekoh
也許我應該從不同的角度去看問題。我主要關心用戶的gas成本,其次才是協調器。這畢竟是批量存款技術要解決的問題。
在MACI中,我們需要證明ZK中余額樹中每個葉子的事情。即在余額樹中,每個葉子可能會或可能不會根據其解密內容修改狀態樹。由于我們要確保協調器以正確的順序處理每條消息,我們的Groth16snark必須證明每個葉子的成員資格和消息樹中的位置。
這已經花費了幾十萬gas。如果我們執行Kate多重證明,將至少添加另外193kgas。
如果/當我們轉向PLONK,我們是否可以避免這種額外成本?
在短期內,如果沒有PLONK,在BabyJub中使用Kate承諾可能會有好處,因此我們可以在Groth16snark中驗證Kate承諾或Kateverkle樹。
每個存入隊列的用戶只需支付存儲32個字節的費用。
一旦存款隊列已滿,協調員就會累積成一個凱特承諾,這應該很便宜。例如,Kate提交16個值需要223454個gas,這比波塞冬二叉Merkle樹有很大的改進,后者需要797835個gas來提交16個值。這樣,用戶和協調者都可以節省gas。
為了構建最終的余額樹,協調器還將使用Kate承諾,從而生成Verkle樹。由于我們可以以更低的gas成本承諾更多的價值,我們可以擁有更大的樹容量。
當我們處理余額樹時,我們會檢查snark中每條消息的成員資格和位置,然后照常進行。
也許我們可以使用Verkle樹(Merkle樹使用Kate承諾作為哈希函數而不是Poseidon/MiMC)。
Pratyush
KZG10Commitments需要配對;BabyJubJub不是一個友好的配對曲線
weijiekoh
使用這種技術可以節省更多的gas。子樹的哈希函數可以是SHA256,這在EVM中比較便宜。樹的其余部分(從子樹深入到根)可以用Poseidon進行哈希。
這樣做的代價是,任何snark都會增加每個子樹級別大約90k約束。從這個角度來看,TornadoCash的抽屜式電路有28271個約束條件。因此,這種方法只對MACI這樣的用例有意義,在這種情況下,驗證者可能不介意(粗略地)將他們的驗證時間增加一倍甚至三倍。
本周二,我們在Kriptobi社區的官方電報群舉辦了一場精彩的AMA,開啟了我們在Dank未來生態上的旅程。我們很快將上線Dank的借貸協議和基于Dank協議的原生固定利率協議.
1900/1/1 0:00:00“波卡知識圖譜”是我們針對波卡從零到一的入門級文章,我們嘗試從波卡最基礎的部分講起,為大家提供全方位了解波卡的內容,當然這是一項巨大的工程,也充滿了挑戰.
1900/1/1 0:00:00“為工具而來,為網絡而戰”是引導社交網絡的經典策略。它旨在解決一個棘手的問題:當沒有人與你交往時,你如何說服人們加入你的社交網絡?一種方法是構建一個單機工具,讓人們使用該產品.
1900/1/1 0:00:00WorldMobile是第一個建立在區塊鏈上并由用戶共同運營管理的網絡通訊服務,它與世界上第一批自動航空器的開發商阿爾泰羅能源(AltaerosEnergies)合作.
1900/1/1 0:00:00本文探討了去中心化自治組織(DAO)的興起。DAO是一個沒有中央領導的實體。決策是自下而上的,由圍繞區塊鏈上執行的一組特定規則組織的社區進行管理.
1900/1/1 0:00:0011月12日星期五下午16:00,由DefiCliq發起,焦點區塊鏈主辦,行業深度對話訪談AMA在焦點社區拉開帷幕。本期特別邀請DefiCliq創始人ShantanuSharma出席嘉賓.
1900/1/1 0:00:00