В зависимости от вашего варианта использования, одной только Base58 может быть недостаточно.
Подумайте об использовании официальной библиотеки cids для подтверждения ваших контрактов на будущее.
Идентификаторы содержимого IPFSназываются CID ( документы ).Текущее значение по умолчанию - CIDv0 (равный необработанному мультихэшу в Base58btc), но CIDv1 - это дополнительное обновление, уже используемое в дикой природе (оно позволяет кодировать в произвольные базы). IPFS переключится на CIDv1 в Base32 в качестве нового значения по умолчанию в будущем (но каждый будет свободен в использовании другой базы, если пожелает это сделать):
<cidv0> ::= <multihash-content-address>
<cidv1> ::= <multibase-prefix><cid-version><multicodec-content-type><multihash-content-address>
Для преобразованияполный CID IPFS в шестнадцатеричный формат с библиотекой cids
, вы могли бы сделать что-то вроде:
const cidHex = new CID('bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy').buffer.toString('hex').toUpperCase()
или, если вы заботитесь только о raw multihash, вы можете извлечь его из CID через .multihash
:
const mhHex = new CID('bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy').multihash.toString('hex').toUpperCase()
Библиотека cids
должна нормально работать с browserify и другими пакетами.Для браузера есть предустановленная версия .
Надеюсь, это поможет:)