Hey it seems I get a jump error when I try to access any variable not set through a parameter in the constructor. amountRaised is throwing a jump error below as I try to statically set the value.

 contract Project {
 address public fundingHub; 
 address public projectCreator; 
 string public title; 
 string public description;
 uint256 public amountToBeRaised; 
 uint256 public deadline;
 uint256 public amountRaised; 

function Project(address _creator, uint256 _amountToBeRaised, uint256 _deadline, string _title, string _description) {
    if (_amountToBeRaised <= 0) { throw; }
    if (_deadline <= block.timestamp) { throw; }
    fundingHub = msg.sender;  
    projectCreator = _creator;
    title = _title; 
    description = _description; 
    amountToBeRaised = _amountToBeRaised;
    amountRaised = 0; 
    deadline = _deadline; 

The javascript looks like this

            return thisProject.deadline.call(); 
      }).then(function(_deadline) { 
          console.log("this is the deadline" + _deadline.valueOf());
          return thisProject.amountRaised.call(); 
        }).then(function(_amountRaised) { 
          return thisProject.amountToBeRaised.call(); 
        }).then(function(_amountToBeRaised) { 
  • Something fishy about the code posted. fundingHub is undefined at fundingHub = msg.sender. – Rob Hitchens - B9lab Feb 7 '17 at 23:34
  • Ya sorry I didn't include funding hub...I'll fix it now. – ethereal Feb 7 '17 at 23:35
  • It's clear the value is gettable in Browser Solidity. One possibility is your thisProject is out of sync with the deployed contract and the getter function isn't in the deployed compiled code your JS is talking to, in which case the default fallback function will throw. It looks like truffle, so possibly $ truffle migrate --reset and $ truffle build just to get everything nicely aligned. – Rob Hitchens - B9lab Feb 8 '17 at 0:10
  • Hmmm thisProject seems to be returning correct values for every other variable. I tried to reset and build, but the error is still there. – ethereal Feb 9 '17 at 0:38
  • Not an explanation but possibly a solution. Try defining explicit functions like function getAmountRaised() returns(uint amount) {return amountRaised;}, What you're seeing is consistent with function signatures that don't match even though it appears that they should. Possibly helps with getting on with life to stop relying on the freebie getters "public" provides. Other thought, it shouldn't matter, but thinking about quirks. uint256 = uint, so consider recasting all uint256 as straight uint. – Rob Hitchens - B9lab Feb 9 '17 at 2:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.