{"id":2137695,"url":"https://github.com/tezedge/tezedge","last_synced_at":"2025-07-13T12:31:42.855Z","repository":{"id":36990441,"uuid":"177650795","full_name":"tezedge/tezedge","owner":"tezedge","description":"Tezos node/shell in Rust. Unfortunately dev has ceased. If you are interested in resurrecting, please contact @drchrispinnock","archived":false,"fork":false,"pushed_at":"2024-06-25T08:41:16.000Z","size":113437,"stargazers_count":147,"open_issues_count":61,"forks_count":53,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-11-22T10:36:14.235Z","etag":null,"topics":["cryptocurrency","rust","tezos","tezos-blockchain","tezos-node"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/tezedge.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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}},"created_at":"2019-03-25T19:26:59.000Z","updated_at":"2024-10-07T15:48:50.000Z","dependencies_parsed_at":"2023-02-12T06:45:33.378Z","dependency_job_id":"c4eed6a5-de32-4392-97e5-feb7c23160a1","html_url":"https://github.com/tezedge/tezedge","commit_stats":null,"previous_names":[],"tags_count":86,"template":false,"template_full_name":null,"purl":"pkg:github/tezedge/tezedge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tezedge%2Ftezedge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tezedge%2Ftezedge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tezedge%2Ftezedge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tezedge%2Ftezedge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tezedge","download_url":"https://codeload.github.com/tezedge/tezedge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tezedge%2Ftezedge/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265139264,"owners_count":23717280,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cryptocurrency","rust","tezos","tezos-blockchain","tezos-node"],"created_at":"2024-01-22T00:41:13.425Z","updated_at":"2025-07-13T12:31:39.564Z","avatar_url":"https://github.com/tezedge.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# TezEdge [![Docs Status]][docs Link] [![Changelog][changelog-badge]][changelog] [![release-badge]][release-link] [![docker-badge]][docker-link] [![MIT licensed]][MIT link]\n\n---\nThe purpose of this project is to implement a secure, trustworthy and open-source Tezos node in Rust.\n\nIn addition to implementing a new node, the project seeks to maintain and improve the Tezos ecosystem wherever possible.\n\n## Table of Contents\n* [Build status](#build-status)\n* [Quick demo](#quick-demo)\n    * [Prerequisites](#prerequisites)\n    * [Run demo](#run-demo)\n* [Documentation](#documentation)\n* [How to build](#how-to-build)\n    * [Supported OS distributions](#supported-os-distributions)\n    * [Prerequisites installation](#prerequisites-installation)\n    * [Build from source code](#build-from-source-code)\n* [How to run](#how-to-run)\n    * [From source with `cargo run`](#running-node-with-cargo-run)\n    * [Using simplified script `run.sh`](#running-node-with-runsh-script)\n    * [Run docker image](#running-node-from-docker)\n    * [Graceful shutdown](#shutdown-running-node-gracefully)\n* [How to use](#how-to-use)\n    * [Call RPC](#example-of-how-to-call-the-rpc)\n    * [Baking](#baking)\n    * [Prearranged-docker-compose-files](#prearranged-docker-compose-files)\n        * [Mainnet - node + explorer](#mainnet---light-node--tezedge-explorer)\n        * [Mainnet - node + explorer + debugger (eBPF)](#mainnet---light-node--tezedge-explorer--tezedge-debugger)\n        * [Mainnet - nodes with irmin vs memory storage + explorer](#mainnet---light-node-with-irmin-context--light-node-with-memory-context--tezedge-explorer)\n\n[comment]: \u003c\u003e (        * [Sandbox - node launcher + explorer + debugger]\u0026#40;#sandbox---sandbox-launcher--light-node--tezedge-explorer\u0026#41;)\n\n## Build status\n\n---\n\n|  CI / branch  |      master      |  develop |\n|----------|:-------------:|------:|\n| GitHub Actions |  [![Build Status master]][Build Link master] | [![Build Status develop]][Build Link develop] |\n| Drone |  [![Drone Status master]][Drone Link]   |   [![Drone Status develop]][Drone Link] |\n\n[Build Status master]: https://github.com/tezedge/tezedge/workflows/build/badge.svg?branch=master\n[Build Status develop]: https://github.com/tezedge/tezedge/workflows/build/badge.svg?branch=develop\n[Build Link master]: https://github.com/tezedge/tezedge/actions?query=workflow%3Abuild+branch%3Amaster\n[Build Link develop]: https://github.com/tezedge/tezedge/actions?query=workflow%3Abuild+branch%3Adevelop\n\n[Drone Status master]: http://ci.tezedge.com/api/badges/tezedge/tezedge/status.svg?ref=refs/heads/master\n[Drone Status develop]: http://ci.tezedge.com/api/badges/tezedge/tezedge/status.svg?ref=refs/heads/develop\n[Drone Link]: http://ci.tezedge.com/tezedge/tezedge/\n\n[Docs Status]: https://img.shields.io/badge/user--docs-master-informational\n[Docs Link]: http://docs.tezedge.com/\n\n[RustDoc Status]:https://img.shields.io/badge/code--docs-master-orange\n\n[MIT licensed]: https://img.shields.io/badge/license-MIT-blue.svg\n[MIT link]: https://github.com/tezedge/tezedge/blob/master/LICENSE\n\n[changelog]: ./CHANGELOG.md\n[changelog-badge]: https://img.shields.io/badge/changelog-Changelog-%23E05735\n\n[release-badge]: https://img.shields.io/github/v/release/tezedge/tezedge\n[release-link]: https://github.com/tezedge/tezedge/releases/latest\n\n[docker-badge]: https://img.shields.io/badge/docker-images-blue\n[docker-link]: https://hub.docker.com/r/tezedge/tezedge/tags\n\n## Quick demo\n\n---\n\nThis demo launches two items:\n- The **TezEdge node** (p2p application), which connects to the **Tezos Mainnet network**.\n- The **TezEdge explorer** (web application), which connects to the TezEdge node and can be accessed from a browser to see what is going on inside the TezEdge node\n\n### Prerequisites\nIf you want to run this demo, you need to first install the following:\n* Git (client)\n* Docker\n\n### Run demo\n\n1. **Download the TezEdge source code**\n    ```\n   # Open shell and type this code into the command line and then press Enter:\n   git clone https://github.com/tezedge/tezedge\n    cd tezedge\n    ```\n2. **Run docker (compose)**\n    ```\n    # Open shell and type this code into the command line and then press Enter:\n    docker-compose pull\n    docker-compose up\n    ```\n    ![alt text](https://raw.githubusercontent.com/tezedge/tezedge/master/docs/images/node_bootstrap.gif)\n3. **Open your web browser by entering this address into your browser's URL bar: http://localhost:8080**\n    ![alt text](https://raw.githubusercontent.com/tezedge/tezedge/master/docs/images/tezedge_explorer.gif)\n\n\n_**Docker for Windows**_\n\nThe images use the hostname `localhost` to access running services.\nWhen using docker for windows, please check:\n```\ndocker-machine ip\n```\nand make sure that port forwarding is set up correctly for docker or use docker-machine resolved ip instead of `http://localhost:8080`\n\n```\nTCP ports (\u003chost_port\u003e:\u003cdocker_port\u003e):\n    - \"80:80\"\n    - \"4927:4927\"\n    - \"18732:18732\"\n    - \"19732:9732\"\n```\n\n## Documentation\n\n---\n_Detailed project's documentation can be found here [Documentation][Docs Link]_\n\n\n## How to build\n\n---\n\n### Supported OS distributions\n\nWe are linking Rust code with a pre-compiled Tezos shared library. For your convenience, we have created pre-compiled binary files\nfor most of the more popular Linux distributions:\n\n\n|  OS  |      Versions      |\n|----------|:-------------:|\n| Ubuntu |  16.04, 18.04, 18.10, 19.04, 19.10, 20.04, 20.10, 21.04, 21.10, 22.04 |\n| Debian |  9, 10 |\n| OpenSUSE |  15.1, 15.2 |\n| CentOS |  8 |\n| MacOS |  *experimental* - newer or equal to 10.13 should work, Intel and M1 cpus |\n\nIf you are missing support for your favorite Linux distribution, please submit a request with the [tezos-opam-builder](https://github.com/tezedge/tezos-opam-builder) project.\n\nTo build from source please follow [these instructions](tezos/interop/README.md).\n\n### Prerequisites installation\nIf you want to build from source code, you need to install this before:\n1. Install **Git** (client)\n2. Install **Rust** command _(We recommend installing Rust through rustup.)_\n    ```\n    # Run the following in your terminal, then follow the onscreen instructions.\n    curl https://sh.rustup.rs -sSf | sh\n    ```\n3. Install **Rust toolchain** _(Our releases are built with 1.58.1.)_\n    ```\n    rustup toolchain install 1.58.1\n    rustup default 1.58.1\n    ```\n4. Install **required OS libs**\n    - OpenSSL and Zlib\n    ```\n    sudo apt install openssl libssl-dev zlib1g\n    ```\n    - Sodiumoxide package:\n    ```\n    sudo apt install pkg-config libsodium-dev\n    ```\n    - RocksDB package:\n    ```\n    sudo apt install clang libclang-dev llvm llvm-dev linux-kernel-headers libev-dev\n    ```\n    - In macOS, using [Homebrew](https://brew.sh/):\n    ```\n    brew install pkg-config gmp libev libsodium hidapi libffi\n    ```\n   - Sandbox/wallet requirements:\n    ```\n    sudo apt install libhidapi-dev\n    ```\n\n### Build from source code\n\n1. **Download TezEdge source code**\n    ```\n    # Open shell, type this code into the command line and then press Enter:\n    git clone https://github.com/tezedge/tezedge\n    cd tezedge\n    ```\n\n2. **Build**\n\n    ```\n    export SODIUM_USE_PKG_CONFIG=1\n    cargo build --release\n    ```\n\n   _The node can built through the `cargo build` or `cargo build --release`, be aware, release build can take\n   much longer to compile._\n\n3. **Test**\n\n    ```\n    export SODIUM_USE_PKG_CONFIG=1\n    export DYLD_LIBRARY_PATH=$(pwd)/tezos/sys/lib_tezos/artifacts # currently needed for macOS\n    cargo test --release\n    ```\n\n## How to run\n\n---\n\n### Running node with `cargo run`\n\nTo run the node manually, you need to first build it from the source code. When put together, the node can be run, for example, like this:\n\n```\ncargo build --release\ncargo run --release --bin light-node -- --config-file ./light_node/etc/tezedge/tezedge.config --protocol-runner=./target/release/protocol-runner --network=mainnet\n```\n\nAll parameters can also be provided as command line arguments in the same format as in the config file, in which case\nthey have a higher priority than the ones in the config file. For example, we can use the default config and change the log file path:\n\n```\ncargo build --release\ncargo run --release --bin light-node -- --config-file ./light_node/etc/tezedge/tezedge.config --log-file /tmp/logs/tezdge.log --protocol-runner=./target/release/protocol-runner --network=mainnet\n```\n\n_Full description of all arguments is in the light_node [README](light_node/README.md) file._\n\n### Running node with `run.sh` script\n\nFor Linux systems, we have prepared a convenience script to run the node. It will automatically set all the necessary environmnent variables and then build and run the TezEdge node.\nAll arguments can be provided to the `run.sh` script in the same manner as described in the previous section.\n\nTo run the node in release mode, execute the following:\n\n_KEEP_DATA - this flag controls, if all the target directories should be cleaned on the startup, 1 means do not clean_\n\n```\nKEEP_DATA=1 ./run.sh release --network=mainnet\n```\n\nThe following command will execute the node in debug node:\n\n```\nKEEP_DATA=1 ./run.sh node --network=mainnet\n```\n\nTo run the node in debug mode with an address sanitizer, execute the following:\n\n```\nKEEP_DATA=1 ./run.sh node-saddr --network=mainnet\n```\n\nYou can use the docker version to build and run node from the actual source code.\n- you can experiment and change source code without installing all requirements, just docker.\n- you can build/run node on Windows/OSX\n- this is just for development, because docker is based on full Linux (pre-build docker images are Distroless)\n\n_If you do not need to build from souce code, just use our pre-build [docker images](#running-node-from-docker-images)_\n\n```\n./run.sh docker --network=mainnet\n```\n\nListening for updates. Node emits statistics on the websocket server, which can be changed by `--websocket-address` argument, for example:\n\n```\nKEEP_DATA=1  ./run.sh node --network=mainnet --websocket-address 0.0.0.0:12345\n```\n\n_Full description of all arguments is in the light_node [README](light_node/README.md) file._\n\n### Running node from `binaries`\n\n_Note: This cmd runs from the main git sources directory_\n```\nLD_LIBRARY_PATH=./tezos/sys/lib_tezos/artifacts ./target/release/light-node \\\n    --network \"mainnet\" \\\n    --identity-file \"/tmp/data-dir-mainnet/identity.json\" \\\n    --identity-expected-pow 26.0 \\\n    --tezos-data-dir \"/tmp/data-dir-mainnet/context_data\" \\\n    --bootstrap-db-path \"/tmp/data-dir-mainnet/tezedge_data\" \\\n    --peer-thresh-low 30 --peer-thresh-high 45 \\\n    --protocol-runner \"./target/release/protocol-runner\" \\\n    --init-sapling-spend-params-file \"./tezos/sys/lib_tezos/artifacts/sapling-spend.params\" \\\n    --init-sapling-output-params-file \"./tezos/sys/lib_tezos/artifacts/sapling-output.params\" \\\n    --p2p-port 9732 --rpc-port 18732 \\\n    --tokio-threads 0 \\\n    --ocaml-log-enabled false \\\n    --tezos-context-storage=irmin \\\n    --log terminal \\\n    --log file \\\n    --log-level info \\\n    --log-format simple\n```\n\n### Running node from docker images\n\nWe provide automatically built images that can be downloaded from our [Docker hub][docker-link].\nFor instance, this can be useful when you want to run the TezEdge node in your test CI pipelines.\n\n#### Images (distroless)\n- `tezedge/tezedge:vX.Y.Z` - last versioned stable released version\n- `tezedge/tezedge:latest-release` - last stable released version\n- `tezedge/tezedge:latest` - actual stable development version\n- `tezedge/tezedge:sandbox-vX.Y.Z` - last versioned stable released version for sandbox launcher\n- `tezedge/tezedge:sandbox-latest-release` - last stable released version for sandbox launcher\n- `tezedge/tezedge:sandbox-latest` - last stable released version for sandbox launcher\n\n_More about building TezEdge docker images see [here](docker/README.md)._\n\n#### Run image\n\n```\ndocker run -i -p 9732:9732 -p 18732:18732 -p 4927:4927 -t tezedge/tezedge:v3.1.1 --network=mainnet --p2p-port 9732 --rpc-port 18732\n```\n_A full description of all arguments can be found in the light_node [README](light_node/README.md) file._\n\n### Shutdown running node gracefully\n\nJust press `Ctrl-c`, works for e.g. `cargo run` or `run.sh` script.\n\nOr you can send a `signal` to a running process, the dedicated signal is `SIGINT`, e.g.:\n```\nkill -s SIGINT \u003cPID-of-running-process-with-light-node\u003e\n```\n\n## How to use\n\n---\n\n### Example of how to call the RPC\n\nOpen shell, type this code into the command line and then press Enter:\n\n```\ncurl localhost:18732/chains/main/blocks/head\n```\n\nFor a more detailed description of the RPCs, see the [shell](https://docs.tezedge.com/endpoints/shell) and the [protocol](https://docs.tezedge.com/endpoints/protocol) endpoints.\n\n### Baking\n\n- [Using Tezedge external baker](apps/baker/README.md)\n- [Using Tezedge embedded baker](shell_automaton/src/baker/README.md)\n- [Baking in the Ithaca testnet](baking/012-Psithaca/README.md)\n- [Baking in the mainnet](baking/mainnet/README.md)\n\n### Prearranged docker-compose files\n\n#### Mainnet - light-node + tezedge explorer\n\n**Last released version:**\n```\ndocker-compose -f docker-compose.yml pull\ndocker-compose -f docker-compose.yml up\n```\n\n*(optional) Environment configuration:*\n\n```\n# (default: irmin) - choose context implementation, possible values: [irmin, tezedge, both]\nTEZOS_CONTEXT_STORAGE=\u003cpossible-value\u003e\n\n# explorer accesses node/debugger on 'localhost' by default, you can change it like,\nNODE_HOSTNAME_OR_IP=\u003chostname-or-ip\u003e\n\ne.g.:\nTEZOS_CONTEXT_STORAGE=irmin NODE_HOSTNAME_OR_IP=123.123.123.123 docker-compose -f docker-compose.yml up\n```\n\n#### Mainnet - light-node + tezedge explorer + tezedge debugger\n\n**Last released version with TezEdge Debugger with integrated eBPF**\n\n_This requires Linux kernel at least 5.11_\n```\ndocker-compose -f docker-compose.debug.yml pull\ndocker-compose -f docker-compose.debug.yml up\n```\n\n*(optional) Environment configuration:*\n\n```\n# (default: irmin) - choose context implementation, possible values: [irmin, tezedge, both]\nTEZOS_CONTEXT_STORAGE=\u003cpossible-value\u003e\n\n# explorer accesses node/debugger on 'localhost' by default, you can change it like,\nNODE_HOSTNAME_OR_IP=\u003chostname-or-ip\u003e\n\ne.g.:\nTEZOS_CONTEXT_STORAGE=irmin NODE_HOSTNAME_OR_IP=123.123.123.123 docker-compose -f docker-compose.debug.yml up\n```\n\n#### Mainnet - light-node with irmin context + light-node with memory context + light-node with persistent context + tezedge-explorer\n\nThis runs two explorers:\n- http://localhost:8181 - with Irmin storage\n- http://localhost:8282 - with Memory storage\n- http://localhost:8383 - with Persistent storage\n\n```\n# Irmin context\ndocker-compose -f docker-compose.storage.irmin.yml pull\ndocker-compose -f docker-compose.storage.irmin.yml up\n\n# TezEdge in-memory context\ndocker-compose -f docker-compose.storage.memory.yml pull\ndocker-compose -f docker-compose.storage.memory.yml up\n\n# TezEdge persistent context\ndocker-compose -f docker-compose.storage.persistent.yml pull\ndocker-compose -f docker-compose.storage.persistent.yml up\n```\n\n*(optional) Environment configuration:*\n\n```\n# explorer accesses node on 'localhost' by default, you can change it like,\nNODE_HOSTNAME_OR_IP=\u003chostname-or-ip\u003e\n```\n\n[comment]: \u003c\u003e (#### Sandbox - sandbox launcher + light-node + tezedge-explorer)\n\n[comment]: \u003c\u003e (_See more info about sandbox [here]\u0026#40;sandbox/README.MD\u0026#41;_)\n\n[comment]: \u003c\u003e (**Last released version:**)\n\n[comment]: \u003c\u003e (```)\n\n[comment]: \u003c\u003e (docker-compose -f docker-compose.sandbox.yml pull)\n\n[comment]: \u003c\u003e (docker-compose -f docker-compose.sandbox.yml up)\n\n[comment]: \u003c\u003e (```)\n\n[comment]: \u003c\u003e (**Actual development version:**)\n\n[comment]: \u003c\u003e (```)\n\n[comment]: \u003c\u003e (docker-compose -f docker-compose.sandbox.latest.yml pull)\n\n[comment]: \u003c\u003e (docker-compose -f docker-compose.sandbox.latest.yml up)\n\n[comment]: \u003c\u003e (```)\n\n[comment]: \u003c\u003e (#### Sandbox node launcher + tezedge-explorer + tezedge-debugger)\n\n[comment]: \u003c\u003e (**Last released version:**)\n\n[comment]: \u003c\u003e (```)\n\n[comment]: \u003c\u003e (docker-compose -f docker-compose.sandbox.yml pull)\n\n[comment]: \u003c\u003e (docker-compose -f docker-compose.sandbox.yml up)\n\n[comment]: \u003c\u003e (```)\n\n[comment]: \u003c\u003e (**Actual development version:**)\n\n[comment]: \u003c\u003e (```)\n\n[comment]: \u003c\u003e (docker-compose -f docker-compose.sandbox.latest.yml pull)\n\n[comment]: \u003c\u003e (docker-compose -f docker-compose.sandbox.latest.yml up)\n\n[comment]: \u003c\u003e (# stop and remove docker volume)\n\n[comment]: \u003c\u003e (docker-compose -f docker-compose.sandbox.latest.yml down -v)\n\n[comment]: \u003c\u003e (```)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftezedge%2Ftezedge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftezedge%2Ftezedge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftezedge%2Ftezedge/lists"}