Setting the bar for the Tari developer and creator community
Aurora is a reference-design mobile wallet app for the forthcoming Tari digital currency. The goal is for creators and developers to be able to use the open-source Aurora libraries and codebase as a starting point for developing their own Tari wallets and applications. Aurora also sets the bar for applications that use the Tari protocol. In its production-ready state, it will be a beautiful, easy to use Tari wallet focused on Tari as a default-private digital currency.
Want to contribute to Aurora? Get started for iOS or Android.
Sending and receiving digital currencies is anxiety-inducing. One wrong character and your money is gone forever. To solve this problem, addresses on the Tari network are strings of Emoji. The Tari community calls this revolutionary address form factor Emoji ID. With Emoji ID, the first three and last three emojis are easier to identify and recall than random characters, and each Emoji ID includes a checksum to ensure the address isn’t malformed. Emoji ID helps further the Tari community's goal of making Tari easy to use for everyone.
Learn more about Emoji ID
The heart of Aurora is lib_tariwallet, a highly efficient and extensible library written in Rust with C-bindings for JNI and Swift codebases. Whether you use Aurora on your iOS or Android device, under the hood, you are using the same powerful Rust library.
By using Rust, Aurora has more robust performance and memory guarantees. Like the rest of the Aurora codebase, lib_tariwallet is open-source and well-documented.
Learn more about it here
Launching Aurora starts a Tor onion service which obfuscates your IP. This makes your wallet a first-class citizen on the Tari network and able to speak with other wallets peer-to-peer. Aurora uses the high-performance Tari network comms layer to encrypt all peer-to-peer communication.
When Aurora needs to make a connection to a peer that it does not have routing information for, a discovery request is routed through the Tari networks distributed hash table. This makes it difficult for other nodes to perform any form of network analysis. At the application layer, Aurora offers meaningful privacy benefits end-to-end. At the protocol layer, the Tari protocol employs MimbleWimble to obfuscate transactions. The result is an interconnected ecosystem dedicated to enhancing your privacy.
Once you’ve downloaded Tari Aurora, check out the TTL (Tari Testnet Limited) Store to spend your “hard-earned” tXTR on exclusive, one-of-a-kind, stuff produced by the team at Tari Labs. Enjoy!
* tXTR has no monetary value and cannot be exchanged for cash, cash equivalent, or other tokens or cryptocurrencies.
When you first download Aurora, you’ll receive some tXTR from the faucet bot. If you want more, ask your friends to send you some or try mining testnet Tari. Learn more about mining testnet Tari.
This means the transaction is being processed on the Tari network, which usually takes no more than a couple of minutes.
Sending a transaction from Aurora is simple and intuitive, but under the hood there’s a lot going on. A lot.
To give you an idea of what happens between you clicking “send” and the transaction being confirmed on the blockchain, have a look at this article explaining how Tari transactions work.
In case that’s tl;dr, here’s what happens every time Alice sends Tari to Bob. Remember that there are no servers or centralised parties that are able to co-ordinate these communications! Everything is done on the peer-to-peer network.
When this goes smoothly, the transaction negotiation completes in under a second, and then it takes roughly two minutes to get confirmed. But there are at least a dozen points in that flow where things can be disrupted.
If any of these things happen, the process pauses until the issue resolves and the flow can continue. This is where you’ll notice that a transaction appears to be “stuck”.
Luckily, the Tari devs have anticipated a lot of these issues and have put additional safeguards in place to try and keep the flow moving as smoothly as possible.
For instance, if Bob is suddenly unreachable in steps 4 and 8, then Alice’s wallet will ask some of Bob’s peers (Charlie and Dave) to keep the message for him, and deliver it when he appears again. Now, if Alice goes offline, at least Bob will still get the message and the flow can limp forward.
The same thing happens when Bob tries to send messages back to Alice in Steps 5 and 6.
The Aurora wallet also has a small database of base nodes it uses to poll in Step 9, so if one of those nodes stops responding, Aurora will try another one.
The wallets will also detect if the network has forgotten about the transaction for some reason and resubmit it.
All in all, in a system that has so many moving parts and requires careful choreography for things to go right, with no central party directing the steps, it’s fairly impressive that transactions get mined at all.
The Tari peer-to-peer network does a great job in building lots of robustness into the system, but from time to time, things can and do go wrong.
If your transaction has been stuck “in progress” for a long time, there are a few options available to you.
If you are the sender, and the status is “Waiting for recipient to come online”, then you can choose to cancel the transaction. It’s possible that the recipient is never going to countersign the transaction, so you can free up the funds locked up in this transaction and then try again at a later stage if you wish. The transaction has never been broadcast to the network, there’s no chance of this transaction ever completing and so your funds are perfectly safe.
If the recipient hasn’t replied within 3 days, then Aurora will cancel the transaction automatically.
Once the transaction says “Completing final processing”, then the transaction is being broadcast to the Tari network. It will usually be mined in about 2 minutes and become finalised, but if the network is congested, or there is a sudden drop in hash rate, this can take much longer.
The wallet will periodically check to see whether it has been accepted into the mempool and then if it has been mined. The wallet will rebroadcast the transaction if it has fallen out of the mempool without being mined. At this stage, the transaction can no longer be cancelled.
If you are the receiver, unfortunately there’s nothing you can do except wait. Until the transaction is finalised, you should never treat the transaction as complete. For example, if you’re a merchant, you should not consider payment complete until the status reflects this.
If the status does not change for three days, the wallet will discard the transaction and assume that the sender will never broadcast it to the network. This is not a guarantee however, but since you’re the recipient, there’s no real risk to you.
In principle, one could continue to scan the blockchain indefinitely looking for the output you created, but the mobile developers decided not to implement this feature on Aurora to save on battery consumption.
Aurora is intended to work with a wide range of Apple (iOS 13+) and Android (Nougat 7.0+) mobile devices. Found an incompatible device? Please post about it on our public Telegram so someone in the community can look into it.
Feel free to ask any questions and report bugs on Telegram.
There are no hidden third party services in the app and it strives to be as free of centralized services as possible. That said, the wallets do make use of a few services to improve the user experience for Aurora:
All of these services and their user experience-privacy trade-offs were carefully considered before including them. However, we know that these trade-offs are different for everyone, and for that reason, it’s entirely possible to remove these services and compile a version of the wallet that works for the most part (although without push notifications, the iOS app will deliver a severely sub-optimal experience).
To help privacy-focused users out, there is a “privacy” flavor in the Android app that will easily allow one to compile a version of the wallet that excludes ALL of the services described above. Naturally, this means that you won’t receive tXTR from the faucet, be able to interact with The TTL Store, or participate in helping to improve the app.
A similar approach for the iOS app is in the works as well, so keep an eye on the updates page as to when this will drop.