#react-native #blockchain #web3 #abi #wallet-connect
#react-native #блокчейн #web3 #abi #кошелек-подключение
Вопрос:
Я могу подключить свое простое приложение react-native dapp к мобильному кошельку alfjores, используя «@walletconnect / react-native-dapp»: «^ 1.6.6».
завернул мое приложение () в App.js с WalletConnectProvider, который использует React-context
export default withWalletConnect(App, {
redirectUrl:
Platform.OS === 'web' ? window.location.origin : 'app://WalletHomeScreen',
storageOptions: {
asyncStorage: AsyncStorage,
},
rpc: {
44787: "https://alfajores-forno.celo-testnet.org",
42220: "https://forno.celo.org",
},
})
Затем я использовал хук useWalletConnect() для запуска .connect() и .killsession() для входа / выхода из системы с использованием глубоких ссылок.
import { useWalletConnect } from '@walletconnect/react-native-dapp';
const connector = useWalletConnect();
I used it as:
connector.connect() [function]
connector.killSession() [function]
connector.connected [bool]
connector.accounts[0] [string]
Вызовы чтения для alfajores-forno прошли успешно, но транзакции записи (изменения состояния) — это именно моя проблема.
Я думаю, что я не могу предоставить данные walletconnect для web3 или kit.
Я перепробовал почти все из документов: walletconnect celo walletconnect-celo и некоторые другие…
Какой код я использую или использовал:
//ABI are from the Factory.sol and Project.sol smart contract deployed on alfajores.
import { Factory_ABI, Project_ABI } from "../ABI";
import {projectContractBytecode} from "../bytecode";
import Web3 from 'web3';
import { newKitFromWeb3 } from '@celo/contractkit';
const contractAddress = "0x0f9Dd41f1c1b1b72808f791A83518dDF0c1aC17f";
const web3 = new Web3("https://alfajores-forno.celo-testnet.org");
const kit = newKitFromWeb3(web3);
const FactoryContract = new kit.connection.web3.eth.Contract(Factory_ABI, contractAddress);
//read-successful.
const projectList = await FactoryContract.methods.getAllDeployedProjects().call();
//write-errors.
const txo = await FactoryContract.methods.createProject(name, symbol, initialSupply);
const data = txo.encodeABI();
const tx = await kit.connection.sendTransactionObject({txo, from: connector.accounts[0]})
OR
const tx = await kit.connection.sendTransactionObject(txo, {from: 0xe2c7618d0f07578cad8de5c05d5cbc3382b04fcd});
and some pnc.
Я попытался использовать connector в web3 следующим образом:
const connector = useWalletConnect();
const web3 = new Web3(connector);
Но это тоже, похоже, не работает.