externalは外部からのみ呼び出すことができます。 externalとpublicの使いどころ externalは外部からしか呼ぶことができませんが、thisを使うと内部から外部的に関数を呼び出すことができます。呼び出せるということだけを見るとpublicと同じ権限になり違いが無くなりますが下記Stack Overflowに詳しく説明されているので読んでみてください。 違いを簡単に説明すると、引数で渡された値をメモリに保存するかしないかの違いがあります。 publicな関数を外部から呼ぶと引数の値を一度メモリに保存します。externalな関数の場合は引数で渡された値はメモリに保存されることなく関数が処理されるのでgasがpublicよりも低くすむそうです。 public関数は内部からも呼ばれる関数なので変数をメモリに入れておく必要があるという説明がされていてなるほどと理解することがで