Invocando una función de un contrato inteligente de la BNBChain mediante una API REST🤯
Tags: bnbchain, web3, programming, blockchain
Published: 2022-10-03 23:18:35

Hola a todos, el día de hoy vamos a ver otra forma de invocar funciones de los contratos inteligentes, mediante la solución de TATUM (https://tatum.io/).
Con tatum la creación de NFT, y muchas funcionalidades que se necesitan a diario en una daap, vienen en forma de una simple llamada a una **API REST**, lo cual nos abre un mundo de posibilidades en nuestras aplicaciones ( _cualquier cosa puede llamar una api rest_ 😁).

---

Otra ventaja es que tenemos acceso mediante API rest a 40 blockchains, lo cual nos ayuda muchisimo en nuestros desarrollos.

En esta ocación vamos invocar la función que creamos la primera vez en bnb studio (https://dev.to/sergiotechx/primeros-pasos-con-bnb-studio-525b).

Lo primero que debemos hacer es crear un usuario en TATUM, luego de esto, entramos en el dash board y damos click en api keys

![Api keys](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/beu9wh620y6h8wgo6ngg.png)
Creamos una api key de testnet y otra de mainnet.
**Nota:** Según la api key que usamos en las invocaciones de las API rest el sistema sabe si nos dirigimos a operaciones de testnet o mainnet 🤓

Para ver toda la documentación, la podemos ver acá https://docs.tatum.io/

**Ejemplo práctico**
1) Vamos directos al siguiente link
https://apidoc.tatum.io/tag/BNB-Smart-Chain#operation/BscBlockchainSmartContractInvocation

podemos probar dentro del mismo documentador de tatum o en postman, para mayor comodidad vamos realizarlo en postman
 2) elegimos que servidor queremos, si en europa o en USA en el URL de la api

![Server](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8va4x6pb655jvn7mui9h.png)

En este caso lo dejamos en Europa y el link quedaría así
https://api-eu1.tatum.io/v3/bsc/smartcontract
Allí se evidencia que es versión 3 llamado a la BNB chain y el endpoint _smartcontract_

3) Es un request tipo Post, para poner que es una aplicación tipo JSON y las credenciales en la parte de headers en Post man
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ds2i9wpkrbjfh3jgiy28.png)
4)En el body ponemos que es tipo raw con tipo JSON

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gr0xh18ux6y8i4d228v1.png)
E incluimos el siguiente código

```
0 {
1  "contractAddress":"0x7BcAF331B2d33Fbdc17De5dD0C3DEadb360503bb",
2  "methodName": "getResult",
3  "methodABI":  
4            {
5              "inputs": [],
6              "name": "getResult",
7              "outputs": [
8               {
9                  "internalType": "string",
10                  "name": "",
11                  "type": "string"
12               }
13              ],
14              "stateMutability": "view",
15              "type": "function"
16            } ,
17   "params": []
18 } 
```



**Línea 1** el contrato a usar
**Línea 2** el mètodo o función a invocar
**Línea 3** el código abi

Al ver el ABI en el BNB Studio, vemos que el código está entre [], en tatum, quitamos esos []

![BNB Studio](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j7sw99nqdgufd1oy10ey.png)
**Línea 17** los parámetros que vamos a usar

Ejecutamos el api rest, que es un llamado a una función de un contrato inteligente de la BNBChain y obtenemos lo siguiente


![Hola mundo tatum](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5ebn7al192uwu9r0xof8.png)

**Consideraciones:**
No es el santo grial para todas las aplicaciones, ya que en opciones que haya que pagar en BNB, hay que tener una billetera con fondos e indirectamente poner la privatekey con todas las medidas de seguridad, lo cual en ciertos escenarios no aplica.
Específicamente en una operación contra una metamask donde absolutamente todo lo paga el usuario, como lo sería un pancake swap por ejemplo. Pero......en airdrops, operaciones tipo backend, billeteras mobiles y un sin fin de aplicaciones es perfectamente viable.

Nos vemos más adelante en este maravilloso mundo blockchain 🤓😁🤠