bigchaindb / bigchaindb-driver

Official Python driver for BigchainDB
https://www.bigchaindb.com
Apache License 2.0
105 stars 104 forks source link

(draft) Support multi node querying for transaction status #327

Closed sbellem closed 6 years ago

sbellem commented 7 years ago

Problem

Given a permissioned network of N nodes, capable to tolerate f byzantine nodes, such that N >= 3*f + 1, a client needs to obtain a trustworthy answer from the network.

As an example, a client may need to know whether a transaction has been committed to the blockchain. How many nodes should the client query?

lower bound: f + 1 upper bound: 2*f + 1

Assuming that N >= 3*f + 1, then as soon as a client obtains f + 1 identical answers, then this answer should be reliable. The client may need to query up to and including 2*f + 1 nodes in order to obtain f + 1 identical answers.

sbellem commented 6 years ago

Of relevance for the tendermint-based arch: https://blog.cosmos.network/light-clients-in-tendermint-consensus-1237cfbda104

/cc @codegeschrei @vrde

kansi commented 6 years ago

@sbellem Since a BFT network requires >2/3 votes for a transaction to be commited. Would it make sense to just query one node and verify if f+1 nodes voted/signed the transaction?

codegeschrei commented 6 years ago

This is needed, but now that we have BEPs it should be made into a BEP (discussions about it included)

https://github.com/bigchaindb/BEPs