# Lighthouse Watcher

## Setup

Deploy a Lighthouse contract:

```bash
yarn lighthouse:deploy
```

Use the Lighthouse contract address and set `environments/local.toml` to watch the contract.

```toml
[watch]
  lighthouse = "0xLighthouseContractAddress"
```

## Run

Build files:

```bash
$ yarn build
```

Run the server:

```bash
$ yarn server

# For development.
$ yarn server:dev

# For specifying config file.
$ yarn server -f environments/local.toml
```

## Test

To test the watcher locally:

Open graphql playground at http://127.0.0.1:3005/graphql and set a subscription query

```graphql
subscription {
  onEvent {
    block {
      hash
      number
      timestamp
    }
    tx {
      hash
    }
    contract
    eventIndex
    event {
      __typename
      ... on StorageRequestEvent {
        uploader
        cid
        config
        fileCost
      }
    }
    proof {
      data
    }
  }
}
```

To trigger StorageRequest event locally, run:

```bash
yarn lighthouse:store --lighthouse 0xLighthouseContractAddress --cid testCid --store-config testConfig --file-cost 10
```

### Smoke test

To run a smoke test:

* Start the server.
 
* Run:

  ```bash
  $ yarn smoke-test
  ```
