# Build On Mode 

By [Mrfti](https://paragraph.com/@lordofthecoins) · 2023-11-23

---

Sample code 1
-------------

    // SPDX-License-Identifier: GPL-3.0
    
    pragma solidity >=0.8.2 <0.9.0;
    
    contract Storage {
    
        uint256 number;
        
        function store(uint256 num) public {
            number = num;
        }
    
        function retrieve() public view returns (uint256){
            return number;
        }
    }
    

Sample code 2
-------------

    // SPDX-License-Identifier: GPL-3.0
    
    pragma solidity ^0.8.20;
    
    import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.0.0/contracts/token/ERC20/ERC20.sol";
    import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.0.0/contracts/access/Ownable.sol";
    
    contract Register {
        function register(address _recipient) public returns (uint256 tokenId) {}
    }
    
    contract ModeToken is Ownable, ERC20 {
    
        address feeReceiver = msg.sender;
        
        constructor() ERC20("ModeTokenSFSTest", "SFST2") Ownable(msg.sender) {
            _mint(msg.sender, 1000 * 10 ** 18); //Example amount to mint our ERC20
            feeReceiver = msg.sender; //The deployer of the contract will get the NFT to widthraw the earned fees
        }
    
        /// @dev Registers this contract and assigns the NFT to the owner of this contract
        /// @param sfsContractAddress This address is the address of the SFS contract
        function registerThis(address sfsContractAddress) public onlyOwner returns (uint256 tokenId){
            Register sfsContract = Register(sfsContractAddress);
            return sfsContract.register(Ownable.owner());
        }
    }

---

*Originally published on [Mrfti](https://paragraph.com/@lordofthecoins/build-on-mode)*
