IPFS&BlockChain:一只豆荚中的两颗豌豆 | 号精选

最好的一点是,在任何时候都只有一个特定文件的副本,所以这消除了冗余,使整个过程更有效率和更符合逻辑。

IPFS&BlockChain:一只豆荚中的两颗豌豆 | 号精选

距离测试网上线倒计时:6

大家好,我是Viraz Malhotra,是区块链的开发者和极客。在这个博客中,我将讨论如何将IFPS集成到您的Dapps中。首先,让我们谈谈什么是IPFS(星际文件系统),以及它为什么会在全世界引起轰动。

一、IPFS是什么?

让我们谈谈今天的Web架构是如何工作的(Web 2.0)。

这是一个典型的客户机-服务器体系结构,如果你想要一个文件/文档/任何类型的数据,你上网搜索一个特定的文件(定位搜索),会涉及数据集中地存储在服务器上,冗余文件/数据等等问题。

例如,如果你从服务器请求一个文件,有人在网上有那个文件,所以现在有两个拷贝的文件。总而言之,这是Web 2.0中与集中化相关的问题之一。

IPFS&BlockChain:一只豆荚中的两颗豌豆 | 号精选

IPFS的基本理念是实现分布式网络(Web 3.0),我们利用定位搜索内容的搜索,例如IPFSnetwork每个人都是一个节点,当你想要一个特定的文件,只需要在网络上问通过检索文件的哈希,他们可以提供特定的IFPS对象请求方。

最好的一点是,在任何时候都只有一个特定文件的副本,所以这消除了冗余,使整个过程更有效率和更符合逻辑。

将IPFS集成到Dapp中

现在,让我们更实际一点,如何将IPFS集成到Dapps中。基本上我所做的就是使用一个IPFS模块,获取特定文件的哈希,并将其存储在区块链中。

我已经在Ethereum & Arweave上实现了这个,我将逐一介绍它们。

IPFS & Ethereum

如前所述,我使用了IPFS的模块。该过程非常简单,将所选文件隐藏到缓冲区中,然后使用IPFS模块的Add方法获取文件的哈希,然后在智能合约中调用setter方法来完成。

const ipfsClient = require(‘ipfs-http-client’);var ipfs = ipfsClient({ host: ‘ipfs.infura.io’, port: 5001, protocol: ‘https’ })//Getting hash of file after adding to ipfs & store it class="is it cn ar jq b bj ju jv jw jx jy js r jt" data-selectable-paragraph="" style="box-sizing: inherit;  display: block;  font-size: 16px; color: rgba(0, 0, 0, 0.84); line-height: 1.18; letter-spacing: -0.022em; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: -0.09em; white-space: pre-wrap; margin-top: 1.91em;">ipfs.add(this.state.buffer, (error, result) => {       console.log('IPFS Result', result)
var memeHash = result[0].hash;
if (error) {
   console.log(error);    
   return;
  }
this.state.contract.methods.set(memeHash).send({
from : this.state.account}).then((r) =>{            
return this.setState({memeHash})
})
})

IPFS& Arweave

Arweave是一个平台,你可以在上面建立网站,把数据永久的保存在区块链上。我通过将IPFS数据存储到Arweave上,在IPFS和Arweave之间建立了一座桥梁,就像我上面解释的那样。

因此,获取文件哈希的初始过程是相同的。为了将数据存储到Arweave中,你可以使用它的SDK。首先,你需要在你将要使用的代码中定义arweave客户端,并且需要一个有足够资金的arweave钱包,一个像metamask这样的浏览器扩展,你可以在这里找到说明。

与SDK交互是一个分为两部分的过程,首先,在创建钱包之后,您将获得一个包含私钥的文件,因此您需要通过解析密钥存储文件来获取钱包地址。

然后,在使用IPFS模块创建文件的哈希之后,你只需要创建信息传输通道,签名并提交,然后就可以收到有效的响应。你的数据存储在Arweave上,很简单。

以下是完整的代码片段:

//parsing the keystore file to get the wallet address
getwallet = (event) => {
event.preventDefault()
let wallet
const fileReader = new FileReader();fileReader.onload = async (e) => {wallet = JSON.parse(e.target.result);console.log(wallet)const address = await this.state.arweave.wallets.jwkToAddress(wallet)console.log(await this.state.arweave.wallets.getBalance(address))this.setState({ wallet })this.setState({ address })}fileReader.readAsText(event.target.files[0]);}//Submitting the transaction to Arweave Network
let transaction = await this.state.arweave.createTransaction({
data: '<html><head><meta charset="UTF-8"><title>IPFS Data Bridge</title></head><body></body></html>',}, this.state.wallet);transaction.addTag('IPFS-Add', hash);await this.state.arweave.transactions.sign(transaction, this.state.wallet);const response = await this.state.arweave.transactions.post(transaction);console.log(response)

对IPFS的挑战

那么,为了被全球接受,IPFS面临着怎样的挑战呢?

最重要的事情是激励,我们能看到,在区块链里就有比特币& Ethereum,所以任何存储特定文件很长时间的节点都必须得到相应的激励,我想会给IPFS大提升,也就是说有像 Gitcoin, pulse, Seedless。

排版 |格格

翻译整理 | 蜗牛

原文 | Viraz Malhotra

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2019年12月6日 下午6:53
下一篇 2019年12月6日 下午6:54

相关推荐

IPFS&BlockChain:一只豆荚中的两颗豌豆 | 号精选

星期五 2019-12-06 18:53:45

IPFS&BlockChain:一只豆荚中的两颗豌豆 | 号精选

距离测试网上线倒计时:6

大家好,我是Viraz Malhotra,是区块链的开发者和极客。在这个博客中,我将讨论如何将IFPS集成到您的Dapps中。首先,让我们谈谈什么是IPFS(星际文件系统),以及它为什么会在全世界引起轰动。

一、IPFS是什么?

让我们谈谈今天的Web架构是如何工作的(Web 2.0)。

这是一个典型的客户机-服务器体系结构,如果你想要一个文件/文档/任何类型的数据,你上网搜索一个特定的文件(定位搜索),会涉及数据集中地存储在服务器上,冗余文件/数据等等问题。

例如,如果你从服务器请求一个文件,有人在网上有那个文件,所以现在有两个拷贝的文件。总而言之,这是Web 2.0中与集中化相关的问题之一。

IPFS&BlockChain:一只豆荚中的两颗豌豆 | 号精选

IPFS的基本理念是实现分布式网络(Web 3.0),我们利用定位搜索内容的搜索,例如IPFSnetwork每个人都是一个节点,当你想要一个特定的文件,只需要在网络上问通过检索文件的哈希,他们可以提供特定的IFPS对象请求方。

最好的一点是,在任何时候都只有一个特定文件的副本,所以这消除了冗余,使整个过程更有效率和更符合逻辑。

将IPFS集成到Dapp中

现在,让我们更实际一点,如何将IPFS集成到Dapps中。基本上我所做的就是使用一个IPFS模块,获取特定文件的哈希,并将其存储在区块链中。

我已经在Ethereum & Arweave上实现了这个,我将逐一介绍它们。

IPFS & Ethereum

如前所述,我使用了IPFS的模块。该过程非常简单,将所选文件隐藏到缓冲区中,然后使用IPFS模块的Add方法获取文件的哈希,然后在智能合约中调用setter方法来完成。

const ipfsClient = require(‘ipfs-http-client’);var ipfs = ipfsClient({ host: ‘ipfs.infura.io’, port: 5001, protocol: ‘https’ })//Getting hash of file after adding to ipfs & store it class="is it cn ar jq b bj ju jv jw jx jy js r jt" data-selectable-paragraph="" style="box-sizing: inherit;  display: block;  font-size: 16px; color: rgba(0, 0, 0, 0.84); line-height: 1.18; letter-spacing: -0.022em; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: -0.09em; white-space: pre-wrap; margin-top: 1.91em;">ipfs.add(this.state.buffer, (error, result) => {       console.log('IPFS Result', result)
var memeHash = result[0].hash;
if (error) {
   console.log(error);    
   return;
  }
this.state.contract.methods.set(memeHash).send({
from : this.state.account}).then((r) =>{            
return this.setState({memeHash})
})
})

IPFS& Arweave

Arweave是一个平台,你可以在上面建立网站,把数据永久的保存在区块链上。我通过将IPFS数据存储到Arweave上,在IPFS和Arweave之间建立了一座桥梁,就像我上面解释的那样。

因此,获取文件哈希的初始过程是相同的。为了将数据存储到Arweave中,你可以使用它的SDK。首先,你需要在你将要使用的代码中定义arweave客户端,并且需要一个有足够资金的arweave钱包,一个像metamask这样的浏览器扩展,你可以在这里找到说明。

与SDK交互是一个分为两部分的过程,首先,在创建钱包之后,您将获得一个包含私钥的文件,因此您需要通过解析密钥存储文件来获取钱包地址。

然后,在使用IPFS模块创建文件的哈希之后,你只需要创建信息传输通道,签名并提交,然后就可以收到有效的响应。你的数据存储在Arweave上,很简单。

以下是完整的代码片段:

//parsing the keystore file to get the wallet address
getwallet = (event) => {
event.preventDefault()
let wallet
const fileReader = new FileReader();fileReader.onload = async (e) => {wallet = JSON.parse(e.target.result);console.log(wallet)const address = await this.state.arweave.wallets.jwkToAddress(wallet)console.log(await this.state.arweave.wallets.getBalance(address))this.setState({ wallet })this.setState({ address })}fileReader.readAsText(event.target.files[0]);}//Submitting the transaction to Arweave Network
let transaction = await this.state.arweave.createTransaction({
data: '<html><head><meta charset="UTF-8"><title>IPFS Data Bridge</title></head><body></body></html>',}, this.state.wallet);transaction.addTag('IPFS-Add', hash);await this.state.arweave.transactions.sign(transaction, this.state.wallet);const response = await this.state.arweave.transactions.post(transaction);console.log(response)

对IPFS的挑战

那么,为了被全球接受,IPFS面临着怎样的挑战呢?

最重要的事情是激励,我们能看到,在区块链里就有比特币& Ethereum,所以任何存储特定文件很长时间的节点都必须得到相应的激励,我想会给IPFS大提升,也就是说有像 Gitcoin, pulse, Seedless。

排版 |格格

翻译整理 | 蜗牛

原文 | Viraz Malhotra