Git Product home page Git Product logo

daimo's Introduction

Screenshot

Daimo is a stablecoin wallet

Single stablecoin, single rollup, payments only. Cross-chain transfers coming soon.

No seed phrases. Keys are generated in your phone's secure enclave and never leave. You can add multiple devices and create Passkey backups to secure your account. Under the hood, it's a ERC-4337 contract wallet.

The mission is to make an excellent experience. Payments should be fast, secure, and permissionless.

FAQ

  • How do Daimo accounts work?

    Daimo accounts are Ethereum accounts.

    Under the hood, they're a new and much-improved type called an ERC-4337 contract account. Each device you add to your account stores a secret key. When you send money, your phone first authenticates you with FaceID or similar, then cryptographically signs the transaction using that key.

    Daimo is non-custodial. Your keys, your coins.

    Daimo offers stronger security than traditional wallets. Keys live in dedicated hardware made for storing secrets, such as Secure Enclave on iPhone, and never leave your device.

  • Which stablecoin does Daimo use?

    Daimo runs on USDC, a high-quality stablecoin issued by Circle.

    Stablecoins are cryptocurrencies designed to maintain a stable value. Many are pegged to the dollar, so that one coin is worth $1. Circle is a US-based licensed money transmitter partnered with Coinbase. USDC is one of the largest and most liquid onchain dollar equivalents. Learn more on Bluechip.

  • Which blockchain does it run on?

    Daimo uses Base, an Ethereum rollup.

    Rollups support near-instant transactions that cost a few cents each. By contrast, transactions on the underlying Ethereum chain (layer 1 or L1) take about 10 times as long and cost a few dollars each. Rollups accomplish this by bundling many transactions into a single L1 transaction. They inherit the strong guarantees of Ethereum: like L1, Base is reliable and secure, and works worldwide. Learn more on L2Beat.

  • Can I send other coins like USDT, or use other chains like Polygon?

    Not yet. We plan to support payments in other stablecoins and on other chains soon.

  • Who can see my Daimo transactions?

    Currently, all Ethereum transactions are generally public, including Daimo transactions. We plan to add private payments as the infrastructure and support for them matures.

  • Is Daimo open source?

    Yes, Daimo is and will always be open-source under GPLv3. We're here to collaborate. We want to make self-custody fast, safe, and easy. See more on our Github.

Security

Audits

Past audits of the Daimo codebase can be found in the audits folder:

Bug Bounty Program

Daimo hosts a bug bounty program on Immunefi. Learn more on SECURITY.md.

Development

Daimo is under active development. Now in App Store and Play Store with an invite code. Coming soon: desktop app, no invite code, cross-chain support.

Architecture

READMEs for each app and package.

Dev quickstart

Clone the repo, loading submodules.

git clone [email protected]:daimo-eth/daimo --recurse-submodules

Build the app.

node --version # ensure you have node 20+
npm i
npm run build

Run the iPhone Simulator in XCode. (If you're not on a Mac, see the Android quick start below.) Get the latest simulator build from Expo; message us if you need access. Drag-drop the build into the simulator to install.

Set the following variables to use the remote, hosted API.

export DAIMO_APP_API_URL_TESTNET="https://daimo-api-testnet.onrender.com"
export DAIMO_APP_API_URL_MAINNET="https://daimo-api-prod.onrender.com"
export DAIMO_DOMAIN="daimo.com"

Finally, run the app in the simulator.

cd apps/daimo-mobile
npm run dev

Use invite code testnet. Once you create an account, you should automatically get some testnet USDC from the faucet.

Expo apps come in two layers: a native layer and a React Native (Typescript) layer. Whenever you add a native module or update @daimo/expo-enclave, you must rebuild the native app. For details, see apps/daimo-mobile.

Dev quickstart: Android
  • Ensure you have the correct Java version. Version 20 doesn't work, Java 17 works.
  • You need to ANDROID_HOME to the local Android SDK.
  • Install Android Studio, and create an emulator.
  • Download latest Android internal distribution build from Expo, and install it in the emulator.

All other instructions are the same as above. After npm run dev, type a to open the Android simulator. You should now have both side-by-side. See the mobile package.json for details.

Dev quickstart: contracts

Install Foundry.

curl -L https://foundry.paradigm.xyz | bash
# Reload your terminal, then run:
foundryup

Build the contracts.

forge build

For commands to run tests and recompute code coverage, see ci.yml.

Dev quickstart: API

daimo-mobile and daimo-web both rely on daimo-api.

By default:

  • daimo-mobile runs the Expo incremental build server on localhost:8080
  • daimo-web runs the web app, including fallback deeplinks, on localhost:3001
  • daimo-api runs the TRPC API on localhost:3000

You'll need to either use the hosted Daimo API or run one locally.

To run the API locally, fill in the DAIMO_API_... and NEXT_PUBLIC_... environment variables. Message us if you need help.

You can run Postgres in the background locally using initdb daimo && pg_ctl -D daimo start. To stop, use pg_ctl -D daimo stop.

Once you're running the API locally, you can run the full stack self-contained.

# First tab
cd packages/daimo-api && npm run dev
# Second tab
cd apps/daimo-mobile && npm run dev
# Third tab
cd apps/daimo-web && npm run dev

daimo's People

Contributors

dcposch avatar nalinbhardwaj avatar wojtus7 avatar ryandotsmith avatar koredefashokun avatar markusbug avatar chescalante avatar pfista avatar michelle-chiu avatar cha0sg0d avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.