Can you send a token and get ether back?











up vote
1
down vote

favorite












If a user sends a token, let's call it ABC, to the contract that issued that token, can the contract send back ether to the user?










share|improve this question









New contributor




chrisfuture is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
























    up vote
    1
    down vote

    favorite












    If a user sends a token, let's call it ABC, to the contract that issued that token, can the contract send back ether to the user?










    share|improve this question









    New contributor




    chrisfuture is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      If a user sends a token, let's call it ABC, to the contract that issued that token, can the contract send back ether to the user?










      share|improve this question









      New contributor




      chrisfuture is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      If a user sends a token, let's call it ABC, to the contract that issued that token, can the contract send back ether to the user?







      solidity tokens






      share|improve this question









      New contributor




      chrisfuture is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      chrisfuture is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 2 days ago









      PaulRBerg

      1,017319




      1,017319






      New contributor




      chrisfuture is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 2 days ago









      chrisfuture

      61




      61




      New contributor




      chrisfuture is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      chrisfuture is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      chrisfuture is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          2 Answers
          2






          active

          oldest

          votes

















          up vote
          1
          down vote













          Yes, for example:



          contract ABCToken {
          function sell(uint abcAmount) public {
          uint ethAmount = myFunc(abcAmount);
          msg.sender.transfer(ethAmount);
          }
          }


          Of course, you probably want to make sure that this user (msg.sender) owns the specified amount of ABC tokens...






          share|improve this answer




























            up vote
            1
            down vote













            Adding to goodVibration's answer, you want to make sure the user actually sent what they say they sent.



            contract ABCToken {
            function sell(uint abcAmount) public {
            require(token.transferFrom(msg.sender, address(this), abcAmount));
            uint ethAmount = myFunc(abcAmount);
            msg.sender.transfer(ethAmount);
            }
            }


            Transfer from requires the sender to first send an approve() to the token contract to set an allowance the above function can use to retrieve the user's tokens. The 2-step process is usually coordinated client-side or in another contract.



            Hope it helps.






            share|improve this answer



















            • 1




              Thanks. Risk of scribbling it up freestyle. Fixed.
              – Rob Hitchens B9lab
              2 days ago











            Your Answer








            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "642"
            };
            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: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            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
            });


            }
            });






            chrisfuture is a new contributor. Be nice, and check out our Code of Conduct.










             

            draft saved


            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fethereum.stackexchange.com%2fquestions%2f62176%2fcan-you-send-a-token-and-get-ether-back%23new-answer', 'question_page');
            }
            );

            Post as a guest
































            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            1
            down vote













            Yes, for example:



            contract ABCToken {
            function sell(uint abcAmount) public {
            uint ethAmount = myFunc(abcAmount);
            msg.sender.transfer(ethAmount);
            }
            }


            Of course, you probably want to make sure that this user (msg.sender) owns the specified amount of ABC tokens...






            share|improve this answer

























              up vote
              1
              down vote













              Yes, for example:



              contract ABCToken {
              function sell(uint abcAmount) public {
              uint ethAmount = myFunc(abcAmount);
              msg.sender.transfer(ethAmount);
              }
              }


              Of course, you probably want to make sure that this user (msg.sender) owns the specified amount of ABC tokens...






              share|improve this answer























                up vote
                1
                down vote










                up vote
                1
                down vote









                Yes, for example:



                contract ABCToken {
                function sell(uint abcAmount) public {
                uint ethAmount = myFunc(abcAmount);
                msg.sender.transfer(ethAmount);
                }
                }


                Of course, you probably want to make sure that this user (msg.sender) owns the specified amount of ABC tokens...






                share|improve this answer












                Yes, for example:



                contract ABCToken {
                function sell(uint abcAmount) public {
                uint ethAmount = myFunc(abcAmount);
                msg.sender.transfer(ethAmount);
                }
                }


                Of course, you probably want to make sure that this user (msg.sender) owns the specified amount of ABC tokens...







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 2 days ago









                goodvibration

                2,189721




                2,189721






















                    up vote
                    1
                    down vote













                    Adding to goodVibration's answer, you want to make sure the user actually sent what they say they sent.



                    contract ABCToken {
                    function sell(uint abcAmount) public {
                    require(token.transferFrom(msg.sender, address(this), abcAmount));
                    uint ethAmount = myFunc(abcAmount);
                    msg.sender.transfer(ethAmount);
                    }
                    }


                    Transfer from requires the sender to first send an approve() to the token contract to set an allowance the above function can use to retrieve the user's tokens. The 2-step process is usually coordinated client-side or in another contract.



                    Hope it helps.






                    share|improve this answer



















                    • 1




                      Thanks. Risk of scribbling it up freestyle. Fixed.
                      – Rob Hitchens B9lab
                      2 days ago















                    up vote
                    1
                    down vote













                    Adding to goodVibration's answer, you want to make sure the user actually sent what they say they sent.



                    contract ABCToken {
                    function sell(uint abcAmount) public {
                    require(token.transferFrom(msg.sender, address(this), abcAmount));
                    uint ethAmount = myFunc(abcAmount);
                    msg.sender.transfer(ethAmount);
                    }
                    }


                    Transfer from requires the sender to first send an approve() to the token contract to set an allowance the above function can use to retrieve the user's tokens. The 2-step process is usually coordinated client-side or in another contract.



                    Hope it helps.






                    share|improve this answer



















                    • 1




                      Thanks. Risk of scribbling it up freestyle. Fixed.
                      – Rob Hitchens B9lab
                      2 days ago













                    up vote
                    1
                    down vote










                    up vote
                    1
                    down vote









                    Adding to goodVibration's answer, you want to make sure the user actually sent what they say they sent.



                    contract ABCToken {
                    function sell(uint abcAmount) public {
                    require(token.transferFrom(msg.sender, address(this), abcAmount));
                    uint ethAmount = myFunc(abcAmount);
                    msg.sender.transfer(ethAmount);
                    }
                    }


                    Transfer from requires the sender to first send an approve() to the token contract to set an allowance the above function can use to retrieve the user's tokens. The 2-step process is usually coordinated client-side or in another contract.



                    Hope it helps.






                    share|improve this answer














                    Adding to goodVibration's answer, you want to make sure the user actually sent what they say they sent.



                    contract ABCToken {
                    function sell(uint abcAmount) public {
                    require(token.transferFrom(msg.sender, address(this), abcAmount));
                    uint ethAmount = myFunc(abcAmount);
                    msg.sender.transfer(ethAmount);
                    }
                    }


                    Transfer from requires the sender to first send an approve() to the token contract to set an allowance the above function can use to retrieve the user's tokens. The 2-step process is usually coordinated client-side or in another contract.



                    Hope it helps.







                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited 2 days ago

























                    answered 2 days ago









                    Rob Hitchens B9lab

                    24.3k53875




                    24.3k53875








                    • 1




                      Thanks. Risk of scribbling it up freestyle. Fixed.
                      – Rob Hitchens B9lab
                      2 days ago














                    • 1




                      Thanks. Risk of scribbling it up freestyle. Fixed.
                      – Rob Hitchens B9lab
                      2 days ago








                    1




                    1




                    Thanks. Risk of scribbling it up freestyle. Fixed.
                    – Rob Hitchens B9lab
                    2 days ago




                    Thanks. Risk of scribbling it up freestyle. Fixed.
                    – Rob Hitchens B9lab
                    2 days ago










                    chrisfuture is a new contributor. Be nice, and check out our Code of Conduct.










                     

                    draft saved


                    draft discarded


















                    chrisfuture is a new contributor. Be nice, and check out our Code of Conduct.













                    chrisfuture is a new contributor. Be nice, and check out our Code of Conduct.












                    chrisfuture is a new contributor. Be nice, and check out our Code of Conduct.















                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fethereum.stackexchange.com%2fquestions%2f62176%2fcan-you-send-a-token-and-get-ether-back%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest




















































































                    Popular posts from this blog

                    Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

                    ComboBox Display Member on multiple fields

                    Is it possible to collect Nectar points via Trainline?