Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x4CC6ab7c68e42766779d859634de24227Ef5fe34
Balance 0 ETH
Nonce 1
Code Size 1569 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

1569 bytes
0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063ad6f80ff1161005b578063ad6f80ff146100eb578063bf6896eb14610100578063bf6a141314610115578063e87fd5381461013857600080fd5b80638be10194146100825780638d4e4083146100b957806395f5252a146100d6575b600080fd5b6100956100903660046104ab565b610174565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6002546100c69060ff1681565b60405190151581526020016100b0565b6100de6101ac565b6040516100b0919061050a565b6100f36101c8565b6040516100b09190610524565b61011361010e3660046104ab565b61023d565b005b6100c661012336600461057c565b60016020526000908152604090205460ff1681565b6100de6040518060400160405280601d81526020017f54686520526564656d7074696f6e2046756e642041677265656d656e7400000081525081565b6000818154811061018457600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b6040518060600160405280602181526020016105cb6021913981565b60606000805480602002602001604051908101604052809291908181526020016000905b82821015610234576000848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016101ec565b50505050905090565b60025460ff16156102955760405162461bcd60e51b815260206004820152601760248201527f41677265656d656e742069732066696e616c697a65642e00000000000000000060448201526064015b60405180910390fd5b3360009081526001602052604090205460ff16156102f55760405162461bcd60e51b815260206004820152601860248201527f596f75206861766520616c7265616479207369676e65642e0000000000000000604482015260640161028c565b6000546002116103525760405162461bcd60e51b815260206004820152602260248201527f4d6178696d756d206e756d626572206f66207369676e65727320726561636865604482015261321760f11b606482015260840161028c565b336000818152600160208181526040808420805460ff19168417905580518082018252858152428184018181528654958601875595805290517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600290950294850180546001600160a01b0319166001600160a01b0390921691909117905593517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5649093019290925581518083018352601d81527f54686520526564656d7074696f6e2046756e642041677265656d656e740000009181019190915290517f06197bbad494c1286432d621798aa95ac6de01a1fa4158ba13b7537c4fa192819261045f92918691906105a5565b60405180910390a26000546002036104a8576002805460ff191660011790556040517fd674f2da62b4a1f6f280228cdd4e2791073c223b24981ab4ff983b00ee29a1d890600090a15b50565b6000602082840312156104bd57600080fd5b5035919050565b6000815180845260005b818110156104ea576020818501810151868301820152016104ce565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061051d60208301846104c4565b9392505050565b602080825282518282018190526000919060409081850190868401855b8281101561056f57815180516001600160a01b03168552860151868501529284019290850190600101610541565b5091979650505050505050565b60006020828403121561058e57600080fd5b81356001600160a01b038116811461051d57600080fd5b6060815260006105b860608301866104c4565b6020830194909452506040015291905056fe68747470733a2f2f726564656d7074696f6e2e66756e642f61677265656d656e74a26469706673582212203bcd0d7a765d72d01c2d6bec8e17551266da5d259003519e31284d58b6d8a82064736f6c63430008110033

Verified Source Code Full Match

Compiler: v0.8.17+commit.8df45f5f EVM: london Optimization: Yes (200 runs)
RedemptionFundAgreement.sol 54 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

/**
 * @title Redemption Fund Agreement Signature Log
 * @notice Logs up to two unique wallet signatures for the agreement between
 *         Project X Trading Desk and The Redemption Fund.
 *         Agreement reference: https://redemption.fund/agreement
 */
contract RedemptionFundAgreement {
    string public constant AGREEMENT_TITLE = "The Redemption Fund Agreement";
    string public constant AGREEMENT_URL = "https://redemption.fund/agreement";

    struct Signature {
        address signer;
        uint256 timestamp;
    }

    Signature[] public signatures;
    mapping(address => bool) public hasSigned;

    bool public isFinalized = false;

    event AgreementSigned(address indexed signer, string title, bytes32 documentHash, uint256 timestamp);
    event AgreementFinalized();

    /**
     * @notice Allows a wallet to sign the agreement, up to a maximum of 2 unique signers.
     *         Locks the contract after both signatures are received.
     * @param documentHash The hash of the agreement being signed.
     */
    function signAgreement(bytes32 documentHash) external {
        require(!isFinalized, "Agreement is finalized.");
        require(!hasSigned[msg.sender], "You have already signed.");
        require(signatures.length < 2, "Maximum number of signers reached.");

        hasSigned[msg.sender] = true;
        signatures.push(Signature(msg.sender, block.timestamp));

        emit AgreementSigned(msg.sender, AGREEMENT_TITLE, documentHash, block.timestamp);

        if (signatures.length == 2) {
            isFinalized = true;
            emit AgreementFinalized();
        }
    }

    /**
     * @notice Returns all recorded signatures.
     */
    function getSignatures() external view returns (Signature[] memory) {
        return signatures;
    }
}

Read Contract

AGREEMENT_TITLE 0xe87fd538 → string
AGREEMENT_URL 0x95f5252a → string
getSignatures 0xad6f80ff → tuple[]
hasSigned 0xbf6a1413 → bool
isFinalized 0x8d4e4083 → bool
signatures 0x8be10194 → address, uint256

Write Contract 1 functions

These functions modify contract state and require a wallet transaction to execute.

signAgreement 0xbf6896eb
bytes32 documentHash

Recent Transactions

No transactions found for this address