Как подключить 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();
...
}