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


    本文介绍了基于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语言版本),往网络上传文件。

    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插件:

    比原链的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

  • 相关阅读:
    通过Nginx,Tomcat访问日志(access log)记录请求耗时
    Nginx+Lua+Redis 对请求进行限制
    windows7+eclipse+hadoop2.5.2环境配置
    ubuntu + hadoop2.5.2分布式环境配置
    CentOS6.5上golang环境配置
    curl POST
    .sh 的运行
    CentOS 安装nginx
    Amazon ec2 改成密码登录方式
    SSH 服务器不用密码
  • 原文地址:https://www.cnblogs.com/bytom/p/10286000.html
Copyright © 2020-2023  润新知