SIWE: Ethereum TANIMLAMA's Dapp tam yığın uygulama kılavuzu

SIWE: Dapp için TANIMLAMA sağlayan güçlü araç

SIWE (Ethereum ile Giriş) Ethereum üzerinde kullanıcı kimliğini doğrulamanın bir yoludur, işlem başlatmaya benzer, kullanıcının cüzdan üzerindeki kontrolünü kanıtlar. Şu anda çoğu cüzdan eklentisi bu basit imzalama yöntemini desteklemektedir.

Bu makale, Ethereum üzerindeki imza senaryolarını tartışmakta olup, diğer halka açık blok zincirlerini içermemektedir.

SIWE Kullanım Kılavuzu: Dapp'inizi nasıl daha güçlü hale getirebilirsiniz?

Projenizin SIWE'ye ihtiyacı var mı?

Eğer Dapp'inizin aşağıdaki ihtiyaçları varsa, SIWE kullanmayı düşünebilirsiniz:

  • Kendi kullanıcı sistemine sahip olmak
  • Kullanıcı gizliliği ile ilgili bilgileri sorgulamak gerekiyor.

Ana olarak sorgulama işlevi sunan Dapp( için etherscan), SIWE kullanılmayabilir.

Cüzdan bağlandıktan sonra ön uç kimliği doğrulayabilse de, arka uç desteği gerektiren API çağrıları için yalnızca adres ile kimlik kanıtı sağlanamaz, çünkü adres kamuya açık bir bilgidir.

SIWE'nin Prensibi ve Süreci

SIWE süreci üç aşamadan oluşur: cüzdanı bağlama, imzalama, TANIMLAMA alma.

Cüzdanı Bağla

Bu yaygın bir Web3 işlemi, cüzdan eklentisi aracılığıyla Dapp'a bağlanmaktır.

İMZA

SIWE'nin imzalama adımları şunlardır:

  1. Nonce değerini al: Rastgele Nonce değerini almak için arka uç API'sini çağırın, adresle ilişkilendirin.

  2. İmza içeriği oluşturma: Nonce değeri, alan adı, zincir ID'si gibi bilgileri içerir.

  3. Cüzdan imzası: İçeriği imzalamak için cüzdanın sağladığı yöntemi kullanın.

  4. İmza gönderme: İmza, arka uca doğrulama için gönderilir.

TANIMLAMA almak

Arka uç doğrulama imzası geçtikten sonra, kullanıcı tanımlayıcısı ( gibi JWT) döner. Sonraki talepler, adres ve tanımlayıcıyı taşıyarak cüzdan sahipliğini kanıtlayabilir.

SIWE Kullanım Kılavuzu: Dapp'inizi Nasıl Daha Güçlü Hale Getirirsiniz?

Uygulama SIWE

Next.js kullanarak SIWE destekleyen bir tam yığın uygulama geliştireceğiz.

HAZIRLIK

  1. Next.js'i kurun:

npx create-next-app@14

  1. SIWE ile ilgili bağımlılıkları yükleyin:

npm install antd @ant-design/web3 @ant-design/web3-wagmi wagmi viem @tanstack/react-query --save

Wagmi'yi tanıtmak

layout.tsx dosyasına WagmiProvider'ı dahil et:

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) =\u003e { const jwt = (await verifyMessage(message, signature)).data; setJwt(jwt); return !!jwt; }, }, zincirler: [Mainnet], taşıma: { [Ana ağ.id]: http(), }, cüzdanlar: [MetaMask(), WalletConnect(), TokenPocket(), OkxWallet()] }} > {children} ); };

SIWE Kılavuzu: Dapp'inizi nasıl daha güçlü hale getirebilirsiniz?

BAĞLANTI DÜĞMESİ EKLE

Cüzdanı bağlamak ve imzalamak için bir buton oluşturun:

jsx varsayılan dışa aktarma işlevi App() { const jwt = React.useContext(JwtProvider);

return ( <connectbutton.connector> {({ hesap, bağlan }) => ( )} </connectbutton.connector> ); }

SIWE Kullanım Kılavuzu: Dapp'inizi Nasıl Daha Güçlü Hale Getirirsiniz?

Arka uç arayüzü gerçekleştirme

Nonce arayüzü

javascript export async function GET(request) { const { searchParams } = new URL(request.url); const address = searchParams.get("address");

eğer (!address) { throw new Error("Geçersiz adres"); } const nonce = randomBytes(16).toString("hex"); addressMap.set(address, nonce); return Response.json({ data: nonce }); }

SIWE Kullanım Kılavuzu: Dapp'inizi Nasıl Daha Güçlü Hale Getirirsiniz?

İMZA DOĞRULAMA ARAYÜZÜ

javascript export async function POST(request) { const { signature, message } = await request.json(); const { nonce, address = "0x" } = parseSiweMessage(message);

eğer (!nonce || nonce !== addressMap.get(address)) { throw new Error("Geçersiz nonce"); }

const valid = await publicClient.verifySiweMessage({ mesaj, adres, imza, });

if (!valid) { throw new Error("Geçersiz imza"); }

const token = jwt.sign({ address }, JWT_SECRET, { expiresIn: "1saat" }); return Response.json({ data: token }); }

SIWE Kullanım Kılavuzu: Dapp'inizi nasıl daha güçlü hale getirebilirsiniz?

Performans Optimizasyonu

Doğrulama hızını artırmak için özel bir düğüm hizmeti kullanılması önerilir. Varsayılan RPC'yi değiştirmek için ZAN'ın düğüm hizmetini kullanabilirsiniz:

javascript const publicClient = createPublicClient({ zincir: ana ağ, taşıma: http('), // ZAN düğüm hizmeti RPC });

Bu, arayüz yanıt hızını önemli ölçüde artıracaktır.

SIWE Kullanım Kılavuzu: Dapp'inizi Nasıl Daha Güçlü Hale Getirirsiniz?

ETH-2.92%
DAPP1.16%
View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Reward
  • 6
  • Share
Comment
0/400
BTCRetirementFundvip
· 12h ago
Gerçekten anlamıyorum, SIWE nedir bu?
View OriginalReply0
LightningLadyvip
· 12h ago
Bu arka uç kullanılmıyor mu? SIWE güzel değil mi?
View OriginalReply0
SatoshiNotNakamotovip
· 12h ago
Bu, imza ile giriş yapmaktan başka bir şey değil, neden bu kadar havalı yapıyorsunuz ki?
View OriginalReply0
MevShadowrangervip
· 12h ago
Ah, bu, web2'deki o tuzak değil mi? Blok Zinciri'ne bir kaplama yapmak.
View OriginalReply0
MEVSandwichvip
· 12h ago
Hmm, görünüşe göre ETH ekosisteminin arka uç doğrulaması oldukça zor.
View OriginalReply0
AirdropLickervip
· 12h ago
Ah bu imza ile de oyun oynanır, öğrendim öğrendim.
View OriginalReply0
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)