10 min read

Wakala: A Decentralized Last-Mile On- and Off-Ramp for Celo

Update: We renamed the project to Sargo. Sargo is a decentralized last-mile peer-to-peer crypto on- and off-ramp for the Celo ecosystem.

Since we started working on Kukuza, getting people excited about Celo and cUSD was not that difficult. Take Teresia for example. She was intrigued by the opportunity to get access to the crypto economy. And saving in cUSD to escape the inflation of the Kenyan shilling just clicked with her. So she asked:

“This sounds cool! How can I top up my cUSD wallet?”

Um... a few teams are working on it...soon... takes time...
Her excitement immediately vanished and switched to skepticism.

And then there is Allen. Allen is one of our developers, and of course we paid him in cUSD. He likes holding cUSD, but at some point he had to pay bills:

“So, how can I withdraw my cUSD?"

Another problem. We needed solutions, so we did the obvious thing and matched Teresia with Allen:

  1. Teresia wanted to top up 2,000 Ksh.
  2. We calculated the cUSD amount based on the current conversion rate: 17.65 cUSD.
  3. Allen sent the 17.65 cUSD to me to hold it in escrow.
  4. Teresia sent the 2,000 Ksh to Allen via M-PESA.
  5. I sent the 17.65 cUSD to Teresia.

Since then we did several of these exchanges and Teresia also started asking to get cUSD for her friends. But Allen was running out of cUSD. We needed to scale things up, and so the idea for Wakala was born.

While we are very excited about the recent progress of teams like Ramp and Kotani Pay, their solutions don't quite cater for our use cases. Therefore we seek to position Wakala as a complement to other on- and off-ramps.

In this article, I want to lay out the idea for Wakala. Wakala is a decentralized last-mile peer-to-peer crypto on- and off-ramp for the Celo ecosystem. It is loosely inspired by the M-PESA agent network. Wakala's purpose is to facilitate end user adoption of Celo and cUSD via a decentralized and resilient system.

First, I show how Wakala works and describe its initial scope. After that I explain the underlying goals and principles that guide our design decisions. I then describe our initial ideas for Wakala's token and its fee structure. I conclude with Wakala's current status and our next steps for moving forward.

How Wakala Works

There are two main user roles within Wakala: The User who wants to convert fiat money to cUSD (or vice versa), and the Agent who facilitates that conversion. Every Wakala member is free to perform both of these roles.

Wakala's core interaction consists of five steps. The following exemplifies the core interaction for a user who wants to convert fiat via M-PESA to cUSD.

Step 1: User posts a request.

  1. The user chooses whether he wants to top up his cUSD wallet or withdraw cUSD.
  2. The user picks a fiat payment method (only M-PESA for now).
  3. The user enters the amount to deposit.
  4. The user reviews and confirms the amount and fees.
  5. The deposit request is shared.

Step 2: Agent accepts the request.

  1. An agent picks a request from the feed.
  2. The agent accepts the request.
  3. The cUSD amount is withdrawn from the agents' wallet and sent to the Wakala escrow contract, the request is removed from the feed, and the user is notified.

Step 3: User sends M-PESA payment.

  1. The user gets notified and prompted to send the required M-PESA amount to the agent. M-PESA payments happen outside the app.
  2. After the user confirms the payment, the agent is notified.

Step 4: Agent confirms payment.

  1. The agent gets notified and confirms the M-PESA payment after he receives it.
  2. Confirming the payment completes the financial transaction, releases the cUSD from the escrow contract, and sends it to the user's wallet.
  3. The agent rates the user. Ratings happen on-chain using the Karma Protocol.

Step 5: User rates agent.

  1. The user is notified that his cUSD has been deposited to his wallet.
  2. The user rates the agent. Ratings happen on-chain using the Karma Protocol.
  3. This final rating completes the transaction.

Initial Scope of Wakala

The first version of Wakala will have the following features:

  1. Non-Custodial Android Wallet
    We start with an Android wallet. Later we will add a web app and an iOS wallet.

  2. Magic Integration for Login via SMS
    The need for recovery codes presents a big obstacle to mainstream adoption. New users tend to lose their codes or don't even save them in the first place. Magic improves usability by enabling wallet creation and login via SMS without sacrificing security and autonomy. The user is still in charge of his wallet and has access to his recovery key. While Magic also allows wallet creation and login via email, SMS is the preferred method by our audience.

  3. P2P Conversions: M-PESA to cUSD and cUSD to M-PESA
    We start with conversions between M-PESA and cUSD. Note that we do not integrate directly with M-PESA. That's on purpose. In the future we plan to add cash and potentially other payment methods. While the cash option will open Wakala up to other countries, it is also the most complex. The cash option requires a location feature and there are potential security concerns that need to be addressed.

  4. cUSD Payments
    Users can send cUSD to other users, phone numbers, and Celo wallets.

  5. Token Swap between cUSD and Wakala Tokens
    While we won't launch the Wakala token right away, the wallet will allow for a token swap between cUSD and Wakala tokens once the Wakala token is launched. In he future we plan to add other fungible tokens and NFTs.

  6. Ramp Integration
    Wakala aims to facilitate transactions for up to 100 cUSD. For larger amounts, we recommend Ramp. "Professional" Wakala agents can use Ramp to top up their float directly from the app.

  7. Karma Protocol Integration
    Every transation is rated by the user and agent. We start with a simple integration to capture on-chain ratings from 1 to 5 stars. These can form the basis for more comprehensive reputation and credit scores in the future.

  8. currencylayer API Integration
    Similiar to Valora we use currencylayer API to determine the exchange rates.

Goal and Principles for Wakala

We believe the Celo ecosystem will be strongest with a wide range of different on-ramps and off-ramps for different use cases. The following is a list of the goals and principles that guide our design decisions for Wakala and determine Wakala's positioning within the ecosystem.

  1. Increase end user adoption and net volume of cUSD in the market
    A common discussion is whether on-ramps or off-ramps are more important. While projects like Kukuza require on-ramps to get started, projects like Nuzo need off-ramps to cash out crypto rewards. Currently it is hard to say what will drive higher volumes, but that discussion is somewhat moot.
    Our joint goal is a net increase of cUSD in the ecosystem. In a peer-to-peer off-ramp, the withdrawal of one user is the deposit of another. Funds tend to remain in the market. While agents could still cash out their cUSD through other off-ramps, it is likely that there will be a net increase of cUSD circulation over time.

  2. Last-mile ramp
    We can separate the process of giving people access to cUSD into two step. First, we need to get cUSD into the market in the first place. This is most efficient with larger volumes. Ramp is a great solution here. Second, we need a way to get smaller amounts into people's wallets. This requires a different fee structure and flexible adaptations to user behavior and payment methods. Wakala focuses on the second step and considers itself a last-mile on- and off-ramp.

  3. On-ramp and off-ramp
    In order to establish cUSD as highly liquid and convenient payment method, we need both, on-ramps and off-ramps. Further, the irony for on-ramps seems to be the need for off-ramps in order to create trust in on-ramps. Some new users prefer to deposit very small amounts at first. They then immediately cash out a certain amount for testing purposes. Only after they successfully cashed out do they trust that cUSD is real money.

  4. Topping up instead of buying crypto
    If we want to establish cUSD as an everyday payment method, our user experiences need to be aligned with those of payment methods. However, the narrative of most peer-to-peer exchanges is about buying and selling crypto as an object of speculation. It is a narrative of trading and benefiting from volatility. There is nothing wrong with that, but that is the opposite of a stable coin narrative.
    With Wakala you top up your cUSD wallet, or you withdraw cUSD to M-PESA. You don't buy or sell crypto. There is no orderbook and no spread. Just a fixed exchange rate. While moving funds between Ksh and cUSD is technically a form of Forex trading, there is no need to frame it that way. Especially since people typically benefit from the exchange rate anyway.

  5. Instant Transfers
    For people to use cUSD as an everyday currency, we need to make sure that they can move funds between fiat and cUSD instantly. Topping up or withdrawing your cUSD should not take longer than calling an Uber. This is different from peer-to-peer exchanges like Paxful where a transaction might take days to settle.

  6. Minimally Extractive Fees
    Ramp is great, but too expensive for smaller amounts. When Teresia wanted to deposit 17.65 cUSD, she would have paid 15-20% in fees using Ramp. Valora realized this and is covering the Ramp fee for now. However, this is probably not a permanent solution. We need a way to move funds between fiat and cUSD at close to zero costs.

  7. Resilience and Decentralization
    Our goal should be to build solutions that are compliant with the evolving regulatory landscape while trying to shape good and reasonable regulations. Regulations in Kenya and similar countries will likely be shaped by two main forces:
    a) Regulatory preferences of the USA and the EU.
    b) Greed.

    There is a non-zero chance that crypto will have to deal with either exploitative regulation or shameless corruption. In order to put ourself in the best possible position, the Celo ecosystem and the crypto industry as a whole should invest more in resilient, decentralized systems to create leverage for future negotiations. While crypto projects didn't get a lot of attention by Kenyan regulators, yet, this will change once volumes increase. Taxes on mobile money transfers in Kenya were already raised to 12%. And there are plans to increase them to 20%. There is nothing reasonable about these taxes. And in case crypto transactions are taxed the same way, the goal of financial inclusion with low fees will become almost impossible to achieve.

Wakala Token and Fee Structure

While the token design and fee structure will be the topic of a separate article, I want to lay out our initial thoughts as a starting point.

Wakala Token

Wakala will have its own native token. User fees and agent rewards are paid in Wakala tokens. Further, the token will grant governance rights for the future Wakala DAO.

Relevant Fee Types

There are three different types of fees that we need to take into account:

  1. Celo fee:
    Since Wakala conversion requests are fully on-chain, there are several blockchain calls for each transaction that each require a Celo fee. While the absolute amount of this fee is negligible, it is not zero. This has implications for onboarding new users.

  2. Wakala fee to incentivize agents:
    Agents need an incentive to fulfill conversion requests. These are paid in Wakala tokens.

  3. Wakala fee for the DAO treasury:
    The Wakala DAO captures a portion of the fees in order to fund further development and other initiatives.

Three Phases of Adoption

Wakala adoption might happen in three phases:

  1. Bootstrap with personal agents:
    Initially, team members and friends will perform the role of agents. These would not require an agent fee.

  2. Incentivized agents:
    Once we grow, we need an agent network incentivized by Wakala tokens.

  3. Balanced peer-to-peer network:
    At some point, adoption might be high enough so that there is a natural supply and demand for deposits and withdrawals. This might make agent fees obsolete.

Fee Switches as Part of Token Governance

Inspired by Uniswap, we can integrate fee switches into the token governance. Token holders can vote on turning these switches on and off.

  • Switch 1: Fees for agents
  • Switch 2: Fees for DAO treasury
  • Switch 3: Dividend for token holders

Initially, the first 2 fee switches would be turned on, incentivizing agents and building out the DAO. Once Wakala reaches sufficient adoption, we might vote to turn agent fees off and pay a dividend to token holders instead.

Constraints for Developing the Fee Structure

The specific fee structure needs to be developed within the following constraints:

  • Fees need to be cheap enough to attract users (M-PESA fees or cheaper).
  • Fees need to be high enough to attract agents (similar to M-PESA or higher).
  • M-PESA's high take rate is our opportunity to improve fees for both, users and agents.
  • Fees need to be high enough so that cumulative agent fees are high enough to cover Ramp fees while still generating a profit for the agent.
  • Ideally, fees should not only be mathematically optimized, but also easy to understand.

Current Status and Next Steps

To date, we developed the smart contract, implemented the third party integrations and developed most of the UIs. The integration between the UIs and the smart contract is in progress.

After finishing the integrations and security audits we can launch a first version. After that our focus will be on developing the token and fee structure.

In order to achieve this, we are looking for seed funding. We are also interested to learn about other projects who could benefit from an on- and off-ramp to explore possible collaborations.