Редактор Remix > HappyHodler.ru - обучающие статьи о биржах криптовалют, биткоине и трейдинге

Редактор Remix

1
(47)

Remix

Редактор Remix — это настоящий комбайн, позволяющий контролировать и оптимизировать написание контракта прямо в браузере без установки дополнительных программ.

В первом уроке мы компилировали наш контракт в Remix. Давайте посмотрим на что еще способен этот редактор.

Откройте сайт http://remix.ethereum.org и скопируйте-всавьте код нашего токена из первого урока. Во вкладке Settings  переключите версию Solidity на 0.4.21. А во вкладке Run в поле Environment выберите Javascript VM. В этом поле три варианта. Injected Web3 позволяет соединиться с Метамаском и задеплоить контракт в блокчейн с его помощью, а Web3 Provider позволяет подключиться к локальной ноде http://localhost:8545 или удаленной ноде.

Remix

Javascript VM — это виртуальная машина, эмулирующая реальный блокчейн Ethereum. В прошлом уроке мы взаимодействовали с функциями нашего уже задеплоенного в блокчейн контракта с помощью MyEtherWallet, здесь же мы можем взаимодействовать с контрактом без деплоя. Это облегчает тестирование контрактов и поиск ошибок.

Итак, при выборе Javascript VM в поле Account автоматически создаются пять адресов со 100 виртуальными Эфирами на каждом.

Скомпилируйте контракт во вкладке Compile и вернитесь во вкладку Run. Нажмите на красную кнопку Deploy.

Вы увидите что ниже появился список всех функций контракта — розовым цветом отмечены те функции, которые что-либо записывают в блокчейн (transact),  бледно-синим те, которые что-либо извлекают (call).

А также появился журнал событий (на сером фоне). В нем записываются подробности каждой транзакции.

Нажмите на name и увидите название токена. Нажмите на totalSupply и отобразится общее кол-во токенов (не забывайте про 18 нулей). И так далее.

Теперь давайте переведем 500 токенов на другой адрес. Переключитесь в поле Account на второй адрес и скопируйте его, затем переключитесь обратно на первый. В поле функции transfer вставьте адрес, поставьте запятую и пробел и введите 500 с 18 нулями. Получиться должно так:

Remix

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

Теперь можно поиграться с безопасностью. На втором аккаунте у нас 500 токенов. Давайте попробуем с него перевести на третий аккаунт 800 токенов, то есть количество, которого у нас нет. Переключитесь в поле Account на третий адрес, скопируйте его и переключитесь назад на второй. В поле transfer введите адрес и 800 с 18 нулями, жмите transfer. В журнале событий вы увидите сообщение об ошибке, при этом комиссия за транзакцию все равно спишется. В функции transfer у нас есть проверка этого:



 function transfer(address _to, uint256 _value) public returns (bool ) {
        require(_to != address(0));//проверить что адрес написан правильно
        require(balances[msg.sender] >= _value); //проверить что баланс отправителя больше или равен отправляемому кол-ву токнов
        balances[msg.sender] = balances[msg.sender] - _value; 
        balances[_to] = balances[_to] + _value; 
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

Строка require(_to != address(0)) проверяет что адрес соответствует eth-адресу, строка require(balances[msg.sender] >= _value) проверяет что на балансе отправителя больше или равно количеству отправляемых токенов. В старых версиях Solidity вместо require использовалась функция:

if(balances[msg.sender] < _value)
  throw;

То есть если баланс отправителя меньше отправляемого, то прекратить. Но такую запись упразнили.

Ошибки

Remix помогает нам отслеживать ошибки. Ошибки можно разделить на два типа: критические, из-за которых выполнение контракта невозможно (красные), и советы, помогающие оптимизировать контракт (оранжевые). Уберите точку с запятой в определении переменной uint256 totalSupply_; и заново скомпилируйте контракт. Это критическая ошибка, после которой выполнение контракта невозможно.

Remix

Видим крестик и совет на красном поле с предложением по исправлению.

Теперь верните точку с запятой назад, а в функции function totalSupply() public view returns (uint256) уберите модификатор view и снова скомпилируйте контракт.

Remix

Видим что Remix советует нам в этой функции использовать модификатор view. Функции с этим модификатором могут только просматривать данные, но ничего не изменять, при этом за просмотр газ не берется. Более подробно про модификаторы поговорим в следующих уроках. Ошибка не является критической, контракт с ней сможет работать.

Мы рассмотрели с вами основы работы в Remix. В следующих уроках по мере изучения Solidity рассмотрим как работать с несколькими файлами, импортировать файлы из Гитхаба и т.д.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 1 / 5. Количество оценок: 47

Оценок пока нет. Поставьте оценку первым.

Так как вы нашли эту публикацию полезной...

Подписывайтесь на нас в соцсетях!

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

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

https://aurus-diploms.com/geography/kupit-diplom-rostov-na-donu.html купить диплом колледжа https://diplomy-grup24.com/kupit-diplom-v-gorode/omsk.html https://premialnie-diplom24.com/купить-диплом-омск/ https://ru-diplomirovans.com/купить-диплом-омск https://lands-diplomix.com/goroda/orenburg.html https://frees-diplom.com/kupit-attestat/attestat-9-klassov купить свидетельство о рождении https://russiany-diplomans.com/kupit-diplom-sankt-peterburg https://radiplomy.com/kupit-diplomy-sssr