# Создаем dApp с помощью EthStorage

By [Mioku](https://paragraph.com/@mioku) · 2024-06-25

---

EthStorage — это хранилище данных второго уровня, построенное поверх Ethereum. Его цель состоит в достижении «петабайтной емкости при снижении затрат в 1000 раз».

> \*«Посредством периодической отправки доказательств хранения из EthStorage в основную сеть платформа стремится извлечь выгоду из функций безопасности Ethereum, значительно увеличивая емкость хранилища при значительно сниженных затратах», — говорится в пресс-релизе [**Gate Ventures**](https://medium.com/@gate_ventures/the-future-of-blockchain-storage-solutions-cb7624127584).\*

По мнению представителей инвестфонда, проект предоставляет функции, которые в настоящее время недоступны у аналогов вроде Arweave и Filecoin.

EthStorage привлек $7 млн посевных инвестиций. По итогам раунда компанию оценили в $100 млн.

![](https://storage.googleapis.com/papyrus_images/6abfafa8eb91ca657e80059f51b30ec2deebe41b6969c7509c3c3a1d615d98ac.webp)

Сбор средств возглавил венчурный криптофонд dao5 при участии SevenX Ventures, Foresight Ventures, Sky9 Capital, Gate Ventures и Galxe.

Для выполнения данной активности нам необходима ОС на базе Linux. (Ubuntu) Также у нас должен быть кошелек с более чем 2 sepolia ETH в нем.

**Загрузка файлов на сервер**

Прежде всего, нам нужно создать каталог dist с помощью этой команды

`mkdir dist`

_Переходим в папку dist:_

`cd dist`

_Скачиваем данную картинку к себе на ПК_:

[https://github-production-user-asset-6210df.s3.amazonaws.com/5291653/329157608-4526caf3-9218-4a23-8619-02f777e6e7fd.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240625%2Fus-east-1%2Fs3%2Faws4\_request&X-Amz-Date=20240625T201707Z&X-Amz-Expires=300&X-Amz-Signature=ab01e581815e29b55714f8d2713d17a09f2c4bc714a7dbbe2d7ee1e8f0bb1f7d&X-Amz-SignedHeaders=host&actor\_id=0&key\_id=0&repo\_id=0](https://github-production-user-asset-6210df.s3.amazonaws.com/5291653/329157608-4526caf3-9218-4a23-8619-02f777e6e7fd.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240625T201707Z&X-Amz-Expires=300&X-Amz-Signature=ab01e581815e29b55714f8d2713d17a09f2c4bc714a7dbbe2d7ee1e8f0bb1f7d&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=0)

_На сервере открываем папку dist которую создали ранее и загружаем скаченную картинку на сервер в папку dist_

![](https://storage.googleapis.com/papyrus_images/235e89014c738628f8a598fe86c615d275d814c81d3106b3cfd7f9344daf149f.png)

_Создаем файл app.html:_

`nano app.html`

_Видим следующее:_

![](https://storage.googleapis.com/papyrus_images/d207d5fed4ffcd0ebcd6453ecb30fa94b30b0dd0fb0e48c550d214c1bf42abb8.png)

_копируем ниже приведенный код и вставляем его в наш app.html и нажимаем клавиши CTRL+X+Y_

    <html>
        <head>
            <script> 
                async function fetchData() { 
                    // web3 URL is define in https://eips.ethereum.org/EIPS/eip-4804, please find more detail on https://web3url.io
                    const url = 'web3://0xf14e64285Db115D3711cC5320B37264708A47f89:11155111/greeting'; 
                    const response = await fetch(url); 
                    const data = await response.text(); 
                    document.getElementById('content').textContent = data; 
                } 
                window.onload = fetchData; 
            </script>
        </head>
        <body>
            <div id="content"> Loading greeting... </div>
            <br>
            <img  src="./degen.jpeg"  alt=""> 
        </body> 
    </html>
    

_Теперь когда 2 наших файла готовы переходим в папку выше с помощью команды:_

`cd ..`

_Устанавливаем ethfs-cli_

`npm i -g ethfs-cli`

_если при установке NPM будет ругаться, то прописываем следующее:_

`curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash source ~/.nvm/nvm.sh nvm install --lts nvm use --lts npm --version`

**Создаем контракт FlatDirectory**

_Теперь мы должны создать FlatDirectory с помощью этой команды:_

`ethfs-cli create -p YOUR_WALLET_PRIVATE_KEY -c 11155111`

_где YOUR WALLET PRIVATE KEY ваш приватный ключ кошелька Метамаск, на кошельке должно быть более 2 ETH в сети Sepolia._

_Далее вы увидите следующее:_

![](https://storage.googleapis.com/papyrus_images/76342ad2ba717e1deb0f43e9a1079c999609dbf8b537eea8d5d99b4f70c3b53a.png)

_копируем FlatDirectory address._

**_Deploy приложения_**

_В этом разделе мы загрузим нашу папку в каталог FlatDirectory, который мы только что создали, с помощью следующей команды:_

    ethfs-cli upload -f dist -a flat_directory_address -c 11155111 -p YOUR_WALLET_PRIVATE_KEY -t 1
    

где **_fiat\_directory\_address_** это то что мы скопировали выше и **_YOUR\_WALLET\_PRIVATE\_KEY_** наш приватный ключ

_Далее вы должны будете увидеть следующее:_

![](https://storage.googleapis.com/papyrus_images/4ddf89a9ebda9358f31160924570f3f76f1215d6c516433192ab1f913a1c81c2.png)

_Все. Наше развертывание приложения завершено._

Также теперь мы можем получить доступ к нашему Dapp:

web3://:11155111/app.html пример - [https://0x49edfb27a463545337487d39a8349760b345f160.sep.w3link.io/app.html](https://0x49edfb27a463545337487d39a8349760b345f160.sep.w3link.io/app.html) **Заключительный шаг** _Теперь нам следует разместить в твиттере созданную на последнем шаге ссылку web3://flat\_directory\_address... с адресом кошелька, который мы использовали для этого квеста, а также пометить тегом @EthStorage_ затем заполнить эту форму: [https://dawme4mo.forms.app/ethstorage-2nd-campaign-submission?ref=blog.ethstorage.io](https://dawme4mo.forms.app/ethstorage-2nd-campaign-submission?ref=blog.ethstorage.io) На этом все ;) **_Официальная статья квеста:_** [https://ethstorage.medium.com/building-unstoppable-dapps-on-ethereum-ethstorages-2nd-public-testnet-campaign-d70400a5d2c7](https://ethstorage.medium.com/building-unstoppable-dapps-on-ethereum-ethstorages-2nd-public-testnet-campaign-d70400a5d2c7) Twitter: [https://x.com/EthStorage](https://x.com/EthStorage)

---

*Originally published on [Mioku](https://paragraph.com/@mioku/dapp-ethstorage)*
