Skip to content
This repository has been archived by the owner on Dec 17, 2024. It is now read-only.

Next step: Towards devnet #46

Merged
merged 45 commits into from
Jan 21, 2024
Merged

Next step: Towards devnet #46

merged 45 commits into from
Jan 21, 2024

Conversation

tuommaki
Copy link
Contributor

This PR folds Gevulot node prototype into mainline branch as a next milestone towards devnet.

tuommaki and others added 30 commits December 1, 2023 11:38
Changes along the lines:
- Rename SQL tables to singular form.
This change introduces `RpcServer` that will eventually replace
the REST server as remote interface to the node.
Generalized multi-recipient key capsule that can be used to encapsulate
message on-chain.

Primary use case for now will be for `Proof` hiding until all replicas
are ready and `ProofKey` can be submitted (to open the `KeyCapsule`).
This change allows prover execution from submitted transaction.
- Fix TaskResult file handling.
- Fix QEMU VM workspace volume mount.
- Fix Program Output -> Program Input file handling.
The first iteration of P2P networking here is based on pea2pea and its
Noise example.

The transaction handling is fully built into the P2P code, but should be
easily refactored to proper PubSub model later on.

This is very much MVP right now, but should provide some ideas to build
on later.
It is more convenient and makes more sense to build all core commands in
the node command.
tuommaki and others added 15 commits January 10, 2024 16:30
Install protoc into CI container.
In order to have ability to use shim with non-Rust provers, a C FFI is
needed for `gevulot-shim`. This commit provides the first version of
that.
Currently `Program`s are unique within `Workflow` and therefore it's
impossible to have same `parent` and `prover` hashes for multiple
proofs.
In order to have a simple mechanism for running DB migrations,
add `migrate` command. This way the node operator doesn't need
to install `sqlx-cli` cargo plugin in order to migrate the DB.
- Maximum number of connections (64).
- Connection timeout (750ms).
Cli tool provides simple functionality to deploy & test provers and verifiers.
This is the first step towards having validation for transactions.

It verifies that transaction signature is correct and that current
workflow restrictions are checked.

The transaction is validated on entering mempool, which covers
currently all the key use cases in the program.
The first version is based on Debian, but that
choice shall be revisited later to optimize the
container size.
Gevulot devnet is permissioned due to its nature. For this need,
implement basic transaction authorization based on authors' public keys.
In order to avoid re-executing old transactions on every restart,
maintain execution state.
This commit is a next step towards Gevulot devnet.

Old test provers are removed. README is changed towards node-centric
repository structure and specific INSTALL guide has been added.
@tuommaki tuommaki self-assigned this Jan 21, 2024
@tuommaki tuommaki merged commit 34f5e3a into main Jan 21, 2024
4 checks passed
@tuommaki tuommaki deleted the proto branch January 21, 2024 18:25
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants