Hợp đồng nhà máy Sputnik DAO: Thiết kế và thực hiện thống nhất việc tạo ra và quản lý DAO

robot
Đang tạo bản tóm tắt

Phân tích hợp đồng nhà máy Sputnik DAO

Sputnik DAO áp dụng mô hình thiết kế nhà máy để thực hiện việc tạo và quản lý đồng nhất DAO trên nền tảng. Bài viết này sẽ giới thiệu chi tiết về thiết kế và thực hiện mô hình nhà máy của nền tảng Sputnik DAO.

1. Giới thiệu chức năng DAPP

Nền tảng Sputnik DAO đã có nhiều ví dụ DAO được tạo ra. Tính đến tháng 3 năm 2022, DAO hoạt động tích cực nhất là news.sputnik-dao.near, đã có 3051 đề xuất.

Tất cả các hợp đồng DAO mẫu được tạo trên Sputnik DAO đều được triển khai trong tài khoản con của sputnik-dao.near, ví dụ:

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

Người dùng có thể tạo ra các实例DAO mới bằng cách gọi phương thức create() của hợp đồng sputnikdao-factory.

2. Giải thích mã hợp đồng nhà máy

2.1 Tạo DAO

trạng thái hợp đồng sputnikdao-factory chủ yếu bao gồm:

  • factory_manager: Cung cấp phương thức tạo/xóa/cập nhật các thực thể DAO
  • daos: ghi lại địa chỉ tài khoản của tất cả các thực thể DAO đã được tạo

create() định nghĩa phương pháp:

gỉ #[payable] pub fn create(&mut self, name: AccountId, args: Base64VecU8) { let account_id: AccountId = format!('{}.{}', name, 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::predecessor_account_id() })) .expect('Không thể tuần tự hóa'); self.factory_manager.create_contract( self.get_default_code_hash(), account_id, 'new', &args.0, 'on_create', &callback_args, ); }

phương thức create_contract() đã được thực hiện:

  1. Tải mã mẫu hợp đồng DAO
  2. Tạo tài khoản để triển khai hợp đồng DAO
  3. Chuyển khoản token NEAR
  4. Triển khai mã hợp đồng
  5. Gọi hàm khởi tạo hợp đồng
  6. Callback on_create() hàm

on_create() hàm thực hiện:

gỉ #[private] pub fn on_create( &mut self, account_id: AccountId, attached_deposit: U128, predecessor_account_id: AccountId, bool { nếu near_sdk::is_promise_success)( { self.daos.insert)&account_id(; đúng } else { Promise::new)predecessor_account_id(.transfer)attached_deposit.0(; sai } }

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

) Cập nhật 2.2 DAO

Hợp đồng nhà máy cung cấp update###( giao diện để nâng cấp hợp đồng DAO:

gỉ pub fn update)&self, account_id: AccountId, code_hash: Base58CryptoHash( { let caller_id = env::predecessor_account_id)(; assert!) caller_id == self.get_owner(( || caller_id == account_id, 'Phải được cập nhật bởi chủ sở hữu nhà máy hoặc chính DAO' ); assert!) self.daos.contains(&account_id(, 'Phải là hợp đồng được tạo bởi nhà máy' ); self.factory_manager .update_contract)account_id, code_hash, 'update'(; }

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

3. Phân tích an toàn

Độ an toàn của hợp đồng Sputnik DAO Factory chủ yếu thể hiện ở:

  1. Kiểm soát quyền

    • phương thức view không thay đổi biến trạng thái
    • Hàm đặc quyền chỉ có thể được gọi bởi owner
  2. Xử lý lỗi

    • Kiểm tra tất cả các bước có thực hiện bình thường khi tạo DAO
  3. Kiểm tra danh sách trắng

    • Chỉ cho phép factory hoặc DAO tự gọi cập nhật
  4. Cấu hình bảo mật mặc định

    • Mở tự động cập nhật khi khởi tạo hợp đồng DAO

Nói chung, hợp đồng Sputnik DAO Factory đã thực hiện một cơ chế an toàn tương đối hoàn thiện, nhưng vẫn cần tiếp tục theo dõi và cải tiến.

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

Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • 7
  • Chia sẻ
Bình luận
0/400
GasFeeTearsvip
· 3giờ trước
Hả? Lại một mô hình nhà máy chơi đùa với đồ ngốc.
Xem bản gốcTrả lời0
0xSoullessvip
· 10giờ trước
Chỉ là một công cụ dao chơi đùa với mọi người nữa thôi.
Xem bản gốcTrả lời0
MetaverseMigrantvip
· 21giờ trước
Nhà máy này hơi mạnh đấy.
Xem bản gốcTrả lời0
gas_fee_therapistvip
· 08-03 07:53
Đẹp quá! Lại có một chú chó nhà máy nữa đến.
Xem bản gốcTrả lời0
retroactive_airdropvip
· 08-03 07:46
Lại là mẫu thiết kế nhà máy, cũ rích rồi nhỉ.
Xem bản gốcTrả lời0
SolidityStrugglervip
· 08-03 07:31
Lại là hợp đồng nhà máy, khi nào mới có thể viết rõ ràng?
Xem bản gốcTrả lời0
OnchainDetectivevip
· 08-03 07:31
Hiểu rồi hiểu rồi, hợp đồng này nhìn có vẻ hấp dẫn.
Xem bản gốcTrả lời0
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)