Non-Custodial Wallet: Marble

What is Marble Wallet?

Marble Wallet is a self-custodial wallet that doesn't require extensions or seed phrases. Caldera utilizes Marble Wallet on Caldera chains to create seamless onboarding experiences for users by offering wallet-onboarding, a fiat on-ramp, and pre-built UI components, all in one package.

Advantages

  • Email-based authentication. No seed phrases, extensions, or apps required.
  • Embedded fiat on-ramp.
  • Pre-built and highly customizable UI components (fiat on-ramp/send/receive/swap/bridge/price oracles/ERC-20/NFTs tokens).
  • Cross-app compatible. Marble is not an application specific wallet.
  • Cross-platform: Web, Mobile, and Desktop.
  • Out-of-the-box support for WalletConnect.
  • Secured by Multi Party Computation (MPC).

Integrating Marble Wallet

Installation

#npm
npm install --save marble-sdk
#yarn
yarn add marble-sdk
#pnpm
pnpm i marble-sdk

Overview

Integrating Marble takes seconds. Here's an abbreviated overview of what you need to do:
import { Marble } from "marble-sdk";
import { ethers } from "ethers";
const marble = new Marble({
network: {
networkName: '<YOUR_CALDERA_CHAIN_NAME>',
rpcUrl: '<YOUR_CALDERA_RPC_URL>',
chainId: '<YOUR_CALDERA_CHAIN_ID>',
baseAsset: {
symbol: '<YOUR_ASSET_SYMBOL>', // Optional
name: '<YOUR_ASSET_NAME>', // Optional
},
}
});
// Step 1: Authenticate user (sign up or login)
const response = await marbleClient.auth.loginWithEmailPassword();
// Step 2: Connect to ethers provider and get a signer
const provider = new ethers.providers.Web3Provider(marble.rpcProvider);
const signer = provider.getSigner();
// Step 3: Sign a message
const result = await signer.signMessage("Hello Marble World!");

Learn more: