synechron-finlabs / quorum-maker

Utility to create and monitor Quorum nodes
Apache License 2.0
196 stars 97 forks source link

Tessera "storeraw" endpoint is not available --> can't perform private transactions #114

Open bmasarwi opened 5 years ago

bmasarwi commented 5 years ago

Hi guys, I'm using QuorumMaker to run a Quorum network with two nodes and Tessera. The command i used: "./setup.sh dev --tessera --project --nodecount 2"

Also, i'm using web3j's contract wrappers to perform a very simple private transaction, but it keeps failing with a "404 not found" response whenever QuorumTransactionManager attempts calling Tessera's "storeraw" endpoint.

However, when i use a different approach: "Quorum.ethSendTransaction( privateTransaction)" it does work. But this approach is very verbose and requires nonce management.

I think the second approach works because it doesn't go through Tessera's "storeraw" endpoint.

Somehow QuorumMaker runs Tessera with "storeraw" endpoint disabled, in comparison, Quorum's 7nodes example does have this endpoint available in Tessera, thus private transactions are available through TransactionManager.

How can i make QuorumMaker run Tessera with above endpoint enabled?

ab-chowdhury commented 5 years ago

Can you please try setting up a development network using the following command

./setup.sh dev --project Test --nodecount 2 --tessera

and then try performing private transactions by deploying private contract of quorum's 7 node example. Don't forget to replace the public key in privateFor field in private-contract.js file using your public key before deploying it.

masarwib commented 5 years ago

The issue seems to be caused by the a wrong generation of "tessera-config.json" which leads to some Tessera APIs being disabled. I replaced "tessera-config.json" by the following and it worked:

{ "type" : "config", "useWhiteList" : false, "disablePeerDiscovery" : false, "jdbc" : { "url" : "jdbc:h2:file:/node1/node/qdata/node1;AUTO_SERVER=TRUE", "autoCreateTables" : true }, "serverConfigs" : [ { "app" : "P2P", "enabled" : true, "communicationType" : "REST", "sslConfig" : { "tls" : "OFF", "generateKeyStoreIfNotExisted" : false, "serverTrustCertificates" : [ ], "serverTrustMode" : "TOFU", "clientTrustCertificates" : [ ], "clientTrustMode" : "TOFU" }, "serverSocket" : { "type" : "INET", "port" : 22002, "hostName" : "http://10.50.0.2" } }, { "app" : "Q2T", "enabled" : true, "communicationType" : "UNIX_SOCKET", "serverSocket" : { "type" : "UNIX", "path" : "/node1/node/qdata/node1.ipc" } }, { "app" : "ThirdParty", "enabled" : true, "communicationType" : "REST", "sslConfig" : { "tls" : "OFF", "generateKeyStoreIfNotExisted" : false, "serverTrustCertificates" : [ ], "serverTrustMode" : "TOFU", "clientTrustCertificates" : [ ], "clientTrustMode" : "TOFU" }, "serverSocket" : { "type" : "INET", "port" : 22007, "hostName" : "http://10.50.0.2" } } ], "peer" : [ { "url" : "http://10.50.0.3:22002/" } ], "keys" : { "keyData" : [ { "privateKeyPath" : "/node1/node/keys/node1.key", "publicKeyPath" : "/node1/node/keys/node1.pub" } ] }, "alwaysSendTo" : [ ] }

zhoushuntong commented 4 years ago

hi,masarwib, i use your method ,it doesn't work. wether something left?