Ethereum rinkeby что это

Как Ринкеби отличается от сети?

Что делает Rinkeby «тестовой сетью»? Я понимаю, что это параллельная сеть, поэтому мой эфир не влияет на эфир сети. Но как это отличается технически?

Но все еще работает на шахтерах? Какой стимул для шахтеров должен поддерживать тестовая сеть?

3 ответа

Что делает Rinkeby «тестовой сетью»? Я понимаю, что это параллельная сеть, поэтому мой эфир не влияет на эфир сети. Но как это отличается технически?

Но все еще работает на шахтерах?

Ринкеби не делает, Ропстен делает.

Какой стимул для шахтеров должен поддерживать тестовый канал?

Это не относится к Rinkeby, но если мы рассмотрим Ropsten: нет реального финансового стимула, если только не появится черный рынок для тестового эфира, о котором я не слышал. (Я бы не удивился, если бы это было.) Mining помогает сообществу разработчиков, поэтому стимул такой же, как и любой другой альтруистический акт.

. да. Rinkeby, являющийся PoA, управляется централизованными узлами, которые можно снимать всякий раз. (Я не уверен, кто на самом деле их запускает. Кто-нибудь?)

Ropsten, являясь открытой сетью PoW, более децентрализован. Однако, учитывая более низкую скорость хеширования, используемую для добычи блоков, и, следовательно, защиту сети, это не займет много времени, чтобы атаковать и /или разрушить. (Оригинальная тестовая версия, Morden, должна была быть снята, как и первая итерация Ropsten. В настоящее время мы находимся в сети Rupsten «Возрождение».)

Источник

Русские Блоги

Что такое тестнет?

Тестовая сеть (называемая тестовой сетью) используется для моделирования поведения основной сети Ethereum. Есть несколько общедоступных тестовых сетей, которые представляют собой альтернативные блокчейны Ethereum. Валюты в этих сетях бесполезны, но они по-прежнему полезны, потому что функции контрактов и изменений протокола могут быть протестированы без нарушения работы основной сети Ethereum или использования реальных денег. Когда какие-либо серьезные изменения в протоколе Ethereum будут внесены в основную сеть (для краткости, основная сеть), тестирование в основном проводится в этих тестовых сетях. Перед развертыванием приложения в основной сети большое количество разработчиков также используют эти тестовые сети для тестирования приложения.

Используйте тестовые сети

Вы можете подключиться к общедоступной тестовой сети или создать свою собственную частную тестовую сеть. Во-первых, давайте воспользуемся общедоступной тестовой сетью, чтобы упростить настройку. Чтобы использовать общедоступную тестовую сеть, требуются некоторые тестовые сети и подключение к этой сети. Для тестового эфира используйте «кран», чтобы медленно распространять тестовый эфир, и «раздайте» небольшую сумму любому, кто спросит. Чтобы подключиться к тестовой сети, вам понадобится клиент Ethereum, который может быть полным клиентом (например, geth) или шлюзом для полного клиента, такого как MetaMask.

Получите тестовый эфир

Поскольку тестовая сеть не может работать на реальные деньги, у майнеров мало стимулов для защиты тестовой сети. Следовательно, тестовая сеть должна защищать себя от злоупотреблений и атак разными способами. В результате для этих тестовых сетей были созданы сборщики для контролируемого распространения бесплатного тестового эфира среди разработчиков (большинство сборщиков раздают эфир каждые несколько секунд или около того). Такой вид контролируемого распределения эфира предотвращает неправильное использование пользователями цепочки, поскольку предоставление ограниченного количества эфира не позволяет пользователям писать слишком много в цепочку или выполнять слишком много транзакций. Кроме того, в некоторых тестовых сетях реализованы схемы подтверждения аутентификации, в которых использование сборщиков требует аутентификации сайтов социальных сетей с соответствующими учетными данными.

Подключиться к тестовым сетям

Metamask

Metamask полностью поддерживает тестовые сети Ropsten, Kovan и Rinkeby, но он также может быть подключен к другим тестовым сетям и локальным сетям. В Metamask просто щелкните раскрывающееся меню «Основная сеть», чтобы переключить сети. MetaMask также предоставляет возможность «покупки» тестового эфира, что может привести вас к крану, где вы можете запросить бесплатный тестовый эфир. Если вы используете тестовую сеть Ropsten, вы можете получить эфир из службы тестового сборщика Ropsten. Вы можете получить доступ к этому крану с этой страницы. Для работы требуется расширение Metamask.https://faucet.metamask.io/

Infura

Infura предоставляет API шлюза для основной сети Ethereum, Ropsten, Kovan, Rinkeby и INFURAnet (пользовательская тестовая сеть Infura).

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

Для получения дополнительной информации о Infura посетите:

Гибридная интегрированная среда разработки (IDE)

Remix IDE может использоваться для развертывания и взаимодействия со смарт-контрактами в основной и тестовой сети, включая Ropsten, Rinkeby и Kovan (поставщики Web3, использующие адреса Infura и ключи API, или сети, выбранные в MetaMask через Injected Web3) и Ganache (поставщик Web3) Конечная точкаhttp://localhost:8545)

Geth изначально поддерживает сети Ropsten и Rinkeby. Для подключения к сети Ropsten используйте параметры командной строки:

Это запустит синхронизацию блокчейна Ropsten. Новый каталог с именем testnet будет создан в основном каталоге данных Ethereum. Каталог хранилища ключей будет создан в тестовой сети и будет хранить закрытый ключ вашей учетной записи тестовой сети. На момент написания этой статьи блокчейн Ropsten был значительно меньше основного блокчейна Ethereum: около 14 ГБ данных. Поскольку для тестовой сети требуется меньше ресурсов, проще сначала настроить и протестировать код в тестовой сети.

Взаимодействие с тестовой сетью аналогично основной сети. Вы можете запустить тестовую сеть Geth, выполнив следующую команду:

Вы можете проверить, завершил ли geth синхронизацию тестовой сети, выполнив следующую команду в интерактивной консоли geth:

Как только ваши узлы тестовой сети будут полностью синхронизированы, это должно вернуть число, отличное от 0. Вы можете сравнить число с последним блоком в известном браузере блоков тестовой сети, напримерhttps://ropsten.etherscan.io/

Точно так же для подключения к тестовой сети Rinkeby используйте параметры командной строки:

Parity

Клиент Parity поддерживает тестовые сети Ropsten и Kovan. Вы можете использовать параметр цепочки, чтобы выбрать сеть для подключения. Например, для синхронизации тестовой сети Ropsten:

Точно так же для синхронизации тестовой сети Кована используйте:

Подробно о тестовой сети Ethereum

На этом этапе вы можете подумать: «Я понимаю, почему я могу использовать тестовую сеть. Но почему их так много?»

Доказательство работы (майнинг) и подтверждение полномочий (совместная подпись)

Morden(The Original Testnet)

Ropsten

Если вы хотите начать тестирование контрактов в сети Ropsten, вы можете найти эфиры Ropsten несколькими нажатиями. Если кран не работает, попробуйте другой кран.

http://faucet.ropsten.be:3001/
Этот сборщик предоставляет возможность адресной очереди, которая должна получать тестовый эфир.

bitfwd Ropsten Faucet
Смеситель Ropsten доступен по адресуhttps://faucet.bitfwd.xyz/получить.

Kyber Network Ropsten Faucet
Другой кран Ropsten доступен по адресуhttps://faucet.kyber.network/Найти на.

Rinkeby

Кран Rinkeby находится по адресуhttps://faucet.rinkeby.io/. Чтобы запросить тестовый эфир, необходимо опубликовать общедоступную информацию в Twitter, Google Plus или Facebook.https://www.rinkeby.io/ https://rinkeby.etherscan.io/

Kovan

Kovan testnet поддерживает различные методы запроса тестового эфира. Более подробную информацию можно найти на сайтеhttps://github.com/kovan-testnet/faucet/blob/master/README.mdНайден в репозитории GitHub тестовой сети Kovan.

Тестовая сеть Ethereum Classic

Morden

Ethereum Classic в настоящее время использует вариант тестовой сети Morden, характеристики которой соответствуют реальной сети Ethereum Classic. Вы можете подключиться к geth или parity через подключенный Gastracker RPC или указав флаг.

История тестовой сети Ethereum

Олимпик, Морден-Ропстен, Кован, Ринкеби

Тестовая сеть Ethereum Morden (идентификатор сети: 2) была запущена вместе с Frontier, и она начала работать в июле 2015 года, пока в ноябре 2016 года не стала устаревшей. Хотя любой, кто использует Ethereum, может создать тестовую сеть, Морден был первой «официальной» общедоступной тестовой сетью и заменил Олимпийскую тестовую сеть. Из-за длительного времени синхронизации из-за раздутого блокчейна и проблемы консенсуса между клиентами Geth и Parity тестовая сеть была перезапущена и названа Ropsten.

Доказательство работы (майнинг) и подтверждение полномочий (совместная подпись)

TODO: запишите плюсы и минусы двух механизмов

Запустите локальную тестовую сеть

Ганаш: персональный блокчейн, разработанный Ethereum

Вы можете использовать Ganache для развертывания контрактов, разработки приложений и запуска тестов. Его можно использовать как настольное приложение для Windows, Mac и Linux.

Ganache CLI: Ganache как инструмент командной строки

Этот инструмент ранее назывался ethereumJS TestRPC.

Начнем моделирование узла протокола цепочки блоков Ethereum.

Интеллектуальная рекомендация

Генерация аудио PCM-данных в файлы WAV и MP3 с использованием FFMpeg

Справочник статей 1. Получить кодировщик и создать контекст декодера 2. Создайте аудио поток и выведите контекст обертки 3. Записать необработанные данные в файл Формат упаковки аудио WAV может хранит.

Ethereum rinkeby что это. Смотреть фото Ethereum rinkeby что это. Смотреть картинку Ethereum rinkeby что это. Картинка про Ethereum rinkeby что это. Фото Ethereum rinkeby что это

3. Wu Weida Machine Учебное примечание Полные сухие товары (глава 3: Линейный регрессионный обзор)

Ethereum rinkeby что это. Смотреть фото Ethereum rinkeby что это. Смотреть картинку Ethereum rinkeby что это. Картинка про Ethereum rinkeby что это. Фото Ethereum rinkeby что это

1053 Путь равного веса (30 очков)

1053 Путь равного веса (30 очков) Given a non-empty tree with root R, and with weight W​i​​ assigned to each tree node T​i​​. The weight of a path from R to L&n.

Ethereum rinkeby что это. Смотреть фото Ethereum rinkeby что это. Смотреть картинку Ethereum rinkeby что это. Картинка про Ethereum rinkeby что это. Фото Ethereum rinkeby что это

1020 Tree Traversals

Главная мысль: Укажите количество узлов двоичного дерева, а также пост-порядок, результат прохождения среднего порядка и результат прохождения уровня. Идеи решения проблем: Подзадача о бинарном древе.

Ethereum rinkeby что это. Смотреть фото Ethereum rinkeby что это. Смотреть картинку Ethereum rinkeby что это. Картинка про Ethereum rinkeby что это. Фото Ethereum rinkeby что это

[OpenStack] Neenron Добавить ICMP и SSH правила (веб-интерфейс)

Вам нужно подготовить правила группы безопасности перед конфигурацией. Поскольку группа безопасности по умолчанию не позволяет Ping ICMP-пакеты и SSH удаленного входа в систему. Вам необходимо вручную.

Источник

Эксперименты с контрактами Solidity в тестовой сети Rinkeby блокчейна Ethereum

Ethereum rinkeby что это. Смотреть фото Ethereum rinkeby что это. Смотреть картинку Ethereum rinkeby что это. Картинка про Ethereum rinkeby что это. Фото Ethereum rinkeby что это

Эта статья представляет собой небольшое практическое руководство, которое поможет вам быстро настроить среду разработки смарт-контрактов на языке Solidity для блокчейна Ethereum. Вы опубликуете первый контракт, сохраните его в тестовом блокчейне Rinkeby и научитесь вызывать методы контракта. Это будет ваш первый шаг на пути создания децентрализованных приложений DApp (Decentralized Application).

Несмотря на обилие книг, статей и руководств, посвященной теме этой статьи, новичку довольно трудно приступить к публикации контрактов и работе с ними. При попытке что-то сделать по книгам, руководствам и статьям нередко оказывается, что примеры не работают, а команды возвращают непонятные ошибки. Я попытаюсь в некоторой степени упростить первый этап освоения, отразив в этой статье свой опыт изучения Ethereum.

При погружении в эту тему я использовал приложение (браузер) Mist в среде Microsoft Windows, а также интерфейс командной строки Geth узла Ethereum в среде Ubuntu. В этой статье мы расскажем о работе с Geth, а также немного о том, как вызывать методы контрактов из Node.js.

С благодарностью приму замечания и пожелания по дальнейшим статьям про блокчейн Ethereum, разработку контрактов на языке Solidity и приложений DApp.

Погружение в тему

Прежде чем начинать создание смарт-контрактов, я рекомендую изучить технологию блокчейна (Blockchain). Например, для начала вы можете почитать статью Объяснение блокчейна для веб-разработчиков, опубликованную на Хабре.

Ethereum — это децентрализованная платформа для разработки смарт-контрактов и создания так называемых децентрализованных приложений DApp. Сайт Ethereum находится по адресу https://www.ethereum.org/. Здесь вы найдете ссылки на основные ресурсы, которые будут вам полезны.

Например, по адресу http://www.ethdocs.org/en/latest/ опубликована документация платформы.

Руководство по языку Solidity находится здесь. Имеется перевод на русский язык, который, однако, может отставать от оригинальной документации.

По ходу изложения материала мы будем делать ссылки на те или иные ресурсы.

Установка узла Ethereum на виртуальной машине Ubuntu

Для публикации контрактов и работы с Ethereum обычным пользователям компьютеров будет проще использовать браузер Mist с визуальным интерфейсом в среде Microsoft Windows. Однако разработчикам программного обеспечения (ПО) для понимания происходящего будет полезнее иметь дело с командной строкой.

Мы установим Go Ethereum — одну из трех оригинальных реализаций протокола Ethereum, написанную на языке Go (еще есть реализации на С++ и Python).

Go Ethereum можно установить на серверные платформы Ubuntu, Arch Linux и FreeBSD. Я выбрал Ubuntu, так как она похожа на Debian, а Debian мы применяем на нашем сервисе интернет-магазинов. Для эксперимента я установил ОС Ubuntu 17.10 на виртуальную машину под управлением VMWare Workstation.

Срзу после установки Ubuntu нужно добавить возможность подключения через SSH. Дополнительно я установил редактор Vim:

Далее нужно установить стабильный релиз Go Ethereum:

Полностью этот процесс описан здесь.

Теперь нам нужно установить полный узел (full node) тестовой сети Rinkeby. Инструкция для узлов различного типа находится здесь: https://www.rinkeby.io/#geth. Нам нужен блок этой инструкции для полного узла.

Прежде всего, копируем файл rinkeby.json в домашний каталог отсюда: https://www.rinkeby.io/rinkeby.json.

Далее открываем первое консольное окно, создаем в домашнем каталоге папку rinkeby и запускаем команду:

Эта команда запускается только один раз при инициализации. Здесь предполагается, что данные узла будут храниться в каталоге /home/frolov/rinkeby, а файл rinkeby.json — в каталоге /home/frolov/. Разумеется, вы можете выбрать другое расположение каталогов.

После завершения инициализации в этом же окне запускаем geth со следующими параметрами (вместо shop2you в параметре ethstats укажите какое-нибудь свое уникальное имя):

Описание параметров команда geth вы можете найти по адресу https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options. Также можно посмотреть справку по параметрам geth с помощью команды:

Итак, мы запустили узел Go Ethereum для сети Rinkeby в первом консольном окне. Во втором консольном окне подключаемся к этому узлу с помощью такой команды:

После подключения вы увидите командное приглашение утилиты geth. Введите в нем следующую команду:

Эта команда покажет версию программного интерфейса Web3, с помощью которого мы будем работать с контрактами, версию geth, а также номер сети, который для Rinkeby равен 4.

Синхронизация узла

Прежде чем продолжить работу, необходимо дождаться окончания синхронизации узла. Запустите во втором окне в приглашении geth команду eth.syncing:

Так вы не запускаете процесс синхронизации (он должен запуститься автоматически), но, повторяя время от времени запуск команды, сможете отслеживать ход процесса. Когда синхронизация будет завершена, команда вернет false:

Процесс синхронизации можно наблюдать в первом консольном окне, в котором мы запустили узел Go Ethereum:

Заметим, что синхронизация начинается не мгновенно после запуска узел geth, и на ее завершение в сети Rinkeby может уйти достаточно продолжительное время, порядка нескольких десятков минут.

Добавление аккаунтов

Сразу после установки нового узла вам нужно добавить в него аккаунты (если у вас уже есть аккаунты на других узлах, их можно перенести на новый узел).

Для добавления аккаунта введите в приглашении geth команду personal.newAccount():

Здесь вам нужно будет ввести пароль. При работе с настоящей, не тестовой сетью Ethereum, нужно особенно позаботиться о сохранении пароля. Лучше всего не записывать пароль на компьютер, даже на зашифрованный диск. Дело в том, что вирусы или троянские программы смогут похитить пароль с зашифрованного диска, т.к. когда вы работаете с диском, его содержимое становится доступным. Также существуют кей-логгеры, которые могут перехватить пароль при его вводе с клавиатуры.

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

После ввода пароля на консоли появится адрес аккаунта, в нашем случае это «0x7d9006e7f24bd6d90dd8cc63764ab0b92b77d9b3» (у вас будет другой адрес). Заметим, что адреса созданных аккаунтов записывать не обязательно, т.к. их можно посмотреть при помощи команды eth.accounts:

Вы можете добавить подобным образом несколько аккаунтов. В этом случае команда выведет массив идентификаторов для всех аккаунтов:

Для каждого аккаунта создается приватный ключ. В нашем случае все ключи находятся в каталоге /home/frolov/rinkeby/keystore. Рекомендую сохранить эти ключи в безопасном месте, особенно если они относятся к аккаунтам основной, а не тестовой сети.

Пополнение аккаунта эфиром

Для того чтобы можно было публиковать контракты и вызывать их методы, необходимо пополнить кошелек эфиром (Ether). Текущий баланс можно проверить следующей командой:

Этой команде также можно предавать идентификатор аккаунта:

Чтобы пополнить кошелек в тестовой сети Rinkeby вам не потребуются реальные бумажные деньги или криптовалюта. Воспользуйтесь сайтом https://faucet.rinkeby.io/. Вам также потребуется аккаунт в Google+, Facebook или Twitter.

Сделайте публикацию в одной из перечисленных социальных сетей, содержащую адрес вашего аккаунта, такой как 0x7d9006e7f24bd6d90dd8cc63764ab0b92b77d9b3 (у вас будет другой адрес).

Далее скопируйте адрес публикации в поле Social network URL containing your Ethereum address и выберите из списка Give me Ether одно из значений.

Здесь вы можете получать 3 Ethers каждые 8 часов, 7.5 Ethers каждый день или 18.75 Ethers каждые три дня. Для начала работы вам вполне хватит 3 Ethers, так что можете выбирать первый вариант.

Если вы все сделали правильно, через некоторое время «эфирчики» поступят на ваш аккаунт. Разумеется, эти средства вы сможете потратить только в тестовой сети Rinkeby.

Контракт для публикации

Теперь, когда вы все установили и проверили, пополнили свой аккаунт, можно приступать к публикации контракта. Мы будем работать с очень простым контрактом HelloSol. Вот его исходный текст на языке Solidity:

Этот контракт позволяет хранить текстовую строку и числовое значение. С помощью методов setString и getString можно, соответственно, записывать и читать строки. Аналогичные методы setValue и getValue предусмотрены для числовых значений.

Я создал три тестовых аккаунта:

Для публикации контракта я буду использовать последний из них с адресом 0x957f5272eadf4e284aade9b2cb2a41f475936d07. На этот адрес можно ссылаться следующим образом:

Убедимся, что на аккаунте accounts[2] имеются средства:

Перед публикацией контракта (а также перед вызовом методов контракта, изменяющих данные), необходимо разблокировать аккаунт. Это можно сделать при помощи метода personal.unlockAccount:

У вас будет запрошен пароль, который вы задавали при создании аккаунта.

Компиляция контракта

Далее нам нужно создать для контракта так называемый Application Binary Interface (ABI), а также выполнить компиляцию исходного текста контракта, написанного на языке Solidity.

Интерфейс ABI представляет собой спецификацию взаимодействия контракта с системой Ethereum, или, проще говоря, спецификацию параметров и возвращаемых значений методов контракта. Подробнее об этом можно почитать здесь.

В результате компиляции исходного текста контракта, написанного на Solidity, должен получиться бинарный код программы, который будет выполнять виртуальные машины на всех узлах сети Ethereum. В нашем случае это будет только тестовая сеть Rinkeby.

Интерфейс ABI и бинарный код программы проще всего получить при помощи браузерного инструмента IDE Remix, доступного по адресу https://remix.ethereum.org. Руководство по использованию Remix можно найти здесь.

Откройте в браузере IDE Remix, и скопируйте код нашего контракта HelloSol в окно исходного текста, как это показано на рисунке ниже:

Ethereum rinkeby что это. Смотреть фото Ethereum rinkeby что это. Смотреть картинку Ethereum rinkeby что это. Картинка про Ethereum rinkeby что это. Фото Ethereum rinkeby что это

По умолчанию код будет сразу же откомпилирован, т.к. установлен флажок Auto compile. Чтобы получить ABI и двоичный код, щелкните кнопку Details. Найдите в появившемся окне блок web3Deploy:

Ethereum rinkeby что это. Смотреть фото Ethereum rinkeby что это. Смотреть картинку Ethereum rinkeby что это. Картинка про Ethereum rinkeby что это. Фото Ethereum rinkeby что это

Скопируйте отсюда блок кода при помощи кнопки Copy value to clipboard и вставьте этот текст в какой-нибудь текстовый редактор, например, в редактор Vim.

Публикация контракта

Для того чтобы опубликовать контракт, достаточно вставить из буфера обмена блок кода, скопированный из Remix, и нажать клавишу Enter.

Перед тем как это сделать, я отредактировал строку from: web3.eth.accounts[0], заменив ее на from: web3.eth.accounts[2]. Это было сделано, чтобы выполнить публикацию от аккаунта web3.eth.accounts[2], на котором имеются средства. Если вы создали только один аккаунт и пополнили его эфиром, то ничего редактировать не нужно, просто вставьте в окно консоли в приглашении программы geth текст, скопированный из Remix:

Как только вы скопируете текст, то увидите в консоли следующее:

Это нормально. Теперь нужно подождать, когда контракт опубликуется. Если все сделано правильно, через несколько минут вы увидите в консоли сообщение:

Теперь ваш контракт опубликован в сети Rinkeby, и ему присвоен адрес 0x11c63c5ebc2c6851111d881cb58c213c609c92d4. Пользуясь этим адресом, любой пользователь сети Rinkeby сможет обращаться к контракту, вызывая его методы.

Вызов методов контракта

Теперь займемся самым интересным — взаимодействием с контрактом. Мы будем вызывать его методы из консоли geth, используя API JavaScript Web3, описанный здесь. Заметим, что это документация на стабильную версию Web3 0.2x.x. Есть еще не реализованная версия 1.0, описанная по адресу http://web3js.readthedocs.io/en/1.0/index.html.

Прежде всего, в консольном приглашении Geth введите следующую строку:

Здесь на основе ABI будет создан объект нашего контракта. Вызовем для него метод at, передав этому методу в качестве параметра адрес контракта 0x11c63c5ebc2c6851111d881cb58c213c609c92d4, полученный нами на шаге публикации контракта:

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

Перед тем как вызывать метод setValue, нам необходимо разблокировать аккаунт при помощи метода unlockAccount:

Если вы помните, ранее мы разблокировали аккаунт перед публикацией контракта.

После того как аккаунт разблокирован, вызываем метод setValue:

Обратите внимание, что в качестве первого параметра мы передаем методу значение, которое должно быть сохранено, а в качестве второго — адрес аккаунта, от имени которого будет вызван этот метод.

Теперь попытаемся получить значение методом getValue:

Вначале этот метод будет возвращать нулевое значение, и только через некоторое время мы получим наше новое значение.

Аналогичный эксперимент мы можем провести и с методами getString и setString, которые извлекают из базы контракта и изменяют в базе текстовую строку, соответственно:

Установка пакетного компилятора sol

Небольшие контракты очень удобно отлаживать при помощи IDE Remix. Однако есть и альтернатива — пакетный компилятор solc, который можно запускать в командной строке. Документация по этому компилятору находится здесь.

Я использовал для установки solc следующую команду:

После установки можно узнать версию компилятора:

Давайте выполним компиляцию нашего контракта HelloSol, получив для него файлы, содержащие ABI и двоичный код. Запишите исходный текст контракта в файл HelloSol.sol, а затем выполните следующую команду:

После ее выполнения в подкаталоге build текущего каталога будут созданы два файла — HelloSol.abi и HelloSol.bin. Первый из них содержит ABI, а второй — двоичный код откомпилированного контракта.

Для деплоя контракта можно использовать приведенный код из Remix, подставив в него результат компиляции — содержимое файлов HelloSol.abi и HelloSol.bin. При этом нужно проследить за тем, чтобы не было переводов строк внутри строк содержимого этих файлов.

Вызов методов контракта из Node.js

Для децентрализованных приложений DApp необходимо сделать пользовательский интерфейс. Можно связать обычное Web-приложение с системой контрактов, например, при помощи сервиса на базе Node.js. Давайте попробуем обратиться к методам нашего контракта через скрипт JavaScript, работающего на сервере под управлением Node.js.

Прежде всего, установим Node.js:

Также нам потребуется npm:

На следующем этапе нам нужно будет установить git, а также API Web3, причем стабильной версии. По умолчанию устанавливается нестабильная версия 1.x, поэтому сделаем так:

Чтобы проверить, что у нас все получилось, запустите в консоли Node.js при помощи команды node. Из консольного приглашения node введите следующие команды:

Здесь мы подключились у узлу node и посмотрели список аккаунтов, созданных на этом узле.

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

Вместо звездочек укажите свой пароль к аккаунту.

Далее вы можете попробовать в приглашении Node.js подключиться к опубликованному ранее контракту и вызвать его методы:

Мы подготовили скрипт nodejs_web3_test.js, который можно запускать командой «node nodejs_web3_test.js» из консоли Ubuntu:

Этот скрипт подключается к узлу, затем выводит список аккаунтов. Далее он подключается к контракту 0x11c63c5ebc2c6851111d881cb58c213c609c92d4 и вызывает его методы.

Вот что примерно вы увидите на консоли:

Заключение

Затронутая мною тема смарт-контрактов слишком масштабна и охватить ее в одной статье невозможно. Тут потребуется очень толстая книга! Я не рассмотрел некоторые очень важные темы, например, экономику Ethereum, единицы работы Gas, фильтры и многое другое. Но у меня есть планы создания новых статей, а возможно, и книги. Мне хотелось бы знать, о чем нужно рассказать в первую очередь, так что я очень жду ваших откликов!

Update: Книга написана, ссылка ниже!

Читайте также мои книги и статьи про Ethereum:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *