Solidity

如何儲存與我的智能合約互動的每個地址?

  • May 17, 2022

我正在開發一種眾籌類型的智能合約,我想儲存所有向我的合約發送乙太幣的人。所以我創建了一個這樣的結構

 struct User { 
   address participantsAddress;
   uint id;
   uint participantETHamount;
 } 

我的應付函式是這樣的:

 function invest() external payable {

   balanceOfContract=balanceOfContract+msg.value;

   mydata[id].participantETHamount = msg.value;
   mydata[id].participantsAddress = msg.sender;
   id++;

 }

但是當我調試它時,它似乎沒有儲存值!

使用風險自負。因為我沒有足夠的資訊。

如果您想將數據添加到數組而不是映射,則需要 Idk。並且不確定 id 是只是一個計數器還是一個真實生成的 Id。也不確定人們是否可以投資超過 1 次

pragma solidity 0.8.4;

contract ContractC1 {

   uint256 counter;
   uint256 balanceOfContract = 0;
   mapping (uint256 => User) public users;

   struct User { 
       address participantsAddress;
       uint256 participantETHamount;
   }

   function invest() external payable {
       balanceOfContract = balanceOfContract + msg.value;
       User memory user = User(msg.sender, msg.value);
       users[counter] = user;
       counter++;
   }
}

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