
It’s been a while since we’ve interviewed a member of the team and as we just added a new Core Contributor last week it just felt right to pick back up on the article series. Enjoy!
RS: ExtraHash, thanks for taking this interview! You’ve been in the TRTL community for a few years now, and over this time we’ve watched you grow from a normal user to the developer of our default GUI wallet, and now a core dev, in fact! At the end of this interview, I hope the readers get to know you and your projects as well as the rest of us have, and maybe if we’re lucky it will bring people a little bit closer to one of the people that makes the tools they use daily.
So to take it from the top, how did you find TRTL? Do you remember what brought you here initially?
EH: I found TRTL very early on, within the first month of launch, through a thread someone had posted (where else) on /biz/. It was my first foray into getting involved into a fledgling coin, and let’s just say I didn’t really know what I was getting into. In fact, at the time, I had very little background knowledge of blockchain in general. It was a great experience, and before long I was up to speed on alot of basic blockhain concepts due to the helpful and educational nature of the community.
RS: How long would you say you were a regular user before you got the idea you wanted to be a dev? What was it that made that change?
EH: I didn’t decide to take steps toward becoming a developer until I had already been in the community as a regular user for a bit over a year, sometime in February 2019. I’d say there were two major events that spurred my transformation:
The first event was a video that you actually posted in #general, a movie on open source software and Linux called Revolution OS. It really struck a chord with me. Watching that video made me realize what open source actually was: it’s more than just opening your source code for others to inspect, it’s a revolution and community movement based around allowing others to use and modify software and change it as they see fit. This understanding was eye opening for me, and gave me a bit of a different perspective on TurtleCoin and our community.
dark mode light mode
The second event was the event that actually spurred me to start writing code. Madk had a bot in the market server that was able to give statistics on the network and market: price, hashrate, and so on. He made some changes to the bot that I did not like. So, instead of asking madk to revert the changes, I set out to write my own bot to take its place. That bot became my first ever coding project, and is still running in the market server to this day.
RS: That’s cool, and I’m not sure many people knew that about you. What brought you from doing a chat bot to wanting to design the now default GUI wallet for TRTL?
EH: The chatbot was written in JavaScript, which I had some (but not much) experience with before, mostly simple scripts on web pages and things like that. I set out to learn as much about JavaScript as I could, thinking it would be best for me to at least become competent with one language before attempting to learn others. There were a few other projects in between which I used to further hone my JS skills, but soon I began to want to contribute back to the TurtleCoin community in a meaningful way.
At this point, I was also following TurtleCoin’s development very closely, and one thing really piqued my interest: walletbackend-js. Zpalm had written a really nicely done native JavaScript wallet backend implementation, but no-one was yet developing a new wallet with it. Also, the current GUI wallet was fairly clunky and seemed to be abandoned by the developer. I saw a good opportunity to actually start a project that could improve the end user’s experience with using the network, and from that came Proton, my baby and GUI wallet which i’ve crafted for the community.

RS: What does walletbackend-js do for you, or I guess, for Proton?
EH: Walletbackend-js provides a way to interface with a wallet and the network in native JavaScript, which allows you to do things like write a wallet application or turtle-powered web application. It can run in a lot of places, including directly in a browser. With the old electron-based GUI wallet, there was always some “lag” to the user experience because it was just a graphical front-end wrapping the turtle-service executable. Proton, however, is a 100% native JS application, with no messy child processes.
RS: Is there a vision behind what you’re trying to create? Has becoming the default GUI wallet changed how you feel about the trajectory of Proton?
EH: Well, to be honest, the intention was always to become the default GUI wallet. Eventually I’d like to add multi-coin support for some of the other bigger coins, I think it’d be neat to have a fully open source client-side multi-coin wallet. However, for now, I’m just focused on improving Proton and making it the best possible experience for users on the TurtleCoin network. If anyone would like to see specific features implemented, please feel free to make an issue on the GitHub page with the feature request.

RS: What are some features you’re working on currently that we will be seeing soon that maybe some aspiring developers reading this can help with? Do you have any Good First Issues?
EH: I’m currently working on a search function to search any information locally in the wallet. It’ll match contacts in the new address-book that will be releasing next version, as well as hashes stored within the wallet such as tx hashes and payment IDs.
The issue list is looking rather slim at the moment, but I am having one issue with a module called react-select I’m using on the send page for the address input: you can’t access the context menu to paste via mouse click because the real input width seems to automatically resize based on input size. This would probably be a good one to try and tackle.
RS: For anybody who’s reading this who may want to help, can you touch briefly on the different parts of the tech stack that Proton makes use of? It uses nodejs, what else?
EH: Sure. At its root, yes, it’s a nodejs application. It’s also making use of electron, a framework for developing with web-based technologies on the desktop, and react, a front-end framework for web applications. It’s also making use of redux, react router, and webpack on the web-application side. We’re using bulma for the CSS. Of course as we’ve already mentioned, the TurtleCoin network interaction is powered by wallet-backend-js. I’m also using several tools to make up the development environment like eslint and prettier for code linting and formatting, and react-hot-loader for hot refresh in dev mode.
RS: With a list of technologies like that you’re bound to snag someone’s attention! Extra, thanks for this interview. Is there something we didn’t cover that you want to share with everyone?
EH: Thanks for having me! I’d just like to say thanks again to the TurtleCoin community and especially the developers that have helped me along my path to becoming a dev; particularly zpalm, ibmcd, mary, rock, fexra, and anybody else that’s helped me out along the way. Because of you all I’ve discovered something new that I’m really passionate about and I see myself doing for the rest of my life. I also look forward to getting more actively involved in core development and leaving my own mark on the core TurtleCoin codebase.
Check out ExtraHash’s handywork in the latest release of Proton GUI Wallet at https://getproton.org
If you’re a beginner developer or want to learn more and help out, check here for some good first issues to get started with https://github.com/turtlecoin/turtle-wallet-proton/issues
Node.js Goodness For TurtleCoin – Some of you may know about the TurtleCoin Utilities package that Zpalm and I have been working on to make it very easy to perform a lot of the CryptoNote cryptographic functions in Javascript.
The TurtleCoin-Utils package can be used in browser, in Node.js, react-native, and has TypeScript bindings available.
Using this package, it’s very easy to create new wallets, encode addresses, decode addresses, handle integrated addresses, scan transactions for your funds, create new transactions, and etc.
This package is very powerful and provides a nice way for those looking to get started in TurtleCoin development easy to follow source code that guides you along the way. It is also part of the foundation of TurtlePay payment processing and is used heavily by Zpalms’s wallet backend in JS.
Running all that crypto can be a bit slow in raw JS, but no worries, help has arrived.
The TurtleCoin Crypto module for Node.js is a native C++ addon for Node that provides significantly faster cryptographic routines for use with TurtleCoin-Utils and other packages. It is very generic in handling CryptoNote related cryptography so many projects besides TurtleCoin may find good use of it. It exposes a lot of the underlying cryptography that the TurtleCoin Utilities needs as well as a few extras.
The TurtleCoin Crypto module is automatically loaded as an optional depenedency for TurtleCoin Utils which has the utils package us it for the crypto (30-40x faster than the native JS code) and falls back to the native JS if necessary.
TurtlePay Updates – We’ve been working hard implementing some updates to underlying packages (see above) to speed up the processing of the one-time wallets. In addition, we’ve been working on extending out some of the functionality of the blockchain API to support additional endpoints that provide the necessary data for working with additional wallets like Zedwallet++, wallet-api, walletbackend-js, and the mobile wallet that Zpalm is working on.
Recent updates also include better callback message signing that makes it a lot easier for developers to verify that the callback message(s) that they receive from TurtlePay were indeed generated by TurtlePay.
Multisignature Wallets – I’ve been working pretty diligently the last few days to prepare the underlying cryptographic functions and primitives necessary to bring multisignature wallets to TurtleCoin. This is one of those features that make it easier to perform advanced wallet services that provide extra security for your funds. The cool thing about it is that there are no changes required of the network to support Multisignature transactions so implementing and testing this is entirely wallet side.
More updates to come in the coming days and weeks as I get closer to having something more worth sharing. You’ll probably see me in the development channel throwing chairs until this is finished 🙂