IPFS daemon和公共网关 / 网络研习社#54

ipfs

IPFS daemon提供后台的网络服务,但是这个守护进程相当脆弱,动不动就挂了!挂了也不会重启之类的,这样的话,网络的服务就意外地终止了!

IPFS在容错上真是做得不好,更可恶的是在github上的案例中竟然还有恶意代码!比如在这:
https://github.com/ipfs/js-ipfs/blob/master/examples/browser-vue/package.json ->

1
2
3
4
5
"dependencies": {
"core-js": "^2.6.5",
"ipfs": "file:../../",
"vue": "^2.6.10"
},

如果你是直接这样安装你就死翘翘了,"ipfs": "file:../../"这个会生成无限循环地文件夹,电脑直接卡死!刚开始就觉得有点怪,没多想,就直接npm install跑起来看看,没想到会一直在生成无限循环地文件夹!一直到现在我还没有成功把它删掉!

systemctl-service

要使IPFS daemon一直健壮地服务:挂了能重启,就需要使用systemctl。这个玩意我也不太熟,现学现卖。

  1. 先which命令查看jsipfs执行文件的位置,比如查到下面的路径:
    /usr/local/bin/jsipfs
  2. vim /lib/systemd/system/jsipfs.service,将下面代码贴入:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [Unit]
    Description=JSIPFS Daemon Client
    [Service]
    ExecStart=/usr/local/bin/jsipfs daemon
    Restart=always
    RestartSec=30
    Type=simple
    User=root
    Group=root
    [Install]
    WantedBy=multi-user.target
  3. systemctl daemon-reload

  4. systemctl enable jsipfs
  5. systemctl start jsipfs

好了,这样就可以很安心地使用ipfs的服务了!

公共网关

如果你的服务器挂了,其实你还是可以访问你的IPFS网络中的文件的。使用你文件的哈希来用公网也是一样可以访问的!这样的话,你的文件服务就会比一般的服务器更健壮。大家可以试下这个哈希值: Qmf1KNVAxc3oEmYTWnu2NrCKCkhs6xVkCbuRsd2F8Asmbq ,看下它是不是在所有的公网中都可访问。格式是这样的:https://cloudflare-ipfs.com/ipfs/Qmf1KNVAxc3oEmYTWnu2NrCKCkhs6xVkCbuRsd2F8Asmbq

查询公网地址

IPFS的公网还蛮稀缺的,再加上国内的环境会导致经常访问不了!这个没有太好的办法,除了自己建网关之外,就是随时查下哪些网关能用。


This page is synchronized from the post: ‘IPFS daemon和公共网关 / 网络研习社#54’

上传图片到IPFS网络 / 网络研习社#53

ipfs

在上一篇《零代码用IPFS做文件服务器》中启动了IPFS网络,这时服务器这边就准备好了,前端就可以向IPFS网络上传图片了。

关键的函数只有一个ipfs.add,前端读取图片,用ipfs.add上传,得到一个文件的哈希值,再在前端展示就好啰。

js-ipfs-http-client

  1. 前端和IPFS网络交互需要用到客户端插件js-ipfs-http-client,一条命令就可以安装好,cnpm install ipfs-http-client --save
  2. 必要的设置(vue中导入包,连接客户端)

    1
    2
    3
    import ipfsClient from 'ipfs-http-client'

    const ipfs = ipfsClient({ host: 'localhost', port: '9000', protocol: 'http' })
  3. 前端代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <label id="file2">Choose file to upload</label>
    <input type="file" ref="file" id="file" name="file" multiple="multiple"/>
    <input type="submit" @click="upload">

    methods:{
    upload() {
    let that = this
    let saveImageOnIpfs = (reader) => {
    return new Promise(function(resolve, reject) {
    const buffer = Buffer.from(reader.result)
    that.ipfs.add(buffer).then((response) => {
    console.log(response)
    resolve(response[0].hash)
    }).catch((err) => {
    console.error(err)
    reject(err)
    })
    })
    }

    let file = this.$refs.file.files[0]
    console.log(123, file)
    let reader = new FileReader()
    reader.readAsArrayBuffer(file)

    reader.onloadend = function (e) {
    console.log(233, reader)
    saveImageOnIpfs(reader).then((hash) => {
    console.log(655, hash)
    })
    }
    }
    }

上传图片就这么几行代码就可以搞定,比起PHP等来还是有一定的优势,至少看起来简单。再说,IPFS和区块链连接紧密,是天生的盟友,比如Steem 和IPFS和结合就可以开发出不错的应用来,星空笔记就不错!


This page is synchronized from the post: ‘上传图片到IPFS网络 / 网络研习社#53’

测试了一下空帐户的使用

昨天使用了一个空帐户(@starnote)想用它专门写写笔记什么的。里面的SP是0,看看它到底能用不?!

测试了下,只能发两帖就RC不够了,今天看了下,还是不能用!看来Steem对新用户还是不友好啊,不过区块链的项目对新手都不友好。用以太坊更是,而且手续费贼贵的,相比,Steem至少便宜吧。

看来要无障碍地使用Steem至少得有10个左右的SP才行!

null.jpg


This page is synchronized from the post: ‘测试了一下空帐户的使用’

星空笔记的简单使用

starnote.jpg

https://starnote.github.io

  1. 最开始当然是“新建主题”了!填好“标题”、“摘要”、“标签”提交就好啰。
  2. 回到主页后,点一下“标题”即可动态展开此块内容,就可以“新建章节”了。
    starnote2.jpg

哈,就这两步!日常使用中有两层目录就够用了,当然,不排除后期会多加几层目录的。章节都是动态展开或收拢,比较容易查看。

一个基于基于Steem和IPFS的区块链笔记的应用就可以使用啦!


This page is synchronized from the post: ‘星空笔记的简单使用’

星空笔记,基于Steem和IPFS的区块链笔记

starnote.jpg

https://starnote.github.io

星空笔记,基于Steem和IPFS的区块链笔记,@lemooljiang创建。数据存储在Steem区块链上,图片存在IPFS网络中,前端则使用IndexedDB数据库,几者相结合,有着神奇的效果!

星空笔记是一个去中心的应用! 它和比特币的离线钱包类似,可以很方便地在本地构建,无需服务器。

当然,为了方便大家使用,我把它上传到github page中,大家可以直接访问:https://starnote.github.io

本地构建说明

本地环境:Apache 或 Nginx

仓库地址: https://github.com/starnote/starnote.github.io

将仓库中的“index.html” 和 “static” 下载到本地,放进Apache 或 Nginx的根目录即可,http://localhost


This page is synchronized from the post: ‘星空笔记,基于Steem和IPFS的区块链笔记’

零代码用IPFS做文件服务器 / 网络研习社#52

ipfs3.jpg

https://ipfs.io/

这两天研究了下IPFS网络是如何在前端中使用的。既然IPFS号称是星际文件系统,想必在文件保存方面有优势啰!

认真研究了一下它的js版的文档(https://github.com/ipfs/js-ipfs),写得是相当复杂,想看懂是很难的。找来点视频对照着一起看,才发现用起来其实超简单的。比如你做个文件服务器吧,IPFS基本不用写什么代码,直接拉起来就可以用,完全可以说是:**零代码用IPFS做文件服务器!**

思路就是:安装IPFS -> 运行,没了!

我也没想到它有这么简单,学些什么PHP 、Django后台的简直弱爆了,代码写了一堆,运行起来bug一堆!还是IPFS好用啊。什么技术都得尝试着用用!这样你才能体会到它的特点和优势。

实现文件服务器只需三步(前提是有node环境):

  1. npm install ipfs –global
  2. jsipfs init
  3. jsipfs daemon

好了,你就可以用ipfs.add往IPFS网络添加文件了,是不是超简单的!


This page is synchronized from the post: ‘零代码用IPFS做文件服务器 / 网络研习社#52’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×