Нараян Прасти



Download 9,22 Mb.
Pdf ko'rish
bet23/47
Sana26.02.2022
Hajmi9,22 Mb.
#472912
1   ...   19   20   21   22   23   24   25   26   ...   47
Bog'liq
Прасти Н. - Блокчейн. Разработка приложений - 2018


Глава 3 
____________________________________ 
[ 66 ] 
___________________________________ 
При помощи директивы 
pragma Solidity
можно указать, для какой версии компиля-
тора предназначен исходный код. Например, рассмотрим такую строку: 
pragma Solidity ^0.4.2; 
Теперь исходный код не может быть обработан компилятором с версией раньшей, 
чем 0.4.2, а также будет отвергнут компиляторами, начиная с версии 0.5.0 (на это 
указывает символ 
^
). Версии компиляторов в диапазоне с 0.4.2 по 0.5.0, скорее все-
го, будут включать только исправления ошибок, а не существенные изменения. 
Существует возможность задать более сложные правила использования компи-
лятора.
Структура смарт-контракта 
Контракт похож на класс. Он содержит статические переменные, функции, моди-
фикаторы функций, события, структуры и перечисления. Контракт также поддер-
живает наследование, которое осуществляется копированием кода при компиля-
ции. Смарт-контракты также поддерживают полиморфизм. 
Давайте рассмотрим пример смарт-контракта, чтобы получить представление 
о том, как он выглядит (листинг 3.1). 
Листинг 3.1. Пример смарт-контракта 
contract Sample 

//статические 
переменные 
uint256 
data; 
address 
owner; 
//определение 
события 
event 
logData(uint256 
dataToLog); 
//модификатор 
modifier onlyOwner() { 
if (msg.sender != owner) throw; 
_; 

//конструктор 
function Sample(uint256 initData, address initOwner){ 
data 

initData; 
owner 

initOwner; 



Разработка 
смарт-контрактов 
____________________________________ 
[ 67 ] 
___________________________________ 
//функции 
function getData() returns (uint256 returnedData){ 
return 
data; 

function setData(uint256 newData) onlyOwner{ 
logData(newData); 
data 

newData; 


Поясним, как работает код из листинга 3.1: 
1.
Мы объявляем контракт при помощи ключевого слова 
contract

2.
Затем объявляем две статические переменные: переменная 
data
хранит некото-
рые данные, а переменная 
owner
— адрес бумажника Ethereum Wallet владельца. 
Это адрес, по которому будет развернут контракт. 
3.
Далее мы объявляем событие. События нужны для уведомления клиента о чем-
либо. Мы будем запускать событие каждый раз, когда меняется значение 
data

Все события хранятся в блокчейне. 
4.
Затем мы объявляем модификатор функции. Модификаторы применяются для 
автоматической проверки условия перед выполнением функции. В данном слу-
чае модификатор проверяет, ссылается ли владелец контракта на функцию. Если 
нет, это порождает исключение. 
5.
Далее у нас расположен конструктор контракта. При развертывании контракта 
вызывается конструктор. Конструктор служит для инициализации переменных 
состояния. 
6.
Наконец, мы определяем два метода: первый метод получает значение перемен-
ной 
data
, а второй — изменяет значение этой переменной. 
Прежде, чем мы погрузимся в изучение функций смарт-контрактов, следует рас-
смотреть несколько других важных понятий, имеющих отношение к Solidity. А за-
тем мы снова вернемся к контрактам. 
Расположение данных 
Все языки программирования, которые вы когда-либо изучали, хранят данные
в памяти. Но Solidity хранит данные в памяти, а файловую систему — в зависимости 
от ситуации. 
В зависимости от контекста, всегда есть расположение по умолчанию. Но для 
сложных типов данных, таких как строки, массивы и структуры, его можно переоп-
ределить в явном виде, добавив к объявлению типа ключевое слово 
storage
или 
memory
. По умолчанию для параметров функции (включая возвращаемые парамет-


Download 9,22 Mb.

Do'stlaringiz bilan baham:
1   ...   19   20   21   22   23   24   25   26   ...   47




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish