1

我想生成一个没有密钥的地址,以便它可以用作刻录地址 - 一个可以发送令牌并且永远不会从中检索到的地址。如何生成一个?

4

2 回答 2

2

你可以使用 PolkadotJS 的 keyring 子模块:

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

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

console.log(output.toString());

这输出:这是一个永远无法解锁的CaKWz5omakTK7ovp4m3koXrHyHb7NG3Nt7GENHbviByZpKpKusama 地址(由于上述原因) - 没有公钥的私钥。2encodeAddress0x0

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

于 2020-02-03T17:35:54.093 回答
2

我建议不要将你的代币发送到任意账户,而是将你的资金发送到金库地址(如果你的 Substrate 链上有一个)。

否则,考虑到余额模块的当前实施,一种更具技术性的烧钱方式将是利用存在存款逻辑。

基本上,如果一个账户的资金少于现有存款,这些资金就会被烧毁,链上的“总发行量”会正确减少。作为一个有一些资金的用户,你需要做的就是进行许多微交易,将少于存入存款的资金发送到一个空账户。这些转移都将导致余额真正从系统中销毁。

于 2020-02-04T10:13:08.287 回答