Smart Contract code is generally organised around three key areas:
A series of hooks, which are Python functions that implement different aspects of financial behaviour from the account lifecycle - e.g. pre_posting_code hook is invoked by Vault every time there is an incoming posting (credit or debit) to the account backed by that contract. The pre_posting_code may instruct Vault to reject the posting if, for example, there are insufficient funds in the account.
A set of parameters that provide configuration values for the contract to utilise - e.g. an "overdraft limit" parameter can be used by the pre_posting_code of the contract to assess whether to accept a debit posting that takes the account balance below 0.
A collection of metadata that statically define various other configuration data for the contract.