Использование web3.js для кодирования и декодирования base58 (ipfs)?

Можно ли использовать библиотеку web3.js для кодирования и декодирования base58?

Кажется, что web3.js включает в себя библиотеку bignumber , но я не уверен, сможет ли она справиться с кодировкой base58, используемой, например, ipfs.

Я надеюсь на функцию, которая выглядит примерно так (которая не работает): например (на основе этого )

web3.utils.toBN('QmXGTaGWTT1uUtfSb2sBAvArMEVLK4rQEcQg5bv7wwdzwU', 58) //web3 v1.x

или

web3.toBigNumber("QmXGTaGWTT1uUtfSb2sBAvArMEVLK4rQEcQg5bv7wwdzwU",58) //web3 v0.x

который возвращает целое число bignumber из числа base58. Можно ли выполнять кодирование и декодирование base58 с помощью библиотеки web3.js?

Ответы (1)

Web3.js не предоставляет кодировщик/декодер base58, потому что он связан только с интерфейсом к ethereum, поэтому прямое использование этой функции невозможно. Вам придется использовать такой модуль, как bs58 .

Вот пример:

const bs58 = require('bs58')
const BN = require('bn.js')

const hash = 'QmXGTaGWTT1uUtfSb2sBAvArMEVLK4rQEcQg5bv7wwdzwU'
const hex = bs58.decode(hash).toString('hex')

console.log(hex) // 122084a644bfcb8639e1b1a1fc72fd0ad1826b91f7a9baa06ad409ac3c02b31f981b

const n = new BN(hex, 16)
console.log(n.toString(10)) // 537335293128262426148241029128274019001757729355677528305490323656269309818148891