Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
1d353d4
New translations Arbitrum_dispute.png (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
ffbea4d
New translations IOneStepProof.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
62caa09
New translations arbitrum_logo.svg (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
82d4b83
New translations ISequencerInbox.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
f874ba2
New translations IOutbox.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
d8c6e69
New translations IInbox.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
320b2fc
New translations IBridge.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
d7804f9
New translations OneStepProofCommon.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
c7b12c9
New translations OneStepProof2.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
936d48a
New translations IMessageProvider.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
b91bf37
New translations rollupGraph5.png (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
051f11a
New translations bridge_deposits.png (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
c1077ea
New translations rollupGraph3.png (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
07ede37
New translations rollupGraph2.png (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
7d7cd30
New translations rollupGraph1.png (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
fda992d
New translations offchain_labs_logo.png (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
42dd313
New translations gatewayUML.svg (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
5a113c1
New translations bridge_withdrawals.png (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
51717fa
New translations rollupGraph4.png (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
ed570bd
New translations IRollupCore.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
82c3237
New translations Node.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
fbf3594
New translations NodeFactory.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
d9911a0
New translations Rollup.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
de221b9
New translations RollupBase.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
e8c1df7
New translations RollupCore.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
9c08a31
New translations ValidatorUtils.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
4ab4136
New translations RollupCreator.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
3783c0f
New translations RollupEventBridge.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
149a3e2
New translations Validator.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
e0d1911
New translations ValidatorWalletCreator.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
db45e2a
New translations BuddyDeployer.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
3d3b3a9
New translations BridgeCreator.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
a62d014
New translations INodeFactory.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
22e685b
New translations Challenge.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
fd9beb4
New translations RollupUserFacet.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
be3733f
New translations RollupAdminFacet.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
4974c21
New translations IRollupUser.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
1ee23a6
New translations IRollupAdmin.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
33a47f4
New translations ERC20RollupUserFacet.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
eca55d7
New translations AbsRollupUserFacet.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
0e6bd41
New translations IChallengeFactory.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
d386413
New translations IChallenge.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
8baa4e3
New translations ChallengeFactory.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
1fdb98c
New translations SequencerInbox.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
2b191be
New translations OutboxEntry.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
869b2c2
New translations Outbox.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
2f7c7a5
New translations Inbox.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
6fd9414
New translations BridgeUtils.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
3cbc757
New translations Bridge.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
00c4ffb
New translations L1Buddy.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
c675e29
New translations NodeInterface.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
5613c57
New translations StakedLiquidityProvider.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
7780d38
New translations IERC677Receiver.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
d585ced
New translations IWETH9.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
1d87e55
New translations L2GatewayToken.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
56382d5
New translations aeERC20.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
79044fb
New translations aeWETH.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
625eff6
New translations ConfirmRoots.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
ea224e0
New translations IExitLiquidityProvider.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
a9e3253
New translations L1PassiveFastExitManager.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
88f11e1
New translations L1SignedLiquidityProvider.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
46af483
New translations ArbBatchTokenMover.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
d8063e2
New translations ERC677Token.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
e2d6fdd
New translations EthBatchTokenReceiver.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
feca156
New translations MMR.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
14a7a00
New translations ArbAddressTable.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
2b7855b
New translations ArbAggregator.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
222a334
New translations ArbBLS.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
3ba685e
New translations ArbFunctionTable.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
7495cde
New translations ArbGasInfo.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
8fd8f38
New translations ArbInfo.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
9635169
New translations ArbOwner.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
49d739e
New translations ArbRetryableTx.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
3f040c3
New translations IERC677.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
b4a78f5
New translations BeaconProxyFactory.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
9f9edbe
New translations RetryableTicketCreator.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
985002d
New translations L1CustomGateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
0b3f592
New translations L2ArbitrumGateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
09a1b81
New translations L2CustomGateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
152f702
New translations L2ERC20Gateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
b000901
New translations L2GatewayRouter.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
bb74732
New translations L2WethGateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
1a11231
New translations IArbToken.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
b6019d0
New translations StandardArbERC20.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
c7bc427
New translations ITradeableExitReceiver.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
13d087c
New translations L1ArbitrumExtendedGateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
05a2d7a
New translations L1ArbitrumGateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
dc42bf8
New translations L1ERC20Gateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
c2300dd
New translations TokenGateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
da0fd3c
New translations L1GatewayRouter.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
2307e67
New translations L1WethGateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
e7d4191
New translations ICustomToken.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
2775d04
New translations ArbitrumGateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
f4efaf5
New translations GatewayRouter.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
3d31ff5
New translations ICustomGateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
b58cc81
New translations IGatewayRouter.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
22ad18e
New translations ITokenGateway.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
fc14719
New translations L1ArbitrumMessenger.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
04dbb8b
New translations L2ArbitrumMessenger.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
112f714
New translations ArbStatistics.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
13b2a2a
New translations ArbSys.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
0e423e3
New translations Security_Considerations.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
6aaf4b5
New translations L1_L2_Messages.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
e18c482
New translations Local_Blockchain.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
595b20c
New translations Mainnet.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
c169127
New translations Public_Testnet.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
ec8b9a8
New translations Rollup_Protocol.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
2afccee
New translations Rollup_basics.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
179c76a
New translations Running_Node.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
faf8b9a
New translations Solidity_Support.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
569d89c
New translations Inside_Arbitrum.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
6a33b32
New translations Special_Features.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
4764e28
New translations Time_in_Arbitrum.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
5c04317
New translations Tutorials.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
c903ce7
New translations Tx_Lifecycle.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
2aa81cc
New translations Useful_Addresses.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
2e2c6dc
New translations Withdrawals.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
64d4e68
New translations talks.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
b87f9ac
New translations Installation.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
086bc7c
New translations Glossary.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
5efd04f
New translations ArbosTest.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
7748cb4
New translations ArbOS_Formats.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
e369b29
New translations contract.hbs (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
30150c4
New translations generate_docs.py (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
ce5673b
New translations AVM_Design.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
eda2118
New translations Contract_Deployment.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
74d73e0
New translations Aggregator.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
189160d
New translations Finality.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
2c5c9fb
New translations Dispute_Resolution.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
24a2349
New translations Developer_Quickstart.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
f1b5495
New translations Contract_Docs.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
bc90d26
New translations Differences_Ethereum_Overview.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
5396059
New translations Chain_parameters.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
c5abe35
New translations Bridging_Assets.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
b5d53a9
New translations Arbsys.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
bd1efee
New translations ArbOS.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
77ee620
New translations ArbGas.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
4677f33
New translations Frontend_Integration.md (Chinese Simplified)
Jason-Wanxt Mar 9, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions docs_i18n/Chinese Simplified/AVM_Design.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
id: AVM_Design
title: AVM design rationale
sidebar_label: AVM design rationale
---

This document outlines the design rationale for the Arbitrum Virtual Machine (AVM) architecture.

The starting point for the AVM design is the Ethereum Virtual Machine (EVM). Because Arbitrum aims to efficiently execute programs written or compiled for EVM, Arbitrum uses many aspects of EVM unchanged. For example, AVM adopts EVM's basic integer datatype (a 256-bit big-endian unsigned integer), as well as the instructions that operate on EVM integers.

Differences between AVM and EVM are motivated by the needs of Arbitrum's Layer 2 protocol and Arbitrum's use of a multi-round challenge protocol to resolve disputes.

## Execution vs. proving

Arbitrum, unlike EVM and similar architectures, needs to support both execution (advancing the state of a computation by local emulation) and proving (convincing an L1 contract or other trusted party that a claim about execution is correct). EVM-based systems resolve disputes by re-executing the disputed code, whereas Arbitrum relies on a challenge protocol that leads to an eventual proof.

We want execution to be optimized for speed in a local, trusted environment, because local execution is the common case. Proving, on the other hand, will be needed less often but must still be efficient enough to be viable even in a congested L1 system. The system will rarely need to prove, but it always needs to be _prepared_ to prove. The logical separation of execution from proving allows execution speed to be optimized more aggressively in the common case where proving turns out not to be needed.

## ArbOS

Another difference in requirements is that Arbitrum uses ArbOS, a "operating system" that runs at Layer 2. ArbOS controls the execution of separate contracts to isolate them from each other and track their resource usage.

Supporting these functions in Layer 2 trusted software, rather than building them in to the L1-enforced rules of the architecture as Ethereum does, offers significant advantages in cost because these operations can benefit from the lower cost of computation and storage at Layer 2, instead of having to manage those resources as part of the Layer 1 EthBridge contract. Having a trusted operating system at Layer 2 also has significant advantages in flexibility, because Layer 2 code is easier to evolve, or to customize for a particular chain, than a Layer-1 enforced VM architecture would be.

The use of a Layer 2 trusted operating system does require some support in the architecture, for example to allow the OS to limit and track resource usage by contracts.

## Supporting Merkleization

Any Layer 2 protocol that relies on assertions and dispute resolution (which includes at least all rollup protocols) must define a rule for Merkle-hashing the full state of the virtual machine. That rule must be part of the architecture definition because it is relied upon in resolving disputes.

It must also be reasonably efficient to maintain the Merkle hash and/or recompute it when needed. This affects how the architecture structures its memory, for example. Any storage structure that is large and mutable will be relatively expensive to Merkleize, and an algorithm for Merkleizing it must be part of the architecture specification.

The AVM architecture responds to this challenge by having only bounded-size, immutable memory objects ("Tuples"), which can include other Tuples by reference. Tuples cannot be modified in-place but there is an instruction to copy a Tuple with a modification. This allows the construction of tree structures which can behave like a large flat memory. Applications can use functionalities such as large flat arrays, key-value stores, and so on, by accessing libraries that use Tuples internally.

The semantics of Tuples make it impossible to create cyclic structures of Tuples, so an AVM implementation can safely manage Tuples by using reference-counted, immutable structures. The hash of each Tuple value need only be computed once, because the contents are immutable.

## Code organization: Codepoints

The conventional organization of code is to store a linear array of instructions, and keep a program counter pointing to the next instruction that will be executed. With this conventional approach, proving an instruction of execution requires logarithmic time and space, because a Merkle proof must be presented to prove which instruction is under the current PC.

The AVM uses this conventional approach for execution, but it adds a feature that makes proving and proof-checking require constant time and space. The CodePoint for the instruction at some PC value is the pair (instruction at PC, Hash(CodePoint at PC+1)). (If there is no CodePoint at PC+1, then zero is used instead.)

For proving purposes, the "program counter" is replaced by a "current CodePoint hash" value, which is part of the machine state. The preimage of this hash will contain the current instruction, and the hash of the following codepoint, which is everything the verifier needs to verify what the instruction is and what the current CodePoint hash value will be after the instruction, if the instruction isn't a Jump.

All jump instructions use jump destinations that are CodePoints, so a proof about execution of a jump instruction also has immediately at hand not only the PC that is being jumped to, but also what the contents of the "current CodePoint hash" register will be after the jump executes. In every case, proof and verification requires constant time and space.

In normal execution (when proving is not required), implementations will typically just use PC values as on a conventional architecture. However, when a proof is needed, the prover can use a lookup table to get the CodePoint hashes corresponding to any relevant PCs.

## Support for ArbOS

ArbOS, running at Layer 2, isolates untrusted programs from each other, tracks and limits their resource usage, and manages the economic model that collects fees from users to fund the operation of a chain's validators.

In support of this, the AVM includes instructions to support saving and restoring the machine's stack, managing machine registers that track resource usage, and receives messages from external callers. These instructions are used by ArbOS itself, but ArbOS ensures that they will never appear in untrusted code.
128 changes: 128 additions & 0 deletions docs_i18n/Chinese Simplified/AbsRollupUserFacet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
---
title: AbsRollupUserFacet.sol Spec
id: AbsRollupUserFacet
---

### `onlyValidator()`

### `initialize(address _stakeToken)` (public)

### `rejectNextNode(address stakerAddress)` (external)

Reject the next unresolved node

- `stakerAddress`: Example staker staked on sibling

### `confirmNextNode(bytes32 beforeSendAcc, bytes sendsData, uint256[] sendLengths, uint256 afterSendCount, bytes32 afterLogAcc, uint256 afterLogCount)` (external)

Confirm the next unresolved node

- `beforeSendAcc`: Accumulator of the AVM sends from the beginning of time up to the end of the previous confirmed node

- `sendsData`: Concatenated data of the sends included in the confirmed node

- `sendLengths`: Lengths of the included sends

- `afterSendCount`: Total number of AVM sends emitted from the beginning of time after this node is confirmed

- `afterLogAcc`: Accumulator of the AVM logs from the beginning of time up to the end of this node

- `afterLogCount`: Total number of AVM logs emitted from the beginning of time after this node is confirmed

### `stakeOnExistingNode(uint256 nodeNum, bytes32 nodeHash)` (external)

Move stake onto an existing node

- `nodeNum`: Inbox of the node to move stake to. This must by a child of the node the staker is currently staked on

- `nodeHash`: Node hash of nodeNum (protects against reorgs)

### `stakeOnNewNode(bytes32 expectedNodeHash, bytes32[3][2] assertionBytes32Fields, uint256[4][2] assertionIntFields, uint256 beforeProposedBlock, uint256 beforeInboxMaxCount, bytes sequencerBatchProof)` (external)

Move stake onto a new node

- `expectedNodeHash`: The hash of the node being created (protects against reorgs)

- `assertionBytes32Fields`: Assertion data for creating

- `assertionIntFields`: Assertion data for creating

### `returnOldDeposit(address stakerAddress)` (external)

Refund a staker that is currently staked on or before the latest confirmed node

Since a staker is initially placed in the latest confirmed node, if they don't move it a griefer can remove their stake. It is recomended to batch together the txs to place a stake and move it to the desired node.

- `stakerAddress`: Address of the staker whose stake is refunded /

### `reduceDeposit(uint256 target)` (external)

Reduce the amount staked for the sender

- `target`: Target amount of stake for the staker. If this is below the current minimum, it will be set to minimum instead /

### `createChallenge(address payable[2] stakers, uint256[2] nodeNums, bytes32[2] executionHashes, uint256[2] proposedTimes, uint256[2] maxMessageCounts)` (external)

Start a challenge between the given stakers over the node created by the first staker assuming that the two are staked on conflicting nodes

- `stakers`: Stakers engaged in the challenge. The first staker should be staked on the first node

- `nodeNums`: Nodes of the stakers engaged in the challenge. The first node should be the earliest and is the one challenged

- `executionHashes`: Challenge related data for the two nodes

- `proposedTimes`: Times that the two nodes were proposed

- `maxMessageCounts`: Total number of messages consumed by the two nodes /

### `completeChallenge(address winningStaker, address losingStaker)` (external)

Inform the rollup that the challenge between the given stakers is completed

completeChallenge isn't pausable since in flight challenges should be allowed to complete or else they could be forced to timeout

- `winningStaker`: Address of the winning staker

- `losingStaker`: Address of the losing staker /

### `removeZombie(uint256 zombieNum, uint256 maxNodes)` (external)

Remove the given zombie from nodes it is staked on, moving backwords from the latest node it is staked on

- `zombieNum`: Index of the zombie to remove

- `maxNodes`: Maximum number of nodes to remove the zombie from (to limit the cost of this transaction) /

### `removeOldZombies(uint256 startIndex)` (public)

Remove any zombies whose latest stake is earlier than the first unresolved node

- `startIndex`: Index in the zombie list to start removing zombies from (to limit the cost of this transaction) /

### `requiredStake(uint256 blockNumber, uint256 firstUnresolvedNodeNum, uint256 latestNodeCreated) → uint256` (public)

Calculate the current amount of funds required to place a new stake in the rollup

If the stake requirement get's too high, this function may start reverting due to overflow, but that only blocks operations that should be blocked anyway

**Returns**: The: current minimum stake requirement /

### `currentRequiredStake() → uint256` (public)

### `countStakedZombies(contract INode node) → uint256` (public)

Calculate the number of zombies staked on the given node

This function could be uncallable if there are too many zombies. However, removeZombie and removeOldZombies can be used to remove any zombies that exist so that this will then be callable

- `node`: The node on which to count staked zombies

**Returns**: The: number of zombies staked on the node /

### `requireUnresolvedExists()` (public)

Verify that there are some number of nodes still unresolved /

### `requireUnresolved(uint256 nodeNum)` (public)

### `withdrawStakerFunds(address payable destination) → uint256` (external)
11 changes: 11 additions & 0 deletions docs_i18n/Chinese Simplified/Aggregator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
id: Aggregator
title: Aggregators in Arbitrum
sidebar_label: Aggregators
---

聚合器与以太坊网络中的节点有着相同的功能, 客户端可以使用API向聚合器发送远程调用请求(RPCs)以和Arbitrum网络交互。 与以太坊节点一样,之后聚合器将会向EthBridge发送请求并且将交易结果返回给客户端。

大多数客户端可以使用聚合器来提交他们Arbitrum的交易,即使这不是必要的。 至于网络中可以存在多少聚合器,谁可以成为聚合器都没有数量限制。

为了提高效率,集合器通常将多个客户交易合并成一个单一的信息,并提交给Arbitrum网络。
56 changes: 56 additions & 0 deletions docs_i18n/Chinese Simplified/ArbAddressTable.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: ArbAddressTable.sol Spec
id: ArbAddressTable
---

Precompiled contract that exists in every Arbitrum chain at 0x0000000000000000000000000000000000000066. Allows registering / retrieving addresses at uint indices, saving calldata.

### `register(address addr) → uint256` (external)

Register an address in the address table

- `addr`: address to register

**Returns**: index: of the address (existing index, or newly created index if not already registered)

### `lookup(address addr) → uint256` (external)

- `addr`: address to lookup

**Returns**: index: of an address in the address table (revert if address isn't in the table)

### `addressExists(address addr) → bool` (external)

Check whether an address exists in the address table

- `addr`: address to check for presence in table

**Returns**: true: if address is in table

### `size() → uint256` (external)

**Returns**: size: of address table (= first unused index)

### `lookupIndex(uint256 index) → address` (external)

- `index`: index to lookup address

**Returns**: address: at a given index in address table (revert if index is beyond end of table)

### `decompress(bytes buf, uint256 offset) → address, uint256` (external)

read a compressed address from a bytes buffer

- `buf`: bytes buffer containing an address

- `offset`: offset of target address

**Returns**: resulting: address and updated offset into the buffer (revert if buffer is too short)

### `compress(address addr) → bytes` (external)

compress an address and return the result

- `addr`: address to comppress

**Returns**: compressed: address bytes
16 changes: 16 additions & 0 deletions docs_i18n/Chinese Simplified/ArbAggregator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
title: ArbAggregator.sol Spec
id: ArbAggregator
---

### `getPreferredAggregator(address addr) → address, bool` (external)

### `setPreferredAggregator(address prefAgg)` (external)

### `getDefaultAggregator() → address` (external)

### `setDefaultAggregator(address newDefault)` (external)

### `getFeeCollector(address aggregator) → address` (external)

### `setFeeCollector(address aggregator, address newFeeCollector)` (external)
8 changes: 8 additions & 0 deletions docs_i18n/Chinese Simplified/ArbBLS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: ArbBLS.sol Spec
id: ArbBLS
---

### `register(uint256 x0, uint256 x1, uint256 y0, uint256 y1)` (external)

### `getPublicKey(address addr) → uint256, uint256, uint256, uint256` (external)
8 changes: 8 additions & 0 deletions docs_i18n/Chinese Simplified/ArbBatchTokenMover.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: ArbBatchTokenMover.sol Spec
id: ArbBatchTokenMover
---

### `withdrawInBatch(uint256 amount)` (external)

### `exitToL1()` (external)
10 changes: 10 additions & 0 deletions docs_i18n/Chinese Simplified/ArbFunctionTable.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: ArbFunctionTable.sol Spec
id: ArbFunctionTable
---

### `upload(bytes buf)` (external)

### `size(address addr) → uint256` (external)

### `get(address addr, uint256 index) → uint256, bool, uint256` (external)
Loading