Contract 0xcf205808ed36593aa40a44f10c7f7c2f67d4a4d4 18

 
Txn Hash Method
Block
From
To
Value
0xbd481d2b9dd05cfcc4e5f1027a44d7200200629e206ba7fed1d0dab2d40f6db7Sell Shares72637972023-11-30 4:02:212 secs ago0xf2fe52249af4a97ee4776243462d81ad5a23daba IN  Friend.tech: Shares0 ETH0.0000652488460.100000059
0x73660ef78906eca0d66b10c5ad02f544615b24912d3da4f38c4b808d7d1ad2d2Sell Shares72637852023-11-30 4:01:5726 secs ago0x1645729aecba50256abbbda6b0188dc6c95e45c9 IN  Friend.tech: Shares0 ETH0.0000660832020.100000052
0xdb944ae7a76dfdf06838102305fa0b352df71a45c6c93f541975b6d04afc53b5Buy Shares72637692023-11-30 4:01:2558 secs ago0x873400f1c156c1d8f793b71858d9e4a24794f607 IN  Friend.tech: Shares0.0011 ETH0.0000681499830.10000005
0xcb4590f5a4fcdc2b2eaf427e49c9dbdb06f6279220d11dae64848f02b314ef6fSell Shares72637572023-11-30 4:01:011 min ago0x1645729aecba50256abbbda6b0188dc6c95e45c9 IN  Friend.tech: Shares0 ETH0.0000638017790.10000005
0x80d26ea50668addf997140488a1b294dbe65ac45555f3eb258bb86bd6630856aBuy Shares72637542023-11-30 4:00:551 min ago0x4116ef72aa106efc6cb6003d8eeff9f631f03876 IN  Friend.tech: Shares0.02481875 ETH0.0000695437640.10000005
0xe426453f2cf6b6349d90328e7a273b593aa203f014eaae1f759f30fe7813776dBuy Shares72637372023-11-30 4:00:212 mins ago0x873400f1c156c1d8f793b71858d9e4a24794f607 IN  Friend.tech: Shares0.0011 ETH0.0000710306890.10000005
0x322557274a5a9078c89800466cc66e4ae7d3d2edca929c377ccdbf26378baf3cSell Shares72637362023-11-30 4:00:192 mins ago0x1645729aecba50256abbbda6b0188dc6c95e45c9 IN  Friend.tech: Shares0 ETH0.0000665210960.10000005
0x8d43bb51c82d8966bda51831497b01569ccb35956454ec67c0f79e2bd4651bd9Sell Shares72637352023-11-30 4:00:172 mins ago0xd231c4f6a910eac3e18f90a3ca703457b1f4d2e1 IN  Friend.tech: Shares0 ETH0.0000662422140.10000005
0x24bbf8732ab3170f8355397b5b190b3be92bb26186fcc501c1a24e4c3887f3b3Buy Shares72637292023-11-30 4:00:052 mins ago0x2bcb1d3ad572ec5bc5e26dcdb3f567d884c4ed3c IN  Friend.tech: Shares0.06606875 ETH0.0000718867370.10000005
0xdc3b2e318c5349f2a92326c8f07bb03a2546a5e7b4edabef449f35cb4fbf44a4Sell Shares72637282023-11-30 4:00:032 mins ago0xae51ce73bd763e00a5faaa45185e8531404e3418 IN  Friend.tech: Shares0 ETH0.000068088980.10000005
0xfd0ce4c2b3e6f0b314ed651645a5cc5873c644a434e47d4a8955541fc090a8d7Buy Shares72637232023-11-30 3:59:532 mins ago0x9b1eb5f6996b0fd1ed033871faeeb98d91ff3839 IN  Friend.tech: Shares0.0011 ETH0.0000614098840.00100005
0x18cd4ceddffa00612dcc1d33b86fe39ffea673c622ef4dc969313346ea32aabfSell Shares72637222023-11-30 3:59:512 mins ago0x1645729aecba50256abbbda6b0188dc6c95e45c9 IN  Friend.tech: Shares0 ETH0.0000665740280.10000005
0x5f36f81644be86c536b2471874fe3d56944e9ebffbf1037bce4f24fd4858eac8Buy Shares72637202023-11-30 3:59:472 mins ago0x4116ef72aa106efc6cb6003d8eeff9f631f03876 IN  Friend.tech: Shares0.061875 ETH0.0000706334280.10000005
0x9efdd57fbf3208c0b1d6fdc6fc225a0c96dd8dbbdb11075b0d6ee53e5b2a9636Buy Shares72637152023-11-30 3:59:372 mins ago0x7059bfb8911209d1ca9ff8a4bfdd0a00f217f496 IN  Friend.tech: Shares0.000275 ETH0.0000711792290.10000005
0xc7a79276ebfe2354396e8bb9e455cedbf536e79ec2ea9bf6c6b2b6ec50493c2fSell Shares72636992023-11-30 3:59:053 mins ago0x1645729aecba50256abbbda6b0188dc6c95e45c9 IN  Friend.tech: Shares0 ETH0.0000671940040.100000051
0xfb006b22552778d586f1942d31a102feb55e42af9305b5c8a107b8d88fd4e885Buy Shares72636982023-11-30 3:59:033 mins ago0x873400f1c156c1d8f793b71858d9e4a24794f607 IN  Friend.tech: Shares0.0011 ETH0.0000717383490.100000051
0x4f533c1594b9a84bc28d4127c460248880a2e5845c589314897dbde7b42ac8d3Sell Shares72636882023-11-30 3:58:433 mins ago0x1645729aecba50256abbbda6b0188dc6c95e45c9 IN  Friend.tech: Shares0 ETH0.0000681203450.10000005
0x0e10e67afdb7a02e5e703202b89bb5e4e128300e1e3a0bdc2e5aea4f533d4bc7Buy Shares72636852023-11-30 3:58:373 mins ago0x4116ef72aa106efc6cb6003d8eeff9f631f03876 IN  Friend.tech: Shares0.0275 ETH0.0000719488240.10000005
0x6e4839acbba18a843b17e08c4d10860a82ee2d7cbe3112d8076aa9f286faa270Buy Shares72636822023-11-30 3:58:313 mins ago0xa997530b7b4b6d00a3cd42fef7f2847fc33a1a90 IN  Friend.tech: Shares0.09411875 ETH0.0000692613230.100000051
0xa164363513df8c65bc7cbe855c8a3311062d15cd2ffdeb36cd0338e469daf481Sell Shares72636572023-11-30 3:57:414 mins ago0x39dc376e3228dd07d307d8d3bbb2ccaea9232647 IN  Friend.tech: Shares0 ETH0.0000716019840.100000051
0x26521f9d7eec9b5ee66f6237392aa9a7230189a4a715f270484b8a91018ba018Buy Shares72636532023-11-30 3:57:334 mins ago0xc79793e18a001561996bb9c431cf7477ebe7dedb IN  Friend.tech: Shares0.00006875 ETH0.0000676630780.001000051
0xc7cb0404afc5ca6985241e2058ff5eeeff035b6bf2108a33e5e495e3a55a488aBuy Shares72636522023-11-30 3:57:314 mins ago0x4116ef72aa106efc6cb6003d8eeff9f631f03876 IN  Friend.tech: Shares0.033275 ETH0.0000762406920.100000051
0x97599b9a3e5b712b01a12051225c819e28cff3bd2317d80bc25a17b67dae2a1eBuy Shares72636452023-11-30 3:57:175 mins ago0xa997530b7b4b6d00a3cd42fef7f2847fc33a1a90 IN  Friend.tech: Shares0.03031875 ETH0.0000776892660.10000005
0x51e8c9a7de764182428cec8d715af6799de329333c12e249e744214eda1985a9Sell Shares72636422023-11-30 3:57:115 mins ago0x39dc376e3228dd07d307d8d3bbb2ccaea9232647 IN  Friend.tech: Shares0 ETH0.000073332330.10000005
0xb3ab3210ad9011dd4cdc43eb4beb3224064ee141acb69e3739ed5cb4dfc1dde0Buy Shares72636402023-11-30 3:57:075 mins ago0x05a13f8dc03bdb9265aea09e2f76ac7a6599f38e IN  Friend.tech: Shares0.0099 ETH0.0000776505320.10000005
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xbd481d2b9dd05cfcc4e5f1027a44d7200200629e206ba7fed1d0dab2d40f6db772637972023-11-30 4:02:212 secs ago Friend.tech: Shares0xc158db0bd1e9fb64727fad2468d9de4cf25488a20.0000125 ETH
0xbd481d2b9dd05cfcc4e5f1027a44d7200200629e206ba7fed1d0dab2d40f6db772637972023-11-30 4:02:212 secs ago Friend.tech: Shares0xdd9176ea3e7559d6b68b537ef555d3e89403f7420.0000125 ETH
0xbd481d2b9dd05cfcc4e5f1027a44d7200200629e206ba7fed1d0dab2d40f6db772637972023-11-30 4:02:212 secs ago Friend.tech: Shares0xf2fe52249af4a97ee4776243462d81ad5a23daba0.000225 ETH
0x73660ef78906eca0d66b10c5ad02f544615b24912d3da4f38c4b808d7d1ad2d272637852023-11-30 4:01:5726 secs ago Friend.tech: Shares0x89e4a2d743dabef7813dad86bd22230771e216240.0003125 ETH
0x73660ef78906eca0d66b10c5ad02f544615b24912d3da4f38c4b808d7d1ad2d272637852023-11-30 4:01:5726 secs ago Friend.tech: Shares0xdd9176ea3e7559d6b68b537ef555d3e89403f7420.0003125 ETH
0x73660ef78906eca0d66b10c5ad02f544615b24912d3da4f38c4b808d7d1ad2d272637852023-11-30 4:01:5726 secs ago Friend.tech: Shares0x1645729aecba50256abbbda6b0188dc6c95e45c90.005625 ETH
0xdb944ae7a76dfdf06838102305fa0b352df71a45c6c93f541975b6d04afc53b572637692023-11-30 4:01:2558 secs ago Friend.tech: Shares0x398ff87ac69ea8ab3071f50f078785d7d377f39e0.00005 ETH
0xdb944ae7a76dfdf06838102305fa0b352df71a45c6c93f541975b6d04afc53b572637692023-11-30 4:01:2558 secs ago Friend.tech: Shares0xdd9176ea3e7559d6b68b537ef555d3e89403f7420.00005 ETH
0xcb4590f5a4fcdc2b2eaf427e49c9dbdb06f6279220d11dae64848f02b314ef6f72637572023-11-30 4:01:011 min ago Friend.tech: Shares0xeca27619f1a7fb7e2536f4858fe437afd000ab0e0.000703125 ETH
0xcb4590f5a4fcdc2b2eaf427e49c9dbdb06f6279220d11dae64848f02b314ef6f72637572023-11-30 4:01:011 min ago Friend.tech: Shares0xdd9176ea3e7559d6b68b537ef555d3e89403f7420.000703125 ETH
0xcb4590f5a4fcdc2b2eaf427e49c9dbdb06f6279220d11dae64848f02b314ef6f72637572023-11-30 4:01:011 min ago Friend.tech: Shares0x1645729aecba50256abbbda6b0188dc6c95e45c90.01265625 ETH
0x80d26ea50668addf997140488a1b294dbe65ac45555f3eb258bb86bd6630856a72637542023-11-30 4:00:551 min ago Friend.tech: Shares0x11939ddafcd0f08fac6936c77cd8cfcbc00a10c90.001128125 ETH
0x80d26ea50668addf997140488a1b294dbe65ac45555f3eb258bb86bd6630856a72637542023-11-30 4:00:551 min ago Friend.tech: Shares0xdd9176ea3e7559d6b68b537ef555d3e89403f7420.001128125 ETH
0xe426453f2cf6b6349d90328e7a273b593aa203f014eaae1f759f30fe7813776d72637372023-11-30 4:00:212 mins ago Friend.tech: Shares0x267f641bea727ec07c653fda35f201a15b48ae960.00005 ETH
0xe426453f2cf6b6349d90328e7a273b593aa203f014eaae1f759f30fe7813776d72637372023-11-30 4:00:212 mins ago Friend.tech: Shares0xdd9176ea3e7559d6b68b537ef555d3e89403f7420.00005 ETH
0x322557274a5a9078c89800466cc66e4ae7d3d2edca929c377ccdbf26378baf3c72637362023-11-30 4:00:192 mins ago Friend.tech: Shares0xa6ed19d071ff2946429f1a6ea66492defa0739a60.00045 ETH
0x322557274a5a9078c89800466cc66e4ae7d3d2edca929c377ccdbf26378baf3c72637362023-11-30 4:00:192 mins ago Friend.tech: Shares0xdd9176ea3e7559d6b68b537ef555d3e89403f7420.00045 ETH
0x322557274a5a9078c89800466cc66e4ae7d3d2edca929c377ccdbf26378baf3c72637362023-11-30 4:00:192 mins ago Friend.tech: Shares0x1645729aecba50256abbbda6b0188dc6c95e45c90.0081 ETH
0x8d43bb51c82d8966bda51831497b01569ccb35956454ec67c0f79e2bd4651bd972637352023-11-30 4:00:172 mins ago Friend.tech: Shares0x328cd96c8406fa8776b9e9f17b2e532342a7334c0.0036125 ETH
0x8d43bb51c82d8966bda51831497b01569ccb35956454ec67c0f79e2bd4651bd972637352023-11-30 4:00:172 mins ago Friend.tech: Shares0xdd9176ea3e7559d6b68b537ef555d3e89403f7420.0036125 ETH
0x8d43bb51c82d8966bda51831497b01569ccb35956454ec67c0f79e2bd4651bd972637352023-11-30 4:00:172 mins ago Friend.tech: Shares0xd231c4f6a910eac3e18f90a3ca703457b1f4d2e10.065025 ETH
0x24bbf8732ab3170f8355397b5b190b3be92bb26186fcc501c1a24e4c3887f3b372637292023-11-30 4:00:052 mins ago Friend.tech: Shares0xd6e21805c97354633d6343851db309c3ddc2c30f0.003003125 ETH
0x24bbf8732ab3170f8355397b5b190b3be92bb26186fcc501c1a24e4c3887f3b372637292023-11-30 4:00:052 mins ago Friend.tech: Shares0xdd9176ea3e7559d6b68b537ef555d3e89403f7420.003003125 ETH
0xdc3b2e318c5349f2a92326c8f07bb03a2546a5e7b4edabef449f35cb4fbf44a472637282023-11-30 4:00:032 mins ago Friend.tech: Shares0x75fe65cdea380baaf6ba35dbdbc651111c240b350.0000125 ETH
0xdc3b2e318c5349f2a92326c8f07bb03a2546a5e7b4edabef449f35cb4fbf44a472637282023-11-30 4:00:032 mins ago Friend.tech: Shares0xdd9176ea3e7559d6b68b537ef555d3e89403f7420.0000125 ETH
[ Download CSV Export 
Latest 14 Deposits
L2 Txn Hash L1 Deposit Txn Value Token
0x4baaaa6c29a88d46d0d9f67ab1d53516564fe2a5998abae0dd99a3158fd07cd32023-09-19 20:57:3571 days 7 hrs ago0xb5b828efc15cd890655c8c268079c4b80658d88646f27cc9e7f89dfd904ee74c0.0396 Ether (ETH)
0xd299eb59c1902bfd494a2562acac83101fa5fded6767a4af746058e9623b1fc52023-09-18 21:58:3572 days 6 hrs ago0xc3c43b3b3760954c17ea2c3bee9e4a8246c94fa7142f954e4c63fc17b7a53eea0.20796875 Ether (ETH)
0x005442b78f501f07de3af58ccc58089fab9c4a41d07bc659d0ddf2f5c1e0ea6d2023-09-18 21:36:1172 days 6 hrs ago0x071940e5fe57627f42eeb92197dad0cbf2ca30544544331152f1dab2c97e1b060.20796875 Ether (ETH)
0x04fddb5f3520110f6625a9544e07b7cd6a85ce9434580f020633381c0187dbe42023-09-18 18:56:4172 days 9 hrs ago0xd72017ac2b3ca11fa08cc6dae57356a36918c438ce4a3f60b65f2c46d77664f70.0044 Ether (ETH)
0x6912c690ddbd56f345af0ca05c967ad28b6e9ea814d8cc0cc00b12f68302a5922023-09-18 18:16:4172 days 9 hrs ago0xa8f9cbf487f25670362f7ec642b35b9886896a65d82531fc1f581a801649e3e40.00336875 Ether (ETH)
0xd9c0f17ee50376a7159c93f2329eb220d785322730441d26f63672dba5ec4f0d2023-09-18 17:58:0372 days 10 hrs ago0xf3048a1ec317d51371f40ab2b7b9e706a781dc5104491e74e431c39082ded60e0.01161875 Ether (ETH)
0xdcbf63cab94cc25bd047b5592a1c8e2b8be6fba65fda6ebd3c52e2856230e6572023-09-18 17:54:2772 days 10 hrs ago0x71df21f4ff13379d49553a02052b83760ed9d2733dddefe10576564b4956a5a20.01546875 Ether (ETH)
0xddc381dbb25b558fb847b8122fe04e17805d14e55ad6efa9c7d41dab00a7acbd2023-09-18 17:19:3972 days 10 hrs ago0xfbd011e42ca5233ae2267b5fbd0a32d2d34c4fb135536d38d0580dfc4ebbfe0d0.013475 Ether (ETH)
0x28dce24b28c04461ae27d16c7279c346ce358e48cdd0ffd2ed225b1ca6be18412023-09-17 21:10:4373 days 6 hrs ago0x374721d7842a45eb6f7afb5a7767759871b6f1a8392512187f8738047370d95d0.013475 Ether (ETH)
0xb6384071b3948d4676c91a44582bf3e3637d954be26caa9d08bf60f882fc044e2023-09-17 21:03:2173 days 6 hrs ago0x694e2ec382f0f6773af3b658f839dd6f3c24c8abac17e33c1ba2fcee3984ef560.01161875 Ether (ETH)
0xdc4a7ecaeb11af99c4431e2c56621843b7df8d13eb79603bed4c562707a0d42c2023-09-17 18:20:2573 days 9 hrs ago0xf36f9ba6424dd96ce297ae27a378b148f3aa77f926ddfad764ddcd95fb7db88f0.01161875 Ether (ETH)
0xd39fa51228d8849a4460cda99c462af04dc641916456222072a448bdc0932ab82023-09-17 17:53:0173 days 10 hrs ago0x8541abf9ac887ff2fc5e83f37f344b1c58a1d94f2c6d3acca1e7513ed825ffa60.01161875 Ether (ETH)
0x49a0f6b168a98706b5a7df73502c9595a8297843ab481664ec00ffc0f8ea9fa72023-09-15 6:49:5975 days 21 hrs ago0xcaa937044b6ed8bee17e23c4e99c5dba8e9020f95683a6ac275fb6698344a3c90.00034375 Ether (ETH)
0x45e4423403c9b7b42088ab5803fa879fb0334706589e54eda842c71bf94f50902023-09-15 6:20:3575 days 21 hrs ago0x0021b176097d77ce9ac1e44953476f51a14f02257284c838ed23a69c6029fc280.0003125 Ether (ETH)
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FriendtechSharesV1

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at basescan.org on 2023-08-10
*/

// File: contracts/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: contracts/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: contracts/FriendtechShares.sol



pragma solidity >=0.8.2 <0.9.0;


// TODO: Events, final pricing model, 

contract FriendtechSharesV1 is Ownable {
    address public protocolFeeDestination;
    uint256 public protocolFeePercent;
    uint256 public subjectFeePercent;

    event Trade(address trader, address subject, bool isBuy, uint256 shareAmount, uint256 ethAmount, uint256 protocolEthAmount, uint256 subjectEthAmount, uint256 supply);

    // SharesSubject => (Holder => Balance)
    mapping(address => mapping(address => uint256)) public sharesBalance;

    // SharesSubject => Supply
    mapping(address => uint256) public sharesSupply;

    function setFeeDestination(address _feeDestination) public onlyOwner {
        protocolFeeDestination = _feeDestination;
    }

    function setProtocolFeePercent(uint256 _feePercent) public onlyOwner {
        protocolFeePercent = _feePercent;
    }

    function setSubjectFeePercent(uint256 _feePercent) public onlyOwner {
        subjectFeePercent = _feePercent;
    }

    function getPrice(uint256 supply, uint256 amount) public pure returns (uint256) {
        uint256 sum1 = supply == 0 ? 0 : (supply - 1 )* (supply) * (2 * (supply - 1) + 1) / 6;
        uint256 sum2 = supply == 0 && amount == 1 ? 0 : (supply - 1 + amount) * (supply + amount) * (2 * (supply - 1 + amount) + 1) / 6;
        uint256 summation = sum2 - sum1;
        return summation * 1 ether / 16000;
    }

    function getBuyPrice(address sharesSubject, uint256 amount) public view returns (uint256) {
        return getPrice(sharesSupply[sharesSubject], amount);
    }

    function getSellPrice(address sharesSubject, uint256 amount) public view returns (uint256) {
        return getPrice(sharesSupply[sharesSubject] - amount, amount);
    }

    function getBuyPriceAfterFee(address sharesSubject, uint256 amount) public view returns (uint256) {
        uint256 price = getBuyPrice(sharesSubject, amount);
        uint256 protocolFee = price * protocolFeePercent / 1 ether;
        uint256 subjectFee = price * subjectFeePercent / 1 ether;
        return price + protocolFee + subjectFee;
    }

    function getSellPriceAfterFee(address sharesSubject, uint256 amount) public view returns (uint256) {
        uint256 price = getSellPrice(sharesSubject, amount);
        uint256 protocolFee = price * protocolFeePercent / 1 ether;
        uint256 subjectFee = price * subjectFeePercent / 1 ether;
        return price - protocolFee - subjectFee;
    }

    function buyShares(address sharesSubject, uint256 amount) public payable {
        uint256 supply = sharesSupply[sharesSubject];
        require(supply > 0 || sharesSubject == msg.sender, "Only the shares' subject can buy the first share");
        uint256 price = getPrice(supply, amount);
        uint256 protocolFee = price * protocolFeePercent / 1 ether;
        uint256 subjectFee = price * subjectFeePercent / 1 ether;
        require(msg.value >= price + protocolFee + subjectFee, "Insufficient payment");
        sharesBalance[sharesSubject][msg.sender] = sharesBalance[sharesSubject][msg.sender] + amount;
        sharesSupply[sharesSubject] = supply + amount;
        emit Trade(msg.sender, sharesSubject, true, amount, price, protocolFee, subjectFee, supply + amount);
        (bool success1, ) = protocolFeeDestination.call{value: protocolFee}("");
        (bool success2, ) = sharesSubject.call{value: subjectFee}("");
        require(success1 && success2, "Unable to send funds");
    }

    function sellShares(address sharesSubject, uint256 amount) public payable {
        uint256 supply = sharesSupply[sharesSubject];
        require(supply > amount, "Cannot sell the last share");
        uint256 price = getPrice(supply - amount, amount);
        uint256 protocolFee = price * protocolFeePercent / 1 ether;
        uint256 subjectFee = price * subjectFeePercent / 1 ether;
        require(sharesBalance[sharesSubject][msg.sender] >= amount, "Insufficient shares");
        sharesBalance[sharesSubject][msg.sender] = sharesBalance[sharesSubject][msg.sender] - amount;
        sharesSupply[sharesSubject] = supply - amount;
        emit Trade(msg.sender, sharesSubject, false, amount, price, protocolFee, subjectFee, supply - amount);
        (bool success1, ) = msg.sender.call{value: price - protocolFee - subjectFee}("");
        (bool success2, ) = protocolFeeDestination.call{value: protocolFee}("");
        (bool success3, ) = sharesSubject.call{value: subjectFee}("");
        require(success1 && success2 && success3, "Unable to send funds");
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"trader","type":"address"},{"indexed":false,"internalType":"address","name":"subject","type":"address"},{"indexed":false,"internalType":"bool","name":"isBuy","type":"bool"},{"indexed":false,"internalType":"uint256","name":"shareAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"protocolEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"subjectEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"supply","type":"uint256"}],"name":"Trade","type":"event"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyShares","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getBuyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getBuyPriceAfterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getSellPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getSellPriceAfterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFeeDestination","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellShares","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeDestination","type":"address"}],"name":"setFeeDestination","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setProtocolFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setSubjectFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"sharesBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sharesSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"subjectFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5061002d61002261003260201b60201c565b61003a60201b60201c565b6100fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611b508061010d6000396000f3fe6080604052600436106101095760003560e01c8063715018a611610095578063b51d053411610064578063b51d053414610382578063d6e6eb9f1461039e578063f2fde38b146103c9578063f9931be0146103f2578063fbe532341461042f57610109565b8063715018a6146102da5780638da5cb5b146102f15780639ae717811461031c578063a49834211461035957610109565b80634635256e116100dc5780634635256e146101f05780634ce7957c1461022d5780635a8a764e146102585780635cf4ee91146102815780636945b123146102be57610109565b8063020235ff1461010e5780630f026f6d1461014b5780632267a89c1461018857806324dc441d146101c5575b600080fd5b34801561011a57600080fd5b506101356004803603810190610130919061140d565b610458565b6040516101429190611466565b60405180910390f35b34801561015757600080fd5b50610172600480360381019061016d91906114ad565b61047d565b60405161017f9190611466565b60405180910390f35b34801561019457600080fd5b506101af60048036038101906101aa91906114ad565b6104f8565b6040516101bc9190611466565b60405180910390f35b3480156101d157600080fd5b506101da610573565b6040516101e79190611466565b60405180910390f35b3480156101fc57600080fd5b50610217600480360381019061021291906114ad565b610579565b6040516102249190611466565b60405180910390f35b34801561023957600080fd5b506102426105cc565b60405161024f91906114fc565b60405180910390f35b34801561026457600080fd5b5061027f600480360381019061027a9190611517565b6105f2565b005b34801561028d57600080fd5b506102a860048036038101906102a39190611544565b610604565b6040516102b59190611466565b60405180910390f35b6102d860048036038101906102d391906114ad565b61073a565b005b3480156102e657600080fd5b506102ef610b9d565b005b3480156102fd57600080fd5b50610306610bb1565b60405161031391906114fc565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e91906114ad565b610bda565b6040516103509190611466565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190611517565b610c38565b005b61039c600480360381019061039791906114ad565b610c4a565b005b3480156103aa57600080fd5b506103b3611173565b6040516103c09190611466565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb9190611584565b611179565b005b3480156103fe57600080fd5b5061041960048036038101906104149190611584565b6111fc565b6040516104269190611466565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190611584565b611214565b005b6004602052816000526040600020602052806000526040600020600091509150505481565b60008061048a8484610579565b90506000670de0b6b3a7640000600254836104a591906115e0565b6104af9190611651565b90506000670de0b6b3a7640000600354846104ca91906115e0565b6104d49190611651565b90508082846104e39190611682565b6104ed9190611682565b935050505092915050565b6000806105058484610bda565b90506000670de0b6b3a76400006002548361052091906115e0565b61052a9190611651565b90506000670de0b6b3a76400006003548461054591906115e0565b61054f9190611651565b905080828461055e91906116b6565b61056891906116b6565b935050505092915050565b60035481565b60006105c4600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610604565b905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105fa611260565b8060038190555050565b600080600084146106665760066001808661061f91906116b6565b600261062b91906115e0565b6106359190611682565b8560018761064391906116b6565b61064d91906115e0565b61065791906115e0565b6106619190611651565b610669565b60005b90506000808514801561067c5750600184145b6106f957600660018560018861069291906116b6565b61069c9190611682565b60026106a891906115e0565b6106b29190611682565b85876106be9190611682565b866001896106cc91906116b6565b6106d69190611682565b6106e091906115e0565b6106ea91906115e0565b6106f49190611651565b6106fc565b60005b90506000828261070c91906116b6565b9050613e80670de0b6b3a76400008261072591906115e0565b61072f9190611651565b935050505092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111806107b857503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6107f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ee9061176d565b60405180910390fd5b60006108038284610604565b90506000670de0b6b3a76400006002548361081e91906115e0565b6108289190611651565b90506000670de0b6b3a76400006003548461084391906115e0565b61084d9190611651565b905080828461085c9190611682565b6108669190611682565b3410156108a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089f906117d9565b60405180910390fd5b84600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109309190611682565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084846109bc9190611682565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c333876001888787878c8c610a349190611682565b604051610a48989796959493929190611814565b60405180910390a16000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051610a98906118c3565b60006040518083038185875af1925050503d8060008114610ad5576040519150601f19603f3d011682016040523d82523d6000602084013e610ada565b606091505b5050905060008773ffffffffffffffffffffffffffffffffffffffff1683604051610b04906118c3565b60006040518083038185875af1925050503d8060008114610b41576040519150601f19603f3d011682016040523d82523d6000602084013e610b46565b606091505b50509050818015610b545750805b610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90611924565b60405180910390fd5b5050505050505050565b610ba5611260565b610baf60006112de565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610c3082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c2a91906116b6565b83610604565b905092915050565b610c40611260565b8060028190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818111610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc790611990565b60405180910390fd5b6000610ce78383610ce191906116b6565b84610604565b90506000670de0b6b3a764000060025483610d0291906115e0565b610d0c9190611651565b90506000670de0b6b3a764000060035484610d2791906115e0565b610d319190611651565b905084600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de9906119fc565b60405180910390fd5b84600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7a91906116b6565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508484610f0691906116b6565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c333876000888787878c8c610f7e91906116b6565b604051610f92989796959493929190611814565b60405180910390a160003373ffffffffffffffffffffffffffffffffffffffff16828486610fc091906116b6565b610fca91906116b6565b604051610fd6906118c3565b60006040518083038185875af1925050503d8060008114611013576040519150601f19603f3d011682016040523d82523d6000602084013e611018565b606091505b505090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051611064906118c3565b60006040518083038185875af1925050503d80600081146110a1576040519150601f19603f3d011682016040523d82523d6000602084013e6110a6565b606091505b5050905060008873ffffffffffffffffffffffffffffffffffffffff16846040516110d0906118c3565b60006040518083038185875af1925050503d806000811461110d576040519150601f19603f3d011682016040523d82523d6000602084013e611112565b606091505b505090508280156111205750815b80156111295750805b611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f90611924565b60405180910390fd5b505050505050505050565b60025481565b611181611260565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e790611a8e565b60405180910390fd5b6111f9816112de565b50565b60056020528060005260406000206000915090505481565b61121c611260565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112686113a2565b73ffffffffffffffffffffffffffffffffffffffff16611286610bb1565b73ffffffffffffffffffffffffffffffffffffffff16146112dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d390611afa565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113da826113af565b9050919050565b6113ea816113cf565b81146113f557600080fd5b50565b600081359050611407816113e1565b92915050565b60008060408385031215611424576114236113aa565b5b6000611432858286016113f8565b9250506020611443858286016113f8565b9150509250929050565b6000819050919050565b6114608161144d565b82525050565b600060208201905061147b6000830184611457565b92915050565b61148a8161144d565b811461149557600080fd5b50565b6000813590506114a781611481565b92915050565b600080604083850312156114c4576114c36113aa565b5b60006114d2858286016113f8565b92505060206114e385828601611498565b9150509250929050565b6114f6816113cf565b82525050565b600060208201905061151160008301846114ed565b92915050565b60006020828403121561152d5761152c6113aa565b5b600061153b84828501611498565b91505092915050565b6000806040838503121561155b5761155a6113aa565b5b600061156985828601611498565b925050602061157a85828601611498565b9150509250929050565b60006020828403121561159a576115996113aa565b5b60006115a8848285016113f8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115eb8261144d565b91506115f68361144d565b92508282026116048161144d565b9150828204841483151761161b5761161a6115b1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061165c8261144d565b91506116678361144d565b92508261167757611676611622565b5b828204905092915050565b600061168d8261144d565b91506116988361144d565b92508282019050808211156116b0576116af6115b1565b5b92915050565b60006116c18261144d565b91506116cc8361144d565b92508282039050818111156116e4576116e36115b1565b5b92915050565b600082825260208201905092915050565b7f4f6e6c79207468652073686172657327207375626a6563742063616e2062757960008201527f2074686520666972737420736861726500000000000000000000000000000000602082015250565b60006117576030836116ea565b9150611762826116fb565b604082019050919050565b600060208201905081810360008301526117868161174a565b9050919050565b7f496e73756666696369656e74207061796d656e74000000000000000000000000600082015250565b60006117c36014836116ea565b91506117ce8261178d565b602082019050919050565b600060208201905081810360008301526117f2816117b6565b9050919050565b60008115159050919050565b61180e816117f9565b82525050565b60006101008201905061182a600083018b6114ed565b611837602083018a6114ed565b6118446040830189611805565b6118516060830188611457565b61185e6080830187611457565b61186b60a0830186611457565b61187860c0830185611457565b61188560e0830184611457565b9998505050505050505050565b600081905092915050565b50565b60006118ad600083611892565b91506118b88261189d565b600082019050919050565b60006118ce826118a0565b9150819050919050565b7f556e61626c6520746f2073656e642066756e6473000000000000000000000000600082015250565b600061190e6014836116ea565b9150611919826118d8565b602082019050919050565b6000602082019050818103600083015261193d81611901565b9050919050565b7f43616e6e6f742073656c6c20746865206c617374207368617265000000000000600082015250565b600061197a601a836116ea565b915061198582611944565b602082019050919050565b600060208201905081810360008301526119a98161196d565b9050919050565b7f496e73756666696369656e742073686172657300000000000000000000000000600082015250565b60006119e66013836116ea565b91506119f1826119b0565b602082019050919050565b60006020820190508181036000830152611a15816119d9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611a786026836116ea565b9150611a8382611a1c565b604082019050919050565b60006020820190508181036000830152611aa781611a6b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611ae46020836116ea565b9150611aef82611aae565b602082019050919050565b60006020820190508181036000830152611b1381611ad7565b905091905056fea2646970667358221220cebed752f67094eaf80084d89578d96bc6f4fdbc3356576a982a1a23262a11e864736f6c63430008120033

Deployed ByteCode Sourcemap

3678:4541:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4068:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5388:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5749:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3808:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5040:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3724:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4497:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4623:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6112:1013;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2735:103;;;;;;;;;;;;;:::i;:::-;;2087:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5209:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4369:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7133:1083;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3768:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2993:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4177:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4233:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4068:68;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5388:353::-;5477:7;5497:13;5513:34;5525:13;5540:6;5513:11;:34::i;:::-;5497:50;;5558:19;5609:7;5588:18;;5580:5;:26;;;;:::i;:::-;:36;;;;:::i;:::-;5558:58;;5627:18;5676:7;5656:17;;5648:5;:25;;;;:::i;:::-;:35;;;;:::i;:::-;5627:56;;5723:10;5709:11;5701:5;:19;;;;:::i;:::-;:32;;;;:::i;:::-;5694:39;;;;;5388:353;;;;:::o;5749:355::-;5839:7;5859:13;5875:35;5888:13;5903:6;5875:12;:35::i;:::-;5859:51;;5921:19;5972:7;5951:18;;5943:5;:26;;;;:::i;:::-;:36;;;;:::i;:::-;5921:58;;5990:18;6039:7;6019:17;;6011:5;:25;;;;:::i;:::-;:35;;;;:::i;:::-;5990:56;;6086:10;6072:11;6064:5;:19;;;;:::i;:::-;:32;;;;:::i;:::-;6057:39;;;;;5749:355;;;;:::o;3808:32::-;;;;:::o;5040:161::-;5121:7;5148:45;5157:12;:27;5170:13;5157:27;;;;;;;;;;;;;;;;5186:6;5148:8;:45::i;:::-;5141:52;;5040:161;;;;:::o;3724:37::-;;;;;;;;;;;;;:::o;4497:118::-;1973:13;:11;:13::i;:::-;4596:11:::1;4576:17;:31;;;;4497:118:::0;:::o;4623:409::-;4694:7;4714:12;4739:1;4729:6;:11;:70;;4798:1;4793;4788;4779:6;:10;;;;:::i;:::-;4774:1;:16;;;;:::i;:::-;:20;;;;:::i;:::-;4763:6;4757:1;4748:6;:10;;;;:::i;:::-;4747:23;;;;:::i;:::-;:48;;;;:::i;:::-;:52;;;;:::i;:::-;4729:70;;;4743:1;4729:70;4714:85;;4810:12;4835:1;4825:6;:11;:26;;;;;4850:1;4840:6;:11;4825:26;:112;;4936:1;4931;4921:6;4917:1;4908:6;:10;;;;:::i;:::-;:19;;;;:::i;:::-;4903:1;:25;;;;:::i;:::-;:29;;;;:::i;:::-;4892:6;4883;:15;;;;:::i;:::-;4872:6;4868:1;4859:6;:10;;;;:::i;:::-;:19;;;;:::i;:::-;4858:41;;;;:::i;:::-;:75;;;;:::i;:::-;:79;;;;:::i;:::-;4825:112;;;4854:1;4825:112;4810:127;;4948:17;4975:4;4968;:11;;;;:::i;:::-;4948:31;;5019:5;5009:7;4997:9;:19;;;;:::i;:::-;:27;;;;:::i;:::-;4990:34;;;;;4623:409;;;;:::o;6112:1013::-;6196:14;6213:12;:27;6226:13;6213:27;;;;;;;;;;;;;;;;6196:44;;6268:1;6259:6;:10;:41;;;;6290:10;6273:27;;:13;:27;;;6259:41;6251:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;6364:13;6380:24;6389:6;6397;6380:8;:24::i;:::-;6364:40;;6415:19;6466:7;6445:18;;6437:5;:26;;;;:::i;:::-;:36;;;;:::i;:::-;6415:58;;6484:18;6533:7;6513:17;;6505:5;:25;;;;:::i;:::-;:35;;;;:::i;:::-;6484:56;;6594:10;6580:11;6572:5;:19;;;;:::i;:::-;:32;;;;:::i;:::-;6559:9;:45;;6551:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6726:6;6683:13;:28;6697:13;6683:28;;;;;;;;;;;;;;;:40;6712:10;6683:40;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;6640:13;:28;6654:13;6640:28;;;;;;;;;;;;;;;:40;6669:10;6640:40;;;;;;;;;;;;;;;:92;;;;6782:6;6773;:15;;;;:::i;:::-;6743:12;:27;6756:13;6743:27;;;;;;;;;;;;;;;:45;;;;6804:95;6810:10;6822:13;6837:4;6843:6;6851:5;6858:11;6871:10;6892:6;6883;:15;;;;:::i;:::-;6804:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;6911:13;6930:22;;;;;;;;;;;:27;;6965:11;6930:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6910:71;;;6993:13;7012;:18;;7038:10;7012:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6992:61;;;7072:8;:20;;;;;7084:8;7072:20;7064:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6185:940;;;;;;6112:1013;;:::o;2735:103::-;1973:13;:11;:13::i;:::-;2800:30:::1;2827:1;2800:18;:30::i;:::-;2735:103::o:0;2087:87::-;2133:7;2160:6;;;;;;;;;;;2153:13;;2087:87;:::o;5209:171::-;5291:7;5318:54;5357:6;5327:12;:27;5340:13;5327:27;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;5365:6;5318:8;:54::i;:::-;5311:61;;5209:171;;;;:::o;4369:120::-;1973:13;:11;:13::i;:::-;4470:11:::1;4449:18;:32;;;;4369:120:::0;:::o;7133:1083::-;7218:14;7235:12;:27;7248:13;7235:27;;;;;;;;;;;;;;;;7218:44;;7290:6;7281;:15;7273:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7338:13;7354:33;7372:6;7363;:15;;;;:::i;:::-;7380:6;7354:8;:33::i;:::-;7338:49;;7398:19;7449:7;7428:18;;7420:5;:26;;;;:::i;:::-;:36;;;;:::i;:::-;7398:58;;7467:18;7516:7;7496:17;;7488:5;:25;;;;:::i;:::-;:35;;;;:::i;:::-;7467:56;;7586:6;7542:13;:28;7556:13;7542:28;;;;;;;;;;;;;;;:40;7571:10;7542:40;;;;;;;;;;;;;;;;:50;;7534:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7713:6;7670:13;:28;7684:13;7670:28;;;;;;;;;;;;;;;:40;7699:10;7670:40;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;7627:13;:28;7641:13;7627:28;;;;;;;;;;;;;;;:40;7656:10;7627:40;;;;;;;;;;;;;;;:92;;;;7769:6;7760;:15;;;;:::i;:::-;7730:12;:27;7743:13;7730:27;;;;;;;;;;;;;;;:45;;;;7791:96;7797:10;7809:13;7824:5;7831:6;7839:5;7846:11;7859:10;7880:6;7871;:15;;;;:::i;:::-;7791:96;;;;;;;;;;;;;:::i;:::-;;;;;;;;7899:13;7918:10;:15;;7963:10;7949:11;7941:5;:19;;;;:::i;:::-;:32;;;;:::i;:::-;7918:60;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7898:80;;;7990:13;8009:22;;;;;;;;;;;:27;;8044:11;8009:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7989:71;;;8072:13;8091;:18;;8117:10;8091:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8071:61;;;8151:8;:20;;;;;8163:8;8151:20;:32;;;;;8175:8;8151:32;8143:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7207:1009;;;;;;;7133:1083;;:::o;3768:33::-;;;;:::o;2993:201::-;1973:13;:11;:13::i;:::-;3102:1:::1;3082:22;;:8;:22;;::::0;3074:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3158:28;3177:8;3158:18;:28::i;:::-;2993:201:::0;:::o;4177:47::-;;;;;;;;;;;;;;;;;:::o;4233:128::-;1973:13;:11;:13::i;:::-;4338:15:::1;4313:22;;:40;;;;;;;;;;;;;;;;;;4233:128:::0;:::o;2252:132::-;2327:12;:10;:12::i;:::-;2316:23;;:7;:5;:7::i;:::-;:23;;;2308:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2252:132::o;3354:191::-;3428:16;3447:6;;;;;;;;;;;3428:25;;3473:8;3464:6;;:17;;;;;;;;;;;;;;;;;;3528:8;3497:40;;3518:8;3497:40;;;;;;;;;;;;3417:128;3354:191;:::o;659:98::-;712:7;739:10;732:17;;659:98;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:474::-;909:6;917;966:2;954:9;945:7;941:23;937:32;934:119;;;972:79;;:::i;:::-;934:119;1092:1;1117:53;1162:7;1153:6;1142:9;1138:22;1117:53;:::i;:::-;1107:63;;1063:117;1219:2;1245:53;1290:7;1281:6;1270:9;1266:22;1245:53;:::i;:::-;1235:63;;1190:118;841:474;;;;;:::o;1321:77::-;1358:7;1387:5;1376:16;;1321:77;;;:::o;1404:118::-;1491:24;1509:5;1491:24;:::i;:::-;1486:3;1479:37;1404:118;;:::o;1528:222::-;1621:4;1659:2;1648:9;1644:18;1636:26;;1672:71;1740:1;1729:9;1725:17;1716:6;1672:71;:::i;:::-;1528:222;;;;:::o;1756:122::-;1829:24;1847:5;1829:24;:::i;:::-;1822:5;1819:35;1809:63;;1868:1;1865;1858:12;1809:63;1756:122;:::o;1884:139::-;1930:5;1968:6;1955:20;1946:29;;1984:33;2011:5;1984:33;:::i;:::-;1884:139;;;;:::o;2029:474::-;2097:6;2105;2154:2;2142:9;2133:7;2129:23;2125:32;2122:119;;;2160:79;;:::i;:::-;2122:119;2280:1;2305:53;2350:7;2341:6;2330:9;2326:22;2305:53;:::i;:::-;2295:63;;2251:117;2407:2;2433:53;2478:7;2469:6;2458:9;2454:22;2433:53;:::i;:::-;2423:63;;2378:118;2029:474;;;;;:::o;2509:118::-;2596:24;2614:5;2596:24;:::i;:::-;2591:3;2584:37;2509:118;;:::o;2633:222::-;2726:4;2764:2;2753:9;2749:18;2741:26;;2777:71;2845:1;2834:9;2830:17;2821:6;2777:71;:::i;:::-;2633:222;;;;:::o;2861:329::-;2920:6;2969:2;2957:9;2948:7;2944:23;2940:32;2937:119;;;2975:79;;:::i;:::-;2937:119;3095:1;3120:53;3165:7;3156:6;3145:9;3141:22;3120:53;:::i;:::-;3110:63;;3066:117;2861:329;;;;:::o;3196:474::-;3264:6;3272;3321:2;3309:9;3300:7;3296:23;3292:32;3289:119;;;3327:79;;:::i;:::-;3289:119;3447:1;3472:53;3517:7;3508:6;3497:9;3493:22;3472:53;:::i;:::-;3462:63;;3418:117;3574:2;3600:53;3645:7;3636:6;3625:9;3621:22;3600:53;:::i;:::-;3590:63;;3545:118;3196:474;;;;;:::o;3676:329::-;3735:6;3784:2;3772:9;3763:7;3759:23;3755:32;3752:119;;;3790:79;;:::i;:::-;3752:119;3910:1;3935:53;3980:7;3971:6;3960:9;3956:22;3935:53;:::i;:::-;3925:63;;3881:117;3676:329;;;;:::o;4011:180::-;4059:77;4056:1;4049:88;4156:4;4153:1;4146:15;4180:4;4177:1;4170:15;4197:410;4237:7;4260:20;4278:1;4260:20;:::i;:::-;4255:25;;4294:20;4312:1;4294:20;:::i;:::-;4289:25;;4349:1;4346;4342:9;4371:30;4389:11;4371:30;:::i;:::-;4360:41;;4550:1;4541:7;4537:15;4534:1;4531:22;4511:1;4504:9;4484:83;4461:139;;4580:18;;:::i;:::-;4461:139;4245:362;4197:410;;;;:::o;4613:180::-;4661:77;4658:1;4651:88;4758:4;4755:1;4748:15;4782:4;4779:1;4772:15;4799:185;4839:1;4856:20;4874:1;4856:20;:::i;:::-;4851:25;;4890:20;4908:1;4890:20;:::i;:::-;4885:25;;4929:1;4919:35;;4934:18;;:::i;:::-;4919:35;4976:1;4973;4969:9;4964:14;;4799:185;;;;:::o;4990:191::-;5030:3;5049:20;5067:1;5049:20;:::i;:::-;5044:25;;5083:20;5101:1;5083:20;:::i;:::-;5078:25;;5126:1;5123;5119:9;5112:16;;5147:3;5144:1;5141:10;5138:36;;;5154:18;;:::i;:::-;5138:36;4990:191;;;;:::o;5187:194::-;5227:4;5247:20;5265:1;5247:20;:::i;:::-;5242:25;;5281:20;5299:1;5281:20;:::i;:::-;5276:25;;5325:1;5322;5318:9;5310:17;;5349:1;5343:4;5340:11;5337:37;;;5354:18;;:::i;:::-;5337:37;5187:194;;;;:::o;5387:169::-;5471:11;5505:6;5500:3;5493:19;5545:4;5540:3;5536:14;5521:29;;5387:169;;;;:::o;5562:235::-;5702:34;5698:1;5690:6;5686:14;5679:58;5771:18;5766:2;5758:6;5754:15;5747:43;5562:235;:::o;5803:366::-;5945:3;5966:67;6030:2;6025:3;5966:67;:::i;:::-;5959:74;;6042:93;6131:3;6042:93;:::i;:::-;6160:2;6155:3;6151:12;6144:19;;5803:366;;;:::o;6175:419::-;6341:4;6379:2;6368:9;6364:18;6356:26;;6428:9;6422:4;6418:20;6414:1;6403:9;6399:17;6392:47;6456:131;6582:4;6456:131;:::i;:::-;6448:139;;6175:419;;;:::o;6600:170::-;6740:22;6736:1;6728:6;6724:14;6717:46;6600:170;:::o;6776:366::-;6918:3;6939:67;7003:2;6998:3;6939:67;:::i;:::-;6932:74;;7015:93;7104:3;7015:93;:::i;:::-;7133:2;7128:3;7124:12;7117:19;;6776:366;;;:::o;7148:419::-;7314:4;7352:2;7341:9;7337:18;7329:26;;7401:9;7395:4;7391:20;7387:1;7376:9;7372:17;7365:47;7429:131;7555:4;7429:131;:::i;:::-;7421:139;;7148:419;;;:::o;7573:90::-;7607:7;7650:5;7643:13;7636:21;7625:32;;7573:90;;;:::o;7669:109::-;7750:21;7765:5;7750:21;:::i;:::-;7745:3;7738:34;7669:109;;:::o;7784:985::-;8067:4;8105:3;8094:9;8090:19;8082:27;;8119:71;8187:1;8176:9;8172:17;8163:6;8119:71;:::i;:::-;8200:72;8268:2;8257:9;8253:18;8244:6;8200:72;:::i;:::-;8282:66;8344:2;8333:9;8329:18;8320:6;8282:66;:::i;:::-;8358:72;8426:2;8415:9;8411:18;8402:6;8358:72;:::i;:::-;8440:73;8508:3;8497:9;8493:19;8484:6;8440:73;:::i;:::-;8523;8591:3;8580:9;8576:19;8567:6;8523:73;:::i;:::-;8606;8674:3;8663:9;8659:19;8650:6;8606:73;:::i;:::-;8689;8757:3;8746:9;8742:19;8733:6;8689:73;:::i;:::-;7784:985;;;;;;;;;;;:::o;8775:147::-;8876:11;8913:3;8898:18;;8775:147;;;;:::o;8928:114::-;;:::o;9048:398::-;9207:3;9228:83;9309:1;9304:3;9228:83;:::i;:::-;9221:90;;9320:93;9409:3;9320:93;:::i;:::-;9438:1;9433:3;9429:11;9422:18;;9048:398;;;:::o;9452:379::-;9636:3;9658:147;9801:3;9658:147;:::i;:::-;9651:154;;9822:3;9815:10;;9452:379;;;:::o;9837:170::-;9977:22;9973:1;9965:6;9961:14;9954:46;9837:170;:::o;10013:366::-;10155:3;10176:67;10240:2;10235:3;10176:67;:::i;:::-;10169:74;;10252:93;10341:3;10252:93;:::i;:::-;10370:2;10365:3;10361:12;10354:19;;10013:366;;;:::o;10385:419::-;10551:4;10589:2;10578:9;10574:18;10566:26;;10638:9;10632:4;10628:20;10624:1;10613:9;10609:17;10602:47;10666:131;10792:4;10666:131;:::i;:::-;10658:139;;10385:419;;;:::o;10810:176::-;10950:28;10946:1;10938:6;10934:14;10927:52;10810:176;:::o;10992:366::-;11134:3;11155:67;11219:2;11214:3;11155:67;:::i;:::-;11148:74;;11231:93;11320:3;11231:93;:::i;:::-;11349:2;11344:3;11340:12;11333:19;;10992:366;;;:::o;11364:419::-;11530:4;11568:2;11557:9;11553:18;11545:26;;11617:9;11611:4;11607:20;11603:1;11592:9;11588:17;11581:47;11645:131;11771:4;11645:131;:::i;:::-;11637:139;;11364:419;;;:::o;11789:169::-;11929:21;11925:1;11917:6;11913:14;11906:45;11789:169;:::o;11964:366::-;12106:3;12127:67;12191:2;12186:3;12127:67;:::i;:::-;12120:74;;12203:93;12292:3;12203:93;:::i;:::-;12321:2;12316:3;12312:12;12305:19;;11964:366;;;:::o;12336:419::-;12502:4;12540:2;12529:9;12525:18;12517:26;;12589:9;12583:4;12579:20;12575:1;12564:9;12560:17;12553:47;12617:131;12743:4;12617:131;:::i;:::-;12609:139;;12336:419;;;:::o;12761:225::-;12901:34;12897:1;12889:6;12885:14;12878:58;12970:8;12965:2;12957:6;12953:15;12946:33;12761:225;:::o;12992:366::-;13134:3;13155:67;13219:2;13214:3;13155:67;:::i;:::-;13148:74;;13231:93;13320:3;13231:93;:::i;:::-;13349:2;13344:3;13340:12;13333:19;;12992:366;;;:::o;13364:419::-;13530:4;13568:2;13557:9;13553:18;13545:26;;13617:9;13611:4;13607:20;13603:1;13592:9;13588:17;13581:47;13645:131;13771:4;13645:131;:::i;:::-;13637:139;;13364:419;;;:::o;13789:182::-;13929:34;13925:1;13917:6;13913:14;13906:58;13789:182;:::o;13977:366::-;14119:3;14140:67;14204:2;14199:3;14140:67;:::i;:::-;14133:74;;14216:93;14305:3;14216:93;:::i;:::-;14334:2;14329:3;14325:12;14318:19;;13977:366;;;:::o;14349:419::-;14515:4;14553:2;14542:9;14538:18;14530:26;;14602:9;14596:4;14592:20;14588:1;14577:9;14573:17;14566:47;14630:131;14756:4;14630:131;:::i;:::-;14622:139;;14349:419;;;:::o

Swarm Source

ipfs://cebed752f67094eaf80084d89578d96bc6f4fdbc3356576a982a1a23262a11e8
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.