About Protocol Labs
Protocol Labs drives breakthroughs in computing to push humanity forward. Protocol Labs is a product-development lab, but behind the protocols and tools we build, behind the research and implementations, are passionate people, teammates, and community members. Most teams in the Protocol Labs Network are fully distributed and work remotely around the world. Engineers, researchers, and operators work in the open to improve the internet — humanity's most important technology — as we explore new advances at the intersection of many exciting fields (crypto, networks, distributed systems) and cultures (startups, research, open-source, distributed work).
Drand
The need for digital randomness is paramount in multiple digital applications ([e]voting, lottery, cryptographic parameters, embedded devices bootstrapping randomness, blockchain systems such as Filecoin, etc) as well in non-digital such as statistical sampling (used for example to check results of an election), assigning court cases to random judges, random financial audits, etc. However, constructing a secure source of randomness is anything but easy: there are countless examples of attacks where the randomness generation was the culprit (static keys, non-uniform distribution, biased output, etc).
Drand (pronounced "dee-rand") is a distributed randomness beacon daemon written in Golang that aims to fix that gap by providing a Randomness-as-a-Service network. Drand is meant to be an Internet infrastructure level service that provides randomness to applications, similar to how NTP provides timing information and Certificate Transparency servers provide certificate revocation information. Drand aims to provide a continuous source of randomness to the Internet which is:
- Decentralized: drand is an open source software project ran by a diverse set of reputable organizations on the Internet wherein a threshold of them is needed to generate randomness, which ensure there is no central point of failure.
- Publicly verifiable & unbiased: drand periodically delivers publicly verifiable and unbiased randomness. Any third party can fetch and verify the authenticity of the randomness and by that making sure it hasn't been tampered with.
Servers running drand can be linked with each other to produce collective, publicly verifiable, unbiased, unpredictable random values at fixed intervals using bilinear pairings and threshold cryptography. The drand network is operated by a group of organizations around the world that includes Cloudflare, EPFL, Kudelski Security, Protocol Labs, Celo, UCL, and others. You can learn more by visiting the League of Entropy website, where you can also see the random values being generated by the network in real time.
What we're looking for
We are looking for a seasoned Software Engineer who can contribute to the design, implementation, and optimization of the Drand randomness project while collaborating with technical and non-technical stakeholders within the company, and in the external developer community.
Working closely with internal development teams such as Filecoin, and infrastructure engineering teams, develop new features and enhancements for the Drand protocol implementation. Collaborate with the existing Drand network partners, as well as the external developer community to implement related functionality such as backend systems, smart contracts, and blockchain applications that consume Drand randomness. Taking feedback from team and stakeholders, identify and implement improvements in the software we run, or find opportunities to create new projects entirely to meet the project’s goals.
Responsibilities
- Contribute to development, and maintenance of the implementations of Drand, and related open source projects. Create or maintain client applications, software libraries, and programs depended on by other systems and applications.
- Write high-quality design proposals and technical documentation to aid further implementation using modern software development practices.
- Work alongside a cross-functional team including engineering, design, community, product, and business. Lead and mentor more junior engineers. Help manage third party work by performing code reviews, and helping prioritize work items.
- Interface with the Open Source community to implement and own features that improve adoption of the Drand network as a randomness protocol for the Internet .
- Represent the Drand project at developer conferences, and relevant industry events that may include giving talks, writing blogs, and running demos.
- Offer bespoke infrastructure support where high-priority opportunities arise to ensure the Drand network operates in a highly available manner.
Qualifications
- Mastery of fundamental software engineering practices: testing, debugging, automating, refactoring.
- Excellent written and verbal communication skills on both technical and non-technical issues
- A keen awareness of teamwork, process, and patterns of successful collaboration.
- Proven track record of independently driving projects in a fast-paced environment.
- Significant experience building applications using Go, Rust, JavaScript, or related languages
- Here are some ideal example candidates with Golang experience: https://github.com/hibiken https://github.com/RichardKnop
- Experience designing and building distributed software systems with deep understanding of tools such as protobufs, etc., and network protocols such as TCP, UDP, HTTP.
- Experience refactoring existing codebases, and improving test coverage on complex projects.
- Bonus Points (not required but things to look for):
- Experience leading open source projects, and/or guiding their communities
- Experience building with decentralized building blocks such as smart contracts, blockchain, p2p networking (e.g., libp2p), etc
- Experience with fuzzing or benchmarking of existing codebases, at either the bare-metal or networking layers
- Security engineering and/or cryptography principles and practices
- Experience in monitoring and analyzing infrastructure performance using standard performance monitoring tools such as Prometheus, Grafana, etc.
#LI-NS1
If you’re passionate about the future of computing and a more democratized internet, we want to talk to you.
GDPR for Job Applicants and Candidates
When you apply to a job on this site, the personal data contained in your application will be collected by Protocol Labs, Inc. (“Protocol Labs”), which is located at 427 N Tatnall St #51207, Wilmington, Delaware 19801 and can be contacted by emailing legalrequests[at]protocol.ai. Protocol Labs’ data protection team can be contacted via legalrequests[at]protocol.ai. Your personal data will be processed for the purposes of managing Protocol Labs’ recruitment related activities, which include setting up and conducting interviews and tests for applicants, evaluating and assessing the results thereto, and as is otherwise needed in the recruitment and hiring processes. Such processing is legally permissible under Art. 6(1)(f) of Regulation (EU) 2016/679 (General Data Protection Regulation) as necessary for the purposes of the legitimate interests pursued by Protocol Labs, which are the solicitation, evaluation, and selection of applicants for employment.
Your personal data will be shared with Greenhouse Software, Inc., a cloud services provider located in the United States of America and engaged by Protocol Labs to help manage its recruitment and hiring process on Protocol Labs’ behalf. Accordingly, if you are located outside of the United States, your personal data will be transferred to the United States once you submit it through this site. Because the European Union Commission has determined that United States data privacy laws do not ensure an adequate level of protection for personal data collected from EU data subjects, the transfer will be subject to appropriate additional safeguards.
Your personal data will be retained by Protocol Labs as long as Protocol Labs determines it is necessary to evaluate your application for employment or to assist in the hiring process. Under the GDPR, you have the right to request access to your personal data, to request that your personal data be rectified or erased, and to request that processing of your personal data be restricted. You also have the right to data portability. In addition, you may lodge a complaint with an EU supervisory authority.