0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: примеры, solidity, контракты</p>
1
<p>Теги: примеры, solidity, контракты</p>
2
<p>Мы уже говорили о том,<a>что такое Solidity и когда этот язык используется</a>. Теперь давайте приведем ряд примеров. Один из примеров --<strong>хранилище</strong>.</p>
2
<p>Мы уже говорили о том,<a>что такое Solidity и когда этот язык используется</a>. Теперь давайте приведем ряд примеров. Один из примеров --<strong>хранилище</strong>.</p>
3
<h2>Пример хранилища</h2>
3
<h2>Пример хранилища</h2>
4
<p>Здесь<strong>uint storedData</strong>объявляет переменную состояния, которая названа<strong>storedData</strong>типа uint (беззнаковое целое значение, 256 бит). Позиция переменной определяется компилятором автоматически. Задействованные функции<strong>set</strong>и<strong>get</strong>применяются в целях получения значения переменной и ее изменения.</p>
4
<p>Здесь<strong>uint storedData</strong>объявляет переменную состояния, которая названа<strong>storedData</strong>типа uint (беззнаковое целое значение, 256 бит). Позиция переменной определяется компилятором автоматически. Задействованные функции<strong>set</strong>и<strong>get</strong>применяются в целях получения значения переменной и ее изменения.</p>
5
<h2>Пример подвалюты</h2>
5
<h2>Пример подвалюты</h2>
6
<p>Настоящий контракт раскрывает нам ряд новых понятий. Одно из этих понятий -- тип<strong>address</strong>-а, который является 160-битовым значением, не позволяющим арифметические операции. Вдобавок к этому, тип переменной состояния<strong>balances</strong>, отображающий адреса на целые беззнаковые числа. По сути, отображения можно представить в виде хэш-таблицы, причем она виртуально инициализирована так, чтобы каждый потенциально возможный ключ существовал и отображался в значении, байт-представление которого -- нули.</p>
6
<p>Настоящий контракт раскрывает нам ряд новых понятий. Одно из этих понятий -- тип<strong>address</strong>-а, который является 160-битовым значением, не позволяющим арифметические операции. Вдобавок к этому, тип переменной состояния<strong>balances</strong>, отображающий адреса на целые беззнаковые числа. По сути, отображения можно представить в виде хэш-таблицы, причем она виртуально инициализирована так, чтобы каждый потенциально возможный ключ существовал и отображался в значении, байт-представление которого -- нули.</p>
7
<p>Идем дальше. Специальная функция<strong>Coin</strong>-- это конструктор, выполняемый в процессе создания контракта, причем эту функцию впоследствии вызывать нельзя. Хранит она адрес лица, который создает договор вместе с<strong>tx</strong>и<strong>block</strong>, что касается<strong>msg</strong>, то она является волшебной глобальной переменной, включающей в себя ряд свойств, предоставляющих доступ к миру уже за пределами контракта. Функция<strong>queryBalance</strong>объявляется в качестве постоянной, в результате чего изменение состояния контракта не позволяется (но учтите, что это не принудительно).</p>
7
<p>Идем дальше. Специальная функция<strong>Coin</strong>-- это конструктор, выполняемый в процессе создания контракта, причем эту функцию впоследствии вызывать нельзя. Хранит она адрес лица, который создает договор вместе с<strong>tx</strong>и<strong>block</strong>, что касается<strong>msg</strong>, то она является волшебной глобальной переменной, включающей в себя ряд свойств, предоставляющих доступ к миру уже за пределами контракта. Функция<strong>queryBalance</strong>объявляется в качестве постоянной, в результате чего изменение состояния контракта не позволяется (но учтите, что это не принудительно).</p>
8
<p>Также стоит добавить, что в языке программирования<strong>Solidity</strong>возвращаемые параметры проименованы, то есть, по сути, создают локальную переменную. Это значит, что для возврата баланса можно просто использовать<strong>balance = balances[addr];</strong>без<strong>return</strong>. Ну а такие события, как<strong>Send</strong>, дают возможность внешним клиентам осуществлять в блокчейне более эффективный поиск.</p>
8
<p>Также стоит добавить, что в языке программирования<strong>Solidity</strong>возвращаемые параметры проименованы, то есть, по сути, создают локальную переменную. Это значит, что для возврата баланса можно просто использовать<strong>balance = balances[addr];</strong>без<strong>return</strong>. Ну а такие события, как<strong>Send</strong>, дают возможность внешним клиентам осуществлять в блокчейне более эффективный поиск.</p>
9
<p>Хотите знать про Solidity больше? Добро пожаловать<a>на специализированный курс</a>в Otus!</p>
9
<p>Хотите знать про Solidity больше? Добро пожаловать<a>на специализированный курс</a>в Otus!</p>
10
<p><em>По материалам https://ru.wikipedia.org/wiki/Solidity и https://github.com/ethereum/.</em></p>
10
<p><em>По материалам https://ru.wikipedia.org/wiki/Solidity и https://github.com/ethereum/.</em></p>
11
11