#blockchain #ethereum #brownie #dapp
Вопрос:
Я хочу создать приложение, подобное uniswap, с помощью brownie и отреагировать, как я могу получить доступ ко всем адресам токенов и abi для своего проекта и использовать его в интерфейсе. Как я могу реализовать это наилучшим оптимизированным способом ?
Комментарии:
1. все жетоны, какие именно? все существующие?
2. Да активные токены
Ответ №1:
Что вы хотите сделать, так это получить информацию из такого токена, как uniswap
uniswap не сохранил все существующие токены, это невозможно сделать
каждый раз, когда вы пишете адрес токена на uniswap, он делает запросы к смарт-контракту, вызывая существующие функции благодаря стандарту ERC-20
вызываемые функции являются
totalSupply() // to get the total supply
decimals() // to get the number of decimals
name() // to get the name of the token (e.g. Bitcoin)
symbol() // to get the symbol of the token (e.g. BTC)
чтобы получить эти данные, вам необходимо позвонить через web3, который вернет запрошенные вами данные
// initialize web3
const Web3 = require("web3");
// save only the ABI of the standard, so you can re-use them for all the tokens
// in this ABI you can find only the function totalSupply ()
const ABI = [
{
"type": "function",
"name": "totalSupply",
"inputs": [],
"outputs": [{"name": "", "type": "uint256"}],
"stateMutability": "view",
"payable": false,
"constant": true // for backward-compatibility
}
];
// run the JS function
async function run() {
const web3 = new Web3(<YourNodeUrl>);
// create the web3 contract
const contract = new web3.eth.Contract(ABI, <TokenAddress>);
// call the function and get the totalSupply
const totalSupply = await contract.methods.totalSupply().call();
console.log(totalSupply);
}