¿Usando web3.js para codificar y decodificar base58 (ipfs)?

¿Es posible usar la biblioteca web3.js para codificar y decodificar base58?

Parece que web3.js incluye la biblioteca bignumber , pero no estoy seguro de si esto puede manejar la codificación base58 utilizada, por ejemplo, por ipfs.

Espero una función que se parezca un poco a esto (que falla): por ejemplo (basado en esto )

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

o

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

que devuelve un número entero grande del número base58. ¿Es posible codificar y decodificar base58 usando la biblioteca web3.js?

Respuestas (1)

Web3.js no proporciona un codificador/descodificador base58 porque solo se ocupa de la interfaz con ethereum, por lo que no hay un uso directo de esta función. Tendrá que usar un módulo como bs58 .

Aquí hay un ejemplo:

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