Auf dieser Seite
Signieren
Verbinden Sie den Provider vor dem Signieren und bestätigen Sie das ausgewählte Netzwerk. Der direkt injizierte Provider und der Aptos-Wallet-Standard-Adapter verwenden unterschiedliche Argumenttypen; verwenden Sie ihre Beispiele nicht austauschbar. Ersetzen Sie verkürzte Adressen und stellen Sie für rein lesende Aufrufe einen SDK-Client bereit.
Erfahren Sie, wie Sie Nachrichten zur Authentifizierung oder Überprüfung signieren.
Nachricht signieren
Beliebige Nachrichten zur Authentifizierung oder Überprüfung signieren:
const message = 'Welcome to MyApp!\n\nClick to sign in.\n\nNonce: abc123'
const response = await provider.signMessage({
message,
nonce: 12345, // Example only; obtain a single-use challenge from your server
})
console.log({
signature: response.signature, // Hex-encoded signature
fullMessage: response.fullMessage, // Full signed message
prefix: response.prefix, // Message prefix used
})Optionen zum Signieren einer Nachricht
const response = await provider.signMessage({
message: 'Hello Aptos',
nonce: 12345,
address: true, // Include address in message
application: true, // Include app info
chainId: true, // Include chain ID
})Nachricht prüfen (Off-Chain)
import nacl from 'tweetnacl'
const { signature, fullMessage } = await provider.signMessage({
message: 'Hello Aptos',
nonce: 12345,
})
const account = await provider.account()
const pubKeyBytes = Buffer.from(account.publicKey.slice(2), 'hex')
const signatureBytes = Buffer.from(signature.slice(2), 'hex')
const messageBytes = Buffer.from(fullMessage)
const isValid = nacl.sign.detached.verify(messageBytes, signatureBytes, pubKeyBytes)
console.log('Signature valid:', isValid)Anmelden (AIP-Standard)
Für einen standardisierten Anmeldeablauf:
const signInInput = {
// Sign-in parameters
}
const result = await provider.signIn(signInInput)
console.log({
address: result.account.address,
publicKey: result.account.publicKey,
signature: result.signature,
})Fehlerbehandlung
try {
await provider.signMessage({ message: 'Hello', nonce: 12345 })
} catch (error) {
switch (error.code) {
case 4001:
console.log('User rejected the request')
break
case 4100:
console.log('The account or method is not authorized')
break
case 4200:
console.log('Unsupported method')
break
default:
console.error('Error:', error.message)
}
}Die direkte Methode signMessage verwendet eine numerische Nonce. signMessageCompatible und Wallet-Standard-Integrationen verwenden eine Nonce als Zeichenfolge. Überprüfen Sie das zurückgegebene fullMessage, den Signierenden und die Challenge und machen Sie die Challenge nach Verwendung ungültig. Die obige Anmeldeeingabe ist ein schematischer Platzhalter; erstellen Sie das vollständige AptosSignInInput, das Ihre Adapterversion benötigt.