Contract-Design

君士坦丁堡換氣,重入可能性

  • February 7, 2019

使用 SSTORE 處理“臟”儲存槽的新費用降低後,是否可以從 send() 或 transfer() 重新輸入函式並讓合約再次呼叫 send() 或 transfer()?

還是只能重新進入並寫入儲存幾次?

換句話說,噹噹前交易中剩餘的氣體 < 2300 時,send() 或 transfer() 會恢復嗎?

如果我沒記錯的話,計劃是在不調整 SSTORE 定價的情況​​下發布君士坦丁堡,因為它可以重新進入(預算為 2,300 gas)並完成一些成本較低的重新定價儲存操作。這對於已經在鏈上的一些合約來說是不利的。

.send如果它們被連結在一起,.transfer確實會從耗盡氣體中恢復過來。

始終使用檢查、效果、互動模式來實現重入安全功能,以幫助確保您部署的合約不在可能受未來協議更改影響的合約之列。

希望能幫助到你。

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