Apresentamos o Building on web3 — uma nova série de blogues Edge & Node com o objetivo de familiarizar os programadores com os protocolos, ferramentas e melhores práticas para o desenvolvimento no crescente espaço web3. Construir na web3 irá destacar tecnologias emergentes e projetos no ecossistema web3 para ajudar a criar uma receita de sucesso para os desenvolvedores de dapp.
Neste post vai aprender sobre o que é o Arweave, porque é que acho que é importante e como pode começar a construir com ele. Este post vai focar-se no armazenamento e recuperação de ficheiros, e não na execução do seu próprio gateway Arweave de produção.
Para mim, a coisa revolucionária sobre o Arweave é o facto de poder guardar algo uma vez e esperar que esteja disponível para sempre sem ter de pagar nada novamente ou sem ter de me preocupar com isso ir embora.
Compare isso com as soluções de armazenamento tradicionais e centralizadas onde se esquecer de pagar a sua conta um mês é retirado ou, pior ainda, você ou outra pessoa acidentalmente apaga os seus dados completamente.
Esta permanência de dados é especialmente importante na web3 onde estamos a construir uma infraestrutura de aplicação imutável. Os dados Blockchain por natureza já são imutáveis mas muitas vezes vê programadores a armazenar dados fora da cadeia de formas que não aderem às melhores práticas de descentralização ou imutabilidade.
Por exemplo, no token não fungível, ou espaço NFT, alguns desenvolvedores usam serviços de alojamento centralizado para armazenar metadados de token. Isto quebra as importantes propriedades de segurança necessárias para a imutabilidade, bem como a ideia do que um NFT representa em primeiro lugar.
Se os metadados não forem permanentes, não há garantia de que a propriedade que o token representa ainda existirá no futuro. Isto significa que a integridade do token está em jogo se os metadados não forem armazenados num protocolo de armazenamento de ficheiros permanente como o Arweave, e porque é tão importante que existam tecnologias como esta.
Dentro do ecossistema The Graph, também estamos a construir suporte e integrações para o Arweave porque reconhecemos o valor do protocolo para a construção de aplicações web3 verdadeiramente descentralizadas.
O Arweave é construído sobre duas tecnologias: o blockweave, um derivado da cadeia de blocos e 'Prova de Acesso'.
Blockweave é a tecnologia que alimenta o Arweave. Como uma cadeia de blocos, o blockweave é uma coleção ligada de blocos de dados, ligando a blocos anteriores gravados na rede.
O mecanismo de consenso utilizado para facilitar o armazenamento seguro e descentralizado de dados no Arweave chama-se 'Prova de Acesso'. Este mecanismo é mais eficiente e amigo do ambiente do que a prova de trabalho, porque os mineiros não precisam de armazenar todos os blocos. Por causa disso, poupa uma quantidade enorme de eletricidade enquanto os mineiros ainda conseguem chegar a um consenso. Além disso, à medida que a rede se expande, o consumo de eletricidade diminui.
Existem duas maneiras de começar a usar tokens Arweave
Pode começar com uma nova carteira e obter uma fração dos tokens Arweave usando a torneira de teste Arweave.
Depois de verificar, deve receber 0.1 AR para usar para começar a testar o Arweave na sua aplicação.
Pode ter usado o navegador e carteiras móveis como o Metamask ou o Phantom que lhe permitem interagir com aplicações web3 diretamente de uma aplicação. O Arweave tem uma carteira semelhante, chamada Arconnect.
Pode instalá-lo diretamente como uma extensão do Chrome e começar a interagir com aplicações web que utilizam o Arweave.
A partir daí, pode financiar a carteira com tokens de qualquer uma das suas bolsas suportadas ou pode importar a sua carteira criada no passo anterior.
Para seguir este tutorial, não precisará de nenhum token, mas deve ter a carteira do navegador Arconnect instalada.
Além da técnica que abordaremos neste tutorial, pode optar por usar o Bundlr que permite suporte nativo para armazenamento Arweave em diferentes blockchains de contrato inteligente, bem como SDKs do lado do cliente e do lado do servidor para integração de aplicativos.
Esta é uma ótima opção porque não exige que o utilizador tenha tokens AR mas, em vez disso, pode confiar em outras redes e tokens como ETH, MATIC, Solana, Arbitrum e muitos outros para pagar as transações.
Para saber mais sobre o Bundlr, consulte a documentação aqui.
Agora que temos uma visão geral do Arweave e protegemos os nossos tokens, vamos construir uma aplicação básica.
A aplicação que vamos construir permitir-nos-á carregar e descarregar uma sequência de texto para o Arweave.
Este é um exemplo básico, mas um ótimo “Olá mundo” porque percorre as ferramentas e APIs para o fazer começar a construir num curto espaço de tempo.
A primeira coisa que faremos é criar uma nova aplicação React usando create-react-app:
npx create-react-app
arweave-app arweave-app
Existem duas maneiras principais de ligar para a rede Arweave a partir da sua aplicação:
O Arweave JS SDK é muito bom e é o que vamos usar para este tutorial.
Vamos agora instalar o arweave-js usando npm ou yarn:
npm instalar arweave
Existem algumas maneiras de interagir com a rede Arweave:
Neste guia, começaremos com o Arlocal, o que nos permitirá enviar transações de teste gratuitamente. Também aprenderemos a usar a mainnet para enviar uma transação real.
Para testar localmente, podemos usar o Arlocal, que executará uma rede local com a qual podemos interagir e enviar transações de teste para.
Nem precisa de descarregar ou instalar nada para usar o Arlocal, desde que tenha o Node.js instalado na sua máquina, pode simplesmente iniciar um gateway local executando:
npx arlocal
É isso! Agora deve estar a executar um gateway Arweave local em http://localhost:1984
Agora que tem um gateway local a funcionar, vamos escrever o código.
Abra o src/App.js e atualize o ficheiro com o seguinte código:
importar estilos de '.. /Estilos/Home.module.css '
importar { useState } de 'react'
importar Arweave de 'arweave'
/ ligar a um nó Arweave ou especificar um gateway /
const arweave = arWeave.init ({})
função App () {
const [state, setState] = useState ('')
const [TransactionId, setTransactionId] = useState ('')
função assíncrona createTransaction () {
se (! estado) retorno
experimente {
const formData = estado
setState (')
/ cria e envia transação para a Arweave/
deixar transação = aguardar arWeave.CreateTransaction ({ data: formData })
aguardar arweave.transactions.sign (transação)
let uploader = aguardar arWeave.Transactions.getUploader (transação)
/ indicador de upload /
enquanto (! Uploader.está completo) {
aguardar enviador.uploadChunk ()
console.log (${uploader.pctComplete}% completo,
${uploader.uploadedChunks}/${uploader.totalChunks}
)
}
setTransactionId (transaction.id)
} pegar (err) {
console.log ('erro: ', erro)
}
}
função assíncrona readFromarWeave () {
/ ler os dados do Arweave usando qualquer ID de transacção /
arweave.transações
.getData (ID da transação, {
decodificar: verdadeiro,
string: verdadeiro,
})
.então (dados) = > {
console.log ('dados: ', dados)
})
}
retorno (
< div ClassName={styles.container}>
< estilo do botão={button} onClick={createTransaction}>
Criar Transação
</button>< /botão >
< estilo do botão={button} onClick={readFromArweave}>
Ler Transação
</button>< /botão >
< estilo de entrada ={input} onChange={(e) => setState(e.target.value)} placeholder=” text” value={state} />
</div>
)
}
botão const = {
esboço: 'nenhum',
fronteira: '1px preto sólido',
BackgroundColor: 'branco',
preenchimento: '10px',
largura: '200px',
MarginInferior: 10,
cursor: 'ponteiro',
}
const input = {
Cor de fundo: '#ddd',
esboço: 'nenhum',
fronteira: 'nenhum',
largura: '200px',
Tamanho da fonte: '16px',
preenchimento: '10px',
}
exportar aplicativo padrão
Em seguida, inicie a aplicação:
npm começar
Quando a aplicação começar, deverá ver uma entrada de formulário básica com dois botões.
Pode digitar no formulário os dados que gostaria de guardar e, em seguida, carregar em Criar Transação para guardar o texto no Arweave.
Assim que a transação estiver concluída, deverá ver um indicador de progresso desligado na consola indicando que os dados foram guardados.
Assim que os dados estiverem guardados, clique em Ler Transação para ler os dados do Arweave.
Para interagir com a rede de produção, só precisa de atualizar a configuração da rede Arweave.
const arweave = arWeave.init ({
anfitrião: 'arweave.net',
})
Um exemplo de base de código para o projeto que construímos hoje está disponível aqui.
Para saber mais sobre o Arweave, consulte os documentos do Arweave , o Wiki do Arweave e siga-os no Twitter.
Edge & Node é uma empresa criativa de desenvolvimento de software que trabalha para construir um futuro vibrante e descentralizado. Fundado pela equipa inicial por trás do The Graph, o Edge & Node dedica-se ao avanço da internet descentralizada (web3) e à proliferação de aplicações minimizadas pela confiança. A equipa tem uma vasta experiência no desenvolvimento e manutenção de software, ferramentas e aplicações de código aberto.
O produto inicial do Edge & Node é o The Graph, um protocolo de indexação para consultar redes como Ethereum e IPFS, que garante que os dados abertos estejam sempre disponíveis e de fácil acesso. O gráfico é usado por milhares de protocolos e dapps, incluindo Uniswap, Livepeer, Aave, Decentraland e muito mais. O Edge & Node também lançou o Everest, o primeiro registo descentralizado de dados em cadeia a fornecer utilidade contínua à comunidade cripto, catalisando a mudança para a web3.
Apresentamos o Building on web3 — uma nova série de blogues Edge & Node com o objetivo de familiarizar os programadores com os protocolos, ferramentas e melhores práticas para o desenvolvimento no crescente espaço web3. Construir na web3 irá destacar tecnologias emergentes e projetos no ecossistema web3 para ajudar a criar uma receita de sucesso para os desenvolvedores de dapp.
Neste post vai aprender sobre o que é o Arweave, porque é que acho que é importante e como pode começar a construir com ele. Este post vai focar-se no armazenamento e recuperação de ficheiros, e não na execução do seu próprio gateway Arweave de produção.
Para mim, a coisa revolucionária sobre o Arweave é o facto de poder guardar algo uma vez e esperar que esteja disponível para sempre sem ter de pagar nada novamente ou sem ter de me preocupar com isso ir embora.
Compare isso com as soluções de armazenamento tradicionais e centralizadas onde se esquecer de pagar a sua conta um mês é retirado ou, pior ainda, você ou outra pessoa acidentalmente apaga os seus dados completamente.
Esta permanência de dados é especialmente importante na web3 onde estamos a construir uma infraestrutura de aplicação imutável. Os dados Blockchain por natureza já são imutáveis mas muitas vezes vê programadores a armazenar dados fora da cadeia de formas que não aderem às melhores práticas de descentralização ou imutabilidade.
Por exemplo, no token não fungível, ou espaço NFT, alguns desenvolvedores usam serviços de alojamento centralizado para armazenar metadados de token. Isto quebra as importantes propriedades de segurança necessárias para a imutabilidade, bem como a ideia do que um NFT representa em primeiro lugar.
Se os metadados não forem permanentes, não há garantia de que a propriedade que o token representa ainda existirá no futuro. Isto significa que a integridade do token está em jogo se os metadados não forem armazenados num protocolo de armazenamento de ficheiros permanente como o Arweave, e porque é tão importante que existam tecnologias como esta.
Dentro do ecossistema The Graph, também estamos a construir suporte e integrações para o Arweave porque reconhecemos o valor do protocolo para a construção de aplicações web3 verdadeiramente descentralizadas.
O Arweave é construído sobre duas tecnologias: o blockweave, um derivado da cadeia de blocos e 'Prova de Acesso'.
Blockweave é a tecnologia que alimenta o Arweave. Como uma cadeia de blocos, o blockweave é uma coleção ligada de blocos de dados, ligando a blocos anteriores gravados na rede.
O mecanismo de consenso utilizado para facilitar o armazenamento seguro e descentralizado de dados no Arweave chama-se 'Prova de Acesso'. Este mecanismo é mais eficiente e amigo do ambiente do que a prova de trabalho, porque os mineiros não precisam de armazenar todos os blocos. Por causa disso, poupa uma quantidade enorme de eletricidade enquanto os mineiros ainda conseguem chegar a um consenso. Além disso, à medida que a rede se expande, o consumo de eletricidade diminui.
Existem duas maneiras de começar a usar tokens Arweave
Pode começar com uma nova carteira e obter uma fração dos tokens Arweave usando a torneira de teste Arweave.
Depois de verificar, deve receber 0.1 AR para usar para começar a testar o Arweave na sua aplicação.
Pode ter usado o navegador e carteiras móveis como o Metamask ou o Phantom que lhe permitem interagir com aplicações web3 diretamente de uma aplicação. O Arweave tem uma carteira semelhante, chamada Arconnect.
Pode instalá-lo diretamente como uma extensão do Chrome e começar a interagir com aplicações web que utilizam o Arweave.
A partir daí, pode financiar a carteira com tokens de qualquer uma das suas bolsas suportadas ou pode importar a sua carteira criada no passo anterior.
Para seguir este tutorial, não precisará de nenhum token, mas deve ter a carteira do navegador Arconnect instalada.
Além da técnica que abordaremos neste tutorial, pode optar por usar o Bundlr que permite suporte nativo para armazenamento Arweave em diferentes blockchains de contrato inteligente, bem como SDKs do lado do cliente e do lado do servidor para integração de aplicativos.
Esta é uma ótima opção porque não exige que o utilizador tenha tokens AR mas, em vez disso, pode confiar em outras redes e tokens como ETH, MATIC, Solana, Arbitrum e muitos outros para pagar as transações.
Para saber mais sobre o Bundlr, consulte a documentação aqui.
Agora que temos uma visão geral do Arweave e protegemos os nossos tokens, vamos construir uma aplicação básica.
A aplicação que vamos construir permitir-nos-á carregar e descarregar uma sequência de texto para o Arweave.
Este é um exemplo básico, mas um ótimo “Olá mundo” porque percorre as ferramentas e APIs para o fazer começar a construir num curto espaço de tempo.
A primeira coisa que faremos é criar uma nova aplicação React usando create-react-app:
npx create-react-app
arweave-app arweave-app
Existem duas maneiras principais de ligar para a rede Arweave a partir da sua aplicação:
O Arweave JS SDK é muito bom e é o que vamos usar para este tutorial.
Vamos agora instalar o arweave-js usando npm ou yarn:
npm instalar arweave
Existem algumas maneiras de interagir com a rede Arweave:
Neste guia, começaremos com o Arlocal, o que nos permitirá enviar transações de teste gratuitamente. Também aprenderemos a usar a mainnet para enviar uma transação real.
Para testar localmente, podemos usar o Arlocal, que executará uma rede local com a qual podemos interagir e enviar transações de teste para.
Nem precisa de descarregar ou instalar nada para usar o Arlocal, desde que tenha o Node.js instalado na sua máquina, pode simplesmente iniciar um gateway local executando:
npx arlocal
É isso! Agora deve estar a executar um gateway Arweave local em http://localhost:1984
Agora que tem um gateway local a funcionar, vamos escrever o código.
Abra o src/App.js e atualize o ficheiro com o seguinte código:
importar estilos de '.. /Estilos/Home.module.css '
importar { useState } de 'react'
importar Arweave de 'arweave'
/ ligar a um nó Arweave ou especificar um gateway /
const arweave = arWeave.init ({})
função App () {
const [state, setState] = useState ('')
const [TransactionId, setTransactionId] = useState ('')
função assíncrona createTransaction () {
se (! estado) retorno
experimente {
const formData = estado
setState (')
/ cria e envia transação para a Arweave/
deixar transação = aguardar arWeave.CreateTransaction ({ data: formData })
aguardar arweave.transactions.sign (transação)
let uploader = aguardar arWeave.Transactions.getUploader (transação)
/ indicador de upload /
enquanto (! Uploader.está completo) {
aguardar enviador.uploadChunk ()
console.log (${uploader.pctComplete}% completo,
${uploader.uploadedChunks}/${uploader.totalChunks}
)
}
setTransactionId (transaction.id)
} pegar (err) {
console.log ('erro: ', erro)
}
}
função assíncrona readFromarWeave () {
/ ler os dados do Arweave usando qualquer ID de transacção /
arweave.transações
.getData (ID da transação, {
decodificar: verdadeiro,
string: verdadeiro,
})
.então (dados) = > {
console.log ('dados: ', dados)
})
}
retorno (
< div ClassName={styles.container}>
< estilo do botão={button} onClick={createTransaction}>
Criar Transação
</button>< /botão >
< estilo do botão={button} onClick={readFromArweave}>
Ler Transação
</button>< /botão >
< estilo de entrada ={input} onChange={(e) => setState(e.target.value)} placeholder=” text” value={state} />
</div>
)
}
botão const = {
esboço: 'nenhum',
fronteira: '1px preto sólido',
BackgroundColor: 'branco',
preenchimento: '10px',
largura: '200px',
MarginInferior: 10,
cursor: 'ponteiro',
}
const input = {
Cor de fundo: '#ddd',
esboço: 'nenhum',
fronteira: 'nenhum',
largura: '200px',
Tamanho da fonte: '16px',
preenchimento: '10px',
}
exportar aplicativo padrão
Em seguida, inicie a aplicação:
npm começar
Quando a aplicação começar, deverá ver uma entrada de formulário básica com dois botões.
Pode digitar no formulário os dados que gostaria de guardar e, em seguida, carregar em Criar Transação para guardar o texto no Arweave.
Assim que a transação estiver concluída, deverá ver um indicador de progresso desligado na consola indicando que os dados foram guardados.
Assim que os dados estiverem guardados, clique em Ler Transação para ler os dados do Arweave.
Para interagir com a rede de produção, só precisa de atualizar a configuração da rede Arweave.
const arweave = arWeave.init ({
anfitrião: 'arweave.net',
})
Um exemplo de base de código para o projeto que construímos hoje está disponível aqui.
Para saber mais sobre o Arweave, consulte os documentos do Arweave , o Wiki do Arweave e siga-os no Twitter.
Edge & Node é uma empresa criativa de desenvolvimento de software que trabalha para construir um futuro vibrante e descentralizado. Fundado pela equipa inicial por trás do The Graph, o Edge & Node dedica-se ao avanço da internet descentralizada (web3) e à proliferação de aplicações minimizadas pela confiança. A equipa tem uma vasta experiência no desenvolvimento e manutenção de software, ferramentas e aplicações de código aberto.
O produto inicial do Edge & Node é o The Graph, um protocolo de indexação para consultar redes como Ethereum e IPFS, que garante que os dados abertos estejam sempre disponíveis e de fácil acesso. O gráfico é usado por milhares de protocolos e dapps, incluindo Uniswap, Livepeer, Aave, Decentraland e muito mais. O Edge & Node também lançou o Everest, o primeiro registo descentralizado de dados em cadeia a fornecer utilidade contínua à comunidade cripto, catalisando a mudança para a web3.