What is committed oblivious transfer(COT)?
COT is oblivious transfer with commitments to sender's messages, chooser's choice bit, and chooser's received message.
Verifiable OT(VOT) is almost the same with COT but it doesn't require the commitment to received message. COT can produce commitment to the chooser's output value which can be used by the surrounding protocol later e.g. in zkSNARK. Any VOT protocol can be transformed into COT by committing to the output message $s_b$ and prove its authenticity.
It can prevent selective failure attack.
COT for single bits
COT for single bits was first introduced in 1995 [1].
OT sender Alice is committed to bits $a_0$, $a_1$. OT receiver Bob is committed to bit $b$.
At the end of the protocol, Bob is committed to $a_b$ and knows nothing about $a_{\bar b}$ and Alice learns nothing about $b$. We will not cover this protocol in detail in this doc. Please refer to [2].