Ist es möglich, web3.js-API-Methoden zu verwenden, um mit einem auf Rinkeby bereitgestellten Vertrag zu interagieren?

Ich habe einen einfachen HelloWorld Solidity-Vertrag auf einem der Ethereum-Testnetze namens Rinkeby mit MyEtherWallet bereitgestellt und natürlich kann ich damit interagieren. Jetzt möchte ich mit diesem Vertrag über web3.js-API-Methoden interagieren, wenn möglich, in Javascript-Code. Ich habe Google dies, konnte aber keine Ahnung bekommen, wo ich anfangen soll.

Hier möchte ich die getWord()- Funktion in Javascript über die web3.js-API aufrufen.

pragma solidity ^0.4.0

contract HelloWorld{
    string word = "Hello world";

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

}
Wenn Sie einen Code posten möchten, verwenden Sie besser keine Bilder. Sie können Text formatieren, der Codes anzeigt. Sie können hier verweisen
werde beim nächsten mal aufpassen.

Antworten (1)

Zuerst müssen Sie das web3.js-Modul in Ihrem Projekt haben. Sie können sich hier auf eine Anleitung beziehen.

Sobald Sie web3 hinzugefügt haben, können Sie das web3-Objekt verwenden, um mit einem Ethereum-Netzwerk zu interagieren, indem Sie einen lokalen Knoten ausführen oder über injiziertes web3 mit Diensten wie metamask .

Beispiel-Code-Snippet zum Überprüfen auf Metmask oder zum Herstellen einer Verbindung mit einem lokalen Knoten ist:

// 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"));
  }

Weitere Informationen finden Sie in den Metamask-FAQ und in diesem Beitrag .

Beachten Sie, dass zu verwenden,

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

Sie müssen einen Knoten haben, der lokal mit aktiviertem RPC an Port: 8545 ausgeführt wird. Sie können dies tun, indem Sie den folgenden Befehl ausführen:

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

mit dem <ip>Sein localhostund <portnumber>Sein 8545.

Da Sie sich speziell mit dem Rinkeby-Netzwerk verbinden möchten, können Sie hier nachlesen, wie Sie einen vollständigen Knoten mit Rinkeby synchronisieren, und wenn Sie Metamask verwenden, können Sie das Netzwerk aus der Dropdown-Liste auswählen, die mit der Plugin-Benutzeroberfläche verfügbar ist.

Und mit dem initialisierten web3-Objekt können Sie die JavaScript-Web3-API verwenden, um mit dem Ethereum-Netzwerk zu interagieren, wie hier dokumentiert .

Hoffe das hilft!

sehr danke herr. Eine weitere Sache, nur die Metamask-Erweiterung reicht aus, um mit web3.js zu arbeiten? oder muss ich auch web3 installieren?
Gern geschehen, Sie brauchen Web3 .