Flurk Chat

{{#chat}}
{{text}}
{{/chat}}
{{#user}}
{{/user}}

History

{{#history}}
{{short_time}}
⧫{{value}}
{{/history}}
{{#args.id}}

{{args.id}}

{{/args.id}} {{#query.length}}
{{#query}} {{v}} {{count}} {{/query}}
{{/query.length}} {{>Flurks}} {{#paging}} {{/paging}}

Sales history

Updates in real time from all markets. Shows both sales on markets and direct token transfers.


{{#transfers}}
{{value}} eth
{{market}}
{{block_timestamp}}
{{/transfers}}
    {{#flurks}} {{>Flurk}} {{/flurks}}
{{#flurks}}
{{>Details}}
{{#transfers.length}}
Price Market From To Time {{#transfers}}
{{value}} eth {{market}} {{from}} {{to}} {{block_timestamp}} {{/transfers}}
{{/transfers.length}}
{{/flurks}}

About FlurkEx

A dedicated platform for trading and adding value to the NFT collection Flurks by StoneToss

FlurkEx is completely independent and not affiliated with StoneToss or anyone else.

  • Low operating costs and complete independence mean this site can run for decades with no traffic unlike the other popular markets which are companies that rely on investors to keep them running.
    Investors who dictate what content is allowed on those markets. If this site itself stops working the ETH contract can still be accessed.
  • If you list a flurk for sale on FlurkEx it doesn't affect your ability to also list it on other markets. If you already have a listing on another market you can still place a listing on FlurkEx.
  • 1% fee randomly distributed to holders of flurks. (Currently disabled, see below)
    Each time a flurk is bought 1% of the price is assigned to one of the wallets holding a flurk at that time. Hold more flurks and you're more likely to win.
    Login with metamask to see your balance on the contract and withdraw it. (Not implement yet but accessible directly from the contract if needed)
  • 2% total fee
    The contract with the included lottery took too much gas so it was unusable. If the total fees exceed 0.5 ETH I'll implement the lottery again on the operator side instead of inside the contract, giving away half the fees to random flurk holders.
  • Decentralized contract with no central dApp required.
    The operator can't remove your listings. You can use the same contract on your own site.
  • The site and the contract are secure and more reliable than other popular markets.
    The currently most popular market takes complete central control of your flurks when you list them. This saves gas for the seller which encourages listings but it means you're trusting them completely not to get hacked etc.
  • Development is ongoing and quick. Expect more features.
FlurkEx is an interface to a decentralized contract on ETH made for me and my internet friends. When you use the service you are assuming responsibility for your actions. This is a tool made by one heroic and handsome man, not a company capable of providing serious support.

ETH contract

0x928157Bb89b45D7d0789E029387d9d0C348325C2
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol";

contract FlurkEx_light {
    address operator;
    uint balance;
    ERC721 hostContract;
    mapping (bytes32 => uint) Tokens;

    constructor (address _operator, address _contract) {
        operator = _operator;
        hostContract = ERC721(_contract);
    }

    function setTokenPrice(uint _tokenId, uint _price) external {
        require(hostContract.ownerOf(_tokenId) == msg.sender, "Only token owner can set token price.");
        Tokens[keccak256(abi.encodePacked(msg.sender, _tokenId))] = _price;
    }
    
    function buyToken(address _seller, uint _tokenId) external payable {
        bytes32 offeringId = keccak256(abi.encodePacked(_seller, _tokenId));        
        require(Tokens[offeringId] > 0, "no offering");
        require(msg.value >= Tokens[offeringId], "Not enough funds to buy");
        balance += (msg.value * 20) / 1000;
        hostContract.safeTransferFrom(_seller, msg.sender, _tokenId);
        payable(_seller).transfer((msg.value * (1000-(20))) / 1000);
    } 

    function withdrawBalance() external {
        require(balance > 0,"You don't have any balance to withdraw");
        require(msg.sender == operator,"only the operator can withdraw");
        payable(operator).transfer(balance);
        balance = 0;
    }
    function setOperator(address _operator) external {
        require(msg.sender == operator,"only the operator can change the settings");
        operator = _operator;
    }  
}