Skip to content

createWallet

createWallet 関数は、埋め込みウォレットを初期化し、web3 プロバイダを Web ページに公開します。

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

リファレンス

appId

あなたのアプリケーションの識別子です。これにより、統合ごとに独自の設定 — 許可される親オリジン、機能フラグ、dApp ごとの分析スコープ — を持つことが できます。

INFO

これは本番環境でのみ必須です。登録については App ID ガイド を 参照してください。ローカル開発中は省略できます。ウォレットは localhost のみを 許可するリストで読み込まれます。

walletUrl

Drop ウォレット iframe のオリジンです。デフォルトは https://dropwallet.app です。

プレビューデプロイメントやローカルのウォレットインスタンスを指すためだけに これをオーバーライドしてください — 本番の dApp は常にデフォルトのままにして ください。

signerUrl

passkey フローに使用される Drop 署名者ポップアップのオリジンです。デフォルトは 正規の署名者です。walletUrl と同じルールが適用されます。

providers

dApp に公開したい web3 プロバイダのリストと、その任意の設定です。

Ethereum および EVM 互換チェーン

デフォルトでは、EIP-1193 プロバイダが 返されます。

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

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

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

さらに、プロバイダは EIP-6963 に 従って Web ページにアナウンスされます。この動作を無効にするには、eip6963 オプションを渡します。

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

dApp がプロバイダが window.ethereum で利用可能であることを前提としている 場合、dangerouslyInjectWindow オプションを渡すことでそこに注入することも できます。

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

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

Solana

デフォルトでは、Phantom に似た プロバイダが返されます。

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

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

solanaProvider.connect()

さらに、プロバイダは Wallet Standard に 従って Web ページにアナウンスされます。この動作を無効にするには、 walletStandard オプションを渡します。

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

dApp がプロバイダが window.solana で利用可能であることを前提としている 場合、dangerouslyInjectWindow オプションを渡すことでそこに注入することも できます。

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

window.solana.connect()

Bitcoin

デフォルトでは、 Sats Connect v1 プロバイダが返されます。

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

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

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

さらに、プロバイダは Wallet Standard に 従って Web ページにアナウンスされます。この動作を無効にするには、 walletStandard オプションを渡します。

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

Universal

Drop には、マルチチェーン dApp で単一の接続フローを使えるユニバーサル プロバイダが付属しています。このプロバイダとのやり取りは Wallet Standard 経由で 行うことを推奨します。ユニバーサルプロバイダは Drop Universal という名前で 自身を登録します。

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

ユニバーサルプロバイダが接続されると、他のプロバイダをいつも通り使用でき ます。

INFO

ユニバーサルプロバイダは、config で有効にされている他のプロバイダのみを 接続します。

さらに、プロバイダはウォレットインスタンスからアクセスできます。

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

戻り値

createWallet は、次のメソッドを持つ Wallet インスタンスを返します。

getProvider(chain)

指定されたチェーン('bitcoin''ethereum''solana'、または 'universal')の web3 プロバイダに解決する promise を返します。プロバイダが providers config で有効になっていなかった場合は null に解決します。

renderWidget(element)

ウォレット iframe を特定の DOM 要素にアタッチして、ユーザーがウォレット UI を 見られるようにします。iframe を document.body に戻してデタッチするには null を渡します。React バインディングでは <WalletWidget> 経由でこれを自動的に処理します。

setWidgetConfig(config)

ウィジェットの設定(theme、size、shape、compact)を埋め込みウォレットに 転送します。React バインディングでは <WalletWidget> 経由でこれを自動的に処理します。

disconnect()

iframe に wallet:disconnect メッセージを転送します。ユーザーがウィジェット 内の切断ボタンをクリックするのを待たずに、プログラム的にログアウトさせたい 場合に便利です。