Solidity
我可以在合約上鑄造多少代幣有限制嗎?
我正在為市場創建 ERC1155 契約。市場將部署一份合約,然後任何通過市場鑄造 NFT 的人都將通過該合約進行。
因此,隨著時間的推移,這份合約最終可能會映射到數百萬個代幣。
單個合約可以消耗的儲存/數據總量是否存在理論上的限制?
例如,在這個合約中, balanceOf 映射可能有數百萬個條目。我們還有額外的映射來儲存特定於每個鑄造代幣的元數據——同樣,會有數百萬個。
我只是想確保我們有正確的契約策略。任何輸入將不勝感激。謝謝!
ERC1155 的核心是使用映射來儲存代幣餘額(參見此處的程式碼:https ://github.com/OpenZeppelin/openzeppelin-contracts/blob/defcf20042479d995a0688bdfd019e44c9e79d76/contracts/token/ERC1155/ERC1155.sol#L24 ) . 如您所見,它使用 a
uint256
來表示代幣類型和地址所具有的餘額,因此,您可以安全地擁有代115792089237316195423570985008687907853269984665640564039457584007913129639935
幣類型,並且單個地址將能夠將該金額作為單個代幣的餘額. 該值是 a 的最大值(有關更多上下文,uint256
請參見函式 uint256 參數的最大輸入值是多少? )。長話短說,如果您期望擁有數百萬種代幣類型,那麼您遠遠低於您的上限,您提出的方法應該很好。