IPFS&BlockChain:一只豆荚中的两颗豌豆
Posted 星际视界IPFSNEWS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IPFS&BlockChain:一只豆荚中的两颗豌豆相关的知识,希望对你有一定的参考价值。
距离测试网上线倒计时:6天
大家好,我是Viraz Malhotra,是区块链的开发者和极客。在这个博客中,我将讨论如何将IFPS集成到您的Dapps中。首先,让我们谈谈什么是IPFS(星际文件系统),以及它为什么会在全世界引起轰动。
一、IPFS是什么?
让我们谈谈今天的Web架构是如何工作的(Web 2.0)。
这是一个典型的客户机-服务器体系结构,如果你想要一个文件/文档/任何类型的数据,你上网搜索一个特定的文件(定位搜索),会涉及数据集中地存储在服务器上,冗余文件/数据等等问题。
例如,如果你从服务器请求一个文件,有人在网上有那个文件,所以现在有两个拷贝的文件。总而言之,这是Web 2.0中与集中化相关的问题之一。
IPFS的基本理念是实现分布式网络(Web 3.0),我们利用定位搜索内容的搜索,例如IPFSnetwork每个人都是一个节点,当你想要一个特定的文件,只需要在网络上问通过检索文件的哈希,他们可以提供特定的IFPS对象请求方。
最好的一点是,在任何时候都只有一个特定文件的副本,所以这消除了冗余,使整个过程更有效率和更符合逻辑。
更多详情请查看这个视频。
将IPFS集成到Dapp中
现在,让我们更实际一点,如何将IPFS集成到Dapps中。基本上我所做的就是使用一个IPFS模块,获取特定文件的哈希,并将其存储在区块链中。
我已经在Ethereum & Arweave上实现了这个,我将逐一介绍它们。
IPFS & Ethereum
如前所述,
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这样的浏览器扩展,你可以在这里找到说明。
然后,在使用IPFS模块创建文件的哈希之后,你只需要创建信息传输通道,签名并提交,然后就可以收到有效的响应。你的数据存储在Arweave上,很简单。
以下是完整的代码片段:
//parsing the keystore file to get the wallet address
getwallet = (event) => {event.preventDefault()
let walletconst 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
以上是关于IPFS&BlockChain:一只豆荚中的两颗豌豆的主要内容,如果未能解决你的问题,请参考以下文章