def get_proof_generator(self, tx_id, chain=Chain.bitcoin_mainnet):
root = ensure_string(self.tree.get_merkle_root())<EOL>node_count = len(self.tree.leaves)<EOL>for index in range(<NUM_LIT:0>, node_count):<EOL><INDENT>proof = self.tree.get_proof(index)<EOL>proof2 = []<EOL>for p in proof:<EOL><INDENT>dict2 = dict()<EOL>for key, value in p.items():<EOL><INDENT>dict2[key] = ensure_string(value)<EOL><DEDENT>proof2.append(dict2)<EOL><DEDENT>target_hash = ensure_string(self.tree.get_leaf(index))<EOL>merkle_proof = {<EOL>"<STR_LIT:type>": ['<STR_LIT>', '<STR_LIT>'],<EOL>"<STR_LIT>": root,<EOL>"<STR_LIT>": target_hash,<EOL>"<STR_LIT>": proof2,<EOL>"<STR_LIT>": [{<EOL>"<STR_LIT>": to_source_id(tx_id, chain),<EOL>"<STR_LIT:type>": chain.blockchain_type.external_display_value,<EOL>"<STR_LIT>": chain.external_display_value<EOL>}]}<EOL>yield merkle_proof<EOL><DEDENT>
Returns a generator (1-time iterator) of proofs in insertion order.

:param tx_id: blockchain transaction id
:return: