meemaw

module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 26, 2024 License: AGPL-3.0

README

Meemaw

Trustless and Grandma-friendly Wallet as a Service


Meemaw is on a mission to make trustless technologies available to everyone, even your Grandma 🚀

https://getmeemaw.com

- Meemaw is still under heavy development, we would not advise you to use it in production just yet. 

Table of Contents

Introduction

Onboarding users on Web3 projects is a pain. You mostly have a choice between 3 options:

  • letting your users fully manage their wallet with a terrible UX 🤮
  • trusting another company with the private keys of your users 😨
  • taking the burden on yourself and assume the risk of full custody 🤯

Not any more. We are building solutions to make it easier and more secure for developers to onboard new people to Web3, at scale.

Right now, Meemaw allows you to deploy a trustless MPC-TSS wallet for each of your users. It only takes a few lines of code, even your Grandma would want to use it. It's also way less risky for you than trusting another company or holding the whole wallets yourself, as your server never sees the private keys.

Features

Available right now:

  • Trustless: Meemaw wallets are MPC-TSS (Multi-Party Computation with Threshold Signature Scheme) wallets. They are non-custodial and zero-knowledge: the private keys of your users never appear on your servers so they don't need to trust you with their assets.
  • Easy: You can easily deploy Meemaw with Docker. You can then use the client SDKs to easily integrate it in a few lines of code. It's easy to offer an amazing web2-like experience to your users.
  • Web & iOS: It's super easy to integrate Meemaw in your Web & iOS apps. Just use the appropriate SDK and you're good to go. Note that we are planning to add support for Android and cross-platform frameworks as well.
  • Integrates with your Auth: Meemaw is built so that you can easily integrate with your own Auth provider. We are also continuously adding one-click integrations for more and more third-party Auth providers.
  • Battle-tested technologies: Meemaw is NOT innovating on the actual technology (TSS and others). Instead, it aims at bringing together established and production-ready technologies to form a coherent experience while reducing risk.

Exciting things we're looking forward to:

  • Android & Cross-platform frameworks: If you're using Android or cross-platform frameworks, we plan to be able to cover your needs. Meemaw will be compatible with Web, iOS, Android, React Native, Flutter and Kotlin Multiplatform.
  • Multi-devices: Most MPC-TSS Wallet providers only allow your users to access their wallet from one device. The plan is to allow your users to securely add new devices that are also able to access the wallet and its assets.
  • Biometrics & Passkeys: XXX
  • Cloud offering: You can easily self-host Meemaw with a few clicks, and soon you will be able to trust us to host it for you and make your life easier and safer. We will also offer Entreprise services and additional features for ambitious projects.
  • Account abstraction: People often oppose MPC wallets with account abstractions, but they are complementary! We will combine them so you can abstract gas payment from your users, innovate on UX and add one more layer of protection, for example.

We're super excited ☀️

Getting Started

If you want to start using Meemaw, you should check the getting started section of our docs. You will find a complete example including deployment of the server and integration of the client SDK. It's really accessible for any dev, seriously, you should check it for yourself!

However, you deserve a sneak peak right here :

Web

Here is a simple example using the Meemaw SDK in JS to create a wallet and sign a transaction. Web3.js is used to send the transaction.

import meemaw
import web3

// Create or recover a wallet for this user
const meemaw = new Meemaw('meemaw-url');
const wallet = await meemaw.GetWallet(jwt); // will recover the wallet if exists for the user or create a new one

// Instantiate Web3
const web3 = new Web3(new Web3.providers.HttpProvider('rpc-url'));

// Craft the transaction (adapt to  your needs)   
var raw = {
    'to': '0x809ccc37d2dd55a8e8fa58fc51d101c6b22425a8',
    'value': 10000000000000, 
    'nonce': 1,
    'gasLimit': 21000,
    'gasPrice': 10,
};

// Sign the transaction
const rawTransaction = await wallet.SignEthTransaction(raw, chainId);

// Send the signed transaction
const txReceipt = await web3.eth.sendSignedTransaction(rawTransaction);
console.log("Look at my fabulous transaction:", txReceipt);

iOS

Here is a simple example using the Meemaw SDK in Swift to create a wallet and sign a transaction. Web3.swift from the Argent team is used to send the transaction.

import meemaw
import web3

// Create or recover a wallet for this user
let meemaw = Meemaw(server: "meemaw-url")
let wallet = try await meemaw.GetWallet(auth: jwt) // will recover the wallet if exists for the user or create a new one

// Instantiate Web3
guard let clientUrl = URL(string: "rpc-url") else { return }
let client = EthereumHttpClient(url: clientUrl)

// Craft the transaction (adapt to  your needs) 
let transaction = EthereumTransaction(
    from: wallet.From(),
    to: "0x809ccc37d2dd55a8e8fa58fc51d101c6b22425a8",
    value: 10000000000000,
    data: Data(),
    nonce: 1,
    gasPrice: 10,
    gasLimit: 21000,
    chainId: 1
)

// Sign and send the transaction with wallet
let txHash = try await client.eth_sendRawTransaction(transaction, withAccount: wallet)
print("Look at my fabulous transaction: \(txHash)")

Documentation

Want to know how it works in more details or want to start using Meemaw in your projects?

Check our docs here. 🚀

Contribute

If you care about Web3 and want to participate in its future, you should join us! Contributions are welcome and greatly appreciated. If you want to help, we actually have a list of things you can start doing right now 😊 For ideas, contribution guidelines and more, see our docs.

License

Most of Meemaw is under the AGPLv3 license. The client SDKs are under the Apache 2.0 license. You can find more info on how we intend those licenses here.

Directories

Path Synopsis
ios
cmd
utils
tss
tx

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL