First Release of JustPay - The Wallet for Tagion

We are happy to introduce our first consumer-facing application, where you can transfer test-tagions on a test-network (AlphaFour version).

How to try?

The AlphaFour wallet release comes only in the iPhone version. Android support will be added with the next release. You need two devices (sender and receiver) to make a transaction.

When you open the app for the first time, it will generate a Tagion AlphaNet wallet for you and automatically request 500 test-tagions from the central wallet. You can send and receive test-tagions, using a one-time address system.

  1. Download the app for iOS
  2. Wait for 500 tagions to arrive in your wallet
  3. Ask someone for a one-time address
  4. Send to that one-time address
  5. Generate your one-time address and share it with the sender

What is a one-time address?

Technically, the tagion database stores bill records, not transactions nor accounts with balances.

To receive tagions, you create an empty tagion bill with your signature, that will be “filled” by the sender with his signature. This design makes Tagion transactions anonymous and practically untraceable.

We are working on making second-layer solutions that will bring a much better user experience, so you can pay to contacts, instead of these long and scary addresses.

Note on speed

There is a difference between a reservation and a final settlement. A reservation in the current banking systems can occur almost instantly (a second or two when we use our credit cards to buy groceries and the like). In contrast, the final settlement often takes more than 12 hours to complete and a lot more if using your credit card abroad.

Reservations are not yet implemented in Tagion, so what you experience is final settlements, and these take up to a minute to complete.

Give us some feedback

We have a system for working with bugs and a good way to capture suggestions. And we are counting on you to help us increase the quality of our products by sending feedback.

We accept feedback through a Google Form.


Limitation and known issues

500 Test-TGN failed to deliver

If more than a minute passed, and you didn’t receive your initial 500 Test-TGN, go to Settings (upper-right corner), press “Reissue card”.

Update error when refreshing balance

Most likely it’s a network connectivity issue. We are working on making the error messages more helpful. In the meantime, check your internet connection and try again. If it doesn’t help, try restarting the app.

We have received the feedback from the first Alpha wallet testers, and we noticed that we failed to communicate what is expected to be stable, and what shouldn’t even work in this release.

From our internal testing and your feedback (which we appreciate a lot), we have drawn that most common issues are:

  • “Operation error - Please try again”
  • Impossible to transact decimal numbers
  • Transaction was sent, but not received
  • When two transactions sent one-by-one, one of them fails, but shows “success”
    • Wallet does not decrease in value until previous transaction succeeds

Quick explanation

In this AlphaFour release, we have multiple layers that work together:

  • Node software (network)
  • Faucet server (server that sends 500 TGN to all new testers)
  • DevTool (faucet-network communication)
  • iOS Wallet (checks network health through faucet server, but talks to network directly)

All these layers are currently in the alpha stage. We expect issues to happen at any of the layers, and we are collecting data that helps us improve each and every layer by the time of the next release, along with new features.

Most importantly, none of the failures we observed so far relate to the network (node software).


Deeper explanation

Dig deeper!

Let’s dive a bit deeper into each single issue.

“Operation error - Please try again”

This happens when a mobile client checks the network health status (through the Faucet server), and gets “isHealthy”: false result.

Under the hood, to check the network health, the faucet server sends wallet-refresh requests through a tagionwallet CLI, through a DevTool, both running in Docker.

We had a minor bug in that version of wallet CLI, because of which, it didn’t print stdout, thus the DevTool timeouted the response, thus faucet decided the network is not healthy.

When the mobile client receives “isHealthy”: false from the faucet, it holds off all queued requests.

The fix is coming with the next version of tagionwallet CLI.

Impossible to transact decimal numbers

It was temporary simplification that made sense in very early days of development, but was not resolved before the first release.

Definitely will be fixed in the coming release.

Transaction was sent, but not received

This happens because in this version we are using a temporary throw-away wallet-refresh module, that is not thoroughly tested.

The module simply overwrites the wallet-data file every time it makes a refresh request. Because of that, the one-time address, that is used to check whether you received test-tagions, can be accidentally deleted if the background wallet refresh happened at the same time.

Once we have actual wallet refresh flow, not a temporary one, it will work in a completely different way, and tested on a much deeper level.

When two transactions sent one-by-one, one of them fails, but shows “success”

Same explanation as with “Wallet does not decrease in value until previous transaction succeeds”.

This is also a side-effect of not having stable wallet-refresh flow.

Under the hood, the wallet library holds references to “tagion bills”. Every transaction contract has these bills as input, and a change from the transaction as output.

When you make two transactions one-by-one, without waiting for each to be confirmed, you are using the same input bills, and since double spending is not possible, only one of the transactions go through.

Why does both show “success” status?

Good question! Same old problem - wallet refresh process.

The transaction status right now is determined logically, based on the bills that participated in the transaction, and bills that came out from the transaction. If the input bills disappear, we mark the transaction that had those bills as input to be successful (because inputs are gone from the tagion database).

The next version of the temporary throw-away wallet-refresh module also checks the contract output bills, to show more specific transaction status.


Final words

Keep in mind, these issues happened due to unstable modules, that we only allowed it to be present in unstable alpha release. Such solutions are quick to make, they help us in testing the network from different angles, but would never make it to the beta stage or beyond.

Please, keep feedback coming

We can not stress enough how important your feedback is in helping us make each next release better. Next time we will communicate much better what things are expected to break, so you know whether it’s worth reporting.