{"status":"full","files":[{"name":"metadata.json","path":"/contracts/full_match/7120/0x85d5E7694AF31C2Edd0a7e66b7c6c92C59fF949A/metadata.json","content":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Sentrix Labs\",\"details\":\"Standard wrapped-token pattern (mirror of WETH9). Self-contained,      no external imports - keeps the canonical-contracts repo      dependency-free. Compiles with solc 0.8.24, no SafeMath needed.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"guy\":\"Spender.\",\"wad\":\"Allowance in wei. Pass `type(uint256).max` for infinite allowance.\"},\"returns\":{\"_0\":\"Always true on success (matches ERC-20 spec).\"}},\"transfer(address,uint256)\":{\"params\":{\"dst\":\"Recipient.\",\"wad\":\"Amount in wei.\"},\"returns\":{\"_0\":\"Always true on success.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"dst\":\"Recipient.\",\"src\":\"Token holder.\",\"wad\":\"Amount in wei.\"},\"returns\":{\"_0\":\"Always true on success.\"}},\"withdraw(uint256)\":{\"params\":{\"wad\":\"Amount in wei (18-decimal). Must not exceed caller's balance.\"}}},\"title\":\"Wrapped SRX\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Approve `guy` to spend up to `wad` of caller's WSRX.\"},\"deposit()\":{\"notice\":\"Wrap `msg.value` native SRX 1:1 into WSRX credited to caller.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `wad` WSRX to `dst`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `wad` WSRX from `src` to `dst` using caller's allowance.\"},\"withdraw(uint256)\":{\"notice\":\"Burn `wad` WSRX and return native SRX to caller.\"}},\"notice\":\"Wraps native SRX into an ERC-20 token (18 decimals at the EVM         boundary). 1 SRX = 10^10 wei due to native ledger using 8         decimals; conversion is handled by the EVM database adapter,         so `msg.value` here is already the wei amount and `wad` minted         equals `msg.value` 1:1.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/WSRX.sol\":\"WSRX\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/=lib/openzeppelin-contracts/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"contracts/WSRX.sol\":{\"keccak256\":\"0x9b59e4354d3bd5fc768c546eafa022697d793ba41267d23539f84cc17c14a03b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8d1a76344fe993d8b51b13bbccaced13964af41cab0458c2cbfb62773912ea8\",\"dweb:/ipfs/QmXQd7UbkjbTzZFhvu19bicmaZT2hxZzU2T3Trq5Nm4rXr\"]}},\"version\":1}"},{"name":"WSRX.sol","path":"/contracts/full_match/7120/0x85d5E7694AF31C2Edd0a7e66b7c6c92C59fF949A/sources/contracts/WSRX.sol","content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity 0.8.24;\n\n/// @title Wrapped SRX\n/// @author Sentrix Labs\n/// @notice Wraps native SRX into an ERC-20 token (18 decimals at the EVM\n///         boundary). 1 SRX = 10^10 wei due to native ledger using 8\n///         decimals; conversion is handled by the EVM database adapter,\n///         so `msg.value` here is already the wei amount and `wad` minted\n///         equals `msg.value` 1:1.\n/// @dev Standard wrapped-token pattern (mirror of WETH9). Self-contained,\n///      no external imports - keeps the canonical-contracts repo\n///      dependency-free. Compiles with solc 0.8.24, no SafeMath needed.\ncontract WSRX {\n    string public constant name = \"Wrapped SRX\";\n    string public constant symbol = \"WSRX\";\n    uint8 public constant decimals = 18;\n\n    uint256 public totalSupply;\n\n    mapping(address => uint256) public balanceOf;\n    mapping(address => mapping(address => uint256)) public allowance;\n\n    event Transfer(address indexed src, address indexed dst, uint256 wad);\n    event Approval(address indexed src, address indexed guy, uint256 wad);\n    event Deposit(address indexed dst, uint256 wad);\n    event Withdrawal(address indexed src, uint256 wad);\n\n    /// @notice Wrap native SRX 1:1 into WSRX by sending value to this contract.\n    receive() external payable {\n        deposit();\n    }\n\n    /// @notice Wrap `msg.value` native SRX 1:1 into WSRX credited to caller.\n    function deposit() public payable {\n        balanceOf[msg.sender] += msg.value;\n        totalSupply += msg.value;\n        emit Deposit(msg.sender, msg.value);\n        emit Transfer(address(0), msg.sender, msg.value);\n    }\n\n    /// @notice Burn `wad` WSRX and return native SRX to caller.\n    /// @param wad Amount in wei (18-decimal). Must not exceed caller's balance.\n    function withdraw(uint256 wad) external {\n        require(balanceOf[msg.sender] >= wad, \"WSRX: insufficient balance\");\n        balanceOf[msg.sender] -= wad;\n        totalSupply -= wad;\n        (bool ok, ) = msg.sender.call{value: wad}(\"\");\n        require(ok, \"WSRX: native transfer failed\");\n        emit Withdrawal(msg.sender, wad);\n        emit Transfer(msg.sender, address(0), wad);\n    }\n\n    /// @notice Approve `guy` to spend up to `wad` of caller's WSRX.\n    /// @param guy Spender.\n    /// @param wad Allowance in wei. Pass `type(uint256).max` for infinite allowance.\n    /// @return Always true on success (matches ERC-20 spec).\n    function approve(address guy, uint256 wad) external returns (bool) {\n        allowance[msg.sender][guy] = wad;\n        emit Approval(msg.sender, guy, wad);\n        return true;\n    }\n\n    /// @notice Transfer `wad` WSRX to `dst`.\n    /// @param dst Recipient.\n    /// @param wad Amount in wei.\n    /// @return Always true on success.\n    function transfer(address dst, uint256 wad) external returns (bool) {\n        return _transferFrom(msg.sender, dst, wad);\n    }\n\n    /// @notice Transfer `wad` WSRX from `src` to `dst` using caller's allowance.\n    /// @param src Token holder.\n    /// @param dst Recipient.\n    /// @param wad Amount in wei.\n    /// @return Always true on success.\n    function transferFrom(address src, address dst, uint256 wad) external returns (bool) {\n        if (src != msg.sender) {\n            uint256 allowed = allowance[src][msg.sender];\n            if (allowed != type(uint256).max) {\n                require(allowed >= wad, \"WSRX: insufficient allowance\");\n                allowance[src][msg.sender] = allowed - wad;\n            }\n        }\n        return _transferFrom(src, dst, wad);\n    }\n\n    function _transferFrom(address src, address dst, uint256 wad) internal returns (bool) {\n        require(balanceOf[src] >= wad, \"WSRX: insufficient balance\");\n        balanceOf[src] -= wad;\n        balanceOf[dst] += wad;\n        emit Transfer(src, dst, wad);\n        return true;\n    }\n}\n"}]}