Getting started

Introduction

Definitions

Ideas and Theory

Use Case

Constructions

How it Works?

Related Protocols

Open Problems

Useful resources

Documentation

Outreach Talks

# Filecoin Proof of Space

We will present an instantiation of PoS protocol in Filecoin where implementation and optimization details are omitted.

## Seal Operation

Seal is an operation used on the data $D$ to create a replica. The following properties are requiered to hold for Seal:

- Seal forces replicas to be physically independent copies by requiring provers to store a pseudo-random permutation of $D$ unique to their public key, such that committing to store $n$ replicas results in dedicating disk space for n independent replicas (hence n times the storage size of a replica)
- Seal enforces that the generation of the replica takes substantially longer than the time expected for responding to a challenge.

**PoS.SEAL**

Inputs: – prover key pair $(pk_P ,sk_P)$ – prover SEAL key $pk_{SEAL}$ – data $D$ Outputs: replica $R$, Merkle root commitment $C_R$ of $R,$ proof $π_{SEAL}$

**PoS.Prove**

Inputs:

– prover PoSt key $pk_{POS}$ – replica $R$ – random challenge $c$ – time parameter $t$ Outputs: a proof $π_{POS}$

**PoS.Verify**

Inputs:

– prover public key $pk_P$ – verifier SEAL and POS keys $vk_{SEAL}, vk_{POS}$ – hash of data $D, h_D$ – Merkle root of the replica, $C_R$ – random challenge,$c$ – tuple of proofs, $(π_{SEAL}, π_{POS})$ Outputs: bit $b$, equals 1 if proofs are valid