メインコンテンツまでスキップ

プロバイダーディスカバリー

EVMプロバイダーディスカバリーにはEIP-6963を使用し、UTXO/Syscoinディスカバリーにはwindow.paliを使用します。

EIP-6963ディスカバリー

Test dapp provider selector showing Pali Wallet announced through EIP-6963
複数のウォレットがインストールされている場合は、EIP-6963のPaliプロバイダーを優先してください。
export async function getPaliEthereumProvider(timeoutMs = 300) {
const providers = [];

function onProvider(event) {
providers.push(event.detail);
}

window.addEventListener('eip6963:announceProvider', onProvider);
window.dispatchEvent(new Event('eip6963:requestProvider'));

await new Promise((resolve) => setTimeout(resolve, timeoutMs));
window.removeEventListener('eip6963:announceProvider', onProvider);

const match = providers.find(({ info }) => {
const name = String(info.name || '').toLowerCase();
const rdns = String(info.rdns || '').toLowerCase();
return name.includes('pali') || rdns.includes('pali');
});

return match?.provider || window.ethereum;
}

PaliはEIP-6963プロバイダーとしてアナウンスし、既存のMetaMaskスタイルdapps向けにwindow.ethereumの互換性も維持します。

UTXOプロバイダーディスカバリー

export function getPaliUtxoProvider() {
if (!window.pali) {
throw new Error('Pali UTXO provider not found.');
}
return window.pali;
}

実践的な推奨

  • EVM dapp: EIP-6963を優先し、window.ethereumへフォールバックします。
  • UTXO dapp: window.paliを必須にします。
  • デュアルモードdapp: 両方のプロバイダーを保持し、アカウント/ネットワークタイプに応じてメソッドをルーティングします。