Skip to content

createWallet

Fungsi createWallet menginisialisasi embedded wallet dan mengekspos web3 provider ke halaman web.

Contoh

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

Referensi

appId

Pengidentifikasi aplikasi Anda. Ini memungkinkan integrasi Anda memiliki pengaturan sendiri — origin parent yang diizinkan, feature flag, dan cakupan analitik per-dApp.

INFO

Ini hanya wajib untuk production. Lihat panduan App ID untuk registrasi. Anda dapat mengabaikannya selama pengembangan lokal; wallet akan dimuat dengan allow-list khusus localhost.

walletUrl

Origin dari iframe Drop wallet. Default-nya https://dropwallet.app.

Hanya override ini untuk mengarahkan ke deployment preview atau instance wallet lokal — dApp production harus selalu membiarkan default.

signerUrl

Origin dari popup Drop signer yang digunakan untuk alur passkey. Default-nya mengarah ke signer kanonikal. Aturan yang sama dengan walletUrl berlaku.

providers

Daftar web3 provider yang ingin Anda ekspos ke dApp Anda, beserta konfigurasi opsionalnya.

Ethereum & chain yang kompatibel dengan EVM

Secara default, sebuah provider EIP-1193 dikembalikan.

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

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

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

Selain itu, provider diumumkan ke halaman web mengikuti EIP-6963. Jika Anda ingin menonaktifkan perilaku ini, oper opsi eip6963.

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

Jika dApp Anda berharap provider tersedia di window.ethereum, Anda juga dapat menyuntikkannya di sana dengan mengoper opsi dangerouslyInjectWindow.

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

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

Solana

Secara default, sebuah provider mirip Phantom dikembalikan.

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

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

solanaProvider.connect()

Selain itu, provider diumumkan ke halaman web mengikuti Wallet Standard. Jika Anda ingin menonaktifkan perilaku ini, oper opsi walletStandard.

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

Jika dApp Anda berharap provider tersedia di window.solana, Anda juga dapat menyuntikkannya di sana dengan mengoper opsi dangerouslyInjectWindow.

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

window.solana.connect()

Bitcoin

Secara default, sebuah provider Sats Connect v1 dikembalikan.

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

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

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

Selain itu, provider diumumkan ke halaman web mengikuti Wallet Standard. Jika Anda ingin menonaktifkan perilaku ini, oper opsi walletStandard.

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

Universal

Drop menyertakan provider universal yang memungkinkan Anda menggunakan satu alur connect untuk dApp multi-chain. Disarankan untuk berinteraksi dengan provider ini melalui Wallet Standard. Provider universal mendaftarkan dirinya dengan nama Drop Universal.

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

Setelah provider universal terhubung, Anda dapat menggunakan provider lainnya seperti biasa.

INFO

Provider universal hanya akan menghubungkan provider lain yang juga diaktifkan di config.

Selain itu, provider juga dapat diakses dari instance wallet.

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

Nilai kembalian

createWallet mengembalikan sebuah instance Wallet dengan method berikut:

getProvider(chain)

Mengembalikan promise yang resolve ke web3 provider untuk chain yang diberikan ('bitcoin', 'ethereum', 'solana', atau 'universal'). Resolve ke null jika provider tidak diaktifkan di config providers.

renderWidget(element)

Meng-attach iframe wallet ke elemen DOM tertentu sehingga pengguna melihat UI wallet. Oper null untuk meng-attach kembali iframe ke document.body. Binding React menangani ini untuk Anda melalui <WalletWidget>.

setWidgetConfig(config)

Meneruskan konfigurasi widget (theme, size, shape, compact) ke embedded wallet. Binding React menangani ini untuk Anda melalui <WalletWidget>.

disconnect()

Meneruskan pesan wallet:disconnect ke iframe. Berguna jika Anda ingin secara programatis membuat pengguna logout tanpa menunggu mereka mengklik tombol disconnect di dalam widget.