Metamask

從瀏覽器部署合約,但確保將詳細資訊保存到伺服器

  • July 7, 2018

我對區塊鏈/乙太坊開發非常陌生,並希望允許使用者使用 MetaMask 從站點直接部署契約,但是,我想確保我可以保留契約地址記錄以與使用者地址交叉引用. 然後,我將允許使用者根據 MetaMask 帳號查看他們的未結合約。

我還需要在某些時候從伺服器向智能合約發送數據,因此能夠記錄所有智能合約地址至關重要。

我不想冒必須在瀏覽器中擷取新合約地址並將它們發送到伺服器的風險,並且從我所看到的情況來看,我不確定我是否可以將數據從智能合約傳送到沒有首先獲得地址的外部來源。那麼我有什麼選擇呢?

如果一切都失敗了,我可以設計一個不同的結構來集中管理合約,但這可能會更複雜,使用更多的氣體等。

如果您使用智能合約工廠模型動態創建智能合約,您將提前知道子合約的任何地址,因為它們是如何生成的。

為了更簡單,您可以讓父合約儲存任何生成的地址,這意味著您可以在需要時查詢它,以便擁有所有已部署合約的完整集合。

contract Factory {

   address[] public contracts;

   function createContract() public {
       address childContract = new Contract();
       contracts.push(childContract);
   } 

   function getContractsLength() public returns (uint) {
       return contracts.length;
   }
}

contract Contract {
   // Code...
}

在這裡,合約數組長度的 getter 使您的前端更容易檢索所有儲存的合約地址。

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