---
# System prepended metadata

title: How to deploy a verifier on testnet?
tags: [devops]

---

---
tags: devops
---
How to deploy a verifier on testnet?
===


# Steps
1. go on ropsten
2. import testnet key af5e12527ffbb3c9e9b3b3661a5cfcf1be87a2e810fdc0649adc252a2dafca95
3. Init the ABI
```
var c = web3.eth.contract([{
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "verifier",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "typeOfVerifier",
          "type": "string"
        }
      ],
      "name": "VerifierAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "verifier",
          "type": "string"
        }
      ],
      "name": "VerifierUpdated",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "verifierList",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "verifiers",
      "outputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "typeOfVerifier",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "verifierParams",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "isCreated",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "string",
          "name": "_verifier",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_typeOfVerifier",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_verifierParams",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addVerifier",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "string",
          "name": "_verifier",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_verifierParams",
          "type": "string"
        }
      ],
      "name": "updateVerifier",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }]).at("0xC4c6463988bD5B9B4B633Ff8A295403e4EE166CA")
```
4. create the verifier
```
c.addVerifier("levx-auth0-apple","jwt",'{"jwt_validation_fields":["iss","aud"],"jwt_validation_values":["https://levx.au.auth0.com/","LGuhXZ5fTMjXEg1kyD07DhwBCSw3PLlu"],"jwt_verifier_id_field": "sub","jwk_endpoint":"https://levx.au.auth0.com/.well-known/jwks.json","jwk_keys":""}',"0x58440A3e78B190e5bD07905A08a60e30bb78cB5B", console.log) 
```

# Templates

```
c.addVerifier("ava-google","google",'{"client_id":"74915647456-4ctjtqo7rb8kgn9qib30dia79a20pvdb.apps.googleusercontent.com"}',"0x58440A3e78B190e5bD07905A08a60e30bb78cB5B",console.log)
```

```
c.addVerifier("wildcards-auth0-passwordless","jwt",'{"jwt_validation_fields":["iss","email_verified","aud"],"jwt_validation_values":["https://jasoons.auth0.com/",true,"VolHqir3FLzGjvtgtgJJ1H25vHGj9uMq"],"jwt_verifier_id_field": "name","jwk_endpoint":"https://jasoons.auth0.com/.well-known/jwks.json","jwk_keys":""}',"0xc0a9f98DBCA1d1007e3809F3b205161B6D272384",console.log)
```

```
c.addVerifier("sapien-email","single_id_verifier",'{"sub_verifier_details":[{"type_of_verifier":"jwt","verifier_identifier":"sapien-jwt","verifier_params":{"jwt_validation_fields":["iss","clientId"],"jwt_validation_values":["SAPIEN","939cebb6-e57e-4282-a3ea-6dd030771ddd"],"jwt_verifier_id_field": "sub","jwk_endpoint":"https://oauth.sapien.network/torus/.well-known/jwks.json","jwk_keys":"","jwt_verifier_id_case_insensitive":true}}],"threshold":1}',"0x58440A3e78B190e5bD07905A08a60e30bb78cB5B",console.log)
```

```
c.addVerifier("xion-facebook","facebook",'{"app_id":"582996352609190","app_s":"8ef55de137d5a3e8ec199ea41f83916b"}',"0x58440A3e78B190e5bD07905A08a60e30bb78cB5B",console.log)
```

```
c.addVerifier("starkware-reddit","reddit",'{"client_id":"HcmzbDqc21dbzw"}',"0x58440A3e78B190e5bD07905A08a60e30bb78cB5B",console.log)
```