An open API service indexing awesome lists of open source software.

https://github.com/pugson/abi-data

Grab your smart contract’s ABI as JSON from Etherscan, Polygonscan, Arbiscan, BaseScan, BscScan, FTMScan, Snowtrace, GnosisScan. Supports multiple chains and testnets.
https://github.com/pugson/abi-data

arbitrum avalanche base bsc ethereum ethereum-contract optimism polygon wagmi

Last synced: 3 months ago
JSON representation

Grab your smart contract’s ABI as JSON from Etherscan, Polygonscan, Arbiscan, BaseScan, BscScan, FTMScan, Snowtrace, GnosisScan. Supports multiple chains and testnets.

Awesome Lists containing this project

README

          

# ABI Data — grab your smart contract’s ABI as JSON from Etherscan, Polygonscan, Arbiscan, BaseScan, BscScan, FTMScan, Snowtrace, GnosisScan

![og-image](https://user-images.githubusercontent.com/6843656/218328296-cd7a07c5-d790-476b-b4fd-80041bf64f79.png)

Fetch smart contract ABI JSON to use with wagmi and ethers.js in your app. Records are cached for 365 days, so after the initial request for a contract, the API will respond very quickly from the CDN. This is just a simple wrapper around various *scan APIs.

## General usage

Supported networks:

| Network name | Network ID |
|--------------------------|-----------------------|
| Ethereum Mainnet | none (default) |
| Ethereum Goerli Testnet | `goerli` |
| Ethereum Sepolia Testnet | `sepolia` |
| Avalanche Mainnet | `avalanche` |
| Avalanche Fuji Testnet | `avalancheFuji` |
| Arbitrum Mainnet | `arbitrum` |
| Arbitrum Goerli Testnet | `arbitrumGoerli` |
| Arbitrum Nova | `arbitrumNova` |
| Base Mainnet | `base` |
| Base Goerli Testnet | `baseGoerli` |
| BSC Mainnet | `bsc` |
| BSC Testnet | `bscTestnet` |
| Fantom Mainnet | `fantom` |
| Fantom Testnet | `fantomTestnet` |
| Polygon Mainnet | `polygon` |
| Polygon Mumbai Testnet | `polygonMumbai` |
| Polygon zkEVM | `polygonZkEvm` |
| Polygon zkEVM Testnet | `polygonZkEvmTestnet` |
| Optimism Mainnet | `optimism` |
| Optimism Goerli Testnet | `optimismGoerli` |
| Gnosis Mainnet | `gnosis` |

```
https://abidata.net/?network=

```

Examples:

- USDT on Ethereum Mainnet: https://abidata.net/0xdAC17F958D2ee523a2206206994597C13D831ec7
- Chainlink LINK token on Ethereum Sepolia: https://abidata.net/0x779877a7b0d9e8603169ddbd7836e478b4624789?network=sepolia

## React usage example

```jsx
import { useState, useEffect } from "react";
import { useContractWrite, usePrepareContractWrite } from "wagmi";

const contractAddress = "0xecb504d39723b0be0e3a9aa33d646642d1051ee1";

const useContractABI = (contractAddress) => {
const [contractABI, setContractABI] = useState(null);

useEffect(() => {
const fetchContractABI = async () => {
const response = await fetch(`https://abidata.net/${contractAddress}`);
const json = await response.json();
setContractABI(json.abi);
};

fetchContractABI();
}, [contractAddress]);

return contractABI;
};

function App() {
const contractABI = useContractABI(contractAddress);
const { config } = usePrepareContractWrite({
address: contractAddress,
abi: contractABI,
functionName: "feed",
});

const { data, isLoading, isSuccess, write } = useContractWrite(config);

return (


write?.()}>
Feed

{isLoading &&
Check Wallet
}
{isSuccess &&
Transaction: {JSON.stringify(data)}
}

);
}
```

## Development

This is a Next.js app.
First, run the development server:

```bash
npm run dev
# or
yarn dev
# or
pnpm dev
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.