Arbitrum Optimistc Rollups: Deploy de un Hola Mundo! en Testnet
Tags: blockchain, ethereum, solidity, arbitrum
Published: 2021-06-19 15:19:32

---
title: Arbitrum Optimistc Rollups: Deploy de un Hola Mundo! en Testnet
published: true
description: 
tags: #blockchain, #ethereum, #solidity, #arbitrum
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gs0xld3uyxnahfjuo0om.png
---

Arbitrum está muy cerca de lanzar en Mainnet y estas son buenas noticias Ethereum.

Arbitrum es un protocolo de Layer 2 que implementa su propia versión de Optimistic Rollups. Arbitrum Testnet en Rinkeby ya fue lanzado así que en este video vamos a deployar un Smart Contract en dicho Testnet.

{% youtube nXFgv1ud_Cg %}

Asumiremos que estás familiarizado con Hardhat, te recomiendo  [este video](https://www.youtube.com/watch?v=uaRsemvYkfo) si necesitas un repaso.

## 1. Preparativos

Asegúrate de tener fondos de Rinkeby en tu wallet de [Metamask](https://metamask.io/) antes de iniciar. Puedes conseguirlos en el [Faucet de Rinkeby](https://faucet.rinkeby.io/). 

1. Dirígete hacia el [Bridge de Arbitrum](https://bridge.arbitrum.io/) teniendo seleccionada la red de Rinkeby
2. Agrega la red de Arbitrum Rinkeby en tu metamask haciendo click en "Add/Switch to Arbitrum Network"
3. En tu wallet de Metamask y transfiere fondos desde "ETH on L1" hasta "ETH on L2".

![Arbitrum Bridge](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tjxtr0etmkek33127xfz.png)

Luego de esperar un rato deberías ver reflejado tu nuevo saldo en Metamask en la red de Arbitrum Rinkeby.

![Arbitrum Rinkeby en Metamask](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p8crtgo70xghjiigjft7.png)

## 2. Lanzar un contrato en Arbitrum Testnet

Es bastante similar a lanzar un contrato en cualquier otra red. La única diferencia es cómo agregamos la red de `arbitrum` en `hardhat.config.js`.

```bash
mkdir MyHardhatProject
cd MyHardhatProject
npm install -save-dev hardhat
npx hardhat
```

Borramos el contrato `contracts/Greeter.sol` y lo reemplazamos el siguiente:

`contracts/MyContract.sol`
```solidity
// SPDX-License-Identifier: MIT

pragma solidity 0.8.5;

contract MyContract {
    string public hello;

    constructor()
    {
        hello = "Hola mundo!";
    }

    function setHello(string memory _hello) public {
        hello = _hello;
    }
}
```

`hardhat.config.js`
```js
require("@nomiclabs/hardhat-waffle");

const fs = require('fs');
const mnemonic = fs.readFileSync(".secret").toString().trim();

module.exports = {
  solidity: "0.8.5",
  networks: {
    arbitrum: {
      url: `https://rinkeby.arbitrum.io/rpc`,
      gasPrice: 0,
      accounts: {mnemonic: mnemonic},
    }
  },
};
```

`scripts/sample-script.js`
```js
const hre = require("hardhat");

async function main() {
  const MyContract = await hre.ethers.getContractFactory("MyContract");
  const my_contract = await MyContract.deploy();

  await my_contract.deployed();

  console.log("MyContract deployed to:", my_contract.address);
}
main()
  .then(() => process.exit(0))
  .catch(error => {
    console.error(error);
    process.exit(1);
  });

```

⚠️⚠️⚠️Copia tu Secret Recovery Phrase de Metamask en un archivo vacío y llámalo .secret. Agregalo a tu .gitignore. ¡No olvides agregarlo a tu .gitignore!⚠️⚠️⚠️

`.gitignore`
```
.secret
```

```bash
npx hardhat run --network arbitrum scripts/sample-script.js
```

## 3. Interactuar con el contrato

Interactuar con un contrato en Arbitrum Testnet a través de HardHat también es muy similar a hacerlo con cualquier otra red.

```bash
npx hardhat console --network arbitrum
```

Una vez dentro de la consola interactuamos con el contrato. Asegurate de agregar el address de tu contrato cuando ejecutes la funcion attack.

```js
const MyContract = await ethers.getContractFactory("MyContract")
const my_contract = await MyContract.attach("0x5FbDB2315678....")
await my_contract.hello()
await my_contract.setHello("Probando...")
await my_contract.hello()
```

[Documentación oficial](https://developer.offchainlabs.com/docs/contract_deployment)

**Gracias por ver este tutorial!**

Sígueme en dev.to y en [Youtube](https://www.youtube.com/channel/UCNRB4tgwp09z4391JRjEsRA) para todo lo relacionado al desarrollo en Blockchain en Español.