Skip to content

zkmove/zkmove

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Website

zkMove

A Zero-Knowledge Move Language Virtual Machine. Safe, Efficient, and Privacy-protected.

As a new generation of programming language for smart contract, Move ensures programming safety using its type checking, borrow checking and ownership mechanism. zkMove VM is fully compatible with Move and is the first zkVM with runtime type-safety!

zkMove circuit is built based on the Halo2 proof system. It supports Txn-level concurrent proving for low latency. It also supports client-side proving to naturally preserve user privacy.

Documents

WIP.

Source code

zkMove Lite: In the early designs, we had two types of circuits. VM circuit was used to handle conditional branches and loops, while Move circuits were compiled directly from Move bytecode, providing smaller circuit size. In the latest design, the advantages of the Move circuit have been absorbed by the VM circuit. However, as a starter material for learning zkMove, we have kept its [code base].

zkMove VM: The development is still in rapid iteration, and we will make the source code available as it becomes more stable.

Snark verifier: A generic halo2 snark verifier written in Move. It enables any zk proof generated by halo2 to be verified on Move blockchains. [code base]

Example

We have a binary release for each development iteration to show the progress we have made. There is a demo with some examples in the package to demonstrate the latest functionality of zkMove virtual machine.

For example, the following command will first compile add.move into bytecode, execute the bytecode to generate an execution trace, then build the circuit and setup the proving/verifying key, and then generate a zkp for the execution with the proving key and finally verify the proof with the verifying key.

zkmove run -s examples/scripts/add.move

zkMove Agger

Agger is a trustless computing service designed to extend the feature set of the blockchain. It enables Dapps to:

  • Access on-chain historical data in a trust-free manner, and allows arbitrary computations to be performed on the data.
  • Access any external data with minimal trust.
  • ...

Agger also enables developers to create customized ZK applications using the Move language, integrate them with other ZK modules, and easily deploy them to chains.

Source code

[code base]

License

zkMove is licensed as Apache 2.0.