Skip to main content

Operational: online collaborative transactions (Cahoots) functionality

Ashigaru Open Source Project

Overview

The Soroban protocol is an app agnostic, Tor based, encrypted communication protocol that the mobile wallet employs for users to privately communicate with one another for conducting collaborative transactions, known as “Cahoots”. As types of CoinJoin, these are useful for gaining privacy as they add ambiguity when observers look at these transactions on the blockchain, particularly by breaking the common input ownership heuristic.

Four years ago, this protocol was pioneered in Samourai Wallet to automate and bring online peer-to-peer coinjoins that were first implemented with the manual exchange of QR codes as they were intended for in-person interaction. A little over a year later, Sparrow Wallet added the Soroban client (prior to implementing BIP47) and utilised Samourai’s PayNym directory to partner Sparrow and Samourai users who wanted to mix with one another when spending.

Types of CoinJoins

There are two types of CoinJoins available in the app that can be used via QR with existing Samourai users and either QR or Soroban with Ashigaru users. There is no service fee to be paid for either of these transaction types, only the transaction miner fee paid by the sender, or shared between the sender and collaborator to ensure transaction entropy.

Stowaway
A type of “PayJoin” between supporting wallet users that looks like a typical Bitcoin transaction with two outputs, yet has inputs that are not from a single entity. Additionally input UTXOs are always from different transactions. Together with the amount transacted not being viewable on the blockchain in any output, this results in multiple possible interpretations.

STONEWALLx2
This is identical on chain to a STONEWALL (aka “Private Spend” in Sparrow) that is created by a single user, yet is a transaction where a supporting wallet sender and collaborator work together to spend to an external wallet address or PayNym. This is useful for sending to recipients that are offline or don’t have a wallet that supports CoinJoins. This transaction always has four outputs; a spend, a decoy and two change outputs. Inputs are always UTXOs from different transactions and always involve both the sender and collaborator. There is no single, certain interpretation for an outside observer, or the recipient to make.

Soroban

The Ashigaru Open Source Project now hosts its own Soroban server that other wallet providers are welcome to use. We have made this available only via a hidden service for now, and users will therefore need to be a little more patient due to bandwidth limitations. Nevertheless, as mentioned in our previous post, our import of PayNym common contacts ("following" and "followers") to our new server should mean minimum disruption for users that transact using the new service. Users are free to follow and unfollow PayNyms in app, and the same considerations apply as they did before when carrying out a Cahoots Stowaway or STONEWALLx2 spend, namely:

  • You will need funds, typically from multiple transactions deposited to the wallet.
  • Collaborating with a Cahoots partner involves sharing some information with them of the UTXOs in your wallet so be mindful of who you CoinJoin with.
  • There are no push notifications in app that inform the other party when you want to collaborate with them. Communication should be handled via a secure messenger or in person when you want to initiate.

An invitation to developers

The client library in Java is available at this Tor .onion URL and the Go based server component is available at this Tor .onion URL.