From Newbie to Core Contributor w/ ExtraHash

Here, you can see the knuckles lifting gently off the ground as a user becomes a dev

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.

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.

Shows you node fee info too, which is handy

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

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

Weekly Update

This Week In TurtleCoin (FEB 19, 2019)

Two roundups in three days, who knew we’d be so lucky! Back on schedule!

Developer Updates

TurtleEDU – Thanks to all of the students who have submitted spelchex and currectshuns forr TurtleCoin 101 🙂 Fexra and I have had a fun time hunting down errors and resetting passwords. The email system is still kind of a joke (it uses a gmail integration that worked one time, we swear), so please write down your passwords until we figure out something to fix it. A lot of you have been asking about when followup classes will be ready, and I’ve begun gathering information about what people want to see in the Beginner’s Git class which goes over the Git version control tool we use. If you have suggestions relevant to the Git class, please post them in #edu_general. Since the goal of the first class was to turn people into competent TurtleCoin users, the goal of this next class will bring everyone to the level where they should feel comfortable contributing on Github, which as you may know is how you get your pink “Contributor” role in Discord. – Rock

Turtle Swap Protocol Whitepaper – I had the chance to speak with Napoleon (from TRTL and VELD) and we’re fleshing out some of the concepts laid out in the Turtle Swap Protocol Whitepaper as it appears he’s been working on developing a similar concept for Veldspar. The concept aims to enable wallet to wallet transfers of multiple currencies without touching an exchange, and in this case it’s particularly interesting as it’d involve a swap outside of a cryptonote network. I’m hesitant to call them atomic swaps just yet, but the whitepaper gives the gist of how it’d function at a conceptual level. We’re looking for other devs to collab with on developing the next draft of the whitepaper, so if you’re the type of person who’s interested feel free to stop by the chat in #dev_general or create an “issue” in the turtle-labs repo. – rock


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 🙂

turtlecoin-nodes-json – I’ve removed 32 unreachable nodes from the public nodes list. This should make using applications, that pull from the list, a little more user-friendly. I wrote a script to poll public node availability and used the results from a period of 12 hours to determine which nodes would be cut. I only removed nodes that were 100% inaccessible. If you feel your node was removed in error, please check that your node is publicly accessible and create a pull request to get it back on the list. To ensure your node is reachable you can use the netcat command on linux (e.g. netcat -vz mydomain myport) or use one of the many websites that checks for open ports. – andrew |

Thinkpol’s TRTL Tetris! – This one was submitted via the chat but was pretty awesome so i had to show you guys. One of our users on the TurtleCities server, Thinkpol, created this awesome TurtleCoin Tetris game on his TurtleCities homepage, and coolest of all he did it with less than 2.88MB of storage space for the entire site. Just in case some of you don’t know, TurtleCities is like our free GeoCities replacement for the old fogies in our crowd who remember that place. If you want to see some of the pages others have made, check out

Javascript Wallet Backend – Hello, If you are a developer, you have probably interacted with turtle-service. It works well, but sometimes you need a little more fine grained control to give better error messages, and not have to worry about firewalls blocking your connection to the RPC. Enter This provides the same sort of functions as turtle-service, however, it is written in Typescript, and so can be easily used in both TypeScript and JavaScript environments. You can use this instead of turtle-service to build wallets, and other services. It should give a better level of integration, allowing your program to be more user friendly. A simple example is it offers events, which can make your code easier to read, and saves you having to check the status of the wallet every N seconds.

wallet.on('incomingtx', (transaction) => {
console.log(`Incoming transaction of {prettyPrintAmount(transaction.totalAmount()} received!`);

It also adds a number of utility functions, such as formatting atomic amounts, validating addresses, and much more. If there’s something you’d like to see that’s missing, I’ll be happy to add it.
Thanks to iburnmycd, it now automatically includes support for speedy C++ cryptography, and so wallet syncing speed will be similar to turtle-service, rather than having to use slow JavaScript.
The backend also supports the TurtlePay blockchain cache API – This works just like a daemon, but has much better uptime, and can also speed up wallet syncing.
One thing I haven’t got to yet is adding support for fusion transactions, but this will be pretty easy. If you’re wanting to use them, give me a ping, and I’ll get them added. – Zpalm

Promote Your Bounty

1,500,000 TRTL – Cryptonight Soft Shell GPU miner integration with pool compatible mining software. – Hooftly

Community Advertisements – Mine with Muxdux. We are a small pool trying to get a little bit bigger. Join our active discord channel (

Shoutouts & Thanks

rock  – Thankful for the TRTL core team putting in work around the clock to bring us new features and goodies. Also thankful for all the communities around us that lend us their users for diabolical testing fun and games and their devs that help us achieve our goals. Thanks to everyone who helped us get here.