Skip to content

genlayerlabs/genvm-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GenVM

standard-readme compliant License: BSL 1.1 Discord Telegram Twitter GitHub star chart

The execution environment for Intelligent Contracts in the GenLayer protocol.

GenVM executes Intelligent Contracts — which can contain non-deterministic code — while preserving blockchain security and consistency. This repository is the umbrella (manager) that builds GenVM from its parts: the executor, the runners, the modules, and the install/manifest pipeline.

Table of Contents

Background

This is a monorepo for GenVM. It is composed of the following sub-projects:

  • executors/ — the core GenVM executor (a genvm-executor submodule, pinned per version train) plus the runners/ available to contracts (software floating point, the Python interpreter with built-in bindings to the GenVM WASM module, the GenLayer Python standard library, ...). The executor is a modified wasmtime that exposes the genvm-sdk-wasi implementation and performs all sandboxing.
  • implementation/ — the manager and modules (LLM, web).
  • libs/, support/ — shared libraries and build/CI tooling.

Install

Required tools:

  • git
  • ruby (3.*)
  • ninja
  • rustup (cargo + rustc)
  • (for runners) nix and an x86_64 system

All of them (except git, for obvious reasons) are provided by the default shell in build-scripts/devenv/flake.nix (for direnv add use flake ./build-scripts/devenv).

Debug build

  1. cd $PROJECT_DIR
  2. git submodule update --init --recursive --depth 1
  3. source env.sh (not needed if you used the flake)
  4. git third-party update --all
  5. genvm-tool configure — scrapes and configures all targets (similar to CMake). Outside the dev shell use support/tools/genvm-tool/genvm-tool configure.
  6. ninja -C build (or ninja -C build all/bin) — output is at build/out as a root (bin, share)
  7. Get genvm-runners.zip from GitHub
  8. Merge build/out and genvm-runners.zip

Production build

WARNING: currently supported only on x86_64 Linux hosts.

  1. cd $PROJECT_DIR
  2. nix build -o build/out-universal -v -L .#all-for-platform.universal
  3. nix build -o build/out-amd64-linux -v -L .#all-for-platform.amd64-linux
  4. Merge outputs

Usage

GenVM's only purpose is to execute Intelligent Contracts. For getting-started documentation, see the GenLayer documentation. For more complex examples, look into the test suite.

Maintainers

GenLayer Labs.

Contributing

PRs accepted. See the contributing guide.

License

Business Source License 1.1 © GenLayer Labs Corp.

About

No description, website, or topics provided.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors