Security

兩個合約之間的互動是否可能被另一個合約干擾?

  • April 27, 2020

例如:

  1. 合約 A 呼叫合約 B 以從 B 中檢索狀態值

2.合約A然後使用合約B提供的數據來創造修改價值

3.合約A將派生值作為更新狀態發送回合約B

另一個合約 C 是否有可能在第 1 步和第 3 步之間呼叫合約 B,可能會在不知道合約 A 的情況下更改狀態,而 B 在第 1 步結束和第 3 步開始之間實際上是空閒的?

如果這是不可能的,為什麼不呢?是什麼提供了這種安全性?

如果這是可能的,我會假設 A 可以使用某種互斥鎖來鎖定 B 的狀態,直到第 3 步完成。這是這種情況的最佳做法嗎?

如果步驟 1 到 3 在單個交易中執行,則無關的 C 合約不可能干擾 A 和 B 之間。

乙太坊保證在執行另一筆交易之前完成交易(所有儲存修改保存到乙太坊世界狀態)。

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