Integrate Embedded Wallets with the Skale Blockchain in React Native
While using the Embedded Wallets React Native SDK, you get a EIP1193 provider, similar to the MetaMask Provider. Use it with libraries such as viem or ethers to make Skale blockchain calls like getting the user's account, fetching balance, sign transaction, send transaction, read from and write to the smart contract, etc.
Chain details for Skale
- Europa Hub
- Calypso Hub
- Nebula Gaming Hub
- Titan Hub
- Mainnet
- Testnet
- Chain ID: 0x79f99296
- Public RPC URL:
https://mainnet.skalenodes.com/v1/elated-tan-skat - Display Name: SKALE Europa Hub Mainnet
- Block Explorer Link:
https://elated-tan-skat.explorer.mainnet.skalenodes.com - Ticker: sFUEL
- Ticker Name: SKALE Fuel
- Chain ID: 0x561bf78b
- Public RPC URL:
https://testnet.skalenodes.com/v1/juicy-low-small-testnet - Display Name: SKALE Europa Hub Testnet
- Block Explorer Link:
https://juicy-low-small-testnet.explorer.testnet.skalenodes.com - Ticker: sFUEL
- Ticker Name: SKALE Fuel
- Mainnet
- Testnet
- Chain ID: 0x5d456c62
- Public RPC URL:
https://mainnet.skalenodes.com/v1/honorable-steel-rasalhague - Display Name: SKALE Calypso Hub Mainnet
- Block Explorer Link:
https://honorable-steel-rasalhague.explorer.mainnet.skalenodes.com - Ticker: sFUEL
- Ticker Name: SKALE Fuel
- Chain ID: 0x3a14269b
- Public RPC URL:
https://testnet.skalenodes.com/v1/giant-half-dual-testnet - Display Name: SKALE Calypso Hub Testnet
- Block Explorer Link:
https://giant-half-dual-testnet.explorer.testnet.skalenodes.com - Ticker: sFUEL
- Ticker Name: SKALE Fuel
- Mainnet
- Testnet
- Chain ID: 0x585eb4b1
- Public RPC URL:
https://mainnet.skalenodes.com/v1/green-giddy-denebola - Display Name: SKALE Nebula Gaming Hub Mainnet
- Block Explorer Link:
https://green-giddy-denebola.explorer.mainnet.skalenodes.com - Ticker: sFUEL
- Ticker Name: SKALE Fuel
- Chain ID: 0x0235ddd0
- Public RPC URL:
https://testnet.skalenodes.com/v1/lanky-ill-funny-testnet - Display Name: SKALE Nebula Gaming Hub Testnet
- Block Explorer Link:
https://lanky-ill-funny-testnet.explorer.testnet.skalenodes.com - Ticker: sFUEL
- Ticker Name: SKALE Fuel
- Mainnet
- Testnet
- Chain ID: 0x507aaa2a
- Public RPC URL:
https://mainnet.skalenodes.com/v1/parallel-stormy-spica - Display Name: SKALE Titan Hub Mainnet
- Block Explorer Link:
https://parallel-stormy-spica.explorer.mainnet.skalenodes.com - Ticker: sFUEL
- Ticker Name: SKALE Fuel
- Chain ID: 0x0233382c
- Public RPC URL:
https://testnet.skalenodes.com/v1/aware-fake-trim-testnet - Display Name: SKALE Titan Hub Testnet
- Block Explorer Link:
https://aware-fake-trim-testnet.explorer.testnet.skalenodes.com - Ticker: sFUEL
- Ticker Name: SKALE Fuel
Installation
Use any EIP-1193 compatible library with the provider from the SDK. These examples use viem:
- npm
- Yarn
- pnpm
- Bun
npm install viem
yarn add viem
pnpm add viem
bun add viem
To use Wagmi hooks instead, see Ethereum hooks (Wagmi).
Initialize
Set up the SDK as described in Get started, with the chain
configured on the dashboard or in web3AuthOptions.chains. After sign-in, read the EIP-1193
provider from useWeb3Auth().connection and create viem clients:
import { useWeb3Auth } from '@web3auth/react-native-sdk'
import { createPublicClient, createWalletClient, custom } from 'viem'
const { connection } = useWeb3Auth()
// Call after the user signs in (isConnected is true)
const transport = custom(connection!.ethereumProvider!)
const walletClient = createWalletClient({ transport })
const publicClient = createPublicClient({ transport })
Get account
const [address] = await walletClient.getAddresses()
Get balance
import { formatEther } from 'viem'
const [address] = await walletClient.getAddresses()
const balance = formatEther(await publicClient.getBalance({ address }))
Send transaction
import { parseEther } from 'viem'
const [account] = await walletClient.getAddresses()
const hash = await walletClient.sendTransaction({
account,
to: '0x40e1c367Eca34250cAF1bc8330E9EddfD403fC56',
value: parseEther('0.001'),
chain: null, // use the provider's active chain
})
const receipt = await publicClient.waitForTransactionReceipt({ hash })
Sign a message
const [account] = await walletClient.getAddresses()
const signature = await walletClient.signMessage({
account,
message: 'YOUR_MESSAGE',
})