Wie man mit Verträgen interagiert, indem man die Abstraktion in Trüffel verwendet

Entschuldigung, wenn das wirklich einfach ist, aber ich stecke ein bisschen fest. Ich spiele mit dem Standard-MetaCoin-Vertrag in Truffle und teste ihn gegen testrpc.

Beim Lesen der Truffle-Dokumentation ( http://truffle.readthedocs.io/en/beta/getting_started/contracts/ ) erwähnen sie die Ausführung von Vertragsfunktionen mithilfe der Abstraktion – die im Frontend verfügbar ist.

Meinen sie mit Frontend hier die Trüffelkonsole? Wenn nein, wo ist es? Wo wird auch die Ausgabe meiner Befehle gedruckt?

Im Moment habe ich eine Truffle-Konsole in einer Powershell geöffnet und testrpc läuft auf einer separaten Powershell. Jede Hilfe wird sehr geschätzt!

Antworten (2)

Dies ist wahrscheinlich ein Duplikat, aber ich denke, ich kann Ihnen eine Tür öffnen, solange es dauert.

Front-End kann alles sein, was den Wrapper von Web3 und Truffle verwendet.

Mit Truffle können Sie mit dem Vertrag interagieren, ohne sich um die Implementierungsdetails auf niedriger Ebene kümmern zu müssen. Zwei Bereiche stechen hervor.

  1. Die Vertragsadresse nach der Bereitstellung kennen.
  2. Kenntnis der ABI-Details für den Vertrag.

Auf niedrigem Niveau ist beides wichtig, da alle Transaktionen ByteCode zur Gegenleistung an den Vertrag gesendet werden. Der ByteCode für eine Transaktion wird mit Hashes der benutzerfreundlichen Funktionen in der Quelle gebildet, auf 4-Byte-Signaturen gekürzt, gefolgt von Argumenten. Es genügt zu sagen, dass es ein Prozess ist, es richtig zusammenzusetzen.

Truffle behandelt beide Probleme auf entwicklerfreundliche Weise.

Versuche dies ...

truffle development > var meta;
truffle development > var balance;
truffle development > var accounts;
truffle development > var account;
truffle development > web3.eth.getAccounts(function(e,a) { accounts=a; });
truffle development > account = accounts[0];

Der Knoten verwendet Callbacks, die Truffle in Promises (thenable) umwandelt, also haben wir gerade einige Variablen initialisiert, die wir als nächstes verwenden werden.

truffle development > MetaCoin.deployed().then(function(instance) { meta = instance; });
truffle development > meta

Sie sollten einige vertraute Funktionen, die bereitgestellte Adresse und andere Details zu MetaCoin sehen.

truffle development > meta.getBalance.call(account).then(function(myBal) { balance = myBal; });
truffle development > balance;

Sie sollten es im BigNumber-Format sehen.

truffle development > balance.toString(10);

Oder für Menschen lesbar.

Truffle verfolgt die bereitgestellte Adresse ( .deployed()) für Sie. Bei testRPC ist dies ein wenig fehlerhaft, da es sich bei jedem Neustart von testRPC um eine leere Blockchain handelt. Truffles Erinnerung an die bereitgestellte Adresse führt ihn in die Irre. Löse das mit.

$ testrpc

Anderes Fenster:

$ truffle migrate --reset

Hier ist eine Konsole, die zeigt, dass es funktioniert.

Geben Sie hier die Bildbeschreibung ein

Nur ein paar Punkte zur Verdeutlichung: Wenn ich truffle development > meta.balance().then(function(myBal) { balance = myBal; });es ausführe, gibt es meta.balance() is not a functionauch zurück, wenn ich versuche, das Protokoll zu konsolen, balancees gibt nichts zurück. Muss ich etwas anderes tun, um es auszugleichen, nachdem ich es deklariert habe, um es in der Funktion zu verwenden? Danke nochmal für deine Hilfe.
Hey Rob, ich bekomme das alles langsam hin. Ist MetaCoin.deployed().then(function(instance) { meta = instance; });das gleiche wie var meta = MetaCoin.deployed();? Wenn ja, was ist der Vorteil Ihrer Methode? Danke noch einmal.
Froh das zu hören. Sehr wahrscheinlich finden Sie in vielen Fällen ähnliche Ergebnisse, aber ich finde die thennable-Syntax zuverlässiger, also mache ich es mir zur Gewohnheit. Zusammenfassend besteht der Unterschied darin, auf eine Antwort zu warten. Truffle 3.x ist ziemlich neu. Hier finden Sie eine Anleitung, die den neuen Ansatz vorschlägt. truffleframework.com/tutorials/…
Kann ich von der Datei aus interagieren (nicht direkt in der Konsole)
Ja. Diese Befehle sind die Essenz des JavaScript-Teils der Web-UI- oder nodeJS-Serverimplementierung.

Hier haben Sie ein kurzes und einfaches Tutorial über die Truffle-Konsole und deren Verwendung zur Interaktion mit Smart Contracts .