Categories
Weekly Update

This Week In TurtleCoin (April 14, 2020)

This week we let Jesus take the wheel as we mashed autocomplete on an iPhone 3G until this issue of the roundup was written..

TRTL Movie Night soon on DJ3d.io? Sound good? Let me know what you think in the chat.

Developer Updates

This is a place where anybody in our community can submit a post about the TRTL project they’re working on. It’s a great way to attract helpers for your project and show people what to keep an eye out for. We encourage you to show works in progress as well as finished products, as we’re happy to see them all and it shows that we’re an active community.

trtl-py on pypi.org

trtl-py is a JSON-RPC Wrapper for TurtleCoind and Wallet-API. I’ve been working on the project since a month, and it’s my pleasure to announce that it’s ready, and out to be used. Would love reviews, suggestions and feedback on the wrapper. I’ve spent a good time documenting everything and providing examples of every method. I hope you’ll like the project and am looking forward to your views on the wrapper. Have a nice week turtles! 🙂

sohamb03

https://pypi.org/project/trtl

https://github.com/sohamb03/trtl-py

https://trtl-py.sohamb03.me

Welcome back IBMCD from his 90 day program, bravely overcoming his battle with Pokemon Go addiction.

Long time, no update from me. Let’s fix that.

Crazy times we’ve all been in the last few weeks. Disrupted schedules, focus changes, priority shifts, you name it. Personally, my days are filled with video conferences and my nights are oft left wondering what the other side of this fiasco looks like. There’s a lot of uncertainty floating around out there and I wonder where I can use my talents to shape the world around me. New problems require new solutions and there’s more than enough problems to go around.

I, for one, have many pans in the fire and wear many hats to say the least. I’m still working on building out full multisig support for the core software but that takes time and focus that isn’t easy to come by when each day is more mentally draining than the last. Instead, I find myself thinking about different use cases for the technology I’ve learned so much about through this community.

Using the technology as method of funds storage and transfer is a use case that works well. Smart contracts, great, okay, sure. Distributed processing, yeah, I can get behind that. What else can be done with the core technology though? Where can blockchain be used that hasn’t been tapped yet? What real world problems can the technology solve that isn’t ultimately throwing the blockchain buzz word around systems and processes that work just fine how they are? There has to be something more than currency and asset tracking that comes from this.

I’ve been tossing some ideas around the last few weeks, quite often while in the shower. There’s nothing solid in my mind yet but parts of a bigger picture are starting to come together. What that means, I can’t say. It is; however, a chicken and egg scenario. I have to be careful not to create a problem to fit the solution I have forming. To do so, will ultimately lead to its own demise before it even gets off the ground.

Til then, I’ll keep chugging away, working on things that make sense to me given the current world stage by keeping my focus where it matters most and helping those that are in desperate need of guidance. As time permits I’ll get back to churning out updates and code.

There’s plenty to do so if you’d like to lend a hand, speak to and I’m sure that I, or any other contributor, will be more than happy to point you towards ways you can help.

Oh yeah, almost forgot, I pushed a new release of turtlecoin-utils a few weeks ago. Now with full TypeScript support. Check it out :)”

IBurnMyCD

Support the advertisers below!

Free AdvertisingTurtleCoin public nodeFree Advertising

This is a spot to spam anything TurtleCoin related that you would like to advertise, it’s free to put an ad in the roundup.

  • Cryptocurrency TipBot for your discord server. Available with many coins including TRTL. https://discordapp.com/oauth2/authorize?client_id=474841349968101386&scope=bot&permissions=3072
  • Get Started Mining Today At MuxDux TurtleCoin Mining Pool https://trtl.muxdux.com
  • Telegram Cryptocurrency TipBot. Available with many coins including TRTL. https://t.me/teletip_bot
    check out the cool web page that my friend Muf made last year for my
  • TurtleCoin public node. check out the cool web page that my friend Muf made last year for my TurtleCoin public node. there is a button to copy the node’s address, a node online indicator, a current CMC snapshot, a TRTL to USD/EUR/GBP/BTC converter, the latest tweet from the TurtleCoin Twitter account, and a link to a video that i just discovered is broken (sorry, i’ll check into it). the node is located in Germany, and i try to keep it up as much as i can. ~greywolf https://TurtleNode.co

Happy Birthday Muf 🙂

Categories
Weekly Update

This Week In TurtleCoin (April 7, 2020)

Quarantine Isolation day 34: A prominent theory is developing that asserts ‘outside’ has simply been a simulation to distract us from our true goal of dominating the meme-coin arms race.

Developer Updates

This is a place where anybody in our community can submit a post about the TRTL project they’re working on. It’s a great way to attract helpers for your project and show people what to keep an eye out for. We encourage you to show works in progress as well as finished products, as we’re happy to see them all and it shows that we’re an active community.

TRTLApps.io

TRTLApps.io is a service I have been working on for the past few months which aims to make it easy for developers of apps and games to integrate TurtleCoin into their projects.

I’m not saying we have secret technology such as NipAlert, but I’m also not saying we don’t have it either.

The service is still in early development and not open to the public, but if you would like to experiment with the API ping me on Discord and I can give you an invitation code.

This past week I’ve been working on a better way for saving and loading the service wallet files to storage, which will allow for periodically creating checkpoints. If we detect that the wallet is in a bad state for any reason(missed transactions while scanning blocks for example), we will be able to rewind the last saved checkpoint we know was in a good state and rescan.

Big thanks to the devs in the discord channels for all your help and patience, and sajo for trying out the service with his game “”Chukwa’s Labyrinth””!

zoidbergZA

https://TRTLApps.io

ExtraHash

Hey guys. Long time no talk, it’s ExtraHash, your GUI wallet maintainer. Not a whole lot has been going on with the GUI wallet lately.. it’s basically reached a point of stability, where new issues aren’t really getting opened up, it seems like everyone is pretty pleased with it overall. So that’s a really nice place to be.

That being said, some things are going to be coming down the pipeline with Karai that I’m looking forward to supporting in the wallet and seeing what that’s going to look like. Additionally, I’m thinking it might be a good time to go for a redesign, since we redesigned the home page. Perhaps we might want to make the interface fit the new brand guidelines better and drop the moniker Proton once and for all, and just release as the TurtleCoin® wallet.

What do you guys think? Drop me a ping in #dev_marketing if anybody wants to discuss this further.

ExtraHash

Moving Up!

It’s always good to be recognized! These are the people who gained new roles in the community this week!

Contributor Role – Alien, Savon

Rig Of The Week

Do you have a TRTL mining rig you want to show off? Tell us about it!

Random found friend’s rig in our Prague office

Contributed by Olé Cuvée

Description: two RX580s with Samsung memory.

Secrets: add objects for drying, does not add to more hashrate, but makes the extra heat useful 🙂

We built a number of rigs in our Prague office, this one is a one of my friend’s 🙂

  • about 18 kh/s on cn-turtle, about 100kh/s on chukwa

Shoutouts & Thanks

This is the place to mention someone in the community who has done something nice or deserves recognition.

  • greywolf thank you to these guys who helped along my journey in the land of TurtleCoin (i think chronologically): Ereptor, Turtle?, zpalmtree, Chef, auto-joe, cryptohno, labaylabay, Crappyrules, morpheus, Mufalito, Japakar, Rogerrobers, ExtraHash, Pluton, and LeoCuvée
  • rock Thanks to everyone who’s been helping out with this whole karai exit scam plan design scheme

A Bit Extra

Worth mentioning are the things that the TRTL community creates that aren’t necessarily TRTL related but still pretty cool. One that I’d like to show you this week is our resident audio-therapist, Oiboo. You might know him from such creations as Turtle Arcade, Turtle Simulator, and a big helper with Chukwa’s Labyrinth. This entire roundup was written with his musical works playing in the background, and I wanted you guys to check it out, he’s got a lot of good chunes for you guys to rock out to while you code.

If you don’t listen to the entire playlist, your mom will die in her sleep tonight.
Listen to these as well for extra TRTL vitality
Categories
Weekly Update

This Week In TurtleCoin (March 31, 2020)

This week we jumped on the LISP train so we can all start writing software the way the good lord intended.

Developer Updates

This is a place where anybody in our community can submit a post about the TRTL project they’re working on. It’s a great way to attract helpers for your project and show people what to keep an eye out for. We encourage you to show works in progress as well as finished products, as we’re happy to see them all and it shows that we’re an active community.

To submit your post, click this link

The New Website

Work is underway to convert the new website from a working concept to an i18n compatible, jekyll-based github static site like our current website on https://turtlecoin.lol .

Earlier this week a volunteer from the chat decided to start the process of porting the new website to markdown. What’s left is turning the various text blobs into mapped quotes for the people who make translations. We try to serve as many regions as possible in their own regional language, so a requirement to launch the new site is for the new site to be i18n ready.

If you’d like to jump in and help out, respond in this issue thread or ping me in the discord and I can get you started.

RockSteady

https://github.com/rocksteadytc/trtl2020/issues/6

https://rocksteadytc.github.io/trtl2020/

pictured above: Zpalmtree answering calls on the request line

wallet-api

This week I added a few new API calls to wallet-api that had been requested by devs.

The first allows you to retrieve all transactions that have a payment ID. This can be useful for people running services where a payment ID is used to identify accounts/users.

The second is along the same lines, but takes a payment ID and returns all transactions with that payment ID. This can allow services to easily retrieve transaction info for a single user.

Zpalm

https://github.com/turtlecoin/turtlecoin/pull/1048

Wallet-API Lisp

This project is a wrapper for the Wallet-API wrote in common lisp. It allows the user to implement wallet functions within common lisp.

I hope to further implement this wrapper in other projects with TurtleCoin and continue experimenting with the language. While experimenting I hope to see how well common lisp fits into TurtleCoin and the community at large.

spfcjic869542

https://github.com/turtlecoin/wallet-api-lisp

Karai Transaction Channels

If you’ve been following the conversations in #dev_karai over the past month, we’ve been conceptualizing how Karai should work. We’re working on a variation of an idea proposed by Fexra, which at the time was to implement Lightning-Network-like payment channels off-chain that are linked on the TRTL chain by simple pointers to the appropriate Karai transaction channel.

I had some spare time after hours and started working on the design and some experimental code for Karai’s payment channels component. It’s nothing worth pushing to the repos yet but should get there soon.

Currently the software can do a few things:

  • add and verify transactions on a local linear chain
  • create transactions that hold blobs of data
  • print the chain and associated hashes and stored data

It has a list of things it can’t do, but it’s coming together slowly but surely, and it’s a fun personal project to whittle on after work every day to sharpen my Golang skills. Things that took place last week that may have not been mentioned are just little things like assigning a license to the project (we chose MIT license), creating an IPFS peer identity for the Karai node, and some basic TRTL wallet api functions to create/maintain a wallet for paying or receiving pinning fees etc.

None of this is super significant, but I wanted to encourage other devs to move back toward the trend of posting updates for their projects that are in-progress rather than waiting on them being completed before posting. Writing about the process as it happens helps us to show the users that we’re always working hard, and makes them more likely to show up on release day or help out with testing.

RockSteady

https://github.com/rocksteadytc/go-karai

https://github.com/RocksteadyTC/go-karai/blob/master/docs/DESIGN.md

Moving Up!

Congratulations fellas

It’s always good to be recognized! These are the people who gained new roles in the community this week!

spfcjic869542 – Developer

Kinjo – PR Guerilla

Shoutouts & Thanks

This is the place to mention someone in the community who has done something nice or deserves recognition.

Rock shout out to to the fellas with the hard hats on in dev_learning putting up with my retardation sometimes 🙂

Stop touching your face.

– Mom
Categories
Weekly Update

This Week In TurtleCoin (March 24, 2020)

This week we all came down with a bit of a cough in rapid fashion. In other news, we’re running out of Doritos, please send help. -TurtleCoin Dev Team

Video: An 8K hi-resolution Gource diagram of TurtleCoin developer activity in our core software repo from birth until 2020. Inhale deeply, sit back and turn on some Led Zeppelin or something, it’s pretty cool.

Developer Updates

This is a place where anybody in our community can submit a post about the TRTL project they’re working on. It’s a great way to attract helpers for your project and show people what to keep an eye out for. We encourage you to show works in progress as well as finished products, as we’re happy to see them all and it shows that we’re an active community.

TurtleCoin COVID-19 Relief Fund

As a followup to our previous TurtleCoin COVID-19 press release, I’ve been hard at work preparing a stimulus package and the means to distribute it to turtles in need. From the essential workers to the already infected, this bot will guarantee TRTL in your pocket despite the hard times.

https://i1.wp.com/media.discordapp.net/attachments/688916582994542682/692217084507324436/unknown.png?w=580&ssl=1

The attached image is simply a preview of what to expect. The numbers aren’t final and I’m looking for donations to fund this thing. Consider it a modified rainbot for our times. I’m putting 500k of my own TRTL in to start, but increasing the pot will increase the fun!

shoutouts to moonmoondogo.

madk bitch.

Blockchain import / export files

This week I have been experimenting with importing and exporting blockchain bootstraps. You can currently import the blockchain from the set of .bin files, but as I think I may have mentioned in another update, I’ve been working on removing those, to save hard drive space to store the blockchain.

technically this image is block-related..

Since the .bin files will no longer exist to be imported with, I’ve added a way to export the blockchain via the daemon, and subsequently imported again. It will also support exporting ranges of the blockchain, so you could, for example, import blocks 2 million to 2.2 million, if you want to catch up your daemon which is synced to 2 million and not have to download and import the whole chain.

Another avenue I’m interested in exploring is allowing syncing wallets via importing one of these bootstraps. This should be faster to sync than directly downloading blocks from a remote node, as there will be no database latency and no network latency.”

Zpalm

https://github.com/turtlecoin/turtlecoin/pull/1033

TurtleCoin.lol 2020 Visual Brand Update

A few weeks ago we got a suggestion to do a site redesign, and after a short conversation in #dev_marketing we had to agree, things were looking a bit dated. Since then, about a week so far, we’ve redesigned the main site and aren’t showing signs of stopping- we think you’ll note a few differences:

  • Instead of a road map or cute story about bebop and rocksteady’s drinking escapades, we now have a dynamic section with links to our most recent blog articles, most recent dev activity, and most recent issues that need helpers on GitHub.
    We think this is more potent data than what we had. With the dynamic data views we replaced it with we think it will show that we’re active and hope that it gives prospective developers and contributors an easy list for getting started helping us out.
  • We’ve decided to pursue a more modern and friendly visual theme than the cryptocurrency-hackery aesthetic we had before (which most of us also really liked). There’s nothing wrong with the look we had, but as we grow and look back, the rough-and-tumble aesthetic of our website very much reflected the state of the core software we had at the time, with all its flaws included.
    Since that time, we’ve chiseled the TRTL software into a solid peer2peer no-trust-required payments network sporting a new set of washboard abs. To signal that change to the uninitiated users we’re hoping to attract, we’re adopting a more unified and professional look to solidify our commitment to being a great payment network, not just a cryptocurrency.

With the new visual path laid ahead of us, we’re starting next on our Branding Manual PDF as well as our social media assets. Thanks to all the Turtles who contributed to the marketing and branding convo in #dev_marketing that inspired this change.

TurtleCoin 2020 Presentation Slide Deck

To best support this transition to a more ‘presentable’ face, we’ve gone ahead and made a new slide deck for TurtleCoin presentations which follows the same visual theme as the site. (Any aspiring brand ambassadors out there, feel free to use these to present TurtleCoin to your peers at any clubs or meetups you may have)

The brand new MIT-license-carrying slide deck style mimics the appearance and visual aesthetic of the new website, and presents some basic guidelines for assembling a visually pleasing and cohesive presentation. We’ll include picture previews below, and will provide the templates in PowerPoint, Google Drive, and PDF formats soon for you to make your own presentations at your local hackerspace or university.

TurtleCoin 2020 Website Preview

In researching the current top 100 currencies on CoinMarketCap, we noticed a consistent visual theme in a lot of the sites. Many of them stopped moving in 2018, about mid-February or March, and their visual first-impressions conveyed that message clearly like a crypto-geocities.

It became evident that our redesign should clearly communicate one thing- TurtleCoin keeps pushing forward, both during the hard times and the good.

The one and only RockSteady, Intrepid Author, Marketing Expert And Style Mogul extraordinaire

Our new visual theme conveys a welcoming visual appearance of an actual payment network like PayPal or Venmo with less emphasis on buzzwords and concepts that don’t matter. This approach of radical honesty sets us apart from the played out crypto-website trends of abstract-geometry javascript wireframe animations and mountains of jargon. Common frustrations in our research were that around the 40th website or so, it took so long to get past the marketing BS and slow page loads that we just closed the tab and moved on.

If you can’t serve a website that loads in under a second and can’t convey your message in the next 5 seconds, you’re not going to hold the attention of the minds of 2020*

*unless boobs are involved, in which case all bets are off..

We’ve got a more ‘tangible’ tagline now which says in plain, honest terms what we are, and prompts the user with a button to start a 3 step process to get started with using TurtleCoin.
The first panel presents familiar icons for a user to choose their operating system and it then downloads the correct software. They’re likely to need help, so in panel 2 we give them an easy list of our social media contact options so while they’re downloading the software they can easily get help or meet peers.
With the focus on rapid user conversion through providing a fast path to engagement, we’re trying to turn eyeballs into capable hands as fast as possible. Past interactions have led us to believe that the faster we give someone their own ‘piece’ of the community to manage and take leadership of, the more of a chance we have at keeping that person and marching them up through the steps of being a user -> helper -> contributor -> developer.
In panel 4, we’ve already been introduced, you’ve likely already started downloading our software and are probably chatting with us in the Discord, so your next question is naturally going to be “whats up with TurtleCoin”. Panel 4 has a list of recent community activity where they can quickly get a glance at the live updated stream of progress to get an idea of what we’re working on and what we’re offering. This is live data, meaning we don’t have to update this, the site does it all on its own. It will never be stale info.
Also of note: the last section there has technical implementation-level information a business would need to interact with our network or to communicate with our peers. It’s not only normal users and devs reading our site, a lot of exchanges list us without asking us for help, a lot of services do the same for what they build, and frankly they shouldn’t need our help with the amount of effort the community put into documentation that is so good it holds your hand through the entire process of building a web wallet or exchange or other service that needs to connect to our network.
https://i0.wp.com/i.imgur.com/s7X3cwe.png?w=580&ssl=1
Sajo8’s awesomely addictive game, CHUKWA’S LABYRINTH!

Chukwa’s Labyrinth

Hey guys! So you may remember the game I was making, Chukwa’s Labyrinth, from a LONG time ago. I started it last summer! Well, with coronacation going on now, I’ve found time I needed to work on it. The UI has been revamped and I’ve added bigger levels as well new powerups.

Additionally, I’ve integrated TRTL payment, so later on, you will be able to buy some DLC with TRTL through the game itself. Check the “”Buy DLC”” button in the Options screen to see more. Shoutout to ibmc and z for helping me, and to zoidberg for his great trtlapps.io service!

Of course, the entire game is open-source, and you can check it out at the links below. I will be releasing a full beta with 10 levels (albeit no DLC) soon, so you guys can try it out and provide advice for the final product.
I’ve been working quite a bit for quite a while on this project, and it’s exciting to see it reach near completion, and I hope you guys will enjoy playing it!

Sajo8

You can try out my game by downloading it from the following link:

https://github.com/Sajo8/chukwas-labyrinth/releases/tag/v0.2-beta

Other links:

https://github.com/sajo8/chukwas-labyrinth

https://www.turtlearcade.games/chukwa.html

https://github.com/Sajo8/netlify-express

Good First Issues

Good First Issues are tickets that are marked as ‘easy wins’ for new developers. If you want to be a TurtleCoin Developer, these are great tasks to start with!

Shoutouts & Thanks

This is the place to mention someone in the community who has done something nice or deserves recognition.

RochStetti di Medici Thanks to zpalm and iburnmycd for helping with the situation in #quarantine-general

RockSteady Thanks to Jerme for the bribes financial contribution

An update on #quarantine-general

Weird things have been happening to the people chatting in this channel. Users are advised to keep a 6 foot distance between themselves and any surfaces in that channel, and to wash your hands before, during, and after shitposting in there. There is a tangible risk, you’ve been warned!! bewaaaaare ooohh spoookyyyyy!!!!

Categories
All

This Week In TurtleCoin (March 17, 2020)

This week we stress tested the servers at Netflix from our couch-offices while we tried our best not to breathe.

Buggles was right.

Developer Updates

This is a place where anybody in our community can submit a post about the TRTL project they’re working on. It’s a great way to attract helpers for your project and show people what to keep an eye out for. We encourage you to show works in progress as well as finished products, as we’re happy to see them all and it shows that we’re an active community. To submit your post, click this link

Karai Development

This is going to be a long one, so, TL;DR – Karai milestone development started.

I uploaded a design-doc for the construction of Karai. It covers some of the basic theory for how the side-channels will work, based on an evolution of Fexra’s idea of Lightning-like off-chain channels discussed in dev_karai at the last meeting of the nerds about a week ago.

https://avatars3.githubusercontent.com/u/39613227?s=200&v=4

join the convo @ chat.turtlecoin.lol

The jist of it is, we’re using the TRTL chain to store small pointers linking to off-chain ephemeral scripts and content with their own associated transaction channels. These channels carry the history of their user’s interactions with the scripts. The channels are interesting in that they’re made to be hosted by anyone, have transactions instead of blocks, and have a higher capacity for transaction throughput than a normal blockchain. The advantage in the no-blocks-no-chain setup is that if we’re only generating transactions when something actually happens, we can have a very efficient mesh of interconnected transactions in a stream that widens and shrinks according to user volume instead of a single chain of blocks.

Some areas we are still discussing that can use your opinion:

  • We have a lot of differing opinions ranging from “do we even need smart contracts” to “should we make our own domain specific language for these scripts” or “should we just let them write scripts in javascript and make the browser do the rendering” and other great ways to get ourselves in deep water. We know the general way in which we’d like to store the scripts and handle content addressing for it, but we’re looking for ideas and opinions regarding parsing and interacting with the stored data. Speaking of stored data, that leads us to the next thing we could use help with..
  • Smart contracts aren’t as attractive as they sounded in 2018 for the normal users, and Crypto-Turtles doesn’t sound like a good use for our time, so though we are planning to allow for pinning scripts that can be parsed/interacted-with by Karai, we’re admittedly at a loss for what value this gives the common user at home.
    The utility of contracts only becomes more evident for businesses, especially so when combined with Multisig which allows, for example a business to create a wallet that requires 3 of the 5 trustees to combine their keys before making a transaction. We’d like to hear ideas from you guys with regards to cool uses for smart-contract-like-things that you like or use on other networks, and it would help us by getting the conversation going in the dev_karai channel so we can cultivate more tangible utility for normal users.

On the development side, currently we have a small list of basic functions outlined in the design doc that I feel we need to reach a suitable mvp. To briefly describe some of the things we have decided on, we are using the libp2p-go library to connect to the IPFS network, which will cover p2p essentials like content addressing, peer management, TLS encryption and NAT traversal for people behind home routers. We also think this is a good idea for p2p because of the fact that this will later allow us to implement caching/pinning of these scripts which should aid in distribution.

Regarding development choices we’ve made, the decision to use Go was because Go has the perks of being a C-like compiled language that can produce a cross platform binary in most cases. Since I’ll be in charge of babysitting and developing this project I wanted it to make sure it is written in something that is a pleasure to read both for others and myself, and is welcoming to new people who may not be as experienced with something like C++.

RockSteady

https://github.com/RocksteadyTC/go-karai/blob/master/docs/DESIGN.md

The TurtleCoin community in China is very large, so we have established a Chinese-only website to help the trtl holders in China. http://trtlchina.com

Blockchain import / export files

This week I have been experimenting with importing and exporting blockchain bootstraps. You can currently import the blockchain from the set of .bin files, but as I think I may have mentioned in another update, I’ve been working on removing those, to save hard drive space to store the blockchain.

Since the .bin files will no longer exist to be imported with, I’ve added a way to export the blockchain via the daemon, and subsequently imported again. It will also support exporting ranges of the blockchain, so you could, for example, import blocks 2 million to 2.2 million, if you want to catch up your daemon which is synced to 2 million and not have to download and import the whole chain.

Another avenue I’m interested in exploring is allowing syncing wallets via importing one of these bootstraps. This should be faster to sync than directly downloading blocks from a remote node, as there will be no database latency and no network latency.”

Zpalm

https://github.com/turtlecoin/turtlecoin/pull/1033

I was bribed paid 999 TRTL to place this ad for a twitch channel here from a guy in the chat. So long suckers, I’m retired now. https://www.twitch.tv/sythecc

This was my plan all along. I’m not sorry.
-RockSteady
Categories
All

COVID-19 TurtleCoin Response

Categories
All

This Week In TurtleCoin (March 10, 2020)

This week we found you can make hand sanitizer for pennies on the dollar by mixing foam peanuts and unleaded gasoline.

Developer Updates

TurtleCoin devs booby trapping the links in roundup submissions knowing Pappy Rocksteady has to click them all..
smdh, yall are playing with the meme master

This is a place where anybody in our community can submit a post about the TRTL project they’re working on. It’s a great way to attract helpers for your project and show people what to keep an eye out for. We encourage you to show works in progress as well as finished products, as we’re happy to see them all and it shows that we’re an active community. To submit your post, click this link

LevelDB

Pluton/CapETN recently made a PR adding a LevelDB database backend. This alternative to RocksDB so far is showing some pretty good results in preliminary testing, with faster wallet sync speeds, and reduced database sizes.

This week, I added some extra features to this PR, the main one being allowing swapping database backends at runtime, rather than compile time. This means you can run a LevelDB and RocksDB backed daemon without having to recompile each time. This should help speed up testing of this new database, and if implemented, will allow users to select the backend that works best for them.

We had some reports that levelDB had high memory usage under Windows when the database was being compacted – I exposed the levelDB max file size configuration as a daemon argument, to test if smaller file sizes causes less RAM usage, as I suspect. Early testing suggests this parameter doesn’t effect database speed, so it may be worth decreasing this for optimal performance.

My changes also improved the database interface to make it easier to implement other database backends in the future. A few months ago, we experimented with lmdb, and Rock suggested BoltDB could be another decent database to try out. This should make it easier for interested parties to try out their favourite database to optimize for their specific daemon usages.

Good work Pluton!

Zpalm

https://github.com/turtlecoin/turtlecoin/pull/1034

https://github.com/wrkzcoin/turtlecoin_rnd/pull/1

TurtleCoin RPC Wrapper – Python

“This is going to be the updated TurtleCoin RPC Wrapper in Python for TurtleCoind as well as wallet-api.

The project has already been started by me, and I’m presently working on the wallet-api wrapper which is the new one.

Neither the docs nor the GitHub repo have any content as of now. I’ve the scripts locally and I’m gonna upload as soon as I’m doing alongside making the documentation for the module.

I hope to have it done by the last week of this month. Stay tuned for updates! :-)”

sohamb03

https://github.com/sohamb03/trtl-py

https://trtl-py.sohamb03.me

CuvéeBits TRTL Mining Pool One Year Anniversary

“Forgotten and covered by some dust sits an ARM board (OrangePI 1+) that I set up as a mining pool about a year to date ago.

We’ve seen good and bad days, at one point the pool (publicnode.ydns.eu) was a top 6 pool, and sometimes it is only a few of my friends using it for almost an equivalent of solo mining.

Some stats for you: Total blocks mined 566, orphan rate about 5.2%, 77 registered addresses, top hash rate about 2.1 MH/s on the previous algo (cn-turtle) and almost 4MH/s at peak times on the chukwa algo.

I run two other pools for TurtleCoin forked projects on ARM boards as well. It proved very reliable, stable, sturdy and powerful enough to accommodate miners of all shapes and sizes, including those with insane hashrate.

Who would expect you can run a mining pool on a credit-card-sized ARM computer that requires little to no maintenance, and that had barely any outage over the past 12 months? ”

Olé Cuvée

https://publicnode.ydns.eu

Hunting for data races in RPC threaded in forked projects

“I spent a good few nights over the past few weeks hunting for core dumps and analyzing them (coredumpctl gdb) across TurtleCoin, DeroGold and WRKZCoin in order to find as many problems with some of the mining pool calls to the daemon via RPC threaded.

As many of you probably know, zpalm did a great job rewriting the RPC daemon code as threaded. The challenge is that now that we unleashed the beast (RPC threaded), it has to interact with the old and ugly dispatcher code, which is single-threaded.

While things look fairly good and stable with TurtleCoin, having help of some of the fork coins proved beneficial – one of the fork coins operate at difficulty target of 20 seconds, and given the network hashrate, miners can mine a lot of blocks – this helped us uncover a few bugs in the blockchaincache code, which in the worst case could badly corrupt database.

As I was discovering the bugs and posted them to our Discord server, zpalm prepared the fixes almost immediately for TurtleCoin, from where myself and I would apply those to with @Pluton to the other two forked coins, testing in production almost immediately 🙂

Great to work together with Zpalm and Pluton on this – few more iterations and I believe we will have fixed most of the issues! ”

Olé Cuvée

This is the italian hand gesture for ‘I have to poop, but just a little”

Good First Issues

Good First Issues are tickets that are marked as ‘easy wins’ for new developers. If you want to be a TurtleCoin Developer, these are great tasks to start with!

Rig Of The Week

Do you have a TRTL mining rig you want to show off? Tell us about it!

Weffke’s ‘The Mining Frankenstein’

I’m Weffke, someone who started mining as an experiment, creating this monstrosity. using all 2nd hand parts and learning things the hard way. Currently running 6KH/s with CPU on RandomX on XMR and having the 2 RX550 do a 50KH on trtl

2 RX 550’s (1x 2GB & 1x 4GB), 6GB ECC memory and 2 x Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz cooled by some of the great but ugly Noctua CPU coolers and an old 128 GB SSD.

TeamRedMiner has my back.

Free Advertising

This is a spot to spam anything TurtleCoin related that you would like to advertise, it’s free to put an ad in the roundup.

  • PWS TRTL Node [US West] “This is my TurtleCoin node. It’s been public since the last month, and I’ve had a good amount of usage of the node, as evident from the regular fee deposits into my wallet.
    The node only has a 5 TRTL fee, and I’ve kept it low enough for sustainability on both ends – mine as well as the end users. 🙂
    Hoping that y’all will like the node. I’m glad to contribute to the TRTL Community. ” sohamb03 http://trtl.sohamb03.me
  • harrynetwork.uk.to Node – only 2.5 TRTL transaction fee! I run the currently cheapest (excluding free) nodes so you should use my node to save on the usually more expensive node fees! Try it out now!
    IP: harrynetwork.uk.to:11898 Harryw007#3340 https://explorer.turtlecoin.lol/nodes.html
  • Small but beautiful pool in the heart of Europe. Check it out. https://publicnode.ydns.eu

Shoutouts & Thanks

This is the place to mention someone in the community who has done something nice or deserves recognition.

  • japakar thanks!
  • Olé Cuvée Shout out to Greywolf, for dedicating so much time and effort to our projects and for being here! Take a good care of yourself!
  • Olé Cuvée Shout out to @Pluton (CapEtn). One of the nicest people I ever met, and a cracking good inspiration for me in things crypto – runs his coin, tipbot across multiple servers and hosts so many other coin nodes (50+ iirc). Hope to meet up in person one day!
  • Rock I didnt want to waste space in the main dev roundup area because it seemed too hype-ish, but the conversation about blueprinting the Karai milestone has restarted now that the network is on more stable footing (thanks devs!). If you’d like to know more, or are wondering what Karai is, please check out #dev_karai in the discord and scroll up about a week.
  • Rock Thanks to everyone for seemingly being a lot more enthusiastic this week about entering stuff in the roundup 🙂 makes me feel all comfy
  • Zerouanita Pepperoni is the best authentic italian pizza only when combined with pineapple, this is true

Categories
All

This Week In TurtleCoin (March 3, 2020)

And just like that, it’s like we never stopped posting :).

Developer Updates

This is a place where anybody in our community can submit a post about the TRTL project they’re working on. It’s a great way to attract helpers for your project and show people what to keep an eye out for. We encourage you to show works in progress as well as finished products, as we’re happy to see them all and it shows that we’re an active community.

TurtleCoin Core

After a successful fee per byte fork and a lot of other big changes, there were a fair few requested features and bugs that needed handling:

  • The first change was to allow wallet-api to support sending multiple transactions simultaneously. This was not encountered in testing, but with more people adopting wallet-api for their services, it was desired to be able to successfully send many transactions back to back, and before this change, the latter transactions would fail due to using the same funds the first transaction used. As the first transaction was still in the process of being created, the funds had not yet been locked from using in transaction creation.
    With the latest code, this is no longer an issue, and you can now send transactions as fast as you please.
  • The next fix was to handle a bug in the wallet format upgrader. In v0.22.0, zedwallet migrated to a completely new backend, which uses a different incompatible wallet file format. Zedwallet would automatically convert the wallet to the new format, but in some cases, there was an issue where the sync would start at an earlier point in the blockchain than expected. This caused transactions to be scanned twice, resulting in some peoples wallets showing double the true balance. While a simple rescan fixes this issue, we have now prevented double scanned transactions from being counted twice.
  • As more service operators have been adopting wallet-api, they desired logging to help track down issues and monitor the operation of services. While both zedwallet and wallet-api already supported logging, this logging can now be easily written to a file, for better integration with monitoring apps, and easier bug reporting.
  • Next up, another one for service operators, is a new wallet-api method to allow exporting the wallet data in a JSON format. This can then be easily imported into other libraries, such as turtlecoin-wallet-backend-js, which allows working with the network directly in javascript, without having to use HTTP endpoints which allows for a much richer API. It also helps aid in debugging, as it can let you inspect all transaction inputs and outputs.
  • Another change that was introduced in v0.22.0 was threaded validation of transaction inputs, which allows for much higher CPU utilization when syncing blocks. This had the unfortunate downside of introducing a race condition when accessing the database, which could rarely cause crashes. This should have now been fixed by using a thread safe database access method. Make sure to try this one out if you’ve been experiencing random daemon crashes.
  • Again on the wallet-api theme, service operators requested further control over fusion transactions. While regular users generally want to keep their wallet comprised of as few inputs as possible, allowing them to send the maximum amount possible with minimum fees, pool owners or other service operators may wish to fuse inputs only up to a certain size, allowing regular payments without locking funds, and transactions with a smaller average size by utilizing primarily inputs of the target output amount. For example, if you regularly send payments of 10,000 TRTL, then you probably want most of your inputs to be around the 10,000 TRTL mark so you use fewer inputs and create less change.
  • Finally, we have a fix for pool owners, which may have caused daemon instability when calling certain API endpoints with an unsynced daemon, mainly the /submitblock method. This is now safely handled, and should not interfere with regular daemon operation.

That’s all for this week. If you’re interested in helping out with development, check out the GitHub issue tracker for easy to tackle first issues.

Zpalm https://github.com/turtlecoin/turtlecoin

Threaded input validation

I was working on another pull request, and to verify everything was working correctly, I needed to do a full sync from zero, without checkpoints. You have to manually disable the inbuilt checkpoints to do this, and it ends up taking an awful long time.

I was checking out my CPU usage, and noticed it was just using a single core, so I set out to figure out if I could speed it up. I started by adding a threadpool class, this lets us run a few threads constantly waiting for work, instead of spawning multiple threads for every transaction to process, which would add a lot of overhead. Once that was done, I just needed to queue up each expensive input validation into the threadpool and wait for them to complete in parallel.

Once done, I was seeing around 30-50% CPU usage, which for my cpu was a speed increase of roughly 4-7x.

The good news is that this improvement also applies when you are syncing new blocks that are not covered by the inbuilt or external checkpoints – so everyone can benefit if they have cores to spare. If not – no problem – you can make it run on just a single thread via a command line option if desired.

Zpalm https://github.com/turtlecoin/turtlecoin/pull/965

Proton Wallet

Hey everybody, Extra here, just checking in on the direction that Proton is headed in. I’m pretty excited about some of these planned changes I’ve begun working on.

Some of you (especially those of you with slower machines) may have noticed that when the wallet is syncing, it slows the GUI down to a halt, particularly some of the more spammy blocks. Well, I’ve began the work of extracting the wallet backend out into its own process. What’s this mean? It means that when completed, the GUI and the wallet syncing process will each use their own process on the CPU; so that even when the CPU is working as hard as it can on the wallet sync, the GUI itself should always be fast and responsive. Neat!

I also want to take the time to thank the TurtleCoin community and the hackathon judges on my hackathon win! If you haven’t seen the project I entered, it’s a 3d visualization of the memory pool. It was a fun project for me to do and I’m totally stoked it won out of 20 entries! Check out the link below if you haven’t seen it yet.

Until next time, stay cool TurtleCoin Community!
ExtraHash http://mempool3d.extrahash.org/

turtlecoin-crypto

Long story short, the turtlecoin-crypto project is the stand-alone version of the cryptography used within a number of community products. It supports Node.js, WASM, JS, C++, C# (via P/Invoke) and a few others.

The biggest updates I’ve added lately include full TypeScript definitions of the library and building the wrapper that is currently in turtlecoin-utils into the base crypto NPM package thereby making it even easier to work with the cryptographic package.

IBMCD https://crypto.turtlecoin.dev/

Good First Issues

Good First Issues are tickets that are marked as ‘easy wins’ for new developers. If you want to be a TurtleCoin Developer, these are great tasks to start with!

Rig Of The Week

Do you have a TRTL mining rig you want to show off? Tell us about it!

This week’s rig, “w1” @ 249 kH – TRTLv3iLkDhPvHYigBwMwv5714t54w6M833cVuQCYKiCTJ3UowAChbV1nBfTcU1XkaJaeAUyQYQqqQdGWobWjkMLH4A4QAoYJo3
It’s free!

Free Advertising

This is a spot to spam anything TurtleCoin related that you would like to advertise, it’s free to put an ad in the roundup.

Shoutouts & Thanks

This is the place to mention someone in the community who has done something nice or deserves recognition.

  • Neo_Chen Mom, I am on TV!
  • greywolf thanks to LeoCuvée for recommending switching from using a micro sdcard to using an ssd via usb3 to store blockchains locally on my Macbook.
  • Jaoakar Thanks for being You! To another great year of turtlecoin.
  • greywolf thanks again to zpalmtree for always stepping up to help a struggling turtle who does not understand code but is immersed in the land of code-writers.
  • greywolf i apologize to RockSteady for egging on a heated discussion in his server that started in a different server, and i should have dropped it. instead, i came into the TurtleCoin server and continued the argument, which was not the right thing to do. Rock wears the crown, so i was out of line.
  • greywolf thanks a lot to zpalmtree and ExtraHash for helping me set up windows and linux testnets. and also thanks a bunch to Crappyrules for a one-on-one tutorial on the internal checkpoints file of the core code. i really appreciate these guys explaining stuff to me in a way that i can undrstand.
  • japakar thanks!

Categories
Feature Story

Migrating from fixed fees to fee per byte – A developers guide

Welcome, developer!

As you may have seen, we are moving to utilising a minimum fee per byte at block 2,200,000. For more information on the reasons behind this decision, please check out this article from the core team: https://blog.turtlecoin.lol/archives/the-turtlecoin-journey-2-years-and-counting/

What do I have to do?

If you have an application which sends transactions on the TurtleCoin network, you will likely have to update your code to work correctly with fee per byte.

Step one is ensuring you have the latest code. This is currently only available in the development branch on GitHub, but will become a published release once fully tested.

Once you are running version 0.22.0 of the software, you will need to update your code to work with it correctly.

The lazy, expensive way

Since we charge a fee per byte of 5.00 TRTL (Or 500 atomic units) per 256 bytes of transaction, and transactions are limited at 124400 bytes if you’re using the core software, you can just set a fixed fee of 2430 TRTL, or 243000 atomic units.

This fee will always be large enough to cover the biggest transactions, so you can just update your fee parameter in your sendTransaction JSON, for turtle-service, and with wallet-api, update your /send/transaction/advanced fee parameter and you’re done. If you’re currently using /send/transaction/basic with wallet-api, you will either want to migrate to using /send/transaction/advanced, or read on for a method that works with /send/transaction/basic.

However, this is not the cheapest way. In addition, if the minimum fee per byte is increased in a later fork, you will have to update your code again. Booooo!

Read on if you want to make your users like you more. Don’t worry, it’s not hard!

The cheaper way

If you just want to use the minimum fee per byte allowed, all you have to do is not specify the fee parameter in your sendTransaction or /send/transaction/advanced JSON. The wallet application, be it turtle-service, or wallet-api, will then automatically calculate the minimum fee for the transaction. If you are currently using /send/transaction/basic, it does not have a fee parameter, so this is the default behaviour.

Once the transaction is sent, the actual fee paid will be returned along with the transaction hash. This way you can update your database, display the fee to the user, and so on, as needed.

“Hang On!” – I hear you shout. How do you know how much the fee will be before sending the transaction? Not to fear – we’ve thought of that.

turtle-service

With turtle-service, instead of using sendTransaction, you can use createDelayedTransaction. This method works exactly the same as sendTransaction, except it does not relay the transaction to the network – so no funds are sent. It will return the transaction hash, and the fee of the transaction.

If the fee is fine, and you want to send the transaction, you can use the sendDelayedTransaction method.

If you’re not happy with the fee, or want to cancel the transaction for some other reason, use the deleteDelayedTransaction method to cancel the transaction. If you do not delete the delayed transaction, the funds will remain unspendable, so don’t forget this step!

wallet-api

With wallet-api, the process is very similar. Instead of using /transactions/send/basic or /transactions/send/advanced, you can use /transactions/prepare/basic or /transactions/prepare/advanced.

As will turtle-service, these methods are identical to the standard ones, and take all the same parameters.

Again, like turtle-service, these methods will return the fee of the prepared transaction, and the transaction hash.

You can then use /transactions/send/prepared to send your prepared transaction if you are happy with the fee. If you want to cancel a prepared transaction, use the /transactions/prepared/{transaction hash}/ DELETE method.

Unlike turtle-service, a prepared transaction does not lock your funds for spending, and therefore cancelling a prepared transaction is not mandatory. It will, however, save a little bit of RAM usage from not having to store the transaction data.

Due to the funds not being locked, this can result in a previously prepared transaction no longer being possible to be sent – If you sent another transaction meanwhile, it could include inputs that the prepared transaction also included.

Finally, due to a deterministic input selection algorithm, even if your prepared transaction is no longer valid, the fee for sending the same transaction again is likely to be very similar. This means you can essentially use the prepare transaction methods as a means to estimate the fee of a subsequent transaction with the same data.

Specifying the fee per byte

If you desire to pay a higher than minimum fee per byte, we have you covered. Simply include the feePerByte argument in your transaction JSON, in replacement of the fee parameter. This value can be a floating point value, and should be greater or equal to the minimum fee per byte of 1.953125.

Examples

turtle-service example

Request before fee per byte
{
   "jsonrpc":"2.0",
   "id":1,
   "password":"passw0rd",
   "method":"sendTransaction",
   "params":{
      "transfers":[
         {
            "address":"TRTLxxxx...",
            "amount":5000
         }
      ]
   },
   "fee": 10
}
Response before fee per byte
{
  "id":1,
  "jsonrpc":"2.0",
  "result":{
    "transactionHash":"ae57e..."
  }
}
Above: Before, Below: After
Request after fee per byte
{
   "jsonrpc":"2.0",
   "id":1,
   "password":"passw0rd",
   "method":"sendTransaction",
   "params":{
      "transfers":[
         {
            "address":"TRTLxxxx...",
            "amount":5000
         }
      ]
   },
}
Response
{
  "id":1,
  "jsonrpc":"2.0",
  "result":{
    "transactionHash":"ae57e...",
    "fee": 4500
  }
}

wallet-api example

Before fee per byte

Request before fee per byte
{
  "destinations": {
    "address": "TRTLv2Fyavy8CXG8BPEbNeCHFZ1fuDCYCZ3vW5H5LXN4K2M2MHUpTENip9bbavpHvvPwb4NDkBWrNgURAd5DB38FHXWZyoBh4wW",
    "amount": 1234
  },
  "fee": 10,
  "sourceAddresses": "TRTLv2Fyavy8CXG8BPEbNeCHFZ1fuDCYCZ3vW5H5LXN4K2M2MHUpTENip9bbavpHvvPwb4NDkBWrNgURAd5DB38FHXWZyoBh4wW"
}
Response before fee per byte
{
  "transactionHash": "396e2a782c9ce9993982c6f93e305b05306d0e5794f57157fbac78581443c55f"
}

After fee per byte

Request after fee per byte
{
  "destinations": {
    "address": "TRTLv2Fyavy8CXG8BPEbNeCHFZ1fuDCYCZ3vW5H5LXN4K2M2MHUpTENip9bbavpHvvPwb4NDkBWrNgURAd5DB38FHXWZyoBh4wW",
    "amount": 1234
  },
  "sourceAddresses": "TRTLv2Fyavy8CXG8BPEbNeCHFZ1fuDCYCZ3vW5H5LXN4K2M2MHUpTENip9bbavpHvvPwb4NDkBWrNgURAd5DB38FHXWZyoBh4wW"
}
Response after fee per byte
{
  "transactionHash": "396e2a782c9ce9993982c6f93e305b05306d0e5794f57157fbac78581443c55f",
  "fee": 1000,
  "relayedToNetwork": true
}

Suggestions

There are a few things you can do as a service operator to decrease the fees you pay.

The first is sending round number outputs. For example, sending a transaction of 20000 TRTL will result in a single output, while sending a transaction of 22222 TRTL will result in 5 outputs. Outputs are not the only thing that make a transaction bigger, but this is one of the variables that you can easily control.

The second is increasing default payouts. Instead of creating 10 transactions of 1000 TRTL, and thus creating 10 outputs, you can instead create 1 transaction of 10000 TRTL, which will only create a single output.

Applying these changes will result in you paying less fees, and will also mean your users pay less fees when they come to spend their funds – they will have less resulting inputs in their wallet, so will create smaller, cheaper, transactions.

Closing remarks

Confused? Want some more help?

Start by checking out the documentation of the API you are using.

Finally, if you just can’t get the hang of it, or want some clarification on how it all works, stop by the #dev_learning or #dev_general channels in our discord, and we’ll happily help you out. If you’re not in discord already, you can find the invite at chat.turtlecoin.lol.

Happy Hacking!

Categories
Feature Story

The TurtleCoin Journey: 2 Years and Counting…

Earlier this month, TurtleCoin celebrated its two year anniversary of starting the project. The community and project have come a long way in the last 24 months and we are all proud of what we, as a community, have accomplished during that time. That’s not to say that we didn’t have a few set backs, learning opportunities, and challenges to overcome that tried our patience at times and ultimately drove the community to make changes to how the network and core suite operates. From multiple PoW algorithm changes, difficulty calculation changes, and a move to static mixins, each change was evaluated and adopted by the community with excitement and hopes for the future health of the network.

We’ve heard the pleas of the community over the last two years and by far the majority of the requests revolved around the folowing:

  • What is the community doing about the chain storage size?
  • When can the community expect more stable daemon/node operation?
  • Is RockSteady Satoshi? (TBD)

These pleas have not fallen on deaf ears and the result of those requests include a culmination of upcoming changes to the network and software with the next release of the TurtleCoin core suite. We are very excited about these changes and believe they are important for everyone to understand.

zedwallet (Legacy Edition)

The application formerly known as simplewallet

Zedwallet Legacy: End of Life

We announced in the v0.20.0 release notes that the legacy version of zedwallet contained in that release would be the last and final release containing legacy zedwallet. This statement still holds true and the code for that old version of zedwallet has been removed from the project. The next release of the core suite replaces the binary named zedwallet with zedwallet++ which is a new, faster, stronger version of the CLI wallet software. The zedwallet binary released going forward will be powered by zedwallet++.

Zedwallet Legacy: End of Support

We also announced in the latest release, that support would end for legacy zedwallet December 31, 2019. Starting January 1, 2020 if you ask for help with legacy zedwallet issues, we will kindly insist (with a stick in hand) that you upgrade your wallet using the latest release of zedwalletwallet-upgrader, or wallet-api. Again, the old code has been removed, lost, buried, and forgotten about at this point.

But, Why?

Don’t be that guy, don’t say you didn’t know.

Simple: portability, maintainability, and scalability. Legacy zedwallet (also turtle-service) based on WalletGreen creates wallets using a very unfriendly internal wallet schema that makes it very difficult to work with in different languages, platforms, and etc.

The new hotness, WalletBackend, creates a friendly, easy to use, fully documented, and portable wallet schema that is a JSON object when decrypted. WalletBackend lowers the barrier of entry for other developers to work with data created by the core tools and thus makes it far easier to develop other cool portable projects like TonChan and many others.

Deterministic Subwallets

It’s pretty much like a choose your own adventure book

We’ve updated the code in WalletBackend to default to the deterministic creation of subwallet addresses and support the restoration of those addresses in a deterministic way. This change is designed to help services in being able to quickly restore subwallet in the event that they lose any subwallet keys.

Instead of generating new random spend keys for each new wallet created in a single container, new wallets in the same container are now derived from the primary wallet address. The details of the how we derive subsequent private spend keys for subwallets is detailed in Issue #831.

Making subwallet private spend key generation deterministic allows for the restoration of any subwallet by just maintaining its index (position) in the wallet container. No more need to store all those extra keys! This is a major improvement for the teams in the community that handle subwallet addresses and users who use subwallet for a variety of purposes.

TurtleCoind Threading

Threading solves everything

RPC

Zpalmtree has worked tirelessly to implement process threading into the core daemon for the RPC interface. This helps keep the RPC interface responsive during heavy load and greatly reduces the impact to the network when the transaction pool gets hit with an influx of transactions. This change will help minimize the effects of heavy load on the network and improve the overall stability of node operations.

Transaction Input Validation

Zpalmtree also added support for threading of the input validation routines for new transactions entering the network. This allows inputs to be validated in parallel and thus drops the transaction validation time considerably. In doing so, transactions enter the network, are propagated across the network, and are ultimately included in blocks faster.

Transaction Pool Changes

How the transaction pool is managed by the core software has been changed recently to help decrease the effects of transaction spam, chain bloating, and other less than helpful actions on the network. We quickly noticed some less than friendly transaction activity taking advantage of our 30 second block times, low network transaction fees, and our good nature as turtles to bloat the chain with low-cost and free transactions that consisted of only breaking apart their funds into shells and recombining them into whole TRTL over and over again.

Transaction Selection Process

We are not the sort to create our own sorting algorithm to sort our sortables

We’ve improved upon the transaction pool ordering and selection criteria for when a miner creates a new block. In short, we’ll always de-preference transactions that are fusions and low total amount transactions as the odds are considerably better that such transactions are “spam”. As always, miners will prefer transactions with higher fees, size, and other metrics to move transactions through the network faster.

Fusion Transaction Limits

We’ve employed additional changes to the transaction pool where each node’s copy of the transaction pool can no longer accept any more than 20 fusion transactions at a time. All other fusion transactions will be rejected until there is room in the transaction pool for more.

This may result in an extended number of fusion rounds for highly disorganized (non-optimized) wallets. If you haven’t fused your wallet in a while, you might want to do so soon.

The line for the Coinstar starts at the back…

Network Upgrade at Block 2,200,000

We have a few consensus changes coming at block 2,200,000 to help improve the stability of the network. These changes are designed to be as transparent as possible but some will reach out and hit you in the face.

Some of these changes are the result of previous discussions in a meta issue and a thorough review of where the network and software can improve the overall experience of the community while maintaining the goals of the project.

Events unfolding over the last few months solidified in our minds the fact that some people just want to see the world burn and as a community, we must take precautionary steps to ensure the longevity of the project.

Output Creation Limits

Starting at the next network upgrade, the network will no longer accept transactions that create more than 90 outputs per transaction. Why apply a maximum you may ask?

+3,500 new 0.01 TRTL outputs created… why do we need those?

There is no legitimate use case in which a transaction need ever create 3,500+ outputs. All this type of transaction traffic manages to do is bloat the blockchain at the expense of every community member. It also ultimately causes the reverse effect and bloats things even further by stuffing the transaction pool and chain full of fusion transactions. Such transaction cycles serve absolutely no purpose and degrade the experience of all users.

Oh yeah… that’s why we need those: fusion spam.

Fee Per Byte

The Backstory

While setting the minimum transaction fee to 0.10 TRTL at the project’s launch sounded like a good idea at the time, such a minimum has serious long term implications. Most importantly, it costs just 0.10 TRTL to send data (transactions) on the network and that data is stored indefinitely and processed by thousands of nodes across the globe thereby consuming a growing amount of resources.

Using such resources is not free and unfortunately, as the chain grows, the resources required to operate nodes grows. The more resources required to operate a node, the less people will be able and willing to commit the necessary resources. Simply speaking, 0.10 TRTL per transaction is not maintainable for the long haul operation of the network.

Okay, Great, Now What?

That math stuff you hoped you’d never need, well… I hate to tell you…

Keeping this in mind, with the network upgrade at block 2,200,000, the network will require a minimum fee for each transaction that is based on a calculation of 0.01953125 TRTL per byte of data of the transaction. This equates to 5.00 TRTL for every 256 bytes of data sent across the network.

Increasing the minimum network fee for transactions means that each transaction is required to pay for its existence and the consumption of network resources proportionate to its size in bytes.

This means that the if you send a transaction using a lot of inputs, or a lot of outputs, contains extra data in the transaction, payment IDs, or etc. (increasing the size of the transaction), you’ll be required to pay your fair share to use the network to transmit and store that data.

As the fees for each transaction are included in the miner block reward, miners will be rewarded with these higher fees for processing transactions. The vast majority of nodes on the network are operated by miners (and pools) so the increase in fees will help to offset the costs of operating those resources to run the network.

So… What Now?

What does this mean for the average user? You’ll see an automatic calculation of the minimum network fee when sending transactions. Depending on how optimized your wallet is, how much you’re sending, and what data you include in a transaction, you’ll see the minimum network fee climb from 0.10 TRTL to about 10.00 TRTL at a minimum.

Fusion transactions will remain free so we highly recommend that you keep your wallet optimized. As a miner, you’ll also benefit from raising your minimum payout with mining pools to higher thresholds as you’ll indirectly pay less in fees for the transactions that pay you for your mining efforts.

If your wallet is mostly composed of shells, you’ll want to optimize your wallet before this new fee structure kicks in. If you mine only on the biggest pool or make most of your TRTL through tips, you’ll definitely want to optimize your wallet immediately.

What’s The Catch?

Sending small transactions, when we needed more mixable outputs for fungibility purposes, helped provide the necessary data to make everything possible. This could be done at a relatively low, low, low cost of 0.10 TRTL; however, with this change, sending 1.00 TRTL to someone will now incur a cost of 10.00 TRTL. We’re sure you can do the math there and understand the sending small amounts (ie. tips) less than the network fee won’t make sense going forward.

TL;DR

Changes to the core software, including moving to fee-per-byte network fees, better transaction selection algorithms, and limits on fusion transactions will bring additional stability to the network, the operation of nodes, and help to address the concerns of the community.

Our work doesn’t stop with these changes and we’ll continue to work on enhancing the network, tools, and experience for all of the TurtleCoin community members.

You can do your part by spreading the word regarding these changes, showing your support, and voicing your opinion(s) in the chat.

As always, Pull Requests are your best avenue to shape the TurtleCoin experience.