mirror of
https://github.com/logos-blockchain/lssa.git
synced 2026-01-07 15:53:14 +00:00
commit
a7c5f01e2c
67
.github/workflows/ci.yml
vendored
67
.github/workflows/ci.yml
vendored
@ -14,14 +14,11 @@ on:
|
|||||||
name: General
|
name: General
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build-ubuntu-latest:
|
||||||
strategy:
|
runs-on: ubuntu-latest
|
||||||
matrix:
|
|
||||||
platform: [ ubuntu-latest, macos-latest ]
|
|
||||||
runs-on: ${{ matrix.platform }}
|
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
|
|
||||||
name: build - ${{ matrix.platform }}
|
name: build - ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Install stable toolchain
|
- name: Install stable toolchain
|
||||||
@ -30,16 +27,10 @@ jobs:
|
|||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: nightly
|
toolchain: nightly
|
||||||
override: true
|
override: true
|
||||||
- name: install risc0
|
- name: build - ubuntu-latest
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
run: |
|
run: chmod 777 ./ci_scripts/build-ubuntu.sh && ./ci_scripts/build-ubuntu.sh
|
||||||
curl -L https://risczero.com/install | bash
|
|
||||||
- name: install risc0 step 2
|
|
||||||
if: success() || failure()
|
|
||||||
run: |
|
|
||||||
source /home/runner/.bashrc && rzup install && source /home/runner/.bashrc
|
|
||||||
- uses: Swatinem/rust-cache@v2
|
|
||||||
- run: cargo build
|
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
strategy:
|
strategy:
|
||||||
@ -59,30 +50,11 @@ jobs:
|
|||||||
toolchain: nightly
|
toolchain: nightly
|
||||||
override: true
|
override: true
|
||||||
components: rustfmt, clippy
|
components: rustfmt, clippy
|
||||||
- uses: Swatinem/rust-cache@v2
|
- name: lint - ubuntu-latest
|
||||||
- name: cargo fmt
|
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
run: cargo fmt -- --check
|
run: chmod 777 ./ci_scripts/lint-ubuntu.sh && ./ci_scripts/lint-ubuntu.sh
|
||||||
- name: cargo clippy
|
|
||||||
if: success() || failure()
|
|
||||||
run: |
|
|
||||||
cargo clippy --release -- -D warnings
|
|
||||||
- name: install risc0
|
|
||||||
if: success() || failure()
|
|
||||||
run: |
|
|
||||||
curl -L https://risczero.com/install | bash
|
|
||||||
- name: install risc0 step 2
|
|
||||||
if: success() || failure()
|
|
||||||
run: |
|
|
||||||
source /home/runner/.bashrc && rzup install && source /home/runner/.bashrc
|
|
||||||
- name: install taplo
|
|
||||||
if: success() || failure()
|
|
||||||
run: |
|
|
||||||
cargo install taplo-cli --locked
|
|
||||||
- name: taplo fmt
|
|
||||||
if: success() || failure()
|
|
||||||
run: |
|
|
||||||
taplo fmt --check
|
|
||||||
test:
|
test:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
@ -100,21 +72,6 @@ jobs:
|
|||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: nightly
|
toolchain: nightly
|
||||||
override: true
|
override: true
|
||||||
- uses: Swatinem/rust-cache@v2
|
- name: test ubuntu-latest
|
||||||
- name: install risc0
|
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
run: |
|
run: chmod 777 ./ci_scripts/test-ubuntu.sh && ./ci_scripts/test-ubuntu.sh
|
||||||
curl -L https://risczero.com/install | bash
|
|
||||||
- name: install risc0 step 2
|
|
||||||
if: success() || failure()
|
|
||||||
run: |
|
|
||||||
source /home/runner/.bashrc && rzup install && source /home/runner/.bashrc
|
|
||||||
- name: test mempool
|
|
||||||
if: success() || failure()
|
|
||||||
run: cargo test -p mempool
|
|
||||||
- name: test storage
|
|
||||||
if: success() || failure()
|
|
||||||
run: cargo test -p storage
|
|
||||||
- name: test zkvm
|
|
||||||
if: success() || failure()
|
|
||||||
run: cargo test -p zkvm
|
|
||||||
|
|||||||
4
ci_scripts/build-macos.sh
Normal file
4
ci_scripts/build-macos.sh
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
set -e
|
||||||
|
curl -L https://risczero.com/install | bash
|
||||||
|
/Users/runner/.risc0/bin/rzup install
|
||||||
|
cargo build
|
||||||
4
ci_scripts/build-ubuntu.sh
Normal file
4
ci_scripts/build-ubuntu.sh
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
set -e
|
||||||
|
curl -L https://risczero.com/install | bash
|
||||||
|
/home/runner/.risc0/bin/rzup install
|
||||||
|
cargo build
|
||||||
8
ci_scripts/lint-ubuntu.sh
Normal file
8
ci_scripts/lint-ubuntu.sh
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
set -e
|
||||||
|
|
||||||
|
curl -L https://risczero.com/install | bash
|
||||||
|
/home/runner/.risc0/bin/rzup install
|
||||||
|
cargo install taplo-cli --locked
|
||||||
|
|
||||||
|
cargo fmt -- --check
|
||||||
|
taplo fmt --check
|
||||||
6
ci_scripts/test-ubuntu.sh
Normal file
6
ci_scripts/test-ubuntu.sh
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
set -e
|
||||||
|
|
||||||
|
curl -L https://risczero.com/install | bash
|
||||||
|
/home/runner/.risc0/bin/rzup install
|
||||||
|
|
||||||
|
cargo test --release
|
||||||
@ -1,4 +1,4 @@
|
|||||||
use risc0_zkvm::{default_prover, sha::Digest, ExecutorEnv, Receipt};
|
use risc0_zkvm::{default_executor, default_prover, sha::Digest, ExecutorEnv, Receipt};
|
||||||
|
|
||||||
pub fn prove<T: serde::ser::Serialize>(input_vec: Vec<T>, elf: &[u8]) -> (u64, Receipt) {
|
pub fn prove<T: serde::ser::Serialize>(input_vec: Vec<T>, elf: &[u8]) -> (u64, Receipt) {
|
||||||
let mut builder = ExecutorEnv::builder();
|
let mut builder = ExecutorEnv::builder();
|
||||||
@ -17,6 +17,28 @@ pub fn prove<T: serde::ser::Serialize>(input_vec: Vec<T>, elf: &[u8]) -> (u64, R
|
|||||||
(digest, receipt)
|
(digest, receipt)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This only executes the program and does not generate a receipt.
|
||||||
|
pub fn execute<T: serde::ser::Serialize + for<'de> serde::Deserialize<'de>>(
|
||||||
|
input_vec: Vec<T>,
|
||||||
|
elf: &[u8],
|
||||||
|
) -> T {
|
||||||
|
let mut builder = ExecutorEnv::builder();
|
||||||
|
|
||||||
|
for input in input_vec {
|
||||||
|
builder.write(&input).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
let env = builder.build().unwrap();
|
||||||
|
|
||||||
|
let exec = default_executor();
|
||||||
|
let session = exec.execute(env, elf).unwrap();
|
||||||
|
|
||||||
|
// We read the result committed to the journal by the guest code.
|
||||||
|
let result: T = session.journal.decode().unwrap();
|
||||||
|
|
||||||
|
result
|
||||||
|
}
|
||||||
|
|
||||||
pub fn verify(receipt: Receipt, image_id: impl Into<Digest>) {
|
pub fn verify(receipt: Receipt, image_id: impl Into<Digest>) {
|
||||||
receipt
|
receipt
|
||||||
.verify(image_id)
|
.verify(image_id)
|
||||||
@ -26,11 +48,12 @@ pub fn verify(receipt: Receipt, image_id: impl Into<Digest>) {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use test_methods::{BIG_CALCULATION_ELF, BIG_CALCULATION_ID};
|
||||||
use test_methods::{MULTIPLICATION_ELF, MULTIPLICATION_ID};
|
use test_methods::{MULTIPLICATION_ELF, MULTIPLICATION_ID};
|
||||||
use test_methods::{SUMMATION_ELF, SUMMATION_ID};
|
use test_methods::{SUMMATION_ELF, SUMMATION_ID};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn simple_sum() {
|
fn prove_simple_sum() {
|
||||||
let message = 1;
|
let message = 1;
|
||||||
let message_2 = 2;
|
let message_2 = 2;
|
||||||
|
|
||||||
@ -41,7 +64,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn bigger_sum() {
|
fn prove_bigger_sum() {
|
||||||
let message = 123476;
|
let message = 123476;
|
||||||
let message_2 = 2342384;
|
let message_2 = 2342384;
|
||||||
|
|
||||||
@ -52,7 +75,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn simple_multiplication() {
|
fn prove_simple_multiplication() {
|
||||||
let message = 1;
|
let message = 1;
|
||||||
let message_2 = 2;
|
let message_2 = 2;
|
||||||
|
|
||||||
@ -63,7 +86,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn bigger_multiplication() {
|
fn prove_bigger_multiplication() {
|
||||||
let message = 3498;
|
let message = 3498;
|
||||||
let message_2 = 438563;
|
let message_2 = 438563;
|
||||||
|
|
||||||
@ -72,4 +95,50 @@ mod tests {
|
|||||||
verify(receipt, MULTIPLICATION_ID);
|
verify(receipt, MULTIPLICATION_ID);
|
||||||
assert_eq!(digest, message * message_2);
|
assert_eq!(digest, message * message_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn execute_simple_sum() {
|
||||||
|
let message: u64 = 1;
|
||||||
|
let message_2: u64 = 2;
|
||||||
|
|
||||||
|
let result = execute(vec![message, message_2], SUMMATION_ELF);
|
||||||
|
assert_eq!(result, message + message_2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn execute_bigger_sum() {
|
||||||
|
let message: u64 = 123476;
|
||||||
|
let message_2: u64 = 2342384;
|
||||||
|
|
||||||
|
let result = execute(vec![message, message_2], SUMMATION_ELF);
|
||||||
|
assert_eq!(result, message + message_2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn execute_big_calculation() {
|
||||||
|
let message: u128 = 1;
|
||||||
|
let message_2: u128 = 2;
|
||||||
|
|
||||||
|
let result = execute(vec![message, message_2], BIG_CALCULATION_ELF);
|
||||||
|
assert_eq!(result, big_calculation(message, message_2));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn execute_big_calculation_long() {
|
||||||
|
let message: u128 = 20;
|
||||||
|
let message_2: u128 = 10;
|
||||||
|
|
||||||
|
let result = execute(vec![message, message_2], BIG_CALCULATION_ELF);
|
||||||
|
assert_eq!(result, big_calculation(message, message_2));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn big_calculation(lhs: u128, rhs: u128) -> u128 {
|
||||||
|
let mut res = 1_u128;
|
||||||
|
for _ in 0..lhs {
|
||||||
|
res *= rhs;
|
||||||
|
res += lhs;
|
||||||
|
}
|
||||||
|
|
||||||
|
res
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
14
zkvm/test_methods/guest/src/bin/big_calculation.rs
Normal file
14
zkvm/test_methods/guest/src/bin/big_calculation.rs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
use risc0_zkvm::{
|
||||||
|
guest::env,
|
||||||
|
};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let lhs: u128 = env::read();
|
||||||
|
let rhs: u128 = env::read();
|
||||||
|
let mut res = 1;
|
||||||
|
for i in 0..lhs {
|
||||||
|
res *= rhs;
|
||||||
|
res += lhs;
|
||||||
|
}
|
||||||
|
env::commit(&(res));
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user