Вы можете прочитать мою предыдущую статью о составлении смарт-контракта здесь 👇
Составление смарт-контракта
Давайте начнем
💜 ПЕРЕМЕННЫЕ
- Переменные — это элементы данных, которые определяются для хранения различных значений во время выполнения программы.
- У нас есть различные типы значений для хранения в программе, например, это может быть целое число, строка, символы, булево и т.д.
- Переменными в Solidity являются :
Целые числа
- Числа могут быть как отрицательными, так и положительными, но не десятичными.
int -> This is to tell solidity that we will store integer in this variable.
Беззнаковые целые числа
- Числа могут быть только положительными, но не отрицательными и не десятичными
uint -> This is to tell solidity that we will store only positive integer in this variable.
Булевы
- Истина или ложь
bool -> This is to tell solidity that we will store true or false in this variable.
Строка
- Комбинация символов. Это может быть слово, предложение и т.д.
string-> This is to tell solidity that we will store combination of characters in this variable.
Адрес
- Это особый тип данных, который используется в смарт-контрактах. Поскольку EVM имеет шестнадцатеричное уникальное значение для каждого счета или смарт-контракта. Мы называем их адресами, поскольку EVM будет взаимодействовать со счетом/контрактом, используя адрес.
address-> This is to tell solidity that we will store Address in this variable.
💜 ИДЕНТИФИКАТОР ДОСТУПА
- Идентификатор доступа означает, что мы можем решить, кто может получить доступ к переменным/функциям или чему-либо в смарт-контракте.
- В целях безопасности нам необходимо ограничить доступ. Мы делаем это с помощью идентификатора доступа.
PUBLIC -> This means that it can be accessed from anywhere, anyone can access it. No Restrictions.
PRIVATE -> This means that it can only be accessed from the contract in which its present. No contract/account from outside the contract can access it. Although they can see it but can not be accessed.
INTERNAL -> This means that no outside contract/accounts can access it. It can be accessed from within and contract's children i.e. Contracts inherited from this contract can access it. This is the default identifier i.e. If no access identifier is provided, EVM assumes this access identifier.
EXTERNAL -> This means that only external contracts/accounts can access it. if we need to use it internally then we have to use "this" keyword.
💜 ОПРЕДЕЛЕНИЕ ПЕРЕМЕННОЙ
- Мы определяем переменную в solidity следующим образом.
<DATA_TYPE> <ACCESS IDENTIFIER> <VARIABLE NAME>
int private fav_num = -8;
uint public fav_num = 8;
bool internal is_fav_num = true;
string external word = "Hello";
address private contractAddress = 0x70997970C.......;
👉 Помните, мы также можем опустить идентификатор доступа, и EVM по умолчанию примет внутренний идентификатор доступа.
👉 Помните, всегда старайтесь использовать имя переменной как самоочевидное.
👉 Помните, мы используем » » для определения строк и ; для завершения любого синтаксиса.
💜 СПЕЦИАЛЬНЫЙ ИДЕНТИФИКАТОР ДОСТУПА ДЛЯ ФУНКЦИЙ
- Эти идентификаторы доступа просто указывают 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.
💜 ОПРЕДЕЛЕНИЕ ФУНКЦИЙ
- Мы определяем функцию в solidity следующим образом.
function <FUNCTION_NAME> <ACCESS IDENTIFIER> <SPECIAL ACCESS IDENTIFIER(OPTIONAL)> returns(<DATA_TYPE>){}
function func_name public pure returns(uint){}
function func_name2 private view returns(string){}
👉 Помните, мы также можем опустить специальный идентификатор доступа.
👉 Помните, всегда старайтесь использовать имя функции как самоочевидное.
💜 ПРИМЕР
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];
}
Вот и все.
В следующей статье мы рассмотрим, зачем нужны специальные идентификаторы доступа, как мы можем добавить эти переменные и использовать пространство более эффективно.
Здравствуйте, я Таниск Анпурна
I post about 🚀web3, Blockchain, Ethereum 🐦Smart Contract, Solidity 🎉JavaScript, ReactJS, NodeJS Follow and like for more such posts. !!✌️!!