Apresentando Building on web3 — uma nova série de blogs Edge & Node com o objetivo de familiarizar os desenvolvedores com os protocolos, ferramentas e práticas recomendadas para desenvolvimento no crescente espaço web3. Construir na web3 destacará tecnologias e projetos emergentes no ecossistema web3 para ajudar a criar uma receita de sucesso para desenvolvedores de dapp.
Neste post você aprenderá o que é Arweave , por que o considero importante e como você pode começar a construir com ele. Esta postagem se concentrará no armazenamento e recuperação de arquivos, e não na execução de seu próprio gateway Arweave de produção.
Para mim, o que há de revolucionário no Arweave é o fato de poder armazenar algo uma vez e esperar que esteja disponível para sempre, sem nunca ter que pagar nada novamente ou sem ter que me preocupar com o desaparecimento.
Compare isso com soluções de armazenamento tradicionais e centralizadas, onde se você esquecer de pagar sua conta em um mês, você será retirado ou, pior ainda, você ou outra pessoa exclui acidentalmente seus dados completamente.
Essa permanência de dados é especialmente importante na web3, onde estamos construindo uma infraestrutura de aplicativos imutável. Os dados do Blockchain, por natureza, já são imutáveis, mas muitas vezes você vê desenvolvedores armazenando dados fora da cadeia de maneiras que não aderem às práticas recomendadas de descentralização ou imutabilidade.
Por exemplo, no token não fungível, ou espaço NFT, alguns desenvolvedores usam serviços de hospedagem centralizados para armazenar metadados de token. Isso 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. Isso significa que a integridade do token estará em jogo se os metadados não forem armazenados em um protocolo de armazenamento de arquivos permanente como o Arweave, e por que é tão importante que tecnologias como essa existam.
Dentro do ecossistema The Graph, também estamos construindo suporte e integrações para Arweave porque reconhecemos o valor do protocolo para construir aplicações web3 verdadeiramente descentralizadas.
Arweave é construído sobre duas tecnologias: o blockweave, um derivado do blockchain, e a ‘Prova de Acesso’.
Blockweave é a tecnologia que alimenta o Arweave. Assim como um blockchain, o blockweave é uma coleção vinculada de blocos de dados, vinculando-se a blocos anteriores gravados na rede.
O mecanismo de consenso usado para facilitar o armazenamento seguro e descentralizado de dados no Arweave é chamado de '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, uma enorme quantidade de eletricidade é economizada enquanto os mineradores 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
Você pode começar com uma nova carteira e obter uma fração dos tokens Arweave usando a torneira de teste Arweave.
Depois de verificar, você receberá 0,1 AR para usar para começar a testar o Arweave em seu aplicativo.
Você pode ter usado navegador e carteiras móveis como Metamask ou Phantom, que permitem interagir com aplicativos web3 diretamente de um aplicativo. Arweave possui uma carteira semelhante, chamada Arconnect.
Você pode instalá-lo diretamente como uma extensão do Chrome e começar a interagir com aplicativos da web que usam o Arweave.
A partir daí, você pode financiar a carteira com tokens de qualquer uma das exchanges suportadas ou pode importar sua carteira criada na etapa anterior.
Para seguir este tutorial, você não precisará de nenhum token, mas deverá ter a carteira do navegador Arconnect instalada.
Além da técnica que abordaremos neste tutorial, você pode optar por usar o Bundlr , que permite suporte nativo para armazenamento Arweave em diferentes blockchains de contratos inteligentes, 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 usuário possua tokens AR, mas pode contar com outras redes e tokens como ETH, MATIC, Solana, Arbitrum e muitos outros para pagar pelas transações.
Para saber mais sobre o Bundlr, confira a documentação aqui.
Agora que temos uma visão geral do Arweave e protegemos nossos tokens, vamos construir um aplicativo básico.
O aplicativo que construiremos nos permitirá fazer upload e download de 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 você começar a construir em um 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-appcd arweave-app
Existem duas maneiras principais de chamar a rede Arweave a partir do seu aplicativo:
O Arweave JS SDK é muito bom e é o que usaremos neste 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 Arlocal, que nos permitirá enviar transações de teste gratuitamente. Também aprenderemos como 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 para a qual enviar transações de teste.
Você nem precisa baixar ou instalar nada para usar o Arlocal, desde que tenha o Node.js instalado em sua máquina, basta iniciar um gateway local executando:
npx arlocal
É isso! Agora você deve estar executando um gateway Arweave local em http://localhost:1984
Agora que você tem um gateway local em execução, vamos escrever o código.
Abra src/App.js e atualize o arquivo com o seguinte código:
importar estilos de '../styles/Home.module.css'
importar { useState } de 'react'
importar Arweave de 'arweave'
/ conecte-se a um nó Arweave ou especifique um gateway /
const arweave = Arweave.init({})
função Aplicativo() {
const [estado, setState] = useState('')
const [transactionId, setTransactionId] = useState('')
função assíncrona createTransaction() {
se (!estado) retornar
tentar {
const formData = estado
setEstado('')
/ cria e envia transação para Arweave /
deixe transação = aguarde arweave.createTransaction({ data: formData })
aguarde arweave.transactions.sign(transação)
deixe uploader = aguarde arweave.transactions.getUploader (transação)
/ indicador de upload /
enquanto (!uploader.isComplete) {
aguarde uploader.uploadChunk()
console.log(${uploader.pctComplete}% complete,
${uploader.uploadedChunks}/${uploader.totalChunks}
)
}
setTransactionId(transação.id)
} pegar (errar) {
console.log('erro: ', err)
}
}
função assíncrona readFromArweave() {
/ leia os dados do Arweave usando qualquer ID de transação /
arweave.transações
.getData(transactionId, {
decodificar: verdadeiro,
sequência: verdadeiro,
})
.então((dados) => {
console.log('dados:', dados)
})
}
retornar (
<div nomedaclasse={styles.container}>
<estilo do botão={button} onClick={createTransaction}>
Criar transação
</button>
<estilo do botão={button} onClick={readFromArweave}>
Ler transação
</button>
<estilo de entrada={input} onChange={(e) => setState(e.target.value)} placeholder=”texto” valor={state} />
</div>
)
}
botão constante = {
esboço: 'nenhum',
borda: '1px preto sólido',
cor de fundo: 'branco',
preenchimento: '10px',
largura: '200px',
margem inferior: 10,
cursor: 'ponteiro',
}
entrada constante = {
cor de fundo: '#ddd',
esboço: 'nenhum',
borda: 'nenhuma',
largura: '200px',
tamanho da fonte: '16px',
preenchimento: '10px',
}
exportar aplicativo padrão
Em seguida, inicie o aplicativo:
npm início
Quando o aplicativo iniciar, você verá uma entrada de formulário básico com dois botões.
Você pode digitar no formulário os dados que deseja salvar e pressionar Criar transação para salvar o texto no Arweave.
Assim que a transação for concluída, você deverá ver um indicador de progresso desconectado do console, indicando que os dados foram salvos.
Assim que os dados forem salvos, clique em Ler transação para ler os dados do Arweave.
Para interagir com a rede de produção, basta 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, confira os documentos do Arweave, o Arweave Wiki e siga-os no Twitter.
Edge & Node é uma empresa criativa de desenvolvimento de software que trabalha para construir um futuro vibrante e descentralizado. Fundada pela equipe inicial por trás do The Graph, Edge & Node se dedica ao avanço da Internet descentralizada (web3) e à proliferação de aplicativos com confiança minimizada. A equipe tem vasta experiência no desenvolvimento e manutenção de software, ferramentas e aplicativos de código aberto .
O produto inicial da 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 sejam fáceis de acessar. O Graph é usado por milhares de protocolos e dapps, incluindo Uniswap, Livepeer, Aave, Decentraland e muito mais. Edge & Node também lançou o Everest, o primeiro registro descentralizado de dados on-chain para fornecer utilidade contínua à comunidade criptográfica, catalisando a mudança para web3.
Apresentando Building on web3 — uma nova série de blogs Edge & Node com o objetivo de familiarizar os desenvolvedores com os protocolos, ferramentas e práticas recomendadas para desenvolvimento no crescente espaço web3. Construir na web3 destacará tecnologias e projetos emergentes no ecossistema web3 para ajudar a criar uma receita de sucesso para desenvolvedores de dapp.
Neste post você aprenderá o que é Arweave , por que o considero importante e como você pode começar a construir com ele. Esta postagem se concentrará no armazenamento e recuperação de arquivos, e não na execução de seu próprio gateway Arweave de produção.
Para mim, o que há de revolucionário no Arweave é o fato de poder armazenar algo uma vez e esperar que esteja disponível para sempre, sem nunca ter que pagar nada novamente ou sem ter que me preocupar com o desaparecimento.
Compare isso com soluções de armazenamento tradicionais e centralizadas, onde se você esquecer de pagar sua conta em um mês, você será retirado ou, pior ainda, você ou outra pessoa exclui acidentalmente seus dados completamente.
Essa permanência de dados é especialmente importante na web3, onde estamos construindo uma infraestrutura de aplicativos imutável. Os dados do Blockchain, por natureza, já são imutáveis, mas muitas vezes você vê desenvolvedores armazenando dados fora da cadeia de maneiras que não aderem às práticas recomendadas de descentralização ou imutabilidade.
Por exemplo, no token não fungível, ou espaço NFT, alguns desenvolvedores usam serviços de hospedagem centralizados para armazenar metadados de token. Isso 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. Isso significa que a integridade do token estará em jogo se os metadados não forem armazenados em um protocolo de armazenamento de arquivos permanente como o Arweave, e por que é tão importante que tecnologias como essa existam.
Dentro do ecossistema The Graph, também estamos construindo suporte e integrações para Arweave porque reconhecemos o valor do protocolo para construir aplicações web3 verdadeiramente descentralizadas.
Arweave é construído sobre duas tecnologias: o blockweave, um derivado do blockchain, e a ‘Prova de Acesso’.
Blockweave é a tecnologia que alimenta o Arweave. Assim como um blockchain, o blockweave é uma coleção vinculada de blocos de dados, vinculando-se a blocos anteriores gravados na rede.
O mecanismo de consenso usado para facilitar o armazenamento seguro e descentralizado de dados no Arweave é chamado de '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, uma enorme quantidade de eletricidade é economizada enquanto os mineradores 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
Você pode começar com uma nova carteira e obter uma fração dos tokens Arweave usando a torneira de teste Arweave.
Depois de verificar, você receberá 0,1 AR para usar para começar a testar o Arweave em seu aplicativo.
Você pode ter usado navegador e carteiras móveis como Metamask ou Phantom, que permitem interagir com aplicativos web3 diretamente de um aplicativo. Arweave possui uma carteira semelhante, chamada Arconnect.
Você pode instalá-lo diretamente como uma extensão do Chrome e começar a interagir com aplicativos da web que usam o Arweave.
A partir daí, você pode financiar a carteira com tokens de qualquer uma das exchanges suportadas ou pode importar sua carteira criada na etapa anterior.
Para seguir este tutorial, você não precisará de nenhum token, mas deverá ter a carteira do navegador Arconnect instalada.
Além da técnica que abordaremos neste tutorial, você pode optar por usar o Bundlr , que permite suporte nativo para armazenamento Arweave em diferentes blockchains de contratos inteligentes, 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 usuário possua tokens AR, mas pode contar com outras redes e tokens como ETH, MATIC, Solana, Arbitrum e muitos outros para pagar pelas transações.
Para saber mais sobre o Bundlr, confira a documentação aqui.
Agora que temos uma visão geral do Arweave e protegemos nossos tokens, vamos construir um aplicativo básico.
O aplicativo que construiremos nos permitirá fazer upload e download de 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 você começar a construir em um 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-appcd arweave-app
Existem duas maneiras principais de chamar a rede Arweave a partir do seu aplicativo:
O Arweave JS SDK é muito bom e é o que usaremos neste 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 Arlocal, que nos permitirá enviar transações de teste gratuitamente. Também aprenderemos como 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 para a qual enviar transações de teste.
Você nem precisa baixar ou instalar nada para usar o Arlocal, desde que tenha o Node.js instalado em sua máquina, basta iniciar um gateway local executando:
npx arlocal
É isso! Agora você deve estar executando um gateway Arweave local em http://localhost:1984
Agora que você tem um gateway local em execução, vamos escrever o código.
Abra src/App.js e atualize o arquivo com o seguinte código:
importar estilos de '../styles/Home.module.css'
importar { useState } de 'react'
importar Arweave de 'arweave'
/ conecte-se a um nó Arweave ou especifique um gateway /
const arweave = Arweave.init({})
função Aplicativo() {
const [estado, setState] = useState('')
const [transactionId, setTransactionId] = useState('')
função assíncrona createTransaction() {
se (!estado) retornar
tentar {
const formData = estado
setEstado('')
/ cria e envia transação para Arweave /
deixe transação = aguarde arweave.createTransaction({ data: formData })
aguarde arweave.transactions.sign(transação)
deixe uploader = aguarde arweave.transactions.getUploader (transação)
/ indicador de upload /
enquanto (!uploader.isComplete) {
aguarde uploader.uploadChunk()
console.log(${uploader.pctComplete}% complete,
${uploader.uploadedChunks}/${uploader.totalChunks}
)
}
setTransactionId(transação.id)
} pegar (errar) {
console.log('erro: ', err)
}
}
função assíncrona readFromArweave() {
/ leia os dados do Arweave usando qualquer ID de transação /
arweave.transações
.getData(transactionId, {
decodificar: verdadeiro,
sequência: verdadeiro,
})
.então((dados) => {
console.log('dados:', dados)
})
}
retornar (
<div nomedaclasse={styles.container}>
<estilo do botão={button} onClick={createTransaction}>
Criar transação
</button>
<estilo do botão={button} onClick={readFromArweave}>
Ler transação
</button>
<estilo de entrada={input} onChange={(e) => setState(e.target.value)} placeholder=”texto” valor={state} />
</div>
)
}
botão constante = {
esboço: 'nenhum',
borda: '1px preto sólido',
cor de fundo: 'branco',
preenchimento: '10px',
largura: '200px',
margem inferior: 10,
cursor: 'ponteiro',
}
entrada constante = {
cor de fundo: '#ddd',
esboço: 'nenhum',
borda: 'nenhuma',
largura: '200px',
tamanho da fonte: '16px',
preenchimento: '10px',
}
exportar aplicativo padrão
Em seguida, inicie o aplicativo:
npm início
Quando o aplicativo iniciar, você verá uma entrada de formulário básico com dois botões.
Você pode digitar no formulário os dados que deseja salvar e pressionar Criar transação para salvar o texto no Arweave.
Assim que a transação for concluída, você deverá ver um indicador de progresso desconectado do console, indicando que os dados foram salvos.
Assim que os dados forem salvos, clique em Ler transação para ler os dados do Arweave.
Para interagir com a rede de produção, basta 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, confira os documentos do Arweave, o Arweave Wiki e siga-os no Twitter.
Edge & Node é uma empresa criativa de desenvolvimento de software que trabalha para construir um futuro vibrante e descentralizado. Fundada pela equipe inicial por trás do The Graph, Edge & Node se dedica ao avanço da Internet descentralizada (web3) e à proliferação de aplicativos com confiança minimizada. A equipe tem vasta experiência no desenvolvimento e manutenção de software, ferramentas e aplicativos de código aberto .
O produto inicial da 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 sejam fáceis de acessar. O Graph é usado por milhares de protocolos e dapps, incluindo Uniswap, Livepeer, Aave, Decentraland e muito mais. Edge & Node também lançou o Everest, o primeiro registro descentralizado de dados on-chain para fornecer utilidade contínua à comunidade criptográfica, catalisando a mudança para web3.