首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Base58 javascript实现

Base58 javascript实现
EN

Stack Overflow用户
提问于 2019-05-10 16:34:18
回答 2查看 2.8K关注 0票数 0

我正在使用IPFS-multihash方法在智能合约中存储IPFS散列。为此,我需要解码base58格式:

代码语言:javascript
复制
QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4

转换为二进制(十六进制):

代码语言:javascript
复制
1220b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

但我无法在浏览器中使用bs58模块(我尝试使用Browserify)。你能告诉我在base58中解码和编码的javascript实现,这样我就可以在不使用node_modules的情况下实现上述方法吗?或者你能告诉我如何一步一步地使用Browserify来使用节点模块吗?

运行第一个命令后,在'node_modules‘文件夹中创建了'bs58’文件夹,folder.there不是lib文件夹。你能指导我必须使用的确切命令吗?

代码语言:javascript
复制
npm install --save bs58

npm install -g browserify

browserify < lib/bs58.js > lib/bs85.bundle.js

我的文件结构有点像这样:

代码语言:javascript
复制
-node_modules
-src
  |___index.html
  |___js
      |____app.js
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-10 17:03:15

对我来说,它是通过使用Base58 implementation并将结果转换为十六进制来工作的。

代码语言:javascript
复制
var MAP = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
var decoded = toHexString(from_b58(ipfsHash,MAP)).toUpperCase();

感谢Chris G

票数 0
EN

Stack Overflow用户

发布于 2019-05-18 08:08:37

根据您的用例,单独处理Base58可能还不够。

考虑使用官方的cids库来为你的合同做好未来的准备。

IPFS内容标识符称为CID (docs)。当前的默认值是CIDv0 (相当于Base58btc中的原始多哈希),但CIDv1是已经在野外使用的选择性升级(它允许编码为任意基数)。IPFS it will switch to CIDv1 in Base32作为未来的新默认(但每个人都可以自由地使用其他基础):

代码语言:javascript
复制
<cidv0> ::= <multihash-content-address>
<cidv1> ::= <multibase-prefix><cid-version><multicodec-content-type><multihash-content-address>

要使用cids库将完整的IPFS CID转换为十六进制,您可以执行以下操作:

代码语言:javascript
复制
const cidHex = new CID('bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy').buffer.toString('hex').toUpperCase()

或者,如果你只关心原始的多哈希表,你可以通过.multihash从CID中提取出来

代码语言:javascript
复制
const mhHex = new CID('bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy').multihash.toString('hex').toUpperCase()

cids library应该可以与browserify和其他捆绑器很好地协同工作。还有一个prebuilt version for the browser

希望这能有所帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56073688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档