Development update — Test-net0 Updates, Next Steps and More…

May 31, 2019 · 5 min read

In our last development update we announced the release of test-net0. The objectives of the roll-out for test-net0 was to identify edge cases, stabilize the existing code and establish its resilience with users across all platforms (Windows, macOS and Linux).

The focus was on the following:

  1. Extended sealed boxes to include the architecture up until this point;
  2. Underlying cryptography that Tangram relies on
  3. Addition of Pedersen commitments;
  4. Addition of range proofs;
  5. Transaction sending and receiving;
  6. Offline transactions;
  7. Support for multiple “addresses” in the wallet (wallet key sets);
  8. Tor networking and identification of possible failures;
  9. Performance and security.

We identified critical bottlenecks between user's wallets (sending and receiving) through the message pool which would have hindered further tests across the network (therefore the modular approach).

Importantly identified enhancements and optimization that would benefit users and developers alike medium to long-term.

Updates for the past two weeks:

  • Added disable m_lock; [71f3629]
  • Adding exception handling; [53b1500]
  • Return zero when transactions is null; [7a3dd91]
  • Various Onion and Vault Refactoring. Bug fixes; [c7d5534]
  • General fixes for test-net0; [7365028]
  • Added file logging; [af20ff2]
  • Code clean. Output on committed sum; [09f77e1]
  • Fixed count; [d8ca527]
  • Added retry on sending coins; [0dc7054]
  • Added redemption key retry; [9580b42]
  • Added missing dependencies; [a8d3432]
  • Refactoring; [4cc04d1]
  • Fixed correct output when sorting change; [d19588f]
  • Fixed wallet create endpoint; [329b923]
  • Fixed missing memo when storing wallet transaction; [8da52d8]
  • Guarding keys; [9c15135]
  • Removing receiver output; [dad4a7c]
  • Added blind to transaction coin; [80fb061]
  • Fixed SSL/TLS secure channel when downloading redemption key file; [f78373e]
  • Return network key on error; [c0d32a8]
  • Begin local membership persistence;
  • Removed read stream; [804f5a9]
  • Included new dependencies; [f90b669]
  • Optimization and enhancements of message pool; [58a2b39]
  • Check if tor is already running; [6ee0e02]
  • Configure rest API endpoint; [7d1ec56]
  • Output just addresses. JSON profile available with rest api; [bcfefee]
  • Stop spinner when saving to disk; [a069b5d]
  • Format amount to F9 places; [a79c303]
  • Removed get change as we can get this from coin service; [7f2e3c0]
  • Added helper retry pattern; [fe2641b]
  • More refactoring; [5b184f0]
  • Even more clean up; [c94d74e]
  • Fixed floating point issue; [9de6933]
  • Added more exception handling with logging; [9a46809]
  • Fixed logical error. Passing coin service input amount when storing wallet transaction; [cd9e5a1]
  • Added nanoTan conversion; [31c6bd2]
  • Exception handling and logging; [9a16d79]
  • Use expressive Lambda’s; [ec0c6dd]
  • Fixed calculations when amount is decimal point; [1fafc23]
  • Add async on retries; [706b537]
  • Remove retries check; [07f9e54]
  • Save redemption key message; [d01f85f]
  • Base64 catch (clean-up to-do); [725f3f3]
  • Cleaner message deserialization using message converter;
  • Cleanup Onion Host name -> Ed25518 Public Key conversion;
  • Protocol support for composite message, a collection of signed messages;
  • Reject messages without CorrelationId. Dissemination;
  • Start moving membership into independent micro-service.

Identified bugs and status


Completed — ✅

Under investigation — ❔

To be done — ❌

  • Fixed SSL/TLS secure channel when downloading redemption key file; [f78373e] ✅
  • Added disable m_lock; [71f3629] ✅
  • Floating point issue / range proof failed; [9de6933]; ✅
  • Dependence on OnionService hosted service; [c7d5534] ✅
  • 29 bytes address accepts send (must be 32 bytes in length); ✅
  • Shards (vault keys) sometimes do not unseal (unable to replicate — needs further investigation); ❔
  • SodiumCore SodiumCore dependency (needs further investigation); ❔
  • libsecp256k1 dependency (brew install gmp). ❌

If any community members believe the list should be extended please do submit an issue with details, here:

Contributions to wallet code from community

  • standardization of API returns, and deserialization of profile object; [72ae2dd]
  • allow for sending and receiving redemption messages; [c89cb59]

.NET Standard 2.0 library for working with the Tangram wallet REST API (Cypher), see more:

Community engagement & review

Important links related to stream:

Thinking of contributing?

I ran into a bug, how can I help?

You can find your .log file in the following location:

  1. Navigate to your root directory;
  2. Open Cypher> bin > Release > netcoreapp2.2 > publish > cypher-2019<date>.log;
  3. Email:

What’s next?

Test-net0 has been a success in allowing the identification of edge cases and issues hindering the application and usage. There obviously can be accessibility enhancements and quality of life improvements, however we’re currently focusing on functional requirements. Resolving these before the release of test-net1 will make the process much smoother.

From next week, preparation will be begin on test-net1. We expect the release of test-net1 to be within the range of Q3 2019. Details will be provided closer to the time of release.

To experience the latest updates on Cypher, please do a git pull and publish(if you have installed before). Instructions can be found here:

First time users can follow the below link:

If you’re interested, have questions and feedback:

Read our blog:

Subscribe on Reddit:

Discover us on Discord:

Message us on Telegram:

Follow us on Twitter:

Watch on YouTube:



Tangram was created with a singular vision: to inspire…