Как запустить 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 и попробовать запустить их. Вот несколько советов, как добавить свои контракты и создать их экземпляр.

  1. Добавьте ABI вашего контракта в src/config/abi/<your name>.json
  2. Добавьте адрес контракта в src\config\constants\contracts.ts. Следуйте стилям других адресов контрактов и оставьте свойство 57 пустым. например
            export default {
      contractName: {
        56: '',
        97: '0x0000000000000000000000000000000000',
      },
    }
    
  3. Добавьте функцию получения адреса в src\utils\addressHelpers.ts. например
            export const getContractNameAddress = () => {
      return getAddress(addresses.mockToken);
    };
    
  4. Добавьте функцию получения контракта в src\utils\contractHelpers.ts. Импортируйте свой Abi с шага 1. например
            export const getMockTokenContract = (
      signer?: ethers.Signer | ethers.providers.Provider
    ) => {
      return getContract(contractNameAbi, getContractNameAddress(), signer);
    };
    
  5. Добавьте крючок вашего контракта src\hooks\useContract.ts. например
            export function useContractNameContract(): Contract | null {
      const { library } = useActiveWeb3React();
      return useMemo(() => getContractNameContract(library.getSigner()), [library]);
    }
    
  6. Теперь используйте крючок на шаге 6, чтобы получить контракт. например
            const contract = useContractNameContract();
    
  7. Вызовите функцию чтения, как это <contract name>.<contact function>(<parameters separated with comma>)например
            contract.balanceOf("0x000000000000").then(console.info)
    
  8. Вызовите функцию записи, используя имя хука 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();
    
Другие вопросы по тегам