Skip to content

Commit 6e5980b

Browse files
author
Michael de Hoog
authored
Fix timestamp check (ms -> s) (#105)
* Fix timestamp check (ms -> s) * Fix CI * forge fmt * Fix lint
1 parent a2d5398 commit 6e5980b

File tree

11 files changed

+67
-55
lines changed

11 files changed

+67
-55
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
pull_request:
55

66
env:
7-
FOUNDRY_PROFILE: ci
7+
FOUNDRY_PROFILE: default
88

99
jobs:
1010
check:

contracts/foundry.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,7 @@ fs_permissions = [
1919
{ access='read', path='./test/nitro-attestation/' },
2020
{ access='read-write', path='./deployments/' },
2121
]
22+
23+
# workaround for https://github.com/foundry-rs/foundry/issues/11668
24+
[lint]
25+
lint_on_build = false

contracts/script/DeploySystem.s.sol

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,9 @@ contract DeploySystem is Deploy {
327327
_upgradeAndCallViaSafe({
328328
_proxy: payable(l2OutputOracleProxy),
329329
_implementation: l2OutputOracle,
330-
_innerCallData: abi.encodeCall(OutputOracle.initialize, (SystemConfigOwnable(systemConfigProxy), 0, 0, false))
330+
_innerCallData: abi.encodeCall(
331+
OutputOracle.initialize, (SystemConfigOwnable(systemConfigProxy), 0, 0, false)
332+
)
331333
});
332334

333335
OutputOracle oracle = OutputOracle(l2OutputOracleProxy);

contracts/script/UpgradeSystemConfigGlobal.s.sol

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ contract UpgradeSystemConfigGlobal is Script, Artifacts {
2222
address addr_ = address(new SystemConfigGlobal{salt: _implSalt()}(ICertManager(mustGetAddress("CertManager"))));
2323
bytes memory data =
2424
abi.encodeCall(ProxyAdmin.upgrade, (payable(mustGetAddress("SystemConfigGlobalProxy")), address(addr_)));
25-
IGnosisSafe(mustGetAddress("SystemOwnerSafe")).execTransaction({
25+
IGnosisSafe(mustGetAddress("SystemOwnerSafe"))
26+
.execTransaction({
2627
to: mustGetAddress("ProxyAdmin"),
2728
value: 0,
2829
data: data,

contracts/script/UpgradeSystemConfigOwnable.s.sol

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ contract UpgradeSystemConfigOwnable is Script {
2222

2323
SystemConfigOwnable config = new SystemConfigOwnable(OwnerConfig(ownerConfig));
2424
bytes memory data = abi.encodeCall(ProxyAdmin.upgrade, (payable(proxy), address(config)));
25-
IGnosisSafe(safe).execTransaction({
25+
IGnosisSafe(safe)
26+
.execTransaction({
2627
to: admin,
2728
value: 0,
2829
data: data,

contracts/src/DeployChain.sol

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -223,19 +223,22 @@ contract DeployChain is Ownable {
223223
DeployAddresses memory addresses,
224224
bool proofsEnabled
225225
) internal {
226-
OutputOracle(addresses.l2OutputOracle).initialize(
227-
SystemConfigOwnable(addresses.systemConfig), hashes.configHash, hashes.genesisOutputRoot, proofsEnabled
228-
);
229-
230-
Portal(payable(addresses.optimismPortal)).initialize(
231-
OutputOracle(addresses.l2OutputOracle),
232-
ISystemConfig(addresses.systemConfig),
233-
ISuperchainConfig(superchainConfig)
234-
);
226+
OutputOracle(addresses.l2OutputOracle)
227+
.initialize(
228+
SystemConfigOwnable(addresses.systemConfig), hashes.configHash, hashes.genesisOutputRoot, proofsEnabled
229+
);
230+
231+
Portal(payable(addresses.optimismPortal))
232+
.initialize(
233+
OutputOracle(addresses.l2OutputOracle),
234+
ISystemConfig(addresses.systemConfig),
235+
ISuperchainConfig(superchainConfig)
236+
);
235237

236238
SystemConfig.Addresses memory systemAddresses = _createSystemAddresses(addresses, gasConfig.gasToken);
237239

238-
SystemConfigOwnable(addresses.systemConfig).initialize({
240+
SystemConfigOwnable(addresses.systemConfig)
241+
.initialize({
239242
_basefeeScalar: gasConfig.basefeeScalar,
240243
_blobbasefeeScalar: gasConfig.blobbasefeeScalar,
241244
_batcherHash: bytes32(uint256(uint160(addressConfig.batcher))),
@@ -247,21 +250,22 @@ contract DeployChain is Ownable {
247250
_addresses: systemAddresses
248251
});
249252

250-
L1CrossDomainMessenger(addresses.l1CrossDomainMessenger).initialize(
251-
ISuperchainConfig(superchainConfig),
252-
IOptimismPortal(payable(addresses.optimismPortal)),
253-
ISystemConfig(addresses.systemConfig)
254-
);
255-
256-
L1StandardBridge(payable(addresses.l1StandardBridge)).initialize(
257-
ICrossDomainMessenger(addresses.l1CrossDomainMessenger),
258-
ISuperchainConfig(superchainConfig),
259-
ISystemConfig(addresses.systemConfig)
260-
);
261-
262-
L1ERC721Bridge(addresses.l1ERC721Bridge).initialize(
263-
ICrossDomainMessenger(addresses.l1CrossDomainMessenger), ISuperchainConfig(superchainConfig)
264-
);
253+
L1CrossDomainMessenger(addresses.l1CrossDomainMessenger)
254+
.initialize(
255+
ISuperchainConfig(superchainConfig),
256+
IOptimismPortal(payable(addresses.optimismPortal)),
257+
ISystemConfig(addresses.systemConfig)
258+
);
259+
260+
L1StandardBridge(payable(addresses.l1StandardBridge))
261+
.initialize(
262+
ICrossDomainMessenger(addresses.l1CrossDomainMessenger),
263+
ISuperchainConfig(superchainConfig),
264+
ISystemConfig(addresses.systemConfig)
265+
);
266+
267+
L1ERC721Bridge(addresses.l1ERC721Bridge)
268+
.initialize(ICrossDomainMessenger(addresses.l1CrossDomainMessenger), ISuperchainConfig(superchainConfig));
265269

266270
OptimismMintableERC20Factory(addresses.optimismMintableERC20Factory).initialize(addresses.l1StandardBridge);
267271
}

contracts/src/OutputOracle.sol

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,7 @@ contract OutputOracle is Initializable, ISemver {
8282
configHash = _configHash;
8383
l2Outputs.push(
8484
Types.OutputProposal({
85-
outputRoot: _genesisOutputRoot,
86-
timestamp: uint128(block.timestamp),
87-
l2BlockNumber: uint128(0)
85+
outputRoot: _genesisOutputRoot, timestamp: uint128(block.timestamp), l2BlockNumber: uint128(0)
8886
})
8987
);
9088
proofsEnabled = _proofsEnabled;
@@ -136,9 +134,7 @@ contract OutputOracle is Initializable, ISemver {
136134
emit OutputProposed(_outputRoot, latestOutputIndex, _l2BlockNumber, block.timestamp);
137135

138136
Types.OutputProposal memory op = Types.OutputProposal({
139-
outputRoot: _outputRoot,
140-
timestamp: uint128(block.timestamp),
141-
l2BlockNumber: uint128(_l2BlockNumber)
137+
outputRoot: _outputRoot, timestamp: uint128(block.timestamp), l2BlockNumber: uint128(_l2BlockNumber)
142138
});
143139
if (l2Outputs.length < maxOutputCount) {
144140
l2Outputs.push(op);

contracts/src/Portal.sol

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -383,12 +383,7 @@ contract Portal is Initializable, ResourceMetering, ISemver {
383383
}
384384

385385
_depositTransaction({
386-
_to: _to,
387-
_mint: _mint,
388-
_value: _value,
389-
_gasLimit: _gasLimit,
390-
_isCreation: _isCreation,
391-
_data: _data
386+
_to: _to, _mint: _mint, _value: _value, _gasLimit: _gasLimit, _isCreation: _isCreation, _data: _data
392387
});
393388
}
394389

@@ -410,12 +405,7 @@ contract Portal is Initializable, ResourceMetering, ISemver {
410405
if (token != Constants.ETHER && msg.value != 0) revert NoValue();
411406

412407
_depositTransaction({
413-
_to: _to,
414-
_mint: msg.value,
415-
_value: _value,
416-
_gasLimit: _gasLimit,
417-
_isCreation: _isCreation,
418-
_data: _data
408+
_to: _to, _mint: msg.value, _value: _value, _gasLimit: _gasLimit, _isCreation: _isCreation, _data: _data
419409
});
420410
}
421411

contracts/src/SystemConfigGlobal.sol

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ contract SystemConfigGlobal is OwnableManagedUpgradeable, ISemver, NitroValidato
5858
bytes32 pcr0 = attestationTbs.keccak(ptrs.pcrs[0]);
5959
require(validPCR0s[pcr0], "invalid pcr0 in attestation");
6060

61-
require(ptrs.timestamp + MAX_AGE > block.timestamp, "attestation too old");
61+
uint64 timestampSeconds = ptrs.timestamp / 1000;
62+
require(timestampSeconds + MAX_AGE > block.timestamp, "attestation too old");
6263

6364
// The publicKey is encoded in the form specified in section 4.3.6 of ANSI X9.62, which is a
6465
// 0x04 byte followed by the x and y coordinates of the public key. We ignore the first byte.

contracts/src/SystemConfigOwnable.sol

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -298,12 +298,8 @@ contract SystemConfigOwnable is OwnableConfig, ISemver, IGasToken {
298298

299299
// Set the gas paying token in storage and in the OptimismPortal.
300300
GasPayingToken.set({_token: _token, _decimals: GAS_PAYING_TOKEN_DECIMALS, _name: name, _symbol: symbol});
301-
IOptimismPortal(payable(optimismPortal())).setGasPayingToken({
302-
_token: _token,
303-
_decimals: GAS_PAYING_TOKEN_DECIMALS,
304-
_name: name,
305-
_symbol: symbol
306-
});
301+
IOptimismPortal(payable(optimismPortal()))
302+
.setGasPayingToken({_token: _token, _decimals: GAS_PAYING_TOKEN_DECIMALS, _name: name, _symbol: symbol});
307303
}
308304
}
309305

0 commit comments

Comments
 (0)