createWallet
Die Funktion createWallet initialisiert das Embedded Wallet und stellt der Webseite Web3-Provider bereit.
Beispiel
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(/* ... */)Referenz
appId
Kennung deiner Anwendung. Damit erhält deine Integration ihre eigenen Einstellungen – erlaubte Parent-Origins, Feature-Flags und einen per-dApp-Analyse-Scope.
INFO
Dies ist nur für die Produktion erforderlich. Siehe den App-ID-Leitfaden für die Registrierung. Du kannst sie während der lokalen Entwicklung weglassen; das Wallet lädt dann mit einer nur auf localhost beschränkten Allowlist.
walletUrl
Origin des Drop-Wallet-iframes. Standardmäßig https://dropwallet.app.
Überschreibe dies nur, um auf ein Preview-Deployment oder eine lokale Wallet-Instanz zu zeigen – Produktions-dApps sollten immer den Standardwert beibehalten.
signerUrl
Origin des Drop-Signer-Popups, das für Passkey-Flows verwendet wird. Standardmäßig der kanonische Signer. Es gelten dieselben Regeln wie für walletUrl.
providers
Liste der Web3-Provider, die du deiner dApp bereitstellen möchtest, samt ihrer optionalen Konfiguration.
Ethereum & EVM-kompatible Chains
Standardmäßig wird ein EIP-1193- Provider zurückgegeben.
Beispiel
const wallet = createWallet({
providers: {
ethereum: true,
},
})
const ethereumProvider = await wallet.getProvider('ethereum')
ethereumProvider.request(/* ... */)Zusätzlich wird der Provider der Webseite gemäß EIP-6963 angekündigt. Wenn du dieses Verhalten deaktivieren möchtest, übergib die Option eip6963.
Beispiel
const wallet = createWallet({
providers: {
ethereum: {
eip6963: false,
},
},
})Wenn deine dApp erwartet, dass der Provider unter window.ethereum verfügbar ist, kannst du ihn dort auch injizieren, indem du die Option dangerouslyInjectWindow übergibst.
Beispiel
const wallet = createWallet({
providers: {
ethereum: {
dangerouslyInjectWindow: true,
},
},
})
window.ethereum.request(/* ... */)Solana
Standardmäßig wird ein Phantom-ähnlicher Provider zurückgegeben.
Beispiel
const wallet = createWallet({
providers: {
solana: true,
},
})
const solanaProvider = await wallet.getProvider('solana')
solanaProvider.connect()Zusätzlich wird der Provider der Webseite gemäß Wallet Standard angekündigt. Wenn du dieses Verhalten deaktivieren möchtest, übergib die Option walletStandard.
Beispiel
const wallet = createWallet({
providers: {
solana: {
walletStandard: false,
},
},
})Wenn deine dApp erwartet, dass der Provider unter window.solana verfügbar ist, kannst du ihn dort auch injizieren, indem du die Option dangerouslyInjectWindow übergibst.
Beispiel
const wallet = createWallet({
providers: {
solana: {
dangerouslyInjectWindow: true,
},
},
})
window.solana.connect()Bitcoin
Standardmäßig wird ein Sats Connect v1- Provider zurückgegeben.
Beispiel
const wallet = createWallet({
providers: {
bitcoin: true,
},
})
const bitcoinProvider = await wallet.getProvider('bitcoin')
bitcoinProvider.connect(/* ... */)Zusätzlich wird der Provider der Webseite gemäß Wallet Standard angekündigt. Wenn du dieses Verhalten deaktivieren möchtest, übergib die Option walletStandard.
Beispiel
const wallet = createWallet({
providers: {
bitcoin: {
walletStandard: false,
},
},
})Universal
Drop liefert einen universellen Provider aus, mit dem du einen einzigen Connect-Flow für eine Multi-Chain-dApp nutzen kannst. Es wird empfohlen, mit dem Provider über Wallet Standard zu interagieren. Der universelle Provider registriert sich mit dem Namen Drop Universal.
Beispiel
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()Sobald der universelle Provider verbunden ist, kannst du die anderen Provider wie gewohnt verwenden.
INFO
Der universelle Provider verbindet nur andere Provider, die ebenfalls in der Konfiguration aktiviert sind.
Zusätzlich ist der Provider über die Wallet-Instanz erreichbar.
Beispiel
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()Rückgabewert
createWallet gibt eine Wallet-Instanz mit den folgenden Methoden zurück:
getProvider(chain)
Gibt ein Promise zurück, das mit dem Web3-Provider für die angegebene Chain aufgelöst wird ('bitcoin', 'ethereum', 'solana' oder 'universal'). Löst mit null auf, falls der Provider in der providers-Konfiguration nicht aktiviert war.
renderWidget(element)
Hängt das Wallet-iframe an ein bestimmtes DOM-Element, damit der Nutzer die Wallet-UI sieht. Übergib null, um das iframe wieder an document.body anzuhängen. Die React-Bindings übernehmen dies für dich über <WalletWidget>.
setWidgetConfig(config)
Leitet eine Widget-Konfiguration (Theme, Größe, Form, kompakt) an das eingebettete Wallet weiter. Die React-Bindings übernehmen dies für dich über <WalletWidget>.
disconnect()
Leitet eine wallet:disconnect-Nachricht an das iframe weiter. Nützlich, wenn du den Nutzer programmatisch abmelden möchtest, ohne darauf zu warten, dass er auf den In-Widget-Disconnect-Button klickt.