spacemeshos/POET-OLD

Implement the POET Server in C++ (Contest)

Open

#4 opened on Oct 3, 2018

 (4 comments) (0 reactions) (0 assignees)Go (8 forks)auto 404
EPICfunded 💰good first issuehelp wantednew feature

Repository metrics

Stars
 (10 stars)
PR merge metrics
 (PR metrics pending)

Description

Overview

  • This issue describes the task for the Spacemesh Server POET contest - please read the contest terms before applying for the contest.
  • Implement the core POET server as defined here in C++.
  • Please also refer to #2 - the issue for implementing the server in go-lang.

Contributors Profile

  • Proficient in C++ - we expect an efficient and clean implementation
  • Some C++ crypto coding experience
  • Good technical english reading and writing skills
  • Familiar with the principles of modern applied cryptography. A graduate-level applied crypto course e.g http://toc.cryptobook.us/ knowledge
  • Able to understand the claims (as well as the algorithms and data structures) in the relevant research papers, though it isn't essential to understand the proofs of these claims
  • Able to read Python code and to review the provided reference Python code
  • Able to allocate ~15 work days over the calendar month since starting to work on the issue for this issue
  • Able to deliver all deliverables in 30 calendar days since starting to work on the issue
  • Able to conduct Github code review sessions with Spacemesh open source maintainers and security researchers

Deliverables

  • Buildable POET Server implemented in C++ per the pec containing 2 main components: Verifier and Prover
  • Efficient supporting data structures and types design and implementation
  • All specified tests implemented and all tests pass
  • Unit tests implemented for all functions and types and all test passes
  • >80% code coverage for unit tests
  • Code is well documented - every method, struct and types are documented
  • Usage of clean idiomatic modern C++
  • Prover works correctly with the Spacemesh POET verifier web service
  • External dependencies approved by Spacemesh research team

Code Review

The code will be review based on 3 criteria:

  1. Efficiency - the implementation will be reviewed for efficiency by the Spacemesh core dev team
  2. Security - the security of the implementation will be reviewed by the Spacemesh research team
  3. Correctness - the correctness of the implementation providing a solution for theoretical constructs and correct operation against the Spacemesh POET web service prover and verifier.

Implementation Notes

  1. Implement a distinct type for the Verifier and a type for the Prover
  2. Implement all integration tests by using a verifier and a prover instance
  3. Use the sha256-smd library for sha256()
  4. Minimize use of external dependencies and only use deps approved by Spacemesh research team

Contributor guide