Как получить токены, которые пользователь импортировал в свою метамаску с помощью API Ethereum?
В Metamask пользователи должны вручную импортировать токены в свою учетную запись, чтобы они отображались в разделе Assets. У этого есть изящная функция безопасности, так как пылевая атака и другие «спам-токены» находятся вне поля зрения пользователя. Ваш кошелек также обычно полон спама.
Теперь я хочу передать эти намерения пользователя (импорт токена) в настраиваемое приложение dApp и отфильтровать токены в соответствии с тем, что пользователь импортировал в свою метамаску.
то есть можете ли вы получить доступ к токенам, которые пользователь импортировал в свою Metamask, и, таким образом, увидеть "белые списки" адресов контрактов для пользователей Metamask, используя ehtereum или другой API?
Я более или менее прочитал документацию Metamask API, но ничего не нашел.
В этой статье я нашел только намек, что это невозможно.
К сожалению, мы не можем получить все токены, к которым у кошелька есть доступ, нам нужно сначала узнать адреса смарт-контрактов.
1 ответ
Насколько мне известно, это невозможно сделать, но вы можете получить доступ к токенам, которые пользователь имеет в своем кошельке (а не к тем, которые импортированы в метамаску).
Используя Moralis Web3 SDK, вы можете получить все балансы токенов текущего пользователя или указанного адреса, используя:
const balances = await Moralis.Web3API.account.getTokenBalances({address: "any_address"});
И вы получите объект с количеством токенов и массив объектов токенов Пример:
[
{
"token_address": "0x2d30ca6f024dbc1307ac8a1a44ca27de6f797ec22ef20627a1307243b0ab7d09",
"name": "Kylin Network",
"symbol": "KYL",
"logo": "https://cdn.moralis.io/eth/0x67b6d479c7bb412c54e03dca8e1bc6740ce6b99c.png",
"thumbnail": "https://cdn.moralis.io/eth/0x67b6d479c7bb412c54e03dca8e1bc6740ce6b99c_thumb.png",
"decimals": "18",
"balance": "123456789"
},
{other tokens}
]
Чтобы отфильтровать спам-токен, вы можете перебрать результат и запросить разрешение пользователя для каждого из токен-контрактов. Можно предположить, что токены с допуском! = 0 являются токеном не спамом.