Tezos Tickets: спорткар, який роками стоїть у гаражі

Tezos Tickets: спорткар, який роками стоїть у гаражі

Tickets або тікети з'явилися ще в оновленні Edo у лютому 2021 року, проте проекти Tezos ще не заявляли про їхнє використання. Можливо про них забули через лінійну логіку, можливо через популярність і простоту FA1.2 і FA2.

Минулого тижня розробник Marigold П’єр-Еммануель Корньєлло пояснив, як працюють tickets на Tezos. Ми вирішили перекласти пояснення П’єра-Еммануеля для нашої аудиторії та відразу зібрати всю доступну інформацію про тікети в одному місці.

Навіщо потрібні тікети, якщо є токени?

В блокчейнах використовується два типи токенів: нативні — з механізмом роботи закладеним в протокол, та звичайні — з механізмом роботи в смарт-контракті.

tez (XTZ) — нативний токен Tezos. Історія операцій із ним, стан балансів користувачів, і навіть функції на кшталт відправлення tez зберігаються у протоколі.

ctez, kUSD, LP-токени QuipuSwap — звичайні токени. Методи для роботи з ними, опис (метадані) та реєстр з балансами користувачів (Storage або сховище) зберігаються у їх смарт-контрактах.

Технічно, гаманці не зберігають жодних активів. Вони дізнаються у смарт-контрактів, чи є в сховищі запис про адресу tz1…, а потім відображають відповідний баланс. При надсиланні токена користувач викликає відповідну функцію смарт-контракту, щоб він змінив записи у сховищі.

Наприклад, так виглядає баланс користувача в смарт-контракті токена PLENTY: addres — публічний ключ, balance — кількість токенів.

Токени мають два недоліки:

  • єдина точка відмови — смарт-контракт. Теоретично контракт будь-якого токена можна зламати, а потім їх надрукувати, стерти чи заморозити;
  • в оновленні Jakarta має з’явитися L2-рішення Optimistic Rollups. Токени до нього слабко пристосовані: для перенесення з L1 на L2 користувачам доведеться користуватися мостами для обгортання токенів.

Тікети вирішують ці проблеми. Користувачі зберігають їх на контрактах-гаманцях і переносять їх між L1 і L2 без обгортання.

Як працюють тікети

Тікети — це ті ж таки токени, але при цьому вони буквально передаються між контрактами.

Тікет складається з трьох частин:

  • ticketer (білетер) — адреса контракту, який створив тікет;
  • payload або value (значення) — ідентифікатор токена. Має бути порівнюваного типу: nat, int, string тощо;
  • amount, volume або weight — кількість тікетів у записі. Обов’язково nat, оскільки кількість не може бути негативною.

Значення ticketer та payload фіксуються в момент створення тікету та ідентифікують його. По суті, вони працюють як адреса і id токена у стандарті FA2.

Значення amount може змінюватися методами join (складання) та split (поділ). Вони застосовуються тільки до тікетів з однаковими значеннями payload та ticketer. Наприклад, якщо застосувати join до тікетів TICKET(T, P, A1) та TICKET(T, P, A2), вийде один тікет TICKET(T, P, A3), де A3 = A1 + A2. Грубо кажучи, якщо два однакових контракти випустять тікети з однаковими payload, Tezos буде вважати їх абсолютно різними тікетами, тому що не збігається значення ticketer.

Контракт-білетер може зберігати в Storage реєстр користувачів і тікетів, що належать їм, як звичайний контракт токена. Але білетеру можна додати функцію для створення та відправлення тікетів на спеціальні контракти-гаманці. Таким чином, тікети існуватимуть лише на гаманцях, а подальші операції з ними відбуватимуться без залучення білетера — більше немає єдиної точки відмови.

Контракт-гаманець — це контракт, який користувач самостійно створює спеціально для роботи з тікетами. Тікети не можна зберігати на звичайній адресі «tz…», а лише на «Kt…». Однак L2-адреси можуть зберігати тікети без проблем.

Спрощено механізм передачі тікетів має такий вигляд:

  1. Користувач створює контракт-гаманець і призначає себе адміністратором.
  2. Користувач викликає у контракта-білетера функцію запиту тікета і передає адресу контракта-гаманця.
  3. Білетер перевіряє, чи має користувач право отримати тікет.
  4. Білетер створює тікет із відповідним payload.
  5. Білетер викликає у гаманця функцію прийому і передає тікет як параметр.
  6. Гаманець додає до свого сховища тікети.

Здається, що користувач може підробити будь-які тікети, але це не так. Метод Tezos.create_ticket автоматично записує у параметр ticketer адресу контракту-мінтера. Контракт А не може створити тікети, які б виглядали так, ніби їх створив контракт В, тому передача тікетів між контрактами насправді безпечна.

Як можна використати тікети

Елі Генезбургер написав і протестував приклад NFT-аукціону з тікетами замість FA2, а також приклад контракту-гаманця.

Клод Бардо пояснив на прикладі, як працювати з лінійними типами та не втрачати тікети через відсутність команди DUP.

Тікети можна використовувати для репрезентації будь-яких токенів L2 без постійного обгортання-розгортання. Наприклад, користувач віддає uUSD контракту-білетеру та отримує таку ж кількість тікетів типу «uUSD». Він вносить їх на депозит в L2, купує за них інші токени, виводить тікети та міняє їх на звичайні uUSD.

Тікети можуть замінити мультисиг-контракти. Наприклад, білетер може дозволити доступ до будь-якої функції лише за наявності у користувача певного тікета.

Чому тікети ще не використовуються

Перша причина — спільнота ще не виробила стандарту контракту-гаманця і контракту-білетера. До стандарту повинні входити описи базових функцій: прийняти тікет, відправити, подивитися баланс та інші. Без цього розробники додатків та звичайних гаманців не зможуть добре реалізувати підтримку тікетів.

Друга причина — токени FA1.2 і FA2 роблять свою роботу, у розробників є стандартні імплементації та безліч прикладів контрактів для роботи з токенами. Вартість газу в Tezos не така велика, щоб спільнота вирішила перейти на тікети задля економії на транзакційних комісіях.

Підписуйтесь на соціальні мережі Tezos Ukraine, щоб нічого не пропустити:

  1. Telegram-канал
  2. Facebook.
  3. Twitter російською та українською мовами
  4. Twitter англійською мовою
  5. YouTube-канал
  6. Instagram
  7. LinkedIn
  8. hub на ForkLog

наступний

Plenty запустив міст з Ethereum: настав час фармити!

Читайте схожі пости

Де зараз найвигідніший фармінг на Tezos?

Де зараз найвигідніший фармінг на Tezos?

Ф’ючерси на Tezos: тестуємо децентралізовану платформу деривативів Zenith

Ф’ючерси на Tezos: тестуємо децентралізовану платформу деривативів Zenith

Як працює IPFS і де насправді зберігаються ваші NFT

Як працює IPFS і де насправді зберігаються ваші NFT

Читайте блог і не пропускайте новини про TezosЧитати блог

Спільнота