再入攻撃:再入攻撃は、主にスマートコントラクトの特徴である、呼び出されたコントラクトが外部のコントラクトを呼び出す際、呼び出し元が操作を完了する前にコードを実行できることを悪用します。1つのコントラクトが別のコントラクトを呼び出す際、呼び出し元のコントラクトの状態がまだ更新されていない場合、呼び出されたコントラクトが呼び出し元の特定の関数を再度呼び出すことができると、再入攻撃が発生する可能性があります。例えば、資金引き出し機能を含むスマートコントラクトの場合、通常のロジックはまずユーザーの残高を確認し、次に残高を更新し、最後にユーザーに資金を送金することです。しかしながら、コードが不適切に書かれていると、残高をまず更新せずに資金送金操作で外部のコントラクトを呼び出した場合、攻撃者はこの機会を利用して即座に資金引き出し機能を再度呼び出すことができます。残高が更新されていないため、攻撃者は繰り返し資金を引き出し、契約から大量の資産を盗むことができます。