Skip to content

xsk07/FedEthML

 
 

Repository files navigation

FedEthML

Blockchain and Distributed Ledger Technologies - Sapienza Università di Roma

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.


Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 68.3%
  • Solidity 16.9%
  • Python 12.9%
  • CSS 1.1%
  • Other 0.8%