Об основах солидности вы можете прочитать в моей прошлой статье здесь 👇
Solidity-101 (часть 1)
Начнем
💜 ПЕРЕМЕННЫЕ
- У нас есть различные типы значений для хранения в программе, например, это может быть целое число, строка, символы, булевы и т.д.
- Существуют переменные для целого числа или беззнакового целого числа, мы можем добавить силу 2 после типа данных переменной, и это ограничит ее определенным значением.
- Переменными в solidity являются :
Целые числа
- Числа могут быть как отрицательными, так и положительными, но не десятичными.
int -> This is to tell solidity that we will store integer in this variable.
int8 -> This will store values from -2^8-1 to 2^8-1 i.e. -255 to 255.
int16 -> This will store values from -2^16-1 to 2^16-1 i.e. -65536 to 65536.
.
.
.
int256 -> This is the maximum integer value solidity store i.e. -2^256-1 to 2^256-1.
👉 Помните, что записать просто int или int256 — это одно и то же. По умолчанию int воспринимается как int256.
Беззнаковые целые числа
- Для чисел, которые будут только положительными, но не отрицательными или десятичными.
uint -> This is to tell solidity that we will store unsigned integer in this variable.
uint8 -> This will store values from 0 to 2^8-1 i.e. 0 to 255.
uint16 -> This will store values from 0 to 2^16-1 i.e. 0 to 65536.
.
.
.
uint256 -> This is the maximum integer value solidity store i.e. 0 to 2^256-1.
👉 Помните, что записать просто uint или uint256 — это одно и то же. По умолчанию int воспринимается как uint256.
👉 Это ограничено только целочисленными и беззнаковыми Integer.
💜 ОПРЕДЕЛЕНИЕ ПЕРЕМЕННОЙ
- Мы определяем переменную в solidity следующим образом.
<DATA_TYPE> <ACCESS IDENTIFIER> <VARIABLE NAME>
int8 private fav_num = -8;
uint16 public fav_num = 8;
bool internal is_fav_num = true;
string external word = "Hello";
address private contractAddress = 0x70997970C.......;
💜 СПЕЦИАЛЬНЫЙ ИДЕНТИФИКАТОР ДОСТУПА ДЛЯ ФУНКЦИЙ
- Эти идентификаторы доступа нужны только для того, чтобы сообщить EVM, как функция будет взаимодействовать с хранилищем.
PURE -> This means that it will not even access the storage.
VIEW-> This means that it will only access the storage but wont change anything.
💜 ПРИМЕР
address private i_owner;
uint256 public minimumUsd;
function getOwner() public view returns (address) {
return i_owner;
}
function getAddressToAmountFunded(address funder) public view returns (uint256) {
return s_addressToAmountFunded[funder];
}
💜 Итог
- Это делается потому, что мы хотим устранить нежелательное использование памяти.
- Поэтому, если мы знаем, что значения будут небольшими, мы можем использовать uint8, uint16… и т.д.
- Это делается для того, чтобы держать под контролем цены на газ.
- В зависимости от различных задач, EVM требует оплаты количества бензина. Поэтому, чтобы держать его под контролем, мы используем эти данные.
👉 Помните об использовании PURE или VIEW -> SPECIAL ACCESS IDENTIFIER, потому что они обозначают, что они говорят EVM, что у них очень ограниченная функциональность, и плата за газ будет взиматься в соответствии с этим.
Вот и все.
В следующей статье мы рассмотрим различные хранилища, структуры данных, которые мы в основном используем при написании SMART CONTRACT.
Здравствуйте, я Таниск Анпурна.
I post about 🚀web3, Blockchain, Ethereum 🐦Smart Contract, Solidity 🎉JavaScript, ReactJS, NodeJS Follow and like for more such posts. !!✌️!!