Як працює Sui?
Last updated
Last updated
Цей документ має дві головні цілі: по-перше, він надає огляд Sui на високому рівні, представляючи його основні функції та варіанти дизайну. Потім він порівнює Sui з існуючими блокчейнами, дозволяючи потенційним користувачам вирішити, чи підходить Sui для їхніх випадків використання.
Цей документ написано для інженерів, розробників і технічних читачів, які знають криптопростір. Це не передбачає глибоких знань мови програмування чи розподілених систем. Перегляньте , щоб отримати більш детальне пояснення того, як працює Sui. Перегляньте, чим Sui відрізняється від інших блокчейнів, щоб отримати детальний огляд відмінностей у підході між Sui та іншими блокчейн-системами.
Блокчейн Sui працює зі швидкістю та масштабом, які раніше вважалися неймовірними. Sui припускає, що типова транзакція блокчейну є простим переказом і оптимізує для цього використання. Sui робить це, роблячи кожен запит ідемпотентним, утримуючи мережеві з’єднання відкритими довше та забезпечуючи миттєве завершення транзакцій. Sui оптимізує об’єкти з одним записом, дозволяючи дизайн, який уникає консенсусу для простих транзакцій.
Замість традиційної трансляції типу «запусти й забудь» у традиційному блокчейні Sui забезпечує двостороннє рукостискання між запитувачем і валідаторами, що підтверджують, при цьому прості транзакції майже миттєво завершуються. Завдяки такій низькій затримці транзакції можна легко включити в ігри та інші налаштування, які потребують завершення в режимі реального часу. Крім того, Sui підтримує смарт-контракти, написані мовою Move, розробленою для блокчейнів із високою внутрішньою безпекою та більш зрозумілою моделлю програмування.
У світі, де вартість пропускної здатності неухильно знижується, ми створюємо екосистему послуг, за допомогою яких буде легко, весело та, можливо, вигідно забезпечити голосування за транзакції від імені користувачів.
Ознайомтеся з цими ключовими концепціями Sui:
Об’єкти – Sui має програмовані об’єкти, створені та керовані за допомогою пакетів Move (так званих смарт-контрактів). Самі пакети Move також є об'єктами. Таким чином, об’єкти Sui можна розділити на дві категорії: змінні значення даних і незмінні пакети.
Транзакції – усі оновлення в бухгалтерській книзі Sui відбуваються через транзакцію. У цьому розділі описано типи транзакцій, які підтримує Sui, і пояснено, як їх виконання змінює реєстр.
Валідатори - мережа Sui керується набором незалежних валідаторів, кожен з яких запускає власний екземпляр програмного забезпечення Sui на окремій машині (або сегментованому кластері машин, керованих однією організацією).
Sui — це розподілена книга, яка зберігає колекцію програмованих об’єктів, кожен з яких має глобально унікальний ідентифікатор. Кожен об’єкт належить одній адресі, і кожна адреса може володіти довільною кількістю об’єктів.
Книга оновлюється через транзакцію, надіслану з певної адреси. Транзакція може створювати, знищувати та записувати об’єкти, а також передавати їх на інші адреси.
Структурно транзакція містить набір посилань на вхідні об’єкти та вказівник на об’єкт коду переміщення, який уже існує в реєстрі. Виконання транзакції створює оновлення для вхідних об’єктів і (якщо застосовно) набору щойно створених об’єктів разом із їхніми власниками. Транзакція, відправником якої є адреса A, може приймати об’єкти, що належать A, спільні об’єкти та об’єкти, що належать іншим об’єктам у перших двох групах, як вхідні дані.
Цей розділ написано для технічної аудиторії, яка бажає отримати більше інформації про те, як Sui досягає своїх основних цілей у продуктивності та безпеці.
Sui припускає, що типова транзакція блокчейну є передачею від користувача до користувача або маніпулюванням активами, і оптимізує для цього сценарію. Як наслідок, Sui розрізняє два типи активів (i) об’єкти власності, які може змінювати лише конкретний власник, і (ii) спільні об’єкти, які не мають конкретних власників і можуть бути змінені кількома користувачами. Це розрізнення дозволяє досягти дуже низької затримки в дизайні, який відмовляється від консенсусу для простих транзакцій, що включають лише власні об’єкти.
Оскільки Sui зосереджується на управлінні окремими об’єктами, а не на одній агрегації стану, він також звітує про них унікальним способом: (i) кожен об’єкт у Sui має унікальний номер версії, і (ii) кожна нова версія створюється з транзакції. які можуть включати декілька залежностей, які самі є версійними об’єктами.
Як наслідок, валідатор Sui – або будь-яка інша сутність із копією стану – може демонструвати причинно-наслідкову історію об’єкта, показуючи його історію з часів генезису. Sui явно робить ставку на те, що в багатьох випадках упорядкування цієї причинної історії з причинною історією іншого об’єкта не має значення; і в тих небагатьох випадках, коли ця інформація доречна, Sui робить цей зв’язок явним у даних.
Евентуальна доставка – якщо один чесний валідатор обробляє транзакцію, усі інші чесні валідатори зрештою зроблять те саме.
Конвергенція - два валідатори, які бачили той самий набір транзакцій, мають однакове уявлення про систему (досягають одного стану).
Але на відміну від блокчейну, Sui не зупиняє потік транзакцій, щоб спостерігати конвергенцію.
Sui додатково розширює цей підхід до більш залучених транзакцій, які можуть явно залежати від кількох елементів під контролем їх відправника, використовуючи об’єктну модель Move і сильну модель власності Move. Вимагаючи, щоб залежності були явними, Sui застосовує багатоканальний підхід до перевірки транзакцій, гарантуючи, що ці незалежні потоки транзакцій можуть просуватися без перешкод з боку інших.
Sui перевіряє транзакції окремо, а не групує їх у традиційні блоки. Ключовою перевагою цього підходу є низька затримка; кожна успішна транзакція швидко отримує сертифікат завершеності, який доводить будь-кому, що транзакція буде оброблена мережею Sui.
Таким чином, процес подання транзакції Sui є трохи складнішим, ніж у традиційних блокчейнах. У той час як звичайний блокчейн може прийняти купу транзакцій від одного автора в режимі «запусти і забудь», подання транзакцій Sui виконується за такими кроками:
Відправник транслює трансакцію всім валідаторам Sui.
Кожен валідатор Sui відповідає окремим голосом за цю транзакцію. Кожен голос має певну вагу залежно від частки, якою володіє валідатор.
Відправник збирає стійку до Візантії більшість цих голосів у сертифікат і передає його всім валідаторам Sui. Це розраховує транзакцію, гарантуючи остаточність, що транзакція не буде відмінена (скасована).
За бажанням відправник отримує сертифікат із детальним описом наслідків транзакції.
Хоча ці кроки вимагають більше від відправника, їх ефективне виконання все одно може дати криптографічний доказ остаточності з мінімальною затримкою. Окрім створення самої вихідної транзакції, керування сеансом для транзакції не вимагає доступу до будь-яких закритих ключів і може бути делеговано третій стороні. Sui використовує це спостереження, щоб надати послуги Sui Gateway.
Транзакції, що стосуються спільних об’єктів, також містять принаймні один об’єкт власності для оплати газу. Таким чином, важливо ретельно скласти протокол, що має справу з об’єктами, що належать, з протоколом, який визначає послідовність транзакцій, щоб гарантувати властивості безпеки Sui. Якщо задіяні спільні об’єкти, подання транзакції виконується за такими кроками:
Відправник транслює трансакцію всім валідаторам Sui.
Кожен валідатор Sui відповідає окремим голосом за цю транзакцію. Кожен голос має певну вагу залежно від частки, якою володіє валідатор.
Відправник збирає стійку до Візантії більшість цих голосів у сертифікат і передає його назад усім валідаторам Sui. Однак цього разу свідоцтво оформлено через візантійську угоду.
Після того, як транзакція успішно завершена, користувач знову передає сертифікат валідаторам для врегулювання транзакції.
Як згадувалося, Sui не накладає повного порядку на транзакції, що містять лише об’єкти власності. Натомість транзакції впорядковуються причинно. Якщо транзакція T1 створює вихідний об’єкт O1, який використовується як вхідні об’єкти в транзакції T2, валідатор повинен виконати T1 перед виконанням T2. Зверніть увагу, що T2 не обов’язково використовувати ці об’єкти безпосередньо для існування причинно-наслідкового зв’язку, наприклад, T1 може створювати вихідні об’єкти, які потім використовує T3, а T2 може використовувати вихідні об’єкти T3. Однак транзакції без причинно-наслідкового зв’язку можуть оброблятися валідаторами Sui у будь-якому порядку. Це розуміння дозволяє Sui масово розпаралелювати виконання та розподіляти його між кількома машинами.
Модель Sui заохочує третіх сторін допомагати з поданням транзакцій. Наприклад, якщо розробник програми (наприклад, розробник ігор) має багато користувачів, вони можуть керувати накопиченням голосів і поданням сертифікатів від імені своїх користувачів. Розробник програми може використовувати власні сервери (наприклад, де вони зберігають стан гри) для запуску служби Sui Gateway. Ми надаємо еталонну реалізацію такої послуги.
Замість того, щоб користувачі програми намагалися надсилати транзакції до кількох валідаторів зі свого мобільного пристрою, що може погіршити взаємодію з користувачем, користувачі можуть надсилати свої транзакції в програму, яка пересилає їх до служби Sui Gateway, керованої розробником програми. Сервіс Sui Gateway проводить весь сеанс транзакцій і повертає результати користувачам. Безпека гарантована, оскільки програмі не потрібно знати закриті ключі користувачів; власник програми лише надає пропускну здатність.
Якщо говорити точніше, то ця служба виконує роль накопичувача й забезпечує отримання транзакції кворумом валідаторів, збирає кворум голосів, передає сертифікат валідаторам і відповідає клієнту. Шлюзу Sui можна довіряти лише з точки зору доступності, а не безпеки.
У світі, де вартість смуги пропускання неухильно знижується, Sui підтримує екосистему послуг, завдяки яким буде легко, весело та, можливо, вигідно забезпечити голосування за транзакції та трансляцію сертифікатів від імені кінцевих користувачів.
Смарт-контракти Sui написані мовою Move. Move є безпечним і виразним, а його система типів і модель даних природно підтримують стратегії паралельного узгодження/виконання, які роблять Sui масштабованим. Move — це мова програмування з відкритим кодом для створення смарт-контрактів, спочатку розроблена в Meta для блокчейну Diem. Мова не залежить від платформи, і окрім того, що її прийняла Sui, вона набирає популярності на інших платформах (наприклад, 0L, StarCoin).
Знайдіть докладніше пояснення функцій Move у:
книга «Мова програмування Move».
Спеціальні для Sui інструкції щодо переміщення та відмінності на цьому сайті
документ Sui та формальний опис Move у контексті Sui
Валідатори Sui узгоджують і виконують транзакції паралельно з високою пропускною здатністю за допомогою .
Sui пом’якшує головну перешкоду для розвитку блокчейну: . Вузли блокчейну підтримують накопичувач, який представляє стан усього блокчейну, наприклад, останні сертифіковані транзакції. Вузли беруть участь у консенсусному протоколі для додавання оновлення до цього стану, що відображає модифікацію блоків транзакцією (додавання, видалення, зміна). Цей консенсусний протокол призводить до узгодження стану блокчейну перед збільшенням, дійсності та придатності самого оновлення стану та стану блокчейну після збільшення. На періодичній основі ці прирости збираються в накопичувачі.
У Sui цей консенсусний протокол потрібен лише тоді, коли транзакція включає спільні об’єкти. Для цього Sui пропонує мемпул на основі DAG і ефективний консенсус Byzantine Fault Tolerant (BFT). Коли задіяні спільні об’єкти, валідатори Sui відіграють роль більш активних валідаторів в інших блокчейнах, щоб повністю впорядкувати транзакцію щодо інших транзакцій, які отримують доступ до спільних об’єктів.
Sui гарантує, що обробка транзакцій дотримується в . Це розбивається на дві частини:
не мають складних взаємозалежностей з іншими довільними частинами стану блокчейну. Часто фінансові користувачі просто хочуть надіслати актив одержувачу, і єдині дані, необхідні для того, щоб оцінити, чи ця проста транзакція прийнятна, — це новий перегляд облікового запису відправника. Це спостереження дозволяє Sui відмовитися від та замість цього використовувати простіші алгоритми, засновані на . Перегляньте наш список потенційних додатків для одного автора, щоб отримати приклади простих транзакцій у реальному світі.
Ці протоколи базуються на дизайні , який забезпечує перевірені експертами гарантії безпеки. Коротше кажучи, Sui використовує підхід блокування (або «зупинки світу») лише для відповідної частини даних, а не для всього ланцюжка. У цьому випадку єдиною необхідною інформацією є обліковий запис відправника, який може надсилати лише одну транзакцію за раз.
Складні смарт-контракти можуть виграти від спільних об’єктів, де більше ніж один користувач може змінювати ці об’єкти (дотримуючись спеціальних правил смарт-контракту). У цьому випадку Sui повністю впорядковує всі транзакції, що включають спільні об’єкти, використовуючи консенсусний протокол. Sui використовує новий рецензований консенсусний протокол на основі . Це сучасний пристрій як з точки зору продуктивності, так і міцності.
Sui використовує із залученням спільних об’єктів. Підсистема консенсусу також масштабується в тому сенсі, що вона може послідовно виконувати більше транзакцій, додаючи більше машин на один валідатор.