CrowdSale smart contract not accepting payment









up vote
0
down vote

favorite












I've created a Ethereum smart contract and I'm playing with Zepplin library to create a ERC20 token contract and a CrowdSale contract to allow people to buy my tokens.



The token contract



pragma solidity ^0.4.24;

import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/master/contracts/token/ERC20/ERC20.sol";

contract NourToken is ERC20
string public symbol = "NOR";
string public name = "Nourreddine Token";
uint8 public decimals = 18;
uint256 public constant INITIAL_SUPPLY = 10000 * (10 ** uint256(decimals));

constructor() public
_mint(msg.sender, INITIAL_SUPPLY);




The crowdsale contract



pragma solidity ^0.4.24;

import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/master/contracts/crowdsale/Crowdsale.sol";
import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/master/contracts/token/ERC20/ERC20.sol";

contract NourCrowdSale is Crowdsale

constructor (
uint256 rate,
address wallet,
ERC20 token) public
Crowdsale(rate, wallet, token)




When I try to do a payment on the Crowdsale contract, the transaction is failing and I don't know why.



Here is the a sample failed transaction : https://ropsten.etherscan.io/tx/0x8777f2fa58988419bbfc22c96c50470ea242db4ea865d0e85aaa9f2dd1206dbe



Can anyone explain why it's failing ?



Thank you very much.










share|improve this question





















  • You can try by yourself in the Remix IDE : remix.ethereum.org
    – nono
    Nov 11 at 10:52










  • Can you also provide the error message and how you send the payment. There are many reason why it could fail.
    – nikos fotiadis
    Nov 11 at 12:43










  • Hi Nikos, thanks for the help, there was no error message.
    – nono
    Nov 11 at 23:33














up vote
0
down vote

favorite












I've created a Ethereum smart contract and I'm playing with Zepplin library to create a ERC20 token contract and a CrowdSale contract to allow people to buy my tokens.



The token contract



pragma solidity ^0.4.24;

import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/master/contracts/token/ERC20/ERC20.sol";

contract NourToken is ERC20
string public symbol = "NOR";
string public name = "Nourreddine Token";
uint8 public decimals = 18;
uint256 public constant INITIAL_SUPPLY = 10000 * (10 ** uint256(decimals));

constructor() public
_mint(msg.sender, INITIAL_SUPPLY);




The crowdsale contract



pragma solidity ^0.4.24;

import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/master/contracts/crowdsale/Crowdsale.sol";
import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/master/contracts/token/ERC20/ERC20.sol";

contract NourCrowdSale is Crowdsale

constructor (
uint256 rate,
address wallet,
ERC20 token) public
Crowdsale(rate, wallet, token)




When I try to do a payment on the Crowdsale contract, the transaction is failing and I don't know why.



Here is the a sample failed transaction : https://ropsten.etherscan.io/tx/0x8777f2fa58988419bbfc22c96c50470ea242db4ea865d0e85aaa9f2dd1206dbe



Can anyone explain why it's failing ?



Thank you very much.










share|improve this question





















  • You can try by yourself in the Remix IDE : remix.ethereum.org
    – nono
    Nov 11 at 10:52










  • Can you also provide the error message and how you send the payment. There are many reason why it could fail.
    – nikos fotiadis
    Nov 11 at 12:43










  • Hi Nikos, thanks for the help, there was no error message.
    – nono
    Nov 11 at 23:33












up vote
0
down vote

favorite









up vote
0
down vote

favorite











I've created a Ethereum smart contract and I'm playing with Zepplin library to create a ERC20 token contract and a CrowdSale contract to allow people to buy my tokens.



The token contract



pragma solidity ^0.4.24;

import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/master/contracts/token/ERC20/ERC20.sol";

contract NourToken is ERC20
string public symbol = "NOR";
string public name = "Nourreddine Token";
uint8 public decimals = 18;
uint256 public constant INITIAL_SUPPLY = 10000 * (10 ** uint256(decimals));

constructor() public
_mint(msg.sender, INITIAL_SUPPLY);




The crowdsale contract



pragma solidity ^0.4.24;

import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/master/contracts/crowdsale/Crowdsale.sol";
import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/master/contracts/token/ERC20/ERC20.sol";

contract NourCrowdSale is Crowdsale

constructor (
uint256 rate,
address wallet,
ERC20 token) public
Crowdsale(rate, wallet, token)




When I try to do a payment on the Crowdsale contract, the transaction is failing and I don't know why.



Here is the a sample failed transaction : https://ropsten.etherscan.io/tx/0x8777f2fa58988419bbfc22c96c50470ea242db4ea865d0e85aaa9f2dd1206dbe



Can anyone explain why it's failing ?



Thank you very much.










share|improve this question













I've created a Ethereum smart contract and I'm playing with Zepplin library to create a ERC20 token contract and a CrowdSale contract to allow people to buy my tokens.



The token contract



pragma solidity ^0.4.24;

import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/master/contracts/token/ERC20/ERC20.sol";

contract NourToken is ERC20
string public symbol = "NOR";
string public name = "Nourreddine Token";
uint8 public decimals = 18;
uint256 public constant INITIAL_SUPPLY = 10000 * (10 ** uint256(decimals));

constructor() public
_mint(msg.sender, INITIAL_SUPPLY);




The crowdsale contract



pragma solidity ^0.4.24;

import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/master/contracts/crowdsale/Crowdsale.sol";
import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/master/contracts/token/ERC20/ERC20.sol";

contract NourCrowdSale is Crowdsale

constructor (
uint256 rate,
address wallet,
ERC20 token) public
Crowdsale(rate, wallet, token)




When I try to do a payment on the Crowdsale contract, the transaction is failing and I don't know why.



Here is the a sample failed transaction : https://ropsten.etherscan.io/tx/0x8777f2fa58988419bbfc22c96c50470ea242db4ea865d0e85aaa9f2dd1206dbe



Can anyone explain why it's failing ?



Thank you very much.







ethereum solidity smartcontracts






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 11 at 10:52









nono

158212




158212











  • You can try by yourself in the Remix IDE : remix.ethereum.org
    – nono
    Nov 11 at 10:52










  • Can you also provide the error message and how you send the payment. There are many reason why it could fail.
    – nikos fotiadis
    Nov 11 at 12:43










  • Hi Nikos, thanks for the help, there was no error message.
    – nono
    Nov 11 at 23:33
















  • You can try by yourself in the Remix IDE : remix.ethereum.org
    – nono
    Nov 11 at 10:52










  • Can you also provide the error message and how you send the payment. There are many reason why it could fail.
    – nikos fotiadis
    Nov 11 at 12:43










  • Hi Nikos, thanks for the help, there was no error message.
    – nono
    Nov 11 at 23:33















You can try by yourself in the Remix IDE : remix.ethereum.org
– nono
Nov 11 at 10:52




You can try by yourself in the Remix IDE : remix.ethereum.org
– nono
Nov 11 at 10:52












Can you also provide the error message and how you send the payment. There are many reason why it could fail.
– nikos fotiadis
Nov 11 at 12:43




Can you also provide the error message and how you send the payment. There are many reason why it could fail.
– nikos fotiadis
Nov 11 at 12:43












Hi Nikos, thanks for the help, there was no error message.
– nono
Nov 11 at 23:33




Hi Nikos, thanks for the help, there was no error message.
– nono
Nov 11 at 23:33












1 Answer
1






active

oldest

votes

















up vote
0
down vote













I figured it out myself.



The only one that can perform a token transfer is the owner of the token contract.



In my case, I was creating the contract first with another account, and passed the token address as parameter of the CrowdSale contract. So the CrowdSale contract was not the owner of the token contract.



I changed the contract like this:



pragma solidity ^0.4.24;

import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/release-v2.0.0/contracts/crowdsale/Crowdsale.sol";
import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/release-v2.0.0/contracts/token/ERC20/ERC20.sol";
import "browser/NourToken.sol";

contract NourCrowdSale is Crowdsale

constructor (
uint256 rate,
address wallet) public
Crowdsale(rate, wallet, new NourToken())



Hope it will help somebody else :-)






share|improve this answer




















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53247997%2fcrowdsale-smart-contract-not-accepting-payment%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote













    I figured it out myself.



    The only one that can perform a token transfer is the owner of the token contract.



    In my case, I was creating the contract first with another account, and passed the token address as parameter of the CrowdSale contract. So the CrowdSale contract was not the owner of the token contract.



    I changed the contract like this:



    pragma solidity ^0.4.24;

    import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/release-v2.0.0/contracts/crowdsale/Crowdsale.sol";
    import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/release-v2.0.0/contracts/token/ERC20/ERC20.sol";
    import "browser/NourToken.sol";

    contract NourCrowdSale is Crowdsale

    constructor (
    uint256 rate,
    address wallet) public
    Crowdsale(rate, wallet, new NourToken())



    Hope it will help somebody else :-)






    share|improve this answer
























      up vote
      0
      down vote













      I figured it out myself.



      The only one that can perform a token transfer is the owner of the token contract.



      In my case, I was creating the contract first with another account, and passed the token address as parameter of the CrowdSale contract. So the CrowdSale contract was not the owner of the token contract.



      I changed the contract like this:



      pragma solidity ^0.4.24;

      import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/release-v2.0.0/contracts/crowdsale/Crowdsale.sol";
      import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/release-v2.0.0/contracts/token/ERC20/ERC20.sol";
      import "browser/NourToken.sol";

      contract NourCrowdSale is Crowdsale

      constructor (
      uint256 rate,
      address wallet) public
      Crowdsale(rate, wallet, new NourToken())



      Hope it will help somebody else :-)






      share|improve this answer






















        up vote
        0
        down vote










        up vote
        0
        down vote









        I figured it out myself.



        The only one that can perform a token transfer is the owner of the token contract.



        In my case, I was creating the contract first with another account, and passed the token address as parameter of the CrowdSale contract. So the CrowdSale contract was not the owner of the token contract.



        I changed the contract like this:



        pragma solidity ^0.4.24;

        import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/release-v2.0.0/contracts/crowdsale/Crowdsale.sol";
        import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/release-v2.0.0/contracts/token/ERC20/ERC20.sol";
        import "browser/NourToken.sol";

        contract NourCrowdSale is Crowdsale

        constructor (
        uint256 rate,
        address wallet) public
        Crowdsale(rate, wallet, new NourToken())



        Hope it will help somebody else :-)






        share|improve this answer












        I figured it out myself.



        The only one that can perform a token transfer is the owner of the token contract.



        In my case, I was creating the contract first with another account, and passed the token address as parameter of the CrowdSale contract. So the CrowdSale contract was not the owner of the token contract.



        I changed the contract like this:



        pragma solidity ^0.4.24;

        import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/release-v2.0.0/contracts/crowdsale/Crowdsale.sol";
        import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/release-v2.0.0/contracts/token/ERC20/ERC20.sol";
        import "browser/NourToken.sol";

        contract NourCrowdSale is Crowdsale

        constructor (
        uint256 rate,
        address wallet) public
        Crowdsale(rate, wallet, new NourToken())



        Hope it will help somebody else :-)







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 11 at 23:32









        nono

        158212




        158212



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53247997%2fcrowdsale-smart-contract-not-accepting-payment%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            這個網誌中的熱門文章

            How to read a connectionString WITH PROVIDER in .NET Core?

            Node.js Script on GitHub Pages or Amazon S3

            Museum of Modern and Contemporary Art of Trento and Rovereto