Как подключить useDApp к сетям Rootstock?

Я создаю приложение React.js DApp, которое будет взаимодействовать с развернутыми смарт-контрактами Rootstock (RSK) . Недавно я наткнулся на библиотеку React под названием useDApp . Эта библиотека автоматизирует подключение к блокчейну, взаимодействие со смарт-контрактами и отправку транзакций с помощью перехватчиков React и поставщиков контекста. Например:

      const { activateBrowserWallet, account } = useEthers();
const etherBalance = useEtherBalance(account);

​ Однако среди поддерживаемых сетей я не вижу Rootstock . ​

Я попытался создать конфигурацию Rootstock, как описано в документации :

      const config = {
  readOnlyChainId: 30,
  readOnlyUrls: {
    31: 'https://public-node.testnet.rsk.co',
    30: 'https://public-node.rsk.co',
  },
};

К сожалению, добавление вышеуказанного оказалось недостаточным, и мне не удалось подключиться ни к RSK Mainnet, ни к RSK Testnet.

Можно ли настроить useDApp для подключения к Rootstock?

1 ответ

Да, подключение useDApp к Rootstock возможно.

(1) Создайте объекты конфигурации для обеих сетей (Rootstock Testnet, Rootstock Mainnet).

(2) Укажите адреса смарт-контрактов Multicall в этих объектах конфигурации.

Они должны выглядеть так:

      const rootstockTestnetExplorerUrl = 'https://explorer.testnet.rsk.co/';

export const RootstockTestnet = {
  chainId: 31,
  chainName: 'Rootstock Testnet',
  isTestChain: true,
  isLocalChain: false,
  rpcUrl: 'https://public-node.testnet.rsk.co',
  // deployed at https://explorer.testnet.rsk.co/address/0xca11bde05977b3631167028862be2a173976ca11
  multicallAddress: '0xcA11bde05977b3631167028862bE2a173976CA11',
  nativeCurrency: {
    name: 'Test Rootstock Bitcoin',
    symbol: 'tRBTC',
    decimals: 18,
  },
  getExplorerAddressLink: getAddressLink(rootstockTestnetExplorerUrl),
  getExplorerTransactionLink: getTransactionLink(rootstockTestnetExplorerUrl),
};

const rootstockMainnetExplorerUrl = 'https://explorer.rsk.co/';

export const RootstockMainnet = {
  chainId: 30,
  chainName: 'Rootstock Mainnet',
  isTestChain: false,
  isLocalChain: false,
  rpcUrl: 'https://public-node.rsk.co',
  // deployed at https://explorer.rsk.co/address/0xca11bde05977b3631167028862be2a173976ca11
  multicallAddress: '0xcA11bde05977b3631167028862bE2a173976CA11',
  nativeCurrency: {
    name: 'Rootstock Bitcoin',
    symbol: 'RBTC',
    decimals: 18,
  },
  getExplorerAddressLink: getAddressLink(rootstockMainnetExplorerUrl),
  getExplorerTransactionLink: getTransactionLink(rootstockMainnetExplorerUrl),
};

(3) Создайте конфигурацию useDApp, используя следующие сетевые конфигурации:

      const useDAppConfig = {
  networks: [RootstockTestnet, RootstockMainnet],
  readOnlyChainId: RootstockMainnet.chainId,
  readOnlyUrls: {
    [RootstockTestnet.chainId]: RootstockTestnet.rpcUrl,
    [RootstockMainnet.chainId]: RootstockMainnet.rpcUrl,
  },
};

(4) Подключите конфигурацию useDApp кDAppProvider(например, вindex.js)

      import { DAppProvider } from '@usedapp/core';
...
root.render(
    <DAppProvider config={useDAppConfig}>
      <App />
    </DAppProvider>,
);

(5) Теперь вы готовы работать с данными блокчейна в своих компонентах React:

      import {
  useEthers,
  useEtherBalance,
  useTokenBalance,
  useSendTransaction,
} from '@usedapp/core';

function App() {
  const { activateBrowserWallet, account } = useEthers();
  const etherBalance = useEtherBalance(account);
  const tokenBalance = useTokenBalance(
    tokenAddress,
    account,
  );
  const { sendTransaction } = useSendTransaction();
  ...
}
Другие вопросы по тегам