From d925f5431c0391c0cd1c4d80545e0e68f953adfc Mon Sep 17 00:00:00 2001 From: Dafna Matsry Date: Thu, 18 Jul 2024 13:23:44 +0300 Subject: [PATCH] chore: copy README files --- README.md | 2 +- docs/blockifier/README.md | 66 ++++++ docs/mempool/README.md | 17 ++ docs/papyrus/README.adoc | 428 ++++++++++++++++++++++++++++++++++++ docs/starknet_api/README.md | 10 + 5 files changed, 522 insertions(+), 1 deletion(-) create mode 100644 docs/blockifier/README.md create mode 100644 docs/mempool/README.md create mode 100644 docs/papyrus/README.adoc create mode 100644 docs/starknet_api/README.md diff --git a/README.md b/README.md index f5b6279fc0..4a18d3e7a3 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# Starknet-Node \ No newline at end of file +# Sequencer diff --git a/docs/blockifier/README.md b/docs/blockifier/README.md new file mode 100644 index 0000000000..110fa3be73 --- /dev/null +++ b/docs/blockifier/README.md @@ -0,0 +1,66 @@ +
+

Blockifier

+
+ Report a Bug + · + Request a Feature + · + Ask a Question +
+ +
+
+ +[![GitHub Workflow Status](https://github.com/starkware-libs/blockifier/actions/workflows/post-merge.yml/badge.svg)](https://github.com/starkware-libs/blockifier/actions/workflows/post-merge.yml) +[![codecov](https://codecov.io/gh/starkware-libs/blockifier/branch/main/graph/badge.svg?token=Z5MXY45MR5)](https://codecov.io/gh/starkware-libs/blockifier) + +
+ +
+Table of Contents + +- [About](#about) +- [Roadmap](#roadmap) +- [Support](#support) +- [Security](#security) +- [License](#license) + +
+ +--- + +## About + +Blockifier is a Rust implementation of the component in the Starknet sequencer that executes transactions, and is in charge of creating state diffs and blocks. + +## Roadmap + +The Blockifier is a step towards a decentralized sequencer client for Starknet, allowing anyone to run one. +We'll add more milestones to this table once we finish the first one, where we blockify transactions sequentially, including all existing functionality. + +| name | status | +| -------------------------------------------------------------------------------------------------------------------------------------- | :----: | +| Add the ability to execute a block and output a state diff. | ✅ | +| Integrate with the existing Starknet Sequencer by replacing its current transaction-blockifying component, which is written in Python. | ⏳ | +| Implement optimistic concurrency of transaction execution. | | +| Extend the Blockifier into a full Starknet sequencer, written in Rust, replacing the one currently in use. | | + +## Support + +Reach out to the maintainer at one of the following places: + +- [GitHub Discussions](https://github.com/starkware-libs/blockifier/discussions) +- Contact options listed on [this GitHub profile](https://github.com/starkware-libs) + +## Security + +Blockifier follows good security practices, but 100% security cannot be assured. +Blockifier 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](docs/SECURITY.md)._ + +## License + +This project is licensed under the **Apache 2.0 license**. + +See [LICENSE](LICENSE) for more information. diff --git a/docs/mempool/README.md b/docs/mempool/README.md new file mode 100644 index 0000000000..34776785c9 --- /dev/null +++ b/docs/mempool/README.md @@ -0,0 +1,17 @@ +
+

Mempool

+
+ Report a Bug + · + Request a Feature + · + Ask a Question +
+ +
+
+ +[![GitHub Workflow Status](https://github.com/starkware-libs/mempool/actions/workflows/post-merge.yml/badge.svg)](https://github.com/starkware-libs/mempool/actions/workflows/post-merge.yml) +[![codecov](https://codecov.io/gh/starkware-libs/mempool/branch/main/graph/badge.svg?token=Z5MXY45MR5)](https://codecov.io/gh/starkware-libs/mempool) + +
diff --git a/docs/papyrus/README.adoc b/docs/papyrus/README.adoc new file mode 100644 index 0000000000..b86ca7407d --- /dev/null +++ b/docs/papyrus/README.adoc @@ -0,0 +1,428 @@ +:toc: +:toclevels: 4 +[pass] +++++ +
+++++ += Papyrus +A Starknet full node + +image::./resources/img/papyrus-logo-square.png[Papyrus logo,200,200, align="center"] + +link:https://github.com/starkware-libs/papyrus/issues/new?assignees=&labels=bug&template=01_BUG_REPORT.md&title=bug%3A+[Report a Bug] · link:https://github.com/starkware-libs/papyrus/issues/new?assignees=&labels=enhancement&template=02_FEATURE_REQUEST.md&title=feat%3A+"[Request a Feature] · link:https://github.com/starkware-libs/papyrus/discussions"[Ask a Question] + +image:https://img.shields.io/github/actions/workflow/status/starkware-libs/papyrus/ci.yml?branch=main[Github workflow status] +image:https://img.shields.io/github/license/starkware-libs/papyrus.svg?style=flat-square[#LICENSE,title=Project license] +image:https://img.shields.io/badge/PRs-welcome-ff69b4.svg?style=flat-square[PRs welcome,link=https://github.com/starkware-libs/papyrus/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22] +image:https://codecov.io/gh/starkware-libs/papyrus/branch/main/graph/badge.svg?token=YZA9IPDHRM[codecov,link=https://codecov.io/gh/starkware-libs/papyrus] +[pass] +++++ +
+++++ + +== About + +Papyrus is a Starknet full node implemented in Rust. Papyrus tracks Starknet’s state as it evolves over time, and enables you to query this state and to execute transactions via Starknet’s JSON-RPC. + +=== Supported Starknet versions + +This Papyrus version supports the following starknet versions: + +* v0.13.0 + +== Disclaimer + +Papyrus is a work in progress. + +Use it at your own risk. + +== Getting started + +[#compiling-and-running-papyrus] +=== Building and running Papyrus locally + +[discrete] +==== Prerequisites + +* https://www.rust-lang.org/tools/install[Rust] must be installed. Minimum supported version is `1.76`. +* You must have access to an Ethereum node. For example, you can use a node provider such as Infura. + +[discrete] +==== Procedure + +. Fork and clone the Github repo. +. Build and run a Papyrus node with the default configuration by running the following commands: ++ +[source,bash] +----- +mkdir data +cargo run --release --package papyrus_node --bin papyrus_node -- --base_layer.node_url +----- ++ +[NOTE] +==== +Papyrus uses the `data` directory for the node's storage, as follows: + +`./data/` + +You can configure the directory name using the `storage.db_config.path_prefix` configuration parameter. +==== +. See the version of Papyrus by running the following command: ++ +[source,bash] +---- +cargo run --release --package papyrus_node --bin papyrus_node -- --version +---- + +=== Local node configuration + +The configuration is stored in one or more configuration files in `.json` format. + +The default Papyrus configuration file, link:https://github.com/starkware-libs/papyrus/blob/main/config/default_config.json[`default_config.json`], includes descriptions of all available parameters. + +// , including pointers to common values and #is_none flags for optional parameters. + +=== Customizing your configuration + +You can override the default configuration in the following ways: + +* Refer to one or more custom configuration files, using the same format as the default configuration file, `default_config.json`. For example, see any of the preset configuration files in this repository at `/config/presets/`. You can use configuration files when running a local node only, not a Docker image. +* Include configuration options in the command line when you run Papyrus. +* Set environment variables in the command line when you run Papyrus. + +==== Configuration files (local node only) + +The following rules apply: + +* You do not need to specify the default configuration file. +* There is no limit on the number of custom configuration files you use. +* If the same configuration parameter appears in multiple configuration files, the last file in the list determines the value. + +You can create separate configuration files to override specific configuration parameters. + +To create a custom configuration file, create a `.json` file using the same format as the default configuration file. + +To specify custom configuration files, include the `--config_file` command-line option when you run the full node locally, as follows: + +[source,bash,subs="verbatim,quotes"] +---- +cargo run --release --package papyrus_node --bin papyrus_node -- --base_layer.node_url --config-file +---- + +For example, preset `.json` files for several Starknet networks are located in this repository at https://github.com/starkware-libs/papyrus/blob/main/config/presets[`/config/presets`]. To use Sepolia testnet, you need to override the default values by using the file `/config/presets/sepolia_testnet.json`, as follows: + +[source,bash,subs="verbatim,quotes"] +---- +cargo run --release --package papyrus_node --bin papyrus_node -- --base_layer.node_url --config-file /config/presets/sepolia_testnet.json +---- + +==== Configuration via the command-line (local node and Docker image) + +You can specify configuration parameters as command-line options. To see all available configuration parameters, enter the following command: + +[source,bash] +---- +cargo run --release --package papyrus_node --bin papyrus_node -- --help +---- + +For example, to use Sepolia testnet, run the following command: + +[source,base,subs="verbatim,quotes"] +---- +cargo run --release --package papyrus_node --bin papyrus_node -- --base_layer.node_url \ +--chain_id SN_SEPOLIA \ +--starknet_url https://alpha-sepolia.starknet.io/ \ +--base_layer.starknet_contract_address 0xe2bb56ee936fd6433dc0f6e7e3b8365c906aa057 +---- + +For more information, see the papyrus-config https://github.com/starkware-libs/papyrus/blob/main/crates/papyrus_config/README.md[README]. + +=== Running Papyrus with Docker + +[discrete] +==== Prerequisites + +* https://docs.docker.com/get-docker/[Docker] should be installed. + +[discrete] +==== Procedure + +. Make a local directory to use for the container’s data. You only need to complete this step the first time you run Papyrus. ++ +[source,bash] +---- +mkdir +---- +. Run a Papyrus node with the default configuration. You must explicitly give the container write access to the `` directory by adding `--user "$(id -u):$(id -g)"` to the `docker run` command. ++ +Enter the following command: ++ +[source,bash] +---- +docker run --rm --name papyrus\ + -p 8080-8081:8080-8081 \ + -v /:/app/data \ + ghcr.io/starkware-libs/papyrus:dev \ + --base_layer.node_url \ + --user "$(id -u):$(id -g)" +---- ++ +[NOTE] +==== +You must include the `dev`, tag which tracks the development branch and contains the most up-to-date code. When an official release is available, you can use the `latest` tag for the latest release. +==== + +==== Upgrading the Docker container + +Currently, there is no automatic upgrade mechanism. Make sure to periodically pull the latest image and re-run the node. + +==== Docker container memory usage + +The Papyrus node uses all available RAM in order to cache the storage. + +If no other applications are running on your machine, this is the recommended configuration. + +Otherwise, you can limit the node's memory usage by adding the `--memory` flag to run the node in a container with limited memory. Be aware that limiting the memory usage might make the node less efficient, as doing so decreases storage caching. + +For example, to limit memory usage to 1GB, run the container with the following command: + +[source,bash] +---- +docker run --rm --name papyrus\ + -p 8080-8081:8080-8081 \ + -v /:/app/data \ + --memory 1g + ghcr.io/starkware-libs/papyrus:dev \ + --base_layer.node_url \ + --user "$(id -u):$(id -g)" +---- + +For more information, see https://docs.docker.com/config/containers/resource_constraints/#limit-a-containers-access-to-memory[Limit a container's access to memory] in the Docker documentation. + +== Sending API requests to the node + +When sending API requests, send them to the path `/rpc/`. + +Where `` is one of the following strings: + +* `v0_6` +* `v0_7` + +See the API specification at the https://github.com/starkware-libs/starknet-specs/[Starknet specifications repository] on Github. You can send API requests using the following command: + +[source,bash] +---- +curl --location '/rpc/' --header 'Content-Type: application/json'\ + --data '{"jsonrpc":"2.0","id":0,"method":"", "params": ""}' +---- + +For example, to send a request calling the `starknet_getBlockTransactionCount` method, on block number 100000, using the 0.4.0 version of the API where `` is `localhost:8080`, use the following command: + +[source,bash] +---- +curl --location 'localhost:8080/rpc/v0_7_0' --header 'Content-Type: application/json'\ + --data '{"jsonrpc":"2.0","id":0,"method":"starknet_getBlockTransactionCount", "params": [{"block_number": 100000}] }' +---- + +== JSON RPC API endpoints + +[cols=",,",] +|=== +|Endpoint |V0.6 |V0.7 + +|`starknet_addDeclareTransaction` |image:https://lh7-us.googleusercontent.com/g1om8QyIrLsSpgSiQ32w-Uk4ICU03_JeFYNwz8N9BfTviIMCN0DwKGGP_bDpX7pv_StNK9yWMQ39lZdNHn1o7xzcrBu1s0WHLAaBD2-nPqhMDGf2l9K6c67oIRV0kmIAQk580wcKhRSGpbj9qF1SVoQ[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/g1om8QyIrLsSpgSiQ32w-Uk4ICU03_JeFYNwz8N9BfTviIMCN0DwKGGP_bDpX7pv_StNK9yWMQ39lZdNHn1o7xzcrBu1s0WHLAaBD2-nPqhMDGf2l9K6c67oIRV0kmIAQk580wcKhRSGpbj9qF1SVoQ[image,width=15,height=14] +|`starknet_addDeployAccountTransaction` |image:https://lh7-us.googleusercontent.com/B8OBZj3cblLUKbV6nRAmqPjzo86hmhw5XFBxYI8Xj1ZOpY6YoA3l-jiD2INst0aVVu7vsw3XBooNWfy-KulRi2ugDDG2XZpllKizcWDOqCC5uObph-RZWe4JGXbGu110oYtOoKYnRMtMOrl6I3Wz47s[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/g1om8QyIrLsSpgSiQ32w-Uk4ICU03_JeFYNwz8N9BfTviIMCN0DwKGGP_bDpX7pv_StNK9yWMQ39lZdNHn1o7xzcrBu1s0WHLAaBD2-nPqhMDGf2l9K6c67oIRV0kmIAQk580wcKhRSGpbj9qF1SVoQ[image,width=15,height=14] +|`starknet_addInvokeTransaction` |image:https://lh7-us.googleusercontent.com/-nCpIHRsN1sdvLKLMnROTpIVe47WJVzvriYawbDkMq_vEU_9-4LMkDE50du4Kt3ldKsoo0dQ75vEiS6vdRCNZKZEMFfpMNL3kwEalFIr6xTuunGecGT5uixtyQPXKKV60fbgihWsM8UWJ9o6U214XyQ[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/-nCpIHRsN1sdvLKLMnROTpIVe47WJVzvriYawbDkMq_vEU_9-4LMkDE50du4Kt3ldKsoo0dQ75vEiS6vdRCNZKZEMFfpMNL3kwEalFIr6xTuunGecGT5uixtyQPXKKV60fbgihWsM8UWJ9o6U214XyQ[image,width=15,height=14] +|`starknet_blockHashAndNumber` |image:https://lh7-us.googleusercontent.com/EoO9RVXThPQiY_jembL_X79RNAbVBKS8uPFm3B6825BtCaH8OGjUtQoaLHXFsNWPAgDL3LW3qqPzCY8PBpx4FYxP2CeEA1-d5xR1zFnC4l4xEdWX3iyvLDANfD4jrpixnlWJJnLCINUYf_aOOx4rKi8[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/EoO9RVXThPQiY_jembL_X79RNAbVBKS8uPFm3B6825BtCaH8OGjUtQoaLHXFsNWPAgDL3LW3qqPzCY8PBpx4FYxP2CeEA1-d5xR1zFnC4l4xEdWX3iyvLDANfD4jrpixnlWJJnLCINUYf_aOOx4rKi8[image,width=15,height=14] +|`starknet_blockNumber` |image:https://lh7-us.googleusercontent.com/lRvXpP6e55IY8f_ABJgiWIl7KXw8tSmscatVsdr-mJmUjYdb1EnPTRCL6Nzf9Z3B2HKJRAYALr1Ky3sT94UaTdDeOOBoU2S78hx7XssJTx1tfmsYFjy1X4eugRr7UkewcL5cEkvlM0wBaIweobOzqwM[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/lRvXpP6e55IY8f_ABJgiWIl7KXw8tSmscatVsdr-mJmUjYdb1EnPTRCL6Nzf9Z3B2HKJRAYALr1Ky3sT94UaTdDeOOBoU2S78hx7XssJTx1tfmsYFjy1X4eugRr7UkewcL5cEkvlM0wBaIweobOzqwM[image,width=15,height=14] +|`starknet_call` |image:https://lh7-us.googleusercontent.com/AMJELrIrqfmtu1peFMSAp_8fwbEq0ii2oQ8WmCQCsashQtXBXzjB_xX0_ULCAkub-pyuXhgzESbuFo4MBp_TAL7jOdls16wT5iPvAY66z64dC41eY2RsgpfU75W9FbSaoWW02OgKwR74mb9w0oOyhfI[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/AMJELrIrqfmtu1peFMSAp_8fwbEq0ii2oQ8WmCQCsashQtXBXzjB_xX0_ULCAkub-pyuXhgzESbuFo4MBp_TAL7jOdls16wT5iPvAY66z64dC41eY2RsgpfU75W9FbSaoWW02OgKwR74mb9w0oOyhfI[image,width=15,height=14] +|`starknet_chainId` |image:https://lh7-us.googleusercontent.com/XAAffcKlc1YqokxRhj5IP9omLNCXVlZu__OeF1sMpD2Am4FHcqF6kZgxw3nd7VAl5dtoRAdqpFqZl49VID6FPZF5dYwYUxGALu4cFE5IhlErvEwvbygrLBmbS3LlCeoAXVc7tznIiBh3qIEDj38cMOU[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/XAAffcKlc1YqokxRhj5IP9omLNCXVlZu__OeF1sMpD2Am4FHcqF6kZgxw3nd7VAl5dtoRAdqpFqZl49VID6FPZF5dYwYUxGALu4cFE5IhlErvEwvbygrLBmbS3LlCeoAXVc7tznIiBh3qIEDj38cMOU[image,width=15,height=14] +|`starknet_estimateFee` |image:https://lh7-us.googleusercontent.com/M0LxIZ_Hc3i586qUusRF1ajKBJy7pfGkFjyXPoJJjkqo3ZuDQSoeg5Xeq2hZmEf8i3cQIryS-QutIYh91yrX096YMKFhtXLpUxNha1oMAlXqDdYZsWYAsIaQr413Ckwzt3xdS4XqG7wpFCMwNLHsyC0[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/M0LxIZ_Hc3i586qUusRF1ajKBJy7pfGkFjyXPoJJjkqo3ZuDQSoeg5Xeq2hZmEf8i3cQIryS-QutIYh91yrX096YMKFhtXLpUxNha1oMAlXqDdYZsWYAsIaQr413Ckwzt3xdS4XqG7wpFCMwNLHsyC0[image,width=15,height=14] +|`starknet_estimateMessageFee` |image:https://lh7-us.googleusercontent.com/M0LxIZ_Hc3i586qUusRF1ajKBJy7pfGkFjyXPoJJjkqo3ZuDQSoeg5Xeq2hZmEf8i3cQIryS-QutIYh91yrX096YMKFhtXLpUxNha1oMAlXqDdYZsWYAsIaQr413Ckwzt3xdS4XqG7wpFCMwNLHsyC0[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/M0LxIZ_Hc3i586qUusRF1ajKBJy7pfGkFjyXPoJJjkqo3ZuDQSoeg5Xeq2hZmEf8i3cQIryS-QutIYh91yrX096YMKFhtXLpUxNha1oMAlXqDdYZsWYAsIaQr413Ckwzt3xdS4XqG7wpFCMwNLHsyC0[image,width=15,height=14] +|`starknet_getBlockTransactionCount` |image:https://lh7-us.googleusercontent.com/Il18PreRk3nlngA_130hPf-R8hzEAYpKAMkGOHJ3n1cH85L_0xa3YMrBMW8YisJmOfypRz_JKxwAYAr4ecg2SxnWfwO4QU7lNdj9qvna8y3zVf2tdr1p2YobgOWMgjzOfIqk3lUoxm4HkcXM6-5Ypeo[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/Il18PreRk3nlngA_130hPf-R8hzEAYpKAMkGOHJ3n1cH85L_0xa3YMrBMW8YisJmOfypRz_JKxwAYAr4ecg2SxnWfwO4QU7lNdj9qvna8y3zVf2tdr1p2YobgOWMgjzOfIqk3lUoxm4HkcXM6-5Ypeo[image,width=15,height=14] +|`starknet_getBlockWithTxHashes` |image:https://lh7-us.googleusercontent.com/sMIa3FRJlsY44FxGMxPeg_Q2L_ZkLlT70YWQiUkmAx9MNgbroWfKecSbOB0Av8zFRGlJgXgq7aqUO2vlbeRZPVCnTSgvBq4VJ5Q5qY6wctp0v31YTtfR0swzUQG9cywGaSwRGK2pTGZ2OYgEpnyert0[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/sMIa3FRJlsY44FxGMxPeg_Q2L_ZkLlT70YWQiUkmAx9MNgbroWfKecSbOB0Av8zFRGlJgXgq7aqUO2vlbeRZPVCnTSgvBq4VJ5Q5qY6wctp0v31YTtfR0swzUQG9cywGaSwRGK2pTGZ2OYgEpnyert0[image,width=15,height=14] +|`starknet_getBlockWithTxs` |image:https://lh7-us.googleusercontent.com/CdJSJ7lBUFFxh9YRlqjytjaYIU377ptXJbaR5y2nPkOPDrzrMglNRFa0tx7D9QqsuKL6kg0H7QhunQ5jqCfneivgsUE0cGXgpFOcGUiEc3gMCnks_nDCHArqROTXCZNQ1jP1AL3pVXkBWAw9fWhP8pY[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/CdJSJ7lBUFFxh9YRlqjytjaYIU377ptXJbaR5y2nPkOPDrzrMglNRFa0tx7D9QqsuKL6kg0H7QhunQ5jqCfneivgsUE0cGXgpFOcGUiEc3gMCnks_nDCHArqROTXCZNQ1jP1AL3pVXkBWAw9fWhP8pY[image,width=15,height=14] +|`starknet_getBlockWithReceipts` |image:https://lh7-us.googleusercontent.com/jaJgkNwvqZFGCyP5w-CcCbZlblXBnBonzRKxk9Y4WYPe6s205sHC3zGn-Ki_9ZvSNwxO-af1ZmihUGvlPfdGwho2GYcbPWfj93WtbzoRnESV1Oijz6JuB_c95O6YDtdcnnqPkOv0CKGYqMovs9SciRA[image,width=15,height=15] +|image:https://lh7-us.googleusercontent.com/CdJSJ7lBUFFxh9YRlqjytjaYIU377ptXJbaR5y2nPkOPDrzrMglNRFa0tx7D9QqsuKL6kg0H7QhunQ5jqCfneivgsUE0cGXgpFOcGUiEc3gMCnks_nDCHArqROTXCZNQ1jP1AL3pVXkBWAw9fWhP8pY[image,width=15,height=14] +|`starknet_getClass` |image:https://lh7-us.googleusercontent.com/b2BV-hTooxxqooQv3OHOPsuLNnUP6ct1cD42QCjcEdTdlEb6AcODsbwV-UkQeNOcD4K4vf8_H9QsbWg8K2Ruofqn5mh6Bhd8N7X2Un_xgE1DUM1AcMUn9ZYtq8sNCvxcU6Dpix6_4qTvdSb-4RgogM4[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/b2BV-hTooxxqooQv3OHOPsuLNnUP6ct1cD42QCjcEdTdlEb6AcODsbwV-UkQeNOcD4K4vf8_H9QsbWg8K2Ruofqn5mh6Bhd8N7X2Un_xgE1DUM1AcMUn9ZYtq8sNCvxcU6Dpix6_4qTvdSb-4RgogM4[image,width=15,height=14] +|`starknet_getClassAt` |image:https://lh7-us.googleusercontent.com/VhcZNCbRWBMAanu1b8XSIV9pFPYS2ngcfuZs2x-83kWGV9FJJnZ7rfaw_9BV0_OPFsikPRsVnftW0r6m3KGKsGOwGfWksqPmernCaZMmXNaGAX2PeA0tfe_CcLjQLHmutXoTZDpWGKr0vue478bcs9g[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/VhcZNCbRWBMAanu1b8XSIV9pFPYS2ngcfuZs2x-83kWGV9FJJnZ7rfaw_9BV0_OPFsikPRsVnftW0r6m3KGKsGOwGfWksqPmernCaZMmXNaGAX2PeA0tfe_CcLjQLHmutXoTZDpWGKr0vue478bcs9g[image,width=15,height=14] +|`starknet_getClassHashAt` |image:https://lh7-us.googleusercontent.com/LMl0fT2HvMIWHgrKlQOeyqJHjUtj3Y4Z6OuljCngyOYVd8UPvqiUOiy4cMyWLVdAXlZo0mB3r_H4NKr7jmjA5zxvjZraaZhqMEM9IrGpbQhI-xhqe2MzmneK9zsqNLFNSJYS6lrWTU68vUoLBzEDB8k[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/LMl0fT2HvMIWHgrKlQOeyqJHjUtj3Y4Z6OuljCngyOYVd8UPvqiUOiy4cMyWLVdAXlZo0mB3r_H4NKr7jmjA5zxvjZraaZhqMEM9IrGpbQhI-xhqe2MzmneK9zsqNLFNSJYS6lrWTU68vUoLBzEDB8k[image,width=15,height=14] +|`starknet_getEvents` |image:https://lh7-us.googleusercontent.com/IGyszI0PQbJdMxcngAs8N9MDo3MjxFHPbFfM5IWmwRbU6isYXZRY7JrtcPXnWSLPqsKweU7f96YcEDHfTSu6leRyyhd3g4rPAmxwArokqrtkUkQraMw3IRi02Uja7aeH45teyrRaj-2VWmqQUl7V3Yw[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/IGyszI0PQbJdMxcngAs8N9MDo3MjxFHPbFfM5IWmwRbU6isYXZRY7JrtcPXnWSLPqsKweU7f96YcEDHfTSu6leRyyhd3g4rPAmxwArokqrtkUkQraMw3IRi02Uja7aeH45teyrRaj-2VWmqQUl7V3Yw[image,width=15,height=14] +|`starknet_getNonce` |image:https://lh7-us.googleusercontent.com/ru-XjFrOJ00S5N_X3fqbX-sTb9WzrLJux42cX4MSi4fbYIK7g5mRz99MdkvwKoq4aJyxqv-Ytn-SS_HK-c7YVv5sJe6dF7TBuTW28meUeB91Ulmbm693D1GCIAG515y7mSeQuincRv-VDzCafl1FqZk[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/ru-XjFrOJ00S5N_X3fqbX-sTb9WzrLJux42cX4MSi4fbYIK7g5mRz99MdkvwKoq4aJyxqv-Ytn-SS_HK-c7YVv5sJe6dF7TBuTW28meUeB91Ulmbm693D1GCIAG515y7mSeQuincRv-VDzCafl1FqZk[image,width=15,height=14] +|`starknet_getStateUpdate` |image:https://lh7-us.googleusercontent.com/z2Iinm_IgpvefYJTFfrKxgXBxVZ9PwSxPRdUfTeFCfY_MRewFBMIxCTaz_Jov38VlNA1tEsqIvAgqY_OBlKvNhG6JIaFMli_bxarAXPh8Ro2wu0DBdl9_hafLueUmB3gaFVi_1bY7XqIy3LOGIHgdpY[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/z2Iinm_IgpvefYJTFfrKxgXBxVZ9PwSxPRdUfTeFCfY_MRewFBMIxCTaz_Jov38VlNA1tEsqIvAgqY_OBlKvNhG6JIaFMli_bxarAXPh8Ro2wu0DBdl9_hafLueUmB3gaFVi_1bY7XqIy3LOGIHgdpY[image,width=15,height=14] +|`starknet_getStorageAt` |image:https://lh7-us.googleusercontent.com/Q0n2aBJM-uIWrG1kosFu2MhQKg4cksWcvDi9KQp5L-utvsMZAud0LqQUdlHEnI7pCsBFLYEtBNmLM9VhqxhWlhAa_24M6RdLX5qex5o34w2jc4ARL55DFBDYIfGBhSUasx_NyAWJft_4HOajJnkWeGA[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/Q0n2aBJM-uIWrG1kosFu2MhQKg4cksWcvDi9KQp5L-utvsMZAud0LqQUdlHEnI7pCsBFLYEtBNmLM9VhqxhWlhAa_24M6RdLX5qex5o34w2jc4ARL55DFBDYIfGBhSUasx_NyAWJft_4HOajJnkWeGA[image,width=15,height=14] +|`starknet_getTransactionByBlockIdAndIndex` |image:https://lh7-us.googleusercontent.com/2nPt3GGNY9upWAjl55qAweT8bAHwNvgnMzbuV3e_1aM0i3AFGEOjBJeupMC5Ik2ogBXJKipLMyrJ9qceWy6k-b-odz5g30Z1WvyO5zdCPFu5tre3qvoWqh0Ye1METBLvzztPki1eQHZXwr-bn2yrJsQ[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/2nPt3GGNY9upWAjl55qAweT8bAHwNvgnMzbuV3e_1aM0i3AFGEOjBJeupMC5Ik2ogBXJKipLMyrJ9qceWy6k-b-odz5g30Z1WvyO5zdCPFu5tre3qvoWqh0Ye1METBLvzztPki1eQHZXwr-bn2yrJsQ[image,width=15,height=14] +|`starknet_getTransactionByHash` |image:https://lh7-us.googleusercontent.com/k9qvKyttKSe8_AW4EvmGfCPnQi4R9g514n9uEbsKs5ZMXI7fkrCR5jMOk4KCo7pEn0JyCtJDRRGOuJf-OL5cP9-7P9rU2mN9R6wU90-js5YcDAwyrrZ4TD_i9h-TXkdFt5D40V1hgAwA1czHRgf_YVo[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/k9qvKyttKSe8_AW4EvmGfCPnQi4R9g514n9uEbsKs5ZMXI7fkrCR5jMOk4KCo7pEn0JyCtJDRRGOuJf-OL5cP9-7P9rU2mN9R6wU90-js5YcDAwyrrZ4TD_i9h-TXkdFt5D40V1hgAwA1czHRgf_YVo[image,width=15,height=14] +|`starknet_getTransactionReceipt` |image:https://lh7-us.googleusercontent.com/031uVAYby7m12Je0ZuWbebnjvKzCK0lII05KItL6cOmZH_xUFz_yGV6E4xvjjt1aDD8y-6skH2mbSkfYEZQx64CzJRpd7G5uSoEAhsG2P3r51HqYXX-G7vafHmEPgD-O4mfp9diQSvEOiieEFPAW0yc[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/031uVAYby7m12Je0ZuWbebnjvKzCK0lII05KItL6cOmZH_xUFz_yGV6E4xvjjt1aDD8y-6skH2mbSkfYEZQx64CzJRpd7G5uSoEAhsG2P3r51HqYXX-G7vafHmEPgD-O4mfp9diQSvEOiieEFPAW0yc[image,width=15,height=14] +|`starknet_getTransactionStatus` |image:https://lh7-us.googleusercontent.com/w8n4EgH6kPlyU55MMLJYjm2v3bOD_5MfsYJnpcvXqkM4Zsj0Eu2JekM9ZwztTydhqfUW_gtYGvSg2P5NF7Zib5heFonOYRhya18tdGQebkUXCQKxoSgFoicqpdHNgyU9Cf-Iuak1nSibbJWKN6H_Bbg[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/w8n4EgH6kPlyU55MMLJYjm2v3bOD_5MfsYJnpcvXqkM4Zsj0Eu2JekM9ZwztTydhqfUW_gtYGvSg2P5NF7Zib5heFonOYRhya18tdGQebkUXCQKxoSgFoicqpdHNgyU9Cf-Iuak1nSibbJWKN6H_Bbg[image,width=15,height=14] +|`starknet_simulateTransactions` |image:https://lh7-us.googleusercontent.com/w8n4EgH6kPlyU55MMLJYjm2v3bOD_5MfsYJnpcvXqkM4Zsj0Eu2JekM9ZwztTydhqfUW_gtYGvSg2P5NF7Zib5heFonOYRhya18tdGQebkUXCQKxoSgFoicqpdHNgyU9Cf-Iuak1nSibbJWKN6H_Bbg[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/w8n4EgH6kPlyU55MMLJYjm2v3bOD_5MfsYJnpcvXqkM4Zsj0Eu2JekM9ZwztTydhqfUW_gtYGvSg2P5NF7Zib5heFonOYRhya18tdGQebkUXCQKxoSgFoicqpdHNgyU9Cf-Iuak1nSibbJWKN6H_Bbg[image,width=15,height=14] +|`starknet_specVersion` |image:https://lh7-us.googleusercontent.com/w8n4EgH6kPlyU55MMLJYjm2v3bOD_5MfsYJnpcvXqkM4Zsj0Eu2JekM9ZwztTydhqfUW_gtYGvSg2P5NF7Zib5heFonOYRhya18tdGQebkUXCQKxoSgFoicqpdHNgyU9Cf-Iuak1nSibbJWKN6H_Bbg[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/w8n4EgH6kPlyU55MMLJYjm2v3bOD_5MfsYJnpcvXqkM4Zsj0Eu2JekM9ZwztTydhqfUW_gtYGvSg2P5NF7Zib5heFonOYRhya18tdGQebkUXCQKxoSgFoicqpdHNgyU9Cf-Iuak1nSibbJWKN6H_Bbg[image,width=15,height=14] +|`starknet_syncing` |image:https://lh7-us.googleusercontent.com/w8n4EgH6kPlyU55MMLJYjm2v3bOD_5MfsYJnpcvXqkM4Zsj0Eu2JekM9ZwztTydhqfUW_gtYGvSg2P5NF7Zib5heFonOYRhya18tdGQebkUXCQKxoSgFoicqpdHNgyU9Cf-Iuak1nSibbJWKN6H_Bbg[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/w8n4EgH6kPlyU55MMLJYjm2v3bOD_5MfsYJnpcvXqkM4Zsj0Eu2JekM9ZwztTydhqfUW_gtYGvSg2P5NF7Zib5heFonOYRhya18tdGQebkUXCQKxoSgFoicqpdHNgyU9Cf-Iuak1nSibbJWKN6H_Bbg[image,width=15,height=14] +|`starknet_traceBlockTransactions` |image:https://lh7-us.googleusercontent.com/w8n4EgH6kPlyU55MMLJYjm2v3bOD_5MfsYJnpcvXqkM4Zsj0Eu2JekM9ZwztTydhqfUW_gtYGvSg2P5NF7Zib5heFonOYRhya18tdGQebkUXCQKxoSgFoicqpdHNgyU9Cf-Iuak1nSibbJWKN6H_Bbg[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/w8n4EgH6kPlyU55MMLJYjm2v3bOD_5MfsYJnpcvXqkM4Zsj0Eu2JekM9ZwztTydhqfUW_gtYGvSg2P5NF7Zib5heFonOYRhya18tdGQebkUXCQKxoSgFoicqpdHNgyU9Cf-Iuak1nSibbJWKN6H_Bbg[image,width=15,height=14] +|`starknet_traceTransaction` |image:https://lh7-us.googleusercontent.com/w8n4EgH6kPlyU55MMLJYjm2v3bOD_5MfsYJnpcvXqkM4Zsj0Eu2JekM9ZwztTydhqfUW_gtYGvSg2P5NF7Zib5heFonOYRhya18tdGQebkUXCQKxoSgFoicqpdHNgyU9Cf-Iuak1nSibbJWKN6H_Bbg[image,width=15,height=14] +|image:https://lh7-us.googleusercontent.com/w8n4EgH6kPlyU55MMLJYjm2v3bOD_5MfsYJnpcvXqkM4Zsj0Eu2JekM9ZwztTydhqfUW_gtYGvSg2P5NF7Zib5heFonOYRhya18tdGQebkUXCQKxoSgFoicqpdHNgyU9Cf-Iuak1nSibbJWKN6H_Bbg[image,width=15,height=14] +|=== + +== Papyrus monitoring API + +Endpoints for retrieving monitoring information for the running node are available at the path `monitoring`. + +You can send API requests using the following `curl` command: + +[source,bash] +---- +curl -X GET https:///monitoring/ +---- + +For example, when the node monitoring gateway is exposed at `localhost:8081`, send a request to view the liveliness endpoint using the following `curl` command: + +[source,bash] +---- +curl -X GET http://localhost:8081/monitoring/alive +---- + +=== Papyrus monitoring API endpoints + +[horizontal,labelwidth="15"] +`alive`:: +Liveliness endpoint. Returns status code `200` if the node is alive. +`nodeVersion`:: +Gets the node version. +`nodeConfig`:: +Gets the current node’s configuration. +`dbTablesStats`:: +Gets statistics for each table in the libmdbx database. For more information, see https://docs.rs/libmdbx/latest/libmdbx/struct.Stat.html[libmdbx::Stat] in the libmdbx documentation. +`metrics`:: +Gets metrics of the node’s activity. For more information, see xref:#collecting-metrics[]. +`peer_id`:: +Gets the P2P peer ID of the node (if the network component is inactive returns an empty string). + +== Collecting metrics + +Papyrus can collect the following types of metrics: + +* JSON-RPC metrics +* synchronization metrics +* process metrics +* p2p network metrics + +By default, the node does not collect metrics and the metric path returns the following error code: + +[source, bash] +---- +405 - Method Not Allowed. +---- + +*To collect metrics*, set the configuration value `collect_metrics` in the default configuration file to `true`. + +== Viewing metrics + +Papyrus collects the following types of metrics: + +* `rpc_incoming_requests` counter +* `rpc_failed_requests` counter +* `rpc_request_latency_seconds` histogram +* `process` #Are these process metrics?# +* `papyrus` #Are these sync metrics?# + +You can see information for each metric by entering the following command: + +[source,bash] +---- +\{method="", version=""} +---- + +Where: + +[horizontal,labelwidth="15"] +``:: is the JSON-RPC metric. +``:: is the name of the JSON RPC API method endpoint, not including `starknet_`. +``:: is the JSON-RPC API version. + +For example, to get all the incoming requests to the method `starknet_chainId` in JSON-RPC version 0.4, use `method="chainId"` in the following command: + +[source,bash] +---- +curl -X GET https://localhost:8081/monitoring/metrics/rpc_incoming_requests\{method="chainId", version="V0_4"} +---- + +[TIP] +==== +To get the number of requests with an illegal method name, such as those resulting from a typo, like `starknet_chainIddd`, use `illegal_method` for ``. +==== + +== Deployment + +See a helm chart for deploying the node to a Kubernetes cluster in the https://github.com/starkware-libs/papyrus/blob/main/deployments/helm/README.md[deployments folder]. + +== Roadmap + +See the https://github.com/starkware-libs/papyrus/issues[open issues] for proposed features and known issues: + +* https://github.com/starkware-libs/papyrus/issues?q=label%3Aenhancement+is%3Aopen+sort%3Areactions-%2B1-desc[Top Feature Requests] (Add your votes using the 👍 reaction) +* https://github.com/starkware-libs/papyrus/issues?q=is%3Aissue+is%3Aopen+label%3Abug+sort%3Areactions-%2B1-desc[Top Bugs] (Add your votes using the 👍 reaction) +* https://github.com/starkware-libs/papyrus/issues?q=is%3Aopen+is%3Aissue+label%3Abug[Newest Bugs] + +== Getting help + +Reach out to the maintainer at any of the following: + +* https://github.com/starkware-libs/papyrus/discussions[GitHub Discussions] +* Contact options listed on https://github.com/starkware-libs[this GitHub profile] + +== Help make Papyrus better! + +If you want to say thank you or support the active development of Papyrus: + +* Add a https://github.com/starkware-libs/papyrus[GitHub Star] to the project. +* Tweet about Papyrus. +* Write interesting articles about the project on link:https://dev.to/[Dev.to], link:https://medium.com/[Medium], or your personal blog. + +== Contributing + +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 benefit everybody else and are greatly appreciated. + +Please read link:https://github.com/starkware-libs/papyrus/blob/main/docs/CONTRIBUTING.md[our contribution guidelines], and thank you for being involved! + +== Authors and contributors + +For a full list of all authors and contributors, see link:https://github.com/starkware-libs/papyrus/contributors[the contributors page]. + +== Security + +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 link:https://github.com/starkware-libs/papyrus/blob/main/docs/SECURITY.md[security documentation]. + +== License + +This project is licensed under the Apache 2.0 license. + +For more information, see link:https://github.com/starkware-libs/papyrus/blob/main/LICENSE[LICENSE]. diff --git a/docs/starknet_api/README.md b/docs/starknet_api/README.md new file mode 100644 index 0000000000..3ad23a62d5 --- /dev/null +++ b/docs/starknet_api/README.md @@ -0,0 +1,10 @@ +# starknet-api + +## About + +`starknet-api` contains general type definitions in Rust for starknet. + +## License + +This project is licensed under the **Apache 2.0 license**. +See [LICENSE](LICENSE) for more information. \ No newline at end of file