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
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'(;
}
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.
23 thích
Phần thưởng
23
7
Chia sẻ
Bình luận
0/400
GasFeeTears
· 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
0xSoulless
· 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
MetaverseMigrant
· 21giờ trước
Nhà máy này hơi mạnh đấy.
Xem bản gốcTrả lời0
gas_fee_therapist
· 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_airdrop
· 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
SolidityStruggler
· 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
OnchainDetective
· 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.
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
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ụ:
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:
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:
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 ở:
Kiểm soát quyền
Xử lý lỗi
Kiểm tra danh sách trắng
Cấu hình bảo mật mặc định
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(