Job description & requirements
In this role, you will be required to contribute to the development of a Plasma chain based on Tendermint Core. The work will be technically challenging and involves grappling with low level programming (relative to web development), with high levels of concurrency and asynchronicity. Due to the nature of the project, you will be expected to navigate complex codebases with minimal or outdated documentation, that is to say, it is often the case that the only means of grasping certain patterns and concepts is to read the code of existing implementations.
• Minimum 2 years of experience building concurrent backend applications in a statically typed language, preferably Go.
• Able to distinguish between the basic consensus algorithms (PoW, POS and co., PBFT) and their trade-offs.
• Familiar with the differences between UTXO and account-based bookkeeping models and their trade-offs.
• Understanding of low level encoding protocols (e.g., RLP, VLQ etc).
• Comfortable designing and writing code at a low level of abstraction (byte-level string parsing/manipulation, bit manipulation) often without conveniences such as floating point numbers.
• Familiar with the basic differences between RSA and ECC and how/why they work. You should be able to explain why blockchains opt for ECC over RSA-based algorithms, and how hash-based proofs work (think Merkle trees)
• Not averse to picking up abstract mathematics (number, set theory) and mathematical notation on the fly, as you will inevitably have to parse research papers that often include a healthy dose of formal proofs.
• Understanding of fundamental data structures (array, list, hashmap, binary tree, prefix tree etc.) and their trades offs both in space and time complexity.
• Willing and able to grasp an unknown codebase possibly written in an unfamiliar language, and port relevant constructions/patterns to target language (e.g., read the codebase of Bitcoin core in C++ and be able to relate map patterns therein to equivalent implementations in Go)
• Intellectually curious with a preference for technically challenging work with a high degree of ambiguity/uncertainty
• Familiarity with Solidity is a plus
• Familiarity with Go is a plus, although experience in any other sufficiently low-level, statically typed OO/procedural language is acceptable (C, C++, Java, C#, Rust)
Solidity Blockchain Golang C++
What’s it like working at Tribe?
Our culture code:
- We're obsessed with our users and customers, not competitors
- We believe in work+life, not work versus life
- We communicate transparently within team members
- We're focused on data and KPIs
- We get things done with a strong sense of urgency
Who are we looking for to join our team?
We're looking for team players who are:
- Willing to fight for the greater cause and not for self glory
- Genuinely nice people with a kind heart
- Not looking for a short-term return
- Not looking for a 9-to-5 job but is seeking for a roller-coaster ride with a team of crazy people
- Believes in our mission, values, and culture
- Works hard and plays hard