# Update Mithril Signer

{% hint style="warning" %}
Please note this update didn't require any changes to the configuration files. Other updates may require changes to additional files.
{% endhint %}

{% hint style="info" %}
Credits to <img src="https://earncoinpool.com/images/coin_v3.png" alt="" data-size="line"> [Earn Coin Pool](https://earncoinpool.com/) for documenting the procedure.
{% endhint %}

{% hint style="success" %}
📢 The Mithril team has created a one-line command to update your Mithril Signer. If you prefer that method see command and note below.\
\
"You can easily update your Mithril signer with this one line command (it will be downloaded in the current directory, a custom folder can be specified with -p option):"\
\
`curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/input-output-hk/mithril/refs/heads/main/mithril-install.sh | sh -s -- -c mithril-signer -d 2603.1 -p $(pwd)`\
\
\
If you prefer to compile on your own see steps below 👇.
{% endhint %}

***

***

## Build on Your Own Method:

{% hint style="success" %}
The following updates are done just on your Block Producer.
{% endhint %}

## Step 1 - Update Rust

On Block Producer, run the following command to update Rust:

```
rustup update
```

## Step 2 - Clone Mithril Git

Clone the Mithril git to your git folder. Run:

```
cd $HOME/git
git clone https://github.com/input-output-hk/mithril.git
```

## Step 3 - Checkout Current Version

To find the current version go to <https://github.com/input-output-hk/mithril/releases/latest> and look for latest version. In this case the current version is Mithril v2603.1

<figure><img src="https://2549074837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8PjW7zFPfe4PgCsPtkZx%2Fuploads%2FzEd40ZwmdS5h4aNktJM7%2Fversion_tag.png?alt=media&#x26;token=6a9dddec-028e-456d-9f1f-547b4432c54a" alt=""><figcaption><p>For this example, this is the latest version to update to Mithril-Signer 0.3.7</p></figcaption></figure>

{% hint style="warning" %}
Always make sure the version is compatible with Mainnet before updating&#x20;
{% endhint %}

<figure><img src="https://2549074837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8PjW7zFPfe4PgCsPtkZx%2Fuploads%2FHuGEAIsUWjyjXhOBTBkx%2Fmainnet_compatibility.png?alt=media&#x26;token=109027b0-3a6a-4ffe-b2ab-5b655be11d2c" alt="" width="236"><figcaption><p>Mainnet Compatible</p></figcaption></figure>

{% hint style="info" %}
Don't get the tag version of Mithril v2603.1 confused with the version of the Mithril Signer in this case 0.3.7 \
\
The Crate versions are different from the tag version.
{% endhint %}

<figure><img src="https://2549074837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8PjW7zFPfe4PgCsPtkZx%2Fuploads%2FuKVeCel5sr1wdE5ARZhE%2Fsigner_version.png?alt=media&#x26;token=a18c6a00-3ff8-4950-9065-b00f45f9c7c2" alt=""><figcaption><p>Mithril Signer Version for Tag v2603.1</p></figcaption></figure>

To checkout current version in this case Mithril v2603.1, first change to Mithril folder in git and then checkout version. Run:

```
cd $HOME/git/mithril
git checkout 2603.1
```

## Step 4 - Change Directory&#x20;

```
cd $HOME/git/mithril/mithril-signer
```

## Step 5 - Run Tests (optional)&#x20;

```
make test
```

## Step 6 - Build the Executable

```
make build
```

## Step 7 - Verify the Build Version&#x20;

Stay in `$HOME/git/mithril/mithril-signer` folder and then run:

```
./mithril-signer -V
```

## Step 8 - Stop Mithril Signer Service&#x20;

```
sudo systemctl stop mithril-signer
```

## Step 9 - Move mithril Signer Executable

{% hint style="danger" %}
We keep our mithril signer in the following folder, please adjust to your path.\
\
`$NODE_HOME/mithril-signer`
{% endhint %}

```
cd $HOME/git/mithril/mithril-signer
sudo mv -f mithril-signer $NODE_HOME/mithril-signer
```

## Step 10 - Start Mithril Signer Service&#x20;

```
sudo systemctl start mithril-signer
```

## Step 11 - Verify Version and Status&#x20;

Check version run:

{% hint style="warning" %}
We keep our mithril signer in the following folder, please adjust to your path.\
\
`$NODE_HOME/mithril-signer`
{% endhint %}

```
cd $NODE_HOME/mithril-signer
./mithril-signer -V
```

<figure><img src="https://2549074837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8PjW7zFPfe4PgCsPtkZx%2Fuploads%2FK2yanM0HEan0iigcxGnn%2Fsigner_version_check.png?alt=media&#x26;token=0b314334-b460-4b81-a8e8-764b449ed291" alt=""><figcaption></figcaption></figure>

Check status

```
systemctl status mithril-signer.service
```

## Step 12 - Clean up

If you have the correct version and the status is good, go ahead and clean up files.

```
cd $HOME/git/
rm -rf mithril
```

## Verify your signer is registered <a href="#verify-your-signer-is-registered" id="verify-your-signer-is-registered"></a>

Download the script into the mithril-signer directory

```
cd $NODE_HOME/mithril-signer
wget https://mithril.network/doc/scripts/verify_signer_registration.sh
```

Make the script executable:

```
cd $NODE_HOME/mithril-signer
chmod +x verify_signer_registration.sh
```

Run Script:

{% hint style="warning" %}
Replace **"\*\*POOL\_ID\*\*"** with your pool ID, example below
{% endhint %}

```
cd $NODE_HOME/mithril-signer
PARTY_ID=**POOL_ID** AGGREGATOR_ENDPOINT=https://aggregator.release-mainnet.api.mithril.network/aggregator ./verify_signer_registration.sh
```

{% hint style="info" %}
Example:\
`PARTY_ID=pool16cdtqyk0fvxzfkhjg3esjcuty4tnlpds5lj0lkmqmwdjyzaj7p8 AGGREGATOR_ENDPOINT=https://aggregator.release-mainnet.api.mithril.network/aggregator ./verify_signer_registration.sh`
{% endhint %}

If your signer is registered, you should see this message:

```
>> Congrats, your signer node is registered!
```

If this is an error with registration you will see this message:

```
>> Oops, your signer node is not registered. Party ID not found among the signers registered at epoch XXX.
```

## Verify your signer contributes with individual signatures <a href="#verify-your-signer-contributes-with-individual-signatures" id="verify-your-signer-contributes-with-individual-signatures"></a>

Download the script into the mithril-signer directory

```
cd $NODE_HOME/mithril-signer
wget https://mithril.network/doc/scripts/verify_signer_signature.sh
```

Make the script executable:

```
cd $NODE_HOME/mithril-signer
chmod +x verify_signer_signature.sh
```

Run Script:

{% hint style="warning" %}
Replace **"\*\*POOL\_ID\*\*"** with your pool ID, example below
{% endhint %}

```
cd $NODE_HOME/mithril-signer
PARTY_ID=**POOL_ID** AGGREGATOR_ENDPOINT=https://aggregator.release-mainnet.api.mithril.network/aggregator ./verify_signer_signature.sh
```

{% hint style="info" %}
Example:\
`PARTY_ID=pool16cdtqyk0fvxzfkhjg3esjcuty4tnlpds5lj0lkmqmwdjyzaj7p8 AGGREGATOR_ENDPOINT=https://aggregator.release-mainnet.api.mithril.network/aggregator` ./verify\_signer\_signature.sh
{% endhint %}

If your signer is contributing, you should see this message:

```
>> Congrats, you have signed this certificate: ...
```

Otherwise, you should see this error message:

```
>> Oops, your party id was not found in the last 20 certificates. Please try again later.
```

## Congratulations you did it!

Mithril Explorer: <https://mithril.network/explorer/?aggregator=https%3A%2F%2Faggregator.release-mainnet.api.mithril.network%2Faggregator>

Additional sources which helped create this guide: <https://mithril.network/doc/manual/getting-started/run-signer-node/>

## Contributors&#x20;

Thanks to the following pools for helping to put together these guides. Please consider delegating to their pools to support them.  Are you a pool? Consider buying them a coffee

![](https://img.cexplorer.io/7/e/1/9/f/pool16cdtqyk0fvxzfkhjg3esjcuty4tnlpds5lj0lkmqmwdjyzaj7p8.png)  [Earn Coin Pool - Ticker: ECP](https://cexplorer.io/pool/pool16cdtqyk0fvxzfkhjg3esjcuty4tnlpds5lj0lkmqmwdjyzaj7p8)

![](https://img.cexplorer.io/9/0/1/d/4/pool1zn4wnk52kmfjy9mw4z85p6wn9kzrn94l9h5gys8r2k2w57mdnhh.png) [Envy Stake Pool - Ticker ENVY](https://cexplorer.io/pool/pool1zn4wnk52kmfjy9mw4z85p6wn9kzrn94l9h5gys8r2k2w57mdnhh)

![](https://img.cexplorer.io/f/4/3/4/6/pool1qhs3cf9ymc2nvmrd2j8cs36cj9jdqgnqk6s9ngyvy2lz5s8rak8.png) [PANL Stake Pool - Ticker PANL](https://cexplorer.io/pool/pool1qhs3cf9ymc2nvmrd2j8cs36cj9jdqgnqk6s9ngyvy2lz5s8rak8)&#x20;

![xSPO Alliance Logo](https://2549074837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8PjW7zFPfe4PgCsPtkZx%2Fuploads%2FgVNakrAPFOZQakRJTpsI%2FxSPO_NFT.png?alt=media\&token=7dc5023e-ae60-40c2-89eb-a980f5739cb2) [xSPO Alliance](http://xspo-alliance.org/discord)
