你的位置:皇冠信用盘 > 新2足球网址 > 欧博官网博彩足球_保姆级教程:如安在 JavaScript 容貌中使用 zk

新2足球网址
欧博官网博彩足球_保姆级教程:如安在 JavaScript 容貌中使用 zk
发布日期:2023-11-03 11:44    点击次数:137

欧博官网博彩足球_保姆级教程:如安在 JavaScript 容貌中使用 zk

欧博官网博彩足球_

原文标题:《Zero-Knowledge Proofs Using SnarkJS and Circom》排列三三公

皇冠hg86a

撰文:Laszlo Fazekas

编译:ChinaDeFi

棒球

图片开始:由Maze AI器用生成

零常识讲授期间,尤其是 zk-SNARK 期间是加密界限最令东谈主开心的期间之一,因为:

咱们不错在不暴露具体信息的同期讲授该信息。讲授很小,很容易在区块链上进行考据,是以不错 Rollup。

Rollup 是一种区块链膨大科罚有贪图,其计较是在链下完成的,在给定数目的往返后,气象将同步回区块链,这种科罚有贪图不错为咱们提供区块链的安全性和更低的 gas 费,是以咱们说 zk-Rollup 是区块链的理念念膨大科罚有贪图。

在本文中,作家会向咱们展示如安在 JavaScript 容貌中使用 zk-SNARK。

家喻户晓,咱们需要一个电路来生成零常识讲授。电路是系统用来计较输出和讲授的数学抒发式。零常识讲授本人便是咱们仍是得手完成计较的讲授。

电路可能会很是复杂,但好在有电路编程谈话和库不错让咱们相比清静的编写我方的电路。在本文中咱们会使用 Circom。Circom 是用 Rust 编写的。不错使用以下敕令来装配 Rust 环境。

curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh'=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

装配完 Rust 后,克隆 Circom 存储库并构建编译器:

git clone https://github.com/iden3/circom.gitclone https://github.com/iden3/circom.gitcd circomcargo build --releasecargo install --path circom

如若这经由中莫得差池,那么咱们仍是装配好了 Circom 编译器。

当今还需要科罚 Circomlib,Circomlib 是一个包含许多有效的预界说电路的编程库。因此,创建一个空容貌,并使用以下代码装配 Circomlib:

npm initinitnpm i circomlib

当今,咱们仍是为创建电路作念好了准备,底下是它应该看起来的模式:

pragma circom 2.0.0;2.0.0;include "node_modules/circomlib/circuits/poseidon.circom";template PoseidonHasher() {signal input in;signal output out;component poseidon = Poseidon(1);poseidon.inputs[0] <== in;out <== poseidon.out;}component main = PoseidonHasher();

这个浅薄的电路,有一个专用输入和一个输出信号。咱们正在使用 Circomlib 中的 poseidon 哈希计较器来生成输入 hash。使用此电路,不错讲授咱们仍是知谈给定的原始数据 hash,但不需要袒露它。

在第一步中,不错通过 Circom 编译器来编译电路,该编译器将生成一个 wasm 和 rlcs 文献。

皇冠刀模皇冠官方入口
circom poseidon_hasher.circom --wasm --r1cs -o ./build

生成的 wasm 和 rlcs 文献在构建文献夹中可用。要生成讲授,咱们需要一个讲授密钥文献,而要生成这个文献,咱们就需要一个 ptau 文献。该 ptau 文献不错由 snarkjs 生成。简略也不错下载一个预生成的文献(不错在 snarkjs 存储库中找到蚁合)。对于测试,生成的文献对咱们有些平允,但在咱们坐蓐运用智商中,提降生成我方的 ptau。

wget https://hermez.s3-eu-west-1.amazonaws.com/powersOfTau28_hez_final_12.ptau

当今不错使用电路和 ptau 文献生成讲授密钥(zkey 文献):

皇冠信用盘如何开户皇冠客服飞机:@seo3687
npx snarkjs groth16 setup build/poseidon_hasher.r1cs powersOfTau28_hez_final_12.ptau circuit_0000.zkey

不提出将此 zkey 文献用于坐蓐,但对于测试,它对咱们有匡助。

“预计剩余可使用时间——5分钟。手机停止使用后可自行补充电量,每5分钟可回复10%的电量。”

内容简介:从跨海大桥上跳下去的时候,白雪惨笑着说:“我死,但不代表我接受你们的那些诬蔑,而仅仅是……为了结束我对你的爱……高靖爵,皇冠信用盘下辈子,我再也不要遇见你了!”当真相浮现,当一切清晰,他突然间痛苦发现……真的再也找不回她了……

当今,咱们仍是准备好生成讲授了。这其中会用到 snarkjs,是以用底下的敕令进行装配:

近日,某地区的一名赌博大亨因为多次欠债而被暴力讨债。据了解,这名赌博大亨在赌博中输得很惨,导致经济陷入困境,最终招致了债主们的追讨和报复。这也让人们深感赌博的危险和后果。
npm i snarkjs

讲授生成如下所示:

const { proof, publicSignals } = await snarkjs.groth16.fullProve(
{ in: 10 },
"build/poseidon_hasher_js/poseidon_hasher.wasm",
"circuit_0000.zkey");
console.log(publicSignals);
console.log(proof);

输入信号在函数的第一个参数中传递 fullProve。第二个参数是编译电路,临了一个参数是生成的讲授密钥。该函数响应电路的输出和讲授。

当今咱们需要一个不错从讲授密钥生成的考据密钥来考据讲授。取得次序如下:

npx snarkjs zkey export verificationkey circuit_0000.zkey verification_key.jsonexport verificationkey circuit_0000.zkey verification_key.json 考据码如下:const vKey = JSON.parse(fs.readFileSync("verification_key.json"));const res = await snarkjs.groth16.verify(vKey, publicSignals, proof);if (res === true) {console.log("Verification OK");} else {console.log("Invalid proof");}

考据密钥是 verify 函数的第一个参数,输出和讲授是第二和第三个参数。该函数的成果是一个浅薄的布尔值。

在此例子中,咱们使用电路来计较 hash,但这并不老是可行的,因为 hash 不错使部分红果,简略咱们的电路看起来像如下所示:

皇冠官网皇冠电脑版网址
pragma circom 2.0.0;2.0.0;
include "node_modules/circomlib/circuits/poseidon.circom";
template PoseidonHasher() {
signal input in;
signal input hash;
component poseidon = Poseidon(1);
poseidon.inputs[0] <== in;
hash === poseidon.out;
}
component main {public [hash]} = PoseidonHasher();

这个电路莫得输出,惟有两个输入。第一个输入是数据,第二个输入是数据的哈希。在模板的临了一转,咱们查验 hash。惟有给定的 hash 是给定数据的 poseidon hash,电路才会得手开动。然而要如安在 JS 入网算 poseidon hash 呢?

Circomlib 有一个不错用于此的 JS 已毕。需要咱们装配它:

博彩足球欧博官网
npm i circomlibjs

当今咱们不错用底下的代码来进行计较:

const poseidon = await circomlibjs.buildPoseidon();const poseidon = await circomlibjs.buildPoseidon();
const hash = poseidon.F.toString(poseidon([10]));
console.log(hash);

该 poseidon 函数成果是 Buffer,咱们需要将其养息为数字。在 zk-SNARK 中,每次计较齐是在有限域中完成的,是以咱们必须使用 poseidon.F.toString 进行养息。

Circomlibjs 和 snarkjs 在 Node.js 和浏览器中开动讲究,是以咱们不错在客户端生成或考据讲授,还不错生成用于考据的智能合约。这么咱们就不错在 Solidity 代码中使用它来考据讲授。

Circomlibjs 也有智能合约生成器。

这是在 JavaScript 中使用 zk-SNARK 的轻便教程,它不是一个完好教程,众人可能还存有许多问题排列三三公,咱们不错借助 Circom 和 snarkjs,他们齐有很好的文档纪录,咱们也不错从 Tornado Cash 等现存容貌中学到许多东西。



Powered by 皇冠信用盘 @2013-2022 RSS地图

皇冠体育皇冠体育导航皇冠客服