# Proofing

Some of the Flex Liquidity Pool [takers](/flex-liquidity-pools/takers.md) rely on Flex Proof protocol. The proof protocol provides a way to verify an event occurrence on other chain.

The fastest way to prove an event for the pool protocol is using *signature* proof variant. This proof can be issued by Flex Node, which is hosted at [`https://node.swaps.io`](https://node.swaps.io/) . It supports the following HTTP API:

* #### Get Chain Proof Info
  * `GET /api/v0/proof/chain/<chain>` , where:
  * `<chain>` *(path param)* - chain ID to get proof info of
* #### Get Event Proof
  * `GET /api/v0/proof?chain=<chain>&hash=<hash>&log=<log>` , where:
  * `<chain>` *(query param)* - chain ID of the event
  * `<hash>` *(query param)* - hash of the event transaction
  * `<log>` *(query param)* - log index in the transaction

Request & response examples:

```bash
# Get proof info for Optimism chain (ID 10):
curl 'https://node.swaps.io/api/v0/proof/chain/10'

# Example of successful chain proof info response:
{
  "chain": 10,
  "latestBlock": 138194551,
  "minConfirmations": 30,
  "provableBlock": 138194521,
  "signer": "0xb0baabc608dd2d1704d190ccdeecca624104c6ac"
}


# Get proof of Arbitrum chain (ID 42161) event occured in transaction with hash
# "0xd97a2a1306bfbdde8c0b929c2aa85fae38699af3d1ec581258bd6a936fe50f46" at index #0:
curl 'https://node.swaps.io/api/v0/proof?chain=42161&hash=0xd97a2a1306bfbdde8c0b929c2aa85fae38699af3d1ec581258bd6a936fe50f46&log=0'

# Example of successful event proof response:
{
  "chain": 42161,
  "hash": "0xd97a2a1306bfbdde8c0b929c2aa85fae38699af3d1ec581258bd6a936fe50f46",
  "log": 0,
  "block": 350395852,
  "confirmations": 5180366,
  "minConfirmations": 240,
  "emitter": "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9",
  "topics": [
    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
    "0x0000000000000000000000009f6d65052ad5818768fcbac3b799a67f2b8e7170",
    "0x000000000000000000000000b58b4060745ec6377ea0b65c9f2eb4e1c4068374"
  ],
  "data": "0x0000000000000000000000000000000000000000000000000000000028351f10",
  "proof": "0x000000000000000000000000000000000000000000000000000000000000012c8ad459dfe203ceeec8eed289d95a9c81dc8c810a74dd647f2b9df98b305900a1356b3ee37ac75b752167cbf41427933bf9be4bd15c67680277ea2ddb9eb43f9f1c",
  "signature": "0x8ad459dfe203ceeec8eed289d95a9c81dc8c810a74dd647f2b9df98b305900a1356b3ee37ac75b752167cbf41427933bf9be4bd15c67680277ea2ddb9eb43f9f1c",
  "signer": "0xb0baabc608dd2d1704d190ccdeecca624104c6ac"
}


# Example of an error response (note "error" field presented):
{
  "error": "Block 355577210 of transaction 42161/0x64d1d125349bf365fb42064763274df23c5f21c40bc09a49868bae5d2ec6a4df has only 69 confirmations - at least 240 required to prove log #1 (wait 171 more blocks)"
}
```

The result `proof` value can then be passed as `bytes` to a taker that requires it - for example, `giveProof` param of [`TransferTaker`](https://github.com/swaps-io/flex-pool-contracts/blob/f01e565a2f2e6f107c20d76cd2644a055ea7acb1/contracts/taker/transfer/TransferTaker.sol#L53).


---

# 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://docs.swaps.io/flex-liquidity-pools/proofing.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.
