Switch branches/tags
Nothing to show
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
..
Failed to load latest commit information.
README.md

README.md

Blockkonnect-Project

TOKEN - BLOCKKONNECT

SYMBOL - XBT

DECIMAL - 18

SUPPLY - 200,000,000

pragma solidity ^0.4.12;

/**

  • @title SafeMath

  • @dev Math operations with safety checks that throw on error

*/

library SafeMath {

function mul(uint256 a, uint256 b) internal constant returns (uint256) {

uint256 c = a * b;

assert(a == 0 || c / a == b);

return c;

}

function div(uint256 a, uint256 b) internal constant 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 c;

}

function sub(uint256 a, uint256 b) internal constant returns (uint256) {

assert(b <= a);

return a - b;

}

function add(uint256 a, uint256 b) internal constant returns (uint256) {

uint256 c = a + b;

assert(c >= a);

return c;

}

}

/**

  • @title Ownable

  • @dev The Ownable contract has an owner address, and provides basic authorization control

  • functions, this simplifies the implementation of "user permissions".

*/

contract Ownable {

address public owner;

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

/**

  • @dev The Ownable constructor sets the original owner of the contract to the sender

  • account.

*/

function Ownable() {

owner = msg.sender;

}

/**

  • @dev Throws if called by any account other than the owner.

*/

modifier onlyOwner() {

require(msg.sender == owner);

_;

}

/**

  • @dev Allows the current owner to transfer control of the contract to a newOwner.

  • @param newOwner The address to transfer ownership to.

*/

function transferOwnership(address newOwner) onlyOwner public {

require(newOwner != address(0));

OwnershipTransferred(owner, newOwner);

owner = newOwner;

}

}

/**

*/

contract ERC20Basic {

uint256 public totalSupply;

function balanceOf(address who) public constant returns (uint256);

function transfer(address to, uint256 value) public returns (bool);

event Transfer(address indexed from, address indexed to, uint256 value);

}

/**

  • @title Basic token

  • @dev Basic version of StandardToken, with no allowances.

*/

contract BasicToken is ERC20Basic {

using SafeMath for uint256;

mapping(address => uint256) balances;

/**

  • @dev transfer token for a specified address

  • @param _to The address to transfer to.

  • @param _value The amount to be transferred.

*/

function transfer(address _to, uint256 _value) public returns (bool) {

require(_to != address(0));



// SafeMath.sub will throw if there is not enough balance.

balances[msg.sender] = balances[msg.sender].sub(_value);

balances[_to] = balances[_to].add(_value);

Transfer(msg.sender, _to, _value);

return true;

}

/**

  • @dev Gets the balance of the specified address.

  • @param _owner The address to query the the balance of.

  • @return An uint256 representing the amount owned by the passed address.

*/

function balanceOf(address _owner) public constant returns (uint256 balance) {

return balances[_owner];

}

}

/**

*/

contract ERC20 is ERC20Basic {

function allowance(address owner, address spender) public constant returns (uint256);

function transferFrom(address from, address to, uint256 value) public returns (bool);

function approve(address spender, uint256 value) public returns (bool);

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

}

/**

*/

contract StandardToken is ERC20, BasicToken {

mapping (address => mapping (address => uint256)) allowed;

/**

  • @dev Transfer tokens from one address to another

  • @param _from address The address which you want to send tokens from

  • @param _to address The address which you want to transfer to

  • @param _value uint256 the amount of tokens to be transferred

*/

function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {

require(_to != address(0));



uint256 _allowance = allowed[_from][msg.sender];



// Check is not needed because sub(_allowance, _value) will already throw if this condition is not met

// require (_value <= _allowance);



balances[_from] = balances[_from].sub(_value);

balances[_to] = balances[_to].add(_value);

allowed[_from][msg.sender] = _allowance.sub(_value);

Transfer(_from, _to, _value);

return true;

}

/**

  • @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.

  • Beware that changing an allowance with this method brings the risk that someone may use both the old

  • and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this

  • race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:

  • https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729

  • @param _spender The address which will spend the funds.

  • @param _value The amount of tokens to be spent.

*/

function approve(address _spender, uint256 _value) public returns (bool) {

allowed[msg.sender][_spender] = _value;

Approval(msg.sender, _spender, _value);

return true;

}

/**

  • @dev Function to check the amount of tokens that an owner allowed to a spender.

  • @param _owner address The address which owns the funds.

  • @param _spender address The address which will spend the funds.

  • @return A uint256 specifying the amount of tokens still available for the spender.

*/

function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {

return allowed[_owner][_spender];

}

/**

  • approve should be called when allowed[_spender] == 0. To increment

  • allowed value is better to use this function to avoid 2 calls (and wait until

  • the first transaction is mined)

  • From MonolithDAO Token.sol

*/

function increaseApproval (address _spender, uint _addedValue)

returns (bool success) {

allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);

Approval(msg.sender, _spender, allowed[msg.sender][_spender]);

return true;

}

function decreaseApproval (address _spender, uint _subtractedValue)

returns (bool success) {

uint oldValue = allowed[msg.sender][_spender];

if (_subtractedValue > oldValue) {

  allowed[msg.sender][_spender] = 0;

} else {

  allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);

}

Approval(msg.sender, _spender, allowed[msg.sender][_spender]);

return true;

}

}

/**

  • @title Burnable Token

  • @dev Token that can be irreversibly burned (destroyed).

*/

contract BurnableToken is StandardToken {

event Burn(address indexed burner, uint256 value);



/**

 * @dev Burns a specific amount of tokens.

 * @param _value The amount of token to be burned.

 */

function burn(uint256 _value) public {

    require(_value > 0);

    require(_value <= balances[msg.sender]);

    // no need to require value <= totalSupply, since that would imply the

    // sender's balance is greater than the totalSupply, which *should* be an assertion failure



    address burner = msg.sender;

    balances[burner] = balances[burner].sub(_value);

    totalSupply = totalSupply.sub(_value);

    Burn(burner, _value);

}

}

contract Blockkonnect is BurnableToken, Ownable {

string public constant name = "Blockkonnect";

string public constant symbol = "XBT";

uint public constant decimals = 18;

uint256 public constant initialSupply = 200000000 * (10 ** uint256(decimals));



// Constructor

function Blockkonnect () {

    totalSupply = initialSupply;

    balances[msg.sender] = initialSupply; // Send all tokens to owner

}

}

CONTRACT ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","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":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialSupply","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":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","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":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":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","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"}]