Design of a reliable message transaction protocol