Представляем Building on web3 - новую серию блогов Edge & Node, цель которой - познакомить разработчиков с протоколами, инструментами и лучшими практиками разработки в растущем пространстве web3. Building on web3 расскажет о новых технологиях и проектах в экосистеме web3, чтобы помочь создать рецепт успеха для разработчиков dapp.
В этом посте Вы узнаете о том, что такое Arweave, почему я считаю его важным, и как Вы можете начать строить с его помощью. В этом посте речь пойдет о хранении и получении файлов, а не о запуске собственного производственного шлюза Arweave.
Для меня революционным в Arweave является тот факт, что я могу сохранить что-то один раз и рассчитывать на то, что это будет доступно всегда, не платя больше ни за что и не беспокоясь о том, что это исчезнет.
Сравните это с традиционными централизованными решениями для хранения данных, где если Вы забудете оплатить счет за месяц, то Вас отключат, или, что еще хуже, Вы или кто-то другой случайно удалит Ваши данные полностью.
Такая неизменность данных особенно важна в web3, где мы создаем неизменяемую инфраструктуру приложений. Данные блокчейна по своей природе уже неизменяемы, но Вы часто видите, что разработчики хранят данные вне цепи таким образом, который не соответствует лучшим практикам децентрализации и неизменяемости.
Например, в сфере не сгибаемых токенов, или NFT, некоторые разработчики используют централизованные хостинги для хранения метаданных токенов. Это нарушает важные свойства безопасности, необходимые для неизменяемости, а также идею о том, что вообще представляет собой NFT.
Если метаданные не являются постоянными, нет никакой гарантии, что свойство, которое представляет токен, будет существовать и в будущем. Это означает, что целостность токена находится под угрозой, если метаданные не хранятся на постоянном протоколе хранения файлов, таком как Arweave, и поэтому так важно, чтобы такие технологии существовали.
В рамках экосистемы The Graph мы также создаем поддержку и интеграцию для Arweave, поскольку признаем ценность этого протокола для создания действительно децентрализованных web3-приложений.
Arweave построен на двух технологиях: блокчейне, производной от блокчейна, и "доказательстве доступа".
Blockweave - это технология, которая питает Arweave. Как и блокчейн, блокчейн представляет собой связанную коллекцию блоков данных, ссылающихся на предыдущие блоки, записанные в сети.
Механизм консенсуса, используемый для обеспечения безопасного, децентрализованного хранения данных в Arweave, называется "Доказательство доступа". Этот механизм более эффективен и экологичен, чем доказательство работы, поскольку майнерам не нужно хранить все блоки. Благодаря этому экономится огромное количество электроэнергии, в то время как майнеры все еще могут прийти к консенсусу. Кроме того, по мере расширения сети потребление электроэнергии снижается.
Есть два способа начать использовать токены Arweave
Вы можете начать с нового кошелька и получить часть токенов Arweave, воспользовавшись тестовым краном Arweave.
Как только Вы пройдете верификацию, Вам будет предоставлен 0,1 AR для использования, чтобы Вы могли начать тестировать Arweave в своем приложении.
Возможно, Вы пользовались браузерными и мобильными кошельками, такими как Metamask или Phantom, которые позволяют Вам взаимодействовать с web3-приложениями непосредственно из приложения. У компании Arweave есть похожий кошелек, который называется Arconnect.
Вы можете установить его непосредственно в качестве расширения для хрома и начать взаимодействовать с веб-приложениями, использующими Arweave.
Оттуда Вы можете пополнить кошелек токенами с любой из поддерживаемых бирж или импортировать Ваш кошелек, созданный на предыдущем шаге.
Чтобы следовать этому руководству, Вам не понадобятся токены, но у Вас должен быть установлен браузерный кошелек Arconnect.
В дополнение к технике, которую мы рассмотрим в этом уроке, Вы можете использовать Bundlr, который обеспечивает встроенную поддержку хранения Arweave на различных блокчейн смарт-контрактах, а также клиентские и серверные SDK для интеграции приложений.
Это отличный вариант, поскольку он не требует от пользователя владения AR-токенами, а вместо этого позволяет использовать другие сети и токены, такие как ETH, MATIC, Solana, Arbitrum и многие другие, для оплаты транзакций.
Чтобы узнать больше о Bundlr, ознакомьтесь с документацией здесь.
Теперь, когда мы получили общее представление об Arweave и закрепили наши токены, давайте создадим базовое приложение.
Приложение, которое мы создадим, позволит нам загружать и выгружать строку текста в Arweave.
Это базовый пример, но он отлично подходит для "Hello world", потому что в нем показаны инструменты и API, которые помогут Вам начать работу над проектом за короткий промежуток времени.
Первое, что мы сделаем, это создадим новое React-приложение с помощью create-react-app:
npx create-react-app
arweave-appcd arweave-app
Существует два основных способа вызова сети Arweave из Вашего приложения:
Arweave JS SDK очень хорош, и именно его мы будем использовать в этом уроке.
Теперь давайте установим arweave-js с помощью npm или yarn:
npm install arweave
Есть несколько способов, которыми Вы можете взаимодействовать с сетью Arweave:
В этом руководстве мы начнем с Arlocal, который позволит нам отправлять тестовые транзакции бесплатно. Мы также узнаем, как использовать mainnet для отправки реальной транзакции.
Для локального тестирования мы можем использовать Arlocal, который запустит локальную сеть, с которой мы сможем взаимодействовать и отправлять в нее тестовые транзакции.
Вам даже не нужно ничего скачивать или устанавливать, чтобы использовать Arlocal. Если на Вашей машине установлен Node.js, Вы можете просто запустить локальный шлюз, выполнив команду:
npx arlocal
Вот и все! Теперь у Вас должен быть запущен локальный шлюз Arweave на сайте http://localhost:1984.
Теперь, когда у Вас запущен локальный шлюз, давайте напишем код.
Откройте файл src/App.js и обновите его, добавив следующий код:
import styles from '../styles/Home.module.css'
import { useState } from 'react'
import Arweave from 'arweave'
/ подключитесь к узлу Arweave или укажите шлюз /.
const arweave = Arweave.init({})
function App() {
const [state, setState] = useState('')
const [transactionId, setTransactionId] = useState('')
async-функция createTransaction() {
if (!state) return
попробуйте {
const formData = state
setState('')
/ создает и отправляет транзакцию в Arweave /.
let transaction = await arweave.createTransaction({ data: formData })
await arweave.transactions.sign(transaction)
let uploader = await arweave.transactions.getUploader(transaction)
/ индикатор загрузки /
while (!uploader.isComplete) {
await uploader.uploadChunk()
console.log(${uploader.pctComplete}% завершения,
${uploader.uploadedChunks}/${uploader.totalChunks}
)
}
setTransactionId(transaction.id)
} catch (err) {
console.log('error: ', err)
}
}
async-функция readFromArweave() {
/ читайте данные Arweave, используя любой идентификатор транзакции /.
arweave.transactions
.getData(transactionId, {
декодировать: верно,
string: true,
})
.then((data) => {
console.log('данные: ', данные)
})
}
возврат (
<div className={styles.container}>
<button style={button} onClick={createTransaction}>
Создать транзакцию
</button></кнопка>
<button style={button} onClick={readFromArweave}>
Чтение транзакций
</button></кнопка>
<input style={input} onChange={(e) => setState(e.target.value)} placeholder="text" value={state} />
</div>
)
}
const button = {
Контур: 'none',
border: '1px solid black',
backgroundColor: 'white',
padding: '10px',
ширина: '200px',
marginBottom: 10,
курсор: 'pointer',
}
const input = {
backgroundColor: '#ddd',
Контур: 'none',
border: 'none',
ширина: '200px',
fontSize: '16px',
padding: '10px',
}
экспортировать приложение по умолчанию
Затем запустите приложение:
npm start
Когда приложение запустится, Вы увидите базовую форму ввода с двумя кнопками.
Вы можете ввести в форму данные, которые хотите сохранить, а затем нажать кнопку Create Transaction, чтобы сохранить текст в Arweave.
После завершения транзакции Вы должны увидеть индикатор выполнения, выведенный на консоль, указывающий на то, что данные были сохранены.
Когда данные будут сохранены, нажмите Read Transaction, чтобы считать данные из Arweave.
Чтобы взаимодействовать с производственной сетью, Вам нужно только обновить конфигурацию сети Arweave.
const arweave = Arweave.init({
хост: 'arweave.net',
})
Пример кодовой базы для проекта, который мы создали сегодня, доступен здесь.
Чтобы узнать больше об Arweave, ознакомьтесь с документацией Arweave, Arweave Wiki и следите за ними в Twitter.
Edge & Node - креативная компания по разработке программного обеспечения, работающая над созданием динамичного децентрализованного будущего. Команда Edge & Node, основанная командой, стоявшей у истоков The Graph, занимается развитием децентрализованного Интернета (web3) и распространением приложений с минимальным уровнем доверия. У команды большой опыт в разработке и поддержке программного обеспечения с открытым исходным кодом, инструментов и приложений.
Первый продукт компании Edge & Node - The Graph, протокол индексирования для запросов к таким сетям, как Ethereum и IPFS, который обеспечивает постоянный и легкий доступ к открытым данным. График используется тысячами протоколов и dapps, включая Uniswap, Livepeer, Aave, Decentraland и другие. Edge & Node также запустил Everest, первый децентрализованный реестр данных о цепочке, обеспечивающий постоянную полезность для криптосообщества, катализируя переход на web3.
Представляем Building on web3 - новую серию блогов Edge & Node, цель которой - познакомить разработчиков с протоколами, инструментами и лучшими практиками разработки в растущем пространстве web3. Building on web3 расскажет о новых технологиях и проектах в экосистеме web3, чтобы помочь создать рецепт успеха для разработчиков dapp.
В этом посте Вы узнаете о том, что такое Arweave, почему я считаю его важным, и как Вы можете начать строить с его помощью. В этом посте речь пойдет о хранении и получении файлов, а не о запуске собственного производственного шлюза Arweave.
Для меня революционным в Arweave является тот факт, что я могу сохранить что-то один раз и рассчитывать на то, что это будет доступно всегда, не платя больше ни за что и не беспокоясь о том, что это исчезнет.
Сравните это с традиционными централизованными решениями для хранения данных, где если Вы забудете оплатить счет за месяц, то Вас отключат, или, что еще хуже, Вы или кто-то другой случайно удалит Ваши данные полностью.
Такая неизменность данных особенно важна в web3, где мы создаем неизменяемую инфраструктуру приложений. Данные блокчейна по своей природе уже неизменяемы, но Вы часто видите, что разработчики хранят данные вне цепи таким образом, который не соответствует лучшим практикам децентрализации и неизменяемости.
Например, в сфере не сгибаемых токенов, или NFT, некоторые разработчики используют централизованные хостинги для хранения метаданных токенов. Это нарушает важные свойства безопасности, необходимые для неизменяемости, а также идею о том, что вообще представляет собой NFT.
Если метаданные не являются постоянными, нет никакой гарантии, что свойство, которое представляет токен, будет существовать и в будущем. Это означает, что целостность токена находится под угрозой, если метаданные не хранятся на постоянном протоколе хранения файлов, таком как Arweave, и поэтому так важно, чтобы такие технологии существовали.
В рамках экосистемы The Graph мы также создаем поддержку и интеграцию для Arweave, поскольку признаем ценность этого протокола для создания действительно децентрализованных web3-приложений.
Arweave построен на двух технологиях: блокчейне, производной от блокчейна, и "доказательстве доступа".
Blockweave - это технология, которая питает Arweave. Как и блокчейн, блокчейн представляет собой связанную коллекцию блоков данных, ссылающихся на предыдущие блоки, записанные в сети.
Механизм консенсуса, используемый для обеспечения безопасного, децентрализованного хранения данных в Arweave, называется "Доказательство доступа". Этот механизм более эффективен и экологичен, чем доказательство работы, поскольку майнерам не нужно хранить все блоки. Благодаря этому экономится огромное количество электроэнергии, в то время как майнеры все еще могут прийти к консенсусу. Кроме того, по мере расширения сети потребление электроэнергии снижается.
Есть два способа начать использовать токены Arweave
Вы можете начать с нового кошелька и получить часть токенов Arweave, воспользовавшись тестовым краном Arweave.
Как только Вы пройдете верификацию, Вам будет предоставлен 0,1 AR для использования, чтобы Вы могли начать тестировать Arweave в своем приложении.
Возможно, Вы пользовались браузерными и мобильными кошельками, такими как Metamask или Phantom, которые позволяют Вам взаимодействовать с web3-приложениями непосредственно из приложения. У компании Arweave есть похожий кошелек, который называется Arconnect.
Вы можете установить его непосредственно в качестве расширения для хрома и начать взаимодействовать с веб-приложениями, использующими Arweave.
Оттуда Вы можете пополнить кошелек токенами с любой из поддерживаемых бирж или импортировать Ваш кошелек, созданный на предыдущем шаге.
Чтобы следовать этому руководству, Вам не понадобятся токены, но у Вас должен быть установлен браузерный кошелек Arconnect.
В дополнение к технике, которую мы рассмотрим в этом уроке, Вы можете использовать Bundlr, который обеспечивает встроенную поддержку хранения Arweave на различных блокчейн смарт-контрактах, а также клиентские и серверные SDK для интеграции приложений.
Это отличный вариант, поскольку он не требует от пользователя владения AR-токенами, а вместо этого позволяет использовать другие сети и токены, такие как ETH, MATIC, Solana, Arbitrum и многие другие, для оплаты транзакций.
Чтобы узнать больше о Bundlr, ознакомьтесь с документацией здесь.
Теперь, когда мы получили общее представление об Arweave и закрепили наши токены, давайте создадим базовое приложение.
Приложение, которое мы создадим, позволит нам загружать и выгружать строку текста в Arweave.
Это базовый пример, но он отлично подходит для "Hello world", потому что в нем показаны инструменты и API, которые помогут Вам начать работу над проектом за короткий промежуток времени.
Первое, что мы сделаем, это создадим новое React-приложение с помощью create-react-app:
npx create-react-app
arweave-appcd arweave-app
Существует два основных способа вызова сети Arweave из Вашего приложения:
Arweave JS SDK очень хорош, и именно его мы будем использовать в этом уроке.
Теперь давайте установим arweave-js с помощью npm или yarn:
npm install arweave
Есть несколько способов, которыми Вы можете взаимодействовать с сетью Arweave:
В этом руководстве мы начнем с Arlocal, который позволит нам отправлять тестовые транзакции бесплатно. Мы также узнаем, как использовать mainnet для отправки реальной транзакции.
Для локального тестирования мы можем использовать Arlocal, который запустит локальную сеть, с которой мы сможем взаимодействовать и отправлять в нее тестовые транзакции.
Вам даже не нужно ничего скачивать или устанавливать, чтобы использовать Arlocal. Если на Вашей машине установлен Node.js, Вы можете просто запустить локальный шлюз, выполнив команду:
npx arlocal
Вот и все! Теперь у Вас должен быть запущен локальный шлюз Arweave на сайте http://localhost:1984.
Теперь, когда у Вас запущен локальный шлюз, давайте напишем код.
Откройте файл src/App.js и обновите его, добавив следующий код:
import styles from '../styles/Home.module.css'
import { useState } from 'react'
import Arweave from 'arweave'
/ подключитесь к узлу Arweave или укажите шлюз /.
const arweave = Arweave.init({})
function App() {
const [state, setState] = useState('')
const [transactionId, setTransactionId] = useState('')
async-функция createTransaction() {
if (!state) return
попробуйте {
const formData = state
setState('')
/ создает и отправляет транзакцию в Arweave /.
let transaction = await arweave.createTransaction({ data: formData })
await arweave.transactions.sign(transaction)
let uploader = await arweave.transactions.getUploader(transaction)
/ индикатор загрузки /
while (!uploader.isComplete) {
await uploader.uploadChunk()
console.log(${uploader.pctComplete}% завершения,
${uploader.uploadedChunks}/${uploader.totalChunks}
)
}
setTransactionId(transaction.id)
} catch (err) {
console.log('error: ', err)
}
}
async-функция readFromArweave() {
/ читайте данные Arweave, используя любой идентификатор транзакции /.
arweave.transactions
.getData(transactionId, {
декодировать: верно,
string: true,
})
.then((data) => {
console.log('данные: ', данные)
})
}
возврат (
<div className={styles.container}>
<button style={button} onClick={createTransaction}>
Создать транзакцию
</button></кнопка>
<button style={button} onClick={readFromArweave}>
Чтение транзакций
</button></кнопка>
<input style={input} onChange={(e) => setState(e.target.value)} placeholder="text" value={state} />
</div>
)
}
const button = {
Контур: 'none',
border: '1px solid black',
backgroundColor: 'white',
padding: '10px',
ширина: '200px',
marginBottom: 10,
курсор: 'pointer',
}
const input = {
backgroundColor: '#ddd',
Контур: 'none',
border: 'none',
ширина: '200px',
fontSize: '16px',
padding: '10px',
}
экспортировать приложение по умолчанию
Затем запустите приложение:
npm start
Когда приложение запустится, Вы увидите базовую форму ввода с двумя кнопками.
Вы можете ввести в форму данные, которые хотите сохранить, а затем нажать кнопку Create Transaction, чтобы сохранить текст в Arweave.
После завершения транзакции Вы должны увидеть индикатор выполнения, выведенный на консоль, указывающий на то, что данные были сохранены.
Когда данные будут сохранены, нажмите Read Transaction, чтобы считать данные из Arweave.
Чтобы взаимодействовать с производственной сетью, Вам нужно только обновить конфигурацию сети Arweave.
const arweave = Arweave.init({
хост: 'arweave.net',
})
Пример кодовой базы для проекта, который мы создали сегодня, доступен здесь.
Чтобы узнать больше об Arweave, ознакомьтесь с документацией Arweave, Arweave Wiki и следите за ними в Twitter.
Edge & Node - креативная компания по разработке программного обеспечения, работающая над созданием динамичного децентрализованного будущего. Команда Edge & Node, основанная командой, стоявшей у истоков The Graph, занимается развитием децентрализованного Интернета (web3) и распространением приложений с минимальным уровнем доверия. У команды большой опыт в разработке и поддержке программного обеспечения с открытым исходным кодом, инструментов и приложений.
Первый продукт компании Edge & Node - The Graph, протокол индексирования для запросов к таким сетям, как Ethereum и IPFS, который обеспечивает постоянный и легкий доступ к открытым данным. График используется тысячами протоколов и dapps, включая Uniswap, Livepeer, Aave, Decentraland и другие. Edge & Node также запустил Everest, первый децентрализованный реестр данных о цепочке, обеспечивающий постоянную полезность для криптосообщества, катализируя переход на web3.