Interaktion mit auf Quorum bereitgestellter DApp nicht möglich

Geben Sie hier die Bildbeschreibung einIch kann nicht mit dem Vertrag interagieren, indem ich Dapp verwende, das auf der Quorum-Blockchain bereitgestellt wird (unter Verwendung von Metamask). Ich folge " https://truffleframework.com/tutorials/building-dapps-for-quorum-private-enterprise-blockchains ". Ich habe Quorum 7node Blockchain erfolgreich eingerichtet, dann habe ich ein einfaches Set erstellt und Dapp für denselben Vertrag erhalten, der im obigen Link angegeben ist. Ich habe es geschafft, die Coinbase jedes Knotens in die Metamaske zu importieren. Ich habe 3 benutzerdefinierte RPCs http://127.0.0.1:22000 , 22003 und 22006 erstellt und die jeweilige Coinbase in Metamask importiert (nach „ How to import account form geth console to metamask (private blockchain) “). Ich habe eine einfache app.js erstellt, die dem Tutorial für die Truffle Pet Shop ähnelt.

App.js-DateiGeben Sie hier die Bildbeschreibung ein

Ich habe den Vertrag mit dem privateFor-Tag in der Migration und für die Set-Funktion bereitgestellt, wie im Truffle-Quorum-7node-Beispiel gezeigt.

Aber wenn ich versuche, den Wert der Speicherdaten von dapp zu ändern, kann ich ihn nicht ändern (es spiegelt denselben konstanten Wert wider). während ich vom Geth-Knoten aus den Wert der Speicherdaten ändern kann. Sogar von sampletx.js (mit truffle exec sampletx.js) kann ich den Speicherdatenwert ändern.

Antworten (1)

Ja, ich kann dir helfen, hier sind Schritte

  1. Vagrant up (nur einmal)
  2. Vagrant ssh (ein cmd-Panel)

Sie erhalten wie vagrant@ubuntu-xenial:~$

Danach gehen Sie zu cd quroum-example/7nodes/

3. Auf demselben cmd $./raft-start.sh 4. Führen Sie diesen Befehl aus vagrant@ubuntu-xenial:~/quorum-examples/7nodes$ geth Attach qdata/dd1/geth

Öffnen Sie ein neues Terminal und gehen Sie zum Verzeichnis von quroum-example und geben Sie vagrant ssh ein

5.Öffnen Sie hier eine neue Geth-Instanz, indem Sie die obigen 3,4 Schritte verwenden. Fügen Sie die Geth-Instanz hinzu, aber dieses Mal hängt Geth qdata/dd4/geth an

6. Dies oben ist Ihre Build-Umgebung für zwei Geth-Instanzen.

7. Im Tutorial " https://truffleframework.com/tutorials/building-dapps-for-quorum-private-enterprise-blockchains " haben Sie Verzeichnisse wieGeben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Im Terminal von Geth hängen Sie qdata/dd1/geth an, verwenden Sie diese Befehle

=> var bytecode = "your smart Contract byte code"
 =>var simpleContract = eth.contract([{ "constant": true,"inputs": [],"name": "storedData","outputs": [{"name": "","type": "uint256"}],"payable": false,"stateMutability": "view","type": "function"},{"inputs": [{"name": "initVal1","type": "uint256"}],"payable": false,"stateMutability": "nonpayable","type": "constructor"},{"constant": false,"inputs": [{"name": "x","type": "uint256"}],"name": "set","outputs": [],"payable": false,"stateMutability": "nonpayable","type": "function"},{"constant": true,"inputs": [],"name": "get","outputs": [{"name": "retVal","type": "uint256"}],"payable": false,"stateMutability": "view","type": "function"}]) 

> simpleContract.new(20, {from:eth.accounts[0], data: bytecode, gas: 0x47b760,privateFor: ["ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc="]})

Und dann überprüfen Sie es mit var test2 = Attaching ScreeshotsGeben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Führen Sie einen bereitgestellten Vertrag erneut aus und legen Sie den Wert von x erneut fest, oder tun Sie eine Sache, entfernen Sie bitte "private for" und lassen Sie es hier leer. Dann überprüfen Sie bitte, ob es funktioniert
Tatsächlich verwenden Sie im Allgemeinen keine Kontaktadresse. Wenn ich die Werte ändern muss, verwende ich die Vertragsadresse, um den Smart Contract abi aufzurufen. Ich habe Sie gebeten, es zu entfernen, da es für alle Netzwerkpartner ausgeführt wird.