The condition of the problem and the statement of the problem: Alice pays Bob for the fact that he, at the request of users, gives out files of interest to users. For example, the user is interested in the file #hash1. The user learns from Alice that this file is stored by Bob. The user connects to Bob and asks to start downloading the file #hash1 to his computer. Then there are two possible bad outcomes. Either Bob is dishonest and refuses to transfer the file to the user, or the user is dishonest and, after receiving the file #hash1 from Bob, lies to Alice and tells her that Bob did not send him anything.
My question is: are there any algorithms in cryptography that Alice will be able to determine the truth and not pay money to Bob (if he lies) or not stop cooperating with Bob (if the user lies)? At least partially. Thank you.
Personally, I thought that my problem relates to the topic of fair exchange (when the two sides exchange bit by bit interesting information and if one side begins to behave dishonestly, the second party immediately stops exchanging and the damage for it is minimal). However, this does not solve the problem that the user can simply lie and say that Bob did not send anything. I just want to know if it's possible to control the work of a third-party server for Alice.