Solidity

我將如何製作一個包含至少 x 個令牌的所有地址的數組

  • July 1, 2021

我正在嘗試以穩固的方式列出特定令牌的持有者名單,事情是,

我無法迭代映射,因為這甚至不是 sol 中的事情。這只適用於數組,即使那樣還有另一個限制……

所以我嘗試維護一個數組,在每次傳輸時將地址添加到列表中,事情是我們不能遍歷數組來搜尋重複,因為這會使用太多的氣體,所以會有一個大的重複問題……那麼當一個地址的餘額達到 0 時,我希望它被刪除,也不能這樣做,我開始沒有辦法了。任何人都可以幫助找到一種可以在鏈上完成的方法嗎?

也許您可以創建一個映射來檢查地址是否包含在數組中。

mapping(address => bool) isholder;
if(isholder[msg.sender] == false) holders.push(msg.sender);
isholder[msg.sender] = true;

你還能做的就是從資源管理器中獲取所有代幣持有者的列表。例如,要獲取 CAKE 持有者的列表,您可以訪問https://bscscan.com/token/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82#balances,底部有一個按鈕可以將其導出為 CSV。

然後使用一個函式,該函式將獲取地址數組並手動將地址傳遞給函式。

或者

在鏈下,您可以編寫一個腳本,該腳本將遍歷地址列表並為每個地址進行交易。

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