(Creating an issue for this discussion just so we don't forget)
Paraphrasing our Slack discussion on 11/3:
Adrian suggested adding an additional keyword (prot) to the DSL for marking the fn definitions that are top-level entry points, which make them protocols? That is, the user would write prot fn foo to declare a top-level protocol foo.
Nikil raised the point that in the future, if we want to allow protocols to call other protocols as a method of composition, we may want to define some "sub-protocols" that are correct when used within the context of the larger parent protocol but incorrect to run as an independent transaction on their own. To support this kind of composition, adding the prot keyword to the language allows us to (syntactically) distinguish sub-protocols that can only be used in composition with others, versus "true" protocols (those the user can call in a .tx file).