public - публичная (может вызываться извне)
pure - не имеет побочных эффектов (не меняет состояние контракта)
public — область видимости переменной либо функции (scope)
*(может вызываться из вне) — здесь есть некоторый контекст, потому что вне может быть разное
private — не может вызываться никем, кроме оригинального контракта, не наследуется
internal — не может вызываться никем кроме оригинального контракта и наследующихся от него контрактов
public — может вызываться кем угодно, включая пользователей, наследующиеся контракты, другие контракты
external — может быть вызвано только другим, не наследующимся контрактом