Javascript

在 JS 中生成隨機 uint256 數字

  • August 24, 2020

我需要在鏈下生成一個 uint256 隨機數(在 Node.js 客戶端中)。既然BN沒有random()功能,那麼最好的方法是什麼?

您可以使用 Node.js’crypto.randomBytes生成加密安全的隨機數:

import { randomBytes } from 'crypto';
import BN from 'bn.js';

const value = randomBytes(32); // 32 bytes = 256 bits

// Value as native bigint
const bigInt = BigInt(`0x${value.toString('hex')}`);

// Value as BN.js number
const bn = new BN(value.toString('hex'), 16);

如果你有 web3,你可以使用web3 -utils 中的 randomHex。

web3.utils.randomHex(32)
> "0xa5b9d60f32436310afebcfda832817a68921beb782fabf7915cc0460b443116a"

引用自:https://ethereum.stackexchange.com/questions/86880