Comments (5)
I think that sounds reasonable, because then we can do one pass to validate the data and then if that succeeds do another pass to hand off data and moneyd to streams, rather than having to partially apply the packet's operations in the case where its rejected.
I suspect that if rejects ACK data it would also cause some confusing cases when we bring in logic around stream closing
from ilp-protocol-stream.
Given that the rules for data are different from the rules for money (successfully sending data while rejecting money is a reasonably common case), I think it makes sense to diverge from QUIC here and ACK on a per-frame basis
from ilp-protocol-stream.
Actually rejecting money or data should only happen if one side isn't respecting the flow control messages. Both sides should tell the other how much money and data they are willing to accept, and they should tell the other side right away if the limits increase.
from ilp-protocol-stream.
I think we should have it only send data on prepares and use ILP fulfills / rejects as ACKs. It simplifies the protocol and if we ever wanted to allow data to be sent in response packets we could add additional frames to handle this later.
Now the question is whether we should count ILP Reject packets that come from the receiver (and are authenticated so we know the prepare really made it to the receiver) as ACKs or NACKs. The data definitely got to the receiver, but they are rejecting the packet. Are they rejecting the data? I'm leaning towards saying that any reject is a rejection of the money as well as the data and the data should be resent. Thoughts?
from ilp-protocol-stream.
This question has been answered for now. We'll track the implementation in #12
from ilp-protocol-stream.
Related Issues (20)
- receiveTotal resolves before fulfillment is sent HOT 1
- Unable to establish connection, no packets meeting the minimum exchange precision of 3 digits made it through the path. HOT 1
- Probing/exchange rates are not a STREAM concern HOT 10
- An in-range update of @types/chai-as-promised is breaking the build 🚨 HOT 1
- Update connection.totalDelivered before outgoing_money
- Unique id per money event HOT 10
- Send-only mode HOT 5
- Stateless STREAM Server
- An in-range update of @types/webpack is breaking the build 🚨 HOT 7
- verifyReceipt function signature
- Connection Timeout HOT 1
- Inactivity Timeout HOT 1
- Connection Timeout HOT 1
- Server connection can't send money on 'connection' event HOT 11
- An in-range update of ilp-logger is breaking the build 🚨 HOT 6
- An in-range update of @types/node is breaking the build 🚨 HOT 29
- An in-range update of oer-utils is breaking the build 🚨 HOT 4
- Don't serialize JSON for logging unless debug is on HOT 1
- An in-range update of @types/sinon is breaking the build 🚨 HOT 2
- Try compiling using Assemblyscript? HOT 2
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 ilp-protocol-stream.