xuemen / Infra

基础设施项目,由学门联合产品部负责。
0 stars 5 forks source link

存储到ipfs? #5

Open hyg opened 6 years ago

hyg commented 6 years ago

infra的存储可以先以有中心模式启动,以linux族的服务器通过http API提供数据读写,它内部封装不同的存储方案,其中包括写入ipfs网络。

用两个模版二确定JT发行机制确定,就启动模版三实现新版本的infra吧。
也就是六天后启动。

试用ipfs
放在 https://github.com/hyg/js.sample 备用

windows

  1. https://nodejs.org/en/download/ 选择“All download options” 下载对应平台的nodejs

  2. 解压后无需安装,设置一下环境变量PATH即可。

    npm install ipfs --save
  3. 报错:https://github.com/hyg/js.sample/issues/1

  4. js-ipfs的说明是:expected to work on Windows. 因此改到ubuntu继续试用(这已经偏离大部分消费者需求了)。

ubuntu

  1. nodejs已经安装过,直接npm install ipfs --save
  2. 下节课继续: https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#add
const IPFS = require('ipfs')
const node = new IPFS()

node.on('ready', () => {
  // Your node is now ready to use \o/

  str = "https://github.com/hyg/blog/blob/master/timeflow.md"
  const files = [
    {
      path: '/tmp/myfile.txt',
      content: str
    }
  ]  
  ipfs.files.add(files, function (err, files) {
  // 'files' will be an array of objects containing paths and the multihashes of the files added
  })

  // stopping a node
  node.stop(() => {
    // node is now 'offline'
  })
})

参考:

hyg commented 6 years ago

14:00~16:59

infra storage via IPFS

接着: https://github.com/xuemen/Infra/issues/5

add

huangyg@dev:~/git/js.sample/ipfs$ node test.js
Swarm listening on /ip4/127.0.0.1/tcp/4003/ws/ipfs/QmUoAwdpPFrdVVGitPXGyk4XFmRiTRmDdnq2NtNkhDxEiS
Swarm listening on /ip4/127.0.0.1/tcp/4002/ipfs/QmUoAwdpPFrdVVGitPXGyk4XFmRiTRmDdnq2NtNkhDxEiS
Swarm listening on /ip4/192.168.3.69/tcp/4002/ipfs/QmUoAwdpPFrdVVGitPXGyk4XFmRiTRmDdnq2NtNkhDxEiS
file added.

应该是没有add成功,范例代码中一旦ready就offline的做法,应该在中间是有循环语句的。

仔细阅读ipfs协议再继续调试。

js-ipfs的repo是自己加的概念。不是ipfs 中的。 ​​​​

html

似乎可以通过浏览器实现跨平台的存储。

参考:

hyg commented 6 years ago

14:00~14:29

infra

整理IPFS的bitswap协议,结合到无中心的供需模型中。

https://github.com/ipfs/papers/raw/master/ipfs-cap2pfs/ipfs-p2p-file-system.pdf
3.4.2 BitSwap Strategy

https://filecoin.io/filecoin.pdf

r = bytes_sent/(bytes_recv + 1) P(send | r) = 1 − (1/1 + exp(6 − 3r))