ArbRetryableTx
0x000000000000000000000000000000000000006e
Verification
Verified
L2 Precompile (go 1.17)
Type
Contract
1 bytes
ABI entries
15
4 read · 4 write
License
none
Contract information
- Address
- 0x000000000000000000000000000000000000006e
- Chain
- Robinhood Chain (4663)
- Compiler
- L2 Precompile (go 1.17)
- Optimization
- Disabled
- Creator
- —
- Creation tx
- —
Token
Not a token
This contract does not expose ERC-20 metadata.
Read contract (4)
getBeneficiary(bytes32) → address
getCurrentRedeemer() → address
getLifetime() → uint256
getTimeout(bytes32) → uint256
Events (5)
CanceledLifetimeExtendedRedeemScheduledRedeemedTicketCreated
ABI
[
{
"inputs": [],
"name": "NoTicketWithID",
"type": "error"
},
{
"inputs": [],
"name": "NotCallable",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "ticketId",
"type": "bytes32"
}
],
"name": "Canceled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "ticketId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newTimeout",
"type": "uint256"
}
],
"name": "LifetimeExtended",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "ticketId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "retryTxHash",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "uint64",
"name": "sequenceNum",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint64",
"name": "donatedGas",
"type": "uint64"
},
{
"indexed": false,
"internalType": "address",
"name": "gasDonor",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "maxRefund",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "submissionFeeRefund",
"type": "uint256"
}
],
"name": "RedeemScheduled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "userTxHash",
"type": "bytes32"
}
],
"name": "Redeemed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "ticketId",
"type": "bytes32"
}
],
"name": "TicketCreated",
"type": "event"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "ticketId",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "ticketId",
"type": "bytes32"
}
],
"name": "getBeneficiary",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCurrentRedeemer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getLifetime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "ticketId",
"type": "bytes32"
}
],
"name": "getTimeout",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "ticketId",
"type": "bytes32"
}
],
"name": "keepalive",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "ticketId",
"type": "bytes32"
}
],
"name": "redeem",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "l1BaseFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deposit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "callvalue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "gasFeeCap",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "gasLimit",
"type": "uint64"
},
{
"internalType": "uint256",
"name": "maxSubmissionFee",
"type": "uint256"
},
{
"internalType": "address",
"name": "feeRefundAddress",
"type": "address"
},
{
"internalType": "address",
"name": "beneficiary",
"type": "address"
},
{
"internalType": "address",
"name": "retryTo",
"type": "address"
},
{
"internalType": "bytes",
"name": "retryData",
"type": "bytes"
}
],
"name": "submitRetryable",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]Source code
// Copyright 2021-2022, Offchain Labs, Inc.
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
// SPDX-License-Identifier: BUSL-1.1
pragma solidity >=0.4.21 <0.9.0;
/**
* @title Methods for managing retryables.
* @notice Precompiled contract in every Arbitrum chain for retryable transaction related data retrieval and interactions. Exists at 0x000000000000000000000000000000000000006e
*/
interface ArbRetryableTx {
/**
* @notice Schedule an attempt to redeem a redeemable tx, donating all of the call's gas to the redeem.
* Revert if ticketId does not exist.
* @param ticketId unique identifier of retryable message: keccak256(keccak256(ArbchainId, inbox-sequence-number), uint(0) )
* @return txId that the redeem attempt will have
*/
function redeem(bytes32 ticketId) external returns (bytes32);
/**
* @notice Return the minimum lifetime of redeemable txn.
* @return lifetime in seconds
*/
function getLifetime() external view returns (uint256);
/**
* @notice Return the timestamp when ticketId will age out, reverting if it does not exist
* @param ticketId unique ticket identifier
* @return timestamp for ticket's deadline
*/
function getTimeout(bytes32 ticketId) external view returns (uint256);
/**
* @notice Adds one lifetime period to the life of ticketId.
* Donate gas to pay for the lifetime extension.
* If successful, emits LifetimeExtended event.
* Revert if ticketId does not exist, or if the timeout of ticketId is already at least one lifetime period in the future.
* @param ticketId unique ticket identifier
* @return new timeout of ticketId
*/
function keepalive(bytes32 ticketId) external returns (uint256);
/**
* @notice Return the beneficiary of ticketId.
* Revert if ticketId doesn't exist.
* @param ticketId unique ticket identifier
* @return address of beneficiary for ticket
*/
function getBeneficiary(bytes32 ticketId) external view returns (address);
/**
* @notice Cancel ticketId and refund its callvalue to its beneficiary.
* Revert if ticketId doesn't exist, or if called by anyone other than ticketId's beneficiary.
* @param ticketId unique ticket identifier
*/
function cancel(bytes32 ticketId) external;
/**
* @notice Gets the redeemer of the current retryable redeem attempt.
* Returns the zero address if the current transaction is not a retryable redeem attempt.
* If this is an auto-redeem, returns the fee refund address of the retryable.
*/
function getCurrentRedeemer() external view returns (address);
/**
* @notice Do not call. This method represents a retryable submission to aid explorers.
* Calling it will always revert.
*/
function submitRetryable(
bytes32 requestId,
uint256 l1BaseFee,
uint256 deposit,
uint256 callvalue,
uint256 gasFeeCap,
uint64 gasLimit,
uint256 maxSubmissionFee,
address feeRefundAddress,
address beneficiary,
address retryTo,
bytes calldata retryData
) external;
event TicketCreated(bytes32 indexed ticketId);
event LifetimeExtended(bytes32 indexed ticketId, uint256 newTimeout);
event RedeemScheduled(
bytes32 indexed ticketId,
bytes32 indexed retryTxHash,
uint64 indexed sequenceNum,
uint64 donatedGas,
address gasDonor,
uint256 maxRefund,
uint256 submissionFeeRefund
);
event Canceled(bytes32 indexed ticketId);
/// @dev DEPRECATED in favour of new RedeemScheduled event after the nitro upgrade
event Redeemed(bytes32 indexed userTxHash);
error NoTicketWithID();
error NotCallable();
}
Chain explorer1905msChain node83ms