2 Comments

Good article, but, if I may, I would ask two clarifications.

> Problems points out that no matter how many messages two nodes exchange, they can never be one hundred percent sure about each other's state.

I think that it is a little bit misleading, if both generals are correctly receiving both messages and acknowledges why can't they say that they know the state of each other?

I believe the sentence makes sense only when one of the two isn't receiving a message or an acknowledge.

> certain constraints are relaxed to make the systems work.

I think the word 'constraints' is a little bit misleading. What constraint are you relaxing with a retry system or an automatic refund?

What do you think?

Thank you

Expand full comment
21hEdited

@Antonio Thanks for taking time to read the article. And great observation btw.

> I think that it is a little bit misleading, if both generals are correctly receiving both messages and acknowledges why can't they say that they know the state of each other? I believe the sentence makes sense only when one of the two isn't receiving a message or an acknowledge.

I think the question here is how both the generals know that the other has received the message. It will be through acknowledgements. But hypothetically there can be a never ending cycle of acknowledgements required. For eg. G1 sends a msg, G2 acks. Now G2 will know if its ack reached G1 if G1 sends an ack for G2's ack. Now, G1 will only know if its ack was received by G2 if G2 sends another ack for G1's ack. and this cycle continues. This potrays the idea that with finite messages sent two generals can never be 100% sure about each other's state.

> I think the word 'constraints' is a little bit misleading. What constraint are you relaxing with a retry system or an automatic refund?

This is a good point. As mentioned in the article, with constraints, I meant no harm is done if the store and payment system are unable to communicate and work together. As stated, if stores doesn't send the download link, payment can be refunded. And if payment ack fails, store can query to check if payment happened. In case of two generals, if G1 or G2 attacks and the other doesn't, they will be defeated by the city and that constraint on the problem is not reversable. With reversable I mean, say G1 is defeated, they can't go back and start again, unlike our ecommerce store example.

Hope this clarifies. Once again thanks for your time to read the article.

Expand full comment