How is Metamask able to send erc20 tokens without ABI?












5















When I use web3js and Truffle, I cannot send tokens to another wallet without the Token Contract ABI. But Metamask only requires the token contract address to recognize and send the ERC20 tokens. How do they do it?










share|improve this question



























    5















    When I use web3js and Truffle, I cannot send tokens to another wallet without the Token Contract ABI. But Metamask only requires the token contract address to recognize and send the ERC20 tokens. How do they do it?










    share|improve this question

























      5












      5








      5








      When I use web3js and Truffle, I cannot send tokens to another wallet without the Token Contract ABI. But Metamask only requires the token contract address to recognize and send the ERC20 tokens. How do they do it?










      share|improve this question














      When I use web3js and Truffle, I cannot send tokens to another wallet without the Token Contract ABI. But Metamask only requires the token contract address to recognize and send the ERC20 tokens. How do they do it?







      erc-20 metamask abi






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Dec 21 '18 at 2:35









      stanly_johnsonstanly_johnson

      284




      284






















          3 Answers
          3






          active

          oldest

          votes


















          2














          Metamask uses internally a simple ERC20 compatible ABI, defined on the basis of the standard. As you may know, any



          function transfer(address, uint)


          is described by the same ABI element for any possible contract existing incorporating it, being it (the ABI element) nothing more that an hashed description of the call name and of the parameters type.



          So if you suppose that the contract to connect with has, at least, one transfer, one balanceOf, one approve, one transferFrom and so on, you can write down a usable ABI that shall give you access to those functions in the contract without hassle.



          Of course you shall not be able to access any other function existing in the specific contract that you did not described in advance using that approach.






          share|improve this answer


























          • You are welcome!

            – Rick Park
            Dec 24 '18 at 3:47



















          5














          ERC20 is an interface by definition. MetaMask has explicit support for this type of contract. It does not support contracts with arbitrary interfaces.



          Hope it helps.






          share|improve this answer































            2














            To transfer the token you need an ABI for interface defined in the standard. Metamask uses human-standard-token-abi npm package to access the token ABI. You can see its inclusion in metamask here.






            share|improve this answer
























            • Your welcome @stanly_johnson

              – Aniket
              Dec 24 '18 at 4:58











            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',
            autoActivateHeartbeat: false,
            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
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fethereum.stackexchange.com%2fquestions%2f64418%2fhow-is-metamask-able-to-send-erc20-tokens-without-abi%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            3 Answers
            3






            active

            oldest

            votes








            3 Answers
            3






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            2














            Metamask uses internally a simple ERC20 compatible ABI, defined on the basis of the standard. As you may know, any



            function transfer(address, uint)


            is described by the same ABI element for any possible contract existing incorporating it, being it (the ABI element) nothing more that an hashed description of the call name and of the parameters type.



            So if you suppose that the contract to connect with has, at least, one transfer, one balanceOf, one approve, one transferFrom and so on, you can write down a usable ABI that shall give you access to those functions in the contract without hassle.



            Of course you shall not be able to access any other function existing in the specific contract that you did not described in advance using that approach.






            share|improve this answer


























            • You are welcome!

              – Rick Park
              Dec 24 '18 at 3:47
















            2














            Metamask uses internally a simple ERC20 compatible ABI, defined on the basis of the standard. As you may know, any



            function transfer(address, uint)


            is described by the same ABI element for any possible contract existing incorporating it, being it (the ABI element) nothing more that an hashed description of the call name and of the parameters type.



            So if you suppose that the contract to connect with has, at least, one transfer, one balanceOf, one approve, one transferFrom and so on, you can write down a usable ABI that shall give you access to those functions in the contract without hassle.



            Of course you shall not be able to access any other function existing in the specific contract that you did not described in advance using that approach.






            share|improve this answer


























            • You are welcome!

              – Rick Park
              Dec 24 '18 at 3:47














            2












            2








            2







            Metamask uses internally a simple ERC20 compatible ABI, defined on the basis of the standard. As you may know, any



            function transfer(address, uint)


            is described by the same ABI element for any possible contract existing incorporating it, being it (the ABI element) nothing more that an hashed description of the call name and of the parameters type.



            So if you suppose that the contract to connect with has, at least, one transfer, one balanceOf, one approve, one transferFrom and so on, you can write down a usable ABI that shall give you access to those functions in the contract without hassle.



            Of course you shall not be able to access any other function existing in the specific contract that you did not described in advance using that approach.






            share|improve this answer















            Metamask uses internally a simple ERC20 compatible ABI, defined on the basis of the standard. As you may know, any



            function transfer(address, uint)


            is described by the same ABI element for any possible contract existing incorporating it, being it (the ABI element) nothing more that an hashed description of the call name and of the parameters type.



            So if you suppose that the contract to connect with has, at least, one transfer, one balanceOf, one approve, one transferFrom and so on, you can write down a usable ABI that shall give you access to those functions in the contract without hassle.



            Of course you shall not be able to access any other function existing in the specific contract that you did not described in advance using that approach.







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Dec 24 '18 at 3:40

























            answered Dec 21 '18 at 7:53









            Rick ParkRick Park

            1,034213




            1,034213













            • You are welcome!

              – Rick Park
              Dec 24 '18 at 3:47



















            • You are welcome!

              – Rick Park
              Dec 24 '18 at 3:47

















            You are welcome!

            – Rick Park
            Dec 24 '18 at 3:47





            You are welcome!

            – Rick Park
            Dec 24 '18 at 3:47











            5














            ERC20 is an interface by definition. MetaMask has explicit support for this type of contract. It does not support contracts with arbitrary interfaces.



            Hope it helps.






            share|improve this answer




























              5














              ERC20 is an interface by definition. MetaMask has explicit support for this type of contract. It does not support contracts with arbitrary interfaces.



              Hope it helps.






              share|improve this answer


























                5












                5








                5







                ERC20 is an interface by definition. MetaMask has explicit support for this type of contract. It does not support contracts with arbitrary interfaces.



                Hope it helps.






                share|improve this answer













                ERC20 is an interface by definition. MetaMask has explicit support for this type of contract. It does not support contracts with arbitrary interfaces.



                Hope it helps.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Dec 21 '18 at 3:22









                Rob Hitchens B9labRob Hitchens B9lab

                26.5k64480




                26.5k64480























                    2














                    To transfer the token you need an ABI for interface defined in the standard. Metamask uses human-standard-token-abi npm package to access the token ABI. You can see its inclusion in metamask here.






                    share|improve this answer
























                    • Your welcome @stanly_johnson

                      – Aniket
                      Dec 24 '18 at 4:58
















                    2














                    To transfer the token you need an ABI for interface defined in the standard. Metamask uses human-standard-token-abi npm package to access the token ABI. You can see its inclusion in metamask here.






                    share|improve this answer
























                    • Your welcome @stanly_johnson

                      – Aniket
                      Dec 24 '18 at 4:58














                    2












                    2








                    2







                    To transfer the token you need an ABI for interface defined in the standard. Metamask uses human-standard-token-abi npm package to access the token ABI. You can see its inclusion in metamask here.






                    share|improve this answer













                    To transfer the token you need an ABI for interface defined in the standard. Metamask uses human-standard-token-abi npm package to access the token ABI. You can see its inclusion in metamask here.







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Dec 21 '18 at 8:00









                    AniketAniket

                    2,0471633




                    2,0471633













                    • Your welcome @stanly_johnson

                      – Aniket
                      Dec 24 '18 at 4:58



















                    • Your welcome @stanly_johnson

                      – Aniket
                      Dec 24 '18 at 4:58

















                    Your welcome @stanly_johnson

                    – Aniket
                    Dec 24 '18 at 4:58





                    Your welcome @stanly_johnson

                    – Aniket
                    Dec 24 '18 at 4:58


















                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Ethereum Stack Exchange!


                    • 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%2fethereum.stackexchange.com%2fquestions%2f64418%2fhow-is-metamask-able-to-send-erc20-tokens-without-abi%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







                    Popular posts from this blog

                    Plaza Victoria

                    In PowerPoint, is there a keyboard shortcut for bulleted / numbered list?

                    How to put 3 figures in Latex with 2 figures side by side and 1 below these side by side images but in...