Skip to content

createWallet

La función createWallet inicializa la wallet integrada y expone proveedores web3 a la página web.

Ejemplo

ts
import { createWallet } from '@money-sdk/core'

const wallet = createWallet({
  appId: '<YOUR_APP_ID>',
  providers: {
    bitcoin: true,
    ethereum: true,
    solana: true,
  },
})

const ethereumProvider = await wallet.getProvider('ethereum')

ethereumProvider.request(/* ... */)

Referencia

appId

Identificador de tu aplicación. Esto permite que tu integración tenga su propia configuración: orígenes padre permitidos, feature flags y alcance de analítica por dApp.

INFO

Esto solo es obligatorio en producción. Consulta la guía del App ID para el registro. Puedes omitirlo durante el desarrollo local; la wallet se cargará con una lista blanca solo para localhost.

walletUrl

Origen del iframe de la wallet de Drop. Por defecto es https://dropwallet.app.

Solo debes sobrescribir esto para apuntar a un despliegue de preview o a una instancia local de la wallet: las dApps en producción deben dejar siempre el valor por defecto.

signerUrl

Origen del popup del signer de Drop utilizado para los flujos de passkey. Por defecto es el signer canónico. Se aplican las mismas reglas que walletUrl.

providers

Lista de proveedores web3 que quieres exponer a tu dApp, con su configuración opcional.

Ethereum y cadenas compatibles con EVM

Por defecto, se devuelve un proveedor EIP-1193.

Ejemplo
ts
const wallet = createWallet({
  providers: {
    ethereum: true,
  },
})

const ethereumProvider = await wallet.getProvider('ethereum')

ethereumProvider.request(/* ... */)

Además, el proveedor se anuncia a la página web siguiendo EIP-6963. Si quieres desactivar este comportamiento, pasa la opción eip6963.

Ejemplo
ts
const wallet = createWallet({
  providers: {
    ethereum: {
      eip6963: false,
    },
  },
})

Si tu dApp espera que el proveedor esté disponible en window.ethereum, también puedes inyectarlo allí pasando la opción dangerouslyInjectWindow.

Ejemplo
ts
const wallet = createWallet({
  providers: {
    ethereum: {
      dangerouslyInjectWindow: true,
    },
  },
})

window.ethereum.request(/* ... */)

Solana

Por defecto, se devuelve un proveedor similar al de Phantom.

Ejemplo
ts
const wallet = createWallet({
  providers: {
    solana: true,
  },
})

const solanaProvider = await wallet.getProvider('solana')

solanaProvider.connect()

Además, el proveedor se anuncia a la página web siguiendo Wallet Standard. Si quieres desactivar este comportamiento, pasa la opción walletStandard.

Ejemplo
ts
const wallet = createWallet({
  providers: {
    solana: {
      walletStandard: false,
    },
  },
})

Si tu dApp espera que el proveedor esté disponible en window.solana, también puedes inyectarlo allí pasando la opción dangerouslyInjectWindow.

Ejemplo
ts
const wallet = createWallet({
  providers: {
    solana: {
      dangerouslyInjectWindow: true,
    },
  },
})

window.solana.connect()

Bitcoin

Por defecto, se devuelve un proveedor Sats Connect v1.

Ejemplo
ts
const wallet = createWallet({
  providers: {
    bitcoin: true,
  },
})

const bitcoinProvider = await wallet.getProvider('bitcoin')

bitcoinProvider.connect(/* ... */)

Además, el proveedor se anuncia a la página web siguiendo Wallet Standard. Si quieres desactivar este comportamiento, pasa la opción walletStandard.

Ejemplo
ts
const wallet = createWallet({
  providers: {
    bitcoin: {
      walletStandard: false,
    },
  },
})

Universal

Drop incluye un proveedor universal que te permite usar un único flujo de conexión para una dApp multi-cadena. Se recomienda interactuar con el proveedor a través de Wallet Standard. El proveedor universal se registra con el nombre Drop Universal.

Ejemplo
ts
import { createWallet } from '@money-sdk/core'

const wallet = createWallet({
  providers: {
    ethereum: true,
    solana: true,
    universal: true,
  },
})
tsx
import { useWallets, useConnect } from '@wallet-standard/react'
import { useMemo } from 'react'

const wallets = useWallets()
const universalWallet = useMemo(
  () => wallets.find(({ name }) => name === 'Drop Universal'),
  [wallets],
)

const [connecting, connect] = useConnect(universalWallet)

/** Connect Ethereum and Solana at the same time. */
const accounts = connect()

Una vez conectado el proveedor universal, puedes usar los demás proveedores como estás acostumbrado.

INFO

El proveedor universal solo conectará otros proveedores que también estén habilitados en la configuración.

Además, el proveedor es accesible desde la instancia de la wallet.

Ejemplo
ts
import { createWallet } from '@money-sdk/core'

const wallet = createWallet({
  providers: {
    bitcoin: true,
    ethereum: true,
    solana: true,
    universal: true,
  },
})

const provider = await wallet.getProvider('universal')

/** Connect Bitcoin, Ethereum and Solana at the same time. */
const accounts = provider.connect()

Valor de retorno

createWallet devuelve una instancia Wallet con los siguientes métodos:

getProvider(chain)

Devuelve una promesa que se resuelve con el proveedor web3 para la cadena indicada ('bitcoin', 'ethereum', 'solana' o 'universal'). Se resuelve a null si el proveedor no fue habilitado en la configuración de providers.

renderWidget(element)

Adjunta el iframe de la wallet a un elemento DOM específico para que el usuario vea la UI de la wallet. Pasa null para desacoplar el iframe de vuelta a document.body. Las bindings de React gestionan esto por ti mediante <WalletWidget>.

setWidgetConfig(config)

Reenvía una configuración del widget (theme, size, shape, compact) a la wallet integrada. Las bindings de React gestionan esto por ti mediante <WalletWidget>.

disconnect()

Reenvía un mensaje wallet:disconnect al iframe. Útil si quieres cerrar la sesión del usuario de forma programática sin esperar a que haga clic en el botón de desconectar dentro del widget.