# 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 2617.0 -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 v2617.0

<figure><img src="/files/UDdjbyzA46FBMmx2iu0q" alt=""><figcaption><p>For this example, this is the latest version to update to Mithril-Signer 1.0.0</p></figcaption></figure>

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

<figure><img src="/files/I2IZMg6yveldAECxbE48" alt="" width="236"><figcaption><p>Mainnet Compatible</p></figcaption></figure>

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

<figure><img src="/files/u0lkvEzjylOIsDam6cKt" alt=""><figcaption><p>Mithril Signer Version for Tag v2617.0</p></figcaption></figure>

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

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

## 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="/files/C7whqGLtKnmGnyDo75H5" 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](/files/6U364TnLAtmyWJIEdO8v) [xSPO Alliance](http://xspo-alliance.org/discord)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ecp.gitbook.io/how-to-guides-for-coincashew-method-cardano-spos/maintenance-and-daily-operations/how-to-guides-for-spos-using-coincashew-method/update-mithril-signer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
