We only need to store the currency at the account level, not at the individual entry level, since an account can only have one currency.
Rather than a single credit and debit, it is quite useful to be able to apply multiple credits and debits, for example, to record the tax part of an input or output.
Added guards to ensure that a transactions debits and credits balance on input (but only if there is a single currency across all entries).