A protocol for programmable liquidity