Comments (7)
In the standard bft client-server communication scheme, the client sends a query "2x2=?" and receives a calculation result of "4" from each node, collects a quorum of responses and concludes that 2x2=4.
In this variant, losing more nodes will result in an error.
In the fabric with the, the client sends a request "2x2=?" and receives a "accepted for processing" response from each node.
And quorum is collected by peers using BFTDeliverer.
The client receives the result of calculations from the peer.
Therefore, the broadcastToAll function should be rewritten as follows:
- if the request has not reached anyone, an error is returned
- if nodes >= quorum are reached, then we can successfully exit without waiting for all nodes to be reached.
- if at least one node has been reached, then success is also returned
from fabric.
my option is to submit bft
from fabric.
if at least one node has been reached, then success is also returned
why? if you reached a single node, including the transaction in a block is not guaranteed.
from fabric.
why? if you reached a single node, including the transaction in a block is not guaranteed.
Right, no guarantees, but in most cases (temporary failures) the transaction will be executed and delivered.
This is what the test shows (https://github.com/hyperledger/fabric/pull/4414/files), I removed Resubmitting and after the nodes returned, the transaction was executed.
But in the fabric we don't expect results from orders, we expect results from peers.
from fabric.
Now I have one point, the point of "it's not clear what happened" where I can stop, figure it out, and fix it. It's the point of waiting for an event from the peer. Your variant adds another such point for me: the error is back, but check it may not be an error.
Consequently, the client application to the fabric will have to become more complex. I would like to see such applications simplified.
from fabric.
If you send a transaction and it failed reaching a quorum of nodes, the right way to deal with it, is retrying and then it will hopefully reach a quorum of nodes.
In any case, the client application should be aware that once it submitted a transaction to the network, it may have been included in a block. That is the case for both CFT and BFT.
Sending the transaction only to 1 node will only delay its inclusion in a block and it's better to retry than to hope it will get in eventually.
from fabric.
I think it's a complication of the program and a suggestion to the client using the factory to rewrite their applications for bft.
from fabric.
Related Issues (20)
- orderer does not start as described in devmode HOT 2
- Error: query failed with status: 404 - namespace basic is not defined HOT 2
- Support CouchDB indexes on implicit org collections HOT 1
- Update documentation: Variable name in Tutorials/Create a Channel HOT 1
- Add CouchDB index support to implicit private data collections HOT 2
- Move to Go v1.21.9 HOT 2
- TLS Certificate chain not accepted when registering HOT 1
- Frequent unit test failure - TestBFTDeliverer_CensorshipMonitorEvents HOT 5
- what is the recommended docker desktop version? HOT 1
- CouchDB queries are extremely slow after many queries are made HOT 7
- Yesterday I can run it,but today can't HOT 1
- Allow the peer delivery client to select between the Deliverer or BFTDeliverer HOT 11
- docker.errors.DockerException: Error while fetching server API version: HTTPConnection.request() got an unexpected keyword argument 'chunked' CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- Docs is using Obsolete version reference release-1.4 to hyperledger-fabric-ca HOT 4
- Open Telemetry Monitoring supports
- Upgrading the fabric version from 2.2 to 2.5.4
- Make cryptogen and configtxgen non-internal modules HOT 1
- Unable to update ServerTLSCert and ClientTLSCert for Orderers HOT 1
- Should we introduce a `osnadmin channel info` subcmd? HOT 7
- when reboot the Fabric system, one peer got error " getLocalAddress -> local IP address not auto-detectable: Error: route ip+net: netlinkrib: permission denied".
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fabric.