Truffle Dapp Deployed Contract Access

Welche Funktion müssen wir in Truffle für die Kommunikation des zweiten Dapp mit dem Vertrag verwenden, der vom ersten Dapp auf der Blockchain bereitgestellt wird, da der von Truffle bereitgestellte Vertrag für den Geth-Knoten nicht zugänglich ist. Ich versuche es mit vertragsname.at(vertragsadresse), aber es funktioniert nicht?

Was meinst du mit erstem und zweitem Dapp? Außerdem sind die Adressen Ihrer Verträge dauerhaft. Solange Sie also denselben Knoten für die Bereitstellung Ihrer Verträge verwendet haben, at()sollte die von Ihnen beschriebene Methode funktionieren. Könnte hilfreich sein, Code zu posten.
Schauen Sie, ich habe einen Vertrag von einer Dapp bereitgestellt, die auf einem Geth-Knoten ausgeführt wird. Jetzt möchte ich mit einer anderen Dapp, die auf einem anderen Knoten ausgeführt wird, auf die Funktionen des bereitgestellten Vertrags zugreifen. Was wird benötigt? Betrachten Sie testnet.@Karl Floersch
Sie benötigen die ABI und die Adresse des Vertrags, um die Vertragsfunktionen von einem anderen Dapp aufzurufen. Sie wollen verstehen, wie man Vertragsgegenstände in web3 und pudding erstellt. github.com/ethereum/web3.js & github.com/ConsenSys/ether-pudding
Ich verwende das Truffle-Framework, das Pudding-Funktionalität hat. Ich habe den gleichen Vertrag auf beiden Dapps zusammengestellt und auf dem einen Dapp bereitgestellt. Jetzt versuche ich, mit der Truffle-Methode contractname.at (contractaddress) von einem anderen Dapp darauf zuzugreifen, und wenn ich die Funktionen der Verträge aufrufe, wird mir der Fehler "Uncaught BigNumber Error: new BigNumber() not a base 16 number. " Sam Fehler für alle Funktionen, die eine Zeichenfolge zurückgeben, "0x" für die Funktionen, die die Adresse zurückgeben. Sie wissen nicht, was Sie tun sollen?? @Karl Flörsch
Ok gut! Du hast es also zum Laufen gebracht. Der Fehler, den Sie erhalten, steht in keinem Zusammenhang. Schlagen Sie nach, wie man mit großen Web3-Zahlen umgeht. Sie können ein wenig knifflig sein. Aber zumindest haben Sie, glaube ich, das erreicht, was Sie sich ursprünglich zum Arbeiten vorgenommen haben.
Können Sie mir im Umgang mit bignumbers in web3 helfen? Weil ich diesen Fehler immer wieder erhalte und um ihn zu beheben, muss ich den Geth-Knoten erneut neu starten? Jede Art von Hilfe wird geschätzt.
Schauen Sie hier: github.com/ethereum/wiki/wiki/… - aber das ist für Ihre ursprüngliche Frage nicht relevant.

Antworten (1)

Wenn Sie einen Vertrag bereitstellen, wird ihm eine Ethereum-Vertragsadresse zugewiesen. Wenn Sie mit einem Vertrag interagieren möchten, müssen Sie die Vertragsadresse in Ihr Wallet laden. (Schauen Sie sich an, wie es mit DAO gemacht wird: https://daohub.org/voting.html )

Um mit einem Vertrag zu interagieren, benötigen Sie zwei Dinge:

  • Die Vertragsadresse
  • Die JSON-Schnittstelle des Vertrags

Durch die Verwendung dieser beiden können Sie einen Vertrag auf web3.js laden und aufrufen und damit beginnen, damit zu interagieren.

Navigieren Sie zu „Verträge“. Wählen Sie dann „Vertrag beobachten“. Geben Sie in der „Watch Contracts“-Schnittstelle „The DAO“ als Vertragsnamen ein, fügen Sie die Vertragsadresse und die JSON-Schnittstelle ein. OK klicken'.

Klicken Sie bei registrierter Vertragsschnittstelle in Ihrem benutzerdefinierten Vertragsbereich auf „The DAO“ und warten Sie einige Sekunden. Sie können jetzt die Schnittstelle verwenden und mit dem Vertrag interagieren.

Ich verwende Trüffel zum Testen. Wissen Sie, wo Trüffel das ABI speichert?
das abi befindet sich in build/contracts/contractname.json