The function of this contract is to allow accounts to deposit (supply capital), redeem (withdraw capital), borrow and repay a loan. Liquidators also liquidate underwater loans using the Market contract. In addition, the market itself represents a token (we call it sl-Token) which is minted to depositors upon supplying the underling asset that the given market is for. There is one instance per asset. It partially implements the SNIP-20 interface, enough to support basic balance queries and transfers while also being compatible with Keplr wallet. The exchange rate between the sl-Token and the underlying asset is not 1:1 but rather based on supply and demand. Functional equivalent to the cToken in Compound.