@arbitrum/nitro-contracts 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
- package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
- package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +2 -2
- package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +1 -1
- package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.json +2 -2
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +1 -1
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +2 -2
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +1 -1
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +1 -1
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
- package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
- package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
- package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
- package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
- package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
- package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +1 -1
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +2 -2
- package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +4 -0
- package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +36 -0
- package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +2 -2
- package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +1 -1
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +2 -2
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +1 -1
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +2 -2
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
- package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
- package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +48 -0
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +50 -2
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
- package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +2 -2
- package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +1 -1
- package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +2 -2
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +2 -2
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +2 -2
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +2 -2
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +2 -2
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +2 -2
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +2 -2
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
- package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
- package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
- package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
- package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
- package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
- package/package.json +11 -6
- package/src/challenge/ChallengeLib.sol +0 -45
- package/src/challenge/ChallengeManager.sol +2 -5
- package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +29 -0
- package/src/osp/IOneStepProofEntry.sol +10 -0
- package/src/osp/OneStepProofEntry.sol +47 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arbitrum/nitro-contracts",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Layer 2 precompiles and rollup for Arbitrum Nitro",
|
|
5
5
|
"author": "Offchain Labs, Inc.",
|
|
6
6
|
"license": "BUSL-1.1",
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
"url": "https://github.com/offchainlabs/nitro-contracts/issues"
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
|
+
"audit:ci": "audit-ci --config ./audit-ci.jsonc",
|
|
22
|
+
"audit:fix": "yarn-audit-fix",
|
|
21
23
|
"prepublishOnly": "hardhat clean && forge clean && hardhat compile && yarn build:forge:yul",
|
|
22
24
|
"build:all": "yarn build && yarn build:forge",
|
|
23
25
|
"build": "hardhat compile",
|
|
@@ -39,7 +41,8 @@
|
|
|
39
41
|
"postinstall": "patch-package",
|
|
40
42
|
"deploy-factory": "hardhat run scripts/deployment.ts",
|
|
41
43
|
"deploy-eth-rollup": "hardhat run scripts/createEthRollup.ts",
|
|
42
|
-
"deploy-erc20-rollup": "hardhat run scripts/createERC20Rollup.ts"
|
|
44
|
+
"deploy-erc20-rollup": "hardhat run scripts/createERC20Rollup.ts",
|
|
45
|
+
"create-rollup-testnode": "hardhat run scripts/local-deployment/deployCreatorAndCreateRollup.ts"
|
|
43
46
|
},
|
|
44
47
|
"dependencies": {
|
|
45
48
|
"@offchainlabs/upgrade-executor": "1.1.0-beta.0",
|
|
@@ -63,14 +66,15 @@
|
|
|
63
66
|
"@typescript-eslint/eslint-plugin": "^5.14.0",
|
|
64
67
|
"@typescript-eslint/eslint-plugin-tslint": "^5.27.1",
|
|
65
68
|
"@typescript-eslint/parser": "^5.14.0",
|
|
69
|
+
"audit-ci": "^6.6.1",
|
|
66
70
|
"chai": "^4.3.4",
|
|
67
71
|
"dotenv": "^16.3.1",
|
|
68
72
|
"eslint": "^8.23.1",
|
|
69
73
|
"eslint-config-prettier": "^8.3.0",
|
|
70
74
|
"eslint-plugin-mocha": "^9.0.0",
|
|
71
75
|
"eslint-plugin-prettier": "^4.0.0",
|
|
72
|
-
"ethereum-waffle": "^
|
|
73
|
-
"ethers": "^5.5.
|
|
76
|
+
"ethereum-waffle": "^4.0.10",
|
|
77
|
+
"ethers": "^5.5.4",
|
|
74
78
|
"hardhat": "^2.17.2",
|
|
75
79
|
"hardhat-deploy": "^0.11.37",
|
|
76
80
|
"hardhat-gas-reporter": "^1.0.9",
|
|
@@ -83,7 +87,8 @@
|
|
|
83
87
|
"solidity-coverage": "^0.8.4",
|
|
84
88
|
"ts-node": "^10.4.0",
|
|
85
89
|
"tslint": "^6.1.3",
|
|
86
|
-
"typechain": "^8.
|
|
87
|
-
"typescript": "^4.5.4"
|
|
90
|
+
"typechain": "^8.3.2",
|
|
91
|
+
"typescript": "^4.5.4",
|
|
92
|
+
"yarn-audit-fix": "^10.0.7"
|
|
88
93
|
}
|
|
89
94
|
}
|
|
@@ -48,51 +48,6 @@ library ChallengeLib {
|
|
|
48
48
|
return challenge.timeUsedSinceLastMove() > challenge.current.timeLeft;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
function getStartMachineHash(bytes32 globalStateHash, bytes32 wasmModuleRoot)
|
|
52
|
-
internal
|
|
53
|
-
pure
|
|
54
|
-
returns (bytes32)
|
|
55
|
-
{
|
|
56
|
-
// Start the value stack with the function call ABI for the entrypoint
|
|
57
|
-
Value[] memory startingValues = new Value[](3);
|
|
58
|
-
startingValues[0] = ValueLib.newRefNull();
|
|
59
|
-
startingValues[1] = ValueLib.newI32(0);
|
|
60
|
-
startingValues[2] = ValueLib.newI32(0);
|
|
61
|
-
ValueArray memory valuesArray = ValueArray({inner: startingValues});
|
|
62
|
-
ValueStack memory values = ValueStack({proved: valuesArray, remainingHash: 0});
|
|
63
|
-
ValueStack memory internalStack;
|
|
64
|
-
StackFrameWindow memory frameStack;
|
|
65
|
-
|
|
66
|
-
Machine memory mach = Machine({
|
|
67
|
-
status: MachineStatus.RUNNING,
|
|
68
|
-
valueStack: values,
|
|
69
|
-
internalStack: internalStack,
|
|
70
|
-
frameStack: frameStack,
|
|
71
|
-
globalStateHash: globalStateHash,
|
|
72
|
-
moduleIdx: 0,
|
|
73
|
-
functionIdx: 0,
|
|
74
|
-
functionPc: 0,
|
|
75
|
-
modulesRoot: wasmModuleRoot
|
|
76
|
-
});
|
|
77
|
-
return mach.hash();
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
function getEndMachineHash(MachineStatus status, bytes32 globalStateHash)
|
|
81
|
-
internal
|
|
82
|
-
pure
|
|
83
|
-
returns (bytes32)
|
|
84
|
-
{
|
|
85
|
-
if (status == MachineStatus.FINISHED) {
|
|
86
|
-
return keccak256(abi.encodePacked("Machine finished:", globalStateHash));
|
|
87
|
-
} else if (status == MachineStatus.ERRORED) {
|
|
88
|
-
return keccak256(abi.encodePacked("Machine errored:"));
|
|
89
|
-
} else if (status == MachineStatus.TOO_FAR) {
|
|
90
|
-
return keccak256(abi.encodePacked("Machine too far:"));
|
|
91
|
-
} else {
|
|
92
|
-
revert("BAD_BLOCK_STATUS");
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
51
|
function extractChallengeSegment(SegmentSelection calldata selection)
|
|
97
52
|
internal
|
|
98
53
|
pure
|
|
@@ -233,11 +233,8 @@ contract ChallengeManager is DelegateCallAware, IChallengeManager {
|
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
bytes32[] memory segments = new bytes32[](2);
|
|
236
|
-
segments[0] =
|
|
237
|
-
|
|
238
|
-
challenge.wasmModuleRoot
|
|
239
|
-
);
|
|
240
|
-
segments[1] = ChallengeLib.getEndMachineHash(machineStatuses[1], globalStateHashes[1]);
|
|
236
|
+
segments[0] = osp.getStartMachineHash(globalStateHashes[0], challenge.wasmModuleRoot);
|
|
237
|
+
segments[1] = osp.getEndMachineHash(machineStatuses[1], globalStateHashes[1]);
|
|
241
238
|
|
|
242
239
|
challenge.mode = ChallengeLib.ChallengeMode.EXECUTION;
|
|
243
240
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Copyright 2021-2022, Offchain Labs, Inc.
|
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
|
3
|
+
// SPDX-License-Identifier: BUSL-1.1
|
|
4
|
+
|
|
5
|
+
pragma solidity ^0.8.0;
|
|
6
|
+
|
|
7
|
+
import "../precompiles/ArbSys.sol";
|
|
8
|
+
|
|
9
|
+
contract PendingBlkTimeAndNrAdvanceCheck {
|
|
10
|
+
uint256 immutable deployedAt;
|
|
11
|
+
uint256 immutable deployedAtBlock;
|
|
12
|
+
ArbSys constant ARB_SYS = ArbSys(address(100));
|
|
13
|
+
|
|
14
|
+
constructor() {
|
|
15
|
+
deployedAt = block.timestamp;
|
|
16
|
+
deployedAtBlock = ARB_SYS.arbBlockNumber();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function isAdvancing() external {
|
|
20
|
+
require(block.timestamp > deployedAt, "Time didn't advance");
|
|
21
|
+
require(ARB_SYS.arbBlockNumber() > deployedAtBlock, "Block didn't advance");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function checkArbBlockHashReturnsLatest(bytes32 expected) external {
|
|
25
|
+
bytes32 gotBlockHash = ARB_SYS.arbBlockHash(ARB_SYS.arbBlockNumber() - 1);
|
|
26
|
+
require(gotBlockHash != bytes32(0), "ZERO_BLOCK_HASH");
|
|
27
|
+
require(gotBlockHash == expected, "WRONG_BLOCK_HASH");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -11,6 +11,16 @@ library OneStepProofEntryLib {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
interface IOneStepProofEntry {
|
|
14
|
+
function getStartMachineHash(bytes32 globalStateHash, bytes32 wasmModuleRoot)
|
|
15
|
+
external
|
|
16
|
+
pure
|
|
17
|
+
returns (bytes32);
|
|
18
|
+
|
|
19
|
+
function getEndMachineHash(MachineStatus status, bytes32 globalStateHash)
|
|
20
|
+
external
|
|
21
|
+
pure
|
|
22
|
+
returns (bytes32);
|
|
23
|
+
|
|
14
24
|
function proveOneStep(
|
|
15
25
|
ExecutionContext calldata execCtx,
|
|
16
26
|
uint256 machineStep,
|
|
@@ -31,6 +31,53 @@ contract OneStepProofEntry is IOneStepProofEntry {
|
|
|
31
31
|
proverHostIo = proverHostIo_;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
// Copied from ChallengeLib.sol
|
|
35
|
+
function getStartMachineHash(bytes32 globalStateHash, bytes32 wasmModuleRoot)
|
|
36
|
+
external
|
|
37
|
+
pure
|
|
38
|
+
returns (bytes32)
|
|
39
|
+
{
|
|
40
|
+
// Start the value stack with the function call ABI for the entrypoint
|
|
41
|
+
Value[] memory startingValues = new Value[](3);
|
|
42
|
+
startingValues[0] = ValueLib.newRefNull();
|
|
43
|
+
startingValues[1] = ValueLib.newI32(0);
|
|
44
|
+
startingValues[2] = ValueLib.newI32(0);
|
|
45
|
+
ValueArray memory valuesArray = ValueArray({inner: startingValues});
|
|
46
|
+
ValueStack memory values = ValueStack({proved: valuesArray, remainingHash: 0});
|
|
47
|
+
ValueStack memory internalStack;
|
|
48
|
+
StackFrameWindow memory frameStack;
|
|
49
|
+
|
|
50
|
+
Machine memory mach = Machine({
|
|
51
|
+
status: MachineStatus.RUNNING,
|
|
52
|
+
valueStack: values,
|
|
53
|
+
internalStack: internalStack,
|
|
54
|
+
frameStack: frameStack,
|
|
55
|
+
globalStateHash: globalStateHash,
|
|
56
|
+
moduleIdx: 0,
|
|
57
|
+
functionIdx: 0,
|
|
58
|
+
functionPc: 0,
|
|
59
|
+
modulesRoot: wasmModuleRoot
|
|
60
|
+
});
|
|
61
|
+
return mach.hash();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Copied from ChallengeLib.sol
|
|
65
|
+
function getEndMachineHash(MachineStatus status, bytes32 globalStateHash)
|
|
66
|
+
external
|
|
67
|
+
pure
|
|
68
|
+
returns (bytes32)
|
|
69
|
+
{
|
|
70
|
+
if (status == MachineStatus.FINISHED) {
|
|
71
|
+
return keccak256(abi.encodePacked("Machine finished:", globalStateHash));
|
|
72
|
+
} else if (status == MachineStatus.ERRORED) {
|
|
73
|
+
return keccak256(abi.encodePacked("Machine errored:"));
|
|
74
|
+
} else if (status == MachineStatus.TOO_FAR) {
|
|
75
|
+
return keccak256(abi.encodePacked("Machine too far:"));
|
|
76
|
+
} else {
|
|
77
|
+
revert("BAD_BLOCK_STATUS");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
34
81
|
function proveOneStep(
|
|
35
82
|
ExecutionContext calldata execCtx,
|
|
36
83
|
uint256 machineStep,
|