Опубликован: 28.01.2018 | Уровень: для всех | Доступ: платный
Лекция 4:

Обзор всех аспектов среды Solidity. Среда разработки Ethereum, Web3 и Truffle

< Лекция 3 || Лекция 4: 123456 || Лекция 5 >

Глобальные переменные

Эта лекция посвящена единицам измерений и глобальным переменным.


Прежде чем начать программировать, стоит ознакомиться с используемыми в среде Ethereum единицами измерений. На веб-сайте http://ether.fund/tool/converter расположен очень удобный конвертер единиц.


Самой маленькой единицей измерения эфира является вей (wei). Один квинтиллион веев составляют эфир (ether). Финни (finney) меньше эфира, а сабо (szabo) меньше финни. Один эфир - это тысяча финни, а один финни - это тысяча сабо, и так далее. В коде Solidity можно использовать эти названия как служебные слова для определения единиц измерений, например, можно написать "2 ether == 2000 finney", и система вернет значение "истина".

Что касается единиц измерения времени, то минимальной величиной в Ethereum является секунда (seconds). Как и в случае с валютой, работают служебные слова, например, можно написать "1 minutes is 60 seconds".


Посмотрим на специальные переменные.


Они являются составной частью среды Solidity и доступны без объявления. Одной из самых важных переменных является msg, в частности, в переменной msg.sender всегда хранится адрес вызывающей процедуры. Если же при проведении транзакции пересылался эфир, то переменная msg.value будет содержать количество отправленного эфира, выраженное в вей. Служебное слово now возвращает временную метку текущего блока. Если ваш код обращается к внешним процедурам или библиотекам, адрес вызывающего контракта будет храниться в переменной msg.sender. Обратите внимание, что адрес лица, запустившего транзакцию, не хранится в этой переменной.

Solidity также поддерживает некоторые математические функции и функции шифрования.


У типа address есть некоторые особые члены. Один из них - это balance, возвращающий количество эфира на балансе у этого адреса, выраженное в веях. Другой - это send. С помощью функции send можно отправить этому адресу эфир. Функция send вернет значение "истина" в случае успешного перевода средств.

Наконец, у типа contract тоже есть два члена. Первый - это this, указатель на адрес текущего контракта. Второй - это функция self-destruct. Ее вызов уничтожит контракт и отправит оставшийся эфир получателю, указанному в качестве параметра функции address recipient.


Отладка контрактов

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


Она не слишком популярна, но ее встроенные механизмы отладки весьма функциональны. Давайте разберемся, как они работают, на простом примере.

Предположим, у нас есть простой контракт с единственной функцией, которая задает число типа uint. В Mix эмуляция блокчейна работает по так называемым сценариям. Создаем новый сценарий и выбираем для компиляции свой контракт. Удалим ненужный блок.


В самом начале процесса отладки существует блок, в котором компилируется контракт и вызывается конструктор. Предположим, нам нужно взаимодействовать с этим контрактом, например, вызвать функцию setMyUint и установить значение, равное пятнадцати.


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


Посмотрим, как тот же пример работает в браузере Solidity. Выполняем операции по созданию контракта и выставляем значение для myUint, равное пятнадцати.


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


С другой стороны, Mix хорошо работает как для малых, так и для больших контрактов. К сожалению, активная разработка Mix остановлена. И, наконец, еще одним полезным инструментом является Solidity Studio, который можно загрузить на сайте http://Ether.camp. Это очень функциональная среда разработки на базе Cloud9. В ней отсутствует возможность отладки контрактов, но, с другой стороны, есть множество тестов для отработки функциональности контрактов.


< Лекция 3 || Лекция 4: 123456 || Лекция 5 >
Алексей Миронов
Алексей Миронов

Здравствуйте, сколько стоит курс Работа с Ethereum?

Сергей Домников
Сергей Домников
Россия
Светлана Пузына
Светлана Пузына
Россия, г. Москва