Топ питань
Часова шкала
Чат
Перспективи

Solidity

З Вікіпедії, вільної енциклопедії

Solidity
Remove ads

Solidity — об'єктно-орієнтована та предметно-орієнтована мова програмування[2] розумних контрактів для платформи Ethereum.

Коротка інформація Парадигма, Дата появи ...
Remove ads

Історія

Мова була запропонована в серпні 2014 року Гевіном Вудом[3]. Надалі розробка мови була виконана під керівництвом Крістіана Райтвизнера (Christian Reitwiessner) командою Solidity в рамках проєкту Ethereum. Це одна з чотирьох мов (три інші: Serpent, LLL і Mutan), спроєктованих для трансляції в байт-код віртуальної машини Ethereum. Отримала широке поширення з появою технологій блокчейну, зокрема стека технологій на основі Ethereum, для створення програмного забезпечення розумних контрактів.

Remove ads

Опис

Узагальнити
Перспектива

Solidity — статично типізована JavaScript-подібна мова програмування, створена для розробки розумних контрактів, які працюють на віртуальній машині Ethereum (EVM). Програми на мові Solidity транслюються в байткод EVM. Solidity дозволяє розробникам створювати самодостатні програми, що містять бізнес-логіку, результуючу в транзакційні записи блокчейну.

Використання синтаксису ECMAScript за задумом Вуда має допомогти прийняттю мови дійсними веброзробниками. Однак, на відміну від ECMAScript, мова отримала статичну типізацію змінних і динамічні типи значень. Порівняно з компільованими в такий же байт-код мовами Serpent і Mutan, мова Solidity має важливі відмінності. Підтримуються комплексні змінні контрактів, включаючи довільні ієрархічні відображення (mappings) і структури. Контракти підтримують спадкування, включаючи множинне і C3-лінеаризацію. Підтримується бінарний інтерфейс програмування (ABI), що має безліч типобезпечних функцій в кожному контракті (пізніше з'явився також і у Serpent). Специфікована система документування коду, для пояснення послідовності викликів, що отримала назву «Специфікації природною мовою Ethereum» (Ethereum Natural Format Specification).

Приклад програми на мові Solidity[4]:

contract GavCoin
{
  mapping(address=>uint) balances;
  uint constant totalCoins = 100000000000;

  /// Endows creator of contract with 1m GAV.
  function GavCoin(){
      balances[msg.sender] = totalCoins;
  }

  /// Send $((valueInmGAV / 1000).fixed(0,3)) GAV from the account of $(message.caller.address()), to an account accessible only by $(to.address()).
  function send(address to, uint256 valueInmGAV) {
    if (balances[msg.sender] >= valueInmGAV) {
      balances[to] += valueInmGAV;
      balances[msg.sender] -= valueInmGAV;
    }
  }

  /// getter function for the balance
  function balance(address who) constant returns (uint256 balanceInmGAV) {
    balanceInmGAV = balances[who];
  }

};
Remove ads

Доступні платформи розробки

Примітки

Посилання

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads