def update_state(self, txn, prev_result, request, is_committed=False) -> None: self._validate_txn_type(txn) txn_data = get_payload_data(txn) primary_key = txn_data[RS_ID].encode() secondary_key = self.make_secondary_key(txn_data[RS_TYPE], txn_data[RS_NAME], txn_data[RS_VERSION]) value = { RS_ID: txn_data[RS_ID], RS_TYPE: txn_data[RS_TYPE], RS_NAME: txn_data[RS_NAME], RS_VERSION: txn_data[RS_VERSION], RS_CONTENT: txn_data[RS_CONTENT], TXN_PAYLOAD_METADATA_FROM: get_from(txn), TXN_PAYLOAD_METADATA_ENDORSER: get_endorser(txn), TXN_PAYLOAD_VERSION: get_payload_txn_version(txn), } seq_no = get_seq_no(txn) txn_time = get_txn_time(txn) value_bytes = encode_state_value(value, seq_no, txn_time) self.state.set(primary_key, value_bytes) self.state.set(secondary_key, primary_key)
def is_proof_verified(db_manager, proof, path, value, seq_no, txn_time): encoded_value = domain.encode_state_value(value, seq_no, txn_time) proof_nodes = base64.b64decode(proof[PROOF_NODES]) root_hash = base58.b58decode(proof[ROOT_HASH]) verified = db_manager.get_state(DOMAIN_LEDGER_ID).verify_state_proof( root_hash, path, encoded_value, proof_nodes, serialized=True) return verified
def is_proof_verified(request_handler, proof, path, value, seq_no, txn_time, ): encoded_value = domain.encode_state_value(value, seq_no, txn_time) proof_nodes = base64.b64decode(proof[PROOF_NODES]) root_hash = base58.b58decode(proof[ROOT_HASH]) verified = request_handler.state.verify_state_proof( root_hash, path, encoded_value, proof_nodes, serialized=True ) return verified