update snarkjs usage
This commit is contained in:
parent
b871d1e49f
commit
76543d068b
@ -24,11 +24,11 @@ contract Pack {
|
|||||||
uint256 gasBefore = gasleft();
|
uint256 gasBefore = gasleft();
|
||||||
bytes memory data = new bytes(BYTES_SIZE);
|
bytes memory data = new bytes(BYTES_SIZE);
|
||||||
for (uint256 i = 0; i < CHUNK_SIZE; i++) {
|
for (uint256 i = 0; i < CHUNK_SIZE; i++) {
|
||||||
(bytes32 hash, address instance, uint32 block) = (hashes[i], instances[i], blocks[i]);
|
(bytes32 _hash, address _instance, uint32 _block) = (hashes[i], instances[i], blocks[i]);
|
||||||
assembly {
|
assembly {
|
||||||
mstore(add(add(data, mul(ITEM_SIZE, i)), 0x38), block)
|
mstore(add(add(data, mul(ITEM_SIZE, i)), 0x38), _block)
|
||||||
mstore(add(add(data, mul(ITEM_SIZE, i)), 0x34), instance)
|
mstore(add(add(data, mul(ITEM_SIZE, i)), 0x34), _instance)
|
||||||
mstore(add(add(data, mul(ITEM_SIZE, i)), 0x20), hash)
|
mstore(add(add(data, mul(ITEM_SIZE, i)), 0x20), _hash)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
uint256 gasHash = gasleft();
|
uint256 gasHash = gasleft();
|
||||||
@ -52,23 +52,23 @@ contract Pack {
|
|||||||
public
|
public
|
||||||
view
|
view
|
||||||
returns (
|
returns (
|
||||||
uint256 gas1,
|
uint256,
|
||||||
uint256 gas2,
|
uint256,
|
||||||
bytes32 hash
|
bytes32
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
uint256 gasBefore = gasleft();
|
uint256 gasBefore = gasleft();
|
||||||
bytes memory data = new bytes(BYTES_SIZE);
|
bytes memory data = new bytes(BYTES_SIZE);
|
||||||
for (uint256 i = 0; i < CHUNK_SIZE; i++) {
|
for (uint256 i = 0; i < CHUNK_SIZE; i++) {
|
||||||
(bytes32 hash, address instance, uint32 block) = (hashes[i], instances[i], blocks[i]);
|
(bytes32 _hash, address _instance, uint32 _block) = (hashes[i], instances[i], blocks[i]);
|
||||||
assembly {
|
assembly {
|
||||||
mstore(add(add(data, mul(ITEM_SIZE, i)), 0x38), block)
|
mstore(add(add(data, mul(ITEM_SIZE, i)), 0x38), _block)
|
||||||
mstore(add(add(data, mul(ITEM_SIZE, i)), 0x34), instance)
|
mstore(add(add(data, mul(ITEM_SIZE, i)), 0x34), _instance)
|
||||||
mstore(add(add(data, mul(ITEM_SIZE, i)), 0x20), hash)
|
mstore(add(add(data, mul(ITEM_SIZE, i)), 0x20), _hash)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
uint256 gasHash = gasleft();
|
uint256 gasHash = gasleft();
|
||||||
bytes32 hash = sha256(data);
|
bytes32 hash1 = sha256(data);
|
||||||
return (gasleft() - gasHash, gasHash - gasBefore, hash);
|
return (gasleft() - gasHash, gasHash - gasBefore, hash1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "tornado-trees",
|
"name": "tornado-trees",
|
||||||
"version": "0.0.7",
|
"version": "0.0.8",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
"repository": "https://github.com/tornadocash/tornado-trees.git",
|
"repository": "https://github.com/tornadocash/tornado-trees.git",
|
||||||
"author": "Tornadocash team <hello@tornado.cash>",
|
"author": "Tornadocash team <hello@tornado.cash>",
|
||||||
@ -46,6 +46,7 @@
|
|||||||
"circomlib": "git+https://github.com/tornadocash/circomlib.git#d20d53411d1bef61f38c99a8b36d5d0cc4836aa1",
|
"circomlib": "git+https://github.com/tornadocash/circomlib.git#d20d53411d1bef61f38c99a8b36d5d0cc4836aa1",
|
||||||
"dotenv": "^8.2.0",
|
"dotenv": "^8.2.0",
|
||||||
"ffiasm": "^0.1.1",
|
"ffiasm": "^0.1.1",
|
||||||
|
"ffjavascript": "^0.2.35",
|
||||||
"fixed-merkle-tree": "^0.5.0",
|
"fixed-merkle-tree": "^0.5.0",
|
||||||
"jssha": "^3.2.0",
|
"jssha": "^3.2.0",
|
||||||
"snarkjs": "^0.3.57",
|
"snarkjs": "^0.3.57",
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
const ethers = require('ethers')
|
const ethers = require('ethers')
|
||||||
const BigNumber = ethers.BigNumber
|
const BigNumber = ethers.BigNumber
|
||||||
|
const { wtns } = require('snarkjs')
|
||||||
|
const { utils } = require('ffjavascript')
|
||||||
|
|
||||||
const { bitsToNumber, toBuffer, toFixedHex, poseidonHash } = require('./utils')
|
const { bitsToNumber, toBuffer, toFixedHex, poseidonHash } = require('./utils')
|
||||||
|
|
||||||
@ -32,16 +34,17 @@ function hashInputs(input) {
|
|||||||
function prove(input, keyBasePath) {
|
function prove(input, keyBasePath) {
|
||||||
return tmp.dir().then(async (dir) => {
|
return tmp.dir().then(async (dir) => {
|
||||||
dir = dir.path
|
dir = dir.path
|
||||||
fs.writeFileSync(`${dir}/input.json`, JSON.stringify(input, null, 2))
|
|
||||||
let out
|
let out
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (fs.existsSync(`${keyBasePath}`)) {
|
if (fs.existsSync(`${keyBasePath}`)) {
|
||||||
// native witness calc
|
// native witness calc
|
||||||
|
fs.writeFileSync(`${dir}/input.json`, JSON.stringify(input, null, 2))
|
||||||
out = await exec(`${keyBasePath} ${dir}/input.json ${dir}/witness.json`)
|
out = await exec(`${keyBasePath} ${dir}/input.json ${dir}/witness.json`)
|
||||||
} else {
|
} else {
|
||||||
out = await exec(`npx snarkjs wd ${keyBasePath}.wasm ${dir}/input.json ${dir}/witness.wtns`)
|
await wtns.calculate(utils.unstringifyBigInts(input), `${keyBasePath}.wasm`, `${dir}/witness.wtns`)
|
||||||
out = await exec(`npx snarkjs wej ${dir}/witness.wtns ${dir}/witness.json`)
|
const witness = utils.stringifyBigInts(await wtns.exportJson(`${dir}/witness.wtns`))
|
||||||
|
fs.writeFileSync(`${dir}/witness.json`, JSON.stringify(witness, null, 2))
|
||||||
}
|
}
|
||||||
out = await exec(
|
out = await exec(
|
||||||
`zkutil prove -c ${keyBasePath}.r1cs -p ${keyBasePath}.params -w ${dir}/witness.json -r ${dir}/proof.json -o ${dir}/public.json`,
|
`zkutil prove -c ${keyBasePath}.r1cs -p ${keyBasePath}.params -w ${dir}/witness.json -r ${dir}/proof.json -o ${dir}/public.json`,
|
||||||
|
14
yarn.lock
14
yarn.lock
@ -3890,6 +3890,15 @@ ffjavascript@0.2.34, ffjavascript@^0.2.30:
|
|||||||
wasmcurves "0.0.14"
|
wasmcurves "0.0.14"
|
||||||
worker-threads "^1.0.0"
|
worker-threads "^1.0.0"
|
||||||
|
|
||||||
|
ffjavascript@^0.2.35:
|
||||||
|
version "0.2.35"
|
||||||
|
resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.35.tgz#9166d95173b1c0a743b455bb03a72b581922a42e"
|
||||||
|
integrity sha512-xnC51tWbi0ah4SH+02jEfJyO+P+NiZWnxQrLDLtBYY1Dv3QM5ydxzd+gxnLEfWdT8i1bMM5pIh5P25l6fNCaVQ==
|
||||||
|
dependencies:
|
||||||
|
big-integer "^1.6.48"
|
||||||
|
wasmcurves "0.0.14"
|
||||||
|
web-worker "^1.0.0"
|
||||||
|
|
||||||
ffwasm@0.0.7:
|
ffwasm@0.0.7:
|
||||||
version "0.0.7"
|
version "0.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/ffwasm/-/ffwasm-0.0.7.tgz#23bb9a3537ecc87c0f24fcfb3a9ddd0e86855fff"
|
resolved "https://registry.yarnpkg.com/ffwasm/-/ffwasm-0.0.7.tgz#23bb9a3537ecc87c0f24fcfb3a9ddd0e86855fff"
|
||||||
@ -8352,6 +8361,11 @@ wasmcurves@0.0.5:
|
|||||||
big-integer "^1.6.42"
|
big-integer "^1.6.42"
|
||||||
blakejs "^1.1.0"
|
blakejs "^1.1.0"
|
||||||
|
|
||||||
|
web-worker@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.0.0.tgz#c7ced4e1eb6227636ada35056a9e5a477414e4d0"
|
||||||
|
integrity sha512-BzuMqeKVkKKwHV6tJuwePFcxYMxvC97D448mXTgh/CxXAB4sRtoV26gRPN+JDxsXRR7QZyioMV9O6NzQaASf7Q==
|
||||||
|
|
||||||
web3-bzz@1.2.11:
|
web3-bzz@1.2.11:
|
||||||
version "1.2.11"
|
version "1.2.11"
|
||||||
resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f"
|
resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f"
|
||||||
|
Loading…
Reference in New Issue
Block a user