Decentralized Durability Engine https://codex.storage
Go to file
markspanbroek 29433bad9a
Fix concurrency issues (#993)
* Use http subscriptions instead of websocket for tests

To work around this issue when subscriptions are
inactive for more than 5 minutes:
https://github.com/NomicFoundation/hardhat/issues/2053

Use 100 millisecond polling; default polling interval
of 4 seconds is too close to the 5 second timeout for
`check eventually`.

* use .confirm(1) instead of confirm(0)

confirm(0) doesn't wait at all, confirm(1) waits
for the transaction to be mined

* speed up partial payout integration test

* update nim-ethers to version 0.10.0

includes fixes for http polling and .confirm()

* fix timing of marketplace tests

allow for a bit more time to withdraw funds

* use .confirm(1) in marketplace tests

to ensure that the transaction has been processed
before continuing with the test

* fix timing issue in validation unit test

* fix proof integration test

there were two logic errors in this test:
- a slot is freed anyway at the end of the contract
- when starting the request takes a long time, the
  first slot can already be freed because there were
  too many missing proofs

* fix intermittent error in contract tests

currentTime() doesn't always correctly reflect
the time of the next transaction

* reduce number of slots in integration test

otherwise the windows runner in the CI won't
be able to start the request before it expires

* fix timing in purchasing test

allow for a bit more time for a request to
be submitted

* fix timing of request submission in test

windows ci is so slow, it can take up to 40 seconds
just to submit a storage request to hardhat

* increase proof period to 90 seconds

* adjust timing of integration tests

reason: with the increased period length of 90 seconds, it
can take longer to wait for a stable challenge at the
beginning of a period.

* increase CI timeout to 2 hours

* Fix slow builds on windows

apparently it takes windows 2-3 seconds to
resolve "localhost" to 127.0.0.1 for every
json-rpc connection that we make 🤦
2024-11-25 11:23:04 +00:00
.github Fix concurrency issues (#993) 2024-11-25 11:23:04 +00:00
benchmarks Pr add prover benchmark tool (#790) 2024-05-23 09:28:17 -07:00
codex Fix concurrency issues (#993) 2024-11-25 11:23:04 +00:00
docker Add ETH_PRIVATE_KEY to Docker entrypoint (#982) 2024-11-03 06:51:57 +00:00
metrics Adding metrics (#203) 2022-08-23 10:11:21 -06:00
tests Fix concurrency issues (#993) 2024-11-25 11:23:04 +00:00
tools/cirdl chore: update dependencies, especially nim-ethers to chronos v4 compatible version (#968) 2024-10-30 10:40:17 +00:00
vendor Fix concurrency issues (#993) 2024-11-25 11:23:04 +00:00
.dockerignore Docker build (#354) 2023-03-08 12:45:55 +01:00
.editorconfig Project setup 2021-02-02 19:29:52 +01:00
.gitignore Add MIT/Apache licenses (#861) 2024-08-13 15:38:17 +00:00
.gitmodules Rework circuit downloader (#882) 2024-09-23 14:37:17 +00:00
LICENSE-APACHEv2 Remove extra license file (#876) 2024-08-19 09:48:03 +00:00
LICENSE-MIT Add MIT/Apache licenses (#861) 2024-08-13 15:38:17 +00:00
Makefile makefile: Use do not use -mssse3 instructions on arm (#940) (#990) 2024-11-09 11:39:39 +00:00
README.md Remove moved docs (#930) 2024-10-03 08:55:54 +00:00
build.nims Rework circuit downloader (#882) 2024-09-23 14:37:17 +00:00
codecov.yml [ci] disable pull-request comments by codecov 2022-05-19 15:23:35 +02:00
codex.nim Rework circuit downloader (#882) 2024-09-23 14:37:17 +00:00
codex.nimble remove stale and misleading dependency version metadata (#833) 2024-06-17 14:31:10 +00:00
config.nims Chronos v4 Update (v3 Compat Mode) (#814) 2024-07-18 21:04:33 +00:00
env.sh add env.sh shim to project root (#34) 2021-12-20 13:12:18 -06:00
flake.lock nix-flake: Add shell definition (#954) 2024-11-04 07:46:22 +00:00
flake.nix nix-flake: Add shell definition (#954) 2024-11-04 07:46:22 +00:00
openapi.yaml chore(openapi): update the openapi spec for the manifest object (#972) 2024-11-15 13:21:18 +00:00

README.md

Codex Decentralized Durability Engine

The Codex project aims to create a decentralized durability engine that allows persisting data in p2p networks. In other words, it allows storing files and data with predictable durability guarantees for later retrieval.

WARNING: This project is under active development and is considered pre-alpha.

License: Apache License: MIT Stability: experimental CI Docker Codecov Discord Docker Pulls

Build and Run

For detailed instructions on preparing to build nim-codex see Build Codex.

To build the project, clone it and run:

make update && make

The executable will be placed under the build directory under the project root.

Run the client with:

build/codex

Configuration

It is possible to configure a Codex node in several ways:

  1. CLI options
  2. Environment variables
  3. Configuration file

The order of priority is the same as above: CLI options --> Environment variables --> Configuration file.

Please check documentation for more information.

Guides

To get acquainted with Codex, consider:

API

The client exposes a REST API that can be used to interact with the clients. Overview of the API can be found on api.codex.storage.