Contract-Development
如何在智能合約中建模映射
我的案例:我必須跟踪從一個人到另一個人的所有“送出的報價”。
我的解決方案:為此,我保留了 uint 和 struct映射 (uint => quote) allQuoatations的映射。我在 addQuoatation 方法上附加了這個方法。
我的疑惑:
- 這是對數組建模的正確方法嗎?
- 我是否應該只將最後一個報價保留在契約中,刪除數組並在添加報價後發出一個事件。
是否將所有報價儲存在智能合約中和是否發出事件的兩種選擇是獨立的:
- 如果您需要在智能合約中訪問它們,您應該將所有報價保留在智能合約中,例如,如果有另一種方法需要讀取其邏輯的報價。
- 您可以將它們建模為 Solidity 數組。在這種情況下,您將知道報價的總數,並能夠通過索引訪問它們。
- 或者您可以將它們建模為 Solidity 映射。在這種情況下,您將不知道引用的總數(除非您將它們保存在單獨的變數中)並且能夠通過 id 訪問引用。
- 如果您需要在 Dapp 中收到新報價通知,您應該在報價上發出事件。