Как получить токены, которые пользователь импортировал в свою метамаску с помощью 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 являются токеном не спамом.

Другие вопросы по тегам