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

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 wallet rest API dependencies; [55cb005]
  • 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

Bugs that have been identified through submission of community members, includes status.

Legend

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

The Tangram project has seen more community involvement, assessment and discussion since test-net0 release. Below are some successful merge pull requests from community members:

  • 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

TheFreezeTeam went live on Twitch again, continuing to delve further into the code, and working on the console app template. See more here:

Important links related to stream:

Thinking of contributing?

Connect with any of the Core and/or Community managers OR simply create an issue/pull request!

I ran into a bug, how can I help?

We’re looking to improve the first test-net for future ones. If you identify any bugs or security issues, you are more than welcome to report these by opening a ticket here — Github. You can also discuss this further in any one of our channels. We do appreciate if you’re able to share your .log file along with steps to recreate the issue. These can be emailed through to dev@getsneak.org.

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: dev@getsneak.org

What’s next?

Currently we are implementing solutions to recovery over Tor which may hinder some users running Cypher. We hope to have these fixes finalized over the next couple of days.

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:

Visit our website: www.tangrams.io

Read our blog: www.medium.com/@tangramd

Subscribe on Reddit: www.reddit.com/r/Tangrams

Discover us on Discord: www.discord.tangrams.io

Message us on Telegram: https://t.me/Tangrams

Follow us on Twitter: www.twitter.com/tangram

Watch on YouTube: https://www.youtube.com/channel/UCoe5hPG_zjltaG_j2n1Oh4Q

Email: info@getsneak.org