Primeros pasos con BNB Studio
Tags: bnbchain, solidity, web3, programming
Published: 2022-09-18 22:03:35

Hola a todos, mirando este link https://www.bnbchain.org/en/developers
Asumiendo que es el punto de entrada para todos los desarrolladores de la BNB chain, me encontré con esto

![bsc](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ceba9x9amu2w4rul5fha.png)
Está un poco desactualizado, porque es la BNB studio ahora por el rebranding que hubo, pero vale la pena mirarlo que tan util es a la hora de realizar nuestros proyectos bajo la bnb chain.
let`s go  builders 😎!!! 
---
El bnb studio en un ide para desarrollar nuestros smartcontracts de la BNB chain, está desarrollado https://www.obsidians.io/.
Actualmente el BNB Studio viene en 2 formatos:

- **WEB:** https://bsc.intl.ide.black/
- **Desktop**: en Linux, Mac y Windows

En el artículo vamos a instalar la versión de escritorio para Windows.
Antes de instalarlo, hay 2 alternativas de instalación.

- 
Instalación de algunos elementos via docker, algo único que no he visto en otros ides , es la integración de containes para truffle y un nodo local de la bsc

- 
Instalación de nodejs y eso es todo 👍

Nosotros para efectos prácticos lo vamos instalar con nodejs

1) Descargarmos e instalamos nodejs
https://nodejs.org/es/ descargamos la versión lts
hoy 16 de Agosto del 2022
https://nodejs.org/dist/v16.17.0/node-v16.17.0-x64.msi
2) Descargarmos e instalamos el Bnb Stucio
https://github.com/ObsidianLabs/BNB-Studio
La última versión fue lanzada en mayo 14 de 2022
https://github.com/ObsidianLabs/BNB-Studio/releases/tag/v0.10.6
https://github.com/ObsidianLabs/BNB-Studio/releases/download/v0.10.6/BNB-Studio-0.10.6.exe


![BNB studio primera imagen](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m3kfcyq8ru7u6k1ti36c.png)
Como vamos a trabajar en la modalidad que está instalado en nodejs, click en skip


![crear proyectos](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hgafkyo0nar6w8vb7nz4.png)

![Project templates](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q49fq8k0lzhvpiaxmrfs.png)

Tenemos varios templates y su las respectivas versiones para estos templates 

![versiones](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6y066sj456h6ujuickof.png)

Además de esto podemos ver si nos vamos por truffle, hardhat, waffle con sus respectivas versiones o la versión docker

- https://trufflesuite.com/truffle/
- https://hardhat.org/
- https://ethereum-waffle.readthedocs.io/en/latest/index.html

Para efectos prácticos, vamos a hacer un hola mundo por hardhat y lo vamos a lanzar por la testnet de la bsc

![hola mundo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/22iilkofh43gsb92ec6m.png)
**Nota:** la ultima versión para bnb studio de hardhat es la 2.5.0 y la última versión de hardhat va por la 2.11.2

Automáticamente , se instala hardhat para el proyecto 
Nos queda instalado lo siguiente:


`{
  "name": "helloworld",
  "version": "1.0.0",
  "description": "",
  "main": "hardhat.config.js",
  "scripts": {
    "build": "hardhat compile --config hardhat.config.js",
    "deploy": "hardhat run scripts/deploy.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@nomiclabs/hardhat-ethers": "^2.1.1",
    "@nomiclabs/hardhat-waffle": "^2.0.3",
    "chai": "^4.3.6",
    "ethereum-waffle": "^3.4.4",
    "ethers": "^5.7.1",
    "hardhat": "^2.5.0"
  }
}`

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c9527r0usacgjg9h2ex8.png)
Vamos a borrar el contrato generado, crear nuetro propio contrato "helloworld.sol y ponerlo en la testnet de la BSC! 🤠




![Nuevo Contrato](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tvyz5xvrlvoqkavqncuz.png)

```
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.6;

contract Hello {
     function getResult() public view returns(string memory){
            return "Hola Mundo!";
      }
 }
```
Abrimos el archivo config.json y cambiamos lo siguiente:
**Main File**: ./contracts/hellworld.sol
**Solc version**: v0.8.6
**EVM version**: Berlin

y click en save all

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zhgb55l70zcjz7k9ru0n.png)

Dentro de la carpeta "scripts" en deploy.js hacemos la siguiente modificación y grabamos el cambio, de esta forma hardhat sabe que el contrato a desplegar es el que estamos elaborando. 
`const Main = await ethers.getContractFactory('Main')`
se cambia por : `const Main = await ethers.getContractFactory('Hello')`

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e0586zcr13b7h8c7zcx3.png)
Ahora vamos a compilar el contrato con danco click en el ícono del martillo

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/svvnas0qiph4c8xu9bpn.png)

Si todo es exitoso abajo aparece lo siguiente

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/75xndjrm3butjurubv2e.png)

Ahora vamos a desplegar el contrato en la testnet de la BSC 😉

1) en la parte superior derecha seleccionamos que es la red de pruebas

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x9hu9ip8zaa533gfttap.png)
2) Vamos al administrador de llaves privadas en la parte inferior derecha y click en el ícono de llave


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lqa7nf5hu6kdg3s7e3yc.png)

Una ves ingresamos en esta opción click en import
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kfxcouj74uzh2vmnesmq.png)

En este paso, ponemos la llave privada de la metamask, mucho cuidado, la llave privada no la debejmos compartir con nadie!
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a3oaijbz22hj3kujhwuf.png)
Debe quedar algo así ydamos click en close

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zgw3wzcu792ypxeo47l8.png)

3) Click en el ícono de la ballenita, para desplegar el contrato en la testnet de la BNB chain.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ir9mljhj0yx747ddbdh.png)
Click en Estimate & Deploy ( esto hace el cálculo del gas y gas price por nosotros)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l96vqsqns0bbcu73fa1e.png)
Finalmente click en Deploy 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v0u21bfkcvwjm95afkpd.png)

Felicitaciones!!! ya desplegamos un contrato en la testnet de la BSC!!!

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/47g90nu3uvguno0fe8rl.png)


Ahora vamos a interactuar con el contrato 🧐

Hacemos click en el contratro generado

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nhahi7m64g1xmt7894qw.png)
En este caso no tenemos parámetros, pero esta habilitado para ello en BNB Studio!
Vamos a ejecutar el contrato!! 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qy3kd61o095luwnjovvy.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tlhwumq9prd9h92yqrsy.png)

**Conlusiones**

- Nos facilita mucho la vida este entorno, ya que podemos compilar y hacer despliegues totalmente automatizados con un sólo click. 
- Muy interesante ver que podemos usar truffle o hardhat. Aunque un poco desactualizado en sus versiones
- No lo mostramos pero tiene un explorador de transacciones incluido.
- Para las personas que les gusta tener todo bajo control, quizá sea más aconsejable usar otro ide como visual studio e incorporar hardhat, truffle u otras soluciones completamente a mano, ya que BNB Studio , nos hace todas estas labores de forma automática y perdemos un poco el control sobre esto. 

Espero este tutorial haya sido de agrado y utilidad 😉