SIWE: Alat yang kuat untuk menyediakan identifikasi pada Dapp
SIWE (Sign-In with Ethereum) adalah metode untuk memverifikasi identitas pengguna di Ethereum, mirip dengan memulai transaksi, yang membuktikan kontrol pengguna atas dompet mereka. Saat ini, sebagian besar plugin dompet mendukung metode tanda tangan sederhana ini.
Artikel ini terutama membahas skenario tanda tangan di Ethereum, tanpa melibatkan rantai publik lainnya.
Apakah proyek Anda memerlukan SIWE?
Jika Dapp Anda memiliki kebutuhan berikut, Anda dapat mempertimbangkan untuk menggunakan SIWE:
Memiliki sistem pengguna sendiri
Perlu memeriksa informasi yang terkait dengan identifikasi pengguna
Untuk Dapp( yang terutama menyediakan fungsi pencarian seperti etherscan), SIWE tidak perlu digunakan.
Meskipun setelah menghubungkan dompet, frontend dapat mengonfirmasi identifikasi, tetapi untuk pemanggilan antarmuka yang memerlukan dukungan backend, hanya mengirimkan alamat tidak dapat membuktikan identifikasi, karena alamat adalah informasi publik.
Prinsip dan Proses SIWE
Proses SIWE terdiri dari tiga langkah: menghubungkan dompet, menandatangani, mendapatkan identifikasi.
sambungkan dompet
Ini adalah operasi Web3 yang umum, terhubung ke Dapp melalui plugin dompet.
tanda tangan
Langkah-langkah tanda tangan SIWE meliputi:
Dapatkan nilai Nonce: panggil antarmuka backend untuk mendapatkan nilai Nonce acak, yang terhubung dengan alamat.
Membangun konten tanda tangan: termasuk nilai Nonce, nama domain, ID rantai, dan informasi lainnya.
Tanda tangan dompet: Gunakan metode yang disediakan oleh dompet untuk menandatangani konten.
Kirim tanda tangan: Kirim tanda tangan untuk diverifikasi oleh backend.
mendapatkan identifikasi
Setelah verifikasi tanda tangan di backend berhasil, kembalikan identifikasi pengguna ( seperti JWT ). Permintaan selanjutnya yang menyertakan alamat dan identifikasi, dapat membuktikan kepemilikan dompet.
Praktik SIWE
Kami akan mengembangkan aplikasi full-stack yang mendukung SIWE menggunakan Next.js.
Untuk meningkatkan kecepatan verifikasi, disarankan untuk menggunakan layanan node khusus. Anda dapat menggunakan layanan node ZAN, menggantikan RPC default:
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
15 Suka
Hadiah
15
10
Bagikan
Komentar
0/400
LiquidatorFlash
· 07-24 21:27
Dompet identifikasi tidak dapat diandalkan, tunggu untuk dilikuidasi.
Lihat AsliBalas0
ChainPoet
· 07-24 18:42
Akhirnya ada yang menjelaskan SIWE dengan jelas! Saya sudah lama tidak memikirkan prinsipnya.
Lihat AsliBalas0
quietly_staking
· 07-24 10:20
Tanda tangannya sudah selesai, sederhana dan langsung.
Lihat AsliBalas0
ConsensusDissenter
· 07-23 00:15
Verifikasi backend benar-benar merepotkan, lebih baik langsung menggunakan alamat transaksi.
Lihat AsliBalas0
BTCRetirementFund
· 07-21 22:30
Saya benar-benar tidak mengerti, SIWE itu apa sih?
Lihat AsliBalas0
LightningLady
· 07-21 22:23
Jadi backend ini tidak digunakan? SIWE tidak enak?
Lihat AsliBalas0
SatoshiNotNakamoto
· 07-21 22:16
Ini bukan hanya login dengan tanda tangan? Kenapa harus begitu mewah?
Lihat AsliBalas0
MevShadowranger
· 07-21 22:11
Ah, ini bukan hanya jebakan web2 yang diberikan pada Blockchain?
Lihat AsliBalas0
MEVSandwich
· 07-21 22:11
Hmm sepertinya verifikasi backend ekosistem ETH memang cukup merepotkan.
Lihat AsliBalas0
AirdropLicker
· 07-21 22:00
Ah, ini, tanda tangan juga bisa dimainkan dengan cara yang menarik. Saya belajar, saya belajar.
SIWE: Panduan Praktik Dapp Full Stack untuk Membangun Identifikasi Ethereum
SIWE: Alat yang kuat untuk menyediakan identifikasi pada Dapp
SIWE (Sign-In with Ethereum) adalah metode untuk memverifikasi identitas pengguna di Ethereum, mirip dengan memulai transaksi, yang membuktikan kontrol pengguna atas dompet mereka. Saat ini, sebagian besar plugin dompet mendukung metode tanda tangan sederhana ini.
Artikel ini terutama membahas skenario tanda tangan di Ethereum, tanpa melibatkan rantai publik lainnya.
Apakah proyek Anda memerlukan SIWE?
Jika Dapp Anda memiliki kebutuhan berikut, Anda dapat mempertimbangkan untuk menggunakan SIWE:
Untuk Dapp( yang terutama menyediakan fungsi pencarian seperti etherscan), SIWE tidak perlu digunakan.
Meskipun setelah menghubungkan dompet, frontend dapat mengonfirmasi identifikasi, tetapi untuk pemanggilan antarmuka yang memerlukan dukungan backend, hanya mengirimkan alamat tidak dapat membuktikan identifikasi, karena alamat adalah informasi publik.
Prinsip dan Proses SIWE
Proses SIWE terdiri dari tiga langkah: menghubungkan dompet, menandatangani, mendapatkan identifikasi.
sambungkan dompet
Ini adalah operasi Web3 yang umum, terhubung ke Dapp melalui plugin dompet.
tanda tangan
Langkah-langkah tanda tangan SIWE meliputi:
Dapatkan nilai Nonce: panggil antarmuka backend untuk mendapatkan nilai Nonce acak, yang terhubung dengan alamat.
Membangun konten tanda tangan: termasuk nilai Nonce, nama domain, ID rantai, dan informasi lainnya.
Tanda tangan dompet: Gunakan metode yang disediakan oleh dompet untuk menandatangani konten.
Kirim tanda tangan: Kirim tanda tangan untuk diverifikasi oleh backend.
mendapatkan identifikasi
Setelah verifikasi tanda tangan di backend berhasil, kembalikan identifikasi pengguna ( seperti JWT ). Permintaan selanjutnya yang menyertakan alamat dan identifikasi, dapat membuktikan kepemilikan dompet.
Praktik SIWE
Kami akan mengembangkan aplikasi full-stack yang mendukung SIWE menggunakan Next.js.
pekerjaan persiapan
npx create-next-app@14
npm install antd @ant-design/web3 @ant-design/web3-wagmi wagmi viem @tanstack/react-query --save
memperkenalkan Wagmi
Mengimpor WagmiProvider di layout.tsx:
jsx import { WagmiWeb3ConfigProvider } from "@ant-design/web3-wagmi";
const WagmiProvider = ({ children }) => { return ( <wagmiweb3configprovider config="{{" siwe:="" {="" getnonce:="" async="" (address)=""> (await getNonce(address)).data, createMessage: (props) => createSiweMessage({ ...props, statement: "Ant Design Web3" }), verifyMessage: async (message, signature) => { const jwt = (await verifyMessage(message, signature)).data; setJwt(jwt); return !!jwt; }, }, chains: [Mainnet], transportasi: { [Mainnet.id]: http(), }, wallets: [MetaMask(), WalletConnect(), TokenPocket(), OkxWallet()] }} > {children} ); };
Tambahkan tombol koneksi
Buat tombol untuk menghubungkan dompet dan menandatangani:
jsx ekspor default fungsi App() { const jwt = React.useContext(JwtProvider);
return ( <connectbutton.connector> {({ akun, sambungkan }) => ( )} </connectbutton.connector> ); }
mewujudkan antarmuka belakang
Antarmuka Nonce
javascript ekspor fungsi asinkron GET(request) { const { searchParams } = new URL(request.url); const address = searchParams.get("address");
jika (!address) { throw new Error("Alamat tidak valid"); } const nonce = randomBytes(16).toString("hex"); addressMap.set(address, nonce); return Response.json({ data: nonce }); }
Antarmuka Verifikasi Tanda Tangan
javascript export async function POST(request) { const { signature, message } = await request.json(); const { nonce, address = "0x" } = parseSiweMessage(message);
jika (!nonce || nonce !== addressMap.get(address)) { throw new Error("Invalid nonce"); }
const valid = await publicClient.verifySiweMessage({ pesan, alamat, tanda tangan, });
jika (!valid) { throw new Error("Tanda tangan tidak valid"); }
const token = jwt.sign({ address }, JWT_SECRET, { expiresIn: "1h" }); return Response.json({ data: token }); }
Optimasi Kinerja
Untuk meningkatkan kecepatan verifikasi, disarankan untuk menggunakan layanan node khusus. Anda dapat menggunakan layanan node ZAN, menggantikan RPC default:
javascript const publicClient = createPublicClient({ rantai: mainnet, transport: http('), // Layanan RPC node ZAN });
Ini akan secara signifikan meningkatkan kecepatan respons antarmuka.