Как запустить PancakeSwap V2 с тестовой сетью?
Я тестирую внешний репозиторий Pancakeswap v2 на локальном хосте, но не могу переключиться на тестовую сеть.(https://github.com/pancakeswap/pancake-frontend) Я получаю сообщение об ошибке при обновлении
NEXT_PUBLIC_CHAIN_ID = "56"
к
NEXT_PUBLIC_CHAIN_ID = "97"
который действителен для тестовой сети.
Необработанная ошибка времени выполнения: исключение возврата вызова (method="canClaim(address)", errorArgs=null, errorName=null, errorSignature=null, Reason=null, code=CALL_EXCEPTION, version=abi/5.5.0)
Необработанная ошибка времени выполнения: исключение возврата вызова (method="aggregate((address,bytes)[])", errorArgs=null, errorName=null, errorSignature=null, Reason=null, code=CALL_EXCEPTION, version=abi/5.5. 0)
Как я могу использовать Pancakeswap V2 с тестовой сетью bsc или тестовой сетью kovan?
1 ответ
Это не решение, это обходной путь .
Это ошибки, потому что некоторые контракты pancakeswap не развернуты в тестовой сети. Вы можете увидеть.
Я предлагаю обходной путь для работы с вашей тестовой сетью, это не то решение, которое объяснил шеф-джойдо .
Обходной путь прост. Вам нужно обновить несколько файлов. Наиболее важным из них является
.env.development
. Это переменные env , которые нам нужно изменить.
NEXT_PUBLIC_CHAIN_ID = "56"
NEXT_PUBLIC_NODE_1 = "https://bsc-dataseed1.ninicoin.io"
NEXT_PUBLIC_NODE_2 = "https://bsc-dataseed1.defibit.io"
NEXT_PUBLIC_NODE_3 = "https://bsc-dataseed.binance.org"
NEXT_PUBLIC_NODE_PRODUCTION = "https://nodes.pancakeswap.com"
Для BscTestnet идентификатор цепочки
97
. И вы можете проверить RPC по адресу https://docs.binance.org/smart-chain/developer/rpc.html . Я выбираю первые три и заменяю их. Нам не нужно
NEXT_PUBLIC_NODE_PRODUCTION
поэтому мы прокомментируем это для нашей разработки в тестовой сети.
После изменений это будет выглядеть примерно так.
NEXT_PUBLIC_CHAIN_ID = "97"
NEXT_PUBLIC_NODE_1 = "https://data-seed-prebsc-1-s1.binance.org:8545"
NEXT_PUBLIC_NODE_2 = "https://data-seed-prebsc-2-s1.binance.org:8545"
NEXT_PUBLIC_NODE_3 = "https://data-seed-prebsc-1-s2.binance.org:8545"
# ; NEXT_PUBLIC_NODE_PRODUCTION = "https://nodes.pancakeswap.com"
Теперь ваш кошелек подключится к bscTestnet, и вы также сможете совершать с ним транзакции. Браузер все равно покажет
call revert exception
но вам просто нужно игнорировать их, нажав кнопку с крестиком в правом углу.
Вы можете добавить свой контракт с идентификатором цепочки 97 и попробовать запустить их. Вот несколько советов, как добавить свои контракты и создать их экземпляр.
- Добавьте ABI вашего контракта в
src/config/abi/<your name>.json
- Добавьте адрес контракта в
src\config\constants\contracts.ts
. Следуйте стилям других адресов контрактов и оставьте свойство 57 пустым. напримерexport default { contractName: { 56: '', 97: '0x0000000000000000000000000000000000', }, }
- Добавьте функцию получения адреса в
src\utils\addressHelpers.ts
. напримерexport const getContractNameAddress = () => { return getAddress(addresses.mockToken); };
- Добавьте функцию получения контракта в
src\utils\contractHelpers.ts
. Импортируйте свой Abi с шага 1. напримерexport const getMockTokenContract = ( signer?: ethers.Signer | ethers.providers.Provider ) => { return getContract(contractNameAbi, getContractNameAddress(), signer); };
- Добавьте крючок вашего контракта
src\hooks\useContract.ts
. напримерexport function useContractNameContract(): Contract | null { const { library } = useActiveWeb3React(); return useMemo(() => getContractNameContract(library.getSigner()), [library]); }
- Теперь используйте крючок на шаге 6, чтобы получить контракт. например
const contract = useContractNameContract();
- Вызовите функцию чтения, как это
<contract name>.<contact function>(<parameters separated with comma>)
напримерcontract.balanceOf("0x000000000000").then(console.info)
- Вызовите функцию записи, используя имя хука
useCallWithGasPrice
. Перед звонками убедитесь, что ваш кошелек подключен. напримерconst { callWithGasPrice } = useCallWithGasPrice(); const contract = useContractNameContract(); const callingFunction = async () => { const tx = await callWithGasPrice(contract, "balanceOf", ["0x000000000000000"]); const receipt = tx.wait(); console.info(`Called for balanceOf: `, receipt) return receipt; }; // call the function callingFunction();