Most of my OS contributions/projects have been led by curiosity.
Today, we’ll be trying to debug one such recent experiment I ran -
Q: How many of you understand the solana wallet adapter?
https://anza-xyz.github.io/wallet-adapter/example/
https://solana.com/developers/cookbook/wallets/connect-wallet-react
https://solana.com/developers/guides/wallets/add-solana-wallet-adapter-to-nextjs
Wallet standard - https://github.com/wallet-standard/wallet-standard
npx create-next-app@latest
yarn add @solana/web3.js \\
@solana/wallet-adapter-base \\
@solana/wallet-adapter-react \\
@solana/wallet-adapter-react-ui \\
@solana/wallet-adapter-wallets
"use client";
import React, { useMemo } from "react";
import {
ConnectionProvider,
WalletProvider,
} from "@solana/wallet-adapter-react";
import { WalletAdapterNetwork } from "@solana/wallet-adapter-base";
import { WalletModalProvider } from "@solana/wallet-adapter-react-ui";
import { clusterApiUrl } from "@solana/web3.js";
export default function AppWalletProvider({
children,
}: {
children: React.ReactNode;
}) {
const network = WalletAdapterNetwork.Devnet;
const endpoint = useMemo(() => clusterApiUrl(network), [network]);
const wallets = useMemo(
() => [
// manually add any legacy wallet adapters here
// new UnsafeBurnerWalletAdapter(),
],
[network],
);
return (
<ConnectionProvider endpoint={endpoint}>
<WalletProvider wallets={wallets} autoConnect>
<WalletModalProvider>{children}</WalletModalProvider>
</WalletProvider>
</ConnectionProvider>
);
}
// Default styles that can be overridden by your app
require("@solana/wallet-adapter-react-ui/styles.css");
layout.tsximport type { Metadata } from "next";
import { Inter } from "next/font/google";
import "./globals.css";
import AppWalletProvider from "./components/AppWalletProvider";
const inter = Inter({ subsets: ["latin"] });
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en">
<body className={inter.className}>
<AppWalletProvider>{children}</AppWalletProvider>
</body>
</html>
);
}
"use client";
import { WalletMultiButton } from "@solana/wallet-adapter-react-ui";
export default function Home() {
return (
<main className="flex items-center justify-center min-h-screen">
<div className="border hover:border-slate-900 rounded">
<WalletMultiButton style={{}} />
</div>
</main>
);
}