Table of Contents
Papyrus
is still being built therefore breaking changes might happen often so use it at your own risks.:construction: :warning:
Papyrus
is a StarkNet full node written in Rust.
Prerequisites
You can build and run a papyrus
node with the default configuration by running:
mkdir data
cargo run --release --package papyrus_node --bin papyrus_node
Papyrus
supports configuration from command-line arguments and a configuration yaml file.
In case both are provided, the command-line arguments take precedence.
The default path for the configuration file is config/config.yaml
. You can override this path
using the --config_file
command-line argument.
See the default configuration file for available options.
Note that the configuration file can be partial or even empty.
You can check the available command-line arguments by running:
cargo run --release --package papyrus_node --bin papyrus_node -- --help
You can run a papyrus
node with the default configuration by running:
docker run --rm --name papyrus\
-p 8080-8081:8080-8081 \
-v <local-host-data-path>:/app/data \
ghcr.io/starkware-libs/papyrus:dev
- The container must have write access to
<local-host-data-path>
. A possible way to assure this is to create the<local-host-data-path>
directory (only the first time you runpapyrus
) and add--user "$(id -u):$(id -g)"
to the docker run command. - You must include the
dev
tag which keeps track of our development branch and contains the most up-to-date code. Once we have official releases we will add alatest
tag for the latest release. - Currently, there is no automatic upgrade mechanism. Make sure to periodically pull the latest image and re-run the node.
The Papyrus node will use all the RAM it can in order to cache the storage.
If you're not running any other applications on your machine, this is the recommended behavior.
Otherwise, you can limit the node's memory usage by running it in a container with a limited memory. Note that it might make the node less efficient as it will decrease the caching of the storage.
This can be done by adding the flag --memory 1g
(For a 1GB limitation) to the command in the Docker section.
The full command should be
docker run --rm --name papyrus\
-p 8080-8081:8080-8081 \
-v <local-host-data-path>:/app/data \
--memory <memory-limit>
ghcr.io/starkware-libs/papyrus:dev
For more information, see Docker's documentation.
Endpoint | Supported |
---|---|
starknet_addDeclareTransaction |
❌ |
starknet_addDeployAccountTransaction |
❌ |
starknet_addInvokeTransaction |
❌ |
starknet_blockHashAndNumber |
✔️ |
starknet_blockNumber |
✔️ |
starknet_call |
❌ |
starknet_chainId |
✔️ |
starknet_estimateFee |
❌ |
starknet_getBlockTransactionCount |
✔️ |
starknet_getBlockWithTxHashes |
✔️ |
starknet_getBlockWithTxs |
✔️ |
starknet_getClass |
✔️ |
starknet_getClassAt |
✔️ |
starknet_getClassHashAt |
✔️ |
starknet_getEvents |
✔️ |
starknet_getNonce |
✔️ |
starknet_getStateUpdate |
✔️ |
starknet_getStorageAt |
✔️ |
starknet_getTransactionByBlockIdAndIndex |
✔️ |
starknet_getTransactionByHash |
✔️ |
starknet_getTransactionReceipt |
✔️ |
starknet_pendingTransactions |
❌ |
starknet_syncing |
❌ |
See the open issues for a list of proposed features (and known issues).
- Top Feature Requests (Add your votes using the 👍 reaction)
- Top Bugs (Add your votes using the 👍 reaction)
- Newest Bugs
Reach out to the maintainer at one of the following places:
- GitHub Discussions
- Contact options listed on this GitHub profile
If you want to say thank you or/and support active development of Papyrus:
- Add a GitHub Star to the project.
- Tweet about the Papyrus.
- Write interesting articles about the project on Dev.to, Medium or your personal blog.
Together, we can make Papyrus better!
First off, thanks for taking the time to contribute! Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make will benefit everybody else and are greatly appreciated.
Please read our contribution guidelines, and thank you for being involved!
For a full list of all authors and contributors, see the contributors page.
Papyrus follows good practices of security, but 100% security cannot be assured. Papyrus is provided "as is" without any warranty. Use at your own risk.
For more information and to report security issues, please refer to our security documentation.
This project is licensed under the Apache 2.0 license.
See LICENSE for more information.