Skip to content

Commit f3d9d8d

Browse files
authored
feat: release v1.1 (#4)
* feat: v1.0.1 verifier (#2) * feat: v1.0.1 verifier * test: add tests * chore: remove solady * feat: add consistency check workflow * chore: update contracts for v1.1.1 * docs: add README * chore: add comment in README about only building across minor releases * chore: rename to v1.1 * chore: update OpenVM version * docs: update README * chore: update consistency check
1 parent 379e591 commit f3d9d8d

File tree

12 files changed

+3874
-2270
lines changed

12 files changed

+3874
-2270
lines changed

.github/workflows/consistency.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ jobs:
3737
- name: Check TRUNC_VERSION
3838
run: |
3939
expected="${VERSION%.*}" # bash: strip last “.patch”
40-
if [ "${{ steps.extract.outputs.TRUNC_VERSION }}" != "$expected" ]; then
41-
echo "::error::TRUNC_VERSION mismatch: got '${{ steps.extract.outputs.TRUNC_VERSION }}' but expected '$expected'"
40+
if [ "$TRUNC_VERSION" != "$expected" ]; then
41+
echo "::error::TRUNC_VERSION mismatch: got '$TRUNC_VERSION' but expected '$expected'"
4242
exit 1
4343
fi
4444

README.md

Lines changed: 25 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,44 @@
1-
## Foundry
1+
# OpenVM Solidity SDK
22

3-
**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.**
3+
This repository contains OpenVM verifier contracts generated from official release commits of the [openvm](https://github.com/openvm-org/openvm) repository using the default VM configuration via the cargo-openvm CLI tool. If you're using an advanced or custom VM configuration, you may need to generate and maintain your own verifier contracts separately.
44

5-
Foundry consists of:
5+
The contracts are built on every _minor_ release as OpenVM guarantees verifier backward compatibility across patch releases.
66

7-
- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools).
8-
- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data.
9-
- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network.
10-
- **Chisel**: Fast, utilitarian, and verbose solidity REPL.
7+
## Installation
118

12-
## Documentation
9+
To install `openvm-solidity-sdk` as a dependency in your forge project, run the following:
1310

14-
https://book.getfoundry.sh/
15-
16-
## Usage
17-
18-
### Build
19-
20-
```shell
21-
$ forge build
22-
```
23-
24-
### Test
25-
26-
```shell
27-
$ forge test
11+
```bash
12+
forge install openvm-org/openvm-solidity-sdk
2813
```
2914

30-
### Format
15+
## Usage
3116

32-
```shell
33-
$ forge fmt
34-
```
17+
If you are using a deployed instance of the verifier contract, then you can import the interfaces in your contract directly.
3518

36-
### Gas Snapshots
19+
```solidity
20+
import { IOpenVmHalo2Verifier } from "openvm-solidity-sdk/v1.1/interfaces/IOpenVmHalo2Verifier.sol";
3721
38-
```shell
39-
$ forge snapshot
40-
```
22+
contract MyContract {
23+
function myFunction() public view {
24+
// ... snip ...
4125
42-
### Anvil
26+
IOpenVmHalo2Verifier(verifierAddress)
27+
.verify(publicValues, proofData, appExeCommit, appVmCommit);
4328
44-
```shell
45-
$ anvil
29+
// ... snip ...
30+
}
31+
}
4632
```
4733

48-
### Deploy
34+
If you want to deploy your own instance of the verifier contract, you can use `forge create`:
4935

50-
```shell
51-
$ forge script script/Counter.s.sol:CounterScript --rpc-url <your_rpc_url> --private-key <your_private_key>
36+
```bash
37+
forge create src/v1.1/OpenVmHalo2Verifier.sol:OpenVmHalo2Verifier --rpc-url $RPC --private-key $PRIVATE_KEY --broadcast
5238
```
5339

54-
### Cast
40+
If you want to import the verifier contract into your own repository for testing purposes, note that it is locked to Solidity version `0.8.19`. If your project uses a different version, the import may not compile. As a workaround, you can compile the contract separately and use `vm.etch()` to inject the raw bytecode into your tests.
5541

56-
```shell
57-
$ cast <subcommand>
58-
```
59-
60-
### Help
42+
## Audits
6143

62-
```shell
63-
$ forge --help
64-
$ anvil --help
65-
$ cast --help
66-
```
44+
You can find the audit reports for these contracts in the [OpenVM repo](https://github.com/openvm-org/openvm/tree/main/audits).

foundry.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,19 @@ verbosity = 2
66
solc = "0.8.19"
77
optimizer = true
88
optimizer_runs = 100000
9-
evm_version = "cancun"
9+
evm_version = "paris"
1010
show_progress = true
11+
fs_permissions = [{ access = "read", path = "./test/v1.1/evm.proof"}]
1112

1213
[profile.default.optimizer_details]
1314
constantOptimizer = false
1415
yul = false
1516

1617
[fuzz]
17-
runs = 1000
18+
runs = 256
1819

1920
[fmt]
21+
sort_imports = true
2022
bracket_spacing = true
2123
int_types = "long"
2224
line_length = 120

remappings.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
forge-std/=lib/forge-std/src/

0 commit comments

Comments
 (0)