Skip to content

Commit

Permalink
Monad network support (#1220)
Browse files Browse the repository at this point in the history
  • Loading branch information
droserasprout authored Feb 19, 2025
1 parent e1cf70e commit f7b2587
Show file tree
Hide file tree
Showing 52 changed files with 377 additions and 25 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,13 @@ Releases prior to 7.0 has been removed from this file to declutter search result
### Added

- cli: Rewritten interactive mode for `new` command.
- evm.blockvision: Added `evm.blockvision` datasource to fetch ABIs from Blockvision API.
- evm.sourcify: Added `evm.sourcify` datasource to fetch ABIs from Sourcify API.

### Fixed

- coinbase: Fixed crash when using coinbase datasource.
- evm.node: Fixed crash when block range goes out of bounds.

## [8.2.0] - 2025-02-10

Expand Down
22 changes: 12 additions & 10 deletions docs/1.getting-started/7.datasources.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,18 @@ Index datasources, ones that can be attached to a specific index, are prefixed w
| [evm.subsquid](../3.datasources/1.evm_subsquid.md) | ⟠ EVM-compatible | Subsquid Network API |
| [evm.node](../3.datasources/2.evm_node.md) | ⟠ EVM-compatible | Ethereum node |
| [evm.etherscan](../3.datasources/3.evm_etherscan.md) | ⟠ EVM-compatible | Provides ABIs for EVM contracts |
| [starknet.subsquid](../3.datasources/4.starknet_subsquid.md) | 🐺 Starknet | Subsquid Network API |
| [starknet.node](../3.datasources/5.starknet_node.md) | 🐺 Starknet | Starknet node |
| [substrate.node](../3.datasources/6.substrate_node.md) | 🔮 Substrate | Substrate node |
| [substrate.subscan](../3.datasources/7.substrate_subscan.md) | 🔮 Substrate | Provides pallet metadata for Substrate networks |
| [substrate.subsquid](../3.datasources/8.substrate_subsquid.md) | 🔮 Substrate | Subsquid Network API |
| [tezos.tzkt](../3.datasources/9.tezos_tzkt.md) | ꜩ Tezos | TzKT API |
| [tzip_metadata](../3.datasources/10.tzip_metadata.md) | ꜩ Tezos | TZIP-16 metadata |
| [coinbase](../3.datasources/11.coinbase.md) | any | Coinbase price feed |
| [ipfs](../3.datasources/12.ipfs.md) | any | IPFS gateway |
| [http](../3.datasources/13.http.md) | any | Generic HTTP API |
| [evm.blockvision](../3.datasources/4.evm_blockvision.md) | ⟠ EVM-compatible | Provides ABIs for EVM contracts |
| [evm.sourcify](../3.datasources/5.evm_sourcify.md) | ⟠ EVM-compatible | Provides ABIs for EVM contracts |
| [starknet.subsquid](../3.datasources/6.starknet_subsquid.md) | 🐺 Starknet | Subsquid Network API |
| [starknet.node](../3.datasources/7.starknet_node.md) | 🐺 Starknet | Starknet node |
| [substrate.node](../3.datasources/8.substrate_node.md) | 🔮 Substrate | Substrate node |
| [substrate.subscan](../3.datasources/9.substrate_subscan.md) | 🔮 Substrate | Provides pallet metadata for Substrate networks |
| [substrate.subsquid](../3.datasources/10.substrate_subsquid.md) | 🔮 Substrate | Subsquid Network API |
| [tezos.tzkt](../3.datasources/11.tezos_tzkt.md) | ꜩ Tezos | TzKT API |
| [tzip_metadata](../3.datasources/12.tzip_metadata.md) | ꜩ Tezos | TZIP-16 metadata |
| [coinbase](../3.datasources/13.coinbase.md) | any | Coinbase price feed |
| [ipfs](../3.datasources/14.ipfs.md) | any | IPFS gateway |
| [http](../3.datasources/15.http.md) | any | Generic HTTP API |

## Connection settings

Expand Down
10 changes: 5 additions & 5 deletions docs/10.supported-networks/31.mode.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ description: "Mode network support"

Explorer: [Blockscout](https://explorer.mode.network/)

| datasource | status | URLs |
| -----------------:|:------------- | ------------------------------ |
| **evm.subsquid** | 🤔 not tested | `https://v2.archive.subsquid.io/network/mode-mainnet` |
| **evm.etherscan** | 🤔 not tested | |
| **evm.node** | 🤔 not tested | `https://mode.drpc.org` <br> `wss://mode.drpc.org` |
| datasource | status | URLs |
| -----------------:|:------------- | ----------------------------------------------------- |
| **evm.subsquid** | 🤔 not tested | `https://v2.archive.subsquid.io/network/mode-mainnet` |
| **evm.etherscan** | 🤔 not tested | |
| **evm.node** | 🤔 not tested | `https://mode.drpc.org` <br> `wss://mode.drpc.org` |
23 changes: 23 additions & 0 deletions docs/10.supported-networks/32.monad.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
title: "Monad"
description: "Monad network support"
---

<!-- markdownlint-disable single-h1 heading-increment no-inline-html -->

# Monad

{{ #include 10.supported-networks/_intro.md }}

## Monad Testnet

Chain ID: `10143`

Explorer: [Blockvision](https://testnet.monadexplorer.com/)

| datasource | status | URLs |
| -------------------:|:--------- | ------------------------------------------------------------------------- |
| **evm.subsquid** | 🔴 no API | N/A |
| **evm.sourcify** | 🔴 500 | `https://sourcify-api-monad.blockvision.org` |
| **evm.blockvision** | 🟢 works | `https://monad-api.blockvision.org/testnet/api` |
| **evm.node** | 🟢 works | `https://testnet-rpc2.monad.xyz/52227f026fa8fac9e2014c58fbf5643369b3bfc6` |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion docs/2.indexes/_starknet.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!-- markdownlint-disable first-line-h1 -->
## Datasources

DipDup indexes for Starknet use [Subsquid Network](https://docs.subsquid.io/subsquid-network/overview/) as a main source of historical data. Starknet nodes are not required for DipDup to operate, but in future updates, it will be possible to use them to get the latest data (not yet in Subsquid Network) and realtime updates. See [starknet.subsquid](../3.datasources/4.starknet_subsquid.md) page for more info on how to configure the datasource.
DipDup indexes for Starknet use [Subsquid Network](https://docs.subsquid.io/subsquid-network/overview/) as a main source of historical data. Starknet nodes are not required for DipDup to operate, but in future updates, it will be possible to use them to get the latest data (not yet in Subsquid Network) and realtime updates. See [starknet.subsquid](../3.datasources/6.starknet_subsquid.md) page for more info on how to configure the datasource.
2 changes: 1 addition & 1 deletion docs/2.indexes/_substrate.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!-- markdownlint-disable first-line-h1 -->
## Datasources

DipDup indexes for Substrate networks use [Subsquid Network](https://docs.subsquid.io/subsquid-network/overview/) as a main source of historical data. Substrate nodes are not required for DipDup to operate, but they can be used to get the latest data (not yet in Subsquid Network) and realtime updates. See [substrate.subsquid](../3.datasources/8.substrate_subsquid.md) and [substrate.node](../3.datasources/6.substrate_node.md) pages for more info on how to configure both datasources.
DipDup indexes for Substrate networks use [Subsquid Network](https://docs.subsquid.io/subsquid-network/overview/) as a main source of historical data. Substrate nodes are not required for DipDup to operate, but they can be used to get the latest data (not yet in Subsquid Network) and realtime updates. See [substrate.subsquid](../3.datasources/10.substrate_subsquid.md) and [substrate.node](../3.datasources/8.substrate_node.md) pages for more info on how to configure both datasources.

For testing purposes, you can use EVM node as a single datasource, but indexing will be significantly slower. For production, it's recommended to use Subsquid Network as the main datasource and EVM node(s) as a secondary one. If there are multiple `substrate.node` datasources attached to index, DipDup will use random one for each request.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion docs/3.datasources/3.evm_etherscan.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ datasources:
api_key: ${ETHERSCAN_API_KEY:-''}
```
During initialization, DipDup will use this datasource to fetch contract ABIs. If your config contains definitions for multiple networks, you can assign the datasource explicitly in `evm.subsquid` index definitions:
During initialization, DipDup will use this datasource to fetch contract ABIs. If your config contains definitions for multiple networks, you can assign the datasource explicitly in `evm` index definitions:

```yaml [dipdup.yaml]
indexes:
Expand Down
31 changes: 31 additions & 0 deletions docs/3.datasources/4.evm_blockvision.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: "Blockvision"
description: "Blockvision is multi-chain Node, Token, NFT, and DeFi API provider and data retrieval portal for developers. It provides a public API to fetch ABIs of verified contracts. DipDup can use its API to fetch ABIs for contracts being indexed."
network: "ethereum"
---

# Blockvision

{{ #include 3.datasources/_evm_banner.md }}

[Blockvision](https://docs.blockvision.org/reference/welcome-to-blockvision) is multi-chain Node, Token, NFT, and DeFi API provider and data retrieval portal for developers. It provides a public API to fetch ABIs of verified contracts. DipDup can use its API to fetch ABIs for contracts being indexed.

To use this datasource, add the following section in config:

```yaml [dipdup.yaml]
datasources:
blockvision:
kind: evm.blockvision
url: https://monad-api.blockvision.org/testnet/api
```
During initialization, DipDup will use this datasource to fetch contract ABIs. If your config contains definitions for multiple networks, you can assign the datasource explicitly in `evm` index definitions:

```yaml [dipdup.yaml]
indexes:
evm_events:
kind: evm.events
datasources:
- blockvision
...
```
31 changes: 31 additions & 0 deletions docs/3.datasources/5.evm_sourcify.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: "Sourcify"
description: "Sourcify is a source-code verification service for Ethereum smart contracts supporting Solidity and Vyper. It provides a public API to fetch ABIs of verified contracts. DipDup can use its API to fetch ABIs for contracts being indexed."
network: "ethereum"
---

# Sourcify

{{ #include 3.datasources/_evm_banner.md }}

[Sourcify](https://docs.sourcify.dev/docs/intro/index.html) is a source-code verification service for Ethereum smart contracts supporting Solidity and Vyper. It provides a public API to fetch ABIs of verified contracts. DipDup can use its API to fetch ABIs for contracts being indexed.

To use this datasource, add the following section in config:

```yaml [dipdup.yaml]
datasources:
sourcify:
kind: evm.sourcify
chain_id: 1 # Ethereum mainnet
```
During initialization, DipDup will use this datasource to fetch contract ABIs. If your config contains definitions for multiple networks, you can assign the datasource explicitly in `evm` index definitions:

```yaml [dipdup.yaml]
indexes:
evm_events:
kind: evm.events
datasources:
- sourcify
...
```
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion docs/7.references/2.config.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ description: "Config file reference"
<dd class="field-odd"><ul class="simple">
<li><p><strong>spec_version</strong> (<em>ToStr</em>) – Version of config specification, currently always <cite>3.0</cite></p></li>
<li><p><strong>package</strong> (<em>str</em>) – Name of indexer’s Python package, existing or not</p></li>
<li><p><strong>datasources</strong> (<em>dict</em><em>[</em><em>str</em><em>, </em><a class="reference internal" href="#dipdupconfigcoinbasecoinbasedatasourceconfig" title="dipdup.config.coinbase.CoinbaseDatasourceConfig" target="_self"><em>CoinbaseDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigevm_etherscanevmetherscandatasourceconfig" title="dipdup.config.evm_etherscan.EvmEtherscanDatasourceConfig" target="_self"><em>EvmEtherscanDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfighttphttpdatasourceconfig" title="dipdup.config.http.HttpDatasourceConfig" target="_self"><em>HttpDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigipfsipfsdatasourceconfig" title="dipdup.config.ipfs.IpfsDatasourceConfig" target="_self"><em>IpfsDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigevm_subsquidevmsubsquiddatasourceconfig" title="dipdup.config.evm_subsquid.EvmSubsquidDatasourceConfig" target="_self"><em>EvmSubsquidDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigevm_nodeevmnodedatasourceconfig" title="dipdup.config.evm_node.EvmNodeDatasourceConfig" target="_self"><em>EvmNodeDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigtzip_metadatatzipmetadatadatasourceconfig" title="dipdup.config.tzip_metadata.TzipMetadataDatasourceConfig" target="_self"><em>TzipMetadataDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigtezos_tzkttezostzktdatasourceconfig" title="dipdup.config.tezos_tzkt.TezosTzktDatasourceConfig" target="_self"><em>TezosTzktDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigstarknet_subsquidstarknetsubsquiddatasourceconfig" title="dipdup.config.starknet_subsquid.StarknetSubsquidDatasourceConfig" target="_self"><em>StarknetSubsquidDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigstarknet_nodestarknetnodedatasourceconfig" title="dipdup.config.starknet_node.StarknetNodeDatasourceConfig" target="_self"><em>StarknetNodeDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigsubstrate_subsquidsubstratesubsquiddatasourceconfig" title="dipdup.config.substrate_subsquid.SubstrateSubsquidDatasourceConfig" target="_self"><em>SubstrateSubsquidDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigsubstrate_subscansubstratesubscandatasourceconfig" title="dipdup.config.substrate_subscan.SubstrateSubscanDatasourceConfig" target="_self"><em>SubstrateSubscanDatasourceConfig</em></a><em> | </em><em>SubstrateNodeDatasourceConfig</em><em>]</em>) – Mapping of datasource aliases and datasource configs</p></li>
<li><p><strong>datasources</strong> (<em>dict</em><em>[</em><em>str</em><em>, </em><a class="reference internal" href="#dipdupconfigcoinbasecoinbasedatasourceconfig" title="dipdup.config.coinbase.CoinbaseDatasourceConfig" target="_self"><em>CoinbaseDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigevm_etherscanevmetherscandatasourceconfig" title="dipdup.config.evm_etherscan.EvmEtherscanDatasourceConfig" target="_self"><em>EvmEtherscanDatasourceConfig</em></a><em> | </em><em>EvmSourcifyDatasourceConfig</em><em> | </em><em>EvmBlockvisionDatasourceConfig</em><em> | </em><a class="reference internal" href="#dipdupconfighttphttpdatasourceconfig" title="dipdup.config.http.HttpDatasourceConfig" target="_self"><em>HttpDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigipfsipfsdatasourceconfig" title="dipdup.config.ipfs.IpfsDatasourceConfig" target="_self"><em>IpfsDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigevm_subsquidevmsubsquiddatasourceconfig" title="dipdup.config.evm_subsquid.EvmSubsquidDatasourceConfig" target="_self"><em>EvmSubsquidDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigevm_nodeevmnodedatasourceconfig" title="dipdup.config.evm_node.EvmNodeDatasourceConfig" target="_self"><em>EvmNodeDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigtzip_metadatatzipmetadatadatasourceconfig" title="dipdup.config.tzip_metadata.TzipMetadataDatasourceConfig" target="_self"><em>TzipMetadataDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigtezos_tzkttezostzktdatasourceconfig" title="dipdup.config.tezos_tzkt.TezosTzktDatasourceConfig" target="_self"><em>TezosTzktDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigstarknet_subsquidstarknetsubsquiddatasourceconfig" title="dipdup.config.starknet_subsquid.StarknetSubsquidDatasourceConfig" target="_self"><em>StarknetSubsquidDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigstarknet_nodestarknetnodedatasourceconfig" title="dipdup.config.starknet_node.StarknetNodeDatasourceConfig" target="_self"><em>StarknetNodeDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigsubstrate_subsquidsubstratesubsquiddatasourceconfig" title="dipdup.config.substrate_subsquid.SubstrateSubsquidDatasourceConfig" target="_self"><em>SubstrateSubsquidDatasourceConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigsubstrate_subscansubstratesubscandatasourceconfig" title="dipdup.config.substrate_subscan.SubstrateSubscanDatasourceConfig" target="_self"><em>SubstrateSubscanDatasourceConfig</em></a><em> | </em><em>SubstrateNodeDatasourceConfig</em><em>]</em>) – Mapping of datasource aliases and datasource configs</p></li>
<li><p><strong>database</strong> (<a class="reference internal" href="#dipdupconfigsqlitedatabaseconfig" title="dipdup.config.SqliteDatabaseConfig" target="_self"><em>SqliteDatabaseConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigpostgresdatabaseconfig" title="dipdup.config.PostgresDatabaseConfig" target="_self"><em>PostgresDatabaseConfig</em></a>) – Database config</p></li>
<li><p><strong>runtimes</strong> (<em>dict</em><em>[</em><em>str</em><em>, </em><a class="reference internal" href="#dipdupconfigsubstratesubstrateruntimeconfig" title="dipdup.config.substrate.SubstrateRuntimeConfig" target="_self"><em>SubstrateRuntimeConfig</em></a><em>]</em>) – Mapping of runtime aliases and runtime configs</p></li>
<li><p><strong>contracts</strong> (<em>dict</em><em>[</em><em>str</em><em>, </em><a class="reference internal" href="#dipdupconfigevmevmcontractconfig" title="dipdup.config.evm.EvmContractConfig" target="_self"><em>EvmContractConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigtezostezoscontractconfig" title="dipdup.config.tezos.TezosContractConfig" target="_self"><em>TezosContractConfig</em></a><em> | </em><a class="reference internal" href="#dipdupconfigstarknetstarknetcontractconfig" title="dipdup.config.starknet.StarknetContractConfig" target="_self"><em>StarknetContractConfig</em></a><em>]</em>) – Mapping of contract aliases and contract configs</p></li>
Expand Down
Loading

0 comments on commit f7b2587

Please sign in to comment.