Skip to content

createWallet

Die Funktion createWallet initialisiert das Embedded Wallet und stellt der Webseite Web3-Provider bereit.

Beispiel

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(/* ... */)

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
ts
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
ts
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
ts
const wallet = createWallet({
  providers: {
    ethereum: {
      dangerouslyInjectWindow: true,
    },
  },
})

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

Solana

Standardmäßig wird ein Phantom-ähnlicher Provider zurückgegeben.

Beispiel
ts
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
ts
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
ts
const wallet = createWallet({
  providers: {
    solana: {
      dangerouslyInjectWindow: true,
    },
  },
})

window.solana.connect()

Bitcoin

Standardmäßig wird ein Sats Connect v1- Provider zurückgegeben.

Beispiel
ts
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
ts
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
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()

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
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()

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.