Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update rpc doc #462

Merged
merged 3 commits into from
Sep 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions docs/bnb-smart-chain/developers/json-rpc-api.md

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
---
title: Finality API - BSC Develop
title: Bsc API List- BSC Develop
---

## Finality API
Finality is a crucial aspect of blockchain security, ensuring that once a block is confirmed, it cannot be reversed or altered. This provides users with the confidence to act on the information in the block without delay.

## Probabilistic Finality and Economic Finality
### Probabilistic Finality and Economic Finality

In probabilistic finality, the deeper a block is buried in the chain, the lower the likelihood of it being reverted. The more blocks follow a particular block, the more likely the chain containing that block will be the longest. **Typically, BSC users should wait for at least 11 or 15 different validators to seal a block. If validators are allowed to produce multiple consecutive blocks, the number of blocks required to achieve probabilistic finality is approximately 11\*n or 15\*n, where "n" is the number of consecutive blocks produced.**

Economic Finality refers to the high cost associated with reverting a block. In proof-of-stake systems that use a slashing mechanism (such as Casper FFG, Tendermint, or BSC Fast Finality), if validators violate the voting rules, part or all of their stake can be forfeited. This economic penalty makes it extremely expensive to undermine finality. Generally, block n achieves economic finality by block n+2, meaning that BSC Fast Finality reduces the confirmation time to two blocks in most cases. This improves the user experience by making transaction confirmation faster and more reliable.

## Economic Finality API
### Economic Finality API

### [eth_getHeaderByNumber](<https://www.quicknode.com/docs/kaia/eth_getHeaderByNumber>) as in the Ethereum client.
**Parameters**

QUANTITY|TAG
**BlockNumber** QUANTITY|TAG

* HEX String - an integer block number
* String "earliest" for the earliest/genesis block
Expand All @@ -26,15 +27,15 @@ QUANTITY|TAG
### [eth_getBlockByNumber](<https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber>) as in the Ethereum client.
**Parameters**

QUANTITY|TAG
**BlockNumber** QUANTITY|TAG

* HEX String - an integer block number
* String "earliest" for the earliest/genesis block
* String "latest" - for the latest mined block
* String "safe" - for the latest justified head block
* String "**finalized**" - for the latest finalized block

Boolean
**Full_transaction_flag** Boolean

- If true it returns the full transaction objects, if false only the hashes of the transactions.

Expand All @@ -57,7 +58,7 @@ This will return block hashes:
{"jsonrpc":"2.0","id":1,"result":["0x4b52061726b9f15905217699fd5dab8ff9bb704b3b16d27c34541cb15752a91f","0x2b984b80b25f0dddc92ba11290a3d250fc8a3ec6a09bd485c21dbbb8155d2f90"]}
```

## Combined Probabilistic Finality and Economic Finality API
### Combined Probabilistic Finality and Economic Finality API

These methods allow you to handle block finality using a straightforward API.

Expand All @@ -81,3 +82,90 @@ curl -X POST "http://localhost:8545/" -H "Content-Type: application/json" --dat

curl -X POST "http://localhost:8545/" -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getFinalizedBlock","params":[15, true],"id":1}'
```

## Blob API

### eth_getBlobSidecarByTxHash
**Parameters**

**Hash** String (REQUIRED)

* HEX String - the hash of the transaction

**full_blob_flag** Boolean (OPTIONAL)

* Default is true. If ture it returns the full blob info, if false only return first 32 bytes of blobs.

```
curl -X POST "http://localhost:8545/" -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlobSidecarByTxHash","params":["0x377d3615d2e76f4dcc0c9a1674d2f5487cba7644192e7a4a5af9fe5f08b60a63"],"id":1}'

curl -X POST "http://localhost:8545/" -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlobSidecarByTxHash","params":["0x377d3615d2e76f4dcc0c9a1674d2f5487cba7644192e7a4a5af9fe5f08b60a63", false],"id":1}'
```

### eth_getBlobSidecars
**Parameters**

**BlockNumber** QUANTITY|TAG

* HEX String - an integer block number
* HEX String - the hash of the block
* String "earliest" for the earliest/genesis block
* String "latest" - for the latest mined block
* String "safe" - for the latest justified head block
* String "finalized" - for the latest finalized block

**full_blob_flag** Boolean (OPTIONAL)

* Default is true. If ture it returns the full blob info, if false only return first 32 bytes of blobs.

```
curl -X POST "http://localhost:8545/" -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlobSidecars","params":["latest"],"id":1}'

curl -X POST "http://localhost:8545/" -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlobSidecarByTxHash","params":["0xc5043f", false],"id":1}'
```



## Others

### eth_health

* a health check endpoint to detect whether the RPC func of a node is ok. Return true is ok, false is no health.


```
curl -X POST "http://localhost:8545/" -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_health","params":[],"id":1}'
```

### eth_getTransactionsByBlockNumber

* get all the transactions for the given block number.

**Parameters**

**BlockNumber** QUANTITY|TAG

* HEX String - an integer block number
* String "earliest" for the earliest/genesis block
* String "latest" - for the latest mined block
* String "safe" - for the latest justified head block
* String "finalized" - for the latest finalized block

```
curl -X POST "http://localhost:8545/" -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionsByBlockNumber","params":["0x539492"],"id":1}'
```


### eth_getTransactionDataAndReceipt

* get the original transaction data and transaction receipt for the given transaction hash.

**Parameters**

**Hash** String (REQUIRED)

* HEX String - the hash of the transaction

```
curl -X POST "http://localhost:8545/" -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionDataAndReceipt","params":["0x516a2ab1506b020e7f49d0d0ddbc471065624d1a603087262cebf4ca114ff588"],"id":1}'
```
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: RPC - BSC Develop
title: JSON-RPC-Endpoint - BSC Develop
---


# JSON-RPC Endpoint
# JSON-RPC-Endpoint

JSON-RPC endpoints refers to the network location where a program could transfer its RPC requests to access server data. Once you connect a decentralized application to an RPC endpoint, you can access the functionalities of different operations, which could enable real-time usage of blockchain data. BNB Chain provides several RPC endpoints for connectinto both its Minent and Testnet. In this section, we list the JSON-RPC endpoints that can be used for connecting to BNB Smart Chain.

Expand Down Expand Up @@ -75,7 +75,26 @@ geth attach https://bsc-dataseed.bnbchain.org
geth attach https://bsc-testnet-dataseed.bnbchain.org
```

### JSON-RPC methods
## JSON-RPC API List

Please refer to this [wiki page](https://github.com/ethereum/wiki/wiki/JSON-RPC) or use Postman: <https://documenter.getpostman.com/view/4117254/ethereum-json-rpc/RVu7CT5J?version=latest>
BSC (BNB Smart Chain) is EVM-compatible and strives to be as compatible as possible with the Go-Ethereum API. However, BSC also has unique features, such as faster finality and the storage of blob data on the execution layer, which require their own specialized APIs.

### Geth(Go-Ethereum) API

BSC is nearly fully compatible with the Geth APIs. Any exceptions or incompatibilities are explicitly listed. If you're looking for detailed usage of a specific API, you will most likely find the answer in the following link:

[Geth JSON-RPC API documentation](https://geth.ethereum.org/docs/interacting-with-geth/rpc).

### Finality

Ethereum's PoS consensus protocol, known as "Gasper," is built on LMD-GHOST (a fork choice rule) and Casper FFG (a finality gadget). Similarly, BSC's consensus protocol, called "Parlia," is constructed on top of a difficulty-based fork choice mechanism with FFG, as described in [BEP-126](https://github.com/bnb-chain/BEPs/blob/master/BEPs/BEP126.md). To further enhance BSC's throughput, validators are allowed to produce multiple consecutive blocks, as explained in [BEP-341](https://github.com/bnb-chain/BEPs/blob/master/BEPs/BEP-341.md). These differences result in BSC having a unique finality process compared to Ethereum. For more details, please refer to the the following doc:

[BSC Finality API](bsc-api-list.md#finality-api).

### Blob

Bsc implement EIP-4844, which support Shard Blob Transactions, as described in [BEP-336](https://github.com/bnb-chain/BEPs/blob/master/BEPs/BEP-336.md). For more details, please refer to the the following doc: [BSC Blob API](bsc-api-list.md#blob-api).

### Other BSC API

Bsc implement some others apis, as described in: [BSC API](bsc-api-list.md#others).
4 changes: 2 additions & 2 deletions docs/bnb-smart-chain/developers/quick-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Since BSC is EVM-compatible, your existing Ethereum smart contract skills will s

Here are some resources to help you get connected to the BSC network:

- [Network Information and RPC Providers](./rpc.md)
- [Network Information and RPC Providers](json_rpc/json-rpc-endpoint.md)
- [Wallet Configuration](./wallet-configuration.md)

## Get Tokens
Expand All @@ -28,7 +28,7 @@ For the mainnet, you can withdraw tokens directly from a centralized exchange (C
## JSON-RPC API

Interacting with BSC requires sending requests to specific JSON-RPC API methods. BSC's APIs are compatible with Geth.
- [JSON-RPC API](./json-rpc-api.md)
- [JSON-RPC API](json_rpc/json-rpc-endpoint.md)

## Developer Tools
- Explorer
Expand Down
6 changes: 3 additions & 3 deletions docs/bnb-smart-chain/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ title: BNB Smart Chain
<div>Run a Node</div>
<p>Run a BSC node</p>
</a>
<a href="./validator/mev/">
<a href="./validator/mev/overview">
<div>MEV Builder</div>
<p>Become a builder and create blocks and offering them to the validator</p>
</a>
<a href="./developers/json-rpc-api">
<div>JSON-RPC API</div>
<a href="./developers/json_rpc/json-rpc-endpoint">
<div>JSON-RPC-Endpoint</div>
<p>Interacting with BSC requires sending requests to specific JSON-RPC API methods.</p>
</a>
</div>
4 changes: 3 additions & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,9 @@ nav:
- Developers:
- Quick Guide: ./bnb-smart-chain/developers/quick-guide.md
- Dev-Tools: https://www.bnbchain.org/en/dev-tools
- RPC: ./bnb-smart-chain/developers/rpc.md
- JSON-RPC:
- Json Rpc Endpoint: ./bnb-smart-chain/developers/json_rpc/json-rpc-endpoint.md
- Bsc Api list: ./bnb-smart-chain/developers/json_rpc/bsc-api-list.md
- Faucet: ./bnb-smart-chain/developers/faucet.md
- Node Operators:
- Node Best Practices: ./bnb-smart-chain/developers/node_operators/node_best_practices.md
Expand Down
Loading