Невозможно взаимодействовать с DApp, развернутым на кворуме

введите описание изображения здесьЯ не могу взаимодействовать с контрактом, используя Dapp, развернутый в блокчейне Quorum (используя метамаску). Я следую « https://truffleframework.com/tutorials/building-dapps-for-quorum-private-enterprise-blockchains ». Я успешно настроил блокчейн Quorum 7node, затем создал простой набор и получил Dapp для того же контракта, который указан в приведенной выше ссылке. Мне удалось импортировать монетную базу каждого узла в метамаску. Я создал 3 пользовательских RPC http://127.0.0.1:22000 , 22003 и 22006 и импортировал соответствующую базу монет в метамаску (следуя « Как импортировать учетную запись из консоли geth в метамаску (частный блокчейн) »). Я создал простой app.js, похожий на учебник по трюфельным зоомагазинам,

Файл App.jsвведите описание изображения здесь

Я развернул контракт с тегом privateFor при миграции и для функции set так же, как показано в примере truffle quorum 7node.

Но когда я пытаюсь изменить значение данных хранилища из dapp, я не могу его изменить (оно отражает одно и то же постоянное значение). тогда как с узла geth я могу изменить значение данных хранилища. Даже из sampletx.js (используя truffle exec sampletx.js) я могу изменить значение данных хранилища.

Ответы (1)

Да, я могу помочь вам здесь Шаги

  1. Бродяга вверх (только один раз)
  2. Vagrant ssh (одна панель cmd)

Вы получите как vagrant@ubuntu-xenial:~$

После этого перейдите в cd quroum-example/7nodes/

3.в том же cmd $./raft-start.sh 4.Выполните эту команду vagrant@ubuntu-xenial:~/quorum-examples/7nodes$

Откройте новый терминал и перейдите в каталог quroom-example и введите vagrant ssh

5.откройте новый экземпляр geth здесь, используя 3,4 шага выше, добавьте экземпляр geth, но на этот раз geth прикрепите qdata/dd4/geth

6. это выше - ваша среда сборки для двух экземпляров geth.

7. В учебнике « https://truffleframework.com/tutorials/building-dapps-for-quorum-private-enterprise-blockchains » у вас будет каталог, напримервведите описание изображения здесь введите описание изображения здесь

в терминале geth прикрепите qdata/dd1/geth используйте эти команды

=> 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="]})

А потом проверить с помощью var test2 = прикрепив скриншотывведите описание изображения здесь

введите описание изображения здесь

Сделайте что-то еще раз, развернув контракт, и снова установите значение x, или сделайте что-то, пожалуйста, удалите «частное для» и оставьте его здесь пустым. Затем проверьте, будет ли он работать
на самом деле, вы не используете способ контактного адреса, как правило, если мне нужно изменить значения, я использую адрес контракта для вызова смарт-контракта abi. Я попросил вас удалить его, потому что он будет работать для всех одноранговых узлов сети.