mirror of
https://github.com/logos-co/staking.git
synced 2025-01-09 18:25:56 +00:00
2e7c5148b4
This commit migrates the repo to our foundry template, which ensures we have consistent tooling across smart contract repositories that are maintained by Vac. This removes all hardhat related files and workflows and replaces them with more perfomant foundry workflows. It also sets up tests, CI and linting.
42 lines
1.5 KiB
Solidity
42 lines
1.5 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity >=0.8.19 <=0.9.0;
|
|
|
|
import { Script } from "forge-std/Script.sol";
|
|
|
|
abstract contract BaseScript is Script {
|
|
/// @dev Included to enable compilation of the script without a $MNEMONIC environment variable.
|
|
string internal constant TEST_MNEMONIC = "test test test test test test test test test test test junk";
|
|
|
|
/// @dev Needed for the deterministic deployments.
|
|
bytes32 internal constant ZERO_SALT = bytes32(0);
|
|
|
|
/// @dev The address of the transaction broadcaster.
|
|
address internal broadcaster;
|
|
|
|
/// @dev Used to derive the broadcaster's address if $ETH_FROM is not defined.
|
|
string internal mnemonic;
|
|
|
|
/// @dev Initializes the transaction broadcaster like this:
|
|
///
|
|
/// - If $ETH_FROM is defined, use it.
|
|
/// - Otherwise, derive the broadcaster address from $MNEMONIC.
|
|
/// - If $MNEMONIC is not defined, default to a test mnemonic.
|
|
///
|
|
/// The use case for $ETH_FROM is to specify the broadcaster key and its address via the command line.
|
|
constructor() {
|
|
address from = vm.envOr({ name: "ETH_FROM", defaultValue: address(0) });
|
|
if (from != address(0)) {
|
|
broadcaster = from;
|
|
} else {
|
|
mnemonic = vm.envOr({ name: "MNEMONIC", defaultValue: TEST_MNEMONIC });
|
|
(broadcaster,) = deriveRememberKey({ mnemonic: mnemonic, index: 0 });
|
|
}
|
|
}
|
|
|
|
modifier broadcast() {
|
|
vm.startBroadcast(broadcaster);
|
|
_;
|
|
vm.stopBroadcast();
|
|
}
|
|
}
|