web3labs / crux

Data Privacy for Quorum Blockchains
https://www.web3labs.com
Apache License 2.0
53 stars 28 forks source link

db.Read returning error "leveldb: not found" #56

Open Lsquared13 opened 5 years ago

Lsquared13 commented 5 years ago

Hi, I am trying to integrate our version of geth with crux and encountering an issue. I can send a private transaction, but when the intended recipient receives the block and tries to retrieve the payload from crux, the db.Read call returns an error: leveldb: not found.

This error is not terribly helpful, and I was hoping you might have an idea what it means in this context and what would need to be remedied to ensure this isn't an issue. This seems to occur randomly. Yesterday I was able to send and receive a private transaction entirely. Today, with a new test network, I encountered this error instead.

More details on my setup:

I am testing on a small network in AWS, with 3 nodes connected to 1 bootnode in a single region. The bootnode is intended to act as a bootnode for both geth and crux.

My bootnode runs crux like this:

crux --url=http://34.229.205.169:9000/ --networkinterface=0.0.0.0 --port=9000 --grpcport=8090 --workdir=/opt/quorum/constellation --publickeys=private/constellation.pub --privatekeys=private/constellation.key --verbosity=3

My regular nodes run crux like this:

crux --url=http://ec2-34-235-137-202.compute-1.amazonaws.com:9000/ --networkinterface=0.0.0.0 --port=9000 --grpcport=8090 --workdir=/opt/quorum/constellation --publickeys=private/constellation.pub --privatekeys=private/constellation.key --verbosity=3 --othernodes=http://34.229.205.169:9000/

Any help understanding what's going on here would be appreciated

Lsquared13 commented 5 years ago

On a hunch I tried adding the recipient directly in othernodes manually. My private transaction test worked using this method twice in a row on separate networks. Using the regular bootnode method, it almost always gives me leveldb: not found, but I seem to have gotten lucky once yesterday and had it work.

I'm guessing that my sender and receiver aren't networking properly most of the time via the bootnode, and I suppose it worked one time for reasons that aren't clear. I'm guessing the leveldb error is complaining about not being able to find the payload because the sender and receiver aren't networked.

Is there anything I should know about connecting my crux nodes through a well-known bootnode? Does crux support this? Did I misconfigure something?

Thanks