Coder Social home page Coder Social logo

mgysel / blockchain-auction-f3b Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 15.36 MB

Implementation of a traditional and F3B sealed-bid blockchain auction on EPFL Decentralized and Distributed Computing Laboratory's DELA blockchain using Flash Freezing Flash Boys (F3B).

License: BSD 3-Clause "New" or "Revised" License

Makefile 0.07% Go 99.57% Shell 0.36%

blockchain-auction-f3b's Introduction

Sealed-Bid Blockchain Auctions using F3B

Project Description

This project implements a traditional and F3B sealed-bid blockchain auction on EPFL Decentralized and Distributed Computing Laboratory's Dela using Flash Freezing Flash Boys (F3B). In sealed-bid auctions, all bidders submit secret bids during the bidding period. When the bidding period is complete, the bids are unsealed and the highest bidder is declared the winner.

An in-depth discussion of the project can be viewed in Final Report.pdf and Final Presentation.pdf.

Traditional Auction Description

In the traditional auction, each bidder submits a bid transaction during the bidding period and a reveal transaction during the reveal period. The bid transaction consists of both a commit and deposit. The bidder’s commit is the SHA256 hash of the bid and a chosen random nonce. The bidder’s deposit is a payment at least as large as the bid itself.The reveal transaction consists of the bid and random nonce.

During the bidding period, the auction smart contract stores the bidder’s commit and deposit. During the reveal period, the auction smart contract checks that each reveal matches its corresponding bid and stores the matching reveals. When the reveal period is complete, the auction smart contract selects the highest bidder as the winner and refunds the deposit of each losing bidder.

F3B Auction Description

In the F3B Auction, each bidder submits an encrypted bid transaction that is stored on the blockchain. This encrypted bid transaction consists only of the bid, which is transferred to the auction smart contract if it is the highest bid. When the bidding period is complete, the secret-management committee releases the decryption keys for each bid transaction, and the bid transactions are decrypted and executed. The auction smart contract then receives the executed bid transactions. The auction smart contract stores the bid of the highest bidder and does not accept bids of lower bidders. Thus, when a higher bid is received, the auction smart contract stores this new highest bid and bidder and refunds the bid from the previous highest bidder.

Project Files

The project folder structure and files are outlined below:

  • contracts
    • bank
      • mod.go: Implementation of bank smart contract
      • mod_test.go: Unit testing of bank smart contract
      • controller
        • mod.go: Controller for bank smart contract
        • mod_test.go: Unit testing of controller
    • auction
      • mod.go: Implementation of traditional auction smart contract
      • mod_test.go: Unit testing of traditional auction smart contract
      • controller
        • mod.go: Controller for traditional auction smart contract
        • mod_test.go: Unit testing of controller
    • auctionF3B
      • mod.go: Implementation of F3B auction smart contract
      • mod_test.go: Unit testing of F3B auction smart contract
      • controller
        • mod.go: Controller for F3B auction smart contract
        • mod_test.go: Unit testing of controller
  • dkg
    • pederson: Mahsa Bastankhah's implementation of F3B
  • test
    • SymmetricEncrypt_test.go: Implementation of AES encryption and decryption.
    • TraditionalAuction_test.go: Integration testing for the traditional auction system
    • TraditionalAuction_evaluation\textunderscore test.go: Latency and Throughput evaluation of the traditional auction system
    • F3BAuction_test.go: Integration testing for the F3B auction system
    • F3BAuction_evaluation_test.go: Latency and Throughput evaluation of the F3B auction system
    • F3B_test: Mahsa Bastankhah's implementation of F3B

This framework aims to deliver a modular approach to a public ledger implementation. This project is under heavy development at this stage. Don't consider using it for the moment.

Go lint Go test Coverage Status Go Report Card

Browse the doc at https://dedis.github.io/dela/, or directly in /docs


This project has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No 825377.

blockchain-auction-f3b's People

Contributors

mgysel avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.