I've deployed a basic MichaelCoin ERC20 contract without issue and able to interact with it via geth console. My issue is verifying it on http://rinkeby.etherscan.io.

I am inputting MichaelCoin as the contract name and when I run truffle version I get:

Truffle v3.4.5 (core: 3.4.5)
Solidity v0.4.11 (solc-js)

The compiler version I am choosing is v0.4.11+commit.68ef5810

The error I'm getting is:

 Note: Contract was created during Txn# [0xb9c93fc42899022b578594706fcb770899e976054c1377df22f02273c6608a37]
 Result: Does not match the input creation bytecode found at this address

Sorry! The Compiled Contract ByteCode for 'MichaelCoin' does NOT match the Contract Creation Code for [0xba598b093bf468053ad740729466045b17701d87].

Contract name(s) found: 'MichaelCoin' 
Unable to Verify Contract at this point time.

Contract address on rinkeby etherscan is https://rinkeby.etherscan.io/address/0xba598b093bf468053ad740729466045b17701d87

Here is my contract code:

pragma solidity ^0.4.11;

contract MichaelCoin {

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

  string public name = "Michael Coin";
  string public symbol = "MC";
  uint8 public decimals = 18;
  uint256 public totalAmount = 1000000;

  event Transfer (address indexed _from, address indexed _to, uint256 _value);
  event Approval (address indexed _owner, address indexed _spender, uint256 _value);

  function MichaelCoin() {
    // constructor
    balances[msg.sender] = totalAmount;
  function totalSupply() constant returns(uint) {
    return totalAmount;
  function transfer (address _to, uint256 _value) returns (bool success) {
    if (balances[msg.sender] >= _value
        && balances[_to] + _value > balances[_to]) {
      balances[msg.sender] -= _value;
      balances[_to] += _value;
      Transfer(msg.sender, _to, _value);
      return true;
    } else { return false; }

  function transferFrom(address _from, address _to, uint _value) returns (bool success) {
    if(balances[_from] >= _value
        && _value > 0
        && balances[_to] + _value > balances[_to]
        && allowed[_from][msg.sender] >= _value) {

        balances[_from] -= _value;
        balances[_to] += _value;
        Transfer(_from, _to, _value);

        return true;
    return false;

  function balanceOf(address _owner) constant returns (uint256 balance) {
    return balances[_owner];

  function approve(address _spender, uint256 _value) returns (bool success) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;

  function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
    return allowed[_owner][_spender];

  function() {

Thank you for any guidance.

  • I think you are using different account.you have created MichaelCoin with "0xa395650f5e23cb33fad82a0d1924747183b126a0" address and your trying to invoke the published contract with your new address "0xba598b093bf468053ad740729466045b17701d87" . can you please go to geth and try "geth account list" If you could see 0xa395650f5e23cb33fad82a0d1924747183b126a0 the do the following geth --account "0xa395650f5e23cb33fad82a0d1924747183b126a0" and run truffle. It should solve the problem.
    – Rangesh
    Commented Sep 13, 2017 at 19:20
  • Not sure what you're asking me to do. 0xa395650f5e23cb33fad82a0d1924747183b126a0 is the account I created the contract with using truffle as the default account. This issue is on etherscan though. Commented Sep 13, 2017 at 19:55

1 Answer 1


Figured it out. Found this thread - https://github.com/trufflesuite/truffle/issues/456

Need to go to https://rinkeby.etherscan.io/verifyContract2 and set the Runs (Optimizer) to 0

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.