---
name: Summer of Bitcoin Project
about: Template to suggest a new https://www.summerofbitcoin.org/ project.
title: ''
labels: 'summer-of-bitcoin'
assignees: ''

---

<!--
## Overview  

Project ideas are scoped for a university-level student with a basic background in CS and bitcoin 
fundamentals - achievable over 12-weeks. Below are just a few types of ideas: 

 - Low-hanging fruit: Relatively short projects with clear goals; requires basic technical knowledge 
   and minimal familiarity with the codebase.
 - Core development: These projects derive from the ongoing work from the core of your development 
   team. The list of features and bugs is never-ending, and help is always welcome.
 - Risky/Exploratory: These projects push the scope boundaries of your development effort. They 
   might require expertise in an area not covered by your current development team. They might take 
   advantage of a new technology. There is a reasonable chance that the project might be less 
   successful, but the potential rewards make it worth the attempt.
 - Infrastructure/Automation: These projects are the code that your organization uses to get its 
   development work done; for example, projects that improve the automation of releases, regression 
   tests and automated builds. This is a category where a Summer of Bitcoin student can be really 
   helpful, doing work that the development team has been putting off while they focus on core 
   development.
 - Quality Assurance/Testing: Projects that work on and test your project's software development 
   process. Additionally, projects that involve a thorough test and review of individual PRs.
 - Fun/Peripheral: These projects might not be related to the current core development focus, but 
   create new innovations and new perspectives for your project.
-->

**Description**
<!-- Description: 3-7 sentences describing the project background and tasks to be done. -->  

**Expected Outcomes**  
<!-- Short bullet list describing what is to be accomplished -->   

**Resources**  
<!-- 2-3 reading materials for candidate to learn about the repo, project, scope etc -->  
<!-- Recommended reading such as a developer/contributor guide -->  
<!-- [Another example a paper citation](https://arxiv.org/pdf/1802.08091.pdf) -->  
<!-- [Another example an existing issue](https://github.com/opencv/opencv/issues/11013) -->  
<!-- [An existing related module](https://github.com/opencv/opencv_contrib/tree/master/modules/optflow) -->  

**Skills Required**  
<!-- 3-4 technical skills that the candidate should know -->  
<!-- hands on experience with git -->  
<!-- mastery plus experience coding in C++ -->  
<!-- basic knowledge in matrix and tensor computations, college course work in cryptography -->  
<!-- strong mathematical background -->
<!-- Bonus - has experience with React Native. Best if you have also worked with OSSFuzz -->

**Mentor(s)**  
<!-- names of mentor(s) for this project go here -->

**Difficulty**  
<!-- Easy, Medium, Hard -->

**Competency Test (optional)**  
<!-- 2-3 technical tasks related to the project idea or repository you’d like a candidate to 
    perform in order to demonstrate competency, good first bugs, warm-up exercises -->
<!-- ex. Read the instructions here to get Bitcoin core running on your machine -->
<!-- ex. pick an issue labeled as “newcomer” in the repository, and send a merge request to the 
    repository. You can also suggest some other improvement that we did not think of yet, or 
    something that you find interesting or useful -->
<!-- ex. fixes for coding style are usually easy to do, and are good issues for first time 
    contributions for those learning how to interact with the project. After you are done with the 
    coding style issue, try making a different contribution. -->
<!-- ex. setup a full Debian packaging development environment and learn the basics of Debian 
    packaging. Then identify and package the missing dependencies to package Specter Desktop -->
<!-- ex. write a pull parser for CSV files. You'll be judged by the decisions to store the parser 
    state and how flexible it is to wrap this parser in other scenarios. -->
<!-- ex. Stretch Goal: Implement some basic metaprogram/app to prove you're very familiar with BDK. 
    Be prepared to make adjustments as we judge your solution. -->
