  Custom currencies (ERC-20) on Ethereum are wildly popular, but they are
second class to the primary currency Ether. Custom currencies are more complex
and more expensive to handle than the primary currency as their accounting is
not natively performed by the underlying ledger, but instead in user-defined
contract code. Furthermore, and quite importantly, transaction fees can only be
paid in Ether.
  In this paper, we focus on being able to pay transaction fees in custom
currencies. We achieve this by way of a mechanism permitting short term
liabilities to pay transaction fees in conjunction with offers of custom
currencies to compensate for those liabilities. This enables block producers to
accept custom currencies in exchange for settling liabilities of transactions
that they process.
  We present formal ledger rules to handle liabilities together with the
concept of babel fees to pay transaction fees in custom currencies. We also
discuss how clients can determine what fees they have to pay, and we present a
solution to the knapsack problem variant that block producers have to solve in
the presence of babel fees to optimise their profits.
