> For the complete documentation index, see [llms.txt](https://zokyo-auditing-tutorials.gitbook.io/zokyo-informational-vulnerabilities/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zokyo-auditing-tutorials.gitbook.io/zokyo-informational-vulnerabilities/tutorials/informational-vulnerability-5-transition-from-now-to-block.timestamp.md).

# Informational Vulnerability 5: Transition from now to block.timestamp

{% hint style="info" %}
[**Book an audit with Zokyo**](https://www.zokyo.io/)
{% endhint %}

**Introduction:** Solidity, like any programming language, evolves over time, introducing new features, optimizations, and deprecating outdated syntax or elements. One such deprecation in recent versions of Solidity is the keyword `now`, traditionally used to refer to the current block timestamp. Developers are advised to use `block.timestamp` instead. This tutorial aims to guide you through updating your contracts to adapt to this change, ensuring they remain current, robust, and compliant with best practices.

***

**Concepts**:

* **`now` Keyword**: Previously used to obtain the current block’s timestamp.
* **`block.timestamp`**: The preferred way to access the current block’s timestamp in more recent versions of Solidity.

***

**Why Transition from `now` to `block.timestamp`?**:

* **Clarity**: `block.timestamp` is more explicit and clarifies where the timestamp is coming from.
* **Up-to-Date Practices**: Keeping code updated with the latest syntax ensures compatibility and adoption of the latest best practices.

***

**How to Make the Transition**:

1. **Code Update**:
   * Replace instances of `now` with `block.timestamp` in your contracts.
2. **Testing**:
   * Ensure that your contract’s functionality remains consistent after the update.
   * Run your regular suite of tests to verify that no unexpected behaviors have been introduced.

***

**Practical Example**:

*Before (Using `now`)*:

```solidity
solidityCopy codepragma solidity ^0.7.0;

contract TimeBasedContract {
    uint256 public lastUpdated;

    function update() public {
        lastUpdated = now;
    }
}
```

*After (Using `block.timestamp`)*:

```solidity
solidityCopy codepragma solidity ^0.7.0;

contract TimeBasedContract {
    uint256 public lastUpdated;

    function update() public {
        lastUpdated = block.timestamp;
    }
}
```

In the revised contract, instances of `now` have been updated to `block.timestamp`, aligning the contract with the latest Solidity best practices.

***

**Conclusion**: Transitioning from deprecated syntax to current recommendations, like updating `now` to `block.timestamp`, is a fundamental practice to maintain the health, reliability, and clarity of your smart contracts. Regularly updating your syntax as per the latest Solidity documentation ensures that your contracts remain robust, secure, and efficient.
