Defly Wallet
This documentation outlines the steps to integrate Defly Wallet for signing "Sign In With Algorand" (SIWA) messages.
Prerequisites
Install the Defly Wallet library:
npm install @blockshake/defly-connectImport required modules:
import { DeflyWalletConnect } from "@blockshake/defly-connect"; import algosdk from "algosdk"; import { getMessageBytes, hashMessage, initializeAlgodClient } from "@/utils/siwaUtils";
Overview
Defly wallet uses a transaction-based approach for signing SIWA messages, similar to Lute wallet. Here's how it works:
Create a zero-amount payment transaction
Set the transaction's note field to the encoded SIWA message
Sign the transaction using Defly wallet
Extract the signature from the signed transaction
Implementation
1. Connecting to Defly Wallet
To connect to Defly wallet, use the DeflyWalletConnect class:
2. Signing a SIWA Message
To sign a SIWA message with Defly wallet:
Create a payment transaction with the SIWA message in the note field
Sign the transaction using Defly wallet
Extract the signature from the signed transaction
Here's the code to accomplish this:
Verification
When verifying the SIWA message signature for Defly wallet, the process is similar to Lute wallet due to the transaction-based approach. Here's how it works:
The verification function receives the following parameters:
message: The original SIWA messagesignature: The signature in base64 formatprovider: The wallet provider (in this case, "Defly")encodedTransaction: The encoded transaction in Base64 formatThe verification process for Defly wallet:
The
verifySignedTransactionfunction is used to validate the transaction:
This verification process ensures that:
The transaction is properly signed
The signature in the transaction matches the provided signature
The transaction is valid according to Algorand's rules
Remember to handle any potential errors during the verification process and ensure that all required parameters are provided.
Last updated
