• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

竹千代

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

dapp开发

一、连接插件钱包

根据EIP-1193标准协议,往window注入ethereum、okxwallet、BinanceChain等。 

构造provider: provider = new ethers.providers.Web3Provider(window.ethereum):  provider理解成dapp连接到区块链的入口。

然后触发用户连接钱包,选择账户:  await provider.request({ method: 'eth_requestAccounts' }); 

获取账户对象:  signer = provider.getSigner();   const address = await signer.getAddress();

获取到合约对象: contract = new ethers.Contract(contractAddress, contractABI, signer);

调用合约方法:  const tx = await contract.increment();

等待上链确认: await tx.wait();

 

二、WalletConnect连接移动钱包

打开二维码:

const walletConnectProvider = new WalletConnectProvider.default({
  rpc: {
    1: "https://mainnet.infura.io/v3/INFURA_ID", // 替换为你的 Infura ID
    5: "https://goerli.infura.io/v3/INFURA_ID" // 也可以改成你想链
  },
  chainId: 5, // Goerli 测试网
});

// 启动 WalletConnect 会自动弹出二维码
await walletConnectProvider.enable();

等待用户扫码后,构造provider:  provider = new ethers.providers.Web3Provider(walletConnectProvider);

获取账户:  signer = provider.getSigner();   const address = await signer.getAddress();

连接合约,构造合约对象: contract = new ethers.Contract(contractAddress, contractABI, signer);

监听断开: walletConnectProvider.on("disconnect", () => {

    alert("钱包已断开连接");
    location.reload();
  });

 

posted on 2025-04-06 18:31  竹千代  阅读(4)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3