Contract-Development

如何查詢錢包地址擁有的智能合約?

  • January 13, 2022

我正在玩以程式方式形成 DAO。本質上,我想創建一個使用者可以訪問的前端,輸入名稱,點擊按鈕並部署智能合約。我想顯示使用者之前部署的智能合約列表,因此我需要一些方法來查詢該使用者錢包地址擁有的合約。

有沒有辦法以可查詢的方式將智能合約與錢包地址相關聯?

例子:

contract CoolDAO {
   string name;
   address public owner;

   constructor(string _name) payable {
       name = _name;
       owner = msg.sender;
   }

   function getName() public view returns (string memory) {
       return name;
   }
}

使用者應該能夠:

  1. 使用特定名稱部署此合約
  2. 查看他們之前部署的所有合約的列表。

我的第一個想法是我會創建一個代表合約所有權的 NFT 集合——然後當使用者部署合約時,我會為他們創建一個 NFT,其屬性指向該合約的地址。然後,如果我想知道使用者擁有哪些合約,我可以從該集合中查詢他們擁有的任何 NFT。(基本上我會使用 NFT 作為多對多表)

有沒有更直接的方法來處理這個問題?

既然要使用區塊鏈來儲存資訊,我推薦合約工廠模式。

所以你應該有一份契約工廠契約。該契約充當工廠:它根據需要創建契約。同時,它會跟踪誰部署了哪些合約。

每當您需要有關誰部署了什麼的資訊時,您只需向工廠查詢資訊即可。

引用自:https://ethereum.stackexchange.com/questions/118752