本文介绍了基于 Bytom 开发过程中集成 IPFS。
step1: 搭建 bytom 节点
比原相关资料:https://github.com/Bytom-Community/Bytom_Docs
搭建 bytom 节点有很多方式,然后开启 RPC 调用模式。这里推荐用 docker 搭建比原节点: docker 搭建比原节点,同时开启 RPC 访问模式(即终端交互模式)。
我这里都是在本地操作,所以对应的端口是:9888。启动好以后我们在 postman 里请求测试一下,如下图:
说明我们已经搭建好了比原节点,并且可以进行远程调用。
step2: 搭建 IPFS 节点
IPFS 中文社区官网:http://ipfser.org
IPFS 项目地址:https://github.com/ipfs
各种语言实现源码:
GO:https://github.com/ipfs/go-ipfs
JavaScript:https://github.com/ipfs/js-ipfs
Python:https://github.com/ipfs/js-ipfs
C:https://github.com/Agorise/c-ipfs
搭建 IPFS 节点,这里如果只是本地开发,就只需要搭建本地单节点就足够了。接下来我们进行具体的搭建。这里可以源码搭建和 docker 镜像搭建,具体过程可以参考(因为它支持多种语言,这里我们以 go 语言版本为例):
搭建 IPFS 环境:https://blog.csdn.net/weixin_41160534/article/details/81358613
搭建好以后一定要开启端口监听:
ipfs daemon
先在我们已经搭建好了 IPFS 的节点,并且开启 API 网络监听。现在我们来写个测试 demo(go 语言版本),往网络上传文件。
step3: 准备开发
搭建好比原节点和 IPFS 节点以后我们就可以根据自己选择的开发语言选择具体的插件。 IPFS 的插件有如下几种语言的 API 插件:
比原链的 API 插件主要有:
如果选择的开发语言不是 java,PHP,Node.js。需要我们自己去根据比原的开发文档,然后去集成。
step4: 具体案例
目的:根据比原上的交易将信息存储在 IPFS 中
首先根据自己选择的开发语言去选择对应的 API 插件,我选择的是 go 语言,IPFS 有 go 语言的 API 插件:https://github.com/ipfs/go-ipfs-api。我们在开发过程中直接根据比原的开发文档去开发,开发文档地址:https://docs.bytom.io/
首先我们去下载 IPFS 的 go 语言 API 插件放到自己的项目中,然后放到自己的项目 vender 目录下面:
然后我们在项目中连接 IPFS 节点,同时上传一个文件。然后我们会发现返回 Hash。 然后我们调用比原 create-key 接口和 create_account 接口。创建 key 和 account,然后用给自己的地址充值 BTM。通过 api 请求 3 个接口,先 build → sign → submit,分别对应的 api 是 build-transaction、sign-transaction、submit-transaction。 然后我们就可以创建一笔交易。
存到 IPFS 上返回的 hash 是:QmP4UDViHc78un4SyHZV2ooHkSon2EttpamqPqXQ9WHcaV,将返回的 hash 放在 arbitrary 对应的字段,如下:
build-transaction:
{
"base_transaction": null,
"actions": [{
"account_id": "0KTCS3R5G0A02",
"amount": 10000000,
"asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"type": "spend_account"
}, {
"account_id": "0KTCS3R5G0A02",
"amount": 100,
"asset_id": "608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd",
"type": "spend_account"
}, {
"account_id": "0KTCS3R5G0A02",
"amount": 100,
"asset_id": "608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd",
"arbitrary": "QmP4UDViHc78un4SyHZV2ooHkSon2EttpamqPqXQ9WHcaV",
"type": "retire"
}],
"ttl": 0,
"time_range": 1521625823
}
然后依次调用 sign-transaction 和 submit-transaction 接口,就可以在交易过程中将信息存储在 IPFS 上,如果我们还需要做更复杂的操作,再根据比原开发文档去做相应的操作。
现在我们就可以根据比原上的交易 hash,找到对应的 IPFS 存储 Hash。获取到在 IPFS 上存储的文件。
具体项目过程请参考:https://github.com/BytomFans/bytom-ipfs
比原项目仓库:
Github 地址:https://github.com/Bytom/bytom
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于