Job Description
Summary
The role of our Protocol Engineering team is to build state-of-the-art blockchain clients (nodes).
- R&D working culture
- Designing and building distributed and fault-tolerant systems
- An appreciation of scalable, high availability, and low latency architectures
- Implementing networking layer and P2P protocols
- Processing and management of large data sets with strict real-time performance requirements
- Optimizing software performance
- Opportunity to work with the top software engineers and research professionals to solve the toughest technical challenges
- Working with the latest tools and technologies
- Troubleshooting
Must Haves:
- Ability to implement efficient algorithms and design complex data structures
- Excellent programming skills, C# or Rust or GO preferred but will also consider other tech stacks (e.g. Java, C++)
- An understanding of good software architecture
- Ability to write clean, testable and maintainable code without over-engineering
- An entrepreneurial nature, willing to take ownership and run toward problems
- Several years of experience in software development
- Strong computer science background
- A fascination with the inner workings of blockchains
Nice to Haves:
- Distributed networks (P2P)
- Performance and memory optimisations
- Blockchain / EVM / TransactionPool / JSON RPC
- Complex data structures for example Patricia-Merkle/Verkle tries
- NoSQL Key Values databases for example RocksDB
- Cryptography
Examples of projects the team has worked on:
- Building of Ethereum client from scratch
- Implementation of Snap Sync protocol that improves the speed of Ethereum node synchronization over the network
- The Merge - implementation, and migration from Proof of Work to Proof of Stake
- Performance improvements to an internal virtual machine (EVM)
- Improvements to memory management
- Design and implementation of efficient and robust data stores and caching
- Libp2p implementation in C#
Skills
- C++
- Database Management
- Development
- Java
- Rust
- SQL