如何为 Polkadot 或 Kusama 等 Substrate 链生成销毁地址?

How do I generate a burn address for Substrate chains like Polkadot or Kusama?

我想生成一个没有密钥的地址,以便它可以用作销毁地址 - 一个可以发送代币但永远不会从中取回代币的地址。我如何生成一个?

您可以使用 PolkadotJS 的密钥环子模块:

const { encodeAddress } = require('@polkadot/keyring');

const zero = '0x' + '00'.repeat(32);
const output = encodeAddress(zero, 2);

console.log(output.toString());

这输出:CaKWz5omakTK7ovp4m3koXrHyHb7NG3Nt7GENHbviByZpKp 这是一个永远无法解锁的 Kusama 地址(由于上面 encodeAddress 中的 2)——[= 没有私钥23=]键0x0.

或者,encodeAddress(new Uint8Array(32)) 也可以 - u8a 初始化为 0,对于随机地址,您可以使用 encodeAddress(randomAsU8a()).

与其将你的代币发送到任意账户,我建议将你的资金发送到资金地址(如果你的 Substrate 链上有)。

否则,考虑到余额模块的当前实现,一种更技术性的消耗资金的方法是利用现有存款逻辑。

基本上,如果一个账户的资金少于现有存款,这些资金就会被烧毁,链上的 "total issuance" 会正确减少。作为拥有一些资金的用户,您需要做的就是进行多次小额交易,将少于现有存款的资金发送到一个空账户。这些转账都会导致余额从系统中真正被破坏。