FakeBuster is an academic project, developed with the purpose of allowing the detection of Fake News, using a decentralized approach. The goal of this project is to provide a democratic way to manage the choice of which news should be marked as fake, in order to prevent possible bias from centralized entities.
A paper dedicated to a more thorough discussion of the system can be found at the following link: [TBA when paper is published]
The system was developed using Solidity smart contracts, and it runs a truth discovery algorithm for the identification of Fake News through a voting-based game.
This system manages three main roles:
- Submitter: user who submits a piece of news for an evaluation by the system.
- Buster: user who bet a low amount of money on the result of an evaluation, and obtain a small reward if right.
- Expert: user who bet an high amount of money on the result of an evaluation, and obtain a big reward if right.
And three possible evaluation choices/outcomes:
- True: if the evaluated piece of news is considered to be real.
- False: if the evaluated piece of news is considered to be fake.
- Opinion: if the evaluated piece of news is considered to be an opinion article.
The workflow for the evaluation of a piece of news is the following:
- A submitter communicates to the system a piece of news to be evaluated.
- The busters and the experts stake their money to bet on the result they believe to be correct.
- If the outcomes for, respectively, most of the busters and most of the experts match on a single one, then this is the final result of the evaluation.
- If the outcomes do not match, the final result of the evaluation will be Unknown.
- Finally, the votation participants will receive their rewards.
To execute correctly the script is necessary to create a .env file inside the directory, in particular the file has to contain the following data:
- SUBMITTER_PRIVATE_KEY: private key for the wallet of the submitter
- EXPERT_PRIVATE_KEY: private key for the wallet used to simulate the behaviour of the expert
- DEPLOYER_PRIVATE_KEY: private key for the wallet used to deploy the smart contract
After downloading this repo, execute the following commands:
npm install
to install all the project dependenciesnpm start
to execute the script
After any modification to the FakeBusters.sol file, the contract has to be re-compiled using the command npm run compile
; since for the compilation process we use etherline, it could be necessary to install it using the following command: npm install -g etherlime
.