Контракт фабрики Sputnik DAO: уніфіковане створення та управління дизайном DAO.

robot
Генерація анотацій у процесі

Аналіз контракту фабрики Sputnik DAO

Sputnik DAO реалізував єдине створення та управління DAO на платформі за допомогою патерну проектування «фабрика». У цій статті буде детально представлено реалізацію патерну фабрики на платформі Sputnik DAO.

1. Огляд функцій DAPP

На платформі Sputnik DAO вже створено кілька DAO. Станом на березень 2022 року, найбільш активним DAO є news.sputnik-dao.near, вже подано 3051 пропозицію.

Усі контракти DAO, створені на базі Sputnik DAO, розгорнуті на підрахунках підрахунків sputnik-dao.near, наприклад:

  • pcp.sputnik-dao.near
  • test-dao-bro.sputnik-dao.near
  • blaqkstereo.sputnik-dao.near

Користувачі можуть створювати нові екземпляри DAO, викликавши метод create() контракту sputnikdao-factory.

!

2. Інтерпретація коду контракту заводу

2.1 створення DAO

стан контракту sputnikdao-factory в основному містить:

  • factory_manager: надає методи для створення/видалення/оновлення екземплярів DAO
  • daos: записує адреси рахунків усіх створених екземплярів DAO

створити() визначення методу:

іржа #[payable] pub fn create(&mut self, name: AccountId, args: Base64VecU8) { let account_id: AccountId = format!('{}. {}', ім'я, env::current_account_id()) .parse() .unwrap(); let callback_args = serde_json::to_vec(&json!({ 'account_id: account_id, 'attached_deposit': U128(env::attached_deposit()), 'predecessor_account_id': env::p redecessor_account_id() })) .очікування('Не вдалося серіалізувати'); self.factory_manager.створити_contract( self.get_default_code_hash(), account_id, 'новий', &арг.0, 'on_create', &callback_args, ); }

метод create_contract() реалізує:

  1. Завантажити шаблон коду контракту DAO
  2. Створення облікового запису для розгортання DAO контракту
  3. Переказ NEAR токенів
  4. Розгортання контрактного коду
  5. Виклик функції ініціалізації контракту
  6. Функція зворотного дзвінка on_create()

!

on_create() реалізація функції:

іржа #[private] Паб ФН on_create( і mut self, account_id: Ідентифікатор облікового запису, attached_deposit: U128, predecessor_account_id: Ідентифікатор облікового запису, ) -> bool { if near_sdk::is_promise_success() { self.daos.insert(&account_id); Справжній } else { Обіцянка::new(predecessor_account_id).transfer019283746574839201attached_deposit.0(; хибний } }

! [])https://img-cdn.gateio.im/webp-social/moments-db234efe334b609e12be80398e4e6fa5.webp(

) 2.2 оновлення DAO

Фабричний контракт надає update###( інтерфейс для оновлення контракту DAO:

іржа pub fn update)&self, account_id: AccountId, code_hash: Base58CryptoHash( { let caller_id = env::p redecessor_account_id)(; стверджувати!) caller_id == self.get_owner(( || caller_id == account_id, 'Має бути оновлено власником заводу або самою DAO' ); стверджувати!) self.daos.contains(&account_id(, 'Потрібно, щоб контракт був створений фабрикою' ); self.factory_manager .update_contract)account_id, code_hash, 'оновлення'(; }

! [])https://img-cdn.gateio.im/webp-social/moments-373080ddb66a4cb83e0722b387056be0.webp(

3. Аналіз безпеки

Безпека контракту Sputnik DAO Factory в основному проявляється в:

  1. Контроль доступу

    • метод view не змінює змінні стану
    • Привілейовану функцію може викликати тільки owner
  2. Обробка помилок

    • Перевірте, чи всі кроки виконуються нормально під час створення DAO
  3. Перевірка білого списку

    • Дозволяється оновлення лише з виклику factory або самого DAO
  4. За замовчуванням безпечна конфігурація

    • Автоматичне оновлення увімкнено під час ініціалізації DAO контракту

В цілому, контракт Sputnik DAO Factory реалізував досить досконалі механізми безпеки, але все ще потребує постійної уваги та вдосконалення.

! [])https://img-cdn.gateio.im/webp-social/moments-8b462e3ac0fd55e990921d21d66e3d42.webp(

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 7
  • Репост
  • Поділіться
Прокоментувати
0/400
GasFeeTearsvip
· 08-06 00:58
О, ще одна фабрична модель обдурювання людей, як лохів
Переглянути оригіналвідповісти на0
0xSoullessvip
· 08-05 17:59
Ще один інструмент dao для обдурювання людей, як лохів
Переглянути оригіналвідповісти на0
MetaverseMigrantvip
· 08-05 06:24
Цей завод справді вражає.
Переглянути оригіналвідповісти на0
gas_fee_therapistvip
· 08-03 07:53
Гарно! Ще один заводський пес прийшов
Переглянути оригіналвідповісти на0
retroactive_airdropvip
· 08-03 07:46
Знову патерн проектування фабрики, вже застарілий, чи не так?
Переглянути оригіналвідповісти на0
SolidityStrugglervip
· 08-03 07:31
Знову фабричний контракт. Коли ж його можна буде зрозуміти?
Переглянути оригіналвідповісти на0
OnchainDetectivevip
· 08-03 07:31
Зрозумів, зрозумів. Цей контракт виглядає досить привабливо.
Переглянути оригіналвідповісти на0
  • Закріпити