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

# web3.js

[web3.js](https://web3js.readthedocs.io/) es una biblioteca de JavaScript que permite a los desarrolladores interactuar con redes blockchain compatibles con EVM.

Puedes usar web3.js para interactuar con contratos inteligentes desplegados en la red Base.

**Instalar** Para instalar web3.js, ejecuta el siguiente comando:

```
Copy code
npm install web3

```

**Configuración**&#x20;

Antes de que puedas comenzar a usar web3.js, necesitas importarlo a tu proyecto.

Agrega la siguiente línea de código al inicio de tu archivo para importar web3.js:

```jsx
javascriptCopy code
const Web3 = require('web3');

```

**Conectando a Base**

&#x20;Puedes conectarte a Base instanciando un nuevo objeto `Web3` de web3.js con una URL RPC de la red Base:

```jsx
javascriptCopy code
const Web3 = require('web3');

const web3 = new Web3('<https://mainnet.base.org>');

```

**INFO**&#x20;

Para conectarte alternativamente a Base Goerli (testnet), cambia la URL anterior de [**https://mainnet.base.org**](https://mainnet.base.org) a [**https://goerli.base.org**](https://goerli.base.org).

**Accediendo a datos**&#x20;

Una vez que hayas creado un proveedor, puedes usarlo para leer datos de la red Base.

Por ejemplo, puedes usar el método `getBlockNumber` para obtener el último bloque:

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

```

**Desplegando contratos**&#x20;

Antes de que puedas desplegar un contrato en la red Base usando web3.js, primero debes crear una cuenta.

Puedes crear una cuenta usando `web3.eth.accounts`:

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

```

**INFO**&#x20;

`PRIVATE_KEY` es la clave privada de la billetera que se usará al crear la cuenta.

**Interactuando con contratos inteligentes**&#x20;

Puedes usar web3.js para interactuar con un contrato inteligente en Base instanciando un objeto `Contract` usando el ABI y la dirección de un contrato desplegado:

```jsx
javascriptCopy code
const abi = [
… // ABI del contrato desplegado
];

const contractAddress = "DIRECCION_CONTRATO"

const contract = new web3.eth.Contract(abi, contractAddress);

```

Una vez que hayas creado un objeto `Contract`, puedes usarlo para llamar a los métodos deseados en el contrato inteligente:

```jsx
javascriptCopy code
async function setValue(value) {
  // consulta de escritura
  const tx = await contract.methods.set(value).send();
  console.log(tx.transactionHash);
}

async function getValue() {
  // consulta de lectura
  const value = await contract.methods.get().call();
  console.log(value.toString());
}

```

**INFO**&#x20;

Para obtener más información sobre cómo desplegar contratos en Base, consulta [Desplegando un Contrato Inteligente.](https://docs.base.org/guides/deploy-smart-contracts)
