如何在基于Bytom开发过程中集成IPFS

简介: 本文介绍了基于Bytom开发过程中集成IPFS。step1: 搭建bytom节点比原相关资料:https://github.com/Bytom-Community/Bytom_Docs搭建bytom节点有很多方式,然后开启RPC调用模式。

本文介绍了基于Bytom开发过程中集成IPFS。

step1: 搭建bytom节点

比原相关资料:https://github.com/Bytom-Community/Bytom_Docs

搭建bytom节点有很多方式,然后开启RPC调用模式。这里推荐用docker搭建比原节点: docker搭建比原节点,同时开启RPC访问模式(即终端交互模式)。

我这里都是在本地操作,所以对应的端口是:9888。启动好以后我们在postman里请求测试一下,如下图:

image

说明我们已经搭建好了比原节点,并且可以进行远程调用。

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

image

先在我们已经搭建好了IPFS的节点,并且开启API网络监听。现在我们来写个测试demo(go语言版本),往网络上传文件。

package main

import (
    "fmt"
   "os"
   "strings"

   shell "github.com/ipfs/go-ipfs-api"
)

func main() {
    // Where your local node is running on localhost:5001
     sh := shell.NewShell("localhost:5001")
   cid, err := sh.Add(strings.NewReader("hello world!"))
   if err != nil {
        fmt.Fprintf(os.Stderr, "error: %s", err)
        os.Exit(1)
   }
   fmt.Println("added %s", cid)

   err = sh.Get("QmdFhFwGHy54T3e8cf1ZmovWbZ2yW4yNhNKsu5dSfcgh6H", "/Users/huangxinglong/Desktop")
   if err != nil {
       fmt.Fprintf(os.Stderr, "error: %s", err)
       os.Exit(1)
   }
}

我们运行以后发现返回Hash,然后我们可以通过Hash把上传的文件获取到 "/Users/huangxinglong/Desktop"目录现在我们就可以进行开发了。

step3: 准备开发

搭建好比原节点和IPFS节点以后我们就可以根据自己选择的开发语言选择具体的插件。 IPFS的插件有如下几种语言的API插件:

image

比原链的API插件主要有:

image

如果选择的开发语言不是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目录下面:

image

然后我们在项目中连接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

相关文章
|
6月前
|
Java 数据库连接 数据库
mybatis-spring集成&数据库连接池&开启注解式开发
mybatis-spring集成&数据库连接池&开启注解式开发
|
4天前
|
存储 前端开发 安全
《Solidity 简易速速上手小册》第9章:DApp 开发与 Solidity 集成(2024 最新版)(上)
《Solidity 简易速速上手小册》第9章:DApp 开发与 Solidity 集成(2024 最新版)
45 0
|
6月前
|
人工智能 IDE Java
IntelliJ IDEA 2023.2正式发布,引入AI助手和GitLab集成,升级你的开发体验!( IDEA 2023.2彻底弃用Struts2,不支持Win7)
IntelliJ IDEA 2023.2正式发布,引入AI助手和GitLab集成,升级你的开发体验!( IDEA 2023.2彻底弃用Struts2,不支持Win7)
165 0
|
7月前
orbeon form 通过 url 的方式同第三方应用集成的开发明细
orbeon form 通过 url 的方式同第三方应用集成的开发明细
34 0
|
7月前
|
数据采集 IDE Java
|
7月前
|
Web App开发 前端开发 JavaScript
SAP UI5 应用开发教程之八十二 - 采用 OPA5 开发支持页面跳转的 SAP UI5 集成测试用例试读版
SAP UI5 应用开发教程之八十二 - 采用 OPA5 开发支持页面跳转的 SAP UI5 集成测试用例试读版
38 0
|
7月前
|
存储 Java 数据库连接
提升开发效率的必备技能:Spring集成Mybatis和PageHelper详解(二)
提升开发效率的必备技能:Spring集成Mybatis和PageHelper详解(二)
115 0
|
7月前
|
XML Java 数据库连接
提升开发效率的必备技能:Spring集成Mybatis和PageHelper详解(一)
提升开发效率的必备技能:Spring集成Mybatis和PageHelper详解
125 0
|
前端开发 Java 调度
SpringCloud微服务实战——搭建企业级开发框架(四十二):集成分布式任务调度平台XXL-JOB,实现定时任务功能
定时任务几乎是每个业务系统必不可少的功能,计算到期时间、过期时间等,定时触发某项任务操作。在使用单体应用时,基本使用Spring提供的注解即可实现定时任务,而在使用微服务集群时,这种方式就要考虑添加分布式锁来防止多个微服务同时运行定时任务而导致同一个任务重复执行。
706 0
SpringCloud微服务实战——搭建企业级开发框架(四十二):集成分布式任务调度平台XXL-JOB,实现定时任务功能
|
8月前
|
API 开发工具 iOS开发
一点就通,社交源码IOS客户端开发集成SDK
所谓SDK,全称是SoftwaredevelopmentKit,翻译成软件开发工具包。SDK用助开发某种软件,今天给大家简单讲解下如何在社交源码IOS客户端上开发集成 SDK。

热门文章

最新文章