Categories
Weekly Update

This Week In TurtleCoin (Feb 25, 2019)

Finally! Unless you’ve been under a rock somewhere you might have noticed something the last day or so. Coming by a block without about a thousand transactions waiting to get in it ahead of you was pretty tough if you were trying to sync a wallet yesterday. Kind of makes you wonder, was this an attack or was TRTL suffering from an inability to tolerate any and all types of traffic?

Both, is your answer. Like we’ve said before, this is far from the worst we’ve seen, but any time transactions are slowed down and mining is impacted, we have to jump into action…. And action is what took place! Keeping with tradition, we released a hot patch, courtesy of Zpalmtree which effectively limits the amount of “extra data” you can tack on to a transaction. Everything that needs to fit in a transaction will still fit in a transaction after the patch takes place, just with less wiggle room for any BS.

Thanks for your patience while we got things cleared up 😀 and now for our developer updates…

Developer Updates

There is a pending fork upgrade in 9 days, if you care about transactions flowing as fast as usual, please make sure you’ve updated to help push out spam attacks like these in the future –

Japawolf Meetup – Japakar and greywolf’s rescheduled meetup was a great success! There was some hardware exchanged – some video adapters for this (https://turtlenode.co/img/colorswitching-turtle.gif), and Japakar got a handful of TurtleCoin stickers that Browns1964Champs sells. greywolf wore his TurtleCoin t-shirt from DonMatus on Amazon. Most of the convo was about TurtleCoin: challenges of non-devs to setup and keep running a public node (including the good and bad of using the HA wrapper vs just simply making a script of commands), the pros and cons of various wallets currently in use, the great camaraderie in the community, and the quality and abundance of spot-on support from so many friendly turtles. They also talked a little DeroGold chatter; different techniques in web hosting; comparison between hosting services, with and without VPS; and a little normie shit. – Japakar & greywolf

TurtleCities – We are growing quickly at 45 current users and plenty more on the waiting list 🙂 Just a reminder for those on the waiting list, if you want to move up to the front of the line, just hop in discord and talk to RockSteady and if you ask nicely you can have a free account too. What is TurtleCities? Well, a lot of us old tortoises used to use a service called Geocities in the early days to make free homepages to show our flashy gifs to our friends and share our embarrassing music preferences, so we thought it’d be cool to have something similar for TRTL users and we named it TurtleCities. You get 1 floppy disk worth of space to express yourself to your heart’s content. You’d be surprised what people have done with their pages! We also offer paid services like linux shell accounts and dual density floppy storage, with a 100% no-money-back guarantee on service quality and outages. You can’t beat it, folks.

Thinkpol’s page – http://pages.turtlecoin.lol/~thinkpol/

Tgroh007’s page – http://pages.turtlecoin.lol/~tgroh007/

PeteOnealJr’s Page – http://pages.turtlecoin.lol/~peteonealjr/

Emperor’s Page – http://pages.turtlecoin.lol/~emperor/

Wesley’s Page – http://pages.turtlecoin.lol/~wesley/

My page – http://pages.turtlecoin.lol/~rocksteady/

credit -> @turtlewayne on instagram

The Great Spam Incident of 2019 – For those who skim, the top part mentioned briefly a spam attack. If you’d like, here’s a grossly exaggerated and satirized sequence of events, sponsored by TMZ.

The last day or so, someone was uploading 0.1 TRTL transactions by the hundred, which were packed to the brim with the same nonsense data over and over, and a picture of a red mario shell with the little yellow points above it. We lol’d, then we cried. It disrupted the flow of transactions because the transaction pool quickly swelled to almost 10k transactions that we had to chew through in order to get through it all. In a perfect world that’s no problem for our network, we have really fast blocks that are pretty stretchy, but this time that fought us somewhat as I also mentioned the transactions were filled with trash. In two days we added a few hundred megabytes to the chain, and had a taste of what mainstream adoption would mean volumewise on-chain.

A hot patch was pushed out first to our biggest block producers to get them to agree to stop pushing nonsense, or as little nonsense as possible with the transactions in their blocks. We don’t want to deny that traffic, we just don’t think someone should be able to pack the traffic full of trash that we have to carry for all of history. We did this by limiting the size of something called TX_Extra, which is similar to the OP_Return field if you’re familiar with BTC and how extra data works in their transactions. Typically what goes in this field is a payment ID, or an encrypted chat message, or whatever you want to put in there evidently.

The turtle shell gif was funny, but the network choked as our smallest daemons were tapping out as their mempools started flooding. Each daemon has a record of the transactions it sees waiting in line for processing, and at a certain point the size of that waiting list can cause them to shut down. For some reason, nobody knows why, this almost never affects Windows daemons, as much as that hurts to say. As things reached a fever pitch, the biggest block producers had implemented the fix and we began chopping through the weeds to clear out the work (we currently sit with 2 transactions in the pool as I write this) things started to show signs of calming down.

Fuckery, Act II – Well, as one might ask, what happens when someone splits their entire stack into a mountain of little tiny pennies (pennii?), well of course, they have to convert them back into dollar bills don’t they?

Enter TRTL’s second Achilles Heel, the fusion transaction backlog, AKA the Coinstar of Death.. When someone needs to make a transaction consisting of a lot of inputs, the wallet might try to “fuse” some of those to turn the little pennies into dollars. We’ve done articles about this in the past, so it’s not a new concept and it helps us a lot, and usually any slowness in the chain is usually a large exchange doing a full fusion optimize on their wallet. Unfortunately constantly cranking out the spam-pennies for two days straight means you have a LOT of pennies to turn back into dollars, and they’re limited as to how many can be converted in each block by a ratio set in the code. To make matters worse, we have the same issue we mentioned before because these fusions tend to flood the transaction pool with at times *thousands* of transactions.

More chewing ensued. Much patience was had by the community as the miners strapped their hardhats on and went to work yet again to clear out the weeds, and many hours later here we are. Core team’s going to hibernate for a day or some and come back with some updates that have a bit more finality to them rather than being a patch. Thanks for your patience and help in getting this fixed 🙂 – TRTL Core Team

Bounty Hunters!

10,000 TRTL – Write a guide on mining TRTL on an iOS phone with the app XMR Miner. Must be modeled after existing guides, I can give a hand wherever needed! – Sajo8

200-700 TRTL per fix – Help correct information or fix broken links in the turtlecoin docs! Bounty depends on information fixed, feel free to contact me for more info – Sajo8

Easy Beginners For Devs

Want to get your feet wet being a developer at TRTL? Here’s a list of issues in our core Github repo that Zpalmtree has marked as “Good First Issues” which are easy low hanging fruit for people to earn their pink Developer role in Discord. Here is a link and brief description just in case you’re interested!

Add RPC method to validate address
https://github.com/turtlecoin/turtlecoin/issues/733

Prune spent inputs after some period of time from WalletBackend
https://github.com/turtlecoin/turtlecoin/issues/708

Add https support to cpp-httplib/nigel
https://github.com/turtlecoin/turtlecoin/issues/713

Support Blockchain cache API in Nigel
https://github.com/turtlecoin/turtlecoin/issues/712

Add a logger to WalletBackend
https://github.com/turtlecoin/turtlecoin/issues/709

Daemon+WalletBackend timestamp adjustments
https://github.com/turtlecoin/turtlecoin/issues/704

Display unlock time / timestamp in list/incoming/outgoing_transfers zedwallet/zedwallet++
https://github.com/turtlecoin/turtlecoin/issues/675

Community Advertising

FlowMine TurtleCoin Pool, from the owner of FlowMine DEGO Pool. Happy mining! 🙂 – http://trtl.pool.flowmine.xyz

New pool from the owner of FlowMine DEGO Pool. Trying to find more users to mine with us. Feel free to come over and dig some TRTL. You can also use our remote node to sync your wallet: trtl.pool.flowmine.xyz:11800

Shoutouts & Thanks

Big thanks to Zpalmtree for the mobile android wallet and the hot patch, I hope you’re sleeping well 😀 – rock

Thanks to whoever spammed the chain so we could get stuff done that we should have done anyway – rock

Thanks to Fipsi for donating his skills toward our project. Same goes to the rest of you. – Mining4Vets

 

Categories
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

http://edu.turtlecoin.lol

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

https://github.com/turtlecoin/turtle-labs/blob/master/Turtle-Swap-Protocol-Draft-001.md

NPM

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.

NPM

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 | trtl.rocks

https://github.com/turtlecoin/turtlecoin-nodes-json

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 pages.turtlecoin.lol

http://pages.turtlecoin.lol/~thinkpol/

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 https://github.com/turtlecoin/turtlecoin-wallet-backend-js 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

https://trtl.muxdux.com – Mine with Muxdux. We are a small pool trying to get a little bit bigger. Join our active discord channel (https://discord.gg/QJ37K9Q)

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.