> For the complete documentation index, see [llms.txt](https://raceecosystem.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://raceecosystem.gitbook.io/docs/clients/web3.js.md).

# web3.js

[web3.js](https://web3js.readthedocs.io/) is a JavaScript library that allows developers to interact with EVM-compatible blockchain networks.

You can use web3.js to interact with smart contracts deployed on the RACE™ network.

***

## Install[​](broken://pages/3x0SAA8BqdLCnblLNTHv) <a href="#install" id="install"></a>

To install web3.js run the following command:

## Setup[​](broken://pages/3x0SAA8BqdLCnblLNTHv) <a href="#setup" id="setup"></a>

Before you can start using web3.js, you need to import it into your project.

Add the following line of code to the top of your file to import web3.js:

```
const Web3 = require('web3');
```

## Connecting to RACE™[​](broken://pages/3x0SAA8BqdLCnblLNTHv) <a href="#connecting-to-base" id="connecting-to-base"></a>

You can connect to RACE™ by instantiating a new web3.js `Web3` object with a RPC URL of the RACE™ network:

```
const Web3 = require('web3');

const web3 = new Web3('https://racetestnet.io/');
```

## Accessing data[​](broken://pages/3x0SAA8BqdLCnblLNTHv) <a href="#accessing-data" id="accessing-data"></a>

Once you have created a provider, you can use it to read data from the RACE™ network.

For example, you can use the `getBlockNumber` method to get the latest block:

```
async function getLatestBlock(address) {
  const latestBlock = await web3.eth.getBlockNumber();
  console.log(latestBlock.toString());
}
```

## Deploying contracts[​](broken://pages/3x0SAA8BqdLCnblLNTHv) <a href="#deploying-contracts" id="deploying-contracts"></a>

Before you can deploy a contract to the RACE™ network using web3.js, you must first create an account.

You can create an account by using `web3.eth.accounts`:

```
const privateKey = “PRIVATE_KEY”;
const account = web3.eth.accounts.privateKeyToAccount(privateKey);
```

{% hint style="info" %}
INFO

`PRIVATE_KEY` is the private key of the wallet to use when creating the account.
{% endhint %}
