> ## Documentation Index
> Fetch the complete documentation index at: https://phylaxsystems-docs-project-incidents.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Store and Submit Assertions

> Upload assertions to Assertion DA and submit them for deployment

This guide walks you through uploading your assertion to Assertion DA and submitting it to your project for deployment.

**Prerequisites**:

* [pcl installed](/credible/credible-install)
* An assertion [written](/credible/write-first-assertion) and [tested](/credible/testing-assertions)
* A [project created](/credible/deploy-assertions-dapp#step-2-create-a-project) in the dApp

**What you'll do**: Authenticate, store your assertion, and submit it to your project.

## Step 1: Authenticate

Before storing or submitting, authenticate with the Credible Layer:

```bash theme={null}
pcl auth login
```

This opens a browser window where you connect your wallet. Once approved, `pcl` automatically detects the authentication.

Check your status anytime:

```bash theme={null}
pcl auth status
```

## Step 2: Store Your Assertion

Upload your assertion bytecode and source code to [Assertion DA](/credible/assertion-da):

```bash theme={null}
pcl store MyAssertionContract
```

If your assertion has constructor arguments:

```bash theme={null}
pcl store MyAssertionContract 0xCONTRACT_ADDRESS
```

<Note>
  `pcl store` automatically builds your project if needed. You can also run `pcl build` separately to check for compilation errors.
</Note>

## Step 3: Submit to Your Project

<Note>
  If you haven't created a project yet, do that first in the [dApp](/credible/deploy-assertions-dapp#step-2-create-a-project).
</Note>

Submit the stored assertion to your project:

```bash theme={null}
pcl submit -a 'MyAssertionContract(0xCONTRACT_ADDRESS)' -p my-project
```

For assertions without constructor arguments:

```bash theme={null}
pcl submit -a 'MyAssertionContract' -p my-project
```

<Tip>
  To submit multiple assertions, use interactive mode: run `pcl submit` without options to select which stored assertions to submit and which project to submit them to.
</Tip>

## Step 4: Deploy in the dApp

After submitting, complete deployment in the [Credible Layer dApp](/credible/deploy-assertions-dapp#step-4-deploy-the-assertion):

1. Navigate to your project
2. Click "Deployment" tab
3. Find your assertion and click "Proceed to Review"
4. Select the target contract and environment (Staging or Production)
5. Click "Deploy" and sign the transaction

## Troubleshooting

### Authentication Issues

| Error                    | Solution                                 |
| ------------------------ | ---------------------------------------- |
| "Not authenticated"      | Run `pcl auth login`                     |
| "Authentication expired" | Run `pcl auth login` to refresh          |
| Browser doesn't open     | Manually visit the URL shown in terminal |

### Submission Issues

| Error                     | Solution                             |
| ------------------------- | ------------------------------------ |
| "Project not found"       | Create the project in the dApp first |
| "Assertion not found"     | Check assertion name matches exactly |
| Constructor args mismatch | Use same args format as when storing |

## Next Steps

<CardGroup cols={2}>
  <Card title="Deploy with dApp" icon="rocket" href="/credible/deploy-assertions-dapp">
    Complete deployment in the dApp
  </Card>

  <Card title="pcl Reference" icon="book" href="/credible/cli-reference">
    Full command reference
  </Card>

  <Card title="Testing Assertions" icon="flask" href="/credible/testing-assertions">
    Test before deployment
  </Card>

  <Card title="Troubleshooting" icon="wrench" href="/credible/troubleshooting">
    Common issues and solutions
  </Card>
</CardGroup>
