ETH Price: $3,900.63 (+0.43%)

Token

Mobile Integrated Blockchain (MIB)
 

Overview

Max Total Supply

300,000,000 MIB

Holders

7,379 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
20.63329189339700002 MIB

Value
$0.00
0x4f1f9ee4581f87eca1d7e723c435870e10965e95
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

MIB coin is a Mobile Mining based Blockchain that has constructed an ecosystem that minimizes the maintenance of Blockchain Network.

ICO Information

ICO Start Date : Jul 20, 2018 
ICO End Date : Oct 18, 2018
ICO Price  : $0.50
Country : Singapore

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MIBToken

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-07-13
*/

pragma solidity ^0.4.24;

contract DMIBLog {
    event MIBLog(bytes4 indexed sig, address indexed sender, uint _value) anonymous;

    modifier mlog {
        emit MIBLog(msg.sig, msg.sender, msg.value);
        _;
    }
}

contract Ownable {
    address public owner;

    event OwnerLog(address indexed previousOwner, address indexed newOwner, bytes4 sig);

    constructor() public { 
        owner = msg.sender; 
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address newOwner) onlyOwner  public {
        require(newOwner != address(0));
        emit OwnerLog(owner, newOwner, msg.sig);
        owner = newOwner;
    }
}

contract MIBStop is Ownable, DMIBLog {

    bool public stopped;

    modifier stoppable {
        require (!stopped);
        _;
    }
    function stop() onlyOwner mlog public {
        stopped = true;
    }
    function start() onlyOwner mlog public {
        stopped = false;
    }
}

library SafeMath {
    
    /**
     * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
          return 0;
        }

        c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
     * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }

    /**
     * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
     * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}

contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function approve(address spender, uint256 value) public returns (bool);
    function transferFrom(address from, address to, uint256 value) public returns (bool);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract MIBToken is ERC20, MIBStop {
    uint256 public _totalsupply;
    string public constant name = "Mobile Integrated Blockchain";
    string public constant symbol = "MIB";
    uint public constant decimals = 18;
    using SafeMath for uint256;

    /* Actual balances of token holders */
    mapping(address => uint256) public balances;
    
    mapping (address => mapping (address => uint256)) public allowed;    

    event Burn(address indexed from, uint256 value);  

    constructor (uint256 _totsupply) public {
		_totalsupply = _totsupply.mul(1e18);
        balances[msg.sender] = _totalsupply;
    }

    function totalSupply() public view returns (uint256) {
        return _totalsupply;
    }
    
    function balanceOf(address who) public view returns (uint256) {
        return balances[who];
    }

    function transfer(address to, uint256 value) stoppable public returns (bool) {
        require(to != address(0));

        balances[to] = balances[to].add(value);
        balances[msg.sender] = balances[msg.sender].sub(value);
        
        emit Transfer(msg.sender, to, value);

        return true;
    }
    
    function transferFrom(address from, address to, uint256 value) stoppable public returns (bool) {
        require(to != address(0));

        balances[from] = balances[from].sub(value);
        balances[to] = balances[to].add(value);
        allowed[from][msg.sender] = allowed[from][msg.sender].sub(value);
        emit Transfer(from, to, value);
        return true;
    }
      
    function safeApprove(address _spender, uint256 _currentValue, uint256 _newValue)
    public returns (bool success) {
        if (allowance(msg.sender, _spender) == _currentValue)
          return approve(_spender, _newValue);
        else return false;
    }
    
    function approve(address spender, uint256 value) stoppable public returns (bool success) {
        allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }
  
    function allowance(address owner, address spender) public view returns (uint256) {
        return allowed[owner][spender];
    }
    
    function burn(uint256 value) public {
        balances[msg.sender] = balances[msg.sender].sub(value);
        _totalsupply = _totalsupply.sub(value);
        emit Burn(msg.sender, value);
    }
    
    function burnFrom(address who, uint256 value) public onlyOwner payable returns (bool success) {
        
        balances[who] = balances[who].sub(value);
        balances[msg.sender] = balances[msg.sender].add(value);

        emit Burn(who, value);
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"who","type":"address"},{"name":"value","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"success","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalsupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_currentValue","type":"uint256"},{"name":"_newValue","type":"uint256"}],"name":"safeApprove","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_totsupply","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"MIBLog","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"},{"indexed":false,"name":"sig","type":"bytes4"}],"name":"OwnerLog","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

608060405234801561001057600080fd5b50604051602080610bf3833981016040525160008054600160a060020a0319163317905561005381670de0b6b3a7640000640100000000610af261006e82021704565b6001819055336000908152600260205260409020555061009d565b600082151561007f57506000610097565b5081810281838281151561008f57fe5b041461009757fe5b92915050565b610b47806100ac6000396000f3006080604052600436106101115763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461011657806307da68f5146101a0578063095ea7b3146101b757806318160ddd146101ef57806323b872dd1461021657806327e235e314610240578063313ce5671461026157806342966c68146102765780635c6581651461028e57806370a08231146102b557806375f12b21146102d657806379cc6790146102eb5780638da5cb5b1461030257806395d89b4114610333578063a393dc4414610348578063a9059cbb1461035d578063be9a655514610381578063dd62ed3e14610396578063f2fde38b146103bd578063f6503662146103de575b600080fd5b34801561012257600080fd5b5061012b610405565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016557818101518382015260200161014d565b50505050905090810190601f1680156101925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101ac57600080fd5b506101b561043c565b005b3480156101c357600080fd5b506101db600160a060020a03600435166024356104b0565b604080519115158252519081900360200190f35b3480156101fb57600080fd5b50610204610530565b60408051918252519081900360200190f35b34801561022257600080fd5b506101db600160a060020a0360043581169060243516604435610536565b34801561024c57600080fd5b50610204600160a060020a0360043516610671565b34801561026d57600080fd5b50610204610683565b34801561028257600080fd5b506101b5600435610688565b34801561029a57600080fd5b50610204600160a060020a0360043581169060243516610707565b3480156102c157600080fd5b50610204600160a060020a0360043516610724565b3480156102e257600080fd5b506101db61073f565b6101db600160a060020a036004351660243561074f565b34801561030e57600080fd5b5061031761081c565b60408051600160a060020a039092168252519081900360200190f35b34801561033f57600080fd5b5061012b61082b565b34801561035457600080fd5b50610204610862565b34801561036957600080fd5b506101db600160a060020a0360043516602435610868565b34801561038d57600080fd5b506101b561094a565b3480156103a257600080fd5b50610204600160a060020a03600435811690602435166109b8565b3480156103c957600080fd5b506101b5600160a060020a03600435166109e3565b3480156103ea57600080fd5b506101db600160a060020a0360043516602435604435610aa7565b60408051808201909152601c81527f4d6f62696c6520496e746567726174656420426c6f636b636861696e00000000602082015281565b600054600160a060020a0316331461045357600080fd5b60408051348152905133917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960003516919081900360200190a26000805474ff0000000000000000000000000000000000000000191660a060020a179055565b6000805460a060020a900460ff16156104c857600080fd5b336000818152600360209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60015490565b6000805460a060020a900460ff161561054e57600080fd5b600160a060020a038316151561056357600080fd5b600160a060020a03841660009081526002602052604090205461058c908363ffffffff610ad316565b600160a060020a0380861660009081526002602052604080822093909355908516815220546105c1908363ffffffff610ae516565b600160a060020a038085166000908152600260209081526040808320949094559187168152600382528281203382529091522054610605908363ffffffff610ad316565b600160a060020a03808616600081815260036020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060015b9392505050565b60026020526000908152604090205481565b601281565b336000908152600260205260409020546106a8908263ffffffff610ad316565b336000908152600260205260409020556001546106cb908263ffffffff610ad316565b60015560408051828152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250565b600360209081526000928352604080842090915290825290205481565b600160a060020a031660009081526002602052604090205490565b60005460a060020a900460ff1681565b60008054600160a060020a0316331461076757600080fd5b600160a060020a038316600090815260026020526040902054610790908363ffffffff610ad316565b600160a060020a0384166000908152600260205260408082209290925533815220546107c2908363ffffffff610ae516565b336000908152600260209081526040918290209290925580518481529051600160a060020a038616927fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5928290030190a250600192915050565b600054600160a060020a031681565b60408051808201909152600381527f4d49420000000000000000000000000000000000000000000000000000000000602082015281565b60015481565b6000805460a060020a900460ff161561088057600080fd5b600160a060020a038316151561089557600080fd5b600160a060020a0383166000908152600260205260409020546108be908363ffffffff610ae516565b600160a060020a0384166000908152600260205260408082209290925533815220546108f0908363ffffffff610ad316565b336000818152600260209081526040918290209390935580518581529051600160a060020a038716937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a350600192915050565b600054600160a060020a0316331461096157600080fd5b60408051348152905133917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960003516919081900360200190a26000805474ff000000000000000000000000000000000000000019169055565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b600054600160a060020a031633146109fa57600080fd5b600160a060020a0381161515610a0f57600080fd5b60008054604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19933593909316835251600160a060020a03808516939216917f8cc3473d76f967279609ef0cfc0fd750b056bdc0d7c3969099c5f17c5699b3fe919081900360200190a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600082610ab433866109b8565b1415610acb57610ac484836104b0565b905061066a565b50600061066a565b600082821115610adf57fe5b50900390565b8181018281101561052a57fe5b6000821515610b035750600061052a565b50818102818382811515610b1357fe5b041461052a57fe00a165627a7a72305820eeaef776489ceabf05cb8bf88e85cd113282ed5dee333d5117c762de14ab7c3200290000000000000000000000000000000000000000000000000000000011e1a300

Deployed Bytecode

0x6080604052600436106101115763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461011657806307da68f5146101a0578063095ea7b3146101b757806318160ddd146101ef57806323b872dd1461021657806327e235e314610240578063313ce5671461026157806342966c68146102765780635c6581651461028e57806370a08231146102b557806375f12b21146102d657806379cc6790146102eb5780638da5cb5b1461030257806395d89b4114610333578063a393dc4414610348578063a9059cbb1461035d578063be9a655514610381578063dd62ed3e14610396578063f2fde38b146103bd578063f6503662146103de575b600080fd5b34801561012257600080fd5b5061012b610405565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016557818101518382015260200161014d565b50505050905090810190601f1680156101925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101ac57600080fd5b506101b561043c565b005b3480156101c357600080fd5b506101db600160a060020a03600435166024356104b0565b604080519115158252519081900360200190f35b3480156101fb57600080fd5b50610204610530565b60408051918252519081900360200190f35b34801561022257600080fd5b506101db600160a060020a0360043581169060243516604435610536565b34801561024c57600080fd5b50610204600160a060020a0360043516610671565b34801561026d57600080fd5b50610204610683565b34801561028257600080fd5b506101b5600435610688565b34801561029a57600080fd5b50610204600160a060020a0360043581169060243516610707565b3480156102c157600080fd5b50610204600160a060020a0360043516610724565b3480156102e257600080fd5b506101db61073f565b6101db600160a060020a036004351660243561074f565b34801561030e57600080fd5b5061031761081c565b60408051600160a060020a039092168252519081900360200190f35b34801561033f57600080fd5b5061012b61082b565b34801561035457600080fd5b50610204610862565b34801561036957600080fd5b506101db600160a060020a0360043516602435610868565b34801561038d57600080fd5b506101b561094a565b3480156103a257600080fd5b50610204600160a060020a03600435811690602435166109b8565b3480156103c957600080fd5b506101b5600160a060020a03600435166109e3565b3480156103ea57600080fd5b506101db600160a060020a0360043516602435604435610aa7565b60408051808201909152601c81527f4d6f62696c6520496e746567726174656420426c6f636b636861696e00000000602082015281565b600054600160a060020a0316331461045357600080fd5b60408051348152905133917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960003516919081900360200190a26000805474ff0000000000000000000000000000000000000000191660a060020a179055565b6000805460a060020a900460ff16156104c857600080fd5b336000818152600360209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60015490565b6000805460a060020a900460ff161561054e57600080fd5b600160a060020a038316151561056357600080fd5b600160a060020a03841660009081526002602052604090205461058c908363ffffffff610ad316565b600160a060020a0380861660009081526002602052604080822093909355908516815220546105c1908363ffffffff610ae516565b600160a060020a038085166000908152600260209081526040808320949094559187168152600382528281203382529091522054610605908363ffffffff610ad316565b600160a060020a03808616600081815260036020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060015b9392505050565b60026020526000908152604090205481565b601281565b336000908152600260205260409020546106a8908263ffffffff610ad316565b336000908152600260205260409020556001546106cb908263ffffffff610ad316565b60015560408051828152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250565b600360209081526000928352604080842090915290825290205481565b600160a060020a031660009081526002602052604090205490565b60005460a060020a900460ff1681565b60008054600160a060020a0316331461076757600080fd5b600160a060020a038316600090815260026020526040902054610790908363ffffffff610ad316565b600160a060020a0384166000908152600260205260408082209290925533815220546107c2908363ffffffff610ae516565b336000908152600260209081526040918290209290925580518481529051600160a060020a038616927fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5928290030190a250600192915050565b600054600160a060020a031681565b60408051808201909152600381527f4d49420000000000000000000000000000000000000000000000000000000000602082015281565b60015481565b6000805460a060020a900460ff161561088057600080fd5b600160a060020a038316151561089557600080fd5b600160a060020a0383166000908152600260205260409020546108be908363ffffffff610ae516565b600160a060020a0384166000908152600260205260408082209290925533815220546108f0908363ffffffff610ad316565b336000818152600260209081526040918290209390935580518581529051600160a060020a038716937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a350600192915050565b600054600160a060020a0316331461096157600080fd5b60408051348152905133917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960003516919081900360200190a26000805474ff000000000000000000000000000000000000000019169055565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b600054600160a060020a031633146109fa57600080fd5b600160a060020a0381161515610a0f57600080fd5b60008054604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19933593909316835251600160a060020a03808516939216917f8cc3473d76f967279609ef0cfc0fd750b056bdc0d7c3969099c5f17c5699b3fe919081900360200190a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600082610ab433866109b8565b1415610acb57610ac484836104b0565b905061066a565b50600061066a565b600082821115610adf57fe5b50900390565b8181018281101561052a57fe5b6000821515610b035750600061052a565b50818102818382811515610b1357fe5b041461052a57fe00a165627a7a72305820eeaef776489ceabf05cb8bf88e85cd113282ed5dee333d5117c762de14ab7c320029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000000000000000011e1a300

-----Decoded View---------------
Arg [0] : _totsupply (uint256): 300000000

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000011e1a300


Swarm Source

bzzr://eeaef776489ceabf05cb8bf88e85cd113282ed5dee333d5117c762de14ab7c32
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.