Skip to content

Commit

Permalink
chore: Rename to argument
Browse files Browse the repository at this point in the history
  • Loading branch information
samuelburnham committed Aug 4, 2024
1 parent 4c3fc9b commit 2e4fbb8
Show file tree
Hide file tree
Showing 15 changed files with 44 additions and 44 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,6 @@ jobs:
with:
fail-fast: true

# Lint dependencies for licensing and auditing issues as per https://github.com/lurk-lab/lurk-rs/blob/main/deny.toml
# Lint dependencies for licensing and auditing issues as per https://github.com/argumentcomputer/lurk-rs/blob/main/deny.toml
licenses-audits:
uses: lurk-lab/ci-workflows/.github/workflows/licenses-audits.yml@main
6 changes: 3 additions & 3 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,15 +52,15 @@ jobs:
- name: Amend MESSAGE for tests
if: steps.tests.outcome != 'success'
run: echo "MESSAGE=${{ env.MESSAGE }} Exhaustive test run failed in https://github.com/lurk-lab/lurk-rs/actions/runs/${{ github.run_id }}" >> $GITHUB_ENV
run: echo "MESSAGE=${{ env.MESSAGE }} Exhaustive test run failed in https://github.com/argumentcomputer/lurk-rs/actions/runs/${{ github.run_id }}" >> $GITHUB_ENV

- name: Amend MESSAGE for benches
if: steps.benches.outcome != 'success'
run: echo "MESSAGE=${{ env.MESSAGE }} Bench compilation failed in https://github.com/lurk-lab/lurk-rs/actions/runs/${{ github.run_id }}" >> $GITHUB_ENV
run: echo "MESSAGE=${{ env.MESSAGE }} Bench compilation failed in https://github.com/argumentcomputer/lurk-rs/actions/runs/${{ github.run_id }}" >> $GITHUB_ENV

- name: Amend MESSAGE for doctests
if: steps.doctests.outcome != 'success'
run: echo "MESSAGE=${{ env.MESSAGE }} Doc test run failed in https://github.com/lurk-lab/lurk-rs/actions/runs/${{ github.run_id }}" >> $GITHUB_ENV
run: echo "MESSAGE=${{ env.MESSAGE }} Doc test run failed in https://github.com/argumentcomputer/lurk-rs/actions/runs/${{ github.run_id }}" >> $GITHUB_ENV

- name: Find the last report issue open
id: last_issue
Expand Down
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[submodule "lurk-lib"]
path = lurk-lib
url = https://github.com/lurk-lab/lurk-lib.git
url = https://github.com/argumentcomputer/lurk-lib.git
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ representative at an online or offline event.
## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at community@lurk-lab.com.
reported to the community leaders responsible for enforcement at community@argument.xyz.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
Expand Down
14 changes: 7 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,19 +68,19 @@ Welcome to the Lurk-rs project! Here's an introduction to the branch organizatio

### Major Dependencies

The main repo is [lurk-rs](https://github.com/lurk-lab/lurk-rs) with major dependencies:
The main repo is [lurk-rs](https://github.com/argumentcomputer/lurk-rs) with major dependencies:

- [bellpepper](https://github.com/lurk-lab/bellpepper)
- [neptune](https://github.com/lurk-lab/neptune)
- [arecibo](https://github.com/lurk-lab/arecibo) - a fork of the upstream repo [nova](https://github.com/microsoft/Nova)
- [bellpepper](https://github.com/argumentcomputer/bellpepper)
- [neptune](https://github.com/argumentcomputer/neptune)
- [arecibo](https://github.com/argumentcomputer/arecibo) - a fork of the upstream repo [nova](https://github.com/microsoft/Nova)

### Forked Dependencies

Additionally, Lurk-rs depends on the following forked repositories:

- [pasta_curves](https://github.com/lurk-lab/pasta_curves) (forked from [zcash/pasta_curves](https://github.com/zcash/pasta_curves))
- [pasta-msm](https://github.com/lurk-lab/pasta-msm) (forked from [supranational/pasta-msm](https://github.com/supranational/pasta-msm))
- [ec-gpu](https://github.com/lurk-lab/ec-gpu) (forked from [filecoin-project/ec-gpu](https://github.com/filecoin-project/ec-gpu))
- [pasta_curves](https://github.com/argumentcomputer/pasta_curves) (forked from [zcash/pasta_curves](https://github.com/zcash/pasta_curves))
- [pasta-msm](https://github.com/argumentcomputer/pasta-msm) (forked from [supranational/pasta-msm](https://github.com/supranational/pasta-msm))
- [ec-gpu](https://github.com/argumentcomputer/ec-gpu) (forked from [filecoin-project/ec-gpu](https://github.com/filecoin-project/ec-gpu))

For rapid iterations and to address issues in these dependencies, Lurk's **main** branch directly depends on the **dev** branch of its dependencies (transitively).

Expand Down
14 changes: 7 additions & 7 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,14 @@ thiserror = { workspace = true }
abomonation = { workspace = true }
abomonation_derive = { version = "0.1.0", package = "abomonation_derive_ng" }
byteorder = "1.4.3"
circom-scotia = { git = "https://github.com/lurk-lab/circom-scotia", branch = "main" }
circom-scotia = { git = "https://github.com/argumentcomputer/circom-scotia", branch = "main" }
sha2 = { version = "0.10.2" }
reqwest = { version = "0.12.2", features = ["stream", "blocking"] }
ansi_term = "0.12.1"
tracing = { workspace = true }
tracing-texray = { workspace = true }
tracing-subscriber = { workspace = true, features = ["env-filter"] }
elsa = { version = "1.9.0", git = "https://github.com/lurk-lab/elsa", branch = "sync_frozen", features = ["indexmap"] }
elsa = { version = "1.9.0", git = "https://github.com/argumentcomputer/elsa", branch = "sync_frozen", features = ["indexmap"] }
arc-swap = "1.6.0"
halo2curves = { version = "0.6.0", features = ["bits", "derive_serde"] }

Expand Down Expand Up @@ -117,15 +117,15 @@ members = ["foil", "lurk-macros", "lurk-metrics", "chain-server"]
[workspace.dependencies]
abomonation = "0.7.3"
anyhow = "1.0.72"
bellpepper = { git = "https://github.com/lurk-lab/bellpepper", branch = "dev" }
bellpepper = { git = "https://github.com/argumentcomputer/bellpepper", branch = "dev" }
bellpepper-core = { version = "0.4.0" }
bincode = "1.3.3"
camino = "1.1.6"
clap = "4.3.17"
ff = "0.13"
metrics = "0.23.0"
neptune = { git = "https://github.com/lurk-lab/neptune", branch = "dev", default-features = false, features = ["abomonation"] }
nova = { git = "https://github.com/lurk-lab/arecibo", branch = "dev", package = "arecibo", features = ["abomonate"]}
neptune = { git = "https://github.com/argumentcomputer/neptune", branch = "dev", default-features = false, features = ["abomonation"] }
nova = { git = "https://github.com/argumentcomputer/arecibo", branch = "dev", package = "arecibo", features = ["abomonate"]}
once_cell = "1.18.0"
pairing = { version = "0.23" }
pasta_curves = { version = "0.5.0" }
Expand All @@ -143,11 +143,11 @@ tracing-subscriber = "0.3.17"
# All workspace members should inherit these keys
# for package declarations.
[workspace.package]
authors = ["Lurk Lab Engineering <engineering@lurk-lab.com>"]
authors = ["Argument Engineering <engineering@argument.xyz>"]
edition = "2021"
homepage = "https://lurk-lang.org/"
license = "MIT OR Apache-2.0"
repository = "https://github.com/lurk-lab/lurk-rs"
repository = "https://github.com/argumentcomputer/lurk-rs"
rust-version = "1.74.1"

[[bin]]
Expand Down
2 changes: 1 addition & 1 deletion LICENSE-MIT
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2023 Lurk Lab
Copyright (c) 2023 Argument Computer Corporation

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Lurk

![lurk-rs](https://github.com/lurk-lab/lurk-rs/actions/workflows/ci.yml/badge.svg)
![lurk-rs](https://github.com/argumentcomputer/lurk-rs/actions/workflows/ci.yml/badge.svg)
![minimum rustc 1.70][msrv-image]
[![dependency status](https://deps.rs/repo/github/lurk-lab/lurk-rs/status.svg)](https://deps.rs/repo/github/lurk-lab/lurk-rs)
![crates.io][crates-image]
Expand All @@ -12,25 +12,25 @@

Lurk is currently in [Beta](https://blog.lurk-lang.org/posts/lurk-beta/), which is backwards compatible with code that ran in Lurk Alpha and is expected to be compatible with Lurk 1.0. However, some low-level data representations are anticipated to change, and we will be refactoring the evaluation model (and consequently its circuit) for efficiency purposes. Also note that since Lurk inherits some security properties from the underlying proving system, those who would rely on Lurk should investigate the security and status of Nova/SuperNova itself. We encourage early adopters to begin writing real applications taking advantage of Lurk so you can begin to familiarize yourself with the programming model. Likewise, we welcome your feedback -- which will help ensure ongoing development meets user need.

For support and discussions, please visit our [Zulip forum](https://zulip.lurk-lab.com/).
For support and discussions, please visit our [Zulip forum](https://zulip.argument.xyz/).

# Overview

Lurk is a statically scoped dialect of Lisp, influenced by Scheme and Common Lisp. A reference implementation focused on describing and developing the core language can be found in the [`lurk`](https://github.com/lurk-lab/lurk-lisp) repo.
Lurk is a statically scoped dialect of Lisp, influenced by Scheme and Common Lisp. A reference implementation focused on describing and developing the core language can be found in the [`lurk`](https://github.com/argumentcomputer/lurk-lisp) repo.

Lurk's distinguishing feature relative to most programming languages is that correct execution of Lurk programs can be directly proved using zk-SNARKs. The resulting proofs are succinct: they are relatively small, can be verified quickly, and they reveal only the information explicitly contained in the statement to be proved.

For more detailed information, refer to the paper: [https://eprint.iacr.org/2023/369](https://eprint.iacr.org/2023/369)

Lurk's distinguishing feature relative to most zk-SNARK authoring languages is that Lurk is Turing complete, so arbitrary computational claims can be made and proved (subject to resource limitations, obviously). Because Lurk is a Lisp, its code is simply Lurk data, and any Lurk data can be directly evaluated as a Lurk program. Lurk constructs compound data using SNARK-friendly Poseidon hashes (provided by [Neptune](https://github.com/lurk-lab/neptune)), so its data is naturally content-addressable.
Lurk's distinguishing feature relative to most zk-SNARK authoring languages is that Lurk is Turing complete, so arbitrary computational claims can be made and proved (subject to resource limitations, obviously). Because Lurk is a Lisp, its code is simply Lurk data, and any Lurk data can be directly evaluated as a Lurk program. Lurk constructs compound data using SNARK-friendly Poseidon hashes (provided by [Neptune](https://github.com/argumentcomputer/neptune)), so its data is naturally content-addressable.

# Proofs

Integration with backend proving systems and tooling for proof generation are both still very early. Performance and user experience still have room for significant optimization and improvement, but simple examples can be found in the [demo example directory](demo/).

# Backends
- Nova is Lurk's officially-supported IVC backend. It uses Lurk Lab's Arecibo fork of the [Nova proving system](https://github.com/lurk-lab/arecibo) and the Pasta Curves.
- SuperNova is Lurk's in-development NIVC backend. It uses Arecibo's [SuperNova extension to the Nova proving system](https://github.com/lurk-lab/arecibo/tree/dev/src/supernova) and the Pasta Curves.
- Nova is Lurk's officially-supported IVC backend. It uses Argument Computer Corporation's Arecibo fork of the [Nova proving system](https://github.com/argumentcomputer/arecibo) and the Pasta Curves.
- SuperNova is Lurk's in-development NIVC backend. It uses Arecibo's [SuperNova extension to the Nova proving system](https://github.com/argumentcomputer/arecibo/tree/dev/src/supernova) and the Pasta Curves.
- Future work may target Halo2 or other proving systems.

It is an explicit design goal that statements about the evaluation of Lurk programs have identical semantic meaning across backends, with the qualification that Lurk language instances are themselves parameterized on scalar field and hash function. When backends use the same scalar field and hash function, they can be used to generate equivalent proofs. This is because the concrete representation of content-addressed data is fixed.
Expand All @@ -57,7 +57,7 @@ Please note that the Lurk language and spec will be versioned independently from

## Submodules

Lurk source files used in tests are in the [lurk-lib](https://github.com/lurk-lab/lurk-lib) submodule. You must
Lurk source files used in tests are in the [lurk-lib](https://github.com/argumentcomputer/lurk-lib) submodule. You must
initialize and update submodules before test will pass:

```ignore
Expand Down
4 changes: 2 additions & 2 deletions benches/sha256.rs
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ cfg_if::cfg_if! {
targets =
nivc_prove_benchmarks
// TODO: Add when compressed SNARK is implemented for SuperNova
// https://github.com/lurk-lab/arecibo/issues/27https://github.com/lurk-lab/arecibo/issues/27
// https://github.com/argumentcomputer/arecibo/issues/27https://github.com/argumentcomputer/arecibo/issues/27
// nivc_prove_compressed_benchmarks
}
} else {
Expand All @@ -399,7 +399,7 @@ cfg_if::cfg_if! {
targets =
nivc_prove_benchmarks
// TODO: Add when compressed SNARK is implemented for SuperNova
// https://github.com/lurk-lab/arecibo/issues/27https://github.com/lurk-lab/arecibo/issues/27
// https://github.com/argumentcomputer/arecibo/issues/27https://github.com/argumentcomputer/arecibo/issues/27
// nivc_prove_compressed_benchmarks
}
}
Expand Down
2 changes: 1 addition & 1 deletion examples/keccak.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
//! Declare a `CircomGadget` implementing a `reference` pointing to a valid Circom Gadget repository
//! and an existing release `version`. If the `CircomCoprocessor` can not find it locally it will directly
//! fetch the r1cs and wasm files from Github. When doing so, the files will be fetched from the repository
//! `https://github.com/lurk-lab/keccak-circom-gadget` and the release `v0.1.0`.
//! `https://github.com/argumentcomputer/keccak-circom-gadget` and the release `v0.1.0`.
use bellpepper_core::boolean::{AllocatedBit, Boolean};
use bellpepper_core::num::AllocatedNum;
use bellpepper_core::{ConstraintSystem, SynthesisError};
Expand Down
2 changes: 1 addition & 1 deletion foil/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2021"
authors = ["porcuquine <porcuquine@gmail.com>"]
description = "Flat Optimization Intermediate Language"
repository = "https://github.com/lurk-lab/lurk-rs"
repository = "https://github.com/argumentcomputer/lurk-rs"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
Expand Down
10 changes: 5 additions & 5 deletions notes/reduction-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
This document contains general notes about the design, rationale, and implementation of the Lurk reduction step. For a
more normalized (but still WIP) specification, see the [Eval Spec](eval.md)

The [Lurk Language Specification](https://github.com/lurk-lab/lurk/blob/master/spec/v0-1.md) defines evaluation
The [Lurk Language Specification](https://github.com/argumentcomputer/lurk/blob/master/spec/v0-1.md) defines evaluation
semantics without specifying the internal data structures or computational steps which an implementation must use to
calculate an evaluation. `lurk-rs` implements a concrete instance of the Lurk language for which proofs of correct
evaluation can be generated. `lurk-rs` generates zk-SNARK proofs for multiple backends, and verification of these
Expand All @@ -13,7 +13,7 @@ corresponding arithmetic circuit. The initial Lurk circuit implementation is spe

Because the circuit must check the computation to be proved, many aspects of the implementation itself must be fully
specified. The reference implementation of Lurk expression evaluation in
[`eval.rs`](https://github.com/lurk-lab/lurk-rs/blob/main/src/lem/eval.rs) provides an intermediate step between the
[`eval.rs`](https://github.com/argumentcomputer/lurk-rs/blob/main/src/lem/eval.rs) provides an intermediate step between the
high-level specification and the low-level circuit. Not every aspect of the implementation is essential, but every part
which directly corresponds to the layout of the constraint system is.

Expand All @@ -29,10 +29,10 @@ This is true in three distinct ways:
3. When parallelizing synthesis (not currently implemented) of many logically sequential steps.

Taking these one at a time:
1. Because the SNARK-friendly Poseidon hashes (provided by the [Neptune](https://github.com/lurk-lab/neptune)
1. Because the SNARK-friendly Poseidon hashes (provided by the [Neptune](https://github.com/argumentcomputer/neptune)
library) are relatively expensive, and because Lurk does not provide explicit access to the hash values, we avoid
computing them during evaluation -- instead relying on the
[Store](https://github.com/lurk-lab/lurk-rs/blob/main/src/lem/store.rs) to manage cheaper expression pointers in a way
[Store](https://github.com/argumentcomputer/lurk-rs/blob/main/src/lem/store.rs) to manage cheaper expression pointers in a way
that preserves equality. All such pointers are resolved to content-addressable tagged hashes before circuit
synthesis. The Store is used during synthesis when the preimage of a hash known at synthesis needs to be 'looked
up'.
Expand All @@ -44,7 +44,7 @@ Taking these one at a time:


As a matter of interest, we note that the `lurk-rs` evaluator runs about 7x faster than the one implemented in [Common
Lisp](https://github.com/lurk-lab/lurk/blob/master/api/api.lisp). The latter's design does not target speed, and we
Lisp](https://github.com/argumentcomputer/lurk/blob/master/api/api.lisp). The latter's design does not target speed, and we
make this observation only to support our suggestion that the `lurk-rs` evaluator performs well relative to the cost of
proving. It makes sense to evaluate many frames at a time before proving because doing so is cheap.

Expand Down
6 changes: 3 additions & 3 deletions notes/soundness-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,10 @@ the result of a previous commitment, then the committed value is already known.
possible to find another such value-secret pair. In other words, if a proof of commitment opening can be created at all,
then we claim that the private input used in the proof *must* have been one initially produced via `commit`.

We delegate this claim to [neptune](https://github.com/lurk-lab/neptune) -- Lurk's underlying Poseidon
We delegate this claim to [neptune](https://github.com/argumentcomputer/neptune) -- Lurk's underlying Poseidon
implementation. Poseidon's cryptographic security is described in [the paper](https://eprint.iacr.org/2019/458.pdf), and
`neptune`'s implementation has been
[audited](https://github.com/lurk-lab/neptune/blob/master/poseidon-in-filecoin-final-report.pdf).
[audited](https://github.com/argumentcomputer/neptune/blob/master/poseidon-in-filecoin-final-report.pdf).

### Implicit Commitments (expressions)

Expand Down Expand Up @@ -158,7 +158,7 @@ from the expression. Immediate values are derived with the identity function, an
their constituents (both type and value elements) using a hash of appropriate arity and a type-specific preimage layout.

For example, an actual Lurk cons has type tag
[`0x01`](https://github.com/lurk-lab/lurk-rs/blob/a1242270a1285c15b7edb0ab1440f2247f950ead/src/store.rs#L2790), and its
[`0x01`](https://github.com/argumentcomputer/lurk-rs/blob/a1242270a1285c15b7edb0ab1440f2247f950ead/src/store.rs#L2790), and its
value is `P4(t0, v0, t1, v1)` -- where `P4` is a 4-ary Poseidon hash, `t0` is the type tag of the first paired
expression, `v0` is the value element of the first paired expression, `t1` is the type tag of the second paired
expression, and `v1` is the value element of the second paired expression.
Expand Down
Loading

0 comments on commit 2e4fbb8

Please sign in to comment.