How is Metamask able to send erc20 tokens without ABI?
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
add a comment |
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
add a comment |
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
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
erc-20 metamask abi
asked Dec 21 '18 at 2:35
stanly_johnsonstanly_johnson
284
284
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
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.
You are welcome!
– Rick Park
Dec 24 '18 at 3:47
add a comment |
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.
add a comment |
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.
Your welcome @stanly_johnson
– Aniket
Dec 24 '18 at 4:58
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
You are welcome!
– Rick Park
Dec 24 '18 at 3:47
add a comment |
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.
You are welcome!
– Rick Park
Dec 24 '18 at 3:47
add a comment |
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.
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.
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
add a comment |
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
add a comment |
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.
add a comment |
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.
add a comment |
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.
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.
answered Dec 21 '18 at 3:22
Rob Hitchens B9labRob Hitchens B9lab
26.5k64480
26.5k64480
add a comment |
add a comment |
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.
Your welcome @stanly_johnson
– Aniket
Dec 24 '18 at 4:58
add a comment |
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.
Your welcome @stanly_johnson
– Aniket
Dec 24 '18 at 4:58
add a comment |
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.
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.
answered Dec 21 '18 at 8:00
AniketAniket
2,0471633
2,0471633
Your welcome @stanly_johnson
– Aniket
Dec 24 '18 at 4:58
add a comment |
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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