主题
波卡批量转账 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);
需求:
- 目的是想实现批量转账
- 有 N 台这设备,需要,将这些设备上私钥导入到这个 demo 上实现转账
- 需求。就是获取余额,然后转账到固定的一个地址。需要注意的是,需要间隔 2-3 秒。避免操作失败
polkadot 文档说明
https://polkadot.js.org/docs/api/examples/promise/transfer-events