With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js. Learn more →
Wallet-adapter Alternatives
Similar projects and alternatives to wallet-adapter
-
hardhat
Hardhat is a development environment to compile, deploy, test, and debug your Ethereum software.
-
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
-
complete-guide-to-full-stack-solana-development
Code examples for the blog post titled The Complete Guide to Full Stack Solana Development with React, Anchor, Rust, and Phantom
-
-
solana-escrow
Discontinued Reference Implementation for the guide https://paulx.dev/blog/2021/01/14/programming-on-solana-an-introduction/
-
-
solana-nft-token-metadata-update
Node.js script to update NFT Token metadata on Solana Blockchain
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
-
celo-monorepo
Official repository for core projects comprising the Celo platform
-
candy-machine-v2-responsive-ui
Solana Candy Machine V2 with a Prod-ready and easy to customize responsive UI.
-
nvm
Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions
-
-
truffle
Discontinued :warning: The Truffle Suite is being sunset. For information on ongoing support, migration options and FAQs, visit the Consensys blog. Thank you for all the support over the years.
-
foundry
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
-
chainlink
node of the decentralized oracle network, bridging on and off-chain computation
-
web3-react
A simple, maximally extensible, dependency minimized framework for building modern Ethereum dApps
-
-
-
-
web3.storage
DEPRECATED ⁂ The simple file storage service for IPFS & Filecoin
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
wallet-adapter reviews and mentions
-
Creating a Custom Solana Connect Wallet UI with React and Chakra UI
If you have worked with the Solana Wallet Adapter before, you will know that it is very easy to set up a Connect Wallet button with a decent modal.
-
Open Source JS Library - Create Your Own Solana NFT Marketplace in Minutes
Note: Your website needs a way for users to connect their wallet, so we assume that you have Solana wallet adapter set up. This is likely to be the case if you have already done primary sales of your NFTs with Candy Machine v2 or Candy Machine v1.
-
The Complete Guide to Full Stack Solana Development with React, Anchor, Rust, and Phantom
import './App.css'; import { useState } from 'react'; import { Connection, PublicKey } from '@solana/web3.js'; import { Program, Provider, web3 } from '@project-serum/anchor'; import idl from './idl.json'; import { PhantomWalletAdapter } from '@solana/wallet-adapter-wallets'; import { useWallet, WalletProvider, ConnectionProvider } from '@solana/wallet-adapter-react'; import { WalletModalProvider, WalletMultiButton } from '@solana/wallet-adapter-react-ui'; require('@solana/wallet-adapter-react-ui/styles.css'); const wallets = [ /* view list of available wallets at https://github.com/solana-labs/wallet-adapter#wallets */ new PhantomWalletAdapter() ] const { SystemProgram, Keypair } = web3; /* create an account */ const baseAccount = Keypair.generate(); const opts = { preflightCommitment: "processed" } const programID = new PublicKey(idl.metadata.address); function App() { const [value, setValue] = useState(null); const wallet = useWallet(); async function getProvider() { /* create the provider and return it to the caller */ /* network set to local network for now */ const network = "http://127.0.0.1:8899"; const connection = new Connection(network, opts.preflightCommitment); const provider = new Provider( connection, wallet, opts.preflightCommitment, ); return provider; } async function createCounter() { const provider = await getProvider() /* create the program interface combining the idl, program ID, and provider */ const program = new Program(idl, programID, provider); try { /* interact with the program via rpc */ await program.rpc.create({ accounts: { baseAccount: baseAccount.publicKey, user: provider.wallet.publicKey, systemProgram: SystemProgram.programId, }, signers: [baseAccount] }); const account = await program.account.baseAccount.fetch(baseAccount.publicKey); console.log('account: ', account); setValue(account.count.toString()); } catch (err) { console.log("Transaction error: ", err); } } async function increment() { const provider = await getProvider(); const program = new Program(idl, programID, provider); await program.rpc.increment({ accounts: { baseAccount: baseAccount.publicKey } }); const account = await program.account.baseAccount.fetch(baseAccount.publicKey); console.log('account: ', account); setValue(account.count.toString()); } if (!wallet.connected) { /* If the user's wallet is not connected, display connect wallet button. */ return (
{ !value && (Create counter) } { value && Increment counter } { value && value >= Number(0) ? ({value}
) : (Please create the counter.
) }import './App.css'; import { useEffect, useState } from 'react'; import { Connection, PublicKey } from '@solana/web3.js'; import { Program, Provider, web3 } from '@project-serum/anchor'; import idl from './idl.json'; import { getPhantomWallet } from '@solana/wallet-adapter-wallets'; import { useWallet, WalletProvider, ConnectionProvider } from '@solana/wallet-adapter-react'; import { WalletModalProvider, WalletMultiButton } from '@solana/wallet-adapter-react-ui'; const wallets = [ /* view list of available wallets at https://github.com/solana-labs/wallet-adapter#wallets */ getPhantomWallet() ] const { SystemProgram, Keypair } = web3; /* create an account */ const baseAccount = Keypair.generate(); const opts = { preflightCommitment: "processed" } const programID = new PublicKey(idl.metadata.address); function App() { const [value, setValue] = useState(null); const [connected, setConnected] = useState(false); const wallet = useWallet(); useEffect(() => { window.solana.on("connect", () => setConnected(true)); return () => window.solana.disconnect(); }, []) async function getProvider() { /* create the provider and return it to the caller */ /* network set to local network for now */ const network = "http://127.0.0.1:8899"; const connection = new Connection(network, opts.preflightCommitment); const provider = new Provider( connection, wallet, opts.preflightCommitment, ); return provider; } async function createCounter() { const provider = await getProvider() /* create the program interface combining the idl, program ID, and provider */ const program = new Program(idl, programID, provider); try { /* interact with the program via rpc */ await program.rpc.create({ accounts: { baseAccount: baseAccount.publicKey, user: provider.wallet.publicKey, systemProgram: SystemProgram.programId, }, signers: [baseAccount] }); const account = await program.account.baseAccount.fetch(baseAccount.publicKey); console.log('account: ', account); setValue(account.count.toString()); } catch (err) { console.log("Transaction error: ", err); } } async function increment() { const provider = await getProvider(); const program = new Program(idl, programID, provider); await program.rpc.increment({ accounts: { baseAccount: baseAccount.publicKey } }); const account = await program.account.baseAccount.fetch(baseAccount.publicKey); console.log('account: ', account); setValue(account.count.toString()); } if (!connected) { /* If the user's wallet is not connected, display connect wallet button. */ return (
{ !value && (Create counter) } { value && Increment counter } { value && value >= Number(0) ? ({value}
) : (Please create the counter.
) } -
Is there a library that unifies connecting to wallets similar to what Solana has?
Solana has the wallet adapter library which provides a convenient interface for connecting to many different wallets. Is there anything similar for ETH or do I have to write and maintain custom logic for each different wallet?
-
TheWheel, a first experience programming on Solana
Code of TheWheel has been organized around the Solana–wallet-adapter project. I first ran a git clone command on the project before adding my files one by one in same repository.
-
Trouble Importing Token from @solana/spl-token (npm and node)
First line of the example here: https://github.com/solana-labs/wallet-adapter/issues/189
-
Defining the web3 stack
As far as JavaScript frameworks go, you can really build with anything you’d like, as the client-side blockchain SDKs are mostly framework-agnostic. That being said, an overwhelming number of projects and examples are built in React. There are also a handful of libraries like Solana Wallet Adapter that offer additional utilities for React, so I’d say that learning or being familiar with React is going to probably be a smart move.
-
A note from our sponsor - SurveyJS
surveyjs.io | 29 Mar 2024
Stats
anza-xyz/wallet-adapter is an open source project licensed under Apache License 2.0 which is an OSI approved license.
The primary programming language of wallet-adapter is TypeScript.
Popular Comparisons
- wallet-adapter VS complete-guide-to-full-stack-solana-development
- wallet-adapter VS React
- wallet-adapter VS hardhat
- wallet-adapter VS web3modal
- wallet-adapter VS solana-escrow
- wallet-adapter VS zksync
- wallet-adapter VS solana-nft-token-metadata-update
- wallet-adapter VS candy-machine-v2-responsive-ui
- wallet-adapter VS celo-monorepo
- wallet-adapter VS fnm