# Chrysalis Testnet Update 03.02.21 The IOTA Chrysalis phase 2 network has been upgraded with following breaking changes: * Messages have been extended to allow for up to 8 parents (dynamic). For now, a call to `/tips` will return up to 4 parents to reference. * It now implements the updated dust protection according to [RFC 32](https://github.com/iotaledger/protocol-rfcs/pull/32). Notably, max 100 dust outputs are allowed on an address and 1Mi of dust allowance allows for 10 dust outputs to be deposited. * The network ID has been changed to `testnet3`. * The genesis snapshot is new and the total supply resides on address `atoi1qx82lpavrafwkp0jclqvz4gzm7vs5g5g8rwr00gcm62s8456l5jh67vutux`/`8eaf87ac1f52eb05f2c7c0c15502df990a228838dc37bd18de9503d69afd257d`. * The Coordinator starts publishing milestones from index 0 on-wards again and milestone public keys remain unchanged. ### Upgrading Hornet :::warning You must delete your previous snapshot files and `testnetdb`. Please keep `p2pstore` as it contains your node's identity. ::: :::info This setup assumes a docker-compose.yml deployment of Hornet. ::: The simplest way to upgrade is: * Stop your current Hornet node via: ``` $ docker-compose down ``` * Clone the [Hornet repository](https://github.com/gohornet/hornet): ``` $ git clone https://github.com/gohornet/hornet.git ``` * Checkout the `develop` branch/updating it (you should see several file changes in the git log output): ``` $ git checkout develop $ git pull origin develop ``` The last commit should be equal/newer than commit `ae4c12482e0acb876c079dd51b9ef35e8049ab8b`. * Adjust your config file according to [config_chrysalis_testnet.json](https://github.com/gohornet/hornet/blob/develop/config_chrysalis_testnet.json). Mainly the `protocol.networkID` has been changed to `testnet3` * Build a new docker image: ``` $ docker build -f docker/Dockerfile.dev -t hornet:dev . ``` Example docker-compose.yml file: :::info Any writable mount bind must be under `/tmp` with images using `docker/Dockerfile.dev` ::: ``` version: '3.3' services: hornet: image: hornet:dev hostname: hornet-testnet container_name: hornet_testnet stdin_open: true tty: true restart: "no" working_dir: /app expose: - "14265" - "15600" - "8081" - "6060" - "1883" ports: - "0.0.0.0:15600:15600/tcp" - "0.0.0.0:14265:14265/tcp" - "0.0.0.0:8081:8081/tcp" - "0.0.0.0:6060:6060/tcp" - "0.0.0.0:1883:1883/tcp" volumes: - './config.json:/app/config.json:ro' - './peering.json:/app/peering.json' - './data:/tmp' - '/etc/ssl/certs:/etc/ssl/certs:ro' - '/etc/localtime:/etc/localtime:ro' ``` * Given the [config_chrysalis_testnet.json](https://github.com/gohornet/hornet/blob/develop/config_chrysalis_testnet.json) config file, your node will automatically fetch the latest snapshot from dbfiles.testnet.chrysalis2.com. * Boot up your node: ``` $ docker-compose up -d ``` * Check whether your node connects to your neighbors and is able to synchronize: ``` $ docker logs -f hornet_testnet ``` :::info If you see messages like: > 2021-01-18T09:30:06+01:00 ERROR GossipService unable to create gossip stream to 12D3KooWMajsSUxSUFb3CRgmJvygYCGd27uMDdppVYNGud7xuKG5: protocol not supported > you or your neighbor has not updated their `protocol.networkID` correctly. :::