# Using a bqTest in solve mode

First, we will need to define a new solving mode *bqTest*. We can do so simply by running:

```js
const solveModeTest = await bqTest.solveMode(
    testId,
    ethersProvider,
    testCreatorAddress,
    openAnswerHashes = null
)
```

The initialization is the same as in [reading mode](/bq-core/using-the-bqsdk/bqsdk/read-mode.md), except for the additional *openAnswerHashes* parameter, used for both open answer and mixed tests.

If left undefined, *openAnswerHashes* will be retreived from the blockchain. For this, it must have been defined prior by the *credential issuer* [verifying their test](/bq-core/direct-smart-contract-interfacing/creating-tests/verifying-test.md), else the test will not be solvable. Multiple choice tests need not define this parameter.

As the protocol still lacks an official deployed contract, this test creator address is left for the user to define after they themselves deploy it. In future versions this will be given a default value deployed on a specified chain.

When defined on solve mode, a *bqTest* object can be used to

* [Grade solutions](/bq-core/using-the-bqsdk/bqsdk/solve-mode/grading.md)
* [Generate the corresponding proofs](/bq-core/using-the-bqsdk/bqsdk/solve-mode/generating-proof.md)
* [Verify generated proofs](/bq-core/using-the-bqsdk/bqsdk/solve-mode/verifying-proof.md)
* [Sending the solving transactions on chain](/bq-core/using-the-bqsdk/bqsdk/solve-mode/sending-tx.md)

For each of these sections we will make use of the testnet deployed [TestCreator.sol](https://mumbai.polygonscan.com/address/0x403E6BBCB3Ddbe3487c09E8827e5dEf058FE6db4#code) to provide implementation examples, and thus we define:

```js
const solveModeTest = await bqTest.solveMode(
    '1',
    ethersProvider,
    '0x403E6BBCB3Ddbe3487c09E8827e5dEf058FE6db4'
)
```

We provide no *openAnswerHashes* as the test has already been verified on-chain. You will not need to define this data as the bqTest object will retrieve it directly from the blockchain.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://deenz.gitbook.io/bq-core/using-the-bqsdk/bqsdk/solve-mode.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
