Пошаговое руководство к вашему первому развернутому dApp

Недавно я обнаружил Nebulas, блокчейн третьего поколения, который уже является функциональной сетью и огромным количеством Code / Apps / dApps и разработчиков по всему миру.

На момент написания этого текста Программа стимулирования Nebulas все еще продолжается. Хотя с момента моей последней разработки кода прошло некоторое время, я подумал, что попробую. За успешную отправку dApp в программу вы получите не менее 100 NAS (около 550 долларов на данный момент). Итак, стоит попробовать.

Nebulas находится в Китае, поэтому большая часть документации еще не переведена. Мне потребовалось довольно много времени, чтобы добраться до точки, когда я действительно мог начать работать над самим кодом. По этой причине я предоставлю подробное руководство по вашему первому развернутому dApp на Nebulas.

Я нахожусь на ПК с Windows 10, но код Windows для Nebulas-Node еще не выпущен, поэтому нам нужно об этом рассказать. И я хочу провести быструю разработку / тестирование, поэтому было бы здорово работать с локальными файлами.

В этом руководстве будут рассмотрены следующие моменты:

  1. Укажите важные источники информации / кода
  2. Настроить виртуальную машину, работающую в «частной сети»
  3. Настройка адресов для «частной сети»
  4. Настройте свой компьютер для разработки
  5. Разверните простое децентрализованное приложение в «частной сети»
  6. Редактировать интерфейс развернутого dApp

1. Важные источники информации / кода

На данный момент есть много ресурсов, чтобы узнать о Nebulas. Но они распространены по всей Сети.

Вот самые важные из них, которые я обнаружил:

2. Настройте виртуальную машину с запущенной частной сетью.

Изначально я хотел протестировать в Testnet, но потом подумал, что было бы неплохо начать тестирование на pricatechain. Таким образом, я могу иметь быструю и частную сеть и иметь возможность видеть выходные данные консоли на самой цепочке блоков и позже делопию для тестовой сети. Поэтому я настраиваю виртуальную машину для запуска на ней priave и тестовой сети.

Самый простой способ сделать это - установить виртуальную машину под управлением Ubuntu 16.04 либо локально, либо на VPS. Для тестирования выбираю Vultr.com. План за 10 долларов в месяц сделает это для Node, но blockexplorer находится на java, и ему нужен план за 20 долларов и более.

Для этого я установил два установочных скрипта.

  • Установить только узел Nebulas: вы можете использовать это, если у вас уже есть система Ubuntu. Он установит все пакеты, необходимые для полнофункционального узла Nebulas, и - если запускается вручную - запустит два экземпляра (требуемых для частной цепочки) Nebulas как Privatenet или один экземпляр Testnet / Mainnet.
  • Установите« полный DevelopNode:» Это попытка предоставить более полную среду для разработки Nebulas. Он также запустит Privatenet, но также установит кошелек Nebulas, Webfronend, а затем Blockexplorer для вашей частной сети.
    Чтобы запустить это, подключитесь к вашему VPS через SSH и просто дайте скрипту поработать:
curl -sSL https://raw.githubusercontent.com/mirei83/NebuEnv/master/SetupEnvironment.sh | bash

Это в основном сделает всю работу. На двухъядерной машине это занимает около 15 минут. Вы можете просто проверить скрипт. На данный момент решаются следующие задачи:

  • Установите все необходимые пакеты
  • Установить GO
  • Установить RocksDB
  • Установить dep
  • Установить Nebulas
  • Измените Nebulas, чтобы иметь возможность запускать частную сеть на одном VPS
  • Установить Nebulas WebWallet
  • Подготавливает WebWallet для частной сети
  • Устанавливает Blockexplorer
  • Готовит Blockexplorer к частной сети
  • Ставит Nebulas + Blockexplorer в автозапуск

Это первый выпуск. Через некоторое время он станет больше.
После завершения скрипта вы можете либо перезагрузить VPS, либо ввести

./start-nebulas-privatenet.sh
./explorer-privatenet.sh

Теперь вы должны увидеть некоторые «neb» процессы через «ps aux | grep neb »и записи в журнале / neb.log

После настройки вы можете получить доступ к Личному кабинету по адресу http: //YOUR.NODE.IP.ADD

3. Настройте адреса для «частной сети».

Теперь, когда у нас есть частная сеть, нам нужны кошельки для отправки некоторых Privatenet-NAS. Частная сеть изначально настроена на отправку 5 000 000 монет по адресу n1FF1nz6tarkDVwWQkMnnwFPuPKUaQTdptE. Также на этот адрес будут приходить все награды за блокировку. Закрытый ключ этого адреса уже есть на узле. Мы можем раздавать монеты отсюда. Но для этого нам нужны Testaddresses.

Итак, давайте взаимодействовать с нашим новым блокчейном!

Перейдите в каталог Nebulas. Это сводит к минимуму нерешенные проблемы с переменными.

cd $GOPATH/src/github.com/nebulasio/go-nebulas

Отсюда мы можем создать несколько адресов тестовой сети:

./neb account new

Введите пароль и запишите новый адрес. Результат должен выглядеть так:

root@Nebulas_Autoinstall:~/go/src/github.com/nebulasio/go-nebulas# ./neb account new
Your new account is locked with a passphrase. Please give a passphrase. Do not forget this passphrase.
Passphrase:
Repeat passphrase:
Address: n1LEHMKzsDHgyi7wsXB7QSTgtHv712Dj2da

Повторяйте это столько раз, сколько необходимо.

Файлы хранилища ключей (и некоторые предустановленные) хранятся в папке keydir. Скопируйте новые созданные кошельки локально (с помощью WinSCP).

$GOPATH/src/github.com/nebulasio/go-nebulas/keydir

Давайте проверим баланс новых кошельков с помощью этой команды:

curl -i -H Accept:application/json -X POST http://localhost:8685/v1/user/accountstate -d '{"address":"n1LEHMKzsDHgyi7wsXB7QSTgtHv712Dj2da"}'

И ответ:

{
    "result": {
        "balance": "0",
        "nonce": "0",
        "type": 87
    }
}

А теперь сделаем нашу первую сделку! Мы отправим 1NAS из нашего основного кошелька в новый кошелек n1LEHMKzsDHgyi7wsXB7QSTgtHv712Dj2da.

curl -i -H 'Content-Type: application/json' -X POST http://localhost:8685/v1/admin/transactionWithPassphrase -d '{"transaction":{"from":"n1FF1nz6tarkDVwWQkMnnwFPuPKUaQTdptE","to":"n1LEHMKzsDHgyi7wsXB7QSTgtHv712Dj2da", "value":"1000000000000000000","nonce":1,"gasPrice":"1000000","gasLimit":"2000000"},"passphrase":"passphrase"}'

Теперь еще раз проверьте баланс.

curl -i -H Accept:application/json -X POST http://localhost:8685/v1/user/accountstate -d '{"address":"n1LEHMKzsDHgyi7wsXB7QSTgtHv712Dj2da"}'

И ответ:

{
    "result": {
        "balance": "1000000000000000000",
        "nonce": "0",
        "type": 87
    }
}

Ага! Блокчейн работает!

4. Настройте свой компьютер для разработки.

Теперь нам нужен цвет. Как я уже сказал, я работаю в Windows. Чтобы начать, нужно сделать несколько хитростей. Так что я избавлю вас от боли узнать себя.

  1. Установите Браузер Chrome
  2. Установите NebulasExtensionWallet в Chrome (это не веб-кошелек)
  3. Разрешите доступ к локальным файлам для NebulasExtensionWallet, как показано здесь. В противном случае NebExtWallet не сможет правильно получить доступ к локальным файлам внешнего интерфейса.
  4. Добавьте - allow-file-access-from-files в запуск Chrome, как показано здесь. Вам необходимо добавить этот атрибут, чтобы открывать локальные файлы Javascipt.
  5. Установите редактор кода (Visual Code Studio подойдет)
  6. Подключаемся к нашему узлу:

Чтобы иметь возможность взаимодействовать с WebExtensionWallet и NebPay в нашей частной сети, нам нужен небольшой трюк.
WebExtensionWallet может подключаться только к Mainnet, Testnet и localhost. Но у нас нет узла, работающего на localhost, но у нас есть удаленный узел. Поэтому нам нужно настроить переадресацию порта 8685 на наш узел через туннель SSH. С Putty это легко сделать, просто оставив соединение открытым:

После активации WebExtensionWallet будет подключаться к локальному хосту, который подключается к нашей частной сети. Прохладный!

Теперь у вас должна быть возможность выбрать «localhost: 8685» в WebExtensionWallet и открыть файл хранилища ключей частной сети, скопированный ранее.

5. Разверните простое децентрализованное приложение в «частной сети».

Прежде всего: посмотрите Youtube-видео HardlyDifficult! Это хорошее видео для подражания. Мы собираемся развернуть децентрализованное приложение DecentralizedRNG (которое также уже находится в основной сети) в вашей частной сети.

  1. Загрузите исходный код здесь и извлеките что-нибудь.
  2. Существует файл с названием «DecentralizedRNGContract.js». Этот файл содержит смарт-контракт для блокчейна. Откройте этот файл в редакторе и скопируйте его содержимое.
  3. Самый простой способ разместить контракт - через веб-кошелек, который доступен на нашем VPS по адресу http: //IP.TO.YOUR.VPS/web-wallet. Веб-кошелек на узле будет подключаться только к частной сети на узле.
  4. Перейдите в Contract - ›Deploy и выберите кошелек с NAS на нем. Теперь вставьте смарт-контракт в «код».
  5. Нажмите Test, и результат должен выглядеть так:
{"result":"\"\"","execute_err":"","estimate_gas":"21566"}

6. Теперь нажмите «Отправить», и контракт уже развернут!

7. Запишите «контракт_адрес», он нам нужен в локальных файлах.

6. Отредактируйте Frontend развернутого dApp.

Теперь нам нужно отредактировать Frontend, чтобы он мог взаимодействовать с нашим смарт-контрактом.

  1. Откройте файл «DecentralizedRNG.js» и измените адрес контракта на новый адрес, который мы только что создали.
  2. Откройте results.html и измените
var is_mainnet = true;
        var nebulas_chain_id, nebulas_domain; 
        var gas_price = 1000000;
        var gas_limit = 200000;
if(is_mainnet) {
            nebulas_chain_id = 1;
            nebulas_domain = "https://mainnet.nebulas.io";
        } else {
            nebulas_chain_id = 1001;
            nebulas_domain = "https://testnet.nebulas.io";
        }

to

var is_mainnet = false;
        var nebulas_chain_id, nebulas_domain; 
        var gas_price = 1000000;
        var gas_limit = 200000;
if(is_mainnet) {
            nebulas_chain_id = 1;
            nebulas_domain = "https://mainnet.nebulas.io";
        } else {
            nebulas_chain_id = 100;
            nebulas_domain = "http://localhost:8685";
        }

Вот и все! Теперь у нас есть локальное взаимодействие файла html / JavaScript с NebPay и NebPay, взаимодействующим с нашей собственной частной сетью.

7. Протестируйте приложение.

Теперь откройте index.html в Chrome и взаимодействуйте с NebExtentsionWallet.

Убедитесь, что Chrome запущен с указанными ранее атрибутами!

Если эта статья вам помогла, рассмотрите возможность небольшого пожертвования: n1HLSuo2h689WShKnwUnEaMHQiXQ7eEqbEk