mirror of
https://github.com/logos-blockchain/lssa.git
synced 2026-01-02 13:23:10 +00:00
commit
a7c5f01e2c
67
.github/workflows/ci.yml
vendored
67
.github/workflows/ci.yml
vendored
@ -14,14 +14,11 @@ on:
|
||||
name: General
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
matrix:
|
||||
platform: [ ubuntu-latest, macos-latest ]
|
||||
runs-on: ${{ matrix.platform }}
|
||||
build-ubuntu-latest:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
|
||||
name: build - ${{ matrix.platform }}
|
||||
name: build - ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install stable toolchain
|
||||
@ -30,16 +27,10 @@ jobs:
|
||||
profile: minimal
|
||||
toolchain: nightly
|
||||
override: true
|
||||
- name: install risc0
|
||||
- name: build - ubuntu-latest
|
||||
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
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
- run: cargo build
|
||||
run: chmod 777 ./ci_scripts/build-ubuntu.sh && ./ci_scripts/build-ubuntu.sh
|
||||
|
||||
|
||||
lint:
|
||||
strategy:
|
||||
@ -59,30 +50,11 @@ jobs:
|
||||
toolchain: nightly
|
||||
override: true
|
||||
components: rustfmt, clippy
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
- name: cargo fmt
|
||||
- name: lint - ubuntu-latest
|
||||
if: success() || failure()
|
||||
run: cargo fmt -- --check
|
||||
- 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
|
||||
run: chmod 777 ./ci_scripts/lint-ubuntu.sh && ./ci_scripts/lint-ubuntu.sh
|
||||
|
||||
|
||||
test:
|
||||
strategy:
|
||||
matrix:
|
||||
@ -100,21 +72,6 @@ jobs:
|
||||
profile: minimal
|
||||
toolchain: nightly
|
||||
override: true
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
- name: install risc0
|
||||
- name: test ubuntu-latest
|
||||
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: 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
|
||||
run: chmod 777 ./ci_scripts/test-ubuntu.sh && ./ci_scripts/test-ubuntu.sh
|
||||
|
||||
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) {
|
||||
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)
|
||||
}
|
||||
|
||||
// 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>) {
|
||||
receipt
|
||||
.verify(image_id)
|
||||
@ -26,11 +48,12 @@ pub fn verify(receipt: Receipt, image_id: impl Into<Digest>) {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use test_methods::{BIG_CALCULATION_ELF, BIG_CALCULATION_ID};
|
||||
use test_methods::{MULTIPLICATION_ELF, MULTIPLICATION_ID};
|
||||
use test_methods::{SUMMATION_ELF, SUMMATION_ID};
|
||||
|
||||
#[test]
|
||||
fn simple_sum() {
|
||||
fn prove_simple_sum() {
|
||||
let message = 1;
|
||||
let message_2 = 2;
|
||||
|
||||
@ -41,7 +64,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn bigger_sum() {
|
||||
fn prove_bigger_sum() {
|
||||
let message = 123476;
|
||||
let message_2 = 2342384;
|
||||
|
||||
@ -52,7 +75,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn simple_multiplication() {
|
||||
fn prove_simple_multiplication() {
|
||||
let message = 1;
|
||||
let message_2 = 2;
|
||||
|
||||
@ -63,7 +86,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn bigger_multiplication() {
|
||||
fn prove_bigger_multiplication() {
|
||||
let message = 3498;
|
||||
let message_2 = 438563;
|
||||
|
||||
@ -72,4 +95,50 @@ mod tests {
|
||||
verify(receipt, MULTIPLICATION_ID);
|
||||
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