Частина 2. Смарт контракти, відмінності між Full Access key та Functional Call в NEAR

--

Нагадуємо про наявність першої частини: Частина 1. Види Access keys та Accounts в NEAR

Облікові записи NEAR мають унікальну функцію зберігання кількох public/private пар ключів , які називаються ключами доступу(Access Key), кожен з яких має власний набір дозволів.

Ключі доступу схожі на OAuths , що дозволяє надавати стороннім особам обмежений доступ до вашого облікового запису.

В платформі NEAR існують 3 типи пар ключів, як описано в офіційній документації NEAR :

  • Account;
  • Node;
  • Validator.

Переваги реалізації ключів доступу від NEAR

Оскільки концепція від NEAR базується на безпечному використанні ключів то ось декілька сценарії за якими можна зрозуміти, як саме це працює.

  1. WEB 3 онлайн гра

Уявіть, що ви хочете зіграти в гру web3, яка складається з веб-програми чи мобільного додатку та смарт-контракту. Ви можете створити ключ, який дозволяє викликати лише певні методи в контракті гри.

Після цього ви можете безпечно віддати ключ до гри, щоб він міг підписувати пов’язані з грою транзакції за вас без потреби переривати ігровий процес під час кожної транзакції.

2. Стейкінг платформи(до прикладу PembRock)

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

У випадку ж надання повного доступу(FullAccess) система може здійснювати підпис всіх операцій без додаткового підтвердження користувачем.

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

Типи ключів

NEAR реалізує два типи ключів доступу: FullAccessтаFunctionCall.

FullAccess Key

Як вже було вище описано FullAccess володіє повним доступом до гаманця та може здійснювати керуванням без додаткового підтвердження користувачем.

Зараз у NEAR є 8 типів дій. Ключі FullAccess можуть виконувати будь-які з них.

Основні сценарії використання FullAccess:

  • створювати субакаунти;
  • додавати або видаляти Access Keys;
  • деплоїти смарт контракт;
  • викликати методи будь якого контракту;
  • відправляти NEAR чи делегувати його в стейкінг.

❗️❗️❗️Якщо ви надали FullAccess комусь іншому то це значить, що хтось інший матиме повний доступ до вашого аккаунту.

Переваги використання ключа повного доступу:

  • Повний контроль: Ключі повного доступу забезпечують повний контроль над обліковим записом, що робить його потужним інструментом для розробників та адміністраторів.
  • Гнучкість: Ключі повного доступу можна використовувати для різних завдань, включаючи розробку смарт-контрактів, адміністрування акаунтів і розповсюдження токенів.
  • Ефективність: Ключі повного доступу можна використовувати для швидкого та ефективного виконання дій, що робить їх корисним інструментом для великомасштабних операцій.

Недоліки використання ключа повного доступу:

  • Ризики безпеки: Ключі повного доступу забезпечують повний контроль над акаунтом, що робить їх дуже цінною мішенню для хакерів. Якщо ключ повного доступу скомпрометовано, з акаунта можуть бути викачані всі кошти.
  • Зручність для користувача: Ключі повного доступу можуть бути складними для розуміння користувачами, і їм може бути важко пояснити ризики, пов’язані з ними.
  • Відсутність деталізації: Ключі повного доступу надають повний контроль над обліковим записом, що ускладнює обмеження дій певними завданнями або функціями.

Отже, повні ключі доступу є потужним інструментом для розробників та адміністраторів, але їх слід використовувати з обережністю. Пов’язані з ними ризики безпеки слід ретельно враховувати, і важливо розробляти dApps, які мінімізують ризики для користувачів.

Function Call

FunctionCall ключі доступу можуть бути надані певні дозволи та обмежені на певну кількість коштів або дій. Наприклад, додаток може використовувати ключ доступу, який дозволяє користувачам виконувати лише певну дію або витрачати обмежену кількість коштів.

Сценарії використання FunctionCall:

  • Обмежений доступ: Функціональний ключ може бути використаний для надання обмеженого доступу до певної функції в смарт-контракті. Це корисно у випадках, коли користувачеві може знадобитися доступ до певної функції dApp без надання доступу до всього облікового запису.
  • Умовний доступ: Можна налаштувати з певними умовами, наприклад, вимагати від користувача мати певний баланс або виконати певну дію, перш ніж надати доступ.
  • Стейкинг токенів: Ключі можна використовувати для стейкінгу токенів у смарт-контракті. Це дозволяє користувачам заблокувати свої токени на певний період, отримуючи за це винагороду.

Переваги використання FunctionCall:

  • Гранульованість: Забезпечують гранульований контроль доступу, дозволяючи розробникам надавати обмежений доступ до певних функцій у смарт-контракті.
  • Безпека: Обмежуючи доступ до певних функцій, функціональні ключі виклику можуть допомогти знизити ризик атак або шахрайства.
  • Гнучкість: Можуть бути налаштовані на певні умови, що робить їх гнучким інструментом для контролю доступу до функцій у смарт-контракті.

Недоліки використання FunctionCall:

  • Складність: Ключі можуть бути складні для розуміння користувачами, і може бути важко пояснити відмінності між різними типами ключів.
  • Обмежений доступ: Хоча ключі забезпечують детальний контроль доступу, вони можуть бути не придатні для випадків, коли користувачі потребують доступу до кількох функцій в розумному контракті.
  • Витрати на розробку: розробники повинні налаштувати ключі Function Call та налаштувати їх зі специфічними умовами, що може забирати час.

Отже, ключі FunctionCall є корисним інструментом для розробників, які хочуть забезпечити детальний контроль доступу до конкретних функцій у розумному контракті. Вони пропонують більш високий рівень безпеки та гнучкості порівняно з ключами Full Access, але можуть вимагати додаткових витрат на розробку. Важливо розробляти додатки, які балансують переваги ключів Function Call з потребами кінцевого користувача, забезпечуючи безпечний та безперебійний користувацький досвід.

Висновки

NEAR-ключі надають розробникам потужний інструмент для створення децентралізованих додатків на платформі. Однак дуже важливо використовувати їх таким чином, щоб мінімізувати ризики для коштів користувачів. Розробляючи додатки, які розділяють депозитні операції та використовують FunctionCall замість FullAccess, розробники можуть створювати безпечніші та надійніші dApps, які захищають кошти користувачів, забезпечуючи при цьому безперебійний користувацький досвід.

--

--