I have heard of the concept of colored coin in bitcoin , is there anything similar in Ethereum?

I want to have a single wallet which maintains two types of ether

. lets say one coming from me adding ether and other earning from playing games . i want to use these two ethers separately in a single wallet. is there anything for this?

thank you :)

1 Answer 1


Ethereum was designed with this feature in mind, among others. You usually won't hear people call them "colored coins" but rather, tokens.

Try these links in the intro docs:



Or if you just want code:

contract tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData); }

contract MyToken {
    /* Public variables of the token */
    string public standard = 'Token 0.1';
    string public name;
    string public symbol;
    uint8 public decimals;
    uint256 public totalSupply;

    /* This creates an array with all balances */
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;

    /* This generates a public event on the blockchain that will notify clients */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /* Initializes contract with initial supply tokens to the creator of the contract */
    function MyToken(
        uint256 initialSupply,
        string tokenName,
        uint8 decimalUnits,
        string tokenSymbol
        ) {
        balanceOf[msg.sender] = initialSupply;              // Give the creator all initial tokens
        totalSupply = initialSupply;                        // Update total supply
        name = tokenName;                                   // Set the name for display purposes
        symbol = tokenSymbol;                               // Set the symbol for display purposes
        decimals = decimalUnits;                            // Amount of decimals for display purposes
        msg.sender.send(msg.value);                         // Send back any ether sent accidentally

    /* Send coins */
    function transfer(address _to, uint256 _value) {
        if (balanceOf[msg.sender] < _value) throw;           // Check if the sender has enough
        if (balanceOf[_to] + _value < balanceOf[_to]) throw; // Check for overflows
        balanceOf[msg.sender] -= _value;                     // Subtract from the sender
        balanceOf[_to] += _value;                            // Add the same to the recipient
        Transfer(msg.sender, _to, _value);                   // Notify anyone listening that this transfer took place

    /* Allow another contract to spend some tokens in your behalf */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData)
        returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        tokenRecipient spender = tokenRecipient(_spender);
        spender.receiveApproval(msg.sender, _value, this, _extraData);
        return true;

    /* A contract attempts to get the coins */
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        if (balanceOf[_from] < _value) throw;                 // Check if the sender has enough
        if (balanceOf[_to] + _value < balanceOf[_to]) throw;  // Check for overflows
        if (_value > allowance[_from][msg.sender]) throw;   // Check allowance
        balanceOf[_from] -= _value;                          // Subtract from the sender
        balanceOf[_to] += _value;                            // Add the same to the recipient
        allowance[_from][msg.sender] -= _value;
        Transfer(_from, _to, _value);
        return true;

    /* This unnamed function is called whenever someone tries to send ether to it */
    function () {
        throw;     // Prevents accidental sending of ether
  • feeling very difficult to understand this.. any easy way to understand and implement? @koampapapa Commented Jul 22, 2016 at 7:16
  • Try the links I gave you. They are not that bad... just drink a coffee first Commented Jul 22, 2016 at 12:35
  • hahaha... I read those links, i couldn't install mist properly on my linux system ,it is making some problem. so i couldn't deploy any contracts so far and so stuck with running contracts part. so looking for something which is easy way to implement :D Commented Jul 22, 2016 at 13:01
  • Yea that also did not work for me on Linux. Then I found this awesome thing ethereum.github.io/browser-solidity/#version=soljson-latest.js Then I continued through the tutorial and learned a lot. Then I had A.D.D. and didnt actually implement my contract, but I bet if you wanted to you could Commented Jul 22, 2016 at 13:38
  • yes i tried that but couldn't implement. i have installed truffle/pudding as well. but couldnot connect truffle with geth and struggling :( Commented Jul 22, 2016 at 13:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.