April 6, 2023

Вызов смартконтрактов для нубиков

Все свапалки, мосты, монеты, NFT и прочее - это контракты.

У контрактов есть функции, которые можно вызывать.

Функции бывают читающие(Read) блокчейн и изменяющие(Write) его.

Читающие(Read) функции просто просматривают блокчейн и выдают тебе информацию с ближайжего сервера не отправляя транзакции в блокчейн

Изменяющие(Write) это все те что ты подписываешь в метамаске и платишь за них газ

Для примера возьмем контракт USDT в сети BSC - https://bscscan.com/token/0x55d398326f99059ff775485246999027b3197955?#readContract

Ниже я вызвал функцию проверки баланса кошелька(balanceOf) вставив свой адрес

И как видно контракт выдал 1318538214630821927122, но это значение в WEI - в минимальной единице смартконтрактов, чтоб перевести в нормальную единицу(ETH) нужно поделить на 10^18, но бск скан позаботился об этом и надо всего то нажать на число и перекинет на калькулятор

Мой USDT балик

А теперь приведу пример вызова Write функции контракта, перекину сам себе 0 USDT (да так можно). Только подключите перед этим кошелек к бскскану, я выделил под цифрой 3

И еще на будущее если будете отправлять транзакцию таким образом то количество сначала из ETH переведите в WEI в этом калькуляторе

А вот и сама транзакция - https://bscscan.com/tx/0x62cf9adfd9d0941d70b99befd2fa8249f610f81edaa515e2ef37b98b008f3a60

Перевод 0 USDT сам себе

А снизу транзы показано что была вызвана функция transfer с параметрами адрес и количество в нормально читаемом виде, но если бы создатели USDT не верифицировали контракт и не закинули код в бскскан, то там бы была каша из символов и тогда скорее всего бы я не смог вызвать функцию через бск скан

Вот например как выглядит эта транзакция в оригинале как ее отправляет метамаск. 0x означает что дальше идет число в 16ой системе счисления, затем 8 бит под название функции и 64 под адрес и количество

Оригигинальные данные транзкции

Все контракты плюс минус одинаковые и сделаны почти из одних и тех же функций. Контракты тупо копипастят или собирают как конструктор из готовых функций на https://www.openzeppelin.com/contracts

Воспринимать смартконтракты монет стоит как ексель с столбцами кто сколько имеет у себя монет, кто кому сколько монет апрувнул и тому подобное

Ещё хотел чучуть затронуть стандарты монет ERC 20, 721, 1155. Чтоб монета считалась ERC20 ей нужно иметь обязательный набор функций по типу перевода с аккаунт на акаунт и возможность апрувнуть, у erc721 и 1155 тоже самое и еще другие функции, если у контракта чего то нет, то это уже получается другой стандарт, и этих стандартов на самом деле куча, просто популярны эти 3 и их вариации

Надеюсь теперь у вас больше знаний чем нихуя и если хотите продолжить изучать смарт контракты, то советую этих типов
https://t.me/ortomich_dev
-
https://t.me/ak74lab

Кста обязательно не лайкайте и не делитесь

Донатить сюда
Статья написана hobotilo для Хоботильни