FilcoinPricingMechanism (FPM)

A decentralized pricing mechanism for Filecoin. FPM connects users with the most suitable storage nodes and derives optimal prices based on supply-demand rules. The solution hides identity of its users and ensures the correctness of the computations with minimal overhead.

Demo Video Source Code


FilecoinPricingMechanism (FPM) is a decentralized platform enabling trustworthy assignments of items (storage capacity) and prices between a large number of sellers and bidders, through the support of multi-item auctions. FPM takes as input storage node descriptions and constraints/budget of user willing to store their data. FPM produce an optimal assignment between buyers and sellers and derives prices maximizing social welfare. I.e., user1 rents node2's storage for 10 FIL, use3 rents node5's storage for 5 FIL etc.. It replaces manual price negotiations currently deployed in Filecoin. Our platform is implemented as a smart contract and leverages the Ethereum blockchain for auditability, combining efficient off-chain computations with novel, on-chain proofs of misbehavior. The optimal assignment is computed by a single node off-chain and submitted to the blockchain. We thus avoid costly computations on top of smart contracts that must have been executed by all the miners. We design a lightweight verification protocol for auctions, so that anyone can verify the submitted solution for a fraction of the time required to compute this solution (similar to computing and verifying a proof of work). If a solution is incorrect, the verifier can submit a proof of misbehavior to the smart contract. The smart contract check if the proof of misbehavior is correct with 2-5 arithmetic operations and discard the incorrect solution. FPM uses threshold blind signatures and commitment schemes to provide strong privacy guarantees while making bidders accountable. User submit their coins to a common deposit and receive cryptographic material specifying how mow money they submitted. The cryptographic material can be randomized locally, so that the bidder identity is protected. I.e., it is impossible to tell who rented specific storage node. The buyer can still prove that he won the auction to the assigned storage node using direct communication. We've implemented a smart contract + a python-based CLI client for all the required operations.

How It's Made

The Smart Contract part of FPM is implemented in Solidity as a smart contract and deployed on ethereum. We've built a python3 CLI client to interact with the blockchain using Currently, we query Filecoin network for miner information using Lotus and submit them to the Ethereum Contract using the client. This is necessary for the smart contract to verify if a submitted solution is correct. We believe that putting offers on-chain lowers the amount of data submitted to the blockchain. Currently, on Filecoin, storage offer details are not submitted on-chain. However, deals (with a complete description) are. Putting offers on-chain and referring to them when submitting deals lowers the amount of data on-chain in a long run.


Michał Król Alberto Sonnino Zhiyi Zhang
← click here to see all projects