-
Notifications
You must be signed in to change notification settings - Fork 2
/
App.tsx
56 lines (51 loc) · 1.39 KB
/
App.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import "node-libs-react-native/globals.js";
import "react-native-get-random-values";
import { createLightAccount, LightAccount } from "@alchemy/aa-accounts";
import {
createSmartAccountClient,
LocalAccountSigner,
sepolia,
} from "@alchemy/aa-core";
import { StatusBar } from "expo-status-bar";
import { useEffect, useMemo, useState } from "react";
import { StyleSheet, Text, View } from "react-native";
import { custom, http } from "viem";
import { generatePrivateKey } from "viem/accounts";
export default function App() {
const [account, setAccount] = useState<LightAccount | null>(null);
const client = useMemo(
() =>
createSmartAccountClient({
transport: http("https://ethereum-sepolia-rpc.publicnode.com"),
chain: sepolia,
}),
[]
);
useEffect(() => {
createLightAccount({
signer: LocalAccountSigner.privateKeyToAccountSigner(
generatePrivateKey()
),
transport: custom(client),
chain: sepolia,
}).then(setAccount);
}, []);
return (
<View style={styles.container}>
{!account ? (
<Text>Loading account...</Text>
) : (
<Text>Light Account Address: {account.address}</Text>
)}
<StatusBar style="auto" />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff",
alignItems: "center",
justifyContent: "center",
},
});