Skip to content

波卡批量转账 demo

demo

js
const { Keyring } = require("@polkadot/keyring");
const { ApiPromise, WsProvider } = require("@polkadot/api");

async function transferWithMnemonic(mnemonic, recipient, amount) {
  // 创建连接
  const provider = new WsProvider("wss://xxxxxxxxxxxxxx");
  const api = await ApiPromise.create({ provider });

  try {
    // 使用助记词生成密钥对
    const keyring = new Keyring({ type: "sr25519" });
    const pair = keyring.addFromMnemonic(mnemonic);

    // 构造转账交易
    const transfer = api.tx.balances.transfer(recipient, amount);

    // 签名并发送交易
    const hash = await transfer.signAndSend(pair);

    console.log(Transfer sent with hash ${hash.toHex()});
  } catch (error) {
    console.error("Transfer failed", error);
  } finally {
    // 断开连接
    await api.disconnect();
  }
}

async function transferWithPrivateKey(privateKey, recipient, amount) {
  // 创建连接
  const provider = new WsProvider("wss://xxxxxxxxxxxxxxx");
  const api = await ApiPromise.create({ provider });

  try {
    // 使用私钥导入密钥对
    const keyring = new Keyring({ type: "sr25519" });
    const pair = keyring.addFromUri(privateKey);

    // 构造转账交易
    const transfer = api.tx.balances.transfer(recipient, amount);

    // 签名并发送交易
    const hash = await transfer.signAndSend(pair);

    console.log(Transfer sent with hash ${hash.toHex()});
  } catch (error) {
    console.error("Transfer failed", error);
  } finally {
    // 断开连接
    await api.disconnect();
  }
}

// 使用示例
const privateKey =
  "0x3ab3700c7ce4c7f55ff98285e95a2e1fe50e915b367c2cd79d8af47c3db3c56d";
const mnemonic =
  "clarify immune gas rib damage opera height recall improve rail waste inch";
const recipient = "5GBn88ybqjzDBLSjRPBUnZwm2YcvxGr93HYPM5i4B5fMFtzB";
const amount = 1 + "000000000000000000"; // 1个dpr后面要有18个0

transferWithPrivateKey(privateKey, recipient, amount);

// transferWithMnemonic(mnemonic, recipient, amount);

需求:

  1. 目的是想实现批量转账
  2. 有 N 台这设备,需要,将这些设备上私钥导入到这个 demo 上实现转账
  3. 需求。就是获取余额,然后转账到固定的一个地址。需要注意的是,需要间隔 2-3 秒。避免操作失败

polkadot 文档说明

https://polkadot.js.org/docs/api/examples/promise/transfer-events