Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aeternity/elixir-node
Elixir full node implementation of the aeternity specification
https://github.com/aeternity/elixir-node
aeternity blockchain crypto elixir full-node ng oracles scaling state-channels
Last synced: about 2 months ago
JSON representation
Elixir full node implementation of the aeternity specification
- Host: GitHub
- URL: https://github.com/aeternity/elixir-node
- Owner: aeternity
- License: isc
- Created: 2017-09-07T15:04:18.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-12-12T08:59:27.000Z (about 6 years ago)
- Last Synced: 2024-12-07T20:03:59.532Z (2 months ago)
- Topics: aeternity, blockchain, crypto, elixir, full-node, ng, oracles, scaling, state-channels
- Language: Elixir
- Homepage:
- Size: 4.86 MB
- Stars: 213
- Watchers: 35
- Forks: 38
- Open Issues: 47
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Travis Build](https://travis-ci.org/aeternity/elixir-node.svg?branch=master)](https://travis-ci.org/aeternity/elixir-node)
# CURRENTLY *NOT COMPATIBLE* TO THE AETERNITY NETWORK
This implementation aims to be a aims to be a full node that complies with the aeternity specification, in the current state this is not ready yet and should never be used to join the aeternity network.# Aeternity Elixir Full Node
This is an elixir full node implementation of the aeternity specification.Compatibility to the erlang aeternity implementation is documented in [docs/aeternity-erlang-compatibility.md](docs/aeternity-erlang-compatibility.md).
## Getting started
### Required packages
[Elixir 1.6](https://elixir-lang.org/install.html) with Erlang/OTP20 is the basis of the project[Rust](https://www.rust-lang.org/install.html) is needed for persistent storage dependency
libsodium 1.0.16 is needed for elliptic curve support
```bash
sudo apt-get install autoconf autogen libtool libgmp3-dev lsof
wget -O libsodium-src.tar.gz https://github.com/jedisct1/libsodium/releases/download/1.0.16/libsodium-1.0.16.tar.gz
mkdir libsodium-src && tar -zxf libsodium-src.tar.gz -C libsodium-src --strip-components=1
cd libsodium-src && ./configure && make && make check && sudo make install && cd ..
```#### Fetching dependencies
`mix deps.get`#### Starting the application
Start the application in interactive Elixir
- Development config: `make iex-0`
- Production config: `MIX_ENV=prod make iex-0`The default sync port is 3015, this can be adjusted using `SYNC_PORT=some_port iex -S mix phx.server`.
The node will run an http api at `localhost:4000`, this can be adjusted using `PORT=some_port iex -S mix phx.server`.## Usage
### Elixir interactive api-calls
- `Miner.resume()` to start the miner
- `Miner.suspend() ` to stop the miner
- `Miner.mine_sync_block_to_chain()` mine the next block- `Chain.top_block()` to get the top block of the current chain
- `Chain.top_block_chain_state()` to get the top block chainstate
- `Chain.chain_state(block_hash)` to get the chainstate of certain block- `Pool.get_pool()` to get all transactions from the pool
- `Peers.all_peers()` to get all connected peers
- `Peers.try_connect(%{host: host, port: port, pubkey: pubkey})` to manually connect a new peer
- `Peers.get_info_try_connect(uri)` to connect to another elixir node, providing a get connection info interface### Running the tests
Run the testsuite with `mix test`### Logging
Debug, error, warning and info logs is found in `apps/aecore/logs`### Docker Container
A `Dockerfile` and `docker-compose.yml` are found in the base directory, prebuilt images are not yet published.- Build container `docker build . -t elixir-node`
- Run node in container `docker run --name elixir-node -it -p 4000:4000 -p 3015:3015 elixir-node`- Run multiple nodes network with docker compose `docker-compose up` runs 3 connected nodes, with 2 mining
## Detailed Usage
[docs/detailed-usage.md](docs/detailed-usage.md)
## Developer Documentation
[docs/developer-docs.md](docs/developer-docs.md)