Шпаргалка по основам Solidity Complete

  • Что такое Solidity?

Это контрактно-ориентированный язык высокого уровня для реализации смарт-контрактов. Он был разработан под влиянием C++, JavaScript и Python и ориентирован на EVM.

  • Контракты

Контракты в Solidity похожи на классы в объектно-ориентированном языке.
Контракт может быть создан с помощью ключевого слова «new».

contract L {
function add(unit_p, unit_q) returns(unit){
return_p+_q;
}
}
contract M{
address p;
function f(unit_p){
p = new L();
}
}
Вход в полноэкранный режим Выход из полноэкранного режима
  • Интеллектуальные контракты

Это компьютерный протокол, который используется для упрощения процесса заключения контрактов путем цифрового принуждения, проверки и управления ими.

  • Remix, Solium & Doxity
- Remix: It is a browser based IDE with integrated compiler and solidity run-time environment without server side components.
Вход в полноэкранный режим Выход из полноэкранного режима
- Solium: A linter to identity and fix style security issues in solidity.
Войти в полноэкранный режим Выход из полноэкранного режима
- Doxity: Used in solidity as a documentation generator.
Войти в полноэкранный режим Выход из полноэкранного режима
  • Солограф и сборка
- Solograph: Used to visualize solidity control flow and highlight potential security vulnerabilities.
Войти в полноэкранный режим Выйти из полноэкранного режима
- Solidity Assembly: An assembly language which is used without solidity & inline assembly inside solidity source code.
Войти в полноэкранный режим Выйти из полноэкранного режима
  • Газ & Предел блокировки газа
- Gas: A measurement roughly equivalent to the computational steps.
Войти в полноэкранный режим Выйти из полноэкранного режима
- Block Gas limit: It is used to control the amount of gas consumed during the transactions.
Войти в полноэкранный режим Выход из полноэкранного режима
  • Компилятор Solidity
        Contract Definition
                |
         Solidity Compiler
                |
      Byte code - Application Binary Interface (ABI)
Войти в полноэкранный режим Выход из полноэкранного режима
  • ABI & WEI
- ABI: A data encoding scheme called "Application Binary Interface" (ABI) is used in for working with smart contracts.
Войти в полноэкранный режим Выйти из полноэкранного режима
- WEI: The smallest denomination or base unit of Ether.
Войти в полноэкранный режим Выход из полноэкранного режима
  • Глобальные переменные
- block.blockhash(uint numberOfBlock)returns(bytes32): hash function of the given block which works for the 256 most recent blocks excluding the current block.
Ввод полноэкранного режима Выход из полноэкранного режима
- block.coinbase(address): shows miner's address of current block.
Ввести полноэкранный режим Выход из полноэкранного режима
- block.numer(uint): number of current block.
Ввести полноэкранный режим Выход из полноэкранного режима
- block.gaslimit(uint): gaslimit of the current block.
Войти в полноэкранный режим Выход из полноэкранного режима
- block.timestamp(uint): timestamp of current block.
Войти в полноэкранный режим Выход из полноэкранного режима
- msg.gas(uint): the gas that remains.
Войти в полноэкранный режим Выход из полноэкранного режима
- msg.value(uint): the amount of WEI sent along with the message.
Войти в полноэкранный режим Выход из полноэкранного режима
- msg.sender(address): address of the message sender(current call).
Войти в полноэкранный режим Выход из полноэкранного режима
- msg.sig(bytes4): first four bytes of the call data.
Войти в полноэкранный режим Выход из полноэкранного режима
- now (uint): timestamp for the current block..
Войти в полноэкранный режим Выход из полноэкранного режима
- tx.origin(address): the sender of the transaction(whole call chain).
Войти в полноэкранный режим Выход из полноэкранного режима
  • Pragma
Used to specify certain conditions under which the source files can or cannot run.
Войти в полноэкранный режим Выход из полноэкранного режима
Example:
- pragma solidity ^0.8.15
       This code compiles with a compiler function >=0.8.15
- A pseudocode example for pragma syntax
       'pragma' Identifier([^;]+)';'
Ввести полноэкранный режим Выход из полноэкранного режима
  • Интерфейс
Interface in solidity are defined as contractsm but the function bodies are omitted for the functions.
Example:
pragma solidity ^0.22
interfaceToken
{
       function transfer(address recipient, uint amount);
}
Войти в полноэкранный режим Выход из полноэкранного режима
  • Типы данных
- Boolean:
true or false
Logical:!(Logical negation), && (AND), || (OR)
Comparisons:==(equality),!=(inequality)
Вход в полноэкранный режим Выйти из полноэкранного режима
- Integer: Unsigned Integer, and Signed integer Comparisons:<=(Less than or equal to), <(Less than),==(equal to),!=(Not equal to),>=(Greater than or equal to),>(Greater than) Arithmetic Operators: + (Addition), - (Subtraction), Unary —, Unary +, * (Multiplication), / (Division), ** (Exponential), << (Left shift), >>(Right shift)
Войти в полноэкранный режим Выход из полноэкранного режима
- Address: Holds an Ethereum address(20 byte value).
Operators: Comparisons: <=, <, ==, !=, >= and >
Balance:
- <address>.balance(uint256): balance of address in WEI
Transfer and send:
- <address>. transfer(uint256 amount): send given amount of Wei to Address, throws on failure.
- <addres>.send(uint256 amount)returns(bool): send given amount of Wei to Address, returns false on failure.
Войти в полноэкранный режим Выход из полноэкранного режима
  • Глобальные функции:
- keccak256(...)returns(bytes32)-computes the ethereum SHA-3 hash associated with the arguments.
Войти в полноэкранный режим Выход из полноэкранного режима
- SHA256(..)returns(bytes32) — Computes the SHA-256 argument hash.
Ввод полноэкранного режима Выход из полноэкранного режима
- mulmod( uint a, uint b, uint c)returns(uint): It computes (a*b)/c, if the multiplication gets executed using arbitrary precision, thus not wrapping around 2**256
Вход в полноэкранный режим Выход из полноэкранного режима
- addmod(uint p, unint q, uint m)returns(uint): Computes (p+q)/m
Войти в полноэкранный режим Выход из полноэкранного режима
- ecrecover(bytes32 _hash, uint8 _v, bytes32 _r, bytes32 _s)
returns (address): recovers the address linked with the public key and if an error occurs, zero is returned.
Войти в полноэкранный режим Выход из полноэкранного режима
- ripemd160(...)returns(bytes20): computes the RIPEMD-160
(tightly packed) argument hash.
Войти в полноэкранный режим Выход из полноэкранного режима
- <address>.balance(uint256): Returns the balance of the specified address in WEI.
Войти в полноэкранный режим Выход из полноэкранного режима
- <address>.send(uint256 amount)returns(bool): It sends the specified number of WEI to the address given, on failure it returns false as an output.
Войти в полноэкранный режим Выход из полноэкранного режима
- <address>.transfer(uint256 amount): Sends specified number of WEI to the particular address, on failure throws.
Войти в полноэкранный режим Выход из полноэкранного режима
  • Модификаторы доступа:
- Public: Accessible from the current contract, inherited contracts externally.
Войти в полноэкранный режим Выход из полноэкранного режима
- Private: Accessible only form the current contract.
Войти в полноэкранный режим Выход из полноэкранного режима
- Internal: Accessible only from current contract and contracts inheriting from it.
Войти в полноэкранный режим Выход из полноэкранного режима
- External: Can be accessed externally only.
Войти в полноэкранный режим Выход из полноэкранного режима
  • Важные условия
- Voting: When the contract is quiet complex, it uses voting contract, it shows how delegated voting can be done so that vote counting is automatic and completely transparent at the same time.
Войти в полноэкранный режим Выход из полноэкранного режима
- Delegate call: It is a reusable library code that can be applied to a contracts storage in solidity.
Ввести полноэкранный режим Выход из полноэкранного режима
- Logs: A feature called logs is used in solidity to implement events.
Ввести полноэкранный режим Выход из полноэкранного режима
- NPM: It is a convenient and portable way to install Solidity compiler.
Войти в полноэкранный режим Выход из полноэкранного режима
- Truffle: It is a test bed that will allow to easily test and compile the smart contract.
Войти в полноэкранный режим Выход из полноэкранного режима
- Inheritance: In solidity inheritance is more syntactic. In the final compilation the compiler copies the parent class members to create the byte-code of the derived contract with the copied members.
Войти в полноэкранный режим Выход из полноэкранного режима
- This: This is a keyword that refers to the instance of the contract where the call is made.
Войти в полноэкранный режим Выход из полноэкранного режима
- msg.sender: This function refers to the address where the contract is being called from.
Войти в полноэкранный режим Выход из полноэкранного режима
- Pure: It is a modifier which assures not to be read from or modified.
Войти в полноэкранный режим Выход из полноэкранного режима
- View: In solidity, view is a function that promises to not modify the state of the smart contract.
Войти в полноэкранный режим Выход из полноэкранного режима
- Suicide: It is a alias for self destruct function, that is used to destroy the current contract.
Войти в полноэкранный режим Выход из полноэкранного режима
- Delete: Delete is used to delete all elements in an array.
Войти в полноэкранный режим Выход из полноэкранного режима
- Block.coinbase(address): It refers to the minter's address of the current block.
Войти в полноэкранный режим Выход из полноэкранного режима
- Address(contractVar).send(amount): If a built-in send function needs to be used, it can be accessed using this function.
Войти в полноэкранный режим Выход из полноэкранного режима
- Super: It is used to refer the contract that is higher by one level in the inheritance hierarchy.
Войти в полноэкранный режим Выход из полноэкранного режима
  • Пример транзакции

I hope this can be of service to you ❤️
Any feedback is welcome :)
Войти в полноэкранный режим Выход из полноэкранного режима

tw: @_luisald
сайт: Луис Лусена

Оцените статью
devanswers.ru
Добавить комментарий