Принцип работы смартконтрактов Erc-20. По-русски
EthereumTokenCreator PragmaSolidity:
Общий принцип у смартконтрактов ERC-20 - это создание массивов, данные в которых через mapping ассоциированы с адресами блокчейна ETH. Например массив балансов: числа от 0 до 2 в степени 512 могут быть ассоциированны с адресами, актуальными владельцами монет (токенов).
То есть в блокчейне зафиксировано актуальное состояние порожденных смартконтрактом балансов монет.
Изменить состояния можно отправив сообщение в блокчейн, например о том, что данное количество токенов данного смартконтракта будет переписано с одного адреса в блокчейне Ethereum на другой адрес. Т.е. произведена транзакция. Как только майнеры добудут новый блок, изменятся количества балансов на этих адресах.
В смартконтакте прописано как именно работает математика системы. Например если к имеющимся балансам добавить еще монет, то в результате будет сумма, большая первоначальной именно на сумму добавленного.
Если отнять, то например уменьшается. И математика может быть любой. И даже разной для разных адресов.
В контракте по-хорошему должны быть проверки, чтобы нельзя было снять с адресов токенов больше, чем их там есть, проверки на случаи,чтобы значение баланса никак не могло оказаться ниже нуля (в этом случае, если нет проверки, будет не минус на балансе, а числовой максимум это обычно 2 в степени 512, а если к этому числу прибавить выше максимума,то произойдет переполнение, скатится опять к единицам).
От таких казусов я всегда включаю в смартконтракты всевозможные проверки.
Также в смартконтракте прописана логика транзакций, например можно прописать чтобы при отправке х токенов, получатель получил x-10%, а у отправителя снялось x токенов. И эти 10% ушли куда-то, на какой то адрес, или сгорели.
Или наоборот, получатель получил х+10%, а у отправителя снялось х токенов. И тд, можно придумать любую финансовую логику.
У erc-20 обязательными являются значения decimals, - это минимальная дробная единица токена. Например одна стомилионная как у биткоина.
Индикативное значение total supply дает возможность обозревателям сразу видеть общее количество токенов в обороте. Тут тоже можно применить любую логику, например балансы на некоторых адресах (обычно это 0х0) не учитывать в total supply.
Обычно в erc-20 добавляют массив allowance. Это числовой массив тоже как и массив балансов - цифры от 0 до 2^512. Служит как чековая книжка, тут отображаются значения доверенных другими адресами балансов, доступных для транзакций конкретно этим адресом за счет балансов доверившихся адресов.
Тоже обязательны проверки, чтобы нельзя было ни при каких условиях потратить больше, чем есть.
Стандартный базовый ERC-20 смартконтракт создает 2 массива: балансы токенов на адресах и баланс доверяемых другими адресами токенов.
Также всегда в стандартном ERC-20 смартконтракте задается Имя Токена, краткое имя и значение decimals.
Роман Ланской
Разработчик
26 июня 2018, Kuala-Lumpur