// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/**
* @title TxStart
* @dev Simple contract with start function that can be called multiple times
*/
contract TxStart {
// State variable to track status
bool public isStarted;
// Counter to track how many times start has been called
uint256 public startCount;
// Event to log when contract is started
event ContractStarted(address indexed caller, uint256 timestamp, uint256 count);
/**
* @dev Function to start the contract
* Can be called multiple times
*/
function start() external {
isStarted = true;
startCount++;
emit ContractStarted(msg.sender, block.timestamp, startCount);
}
/**
* @dev Function to check contract status
* @return bool Status whether contract has been started
*/
function getStatus() external view returns (bool) {
return isStarted;
}
/**
* @dev Function to get start count
* @return uint256 Number of times start has been called
*/
function getStartCount() external view returns (uint256) {
return startCount;
}
/**
* @dev Function to reset contract status
* Can be called to reset the contract
*/
function reset() external {
isStarted = false;
startCount = 0;
}
}
{
"compilationTarget": {
"contracts/TxStart.sol": "TxStart"
},
"evmVersion": "paris",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 50
},
"remappings": [],
"viaIR": true
}
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"count","type":"uint256"}],"name":"ContractStarted","type":"event"},{"inputs":[],"name":"getStartCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]