# Deploy a Semantic SBT contract leveraging Relation Protocol

We can use the [contract template](https://github.com/relationlabs/semanticSBT/blob/main/contracts/template) provided by Relation protocol to deploy our own Semantic SBT contracts.

Hardhat is used as the deployment tool. You can refer to: [Use Hardhat to deploy contracts](https://relationlabs.gitbook.io/protocol/appendix/deploy-a-contract-using-hardhat)

1. Download the contract

```shell
git clone git@github.com:relationlabs/semanticSBT.git
```

2. Install dependencies

```shell
cd semanticSBT
npm install
```

3. Modify the configuration file

```shell
vi hardhat.config.js
```

Comment the following code segment so that it will not be executed.( For now we only use a local network to demonstrate contract deployment. We don't need to configure other networks.)

```solidity
rinkeby: {
  url: `https://rinkeby.infura.io/v3/${INFURA_PROJECT_ID}`,
  accounts: [`${PRIVATE_KEY}`]
}
```

4. Compile the code

```shell
npx hardhat node &
npx hardhat compile
```

5. Modify the parameters for contract initialization

Use an editor to open the deployment script.

```shell
vi scripts/template/deployFollow.js
```

Modify the parameters

```javascript
const name = "Bob's Connection Template";
const symbol = 'SBT';
const baseURI = 'https://api.example.com/v1/';
```

* name: The name of the contract
* symbol: The symbol of the contract
* baseURI: The root directory of the tokenURI of the contract

6. Execute the deployment script

```shell
npx hardhat run scripts/template/deployFollow.js
```

A successful deployment will show the below message in the console:

```shell
SemanticSBTLogic deployed ,contract address: 0x84323b27A2Ee0DecFe417695F5718BdeC23320E5
Follow deployed ,contract address: 0x89235270C230F8A9d16D49D18fC38cf9343B5F9A
Follow initialized successfully!
0xc1155B6aE7031fE0B9365Bec744aa8E8a298c78b following 0x7ed9cdb704052a9ba93e9df3f604436655680f86 successfully!
The rdf of the first token is: 
            :Soul_0xc1155b6ae7031fe0b9365bec744aa8e8a298c78b p:following :Soul_0x7ed9cdb704052a9ba93e9df3f604436655680f86.
```

The last line of output is an RDF data representing the relationship of one address following another:

```
:Soul_0xc1155b6ae7031fe0b9365bec744aa8e8a298c78b p:following :Soul_0x7ed9cdb704052a9ba93e9df3f604436655680f86.
```
