# Rewards: Joining Standard Rewards

This section explains how to stake bnTokens into standard rewards program. Note that if you followed the process in Deposit and Join, your tokens have already been staked in the rewards program.

{% hint style="info" %}
Standard rewards program is an opt-in program where users can stake their bnTokens and receive rewards and bonuses (typically different token from the deposited one)
{% endhint %}

### 1. Identify if there is a program

This step explains how to identify if there is a standard rewards program for the bnTokens you hold in your wallet.

* Visit the *`StandardRewards`* contract [on etherscan](https://etherscan.io/address/0xb0B958398ABB0b5DB4ce4d7598Fb868f5A00f372#readProxyContract)
* Execute the *`latestProgramId`* function (this is a Read function)

![](https://273705617-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC9gDtGR2KNhur3c7qIJR%2Fuploads%2Fv0EXPtTurRiXtuI6I0L8%2Fimage.png?alt=media\&token=2636d54e-358e-4a90-9a76-0cdb48aba4d3)

`Input variable`

| Name | Type    | Description                                         |
| ---- | ------- | --------------------------------------------------- |
| pool | address | The reserve token address (i.e. LINK, DAI, BNT etc) |

`Output response`

<table><thead><tr><th width="250.33333333333331">Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>uint256</td><td>The unique ID for the latest created program for the indicated token</td></tr></tbody></table>

### 2. Identify if the program is active

This step explains how to identify if the latest standard rewards program ID (found in the previous step) is active.

* Visit *`StandardRewards`* contract [on etherscan](https://etherscan.io/address/0xb0B958398ABB0b5DB4ce4d7598Fb868f5A00f372#readProxyContract)
* Execute the *`isProgramActive`* function (this is a Read function)

![](https://273705617-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC9gDtGR2KNhur3c7qIJR%2Fuploads%2FGQXFvOaxhMCPhGruu5fh%2Fimage.png?alt=media\&token=0ea512ba-d34a-482b-a68e-3fd87cfe8b5e)

`Input variable`

| Name | Type    | Description                                                 |
| ---- | ------- | ----------------------------------------------------------- |
| id   | uint256 | The unique standard rewards ID (found in the previous step) |

`Output response`

<table><thead><tr><th width="250.33333333333331">Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>bool</td><td>boolean</td><td>True/False indication (True means the program is active)</td></tr></tbody></table>

### 3. Identify the poolToken address

This step explains how to find the bnToken address.

#### Option 1:

If you have bnTokens in your wallet, you can use etherscan to find them.

* Visit [etherscan.io](https://etherscan.io/) and search for your wallet address
* Type the bnToken name in the following format 'bn' and the token name (i.e. bnDAI, bnBNT, etc)
* Click on the bnToken in your wallet
* Find the *`Contract`* address

#### Option 2:

* Visit *`bancorNetworkInfo`* contrat on [etherscan](https://etherscan.io/address/0x8E303D296851B320e6a697bAcB979d13c9D6E760#readProxyContract)
* Execute the *`poolToken`* function (this is a Read function)

![](https://273705617-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC9gDtGR2KNhur3c7qIJR%2Fuploads%2FTJaZRGJdKnagMG6OpnBh%2Fimage.png?alt=media\&token=3f733302-52b0-441e-a2c4-87ba1b3e1cee)

`Input variable`

| Name | Type    | Description                                              |
| ---- | ------- | -------------------------------------------------------- |
| pool | address | Reserve token address (i.e. BNT, DAI, LINK, etc address) |

`Output response`

<table><thead><tr><th width="250.33333333333331">Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>poolToken</td><td>address</td><td>The pool token address</td></tr></tbody></table>

* ### 4. Approve contract interaction

This section explains how to allow the contract to interact with your wallet (this is only an approval step).

* Visit the relevant bnToken contract ([found in the previous step](#2.-identify-position-data)) on [etherscan](https://etherscan.io/)
* Connect your wallet as explained in "[Using Etherscan](https://docs.bancor.network/guides/bancor-etherscan-guide/broken-reference)"
* Execute the `Approve` function (this is a Write function)

<table data-header-hidden><thead><tr><th width="220"></th><th></th></tr></thead><tbody><tr><td>_spender</td><td>The address of the <em><code>standardRewards</code></em> contract <br><a href="broken-reference">found here</a></td></tr><tr><td>_value</td><td>The bnToken amount you would like to stake </td></tr></tbody></table>

* Click `Write` to sign the *`Approve`* in your wallet

### 4. Stake bnTokens into standard rewards

This step explains how to complete the flow and stake your bnTokens into the *`standardRewards`* contract.

* Visit *`standardRewards`* contrat on [etherscan](https://etherscan.io/address/0xb0B958398ABB0b5DB4ce4d7598Fb868f5A00f372#writeProxyContract)
* Execute the *`join`* function (this is a Write function)

![](https://273705617-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC9gDtGR2KNhur3c7qIJR%2Fuploads%2FUGNZGAh7HjXS7rgYUcL9%2Fimage.png?alt=media\&token=8bef4719-3c41-4e62-abc8-99e9eb570e78)

`Input variable`

| Name            | Type    | Description                                    |
| --------------- | ------- | ---------------------------------------------- |
| id              | uint256 | Unique standard rewards program ID             |
| poolTokenAmount | uint256 | The amount of bnTokens you would like to stake |

Congrats! Your bnTokens are now staked into the standardRewards program
