## 2 State-of-the-Art
### Reputation Systems  
Reputation systems are of the utmost importance in decentralized networks, as they enforce trust and accountability among participants. These systems evaluate and quantify entities' trustworthiness based on their behaviors and interactions. This evaluation ensures reliability and promotes honest participation. Unlike traditional centralized reputation systems, decentralized approaches leverage blockchain technology to offer enhanced transparency, immutability, and security. The authors in [45] have created a separate blockchain for storing reputation, where reputation is quantified objectively by storing binary ratings, 1 for a positive transaction and 0 for a negative one. A positive transaction is one where the user receives the requested file. Identity creation is linked to IP addresses, which increases the cost of creating multiple identities. A Proof-of-Stake mechanism is used for low-reputation users; they must stake a small amount of currency into a triple-signed wallet (involving the sender, receiver, and a third party) to discourage dishonest behavior. This binary approach to reputation has the advantage of simplicity. However, it lacks scalability because it cannot be applied to systems requiring more nuanced representations of reputation. In many scenarios, reputation is more nuanced and might need to be represented on a continuum, such as a rating scale from 1 to 10 or through qualitative feedback regarding user performance and behavior. Some notable proposals are made in [46], such as the weighting of feedback based on the evaluator's reputation, ensuring that feedback from low-reputation users matters less. To motivate users to provide ratings and comments, the system incorporates a monetary reward mechanism. The proposed system leverages the Ethereum blockchain, using Solidity for smart contracts, Truffle for development, Web3.js for blockchain interaction, and IPFS.js for decentralized storage. The reputation system proposed in [47] uses a beta reputation model to calculate a vehicle's reputation score, which ranges between 0 and 1, based on its observed behavior. This computational model uses the beta distribution function, where the ratio of positive to negative behaviors determines the score. Positive behaviors, such as correctly reporting traffic conditions, increase the reputation score, while negative behaviors, such as false reports, decrease it. The system incentivizes honest behavior by adjusting the number of coins a vehicle can use based on its reputation score, promoting active and honest participation in the network. To protect privacy, vehicles generate one-time public keys for local blockchain interactions, concealing their actual identities while maintaining the trustworthiness of their activities. This approach ensures that while a vehicle's temporary identity and reputation level are known to others in the network, its overall activity history remains hidden. [PERSON] et al. [48] examine various decentralized reputation systems and divide them into three categories: deterministic, probabilistic, and flow models. Deterministic methods use straightforward algorithms to compute reputation scores. These methods typically involve summing up ratings or feedback received from other participants. Probabilistic methods use statistical models to estimate the reliability of a participant based on past behavior. These models take into account the uncertainty and variability in user actions and make use of methods such as Bayesian networks, maximum likelihood estimation, and hidden Markov models. Flow models assess reputation by examining the flow of trust across the network. They consider both direct interactions (where one participant directly rates another) and indirect interactions (where reputation is influenced by ratings from trusted intermediaries). Examples of these models include the PageRank algorithm, EigenTrust algorithm, and trust propagation models (if user A trusts user B, and user B trusts user C, then user A might have a derived trust score for user C).