MXCL1
state
struct MXCData.State state
onlyFromEOA
modifier onlyFromEOA()
init
function init(address _addressManager, bytes32 _genesisBlockHash, uint256 _feeBase) external
commitBlock
function commitBlock(uint64 commitSlot, bytes32 commitHash) external
Write a commit hash so a few blocks later a L2 block can be proposed
such that calculateCommitHash(meta.beneficiary, meta.txListHash)
equals
to this commit hash.
Parameters
Name | Type | Description |
---|---|---|
commitSlot | uint64 | A slot to save this commit. Slot 0 will always be reset |
to zero for refund. | ||
commitHash | bytes32 | Calculated with: |
calculateCommitHash(beneficiary, txListHash) . |
proposeBlock
function proposeBlock(bytes[] inputs) external
Propose a MXC L2 block.
Parameters
Name | Type | Description |
---|---|---|
inputs | bytes[] | A list of data input: |
- inputs[0] is abi-encoded BlockMetadata that the actual L2 block
header must satisfy.
Note the following fields in the provided meta object must
be zeros -- their actual values will be provisioned by Ethereum.
- id
- l1Height
- l1Hash
- mixHash
- timestamp
- inputs[1] is a list of transactions in this block, encoded with
RLP. Note, in the corresponding L2 block an anchor transaction
will be the first transaction in the block -- if there are
n transactions in
txList
, then there will be up to n+1 transactions in the L2 block. |
proveBlock
function proveBlock(uint256 blockId, bytes[] inputs) external
Prove a block is valid with a zero-knowledge proof, a transaction merkel proof, and a receipt merkel proof.
Parameters
Name | Type | Description |
---|---|---|
blockId | uint256 | The index of the block to prove. This is also used |
to select the right implementation version. | ||
inputs | bytes[] | A list of data input: |
- inputs[0] is an abi-encoded object with various information regarding the block to be proven and the actual proofs.
- inputs[1] is the actual anchor transaction in this L2 block. Note that the anchor transaction is always the first transaction in the block.
- inputs[2] is the receipt of the anchor transaction. |
proveBlockInvalid
function proveBlockInvalid(uint256 blockId, bytes[] inputs) external
Prove a block is invalid with a zero-knowledge proof and a receipt merkel proof.
Parameters
Name | Type | Description |
---|---|---|
blockId | uint256 | The index of the block to prove. This is also used to |
select the right implementation version. | ||
inputs | bytes[] | A list of data input: |
- inputs[0] An Evidence object with various information regarding the block to be proven and the actual proofs.
- inputs[1] The target block to be proven invalid.
- inputs[2] The receipt for the
invalidBlock
transaction on L2. Note that theinvalidBlock
transaction is supposed to be the only transaction in the L2 block. |
verifyBlocks
function verifyBlocks(uint256 maxBlocks) external
Verify up to N blocks.
Parameters
Name | Type | Description |
---|---|---|
maxBlocks | uint256 | Max number of blocks to verify. |
stake
function stake(uint256 amount) external
unStake
function unStake() external
getStakeAmount
function getStakeAmount() external view returns (uint256)
withdrawBalance
function withdrawBalance() external
getRewardBalance
function getRewardBalance(address addr) public view returns (uint256)
getBlockFee
function getBlockFee() public view returns (uint256)
getProofReward
function getProofReward(uint64 provenAt, uint64 proposedAt) public view returns (uint256 reward)
isCommitValid
function isCommitValid(uint256 commitSlot, uint256 commitHeight, bytes32 commitHash) public view returns (bool)
getProposedBlock
function getProposedBlock(uint256 id) public view returns (struct MXCData.ProposedBlock)
getSyncedHeader
function getSyncedHeader(uint256 number) public view returns (bytes32)
getLatestSyncedHeader
function getLatestSyncedHeader() public view returns (bytes32)
getStateVariables
function getStateVariables() public view returns (struct LibUtils.StateVariables)
signWithGoldenTouch
function signWithGoldenTouch(bytes32 hash, uint8 k) public view returns (uint8 v, uint256 r, uint256 s)
getForkChoice
function getForkChoice(uint256 id, bytes32 parentHash) public view returns (struct MXCData.ForkChoice)
getConfig
function getConfig() public pure virtual returns (struct MXCData.Config)