nacho-proof-generator
The zero knowledge proof generator of Nacho using o1js.
nacho-proof-generator package is intended to be used for Nacho only as it is a naive implementation.
📦 Installation
If you are using npm:
``shell
npm install nacho-proof-generator
`
If you are using yarn:
`shell
yarn add nacho-proof-generator
`
If you are using pnpm:
`shell
pnpm add nacho-proof-generator
`
🔍 Details
Nacho's zero knowledge proof generator is created using o1js's ZkProgram.
This package also provides a function to create a state utility for tests.
$3
- #### ZkProof
The provable type for zk proofs generated by Nacho's proof generator.
$3
- #### proofGenerator
- createGenesis(stateRoots):
Generates the initial proof.
- mergeProofs(stateRoots, currentProof, laterProof):
Generates a proof by merging given proofs.
- depositTokens(stateRoots, earlierProof, singleBalanceWitness,currentDepositsMerkleListHash, expectedDepositsMerkleListHash,userAddress, tokenId, userDepositTokenAmount, userBalanceTokenAmount:
Generates a proof by depositing a specific token for a user.
- makeBurnTokens(stateRoots,earlierProof, singleBalanceWitness,singleBurnWitness, userAddress, tokenId, userBurnTokenAmount,userBalanceTokenAmount, amountToBurn, userSignature):
Generates a proof by burning token on a user's behalf.
- makeCreatePool(stateRoots, earlierProof, singlePoolWitness, singleLiquidityWitness, doubleBalanceWitness, baseTokenId, quoteTokenId, userAddress, userLiquidityBaseTokenAmount, userLiquidityQuoteTokenAmount, userBalanceBaseTokenAmount, userBalanceQuoteTokenAmount, userSignature):
Generates a proof by creating an AMM pool on a user's behalf.
- makeProvideLiquidity(stateRoots, earlierProof, singlePoolWitness, singleLiquidityWitness, doubleBalanceWitness, baseTokenId, quoteTokenId, userAddress, userLiquidityPoints, userBalanceBaseTokenAmount, userBalanceQuoteTokenAmount, poolBaseTokenAmount, poolQuoteTokenAmount, poolTotalLiquidityPoints, userBaseTokenAmountToProvide, userQuoteTokenAmountLimitToProvide, userSignature):
Generates a proof by providing liquidity to an AMM pool on a user's behalf.
- makeRemoveLiquidity(stateRoots, earlierProof, singlePoolWitness, singleLiquidityWitness, doubleBalanceWitness, baseTokenId, quoteTokenId, userAddress, userLiquidityPoints, userBalanceBaseTokenAmount, userBalanceQuoteTokenAmount, poolBaseTokenAmount, poolQuoteTokenAmount, poolTotalLiquidityPoints, userLiquidityPointsToRemove, userBaseTokenAmountLimitToRemove, userQuoteTokenAmountLimitToRemove, userSignature):
Generates a proof by removing liquidity from an AMM pool on a user's behalf.
- makeBuyTokens(stateRoots,earlierProof,singlePoolWitness,doubleBalanceWitness,userAddress,baseTokenId,quoteTokenId,userBalanceBaseTokenAmount,userBalanceQuoteTokenAmount,poolBaseTokenAmount,poolQuoteTokenAmount,poolTotalLiquidityPoints,userBaseTokenAmountToSwap,userQuoteTokenAmountLimitToSwap,userSignature):
Generates a proof by buying a token on a user's behalf.
- makeSellTokens(stateRoots, earlierProof, singlePoolWitness, doubleBalanceWitness, userAddress, baseTokenId, quoteTokenId, userBalanceBaseTokenAmount, userBalanceQuoteTokenAmount, poolBaseTokenAmount, poolQuoteTokenAmount, poolTotalLiquidityPoints, userBaseTokenAmountLimitToSwap, userQuoteTokenAmountToSwap, userSignature):
Generates a proof by selling a token on a user's behalf.
$3
- #### createStateUtil`
Returns a state utility object for tests.
📝 License
This project is licensed under the MIT License.
You may use the source code of this project accordingly.
👤 About Me
I am Berzan and I am developing Nacho to express my skills in the real world.
I built this library to use inside Nacho.