eth-state-fold 0.9.0

An Ethereum reader library
Documentation
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.7.0;

contract SimpleStorage {

    event ValueChanged(
      address indexed author,
      address indexed oldAuthor,
      uint256 indexed n,
      string oldValue,
      string newValue
    );

    address public lastSender;
    string _value;
    uint256 _n;

    constructor(string memory value) {
        emit ValueChanged(msg.sender, address(0), _n, _value, value);
        lastSender = msg.sender;
        _value = value;
    }

    function getValue() view public returns (string memory) {
        return _value;
    }

    function getValues() view public returns (string memory, address) {
        return (_value, lastSender);
    }

    function setValue(string memory value) public {
        _n++;
        emit ValueChanged(msg.sender, lastSender, _n, _value, value);
        _value = value;
        lastSender = msg.sender;
    }
}