{"id":17183381,"url":"https://github.com/geod24/agora-server","last_synced_at":"2026-02-27T22:09:42.253Z","repository":{"id":197892273,"uuid":"685016843","full_name":"Geod24/agora-server","owner":"Geod24","description":"Peer-to-peer blockchain server, originally forked from bosagora/agora.","archived":false,"fork":false,"pushed_at":"2025-01-24T14:30:36.000Z","size":21167,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"v0.x.x","last_synced_at":"2025-04-11T04:42:02.448Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"D","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Geod24.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-08-30T10:35:11.000Z","updated_at":"2025-01-24T14:28:23.000Z","dependencies_parsed_at":"2025-03-25T02:39:25.572Z","dependency_job_id":null,"html_url":"https://github.com/Geod24/agora-server","commit_stats":null,"previous_names":["geod24/agora-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Geod24/agora-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geod24%2Fagora-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geod24%2Fagora-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geod24%2Fagora-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geod24%2Fagora-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Geod24","download_url":"https://codeload.github.com/Geod24/agora-server/tar.gz/refs/heads/v0.x.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geod24%2Fagora-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29917209,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T19:37:42.220Z","status":"ssl_error","status_checked_at":"2026-02-27T19:37:41.463Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T00:40:24.651Z","updated_at":"2026-02-27T22:09:42.239Z","avatar_url":"https://github.com/Geod24.png","language":"D","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Agora\n\n![Github CI](https://github.com/Geod24/agora-server/actions/workflows/main.yml/badge.svg)\n[![codecov](https://codecov.io/gh/Geod24/agora-server/branch/v0.x.x/graph/badge.svg)](https://codecov.io/gh/Geod24/agora-server)\n[![License](https://img.shields.io/github/license/Geod24/agora-server)](LICENSE)\n[![Documentation](https://img.shields.io/badge/Docs-Github%20Pages-blue)](https://geod24.github.io/agora-server/)\n\nNode implementation for BOA CoinNet\n\n# TestNet access\n\nIf you are looking for the instructions to access TestNet, please follow [this link](./devel/testnet/README.md).\n\n# Docker usage\n\nThe `Dockerfile` lives at the root of this repository,\nso one can run `docker build -t agora .` to build it.\nNote that you need to initialize submodules (`git submodule update --init`)\nbefore you first build agora.\n\n# Building on POSIX\n\n## Dependencies\n\nYou need a recent `clang++` (with N4387 fixed), a recent (\u003e=1.35.0) version of the LDC compiler, and `dub`.\n\nAdditionally, the following are dependencies:\n- `libsodium \u003e= 1.0.18`:  Development library\n- `pkg-config`: For DUB to find the correct `sqlite3` and other system libraries\n- `openssl`:    Binary (to detect the version) and development library\n- `sqlite3`:    Development library\n- `zlib`:       Development library\n\nAdditionally, on OSX, `PKG_CONFIG_PATH` needs to be properly set to pick up `sqlite3` and `openssl`.\nProvided you installed those packages via `brew`, you can run the following command prior to building:\n```console\nexport PKG_CONFIG_PATH=\"/usr/local/opt/sqlite/lib/pkgconfig:/usr/local/opt/openssl@1.1/lib/pkgconfig\"\n```\nSince this setting does not persist, we recommend you follow Homebrew's instructions\nand add it to your `.bashrc`, `.zshrc`, etc...\n\nThe following can be used on Ubuntu 20.04 to get the required dependencies:\n```console\nsudo apt-get update \u0026\u0026 sudo apt-get install build-essential clang libsodium-dev libssl-dev libsqlite3-dev zlib1g-dev\n```\n\nOn older distributions (e.g. Ubuntu 18.04), `libsodium` might not be at version v1.0.18.\n\n## Build instructions\n\n```console\n# First, make sure you have the package listed in the Dependencies section installed.\n#\n# Then, install the LDC compiler (you might want to use a newer version)\n# This will also install dub, the D package manager / build tool\ncurl https://dlang.org/install.sh | bash -s ldc-1.38.0\n# Add LDC to the $PATH\nsource ~/dlang/ldc-1.38.0/activate\n# Clone this repository\ngit clone https://github.com/bosagora/agora.git\n# Use the git root as working directory\ncd agora/\n# Initialize and update the list of submodules\ngit submodule update --init\n# Build the application\ndub build --skip-registry=all\n# Build \u0026 run the tests\ndub test --skip-registry=all\n```\n\n## Running tests\n\nAgora comes with plenty of tests. Take a look at the CI configuration for an exact list.\nAt the moment, the three main ways to run the test are:\n- `dub test`: Test the consensus protocol and runs all the unittests\n- `rdmd tests/runner.d`: Run a serie of simple integrations tests\n- `ci/system_integration_test.d`: Run a full-fledged system integration test, including building the docker image.\n\n## Source code organization\n\nThe code is divided into multiple parts:\n- The \"main\" source code lives in [source/agora](source/agora/). Consensus rules and node implementation lives there;\n- The extracted SCP code lives in [source/scpp](source/scpp/). See the [README](source/scpp/README.md) for more information;\n- Our Dlang binding for SCP's C++ implementation lives in [source/scpd](source/scpd/), along with some C++ helpers;\n- The setup interface, Talos, is a React app living in [the talos directory](talos);\n\nThe directory `source/agora/` is the root package. Sub-packages include:\n- `agora.api`: Defines interfaces that describe the APIs exposed by different types of nodes (FullNode, Validator, Flash...);\n- `agora.cli`: Contains various CLI tools used by Agora (see the [`dub.json`](dub.json) sub-configuration to build them);\n- `agora.common`: A leaf package that contains various general-purpose utilities which aren't Agora specific;\n- `agora.consensus`: Implements Agora's consensus protocol, can be used as a standalone library;\n- `agora.crypto`: Contains cryptographic utilities, such as the key type;\n- `agora.flash`: Implementation of the Flash layer;\n- `agora.network`: Manages a node's view of the network;\n- `agora.node`: Implementation of the two main types of nodes (Full node and Validator) and related modules;\n- `agora.script`: Implementation of the script engine;\n- `agora.stats`: Holds helper modules for statistics exported by Agora and other tools;\n- `agora.test`: Contains network tests for the consensus protocol. See [the README](source/agora/README.md) for more details;\n- `agora.utils`: Contains utilities that don't fit in other packages, such as a custom tracing GC, Tracy integration, `TxBuilder`...\n\nAdditionally, Agora's dependencies live in [`submodules`](submodules/) and are managed via `git submodule`.\nOf those submodules, few are internally managed libraries (`crypto`, `serialization`, ...), and some may be forks\nof externally managed libraries (either because the library is unmaintained or because specific tweaks were needed).\nA [README](submodules/README.md) provides more details.\n\n## Running single test node using TestNet GenesisBlock\n\nFor a test of a full node connecting to testnet, try:\n```console\ndocker run -p 2826:2826 -p 9111:9111 -v `pwd`/devel/config-fullnode.yaml:/agora/etc/config.yaml agora -c /agora/etc/config.yaml\n```\nThe node API will be locally available. It can be accessed with:\n```console\ncurl http://127.0.0.1:2826/blocks/0\n```\nLikewise, the metrics endpoint will be exposed:\n```console\ncurl http://127.0.0.1:9111/metrics\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeod24%2Fagora-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeod24%2Fagora-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeod24%2Fagora-server/lists"}