npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

marble-sdk

v0.1.18

Published

Marble Wallet is a self-custodial wallet that does not require extensions or seed phrases. Developers can use Marble Wallet to build seamless onboarding experiences for their users, similar to the ones provided by Coinbase or [Reddit's self-custodial wall

Downloads

102

Readme

Marble Wallet

Marble Wallet is a self-custodial wallet that does not require extensions or seed phrases. Developers can use Marble Wallet to build seamless onboarding experiences for their users, similar to the ones provided by Coinbase or Reddit's self-custodial wallet.

Developers can offer wallet-onboarding, a fiat on-ramp, and pre-built UI components to their users, all in a single package. Marble Wallet can improve onboarding for users to your app by up to 90%.

Advantages of Marble Wallet:

  • Email-based authentication. No seed phrases, extensions, or apps required. Marble runs in the browser.
  • Embedded fiat on-ramp.
  • Pre-built and highly customizable UI components.
  • Out-of-the-box support for WalletConnect.
  • ... and more!

Documentation

Check out the Marble SDK documentation for more information, or the Marble SDK on NPM.

You can also check out the Marble Wallet website for more information.

How does Marble work?

Instead of a traditional seed phrase or private key, Marble uses a cryptographic protocol called MPC (Multi Party Computation). Marble cannot access your funds, and your funds cannot be stolen by Marble. You can learn more about Marble's security model on our security page.


Installation

To install the Marble SDK and add seamless onboarding to self-custodial wallets in your app, you can use the following command:

npm install --save marble-sdk
# or, if you use yarn
yarn add marble-sdk

Getting Started

The Marble SDK maintains compatibility with existing web3 APIs and libraries. You can use Marble like you'd use any other wallet in your code base.

// Example with ethers
import { Marble } from "marble-sdk";
import { ethers } from "ethers";

const marble = new Marble();

// Interested in customizing Marble and making it look like your app? Reach out to us at
// [email protected] and we'll get you set up.
const provider = new ethers.providers.Web3Provider(marble.rpcProvider);

// Sign the user in
await marbleClient.auth.loginWithEmailLink({ email: email });

// Check if the user is logged in (you may need to poll this)
const isLoggedIn = await marbleClient.auth.isLoggedIn();

// Get the user's wallet address
const addressList = await marbleClient.api.getAddressList({});
const address = addressList[0].address;

// Sign a message or a transaction (after the user is logged in)
const signer = provider.getSigner();
const result = await signer?.signMessage("Hello world!");
const result = await signer?.signTransaction(transactionToSign);

const partialSignTransactionData = {
  to: "0xbf9Db3564c22fd22FF30A8dB7f689D654Bf5F1fD", // Mumbai Faucet
  from: address,
  value: 100, // amt in wei
};

const signTransactionRequest = {
  jsonrpc: "2.0",
  id: 1,
  method: "eth_signTransaction",
  params: [
    {
      ...partialSignTransactionData,
      value: hexlify(partialSignTransactionData.value),
    },
  ],
};

// You can also use the integrated provider to send RPC calls.
// Note: We don't yet support all RPC methods, but we're working on supporting what makes sense.
const result = await ethersProvider?.send(
  signTransactionRequest.method,
  signTransactionRequest.params
);

WAGMI Integration

If you're using Wagmi, we also provide a wagmi-connector you can use: marble-wagmi-connector.