// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import { AccessControl } from "@openzeppelin/contracts/access/AccessControl.sol";
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import { Pausable } from "@openzeppelin/contracts/utils/Pausable.sol";
import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
import { EIP712 } from "@openzeppelin/contracts/utils/cryptography/EIP712.sol";
import { IStakeDuelEscrow } from "./interfaces/IStakeDuelEscrow.sol";
contract MatchEscrow is IStakeDuelEscrow, AccessControl, Pausable, ReentrancyGuard, EIP712 {
using SafeERC20 for IERC20;
bytes32 public constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE");
bytes32 public constant SETTLEMENT_TYPEHASH = keccak256(
"Settlement(bytes32 matchId,bytes32 manifestHash,bytes32 resultHash,uint256 amountA,uint256 amountB,uint256 houseAmount,address house,uint256 nonce)"
);
IERC20 public immutable token;
address public override operator;
mapping(bytes32 matchId => MatchData data) private matches;
mapping(uint256 nonce => bool consumed) public override usedNonces;
constructor(address token_, address admin_, address operator_)
EIP712("StakeDuel MatchEscrow", "1")
{
if (token_ == address(0)) revert InvalidToken();
if (admin_ == address(0)) revert InvalidAdmin();
if (operator_ == address(0)) revert InvalidOperator();
token = IERC20(token_);
operator = operator_;
_grantRole(DEFAULT_ADMIN_ROLE, admin_);
_grantRole(OPERATOR_ROLE, operator_);
}
function openMatch(
bytes32 matchId,
address playerA,
address playerB,
uint256 stake,
uint64 expiresAt,
bytes32 manifestHash
) external override onlyRole(OPERATOR_ROLE) whenNotPaused {
if (matchId == bytes32(0)) revert InvalidMatchId();
if (playerA == address(0) || playerB == address(0) || playerA == playerB) {
revert InvalidParticipant();
}
if (stake == 0 || stake > type(uint256).max / 2) revert InvalidStake();
// Deadlines tolerate normal Base timestamp drift and do not rely on exact wall clock time.
// forge-lint: disable-next-line(block-timestamp)
if (expiresAt <= block.timestamp) revert InvalidExpiry();
if (manifestHash == bytes32(0)) revert InvalidManifestHash();
if (matches[matchId].status != MatchStatus.None) revert MatchAlreadyExists();
matches[matchId] = MatchData({
playerA: playerA,
playerB: playerB,
stake: stake,
expiresAt: expiresAt,
depositMask: 0,
refundMask: 0,
claimedRefundMask: 0,
status: MatchStatus.Open,
manifestHash: manifestHash,
resultHash: bytes32(0)
});
emit MatchOpened(matchId, playerA, playerB, stake, expiresAt, manifestHash);
}
function deposit(bytes32 matchId) external override whenNotPaused nonReentrant {
MatchData storage matchData = matches[matchId];
if (matchData.status != MatchStatus.Open) revert InvalidMatchState();
// forge-lint: disable-next-line(block-timestamp)
if (block.timestamp >= matchData.expiresAt) revert MatchExpired();
uint8 depositBit;
if (msg.sender == matchData.playerA) {
depositBit = 1;
} else if (msg.sender == matchData.playerB) {
depositBit = 2;
} else {
revert NotParticipant();
}
if (matchData.depositMask & depositBit != 0) revert AlreadyDeposited();
matchData.depositMask |= depositBit;
uint256 balanceBefore = token.balanceOf(address(this));
token.safeTransferFrom(msg.sender, address(this), matchData.stake);
uint256 balanceAfter = token.balanceOf(address(this));
if (balanceAfter < balanceBefore || balanceAfter - balanceBefore != matchData.stake) {
revert TokenAmountMismatch();
}
if (matchData.depositMask == 3) matchData.status = MatchStatus.Funded;
emit Deposited(matchId, msg.sender, matchData.stake);
}
function cancelUnfunded(bytes32 matchId) external override nonReentrant {
MatchData storage matchData = matches[matchId];
if (matchData.status != MatchStatus.Open) revert InvalidMatchState();
if (
msg.sender != matchData.playerA && msg.sender != matchData.playerB
&& !hasRole(OPERATOR_ROLE, msg.sender)
) revert UnauthorizedCancellation();
matchData.status = MatchStatus.Cancelled;
(uint256 refundA, uint256 refundB) = _markRefundable(matchData);
emit MatchCancelled(matchId, msg.sender, refundA, refundB);
}
function refundExpired(bytes32 matchId) external override nonReentrant {
MatchData storage matchData = matches[matchId];
if (matchData.status != MatchStatus.Open && matchData.status != MatchStatus.Funded) {
revert InvalidMatchState();
}
// forge-lint: disable-next-line(block-timestamp)
if (block.timestamp < matchData.expiresAt) revert MatchNotExpired();
matchData.status = MatchStatus.Refunded;
(uint256 refundA, uint256 refundB) = _markRefundable(matchData);
emit RefundsEnabled(matchId, refundA, refundB);
}
function claimRefund(bytes32 matchId) external override nonReentrant {
MatchData storage matchData = matches[matchId];
if (matchData.status != MatchStatus.Cancelled && matchData.status != MatchStatus.Refunded) {
revert InvalidMatchState();
}
uint8 participantBit;
if (msg.sender == matchData.playerA) {
participantBit = 1;
} else if (msg.sender == matchData.playerB) {
participantBit = 2;
} else {
revert NotParticipant();
}
if (matchData.refundMask & participantBit == 0) revert RefundUnavailable();
if (matchData.claimedRefundMask & participantBit != 0) revert RefundAlreadyClaimed();
matchData.claimedRefundMask |= participantBit;
token.safeTransfer(msg.sender, matchData.stake);
emit RefundClaimed(matchId, msg.sender, matchData.stake);
}
function settle(Settlement calldata settlement, bytes calldata signature)
external
override
whenNotPaused
nonReentrant
{
MatchData storage matchData = matches[settlement.matchId];
if (matchData.status != MatchStatus.Funded) revert InvalidMatchState();
// forge-lint: disable-next-line(block-timestamp)
if (block.timestamp >= matchData.expiresAt) revert MatchExpired();
if (settlement.manifestHash != matchData.manifestHash) revert ManifestMismatch();
if (settlement.resultHash == bytes32(0)) revert InvalidResultHash();
if (settlement.house == address(0)) revert InvalidHouse();
if (usedNonces[settlement.nonce]) revert NonceAlreadyUsed();
uint256 pot = matchData.stake * 2;
if (
settlement.amountA > pot || settlement.amountB > pot || settlement.houseAmount > pot
|| settlement.amountA + settlement.amountB + settlement.houseAmount != pot
) revert InvalidPayoutTotal();
address signer = ECDSA.recover(settlementDigest(settlement), signature);
if (signer != operator || !hasRole(OPERATOR_ROLE, signer)) {
revert InvalidSettlementSigner();
}
usedNonces[settlement.nonce] = true;
matchData.status = MatchStatus.Settled;
matchData.resultHash = settlement.resultHash;
if (settlement.amountA != 0) token.safeTransfer(matchData.playerA, settlement.amountA);
if (settlement.amountB != 0) token.safeTransfer(matchData.playerB, settlement.amountB);
if (settlement.houseAmount != 0) {
token.safeTransfer(settlement.house, settlement.houseAmount);
}
emit Settled(
settlement.matchId,
settlement.resultHash,
settlement.amountA,
settlement.amountB,
settlement.house,
settlement.houseAmount,
settlement.nonce
);
}
function pause() external override onlyRole(DEFAULT_ADMIN_ROLE) {
_pause();
}
function unpause() external override onlyRole(DEFAULT_ADMIN_ROLE) {
_unpause();
}
function rotateOperator(address nextOperator) external override onlyRole(DEFAULT_ADMIN_ROLE) {
if (nextOperator == address(0) || nextOperator == operator) revert InvalidOperator();
address previousOperator = operator;
operator = nextOperator;
_grantRole(OPERATOR_ROLE, nextOperator);
_revokeRole(OPERATOR_ROLE, previousOperator);
emit OperatorRotated(previousOperator, nextOperator);
}
function settlementDigest(Settlement calldata settlement)
public
view
override
returns (bytes32)
{
bytes32 structHash = keccak256(
abi.encode(
SETTLEMENT_TYPEHASH,
settlement.matchId,
settlement.manifestHash,
settlement.resultHash,
settlement.amountA,
settlement.amountB,
settlement.houseAmount,
settlement.house,
settlement.nonce
)
);
return _hashTypedDataV4(structHash);
}
function getMatch(bytes32 matchId) external view override returns (MatchData memory) {
return matches[matchId];
}
function _markRefundable(MatchData storage matchData)
private
returns (uint256 refundA, uint256 refundB)
{
matchData.refundMask = matchData.depositMask;
if (matchData.depositMask & 1 != 0) {
refundA = matchData.stake;
}
if (matchData.depositMask & 2 != 0) {
refundB = matchData.stake;
}
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "token_",
"type": "address",
"internalType": "address"
},
{
"name": "admin_",
"type": "address",
"internalType": "address"
},
{
"name": "operator_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AccessControlBadConfirmation",
"type": "error",
"inputs": []
},
{
"name": "AccessControlUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "neededRole",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "AlreadyDeposited",
"type": "error",
"inputs": []
},
{
"name": "ECDSAInvalidSignature",
"type": "error",
"inputs": []
},
{
"name": "ECDSAInvalidSignatureLength",
"type": "error",
"inputs": [
{
"name": "length",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ECDSAInvalidSignatureS",
"type": "error",
"inputs": [
{
"name": "s",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "EnforcedPause",
"type": "error",
"inputs": []
},
{
"name": "ExpectedPause",
"type": "error",
"inputs": []
},
{
"name": "InvalidAdmin",
"type": "error",
"inputs": []
},
{
"name": "InvalidExpiry",
"type": "error",
"inputs": []
},
{
"name": "InvalidHouse",
"type": "error",
"inputs": []
},
{
"name": "InvalidManifestHash",
"type": "error",
"inputs": []
},
{
"name": "InvalidMatchId",
"type": "error",
"inputs": []
},
{
"name": "InvalidMatchState",
"type": "error",
"inputs": []
},
{
"name": "InvalidOperator",
"type": "error",
"inputs": []
},
{
"name": "InvalidParticipant",
"type": "error",
"inputs": []
},
{
"name": "InvalidPayoutTotal",
"type": "error",
"inputs": []
},
{
"name": "InvalidResultHash",
"type": "error",
"inputs": []
},
{
"name": "InvalidSettlementSigner",
"type": "error",
"inputs": []
},
{
"name": "InvalidShortString",
"type": "error",
"inputs": []
},
{
"name": "InvalidStake",
"type": "error",
"inputs": []
},
{
"name": "InvalidToken",
"type": "error",
"inputs": []
},
{
"name": "ManifestMismatch",
"type": "error",
"inputs": []
},
{
"name": "MatchAlreadyExists",
"type": "error",
"inputs": []
},
{
"name": "MatchExpired",
"type": "error",
"inputs": []
},
{
"name": "MatchNotExpired",
"type": "error",
"inputs": []
},
{
"name": "NonceAlreadyUsed",
"type": "error",
"inputs": []
},
{
"name": "NotParticipant",
"type": "error",
"inputs": []
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "RefundAlreadyClaimed",
"type": "error",
"inputs": []
},
{
"name": "RefundUnavailable",
"type": "error",
"inputs": []
},
{
"name": "SafeERC20FailedOperation",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "StringTooLong",
"type": "error",
"inputs": [
{
"name": "str",
"type": "string",
"internalType": "string"
}
]
},
{
"name": "TokenAmountMismatch",
"type": "error",
"inputs": []
},
{
"name": "UnauthorizedCancellation",
"type": "error",
"inputs": []
},
{
"name": "Deposited",
"type": "event",
"inputs": [
{
"name": "matchId",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "player",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "EIP712DomainChanged",
"type": "event",
"inputs": [],
"anonymous": false
},
{
"name": "MatchCancelled",
"type": "event",
"inputs": [
{
"name": "matchId",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "caller",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "refundableA",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "refundableB",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "MatchOpened",
"type": "event",
"inputs": [
{
"name": "matchId",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "playerA",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "playerB",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "stake",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "expiresAt",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
},
{
"name": "manifestHash",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
}
],
"anonymous": false
},
{
"name": "OperatorRotated",
"type": "event",
"inputs": [
{
"name": "previousOperator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "nextOperator",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "Paused",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "RefundClaimed",
"type": "event",
"inputs": [
{
"name": "matchId",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "participant",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "RefundsEnabled",
"type": "event",
"inputs": [
{
"name": "matchId",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "refundableA",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "refundableB",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "RoleAdminChanged",
"type": "event",
"inputs": [
{
"name": "role",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "previousAdminRole",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "newAdminRole",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
}
],
"anonymous": false
},
{
"name": "RoleGranted",
"type": "event",
"inputs": [
{
"name": "role",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "sender",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "RoleRevoked",
"type": "event",
"inputs": [
{
"name": "role",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "sender",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "Settled",
"type": "event",
"inputs": [
{
"name": "matchId",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "resultHash",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "amountA",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "amountB",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "house",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "houseAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "nonce",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Unpaused",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "DEFAULT_ADMIN_ROLE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "OPERATOR_ROLE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "SETTLEMENT_TYPEHASH",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "cancelUnfunded",
"type": "function",
"inputs": [
{
"name": "matchId",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "claimRefund",
"type": "function",
"inputs": [
{
"name": "matchId",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "deposit",
"type": "function",
"inputs": [
{
"name": "matchId",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "eip712Domain",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "fields",
"type": "bytes1",
"internalType": "bytes1"
},
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "version",
"type": "string",
"internalType": "string"
},
{
"name": "chainId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "verifyingContract",
"type": "address",
"internalType": "address"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "extensions",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"stateMutability": "view"
},
{
"name": "getMatch",
"type": "function",
"inputs": [
{
"name": "matchId",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"components": [
{
"name": "playerA",
"type": "address",
"internalType": "address"
},
{
"name": "playerB",
"type": "address",
"internalType": "address"
},
{
"name": "stake",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "expiresAt",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "depositMask",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "refundMask",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "claimedRefundMask",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "status",
"type": "uint8",
"internalType": "enum IStakeDuelEscrow.MatchStatus"
},
{
"name": "manifestHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "resultHash",
"type": "bytes32",
"internalType": "bytes32"
}
],
"internalType": "struct IStakeDuelEscrow.MatchData"
}
],
"stateMutability": "view"
},
{
"name": "getRoleAdmin",
"type": "function",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "grantRole",
"type": "function",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "hasRole",
"type": "function",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "openMatch",
"type": "function",
"inputs": [
{
"name": "matchId",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "playerA",
"type": "address",
"internalType": "address"
},
{
"name": "playerB",
"type": "address",
"internalType": "address"
},
{
"name": "stake",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "expiresAt",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "manifestHash",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "operator",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "pause",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "paused",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "refundExpired",
"type": "function",
"inputs": [
{
"name": "matchId",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "renounceRole",
"type": "function",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "callerConfirmation",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "revokeRole",
"type": "function",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "rotateOperator",
"type": "function",
"inputs": [
{
"name": "nextOperator",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "settle",
"type": "function",
"inputs": [
{
"name": "settlement",
"type": "tuple",
"components": [
{
"name": "matchId",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "manifestHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "resultHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "amountA",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "amountB",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "houseAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "house",
"type": "address",
"internalType": "address"
},
{
"name": "nonce",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct IStakeDuelEscrow.Settlement"
},
{
"name": "signature",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "settlementDigest",
"type": "function",
"inputs": [
{
"name": "settlement",
"type": "tuple",
"components": [
{
"name": "matchId",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "manifestHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "resultHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "amountA",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "amountB",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "houseAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "house",
"type": "address",
"internalType": "address"
},
{
"name": "nonce",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct IStakeDuelEscrow.Settlement"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "supportsInterface",
"type": "function",
"inputs": [
{
"name": "interfaceId",
"type": "bytes4",
"internalType": "bytes4"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "token",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IERC20"
}
],
"stateMutability": "view"
},
{
"name": "unpause",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "usedNonces",
"type": "function",
"inputs": [
{
"name": "nonce",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "consumed",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
}
]0x61018060405234801562000011575f80fd5b506040516200296d3803806200296d833981016040819052620000349162000367565b604080518082018252601581527f5374616b654475656c204d61746368457363726f77000000000000000000000060208083019190915282518084019093526001808452603160f81b9184019190915260025590620000958260036200021d565b61012052620000a68160046200021d565b61014052815160208084019190912060e052815190820120610100524660a0526200013360e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b038316620001645760405163c1ab6dc160e01b815260040160405180910390fd5b6001600160a01b0382166200018c57604051630b5eba9f60e41b815260040160405180910390fd5b6001600160a01b038116620001b45760405163ccea9e6f60e01b815260040160405180910390fd5b6001600160a01b0383811661016052600580546001600160a01b031916918316919091179055620001e65f8362000255565b50620002137f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298262000255565b505050506200058a565b5f6020835110156200023c57620002348362000300565b90506200024f565b816200024984826200044c565b5060ff90505b92915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16620002f8575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620002af3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016200024f565b505f6200024f565b5f80829050601f8151111562000336578260405163305a27a960e01b81526004016200032d919062000518565b60405180910390fd5b8051620003438262000566565b179392505050565b80516001600160a01b038116811462000362575f80fd5b919050565b5f805f606084860312156200037a575f80fd5b62000385846200034b565b925062000395602085016200034b565b9150620003a5604085016200034b565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003d757607f821691505b602082108103620003f657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200044757805f5260205f20601f840160051c81016020851015620004235750805b601f840160051c820191505b8181101562000444575f81556001016200042f565b50505b505050565b81516001600160401b03811115620004685762000468620003ae565b6200048081620004798454620003c2565b84620003fc565b602080601f831160018114620004b6575f84156200049e5750858301515b5f19600386901b1c1916600185901b17855562000510565b5f85815260208120601f198616915b82811015620004e657888601518255948401946001909101908401620004c5565b50858210156200050457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602080835283518060208501525f5b81811015620005465785810183015185820160400152820162000528565b505f604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620003f6575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051612356620006175f395f81816103790152818161071e01528181610768015281816107bc015281816109e301528181610c1101528181610c880152610cd701525f61190301525f6118d101525f611d4301525f611d1b01525f611c7601525f611ca001525f611cca01526123565ff3fe608060405234801561000f575f80fd5b506004361061016d575f3560e01c806391d14854116100d9578063d547741f11610093578063f5b541a61161006e578063f5b541a61461034d578063f754504314610361578063fc0c546a14610374578063fcc6077d1461039b575f80fd5b8063d547741f14610314578063dd1bb2a914610327578063e2c991721461033a575f80fd5b806391d148541461029a578063a217fddf146102ad578063b1fb79c0146102b4578063b214faa5146102db578063cc3e049b146102ee578063d53bff0914610301575f80fd5b8063570ca7351161012a578063570ca7351461020c5780635c975abb146102375780636717e41c1461024257806371de2ffc146102645780638456cb591461027757806384b0196e1461027f575f80fd5b806301ffc9a714610171578063248a9ca3146101995780632f2ff15d146101c957806336568abe146101de5780633f4ba83a146101f1578063546bdd82146101f9575b5f80fd5b61018461017f366004611ebf565b6103bb565b60405190151581526020015b60405180910390f35b6101bb6101a7366004611ee6565b5f9081526020819052604090206001015490565b604051908152602001610190565b6101dc6101d7366004611f18565b6103f1565b005b6101dc6101ec366004611f18565b61041b565b6101dc610453565b6101dc610207366004611f59565b610468565b60055461021f906001600160a01b031681565b6040516001600160a01b039091168152602001610190565b60015460ff16610184565b610184610250366004611ee6565b60076020525f908152604090205460ff1681565b6101dc610272366004611ee6565b610879565b6101dc610a5f565b610287610a71565b604051610190979695949392919061201b565b6101846102a8366004611f18565b610ab3565b6101bb5f81565b6101bb7f1529b9dd99954fa3aa57c1ac215c16cdadae2e0e37d39375ffd211ff0455684e81565b6101dc6102e9366004611ee6565b610adb565b6101dc6102fc366004611ee6565b610e05565b6101dc61030f366004611ee6565b610f2b565b6101dc610322366004611f18565b611055565b6101dc6103353660046120b2565b611079565b6101bb6103483660046120cb565b611158565b6101bb5f8051602061230183398151915281565b6101dc61036f3660046120e6565b611221565b61021f7f000000000000000000000000000000000000000000000000000000000000000081565b6103ae6103a9366004611ee6565b611543565b6040516101909190612185565b5f6001600160e01b03198216637965db0b60e01b14806103eb57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f8281526020819052604090206001015461040b81611666565b6104158383611670565b50505050565b6001600160a01b03811633146104445760405163334bd91960e11b815260040160405180910390fd5b61044e82826116ff565b505050565b5f61045d81611666565b610465611768565b50565b6104706117ba565b6104786117e0565b82355f90815260066020526040902060026003820154600160581b900460ff1660058111156104a9576104a9612151565b146104c757604051630b6ab2d360e31b815260040160405180910390fd5b600381015467ffffffffffffffff1642106104f557604051632b500f3560e11b815260040160405180910390fd5b806004015484602001351461051d5760405163114a3f7160e11b815260040160405180910390fd5b604084013561053f57604051632687977f60e01b815260040160405180910390fd5b5f61055060e0860160c087016120b2565b6001600160a01b03160361057757604051630367819560e51b815260040160405180910390fd5b60e08401355f9081526007602052604090205460ff16156105aa57604051623f613760e71b815260040160405180910390fd5b5f816002015460026105bc919061225b565b905080856060013511806105d35750808560800135115b806105e15750808560a00135115b8061060c57508060a08601356105ff60808801356060890135612272565b6106099190612272565b14155b1561062a5760405163e951cc4560e01b815260040160405180910390fd5b5f61067261063787611158565b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061180892505050565b6005549091506001600160a01b0380831691161415806106a657506106a45f8051602061230183398151915282610ab3565b155b156106c457604051631f787f9360e01b815260040160405180910390fd5b60e08601355f908152600760205260409020805460ff191660011790556003838101805460ff60581b1916600160581b8302179055506040860135600584015560608601351561074b57825461074b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691166060890135611830565b608086013515610795576001830154610795906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691166080890135611830565b60a0860135156107e7576107e76107b260e0880160c089016120b2565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169060a0890135611830565b6107f760e0870160c088016120b2565b6001600160a01b03168660400135875f01357f943a24e1f48e1bb3e14d8013bcbc7192acc0947816088ad94d82d937c2e64e7089606001358a608001358b60a001358c60e00135604051610864949392919093845260208401929092526040830152606082015260800190565b60405180910390a450505061044e6001600255565b6108816117e0565b5f81815260066020526040902060046003820154600160581b900460ff1660058111156108b0576108b0612151565b141580156108de575060056003820154600160581b900460ff1660058111156108db576108db612151565b14155b156108fc57604051630b6ab2d360e31b815260040160405180910390fd5b80545f906001600160a01b031633036109175750600161094c565b60018201546001600160a01b031633036109335750600261094c565b60405163721c7c6760e11b815260040160405180910390fd5b6003820154600160481b9004811660ff165f0361097c57604051631546903760e21b815260040160405180910390fd5b6003820154600160501b9004811660ff16156109ab57604051637697c5dd60e01b815260040160405180910390fd5b60038201805460ff808416600160501b80840492909216170260ff60501b199091161790556002820154610a0b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016903390611830565b336001600160a01b0316837fe950d47bcc1a745a8ef1d8b86486b400a99681910425d126eb1a006d61f341b28460020154604051610a4b91815260200190565b60405180910390a350506104656001600255565b5f610a6981611666565b61046561188f565b5f6060805f805f6060610a826118ca565b610a8a6118fc565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b610ae36117ba565b610aeb6117e0565b5f81815260066020526040902060016003820154600160581b900460ff166005811115610b1a57610b1a612151565b14610b3857604051630b6ab2d360e31b815260040160405180910390fd5b600381015467ffffffffffffffff164210610b6657604051632b500f3560e11b815260040160405180910390fd5b80545f906001600160a01b03163303610b8157506001610b99565b60018201546001600160a01b03163303610933575060025b6003820154600160401b9004811660ff1615610bc85760405163d5a8211560e01b815260040160405180910390fd5b60038201805460ff838116600160401b80840492909216170268ff0000000000000000199091161790556040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610c56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7a9190612285565b9050610cc0333085600201547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611929909392919063ffffffff16565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610d24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d489190612285565b905081811080610d6557506002840154610d62838361229c565b14155b15610d835760405163570883e560e01b815260040160405180910390fd5b600384810154600160401b900460ff169003610daf5760038401805460ff60581b1916600160591b1790555b336001600160a01b0316857f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b8660020154604051610def91815260200190565b60405180910390a3505050506104656001600255565b610e0d6117e0565b5f81815260066020526040902060016003820154600160581b900460ff166005811115610e3c57610e3c612151565b14158015610e6a575060026003820154600160581b900460ff166005811115610e6757610e67612151565b14155b15610e8857604051630b6ab2d360e31b815260040160405180910390fd5b600381015467ffffffffffffffff16421015610eb757604051630414a09f60e01b815260040160405180910390fd5b60038101805460ff60581b1916600560581b1790555f80610ed783611962565b91509150837ffdb5525dc924c3d3cbf21f8be0ec1a90f89be26b9916368b843e08da4a10df7a8383604051610f16929190918252602082015260400190565b60405180910390a25050506104656001600255565b610f336117e0565b5f81815260066020526040902060016003820154600160581b900460ff166005811115610f6257610f62612151565b14610f8057604051630b6ab2d360e31b815260040160405180910390fd5b80546001600160a01b03163314801590610fa7575060018101546001600160a01b03163314155b8015610fc75750610fc55f8051602061230183398151915233610ab3565b155b15610fe5576040516371efdd2360e11b815260040160405180910390fd5b60038101805460ff60581b19166001605a1b1790555f8061100583611962565b6040805183815260208101839052929450909250339186917f4b83a611943635e59aed30de7686bb345a518f0ac9882a5a514c63a3e1f51cec910160405180910390a35050506104656001600255565b5f8281526020819052604090206001015461106f81611666565b61041583836116ff565b5f61108381611666565b6001600160a01b03821615806110a657506005546001600160a01b038381169116145b156110c45760405163ccea9e6f60e01b815260040160405180910390fd5b600580546001600160a01b038481166001600160a01b0319831617909255166110fa5f8051602061230183398151915284611670565b506111125f80516020612301833981519152826116ff565b50826001600160a01b0316816001600160a01b03167f0cb95562c0c1c9ac9c0095cb0f9064ba3b004ddf6642f85044d2c2ce062eef4e60405160405180910390a3505050565b5f807f1529b9dd99954fa3aa57c1ac215c16cdadae2e0e37d39375ffd211ff0455684e8335602085013560408601356060870135608088013560a08901356111a660e08b0160c08c016120b2565b6040805160208101999099528801969096526060870194909452608086019290925260a085015260c084015260e0838101919091526001600160a01b039091166101008301528401356101208201526101400160405160208183030381529060405280519060200120905061121a816119c3565b9392505050565b5f8051602061230183398151915261123881611666565b6112406117ba565b8661125e576040516324f45c6160e21b815260040160405180910390fd5b6001600160a01b038616158061127b57506001600160a01b038516155b806112975750846001600160a01b0316866001600160a01b0316145b156112b5576040516350a2e21f60e11b815260040160405180910390fd5b8315806112cc57506112c960025f196122af565b84115b156112ea57604051634eba4d4960e11b815260040160405180910390fd5b428367ffffffffffffffff16116113135760405162d36c8560e81b815260040160405180910390fd5b81611331576040516301e8679560e11b815260040160405180910390fd5b5f8088815260066020526040902060030154600160581b900460ff16600581111561135e5761135e612151565b1461137c5760405163fc2bc70d60e01b815260040160405180910390fd5b60408051610140810182526001600160a01b0380891682528716602082015290810185905267ffffffffffffffff841660608201525f6080820181905260a0820181905260c082015260e081016001815260208082018590525f60409283018190528a815260068252829020835181546001600160a01b03199081166001600160a01b03928316178355928501516001830180549094169116179091559082015160028201556060820151600382018054608085015160a086015160c087015167ffffffffffffffff90951668ffffffffffffffffff1990931692909217600160401b60ff92831602176affff0000000000000000001916600160481b9282169290920260ff60501b191691909117600160501b91909316029190911780825560e0840151919060ff60581b1916600160581b8360058111156114c1576114c1612151565b02179055506101008201516004820155610120909101516005909101556040805185815267ffffffffffffffff851660208201529081018390526001600160a01b03808716919088169089907f4b2ec96b3fa6df5dff55b800503e4cdd4450dbf93ecd30a6c1e2bc90f7346fe99060600160405180910390a450505050505050565b60408051610140810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101919091525f8281526006602090815260409182902082516101408101845281546001600160a01b03908116825260018301541692810192909252600281015492820192909252600382015467ffffffffffffffff8116606083015260ff600160401b820481166080840152600160481b8204811660a0840152600160501b8204811660c084015291929160e0840191600160581b900416600581111561163757611637612151565b600581111561164857611648612151565b81526004820154602082015260059091015460409091015292915050565b61046581336119ef565b5f61167b8383610ab3565b6116f8575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556116b03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103eb565b505f6103eb565b5f61170a8383610ab3565b156116f8575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103eb565b611770611a31565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60015460ff16156117de5760405163d93c066560e01b815260040160405180910390fd5b565b600280540361180257604051633ee5aeb560e01b815260040160405180910390fd5b60028055565b5f805f806118168686611a54565b9250925092506118268282611a9d565b5090949350505050565b6040516001600160a01b0383811660248301526044820183905261044e91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611b55565b6118976117ba565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361179d565b60606118f77f00000000000000000000000000000000000000000000000000000000000000006003611bc1565b905090565b60606118f77f00000000000000000000000000000000000000000000000000000000000000006004611bc1565b6040516001600160a01b0384811660248301528381166044830152606482018390526104159186918216906323b872dd9060840161185d565b60038101805469ff000000000000000000198116600160401b9182900460ff16600160481b0217918290555f9182919004600116156119a357826002015491505b6003830154600160401b9004600216156119be575060028201545b915091565b5f6103eb6119cf611c6a565b8360405161190160f01b8152600281019290925260228201526042902090565b6119f98282610ab3565b611a2d5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044015b60405180910390fd5b5050565b60015460ff166117de57604051638dfc202b60e01b815260040160405180910390fd5b5f805f8351604103611a8b576020840151604085015160608601515f1a611a7d88828585611d93565b955095509550505050611a96565b505081515f91506002905b9250925092565b5f826003811115611ab057611ab0612151565b03611ab9575050565b6001826003811115611acd57611acd612151565b03611aeb5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611aff57611aff612151565b03611b205760405163fce698f760e01b815260048101829052602401611a24565b6003826003811115611b3457611b34612151565b03611a2d576040516335e2f38360e21b815260048101829052602401611a24565b5f8060205f8451602086015f885af180611b74576040513d5f823e3d81fd5b50505f513d91508115611b8b578060011415611b98565b6001600160a01b0384163b155b1561041557604051635274afe760e01b81526001600160a01b0385166004820152602401611a24565b606060ff8314611bdb57611bd483611e5b565b90506103eb565b818054611be7906122ce565b80601f0160208091040260200160405190810160405280929190818152602001828054611c13906122ce565b8015611c5e5780601f10611c3557610100808354040283529160200191611c5e565b820191905f5260205f20905b815481529060010190602001808311611c4157829003601f168201915b505050505090506103eb565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611cc257507f000000000000000000000000000000000000000000000000000000000000000046145b15611cec57507f000000000000000000000000000000000000000000000000000000000000000090565b6118f7604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611dcc57505f91506003905082611e51565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611e1d573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116611e4857505f925060019150829050611e51565b92505f91508190505b9450945094915050565b60605f611e6783611e98565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f8111156103eb57604051632cd44ac360e21b815260040160405180910390fd5b5f60208284031215611ecf575f80fd5b81356001600160e01b03198116811461121a575f80fd5b5f60208284031215611ef6575f80fd5b5035919050565b80356001600160a01b0381168114611f13575f80fd5b919050565b5f8060408385031215611f29575f80fd5b82359150611f3960208401611efd565b90509250929050565b5f6101008284031215611f53575f80fd5b50919050565b5f805f6101208486031215611f6c575f80fd5b611f768585611f42565b925061010084013567ffffffffffffffff80821115611f93575f80fd5b818601915086601f830112611fa6575f80fd5b813581811115611fb4575f80fd5b876020828501011115611fc5575f80fd5b6020830194508093505050509250925092565b5f81518084525f5b81811015611ffc57602081850181015186830182015201611fe0565b505f602082860101526020601f19601f83011685010191505092915050565b60ff60f81b881681525f602060e0602084015261203b60e084018a611fd8565b838103604085015261204d818a611fd8565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b818110156120a057835183529284019291840191600101612084565b50909c9b505050505050505050505050565b5f602082840312156120c2575f80fd5b61121a82611efd565b5f61010082840312156120dc575f80fd5b61121a8383611f42565b5f805f805f8060c087890312156120fb575f80fd5b8635955061210b60208801611efd565b945061211960408801611efd565b935060608701359250608087013567ffffffffffffffff8116811461213c575f80fd5b8092505060a087013590509295509295509295565b634e487b7160e01b5f52602160045260245ffd5b6006811061218157634e487b7160e01b5f52602160045260245ffd5b9052565b81516001600160a01b03168152610140810160208301516121b160208401826001600160a01b03169052565b506040830151604083015260608301516121d7606084018267ffffffffffffffff169052565b5060808301516121ec608084018260ff169052565b5060a083015161220160a084018260ff169052565b5060c083015161221660c084018260ff169052565b5060e083015161222960e0840182612165565b50610100838101519083015261012092830151929091019190915290565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176103eb576103eb612247565b808201808211156103eb576103eb612247565b5f60208284031215612295575f80fd5b5051919050565b818103818111156103eb576103eb612247565b5f826122c957634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c908216806122e257607f821691505b602082108103611f5357634e487b7160e01b5f52602260045260245ffdfe97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a26469706673582212200d9909a27c7f760be3acf3344451c631b974eff3f98014fd694cb15e668365a264736f6c634300081800330000000000000000000000005fc5360d0400a0fd4f2af552add042d716f1d168000000000000000000000000fa2592b64a4e80beae51c7f91ecb036405c67f2300000000000000000000000091cf5da9da8922e04c0877ece7c0a09f169a8ab0
0x608060405234801561000f575f80fd5b506004361061016d575f3560e01c806391d14854116100d9578063d547741f11610093578063f5b541a61161006e578063f5b541a61461034d578063f754504314610361578063fc0c546a14610374578063fcc6077d1461039b575f80fd5b8063d547741f14610314578063dd1bb2a914610327578063e2c991721461033a575f80fd5b806391d148541461029a578063a217fddf146102ad578063b1fb79c0146102b4578063b214faa5146102db578063cc3e049b146102ee578063d53bff0914610301575f80fd5b8063570ca7351161012a578063570ca7351461020c5780635c975abb146102375780636717e41c1461024257806371de2ffc146102645780638456cb591461027757806384b0196e1461027f575f80fd5b806301ffc9a714610171578063248a9ca3146101995780632f2ff15d146101c957806336568abe146101de5780633f4ba83a146101f1578063546bdd82146101f9575b5f80fd5b61018461017f366004611ebf565b6103bb565b60405190151581526020015b60405180910390f35b6101bb6101a7366004611ee6565b5f9081526020819052604090206001015490565b604051908152602001610190565b6101dc6101d7366004611f18565b6103f1565b005b6101dc6101ec366004611f18565b61041b565b6101dc610453565b6101dc610207366004611f59565b610468565b60055461021f906001600160a01b031681565b6040516001600160a01b039091168152602001610190565b60015460ff16610184565b610184610250366004611ee6565b60076020525f908152604090205460ff1681565b6101dc610272366004611ee6565b610879565b6101dc610a5f565b610287610a71565b604051610190979695949392919061201b565b6101846102a8366004611f18565b610ab3565b6101bb5f81565b6101bb7f1529b9dd99954fa3aa57c1ac215c16cdadae2e0e37d39375ffd211ff0455684e81565b6101dc6102e9366004611ee6565b610adb565b6101dc6102fc366004611ee6565b610e05565b6101dc61030f366004611ee6565b610f2b565b6101dc610322366004611f18565b611055565b6101dc6103353660046120b2565b611079565b6101bb6103483660046120cb565b611158565b6101bb5f8051602061230183398151915281565b6101dc61036f3660046120e6565b611221565b61021f7f0000000000000000000000005fc5360d0400a0fd4f2af552add042d716f1d16881565b6103ae6103a9366004611ee6565b611543565b6040516101909190612185565b5f6001600160e01b03198216637965db0b60e01b14806103eb57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f8281526020819052604090206001015461040b81611666565b6104158383611670565b50505050565b6001600160a01b03811633146104445760405163334bd91960e11b815260040160405180910390fd5b61044e82826116ff565b505050565b5f61045d81611666565b610465611768565b50565b6104706117ba565b6104786117e0565b82355f90815260066020526040902060026003820154600160581b900460ff1660058111156104a9576104a9612151565b146104c757604051630b6ab2d360e31b815260040160405180910390fd5b600381015467ffffffffffffffff1642106104f557604051632b500f3560e11b815260040160405180910390fd5b806004015484602001351461051d5760405163114a3f7160e11b815260040160405180910390fd5b604084013561053f57604051632687977f60e01b815260040160405180910390fd5b5f61055060e0860160c087016120b2565b6001600160a01b03160361057757604051630367819560e51b815260040160405180910390fd5b60e08401355f9081526007602052604090205460ff16156105aa57604051623f613760e71b815260040160405180910390fd5b5f816002015460026105bc919061225b565b905080856060013511806105d35750808560800135115b806105e15750808560a00135115b8061060c57508060a08601356105ff60808801356060890135612272565b6106099190612272565b14155b1561062a5760405163e951cc4560e01b815260040160405180910390fd5b5f61067261063787611158565b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061180892505050565b6005549091506001600160a01b0380831691161415806106a657506106a45f8051602061230183398151915282610ab3565b155b156106c457604051631f787f9360e01b815260040160405180910390fd5b60e08601355f908152600760205260409020805460ff191660011790556003838101805460ff60581b1916600160581b8302179055506040860135600584015560608601351561074b57825461074b906001600160a01b037f0000000000000000000000005fc5360d0400a0fd4f2af552add042d716f1d168811691166060890135611830565b608086013515610795576001830154610795906001600160a01b037f0000000000000000000000005fc5360d0400a0fd4f2af552add042d716f1d168811691166080890135611830565b60a0860135156107e7576107e76107b260e0880160c089016120b2565b6001600160a01b037f0000000000000000000000005fc5360d0400a0fd4f2af552add042d716f1d168169060a0890135611830565b6107f760e0870160c088016120b2565b6001600160a01b03168660400135875f01357f943a24e1f48e1bb3e14d8013bcbc7192acc0947816088ad94d82d937c2e64e7089606001358a608001358b60a001358c60e00135604051610864949392919093845260208401929092526040830152606082015260800190565b60405180910390a450505061044e6001600255565b6108816117e0565b5f81815260066020526040902060046003820154600160581b900460ff1660058111156108b0576108b0612151565b141580156108de575060056003820154600160581b900460ff1660058111156108db576108db612151565b14155b156108fc57604051630b6ab2d360e31b815260040160405180910390fd5b80545f906001600160a01b031633036109175750600161094c565b60018201546001600160a01b031633036109335750600261094c565b60405163721c7c6760e11b815260040160405180910390fd5b6003820154600160481b9004811660ff165f0361097c57604051631546903760e21b815260040160405180910390fd5b6003820154600160501b9004811660ff16156109ab57604051637697c5dd60e01b815260040160405180910390fd5b60038201805460ff808416600160501b80840492909216170260ff60501b199091161790556002820154610a0b906001600160a01b037f0000000000000000000000005fc5360d0400a0fd4f2af552add042d716f1d16816903390611830565b336001600160a01b0316837fe950d47bcc1a745a8ef1d8b86486b400a99681910425d126eb1a006d61f341b28460020154604051610a4b91815260200190565b60405180910390a350506104656001600255565b5f610a6981611666565b61046561188f565b5f6060805f805f6060610a826118ca565b610a8a6118fc565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b610ae36117ba565b610aeb6117e0565b5f81815260066020526040902060016003820154600160581b900460ff166005811115610b1a57610b1a612151565b14610b3857604051630b6ab2d360e31b815260040160405180910390fd5b600381015467ffffffffffffffff164210610b6657604051632b500f3560e11b815260040160405180910390fd5b80545f906001600160a01b03163303610b8157506001610b99565b60018201546001600160a01b03163303610933575060025b6003820154600160401b9004811660ff1615610bc85760405163d5a8211560e01b815260040160405180910390fd5b60038201805460ff838116600160401b80840492909216170268ff0000000000000000199091161790556040516370a0823160e01b81523060048201525f906001600160a01b037f0000000000000000000000005fc5360d0400a0fd4f2af552add042d716f1d16816906370a0823190602401602060405180830381865afa158015610c56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7a9190612285565b9050610cc0333085600201547f0000000000000000000000005fc5360d0400a0fd4f2af552add042d716f1d1686001600160a01b0316611929909392919063ffffffff16565b6040516370a0823160e01b81523060048201525f907f0000000000000000000000005fc5360d0400a0fd4f2af552add042d716f1d1686001600160a01b0316906370a0823190602401602060405180830381865afa158015610d24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d489190612285565b905081811080610d6557506002840154610d62838361229c565b14155b15610d835760405163570883e560e01b815260040160405180910390fd5b600384810154600160401b900460ff169003610daf5760038401805460ff60581b1916600160591b1790555b336001600160a01b0316857f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b8660020154604051610def91815260200190565b60405180910390a3505050506104656001600255565b610e0d6117e0565b5f81815260066020526040902060016003820154600160581b900460ff166005811115610e3c57610e3c612151565b14158015610e6a575060026003820154600160581b900460ff166005811115610e6757610e67612151565b14155b15610e8857604051630b6ab2d360e31b815260040160405180910390fd5b600381015467ffffffffffffffff16421015610eb757604051630414a09f60e01b815260040160405180910390fd5b60038101805460ff60581b1916600560581b1790555f80610ed783611962565b91509150837ffdb5525dc924c3d3cbf21f8be0ec1a90f89be26b9916368b843e08da4a10df7a8383604051610f16929190918252602082015260400190565b60405180910390a25050506104656001600255565b610f336117e0565b5f81815260066020526040902060016003820154600160581b900460ff166005811115610f6257610f62612151565b14610f8057604051630b6ab2d360e31b815260040160405180910390fd5b80546001600160a01b03163314801590610fa7575060018101546001600160a01b03163314155b8015610fc75750610fc55f8051602061230183398151915233610ab3565b155b15610fe5576040516371efdd2360e11b815260040160405180910390fd5b60038101805460ff60581b19166001605a1b1790555f8061100583611962565b6040805183815260208101839052929450909250339186917f4b83a611943635e59aed30de7686bb345a518f0ac9882a5a514c63a3e1f51cec910160405180910390a35050506104656001600255565b5f8281526020819052604090206001015461106f81611666565b61041583836116ff565b5f61108381611666565b6001600160a01b03821615806110a657506005546001600160a01b038381169116145b156110c45760405163ccea9e6f60e01b815260040160405180910390fd5b600580546001600160a01b038481166001600160a01b0319831617909255166110fa5f8051602061230183398151915284611670565b506111125f80516020612301833981519152826116ff565b50826001600160a01b0316816001600160a01b03167f0cb95562c0c1c9ac9c0095cb0f9064ba3b004ddf6642f85044d2c2ce062eef4e60405160405180910390a3505050565b5f807f1529b9dd99954fa3aa57c1ac215c16cdadae2e0e37d39375ffd211ff0455684e8335602085013560408601356060870135608088013560a08901356111a660e08b0160c08c016120b2565b6040805160208101999099528801969096526060870194909452608086019290925260a085015260c084015260e0838101919091526001600160a01b039091166101008301528401356101208201526101400160405160208183030381529060405280519060200120905061121a816119c3565b9392505050565b5f8051602061230183398151915261123881611666565b6112406117ba565b8661125e576040516324f45c6160e21b815260040160405180910390fd5b6001600160a01b038616158061127b57506001600160a01b038516155b806112975750846001600160a01b0316866001600160a01b0316145b156112b5576040516350a2e21f60e11b815260040160405180910390fd5b8315806112cc57506112c960025f196122af565b84115b156112ea57604051634eba4d4960e11b815260040160405180910390fd5b428367ffffffffffffffff16116113135760405162d36c8560e81b815260040160405180910390fd5b81611331576040516301e8679560e11b815260040160405180910390fd5b5f8088815260066020526040902060030154600160581b900460ff16600581111561135e5761135e612151565b1461137c5760405163fc2bc70d60e01b815260040160405180910390fd5b60408051610140810182526001600160a01b0380891682528716602082015290810185905267ffffffffffffffff841660608201525f6080820181905260a0820181905260c082015260e081016001815260208082018590525f60409283018190528a815260068252829020835181546001600160a01b03199081166001600160a01b03928316178355928501516001830180549094169116179091559082015160028201556060820151600382018054608085015160a086015160c087015167ffffffffffffffff90951668ffffffffffffffffff1990931692909217600160401b60ff92831602176affff0000000000000000001916600160481b9282169290920260ff60501b191691909117600160501b91909316029190911780825560e0840151919060ff60581b1916600160581b8360058111156114c1576114c1612151565b02179055506101008201516004820155610120909101516005909101556040805185815267ffffffffffffffff851660208201529081018390526001600160a01b03808716919088169089907f4b2ec96b3fa6df5dff55b800503e4cdd4450dbf93ecd30a6c1e2bc90f7346fe99060600160405180910390a450505050505050565b60408051610140810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101919091525f8281526006602090815260409182902082516101408101845281546001600160a01b03908116825260018301541692810192909252600281015492820192909252600382015467ffffffffffffffff8116606083015260ff600160401b820481166080840152600160481b8204811660a0840152600160501b8204811660c084015291929160e0840191600160581b900416600581111561163757611637612151565b600581111561164857611648612151565b81526004820154602082015260059091015460409091015292915050565b61046581336119ef565b5f61167b8383610ab3565b6116f8575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556116b03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103eb565b505f6103eb565b5f61170a8383610ab3565b156116f8575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103eb565b611770611a31565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60015460ff16156117de5760405163d93c066560e01b815260040160405180910390fd5b565b600280540361180257604051633ee5aeb560e01b815260040160405180910390fd5b60028055565b5f805f806118168686611a54565b9250925092506118268282611a9d565b5090949350505050565b6040516001600160a01b0383811660248301526044820183905261044e91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611b55565b6118976117ba565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361179d565b60606118f77f5374616b654475656c204d61746368457363726f7700000000000000000000156003611bc1565b905090565b60606118f77f31000000000000000000000000000000000000000000000000000000000000016004611bc1565b6040516001600160a01b0384811660248301528381166044830152606482018390526104159186918216906323b872dd9060840161185d565b60038101805469ff000000000000000000198116600160401b9182900460ff16600160481b0217918290555f9182919004600116156119a357826002015491505b6003830154600160401b9004600216156119be575060028201545b915091565b5f6103eb6119cf611c6a565b8360405161190160f01b8152600281019290925260228201526042902090565b6119f98282610ab3565b611a2d5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044015b60405180910390fd5b5050565b60015460ff166117de57604051638dfc202b60e01b815260040160405180910390fd5b5f805f8351604103611a8b576020840151604085015160608601515f1a611a7d88828585611d93565b955095509550505050611a96565b505081515f91506002905b9250925092565b5f826003811115611ab057611ab0612151565b03611ab9575050565b6001826003811115611acd57611acd612151565b03611aeb5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611aff57611aff612151565b03611b205760405163fce698f760e01b815260048101829052602401611a24565b6003826003811115611b3457611b34612151565b03611a2d576040516335e2f38360e21b815260048101829052602401611a24565b5f8060205f8451602086015f885af180611b74576040513d5f823e3d81fd5b50505f513d91508115611b8b578060011415611b98565b6001600160a01b0384163b155b1561041557604051635274afe760e01b81526001600160a01b0385166004820152602401611a24565b606060ff8314611bdb57611bd483611e5b565b90506103eb565b818054611be7906122ce565b80601f0160208091040260200160405190810160405280929190818152602001828054611c13906122ce565b8015611c5e5780601f10611c3557610100808354040283529160200191611c5e565b820191905f5260205f20905b815481529060010190602001808311611c4157829003601f168201915b505050505090506103eb565b5f306001600160a01b037f0000000000000000000000008d78b01a802322a4e8a6cbdddbaa1d8cb3c97f4d16148015611cc257507f000000000000000000000000000000000000000000000000000000000000123746145b15611cec57507feae1c1b61c62bef2cb1c1d709cea567d26b7c401cbbfd8ded3acdf82ef57b4ea90565b6118f7604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c9b665926ce2fe220e8bb744414494b79884f9bef22a39b3532b6c91f999471918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611dcc57505f91506003905082611e51565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611e1d573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116611e4857505f925060019150829050611e51565b92505f91508190505b9450945094915050565b60605f611e6783611e98565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f8111156103eb57604051632cd44ac360e21b815260040160405180910390fd5b5f60208284031215611ecf575f80fd5b81356001600160e01b03198116811461121a575f80fd5b5f60208284031215611ef6575f80fd5b5035919050565b80356001600160a01b0381168114611f13575f80fd5b919050565b5f8060408385031215611f29575f80fd5b82359150611f3960208401611efd565b90509250929050565b5f6101008284031215611f53575f80fd5b50919050565b5f805f6101208486031215611f6c575f80fd5b611f768585611f42565b925061010084013567ffffffffffffffff80821115611f93575f80fd5b818601915086601f830112611fa6575f80fd5b813581811115611fb4575f80fd5b876020828501011115611fc5575f80fd5b6020830194508093505050509250925092565b5f81518084525f5b81811015611ffc57602081850181015186830182015201611fe0565b505f602082860101526020601f19601f83011685010191505092915050565b60ff60f81b881681525f602060e0602084015261203b60e084018a611fd8565b838103604085015261204d818a611fd8565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b818110156120a057835183529284019291840191600101612084565b50909c9b505050505050505050505050565b5f602082840312156120c2575f80fd5b61121a82611efd565b5f61010082840312156120dc575f80fd5b61121a8383611f42565b5f805f805f8060c087890312156120fb575f80fd5b8635955061210b60208801611efd565b945061211960408801611efd565b935060608701359250608087013567ffffffffffffffff8116811461213c575f80fd5b8092505060a087013590509295509295509295565b634e487b7160e01b5f52602160045260245ffd5b6006811061218157634e487b7160e01b5f52602160045260245ffd5b9052565b81516001600160a01b03168152610140810160208301516121b160208401826001600160a01b03169052565b506040830151604083015260608301516121d7606084018267ffffffffffffffff169052565b5060808301516121ec608084018260ff169052565b5060a083015161220160a084018260ff169052565b5060c083015161221660c084018260ff169052565b5060e083015161222960e0840182612165565b50610100838101519083015261012092830151929091019190915290565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176103eb576103eb612247565b808201808211156103eb576103eb612247565b5f60208284031215612295575f80fd5b5051919050565b818103818111156103eb576103eb612247565b5f826122c957634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c908216806122e257607f821691505b602082108103611f5357634e487b7160e01b5f52602260045260245ffdfe97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a26469706673582212200d9909a27c7f760be3acf3344451c631b974eff3f98014fd694cb15e668365a264736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| Global Dollar (USDG) | USDG | 25 | $1 | $25 |
Global Dollar (USDG) | USDG | 10 | $0.998 | $9.98 |
| Global Dollar (USDG) | USDG | 3.25 | $1 | $3.25 |
| Global Dollar (USDG) | USDG | 2 | $1 | $2 |
| global dollar (USDG) | USDG | 2 | $1 | $2 |
| pipedoge (PIPEDOGE) | PIPEDOGE | 15 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x81a8b9…1b910a | 18 days agoTue, 28 Jul 2026 17:08:59 UTC | 0x943a24…4e70 | [0] 0x2bd075c7786a…7afe8c0d [1] 0x387548aa84fb…9c39234d [2] 0x000000000000…c40baf34 data: 0x000000000000000000…9c39234d |
| 0x1ab36b…d46955 | 18 days agoTue, 28 Jul 2026 17:07:11 UTC | 0x87d4c0…429b | [0] 0x2bd075c7786a…7afe8c0d [1] 0x000000000000…de5d1b8c data: 0x000000000000000000…00989680 |
| 0xa2cc0b…b487af | 18 days agoTue, 28 Jul 2026 17:07:03 UTC | 0x87d4c0…429b | [0] 0x2bd075c7786a…7afe8c0d [1] 0x000000000000…7dfbd960 data: 0x000000000000000000…00989680 |
| 0xfd1224…f96def | 18 days agoTue, 28 Jul 2026 17:06:19 UTC | 0x4b2ec9…6fe9 | [0] 0x2bd075c7786a…7afe8c0d [1] 0x000000000000…de5d1b8c [2] 0x000000000000…7dfbd960 data: 0x000000000000000000…f989a649 |
| 0xc3e5db…b94522 | 18 days agoTue, 28 Jul 2026 17:04:04 UTC | 0x4b2ec9…6fe9 | [0] 0xf5e805fbb5e5…01861724 [1] 0x000000000000…de5d1b8c [2] 0x000000000000…7dfbd960 data: 0x000000000000000000…3cfdd181 |
| 0x1696dd…d3d162 | 18 days agoTue, 28 Jul 2026 15:43:03 UTC | 0x87d4c0…429b | [0] 0x51bc78c9be70…7c715e1b [1] 0x000000000000…bc9fdb76 data: 0x000000000000000000…004c4b40 |
| 0x4cd7bc…a125be | 18 days agoTue, 28 Jul 2026 15:42:00 UTC | 0x87d4c0…429b | [0] 0x51bc78c9be70…7c715e1b [1] 0x000000000000…de5d1b8c data: 0x000000000000000000…004c4b40 |
| 0xffa7b3…f712d7 | 18 days agoTue, 28 Jul 2026 15:41:47 UTC | 0x4b2ec9…6fe9 | [0] 0x51bc78c9be70…7c715e1b [1] 0x000000000000…bc9fdb76 [2] 0x000000000000…de5d1b8c data: 0x000000000000000000…cdcda2aa |
| 0x6d77c9…e3ee50 | 18 days agoTue, 28 Jul 2026 15:36:33 UTC | 0x943a24…4e70 | [0] 0x94f943171a08…c2440b6b [1] 0x02f7e681c0c3…6802e23f [2] 0x000000000000…c40baf34 data: 0x000000000000000000…6802e23f |
| 0xbdb195…7c4c45 | 18 days agoTue, 28 Jul 2026 15:34:24 UTC | 0x87d4c0…429b | [0] 0x94f943171a08…c2440b6b [1] 0x000000000000…4abd70b3 data: 0x000000000000000000…004c4b40 |
| 0xc4bca1…00c8be | 18 days agoTue, 28 Jul 2026 15:34:22 UTC | 0x87d4c0…429b | [0] 0x94f943171a08…c2440b6b [1] 0x000000000000…de5d1b8c data: 0x000000000000000000…004c4b40 |
| 0x8843b6…f9e32d | 18 days agoTue, 28 Jul 2026 15:33:59 UTC | 0x4b2ec9…6fe9 | [0] 0x94f943171a08…c2440b6b [1] 0x000000000000…4abd70b3 [2] 0x000000000000…de5d1b8c data: 0x000000000000000000…b87b7934 |
| 0xb1ce40…b5d694 | 18 days agoTue, 28 Jul 2026 13:49:58 UTC | 0x943a24…4e70 | [0] 0x92422b1f7894…89d2b780 [1] 0xf0970707d746…c03fa5a1 [2] 0x000000000000…c40baf34 data: 0x000000000000000000…c03fa5a1 |
| 0x439f44…663400 | 18 days agoTue, 28 Jul 2026 13:42:15 UTC | 0x87d4c0…429b | [0] 0x92422b1f7894…89d2b780 [1] 0x000000000000…7eb4bee7 data: 0x000000000000000000…000f4240 |
| 0x9bc916…d39f0a | 18 days agoTue, 28 Jul 2026 13:42:10 UTC | 0x87d4c0…429b | [0] 0x92422b1f7894…89d2b780 [1] 0x000000000000…c54988b6 data: 0x000000000000000000…000f4240 |
| 0xc55d1f…fc006c | 18 days agoTue, 28 Jul 2026 13:42:06 UTC | 0x4b2ec9…6fe9 | [0] 0x92422b1f7894…89d2b780 [1] 0x000000000000…c54988b6 [2] 0x000000000000…7eb4bee7 data: 0x000000000000000000…b1425d7b |
| 0x89edc6…5e5126 | 18 days agoTue, 28 Jul 2026 13:23:21 UTC | 0x943a24…4e70 | [0] 0x162e04a05a0f…d817af94 [1] 0x90dacec00adf…32a6435f [2] 0x000000000000…c40baf34 data: 0x000000000000000000…32a6435f |
| 0x038c52…9fa01b | 18 days agoTue, 28 Jul 2026 13:22:05 UTC | 0x87d4c0…429b | [0] 0x162e04a05a0f…d817af94 [1] 0x000000000000…7eb4bee7 data: 0x000000000000000000…000f4240 |
| 0x5d2f77…7654ae | 18 days agoTue, 28 Jul 2026 13:22:01 UTC | 0x87d4c0…429b | [0] 0x162e04a05a0f…d817af94 [1] 0x000000000000…c54988b6 data: 0x000000000000000000…000f4240 |
| 0x7046a3…ce79ce | 18 days agoTue, 28 Jul 2026 13:21:56 UTC | 0x4b2ec9…6fe9 | [0] 0x162e04a05a0f…d817af94 [1] 0x000000000000…c54988b6 [2] 0x000000000000…7eb4bee7 data: 0x000000000000000000…3dde215c |
| 0x3fb318…4e8155 | 18 days agoTue, 28 Jul 2026 13:05:27 UTC | 0x943a24…4e70 | [0] 0x6752123d1d10…de35b3c8 [1] 0xc7edb169b6b0…217a8a4f [2] 0x000000000000…c40baf34 data: 0x000000000000000000…217a8a4f |
| 0x134ccf…9c4991 | 18 days agoTue, 28 Jul 2026 13:04:40 UTC | 0x87d4c0…429b | [0] 0x6752123d1d10…de35b3c8 [1] 0x000000000000…7eb4bee7 data: 0x000000000000000000…000f4240 |
| 0x76f629…2f6b74 | 18 days agoTue, 28 Jul 2026 13:04:35 UTC | 0x87d4c0…429b | [0] 0x6752123d1d10…de35b3c8 [1] 0x000000000000…c54988b6 data: 0x000000000000000000…000f4240 |
| 0x9d1a49…4c9eca | 18 days agoTue, 28 Jul 2026 13:04:30 UTC | 0x4b2ec9…6fe9 | [0] 0x6752123d1d10…de35b3c8 [1] 0x000000000000…c54988b6 [2] 0x000000000000…7eb4bee7 data: 0x000000000000000000…f7fd3d2f |
| 0x5b14ef…5a034d | 18 days agoTue, 28 Jul 2026 12:58:19 UTC | 0x943a24…4e70 | [0] 0x61a13e2d9079…3811df11 [1] 0x847de0f60971…53d2759f [2] 0x000000000000…c40baf34 data: 0x000000000000000000…53d2759f |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x81a8b9…1b910a | settle | 21,759,874 | 18 days agoTue, 28 Jul 2026 17:08:59 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000522 | |
| 0x1ab36b…d46955 | deposit | 21,758,788 | 18 days agoTue, 28 Jul 2026 17:07:11 UTC | 0x29dc…1b8c | IN | MatchEscrow | $0.000 ETH | 0.00000211 | |
| 0xa2cc0b…b487af | deposit | 21,758,709 | 18 days agoTue, 28 Jul 2026 17:07:03 UTC | 0x9756…d960 | IN | MatchEscrow | $0.000 ETH | 0.00000216 | |
| 0xfd1224…f96def | openMatch | 21,758,273 | 18 days agoTue, 28 Jul 2026 17:06:19 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000422 | |
| 0xc3e5db…b94522 | openMatch | 21,756,926 | 18 days agoTue, 28 Jul 2026 17:04:04 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000415 | |
| 0x1696dd…d3d162 | deposit | 21,708,436 | 18 days agoTue, 28 Jul 2026 15:43:03 UTC | 0x61c6…db76 | IN | MatchEscrow | $0.000 ETH | 0.00000217 | |
| 0x4cd7bc…a125be | deposit | 21,707,807 | 18 days agoTue, 28 Jul 2026 15:42:00 UTC | 0x29dc…1b8c | IN | MatchEscrow | $0.000 ETH | 0.00000269 | |
| 0xffa7b3…f712d7 | openMatch | 21,707,681 | 18 days agoTue, 28 Jul 2026 15:41:47 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000432 | |
| 0x6d77c9…e3ee50 | settle | 21,704,542 | 18 days agoTue, 28 Jul 2026 15:36:33 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000409 | |
| 0xbdb195…7c4c45 | deposit | 21,703,257 | 18 days agoTue, 28 Jul 2026 15:34:24 UTC | 0x86c1…70b3 | IN | MatchEscrow | $0.000 ETH | 0.00000208 | |
| 0xc4bca1…00c8be | deposit | 21,703,238 | 18 days agoTue, 28 Jul 2026 15:34:22 UTC | 0x29dc…1b8c | IN | MatchEscrow | $0.000 ETH | 0.00000264 | |
| 0x8843b6…f9e32d | openMatch | 21,703,007 | 18 days agoTue, 28 Jul 2026 15:33:59 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000420 | |
| 0xb1ce40…b5d694 | settle | 21,640,735 | 18 days agoTue, 28 Jul 2026 13:49:58 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000504 | |
| 0x439f44…663400 | deposit | 21,636,095 | 18 days agoTue, 28 Jul 2026 13:42:15 UTC | 0xc293…bee7 | IN | MatchEscrow | $0.000 ETH | 0.00000206 | |
| 0x9bc916…d39f0a | deposit | 21,636,054 | 18 days agoTue, 28 Jul 2026 13:42:10 UTC | 0xebeb…88b6 | IN | MatchEscrow | $0.000 ETH | 0.00000245 | |
| 0xc55d1f…fc006c | openMatch | 21,636,013 | 18 days agoTue, 28 Jul 2026 13:42:06 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000418 | |
| 0x89edc6…5e5126 | settle | 21,624,787 | 18 days agoTue, 28 Jul 2026 13:23:21 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000502 | |
| 0x038c52…9fa01b | deposit | 21,624,027 | 18 days agoTue, 28 Jul 2026 13:22:05 UTC | 0xc293…bee7 | IN | MatchEscrow | $0.000 ETH | 0.00000201 | |
| 0x5d2f77…7654ae | deposit | 21,623,990 | 18 days agoTue, 28 Jul 2026 13:22:01 UTC | 0xebeb…88b6 | IN | MatchEscrow | $0.000 ETH | 0.00000243 | |
| 0x7046a3…ce79ce | openMatch | 21,623,945 | 18 days agoTue, 28 Jul 2026 13:21:56 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000421 | |
| 0x3fb318…4e8155 | settle | 21,614,085 | 18 days agoTue, 28 Jul 2026 13:05:27 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000508 | |
| 0x134ccf…9c4991 | deposit | 21,613,613 | 18 days agoTue, 28 Jul 2026 13:04:40 UTC | 0xc293…bee7 | IN | MatchEscrow | $0.000 ETH | 0.00000202 | |
| 0x76f629…2f6b74 | deposit | 21,613,566 | 18 days agoTue, 28 Jul 2026 13:04:35 UTC | 0xebeb…88b6 | IN | MatchEscrow | $0.000 ETH | 0.00000245 | |
| 0x9d1a49…4c9eca | openMatch | 21,613,509 | 18 days agoTue, 28 Jul 2026 13:04:30 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000422 | |
| 0x5b14ef…5a034d | settle | 21,609,806 | 18 days agoTue, 28 Jul 2026 12:58:19 UTC | 0x91cf…8ab0 | IN | MatchEscrow | $0.000 ETH | 0.00000507 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xee1e0711…e91c3e | Transfer | 22,213,052 | 17 days agoWed, 29 Jul 2026 05:45:53 UTC | 0xb545…cc2c | IN | 0x8d78…7f4d | 15 PIPEDOGE | pipedoge (PIPEDOGE) | |
| 0x204fe03a…17da87 | Transfer | 21,994,981 | 18 days agoTue, 28 Jul 2026 23:41:35 UTC | 0xd2e4…b70c | IN | 0x8d78…7f4d | 2 USDG | Global Dollar (USDG) | |
| 0x77221d64…e1c86f | Transfer | 21,776,130 | 18 days agoTue, 28 Jul 2026 17:36:09 UTC | 0xcef1…6929 | IN | 0x8d78…7f4d | 25 USDG | Global Dollar (USDG) | |
| 0xbb9b3ffd…788471 | Transfer | 21,767,774 | 18 days agoTue, 28 Jul 2026 17:22:11 UTC | 0x8c94…ec08 | IN | 0x8d78…7f4d | 3.25 USDG | Global Dollar (USDG) | |
| 0x81a8b9be…1b910a | Transfer | 21,759,874 | 18 days agoTue, 28 Jul 2026 17:08:59 UTC | 0x8d78…7f4d | OUT | 0xef7c…af34 | $0.050.05 USDG | Global Dollar (USDG) | |
| 0x81a8b9be…1b910a | Transfer | 21,759,874 | 18 days agoTue, 28 Jul 2026 17:08:59 UTC | 0x8d78…7f4d | OUT | 0x9756…d960 | $14.9214.95 USDG | Global Dollar (USDG) | |
| 0x81a8b9be…1b910a | Transfer | 21,759,874 | 18 days agoTue, 28 Jul 2026 17:08:59 UTC | 0x8d78…7f4d | OUT | 0x29dc…1b8c | $4.995 USDG | Global Dollar (USDG) | |
| 0x1ab36b03…d46955 | Transfer | 21,758,788 | 18 days agoTue, 28 Jul 2026 17:07:11 UTC | 0x29dc…1b8c | IN | 0x8d78…7f4d | $9.9810 USDG | Global Dollar (USDG) | |
| 0xa2cc0b7d…b487af | Transfer | 21,758,709 | 18 days agoTue, 28 Jul 2026 17:07:03 UTC | 0x9756…d960 | IN | 0x8d78…7f4d | $9.9810 USDG | Global Dollar (USDG) | |
| 0xcd6365a1…c79c9a | Transfer | 21,735,094 | 18 days agoTue, 28 Jul 2026 16:27:35 UTC | 0x3d2b…6bfc | IN | 0x8d78…7f4d | 2 USDG | global dollar (USDG) | |
| 0x1696dd04…d3d162 | Transfer | 21,708,436 | 18 days agoTue, 28 Jul 2026 15:43:03 UTC | 0x61c6…db76 | IN | 0x8d78…7f4d | $4.995 USDG | Global Dollar (USDG) | |
| 0x4cd7bcbf…a125be | Transfer | 21,707,807 | 18 days agoTue, 28 Jul 2026 15:42:00 UTC | 0x29dc…1b8c | IN | 0x8d78…7f4d | $4.995 USDG | Global Dollar (USDG) | |
| 0x6d77c942…e3ee50 | Transfer | 21,704,542 | 18 days agoTue, 28 Jul 2026 15:36:33 UTC | 0x8d78…7f4d | OUT | 0x29dc…1b8c | $4.995 USDG | Global Dollar (USDG) | |
| 0x6d77c942…e3ee50 | Transfer | 21,704,542 | 18 days agoTue, 28 Jul 2026 15:36:33 UTC | 0x8d78…7f4d | OUT | 0x86c1…70b3 | $4.995 USDG | Global Dollar (USDG) | |
| 0xbdb1953b…7c4c45 | Transfer | 21,703,257 | 18 days agoTue, 28 Jul 2026 15:34:24 UTC | 0x86c1…70b3 | IN | 0x8d78…7f4d | $4.995 USDG | Global Dollar (USDG) | |
| 0xc4bca1f9…00c8be | Transfer | 21,703,238 | 18 days agoTue, 28 Jul 2026 15:34:22 UTC | 0x29dc…1b8c | IN | 0x8d78…7f4d | $4.995 USDG | Global Dollar (USDG) | |
| 0xb1ce4000…b5d694 | Transfer | 21,640,735 | 18 days agoTue, 28 Jul 2026 13:49:58 UTC | 0x8d78…7f4d | OUT | 0xef7c…af34 | $0.010.01 USDG | Global Dollar (USDG) | |
| 0xb1ce4000…b5d694 | Transfer | 21,640,735 | 18 days agoTue, 28 Jul 2026 13:49:58 UTC | 0x8d78…7f4d | OUT | 0xebeb…88b6 | $1.991.99 USDG | Global Dollar (USDG) | |
| 0x439f44be…663400 | Transfer | 21,636,095 | 18 days agoTue, 28 Jul 2026 13:42:15 UTC | 0xc293…bee7 | IN | 0x8d78…7f4d | $1.001 USDG | Global Dollar (USDG) | |
| 0x9bc91696…d39f0a | Transfer | 21,636,054 | 18 days agoTue, 28 Jul 2026 13:42:10 UTC | 0xebeb…88b6 | IN | 0x8d78…7f4d | $1.001 USDG | Global Dollar (USDG) | |
| 0x89edc67c…5e5126 | Transfer | 21,624,787 | 18 days agoTue, 28 Jul 2026 13:23:21 UTC | 0x8d78…7f4d | OUT | 0xc293…bee7 | $1.001 USDG | Global Dollar (USDG) | |
| 0x89edc67c…5e5126 | Transfer | 21,624,787 | 18 days agoTue, 28 Jul 2026 13:23:21 UTC | 0x8d78…7f4d | OUT | 0xebeb…88b6 | $1.001 USDG | Global Dollar (USDG) | |
| 0x038c5220…9fa01b | Transfer | 21,624,027 | 18 days agoTue, 28 Jul 2026 13:22:05 UTC | 0xc293…bee7 | IN | 0x8d78…7f4d | $1.001 USDG | Global Dollar (USDG) | |
| 0x5d2f777c…7654ae | Transfer | 21,623,990 | 18 days agoTue, 28 Jul 2026 13:22:01 UTC | 0xebeb…88b6 | IN | 0x8d78…7f4d | $1.001 USDG | Global Dollar (USDG) | |
| 0x3fb31890…4e8155 | Transfer | 21,614,085 | 18 days agoTue, 28 Jul 2026 13:05:27 UTC | 0x8d78…7f4d | OUT | 0xc293…bee7 | $1.001 USDG | Global Dollar (USDG) |