berzanorg / nacho Goto Github PK
View Code? Open in Web Editor NEWNacho is a zk rollup where you can bridge and swap tokens.
Home Page: https://nacho.berzan.org/
License: MIT License
Nacho is a zk rollup where you can bridge and swap tokens.
Home Page: https://nacho.berzan.org/
License: MIT License
Implement Witness Database inside witness-database
crate using the reference below.
It is going to be used by the client.
The witness database stores the hashes of each data stored in the state database inside an on disk Merkle tree.
It also makes it possible to represent the entire state as a fixed size Merkle root.
It is optimized for high performance and low disk usage.
Implement a bridge between Mina and Nacho.
Update the smart contract and add the required logic to the client.
To deposit tokens from Mina to Nacho, a user has to send tokens to the smart contract of Nacho and send the proof of that transaction to the client of Nacho. The client keeps track of Mina's state and checks the correctness of the transaction and mints the equivalent amount of tokens on Nacho for the user.
To withdraw tokens from Nacho to Mina, a user has to burn tokens on Nacho and send the proof of that burn to the smart contract. The smart contract allows the user to receive the equivalent amount of tokens on Mina.
Implement a provable data structure called Burn
for the bridge.
The Burn
data structure should store the witness database index of itself, the token identifier of the token burned and the token amount that is burned.
Implement Uint64
wrapper type around Field
type with range check support inside common
crate.
Uint64
is going to be used for other data structures' definitions.
Implement an easy to use interface for field elements and Poseidon hash inside common
crate.
Field elements and Poseidon hash are going to be used across all the crates of this project.
Implement a disk based queue with garbage collection that allows push and pop operations.
It is going be used in mempool and proofpool.
Implement a prover and a smart contract.
The prover is going to be a ZkProgram
that doesn't have a logic yet, but noOperation
and mergeProofs
methods.
The smart contract is going to be a SmartContract
that stores the Merkle root of the entire rollup's state, and has a method called updateState
that updates the on-chain Merkle root by verifying proofs.
Implement provable data structures that are needed to build an AMM.
Those data structures should be implemented for both TypeScript and Rust.
Because the prover currently uses o1js which is a TypeScript library, but the client is completely written in Rust.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.