A library for secure smart contract development written in Compact for Midnight.
This repo contains highly experimental code. Expect rapid iteration. Use at your own risk.
Make sure you have nvm, yarn, and turbo installed on your machine.
Follow Midnight's Compact Developer Tools installation guide and confirm that compact
is in the PATH
env variable.
$ compact compile --version
Compactc version: 0.24.0
0.24.0
Clone the repository:
git clone git@github.com:OpenZeppelin/compact-contracts.git
cd
into it and then install dependencies and prepare the environment:
nvm install && \
yarn && \
turbo compact
$ turbo compact
(...)
✔ [COMPILE] [1/2] Compiled FungibleToken.compact
@openzeppelin-compact/fungible-token:compact: Compactc version: 0.24.0
@openzeppelin-compact/fungible-token:compact:
✔ [COMPILE] [1/6] Compiled Initializable.compact
@openzeppelin-compact/utils:compact: Compactc version: 0.24.0
@openzeppelin-compact/utils:compact:
✔ [COMPILE] [2/6] Compiled Pausable.compact
@openzeppelin-compact/utils:compact: Compactc version: 0.24.0
@openzeppelin-compact/utils:compact:
✔ [COMPILE] [3/6] Compiled Utils.compact
@openzeppelin-compact/utils:compact: Compactc version: 0.24.0
@openzeppelin-compact/utils:compact:
✔ [COMPILE] [4/6] Compiled test/mocks/MockInitializable.compact
@openzeppelin-compact/utils:compact: Compactc version: 0.24.0
@openzeppelin-compact/utils:compact: Compiling 3 circuits:
✔ [COMPILE] [5/6] Compiled test/mocks/MockPausable.compact
@openzeppelin-compact/utils:compact: Compactc version: 0.24.0
@openzeppelin-compact/utils:compact: Compiling 5 circuits:
✔ [COMPILE] [6/6] Compiled test/mocks/MockUtils.compact
@openzeppelin-compact/utils:compact: Compactc version: 0.24.0
@openzeppelin-compact/utils:compact:
✔ [COMPILE] [2/2] Compiled test/mocks/MockFungibleToken.compact
@openzeppelin-compact/fungible-token:compact: Compactc version: 0.24.0
@openzeppelin-compact/fungible-token:compact: Compiling 15 circuits:
Tasks: 2 successful, 2 total
Cached: 0 cached, 2 total
Time: 7.178s
Speed up the development process by targeting a single directory and skipping the prover and verifier key file generation:
# Individual module compilation (recommended for development)
turbo compact:token --filter=@openzeppelin-compact/contracts -- --skip-zk
# Full compilation with skip-zk (use environment variable)
SKIP_ZK=true turbo compact
turbo test
turbo fmt-and-lint:fix
turbo compact test fmt-and-lint:fix
This project is still in a very early and experimental phase. It has never been audited nor thoroughly reviewed for security vulnerabilities. DO NOT USE IT IN PRODUCTION.
Please report any security issues you find to security@openzeppelin.com.