Senior Software Engineer – Layer 1, Ethereum

Clearmatics is a protocol engineering company.

Clearmatics is a protocol engineering company. We are building a new financial market architecture that is more open, fair, and resilient than the legacy systems that are in use today. We develop protocols and software that create new markets for risk and more efficient infrastructure for trading, backed by a robust and scalable blockchain network, and secured with modern cryptographic techniques and economic mechanism design.

Clearmatics is based in London but operates on a ‘remote first’ model. We welcome candidates from all over the world. We have close ties to the Open Source and Ethereum communities, with Vitalik Buterin as an adviser.

The Engineering team at Clearmatics is responsible for developing our blockchain software at Layer 1 and Layer 2. At the core of our stack is the Autonity client, the node software that powers our blockchain network. It is based on Ethereum (go-ethereum) and is secured by Tendermint Proof-of-Stake consensus. Our decentralised platforms are built on smart contracts and decentralised applications, and are supported by backend services in Go.

We’re looking to hire a Senior Software Engineer to expand our Layer 1 Engineering team.

ABOUT YOU

As an experienced backend software engineer with a good knowledge of blockchain protocols, you know what it takes to ship a secure, reliable, and performant blockchain node client. You write clean and maintainable code, and you take the time to promote good software engineering practices. You understand the importance of careful protocol design choices and can anticipate the impact of changes to the code base. You are able to communicate your thoughts clearly in writing and in discussions.

RESPONSIBILITIES

Develop and maintain the blockchain node client (go-ethereum fork) and related protocol smart contracts (Solidity)
Implement new protocol-level features based on academic papers, technical specifications, and proof of concepts
Refactor the code base for better maintainability and to meet performance and reliability requirements
Develop distributed system tests and frameworks to verify the correctness of our protocol and software
Participate in team and community decision-making about technical design and architecture considerations
Participate in code reviews and evaluating contributions from the open source community
Contribute to documenting and educating the community about our protocols and blockchain software
Address bugs reports or security incidents and engage with users and researchers to understand and resolve them

REQUIREMENTS

At least a Bachelor’s degree in Computer Science (or related field) and 5+ years software development experience
Proficiency in a systems language like Go, Rust, or C++ with a focus on network and concurrent programming (Go is preferred)
Experience developing and debugging complex data structures, algorithms, and network I/O in a Linux environment
Development experience on a blockchain node client (preferably Ethereum-like) and familiarity with smart contract programming
Knowledge of blockchain fundamentals such as distributed consensus, peer-to-peer messaging, cryptography primitives

BONUS POINTS

Knowledge of Ethereum protocols and technologies (e.g. devp2p, EVM, Web3, Solidity) and go-ethereum internals in particular
Ideally 2+ years solid experience with Go programming and some open source contributions that you can highlight
Knowledge of distributed systems fundamentals such as fault tolerance, consensus, voting, leader election, failure detection
Experience designing or implementing Proof of Stake and BFT-style consensus algorithms (e.g. Tendermint)
Don’t worry if you don’t meet all the requirements. If you are talented and have what it takes, then we’d still like to hear from you.

Our compensation is blockchain competitive and dependent on your skills & experience.