Tech Update – May 10, 2018
The most significant work over the past two weeks has involved a rewrite/refactor of the core Saito software with the goal of cleaning-up our UTXO-handling code, adding extensive comments to make the source easier for developers to follow, and trying to prevent the nodes in the network from happily propagate malformed blocks and transaction data that can kill all of the nodes in the network one-by-one. We have also added memory-management queues in the mempool class to try and make it harder to crash a server, and Saito transaction archives to provide an alternative to IPFS and allow long-term off-chain data storage as a native blockchain-level service.
The latest code is available on our newest repository, which will replace my personal repository as the default place to grab everything once we are ready to launch:
https://github.com/saitotech/saito
Those interested in helping with debugging will find a few new tools in our latest release. These are all native Saito modules that work in the live email client, so anyone working on module development may find them useful as development guides to:
Debug Module:
This shows the current state of the “options” file that the browser is using. It can be used to check what data browsers have received from servers, where browsers *think* they are on the blockchain, as well as what transaction inputs they believe they have available to spend.
Raw Transaction Sender:
Click on this new “application” and it will create a fee-paying JSON transaction that you can edit before clicking to send across the network. We developed this to create malformed transactions as part of our security work, but it is also kind of cool to use it to manually create emails. If you want to send an email manually using this, just add something like this inside the msg field in the transaction slip:
"module":"Email","title":"This is where the title of your email goes","data":"anything here goes in the body of the email"
Money Monitor:
This is what you can see in the image above. Because we are dealing with such large numbers (billions of tokens and 8-decimal places for global internet usage) we have upgraded to using a big-number library for tracking the monetary tokens in circulation. Using this will probably crash your browser on a transient chain of any significant length. We have been using it to debug monetary policy issues on smaller blockchains though, and will keep it live for now.
Interested in Helping?
We have a lot of independent projects that we can farm out to anyone interested in tackling something substantive. Two of the more ambitious projects are helping us get production-ready Ethereum or Bitcoin Payment Channels ready, and/or working on a browser plugin that can store the Saito javascript code securely and allow people to download and install modules securely. The latter project is part of a critical long-term need to build a decentralized app-store for Saito modules and ensuring all javascript code can be kept and changed securely on user computers.
More generally, as we move towards our public testnet release, some of the most useful help we need is just work testing and breaking the Saito core code. In addition to receiving our thanks for doing this, anyone who can break the core code is welcome to a thank-you package of some of South America’s finest alpaca sweaters to pair with your Bitcoin alpaca socks for as long as David is in Chile and his pocket money holds out.