@tcoulter tcoulter released this Jun 28, 2017 · 145 commits to master since this release

Assets 2

Hi all,

Like our Truffle release yesterday, we have more good news. This release is called "Operation", because the TestRPC's internals have changed significantly. πŸ‘¨β€βš•οΈ πŸ‘©β€βš•οΈ

What's in this release

  • Installation issues are gone. (Yep, even on Windows.)
  • Memory issues are gone. (We now have a steady memory footprint.)
  • You can now save your TestRPC's blockchain using the new --db option. (see README)
  • New endpoint: debug_traceTransaction, following geth. (input parameters not supported)
  • Some minor bug fixes and improvements.

How we did it

First, let's talk about installation. We've been working hard to make installation issues for the TestRPC a thing of the past. Like Truffle, installing the TestRPC was tough, and was the number-one complaint amongst our users. To fix every installation issue – and not just a few, but all of them – we completely revamped the installation process under the hood, and bypassed the system that caused those issues in the first place. You can find more information about this work on our blog.

Now let's address our memory footprint. The TestRPC used to be a "blockchain in memory", so it was no surprise that eventually, if you left it running long enough, your computer's memory would fill up. If you think this is an obvious conclusion, well, you're right; we're wondering how we missed it too. To fix this, we had to switch the TestRPC's internals to a completely new mechanism, one that was backed by a database (more on that below). This allowed us to have a clean memory footprint, one that lets you run the TestRPC for days on end without seeing an issue. This stability was hard fought, and we're very proud of it.

This leads us to our next point: The database. Because we backed the TestRPC via the filesystem, this means you can now save your blockchain's data for later use. That's right, if you close the TestRPC and reopen it later, say, you can start up right where you left off. You'll need to use the new --db option (see the README) to tell the TestRPC where you'd like the data saved. You'll also likely want to use the --mnemonic option to use the same accounts each time. We'd very much like to point out that you can now use the TestRPC as an instant private network between groups and coworkers, where actual consensus is not required (say, a persistent, internal test net). This is pretty sweet. πŸ’ͺ

Lastly, we're gearing up to provide you debugging support in our tools, and the TestRPC is an integral part of that. We've implemented debug_traceTransaction, first pioneered by geth, so you can use the TestRPC as part of your debugging solution. More on this to come later.

How you can get it

To get the new version, first uninstall the previous version of the TestRPC:

$ npm uninstall -g ethereumjs-testrpc

Then install the new version:

$ npm install -g ethereumjs-testrpc

What's next

Though we're very proud of the features above, it's very clear we have a lot of work cut out for us. We've heard your requests, appreciate your feedback, and will be circling around soon to follow up on the next round of important issues.


As always, we'd love to hear from you. Don't hesitate to drop into the Truffle Gitter and say hi.

-- Tim & the Truffle Team

After this release was made, version 4.0.1 was released to provide minor README updates.