Node implementation for BOA CoinNet
We provide a public build of this repository (see above).
The easiest way to get agora is to run docker pull bpfk/agora
.
The Dockerfile
lives at the root of this repository,
so one can run docker build -t agora .
to build it.
Note that you need to initialize submodules (git submodules update --init
)
before you first build agora.
For a test run, try:
docker run -p 127.0.0.1:4000:2826/tcp -v `pwd`/doc/:/agora/etc/ agora -c etc/config.example.yaml
This will start a node with the example config file, and make the port locally accessible (See http://127.0.0.1:4000/) .
You need a recent C++ compiler (g++ with N4387 fixed), a recent (>=1.19.0) version of the LDC compiler, and dub
.
On Linux, we recommend gcc-9. On OSX, the latest llvm
package available on Homebrew.
Additionally, the following are dependencies:
libsodium
: Development librarypkg-config
: For DUB to find the correctsqlite3
and other system librariesopenssl
: Binary (to detect the version) and development librarysqlite3
: Development libraryzlib
: Development library
Additionally, on OSX, PKG_CONFIG_PATH
needs to be properly set to pick up sqlite3
and openssl
.
Provided you installed those packages via brew
, you can run the following command prior to building:
export PKG_CONFIG_PATH="/usr/local/opt/sqlite/lib/pkgconfig:/usr/local/opt/[email protected]/lib/pkgconfig"
Since this setting does not persist, we recommend you follow Homebrew's instructions
and add it to your .bashrc
, .zshrc
, etc...
# Install the LDC compiler (you might want to use a newer version)
curl https://dlang.org/install.sh | bash -s ldc-1.20.0
# Add LDC to the $PATH
source ~/dlang/ldc-1.20.0/activate
# Clone this repository
git clone https://github.com/bpfkorea/agora.git
# Use the git root as working directory
cd agora/
# Initialize and update the list of submodules
git submodule update --init
# Build the application
dub build --skip-registry=all
# Build & run the tests
dub test --skip-registry=all
Agora comes with plenty of tests. Take a look at the CI configuration for an exact list. At the moment, the three main ways to run the test are:
dub test
: Test the consensus protocol and runs all the unittestsrdmd tests/runner.d
: Run a serie of simple integrations testsci/system_integration_test.d
: Run a full-fledged system integration test, including building the docker image.