# Data Attestation

Clique provides various on-chain historical data sources. Check the following list to find what you need. For more information, please refer to a complete toolchain SDK here at [clique-attestation-sdk](https://docs.clique.tech/toolchain/clique-attestation-sdk "mention").

#### List of Data Sources

* \[arbitrum one]
* \[ethereum mainnet]

### Example

A  more complex example pasted here:

```toml
name = "clique_arbitrumInfo"
spec-version = "1"
type = "Schema"

proof-type = ["TEE"]

[input]
address = { type = "string" }

[output]
createdBlock = { type = "u256", ref = "$tasks.clique_arbitrumCreatedBlock.data" }
lastActiveBlock = { type = "u256", ref = "$tasks.clique_arbitrumLastActiveBlock.data"}

[[tasks]]
name = "clique_arbitrumCreatedBlock"
proof-preference = "TEE"
[[tasks.input]]
address = { ref = "$input.address" }

[[tasks]]
name = "clique_arbitrumLastActiveBlock"
proof-preference = "TEE"
[[tasks.input]]
address = { ref = "$input.address" }
```

In this example,  we create a schema (phantom task) which includes two tasks -- [`clique_arbitrumCreatedBlock`](https://example.com), [`clique_arbitrumLastActiveBlock`](https://example.com), and reconstruct their outputs into the struct that we want.
