The `constructor` runs exactly once, during deployment, and is not part of the ABI afterwards. It is where you set the owner, the token address and other deploy-time configuration.
`constant` values are fixed at compile time; `immutable` values are set once in the constructor and then baked into the bytecode. Both are far cheaper to read than storage.
uint256 public constant RATE = 5;
address public immutable token;
constructor(address token_) {
token = token_;
}