@arbitrum/nitro-contracts 1.0.0-beta.1 → 1.0.0-beta.4

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.
Files changed (50) hide show
  1. package/README.md +15 -0
  2. package/package.json +12 -8
  3. package/src/bridge/IInbox.sol +9 -0
  4. package/src/bridge/Inbox.sol +19 -39
  5. package/src/libraries/AdminFallbackProxy.sol +5 -5
  6. package/src/libraries/MessageTypes.sol +1 -0
  7. package/src/mocks/InboxStub.sol +4 -0
  8. package/src/mocks/Simple.sol +30 -0
  9. package/src/node-interface/NodeInterface.sol +18 -1
  10. package/src/node-interface/NodeInterfaceDebug.sol +30 -0
  11. package/src/osp/OneStepProver0.sol +14 -0
  12. package/src/osp/OneStepProverMath.sol +2 -2
  13. package/src/precompiles/ArbOwner.sol +3 -0
  14. package/src/rollup/IRollupCore.sol +26 -2
  15. package/src/rollup/IRollupEventBridge.sol +17 -0
  16. package/src/rollup/IRollupLogic.sol +34 -2
  17. package/src/rollup/RollupCore.sol +2 -2
  18. package/src/rollup/RollupCreator.sol +5 -15
  19. package/src/rollup/RollupEventBridge.sol +2 -3
  20. package/src/rollup/RollupLib.sol +2 -2
  21. package/src/rollup/RollupUserLogic.sol +7 -3
  22. package/src/rollup/ValidatorUtils.sol +0 -1
  23. package/src/rollup/ValidatorWallet.sol +0 -1
  24. package/src/state/Instructions.sol +2 -0
  25. package/.prettierrc +0 -5
  26. package/.solhint.json +0 -18
  27. package/deploy/BridgeStubCreator.js +0 -10
  28. package/deploy/HashProofHelper.js +0 -13
  29. package/deploy/InboxStubCreator.js +0 -17
  30. package/deploy/OneStepProofEntryCreator.js +0 -19
  31. package/deploy/OneStepProver0Creator.js +0 -14
  32. package/deploy/OneStepProverHostIoCreator.js +0 -14
  33. package/deploy/OneStepProverMathCreator.js +0 -14
  34. package/deploy/OneStepProverMemoryCreator.js +0 -14
  35. package/deploy/SequencerInboxStubCreator.js +0 -13
  36. package/deploy/ValueArrayTesterCreator.js +0 -13
  37. package/hardhat.config.ts +0 -47
  38. package/src/mocks/Counter.sol +0 -13
  39. package/test/contract/arbRollup.spec.ts +0 -869
  40. package/test/contract/common/challengeLib.ts +0 -43
  41. package/test/contract/common/globalStateLib.ts +0 -17
  42. package/test/contract/common/rolluplib.ts +0 -259
  43. package/test/contract/cryptographyPrimitives.spec.ts +0 -82
  44. package/test/contract/sequencerInboxForceInclude.spec.ts +0 -516
  45. package/test/contract/utils.ts +0 -40
  46. package/test/prover/hash-proofs.ts +0 -75
  47. package/test/prover/one-step-proof.ts +0 -93
  48. package/test/prover/proofs/.gitkeep +0 -0
  49. package/test/prover/value-arrays.ts +0 -11
  50. package/tsconfig.json +0 -13
@@ -7,7 +7,6 @@ pragma solidity ^0.8.0;
7
7
  pragma experimental ABIEncoderV2;
8
8
 
9
9
  import "../rollup/IRollupCore.sol";
10
- import "../rollup/IRollupLogic.sol";
11
10
  import "../challenge/IChallengeManager.sol";
12
11
 
13
12
  import {NO_CHAL_INDEX} from "../libraries/Constants.sol";
@@ -4,7 +4,6 @@
4
4
 
5
5
  pragma solidity ^0.8.0;
6
6
 
7
- import "./IRollupLogic.sol";
8
7
  import "../challenge/IChallengeManager.sol";
9
8
  import "../libraries/DelegateCallAware.sol";
10
9
  import "@openzeppelin/contracts/utils/Address.sol";
@@ -150,6 +150,8 @@ library Instructions {
150
150
  uint16 internal constant READ_INBOX_MESSAGE = 0x8021;
151
151
  uint16 internal constant HALT_AND_SET_FINISHED = 0x8022;
152
152
 
153
+ uint16 internal constant ARBITRARY_JUMP = 0x8023;
154
+
153
155
  uint256 internal constant INBOX_INDEX_SEQUENCER = 0;
154
156
  uint256 internal constant INBOX_INDEX_DELAYED = 1;
155
157
 
package/.prettierrc DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "printWidth": 100,
3
- "singleQuote": false,
4
- "compiler": "0.8.6"
5
- }
package/.solhint.json DELETED
@@ -1,18 +0,0 @@
1
- {
2
- "extends": ["solhint:recommended"],
3
- "rules": {
4
- "prettier/prettier": "error",
5
- "avoid-throw": "off",
6
- "avoid-suicide": "error",
7
- "avoid-sha3": "warn",
8
- "max-line-length": "off",
9
- "compiler-version": "off",
10
- "func-visibility": ["warn",{"ignoreConstructors":true}],
11
- "no-empty-blocks": "off",
12
- "reason-string": ["warn",{"maxLength":128}],
13
- "not-rely-on-time": "off",
14
- "max-states-count": ["warn",30],
15
- "no-inline-assembly": "off"
16
- },
17
- "plugins": ["prettier"]
18
- }
@@ -1,10 +0,0 @@
1
- module.exports = async (hre) => {
2
- const { deployments, getNamedAccounts, ethers } = hre;
3
- const { deploy } = deployments;
4
- const { deployer } = await getNamedAccounts();
5
-
6
- await deploy("BridgeStub", {from: deployer, args: []});
7
- };
8
-
9
- module.exports.tags = ["BridgeStub", "test"];
10
- module.exports.dependencies = [];
@@ -1,13 +0,0 @@
1
- module.exports = async (hre) => {
2
- const { deployments, getNamedAccounts } = hre;
3
- const { deploy } = deployments;
4
- const { deployer } = await getNamedAccounts();
5
-
6
- await deploy("HashProofHelper", {
7
- from: deployer,
8
- args: [],
9
- });
10
- };
11
-
12
- module.exports.tags = ["HashProofHelper", "test", "live"];
13
- module.exports.dependencies = [];
@@ -1,17 +0,0 @@
1
- module.exports = async (hre) => {
2
- const { deployments, getNamedAccounts, ethers } = hre;
3
- const { deploy } = deployments;
4
- const { deployer } = await getNamedAccounts();
5
-
6
- await deploy("InboxStub", {from: deployer, args: []});
7
-
8
- const bridge = await ethers.getContract("BridgeStub");
9
- const inbox = await ethers.getContract("InboxStub");
10
-
11
- await bridge.setInbox(inbox.address, true);
12
- await inbox.initialize(bridge.address);
13
- };
14
-
15
- module.exports.tags = ["InboxStub", "test"];
16
- module.exports.dependencies = ["BridgeStub"];
17
-
@@ -1,19 +0,0 @@
1
- module.exports = async (hre) => {
2
- const { deployments, getNamedAccounts } = hre;
3
- const { deploy } = deployments;
4
- const { deployer } = await getNamedAccounts();
5
-
6
- await deploy("OneStepProofEntry", {
7
- from: deployer,
8
- args: [
9
- (await deployments.get("OneStepProver0")).address,
10
- (await deployments.get("OneStepProverMemory")).address,
11
- (await deployments.get("OneStepProverMath")).address,
12
- (await deployments.get("OneStepProverHostIo")).address,
13
- ],
14
- });
15
- };
16
-
17
- module.exports.tags = ["OneStepProofEntry"];
18
- module.exports.dependencies = ["OneStepProver0", "OneStepProverMemory", "OneStepProverMath", "OneStepProverHostIo"];
19
-
@@ -1,14 +0,0 @@
1
- module.exports = async (hre) => {
2
- const { deployments, getNamedAccounts } = hre;
3
- const { deploy } = deployments;
4
- const { deployer } = await getNamedAccounts();
5
-
6
- await deploy("OneStepProver0", {
7
- from: deployer,
8
- args: [],
9
- });
10
- };
11
-
12
- module.exports.tags = ["OneStepProver0", "live", "test"];
13
- module.exports.dependencies = [];
14
-
@@ -1,14 +0,0 @@
1
- module.exports = async (hre) => {
2
- const { deployments, getNamedAccounts, ethers } = hre;
3
- const { deploy } = deployments;
4
- const { deployer } = await getNamedAccounts();
5
-
6
- await deploy("OneStepProverHostIo", {
7
- from: deployer,
8
- args: [],
9
- });
10
- };
11
-
12
- module.exports.tags = ["OneStepProverHostIo"];
13
- module.exports.dependencies = [];
14
-
@@ -1,14 +0,0 @@
1
- module.exports = async (hre) => {
2
- const { deployments, getNamedAccounts } = hre;
3
- const { deploy } = deployments;
4
- const { deployer } = await getNamedAccounts();
5
-
6
- await deploy("OneStepProverMath", {
7
- from: deployer,
8
- args: [],
9
- });
10
- };
11
-
12
- module.exports.tags = ["OneStepProverMath", "live", "test"];
13
- module.exports.dependencies = [];
14
-
@@ -1,14 +0,0 @@
1
- module.exports = async (hre) => {
2
- const { deployments, getNamedAccounts } = hre;
3
- const { deploy } = deployments;
4
- const { deployer } = await getNamedAccounts();
5
-
6
- await deploy("OneStepProverMemory", {
7
- from: deployer,
8
- args: [],
9
- });
10
- };
11
-
12
- module.exports.tags = ["OneStepProverMemory", "live", "test"];
13
- module.exports.dependencies = [];
14
-
@@ -1,13 +0,0 @@
1
- module.exports = async (hre) => {
2
- const { deployments, getNamedAccounts, ethers } = hre;
3
- const { deploy } = deployments;
4
- const { deployer } = await getNamedAccounts();
5
-
6
- const bridge = await ethers.getContract("BridgeStub");
7
- const maxTime = {delayBlocks: 10000, futureBlocks: 10000, delaySeconds: 10000, futureSeconds: 10000}
8
- await deploy("SequencerInboxStub", {from: deployer, args: [bridge.address, deployer, maxTime]})
9
- };
10
-
11
- module.exports.tags = ["SequencerInboxStub", "test"];
12
- module.exports.dependencies = ["BridgeStub"];
13
-
@@ -1,13 +0,0 @@
1
- module.exports = async (hre) => {
2
- const { deployments, getNamedAccounts } = hre;
3
- const { deploy } = deployments;
4
- const { deployer } = await getNamedAccounts();
5
-
6
- await deploy("ValueArrayTester", {
7
- from: deployer,
8
- args: [],
9
- });
10
- };
11
-
12
- module.exports.tags = ["ValueArrayTester", "test"];
13
- module.exports.dependencies = [];
package/hardhat.config.ts DELETED
@@ -1,47 +0,0 @@
1
- import '@nomiclabs/hardhat-waffle'
2
- import 'hardhat-deploy'
3
- import '@nomiclabs/hardhat-ethers'
4
- import '@typechain/hardhat'
5
- import 'solidity-coverage'
6
- import prodConfig from "./hardhat.prod-config"
7
-
8
- /**
9
- * @type import('hardhat/config').HardhatUserConfig
10
- */
11
- module.exports = {
12
- ...prodConfig,
13
- namedAccounts: {
14
- deployer: {
15
- default: 0,
16
- },
17
- },
18
- networks: {
19
- hardhat: {
20
- chainId: 1338,
21
- throwOnTransactionFailures: true,
22
- allowUnlimitedContractSize: true,
23
- accounts: {
24
- accountsBalance: '1000000000000000000000000000',
25
- },
26
- blockGasLimit: 200000000,
27
- // mining: {
28
- // auto: false,
29
- // interval: 1000,
30
- // },
31
- forking: {
32
- url: 'https://mainnet.infura.io/v3/' + process.env['INFURA_KEY'],
33
- enabled: process.env['SHOULD_FORK'] === '1',
34
- },
35
- },
36
- geth: {
37
- url: 'http://localhost:8545',
38
- },
39
- },
40
- mocha: {
41
- timeout: 0,
42
- },
43
- typechain: {
44
- outDir: 'build/types',
45
- target: 'ethers-v5',
46
- },
47
- }
@@ -1,13 +0,0 @@
1
- // Copyright 2021-2022, Offchain Labs, Inc.
2
- // For license information, see https://github.com/nitro/blob/master/LICENSE
3
- // SPDX-License-Identifier: BUSL-1.1
4
-
5
- pragma solidity ^0.8.0;
6
-
7
- contract Simple {
8
- uint64 public counter;
9
-
10
- function increment() external {
11
- counter++;
12
- }
13
- }