¿Es posible usar métodos API web3.js para interactuar con un contrato implementado en Rinkeby?

He implementado un contrato simple de HelloWorld Solidity en una de las Ethereum Testnet llamada Rinkeby con MyEtherWallet y, por supuesto, puedo interactuar con él. Ahora quiero interactuar con ese contrato a través de métodos API web3.js, si es posible, en código javascript. Tengo esto en Google, pero no pude tener idea de por dónde empezar.

Aquí quiero llamar a la función getWord() en javascript a través de la API web3.js.

pragma solidity ^0.4.0

contract HelloWorld{
    string word = "Hello world";

    function getWord() constant returns(string){
       return word;
    }

}
Cuando quieras publicar un código, mejor no usar imágenes. Puede dar formato a los códigos de indicación de texto. Puede consultar aquí
Tendré cuidado la próxima vez.

Respuestas (1)

Primero necesita tener el módulo web3.js en su proyecto. Puede consultar aquí para obtener una guía.

Una vez que haya agregado web3, puede usar el objeto web3 para interactuar con una red Ethereum ejecutando un nodo local o inyectando web3 con servicios como metamask .

El fragmento de código de muestra para verificar la máscara met o conectarse al nodo local es,

// Checking if Web3 has been injected by the browser (Mist/MetaMask)
  if (typeof web3 !== 'undefined') {
    // Use Mist/MetaMask's provider
    window.web3 = new Web3(web3.currentProvider);
  } else {
    console.log('No web3? You should consider trying MetaMask!')
    // fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail)
    window.web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
  }

Puede consultar las preguntas frecuentes de metamask y esta publicación para obtener más detalles.

Tenga en cuenta que para usar,

window.web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))

necesita tener un nodo ejecutándose localmente con el rpc habilitado en el puerto: 8545, puede hacerlo ejecutando el comando:

geth --rpc --rpcaddr <ip> --rpcport <portnumber>

con el <ip>ser localhosty el <portnumber>ser 8545.

Dado que desea conectarse específicamente a la red Rinkeby, puede consultar aquí para encontrar cómo sincronizar un nodo completo con Rinkeby y, si usa metamask, puede seleccionar la red del menú desplegable disponible con la interfaz de usuario del complemento.

Y con el objeto web3 inicializado, puede usar JavaScript Web3 API para interactuar con la red ethereum como se documenta aquí .

¡Espero que esto ayude!

muy gracias señor. Una cosa más, ¿solo la extensión metamask es suficiente para trabajar con web3.js? o necesito instalar web3 también?
de nada, necesitas Web3.