transaction:add visibility checking