organize chain state builder methods, split out revalidate code into a worker