createWallet
La función createWallet inicializa la wallet integrada y expone proveedores web3 a la página web.
Ejemplo
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
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
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
const wallet = createWallet({
providers: {
ethereum: {
dangerouslyInjectWindow: true,
},
},
})
window.ethereum.request(/* ... */)Solana
Por defecto, se devuelve un proveedor similar al de Phantom.
Ejemplo
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
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
const wallet = createWallet({
providers: {
solana: {
dangerouslyInjectWindow: true,
},
},
})
window.solana.connect()Bitcoin
Por defecto, se devuelve un proveedor Sats Connect v1.
Ejemplo
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
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
import { createWallet } from '@money-sdk/core'
const wallet = createWallet({
providers: {
ethereum: true,
solana: true,
universal: true,
},
})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
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.