tezosスマートコントラクトのリエントラント攻撃ベクトル?
2 回答
- 投票
-
- 2019-01-31
Michelson(およびその上にあるLiquidityなどの高級言語)では、スマートコントラクトが、最初にその状態/ストレージをコミットせずに別のスマートコントラクトを呼び出すことはできません.リエントラント攻撃が発生する可能性は低くなりますが、不可能ではありません.
Michelson (and higher level language like Liquidity on top of it) does not allow a smart contract to call another smart contract without commmitting its state/storage first. It makes reentrancy attacks less likely to happen, but not impossible.
-
あなたの答えを拡張すること、または少なくともこれが起こる可能性があるケースを説明できる別の情報源を参照することは可能でしょうか?Would it be possible to extend your answer or at least refer to another source that could explain a case where this *could* happen?
- 0
- 2019-02-01
- latte_jed
-
- 2019-02-03
別のスマートコントラクトを呼び出すには、TRANSFER_TOKENSを呼び出します.
契約評価のセマンティクスが調整され(alphanetの周りで、これがいつ発生したかは正確にはわかりません)、TRANSFER_TOKENSなどのすべてのトランザクション/操作は、契約評価が戻った後に実際に実行されます.
これは、契約が即時の再入可能の対象ではないことを意味します.
To call another smart contract, you call TRANSFER_TOKENS.
The semantics of contract evaluation has been adapted (around alphanet, I'm not exactly sure when this happened) so that all transactions/operations such as TRANSFER_TOKENS are really executed after the contract evaluation returns.
This implies that the contract is not subject to immediate reentrancy.
マイケルソンは再入可能性のバグを回避するのに役立つと聞きました.何故ですか?それを妨げる言語の機能はありますか?