Skip to content

Latest commit

 

History

History
46 lines (29 loc) · 2.24 KB

README.md

File metadata and controls

46 lines (29 loc) · 2.24 KB

FedEthML

Blockchain project - Sapienza University of Rome

Our Dapp, FedEthML, shows how the blockchain technology can be adopted to address two of the main issues of Federated Learning. The first is centralization: the central server is replaced by the blockchain, and any adversarial behavior of the central node is therefore prevented. The second issue is represented by the lazy/adversarial behavior of training nodes. This problem is (partially) solved by introducing an incentive mechanism based on the proof-of-stake upon which the Ethereum environment relies

Different workers with different datasets will participate in the training, which will be coordinated by a smart contract deployed on an Ethereum blockchain.

For further details check the Report.


USAGE:

'cd' into the root folder.

If it's the first time you open this project, run: 'npm install' to install all the dependencies.

'npx hardhat node' to spin up a local developement blockchain.

In another terminal:

'npx hardhat compile' to compile the contract inside the contracts folder.

'npx hardhat run --network hardhat ./scripts/deploy.js' to deploy the smart contract.

'python ./scripts/python/number_oracle.py' starts and oracle sending random numbers to the smart contract (they are needed for some stuff).

In another terminal:

'npm run dev' starts the web app.


IMPORTANT: This project uses IPFS from Pinata. To correctly create and visualize the tasks you need to correctly place your Pinata credentials in the ipfsFunctions.jsx file.