# Write and compile the smart contract

{% hint style="info" %}
For the scope of this tutorial, we will publish a simple "Hello Swisstronik" smart contract with only 2 functions -one for writing to the blockchain and one for reading from the blockchain- with 1 state variable.
{% endhint %}

1. Go to the contracts folder and open the `.sol` file (smart contract).

We renamed it to `Hello_swtr.sol`

<figure><img src="https://934886813-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjQ2LiNEFvdY09gfwcysG%2Fuploads%2F2HcGX2tZzKn36zGFc3nw%2Fimage.png?alt=media&#x26;token=4ef15768-fee9-4bcb-9e4b-16fb30e9fe69" alt=""><figcaption></figcaption></figure>

2. Paste the smart contract into your `Hello_swtr.sol` file.

{% hint style="danger" %}
Currently, only support Solidity compilers up to 0.8.19
{% endhint %}

```
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.19;

//This contract is only intended for testing purposes

contract Swisstronik {
    string private message;

    /**
     * @dev Constructor is used to set the initial message for the contract
     * @param _message the message to associate with the message variable.
     */
    constructor(string memory _message) payable{
        message = _message;
    }

    /**
     * @dev setMessage() updates the stored message in the contract
     * @param _message the new message to replace the existing one
     */
    function setMessage(string memory _message) public {
        message = _message;
    }

    /**
     * @dev getMessage() retrieves the currently stored message in the contract
     * @return The message associated with the contract
     */
    function getMessage() public view returns(string memory){
        return message;
    }
}
```

3. Compile the contract

To compile the smart contract, run `npx hardhat compile`  in your terminal (if you are using VSCode, you can open a new terminal with *Ctrl + Shift + \`* )

After successful compilation:

1. You should get the message *Compiled 1 Solidity file successfully* in your terminal
2. A new *artifacts* folder should be created

<figure><img src="https://934886813-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjQ2LiNEFvdY09gfwcysG%2Fuploads%2FxyaC6ralg8naY8qISOqc%2Fimage.png?alt=media&#x26;token=5602ab07-babb-44bf-b882-1c4cd8a5b462" alt=""><figcaption></figcaption></figure>

Now you are ready to deploy this contract on Swisstronik! 🚀&#x20;
