#StackBounty: #solidity #populus Populus: Contract fails due to solidity gas limit

Bounty: 50

  • platform darwin — Python 2.7.12, pytest-3.0.2, py-1.4.31, pluggy-0.3.1
  • plugins: populus==2.0.1
  • OS: Mac OS X

I believe I face with this error due to Solidity compiler’s default gas limit that is 3,000,000.

[Q] How could I increase my solidity compiler’s gas limit due to this error, or another gas limit that populus reads from?

in estimate_gas -> does it exceed gas limit? When I remove some function inside my contract the error gets fixed. I guess there is a gas limit for populus to deploy the contract, is it possible to extend it? If yes how?

Error:

========================================== FAILURES ==========================================
________________________________________ test_receipt ________________________________________

web3 = <web3.main.Web3 object at 0x1061af2d0>
accounts = ['0x82A978B3f5962A5b0957d9ee9eEf472EE55B42F1', '0x7d577a597B2742b498Cb5Cf0C26cDCD726d39E6e', '0xDCEceAF3fc5C0a63d195d6...1d7585Bd0577402861E5', '0x13cBB8D99C6C4e0f2728C7d72606e78A29C4E224', '0x77dB2BEBBA79Db42a978F896968f4afCE746ea1F', ...]
chain = <populus.chain.tester.TesterChain object at 0x105489b50>

    def test_receipt(web3, accounts, chain): #{
        web3._requestManager = web3.manager
        global blkArrayIndex;
        global runTime;
>       my_contract, _   = chain.provider.get_or_deploy_contract('eBlocBroker');

tests/test.py:39:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/Library/Python/2.7/site-packages/populus/contracts/provider.py:143: in get_or_deploy_contract
    deploy_kwargs=deploy_kwargs,
/Library/Python/2.7/site-packages/populus/contracts/provider.py:121: in deploy_contract
    kwargs=deploy_kwargs,
/Library/Python/2.7/site-packages/web3/contract.py:311: in deploy
    txn_hash = cls.web3.eth.sendTransaction(deploy_transaction)
/Library/Python/2.7/site-packages/web3/eth.py:216: in sendTransaction
    get_buffered_gas_estimate(self.web3, transaction),
/Library/Python/2.7/site-packages/web3/utils/transactions.py:28: in get_buffered_gas_estimate
    gas_estimate = web3.eth.estimateGas(gas_estimate_transaction)
/Library/Python/2.7/site-packages/web3/eth.py:263: in estimateGas
    [transaction],
/Library/Python/2.7/site-packages/web3/manager.py:93: in request_blocking
    response = self._make_request(method, params)
/Library/Python/2.7/site-packages/web3/manager.py:76: in _make_request
    return request_func(method, params)
/Library/Python/2.7/site-packages/web3/middleware/attrdict.py:20: in middleware
    response = make_request(method, params)
/Library/Python/2.7/site-packages/web3/middleware/formatting.py:23: in middleware
    response = make_request(method, formatted_params)
/Library/Python/2.7/site-packages/web3/middleware/formatting.py:25: in middleware
    response = make_request(method, params)
/Library/Python/2.7/site-packages/web3/middleware/exception_handling.py:20: in middleware
    return make_request(method, params)
/Library/Python/2.7/site-packages/web3/providers/tester.py:86: in middleware
    return make_request(method, params)
/Library/Python/2.7/site-packages/web3/providers/tester.py:115: in make_request
    response = rpc_fn(*params)
/Library/Python/2.7/site-packages/testrpc/rpc.py:138: in eth_estimateGas
    return self.client.estimate_gas(**formatted_transaction)
/Library/Python/2.7/site-packages/testrpc/client/client.py:253: in estimate_gas
    txn_hash = self.send_transaction(*args, **kwargs)
/Library/Python/2.7/site-packages/testrpc/client/client.py:263: in send_transaction
    self._send_transaction(*args, **kwargs)
/Library/Python/2.7/site-packages/testrpc/client/client.py:58: in inner
    return client_method(self, *args, **kwargs)
/Library/Python/2.7/site-packages/testrpc/client/utils.py:104: in inner
    return fn(*bytes_args, **bytes_kwargs)
/Library/Python/2.7/site-packages/testrpc/client/client.py:225: in _send_transaction
    output = self.evm.send(sender=sender, to=to, value=value, evmdata=data)
/Library/Python/2.7/site-packages/ethereum/tester.py:338: in send
    return self._send(*args, **kwargs)["output"]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ethereum.tester.state object at 0x1061af590>
sender = 'x04HRxb2xa6pxadxe5@~xxfb(cxc5x1dxe9xfcxb9eBxa0qx86xfe:xedxa6xbbx8ax11m'
to = '', value = 0
evmdata = "```@R4x15ax00x0fW`x00x80xfd[C`x00x81x90UP3`x01`x00ax01x00nx81Tx81sxffxffxffxffxffxffxffxffxf...c3V[Px90V[x90Vx00xa1ebzzr0X Ksx04pt'-x02$\xbfx86x9cx0fxf8xfaxbfx97xdaxb8/xd6Xxc8|xadpxc6JQpCx00)"
funid = None, abi = None, profiling = 0

    def _send(self, sender, to, value, evmdata='', funid=None, abi=None,  # pylint: disable=too-many-arguments
              profiling=0):
        # pylint: disable=too-many-locals

        if funid is not None or abi is not None:
            raise Exception(
                'Send with funid+abi is deprecated. Please use the abi_contract mechanism'
            )

        start_time = time.time()
        gas_used = self.block.gas_used

        sendnonce = self.block.get_nonce(privtoaddr(sender))
        transaction = transactions.Transaction(sendnonce, gas_price, gas_limit, to, value, evmdata)
        self.last_tx = transaction
        transaction.sign(sender)
        recorder = None

        if profiling > 1:
            recorder = LogRecorder(
                disable_other_handlers=True,
                log_config=TRACE_LVL_MAP[3],
            )

        try:
            (success, output) = processblock.apply_transaction(self.block, transaction)

            if not success:
>               raise TransactionFailed()
E               TransactionFailed

/Library/Python/2.7/site-packages/ethereum/tester.py:296: TransactionFailed
------------------------------------- Captured log call --------------------------------------
rpc.py                     129 INFO     eth_blockNumber
============================ 1 failed, 4 warnings in 1.41 seconds ============================


Get this bounty!!!

#StackBounty: #solidity #contract-development #contract-design #remix redirecting value received to another erc20 wallet

Bounty: 50

How can I redirect any value/tokens sent to an ERC20 wallet, to another wallet?

I heard of a new method of stealing currencies and would like to know how it works in practice. Basically, the bad guy spreads the privatekey everywhere on the web and funds the associated wallet with some tokens. Victims will then try to empty the wallet through the privatekey but the wallet has no GAS and any GAS sent to it is redirected to another wallet.
So all the thief has to do, is to spread the privatekey around and wait for victims to take the bait.

How would a contract like this look like?


Get this bounty!!!

#StackBounty: #solidity #remix #ethereumjs #truffle-migration Gas related issue at the time of contract migration

Bounty: 50

Error: The contract code couldn’t be stored, please check your gas amount.
(I also tried to add gas in truffle.js but didn’t get any success)

pragma solidity ^0.4.21;


contract Ownable {
  address public owner;
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
  function constuctor() public {
    owner = msg.sender;
  }
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }
}

// ######################################################################

library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a / b;
    return c;
  }
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 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 BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  uint256 totalSupply_;

  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  function balanceOf(address _owner) public view returns (uint256 balance) {
    return balances[_owner];
  }

}

// ######################################################################

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view 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)) internal allowed;

  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    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 approve(address _spender, uint256 _value) public returns (bool) {
    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 increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

// ######################################################################

contract DeveloperToken is StandardToken {
  string public constant name = "DeveloperToken";
  string public constant symbol = "DEV";
  uint256 public constant decimals = 18;
}

// ######################################################################

contract DeveloperCrowdsale is Ownable {
  using SafeMath for uint256;

  // ============= Token Distribution ================
  uint256 public maxTokens = 100000000 *(10 ** 18);
  uint256 public tokensForEcosystem = 80000000 *(10 ** 18);
  uint256 public tokensForBounty = 4000000 *(10 ** 18);
  uint256 public totalTokensForSale = 15000000 *(10 ** 18);
  uint256 public tokenForAirdrop = 1000000 *(10 ** 18);

  ERC20 public token;

  address public wallet;

  uint256 public rate;

  uint256 public weiRaised;

  uint256 public cap;
  uint256 public goal;

  // start and end timestamps where investments are allowed (both inclusive)
  uint256 public startTime;
  uint256 public endTime;

  bool public mintingFinished = false;

  mapping(address => uint256) balances;

  event Mint(address indexed to, uint256 amount);
  event MintFinished();
  event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);

  function constuctor() public {
    rate = 1000;
    wallet = msg.sender;
    token = new DeveloperToken();
    startTime = 1527186660000;  // new Date('05/25/2018 00:01').getTime();
    endTime = 1529951340000; //  new Date('06/25/2018 23:59').getTime();
    cap = 42500 *(10 ** 18);
    goal = 7500 *(10 ** 18);
  }

  function () external payable {
    uint256 tokensThatWillBeMintedAfterPurchase = msg.value.mul(rate);
    require(token.totalSupply() + tokensThatWillBeMintedAfterPurchase < totalTokensForSale);
    buyTokens(msg.sender);
  }

  // ====================== Crowdsale Price Management =================
  function setCrowdsalePrice() public onlyOwner {
      if (weiRaised <= 2500000 *(10 ** 18)) {
        setCurrentRate(1000);
      } else if (weiRaised <= 5000000 *(10 ** 18)) {
        setCurrentRate(500);
      } else if (weiRaised <= 10000000 *(10 ** 18)) {
        setCurrentRate(333);
      } else if (weiRaised <= 15000000 *(10 ** 18)) {
        setCurrentRate(250);
      }
  }

  // Change the current rate
  function setCurrentRate(uint256 _rate) private {
      rate = _rate;
  }

  function buyTokens(address _beneficiary) public payable {
    require(validPurchase());

    uint256 weiAmount = msg.value;

    // calculate token amount to be created
    uint256 tokens = _getTokenAmount(weiAmount);

    // update state
    weiRaised = weiRaised.add(weiAmount);

    _processPurchase(_beneficiary, tokens);
    emit TokenPurchase(msg.sender, _beneficiary, weiAmount, tokens);

    _forwardFunds();
  }

  function _deliverTokens(address _beneficiary, uint256 _tokenAmount) internal {
    token.transfer(_beneficiary, _tokenAmount);

  }

  function _processPurchase(address _beneficiary, uint256 _tokenAmount) internal {
    _deliverTokens(_beneficiary, _tokenAmount);
  }

  function _getTokenAmount(uint256 _weiAmount) internal view returns (uint256) {
    return _weiAmount.mul(rate);
  }

  function _forwardFunds() internal {
    token.totalSupply() + msg.value.mul(rate);
    wallet.transfer(msg.value);
  }

  // Finish: Mint Extra Tokens as needed before finalizing the Crowdsale.
  function finish(address _airdrop, address _ecosystemFund, address _bountyFund) public onlyOwner {
    require(!mintingFinished);
    require(hasEnded());
    uint256 alreadyMinted = token.totalSupply();
    require(alreadyMinted < maxTokens);

    uint256 unsoldTokens = totalTokensForSale - alreadyMinted;
    if (unsoldTokens > 0) {
      tokensForEcosystem = tokensForEcosystem + unsoldTokens;
    }

    token.totalSupply().add(tokensForEcosystem);
    token.totalSupply().add(tokensForBounty);
    token.totalSupply().add(tokenForAirdrop);

    balances[_airdrop].add(tokenForAirdrop);
    balances[_ecosystemFund].add(tokensForEcosystem);
    balances[_bountyFund].add(tokensForBounty);
    mintingFinished = true ;
  }

  // @return true if the transaction can buy tokens
  function validPurchase() internal view returns (bool) {
    bool withinCap = weiRaised.add(msg.value) <= cap;
    bool withinPeriod = now >= startTime && now <= endTime;
    bool nonZeroPurchase = msg.value != 0;
    return withinPeriod && nonZeroPurchase && withinCap;
  }

  // @return true if crowdsale event has ended
  function hasEnded() public view returns (bool) {
    bool capReached = weiRaised >= cap;
    return now > endTime || capReached;
  }

}

This is my migration file :

var BasicToken =  artifacts.require("./BasicToken.sol");
var ERC20 =  artifacts.require("./ERC20.sol");
var ERC20Basic =  artifacts.require("./ERC20Basic.sol");
var Ownable =  artifacts.require("./Ownable.sol");
var SafeMath = artifacts.require("./SafeMath.sol");
var StandardToken =  artifacts.require("./StandardToken.sol");
var DeveloperToken =  artifacts.require("./DeveloperToken.sol");
var DeveloperCrowdsale =  artifacts.require("./DeveloperCrowdsale.sol");


module.exports = function(deployer) {
  deployer.deploy(SafeMath);
  deployer.link(SafeMath, BasicToken);
  deployer.deploy(BasicToken);

  deployer.deploy(ERC20);
  deployer.deploy(ERC20Basic);
  deployer.deploy(Ownable);
  deployer.deploy(StandardToken);
  deployer.deploy(DeveloperToken);
  deployer.link(SafeMath, DeveloperCrowdsale);
  deployer.deploy(DeveloperCrowdsale);

};

This is my truffle.js :

module.exports = {
    networks: {
         development: {
              host: "localhost",
              port: 8545,
              network_id: "*" // Match any network id
            }
       }
};


Get this bounty!!!

#StackBounty: #solidity #remix Possible Library Linkage problem on deployed contract at `remix-alpha`, that actually works on JavaScrip…

Bounty: 100

I guess this error is related to following closed issue, which still exists. The issue closed recommending us to use remix-alpha, but remix-alpha still has the same error or I might be doing something wrong.

=> Is there anyone else facing with similar problem?

Deployed file names:

Lib.sol         # Library contract //uses around 1,600,000 GAS to be deployed.
myContract.sol  # Main contract    //uses around 3,400,000 GAS to be deployed.

I have tested my contract and it works perfectly fine on populus and remix’s JavaScript VM mode. So there is no issue on the contract’s code and its implementation.

But whenever I deployed my contract on the remix-alpha; and tested my code on the deployed code as on Web3 Provide mode, if there is a call to Library function, the function call crashes (thrown) at that point.

I really don’t know what causes this problem. This error is pretty annoying costing me hours and ether for each deployment, and facing contract does not work as it should be.

As simplified, I have an emptied Library function call:

Lib.sol:

/* Simple Library function */
function constructCluster() public {

}

When there is a call to that function; the function call is reverted().

myContract.sol: cluster.constructCluster(); //Contract is reverted()

[Q] Is there anyway to fix this issue? I am out ot options. The only solution comes to my mind to merge main contact and Library contract but when I merge them I face with following error: SolcError: InternalCompilerError: Static memory load of more than 32 bytes requested.

=> Instead of using remix browser, if I deploy my contract from geth-console would it help to fix the problem?


Please note that: I have tried shorten the contract’s name and deploy at http://remix.ethereum.org/. But the exact same contract gives same linkage problem on JavaScript VM mode at remix.ethereum.org that actually works at https://ethereum.github.io/browser-solidity ‘s JavaScript VM mode.


Get this bounty!!!

#StackBounty: #solidity #inheritance Solidity and multiple inheritance

Bounty: 50

I’m attempting to understand how solidity resolves multiple inheritance. As explained in the docs, Solidity uses C3 linearization. The relation between my classes is displayed on the image below:
Inheritance graph

I want to understand in which order super is working when called from SampleCrowdsale. I ran the C3 linearization algorithm manually as well as using this tool. The results I get:

1) SampleCrowdsale
2) CappedCrowdsale
3) RefundableCrowdsale
4) FinalizableCrowdsale
5) TimedCrowdsale
6) MintedCrowdsale
7) IndividuallyCappedCrowdsale
8) TieredCrowdsale
9) Crowdsale
10) Ownable

Then I tried to confirm my findings empirically. I added a method log to every contract in the inheritance chain, the method fires an event with the contract name. My findings using this method differ from the analytical approach:

1) SampleCrowdsale
2) TieredCrowdsale
3) IndividuallyCappedCrowdsale
4) MintedCrowdsale
5) RefundableCrowdsale
6) FinalizableCrowdsale
7) TimedCrowdsale
8) CappedCrowdsale
9) Crowdsale
10) Ownable

Can anyone explain to me how to solve this?


Get this bounty!!!

#StackBounty: #solidity #truffle #javascript #nodejs Truffle Framework "Block-scoped declarations not yet supported outside strict…

Bounty: 50

I have tried to install and use the Truffle Framework through npm on Elementary OS (Ubuntu distribution). There where no obvious issues with the installation but when running any command e.g. “truffle init” or “truffle unbox metacoin” I get the error:

/usr/local/lib/node_modules/truffle/build/cli.bundled.js:64601
!function(e,t){ true?module.exports=t():"function"==typeof define&&define.amd?define("ganache",[],t):"object"==typeof exports?exports.ganache=t():e.ganache=t()}(global,function(){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a.w={},a(a.s=1222)}([function(e,t,a){try{var n=a(1);if("function"!=typeof n.inherits)throw"";e.exports=n.inherits}catch(t){e.exports=a(1208)}},function(e,t){e.exports=__webpack_require__(3)},function(e,t){e.exports=__webpack_require__(0)},function(e,t

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:374:25)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:442:10)
at startup (node.js:136:18)
at node.js:966:3

I assume this is some sort of compatibility issue with ES5/6. But I am unsure as to why this would happen with a fresh install.


Get this bounty!!!

#StackBounty: #solidity #testing #erc-721 Conformance test suite for ERC-721 smart contracts

Bounty: 50

Entities like Open Zeppelin offer “well tested and audited” (I’m paraphrasing) open source Solidity code for common patterns such as ownership, ERC20 tokens, etc.

Are there any such entities (or just normal developers) who are, in the same vein as Open Zeppelin, open sourcing rigorous tests for code that is supposed to comply with the popular ERC standards?

Specifically, I’ve written some ERC721 compliant code, and I’m wondering if there are really good truffle test modules for this code. Would probably be more rigorous than what I’d write, and would definitely save me a lot of time and effort.


Get this bounty!!!

#StackBounty: #solidity #go-ethereum #string Send request failed { code: -32602, message: 'invalid argument 0: json: cannot unmarsh…

Bounty: 50

I am new to ethereum and deploying my first contract with simple method getting following error:

[2018-03-24 11:08:14.364] [ERROR] ipcProviderBackend - Send request failed { code: -32602,
  message: 'invalid argument 0: json: cannot unmarshal non-string into Go value of type common.Hash' }

Following is the contract method in solidity that i am calling:

function testContract(string title,string _description,
                           address _contractAddressOfAsset,
                           string _recordIdOfAsset,
                           uint _deadline,
                           uint _startingPrice,
                           uint _reservePrice,
                           uint _distributionCut,
                           address _distributionCutAddress) public returns (bool k) {


        test=title;
        return true;
    }

Here ,
test is the global variable of type string.

Note: I have deployed this contract in the private network and this contract from the mist browser

Following are the version details of geth:

Geth
Version: 1.7.3-stable
Git Commit: 4bb3c89d44e372e6a9ab85a8be0c9345265c763a
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.9
Operating System: linux
GOPATH=
GOROOT=/usr/lib/go-1.9


Get this bounty!!!

#StackBounty: #solidity #go-ethereum #string Send request failed { code: -32602, message: 'invalid argument 0: json: cannot unmarsh…

Bounty: 50

I am new to ethereum and deploying my first contract with simple method getting following error:

[2018-03-24 11:08:14.364] [ERROR] ipcProviderBackend - Send request failed { code: -32602,
  message: 'invalid argument 0: json: cannot unmarshal non-string into Go value of type common.Hash' }

Following is the contract method in solidity that i am calling:

function testContract(string title,string _description,
                           address _contractAddressOfAsset,
                           string _recordIdOfAsset,
                           uint _deadline,
                           uint _startingPrice,
                           uint _reservePrice,
                           uint _distributionCut,
                           address _distributionCutAddress) public returns (bool k) {


        test=title;
        return true;
    }

Here ,
test is the global variable of type string.

Note: I have deployed this contract in the private network and this contract from the mist browser

Following are the version details of geth:

Geth
Version: 1.7.3-stable
Git Commit: 4bb3c89d44e372e6a9ab85a8be0c9345265c763a
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.9
Operating System: linux
GOPATH=
GOROOT=/usr/lib/go-1.9


Get this bounty!!!