91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么構建Miximus混幣引用

發布時間:2021-12-29 12:01:15 來源:億速云 閱讀:178 作者:iii 欄目:互聯網科技

本篇內容主要講解“怎么構建Miximus混幣引用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么構建Miximus混幣引用”吧!

1、Miximus混幣應用概述

利用Miximus混幣應用,你可以存入1個ETH,然后利用zkSNARK證據證明你持有這個幣的消費密鑰,通過驗證之后就可以提幣了,整個過程保證了匿名性。

Miximus的主要源代碼包括:

  • Miximus.sol

  • miximus.py

  • test_miximus.py

  • miximus.cpp

zkSNARK證明方作為原生庫構建,因此可以打包進你的應用,當提供正確的參數后,庫會返回JSON格式的zkSNARK證據。你可能會認為zkSNARKs很慢 —— Miximus選擇的算法生成證據的平均時間是5秒,不過我們還在研究其安全特征。

2、構建Miximus混幣引用

如果在Linux上構建Miximus混幣應用,需要先安裝以下依賴軟件:

  • cmake 3

  • g++ or clang++

  • gmp

  • libcrypto

  • boost

  • npm / nvm

在OSX上需要Brew和nvm:

make git-submodules # Pull sub-repositories
make -C ethsnarks mac-dependencies
make -C ethsnarks python-dependencies
nvm install --lts
make

在Ubuntu上使用如下命令構建:

make git-submodules # Pull sub-repositories
sudo make -C ethsnarks ubuntu-dependencies
make -C ethsnarks python-dependencies
nvm install --lts
make

在CentOS上構建命令如下:

yum install cmake3 boost-devel gmp-devel
nvm install --lts
make git-submodules # Pull sub-repositories
make -C ethsnarks python-dependencies
make CMAKE=cmake3

3、Miximus混幣應用的工作原理

假設Alice要給Bob轉一個幣:

1、Bob給Alice一個只有他自己才知道的密文的哈希 2、Alice使用Miximus智能合約的Deposit()方法向合約存入1個ETH,同時傳入Bob給的哈希 3、Alice存入的幣插入合約維護的merkle樹,在這棵樹上所有的幣都是1個ETH 4、Bob使用密文生成zkSNARK證據,這可以證明他擁有Miximus合約中對應的幣。 在證據中包含了不可鏈接的消費標簽,以避免同一個幣被兩次消費(雙花)。 5、Bob使用Miximus合約的Withdraw()方法提交證據和消費標簽,如果對應 的幣還沒有被消費,那么Miximus向Bob支付1個ETH

4、Miximus混幣應用的實現細節

如果Alice希望給Bob轉賬,那么她需要Bob提供一個密文哈希。Bob首先生成一個隨機密文(隨機場成員,按zkSNARK素數取模):

coin_secret = FQ.random()

隨后Bob將密文的哈希發送給Alice:

bobs_leaf = H(coin_secret)  # Generated using `MakeLeafHash()` method of the smart-contract

Alice調用Miximus合約的Deposit()方法存入以太幣的同時傳入bobs_leaf參數,該參數也是存入的幣在Miximus合約中的merkle樹上的葉節點。Bob可以通過監聽Miximus合約的OnDeposit事件來監聽Alice是否已經完成轉賬。由于只有Bob知道密文,因此只有Bob能夠生成正確的zkSNARK證據。

Bob使用leaf_index參數(從OnDeposit事件得到)調用Miximus合約的GetPath()方法提取Alice存入的幣對應的merkle樹路徑,同時使用合約的GetRoot()方法得到合約的merkle樹的根節點。

Bob調用Miximus合約的GethExtHash()方法提取其外部哈希external_hash,即合約地址和Bob以太坊地址的哈希。這意味著只有Bob的賬戶可以向指定合約提交其生成的證據,目的是避免重放攻擊及其他惡意行為。

5、zkSNARK電路偽代碼

只有external_hashnullifiermerkle_root參數是公開的并且可以在鏈上查到,其余數據都是zkSNARK證據的私有輸入:

def circuit(secret, path_var, address_bits, nullifier, root, external_hash, pub_hash):
   assert H(root, nullifier, external_hash) == pub_hash
   leaf_hash = H(secret) # Prove we know the secret for the leaf
   assert root == merkle_authenticate(path_var, address_bits, leaf_hash) # Prove that leaf exists within the tree
   assert H(address_bits, secret) == nullifier

上述電路可以驗證:

  • 葉節點在merkle樹上

  • 證明人知曉葉節點對應的密文(哈希的preimage)

  • 消費標簽是從葉節點得出的

由于這時zkSnark證據,因此上述證明過程不會透露到底是merkle樹的哪個葉節點,但是如果Bob試圖為同一個葉節點生成兩個證據,那么由于消費標簽是相同的,因此Bob的雙花嘗試不會成功。

Miximus合約沒有使用密鑰(或secp256k1),其實現僅僅利用了密文和哈希。zkSNARK證據可以證明你的確知道密文而無需透露其具體內容。Miximus合約使用的哈希函數是MiMC,它作用于素數域而非字節數據。

到此,相信大家對“怎么構建Miximus混幣引用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云林县| 历史| 黔江区| 夏邑县| 丹寨县| 理塘县| 皮山县| 墨江| 奉节县| 安龙县| 宜丰县| 阳山县| 新津县| 黑龙江省| 浦江县| 新余市| 开江县| 察隅县| 城市| 武乡县| 鄂伦春自治旗| 磐安县| 集安市| 响水县| 平乡县| 额敏县| 昆明市| 合水县| 金溪县| 广平县| 称多县| 田东县| 华安县| 广德县| 涿鹿县| 察雅县| 漠河县| 八宿县| 托里县| 五原县| 宁南县|