Files
xrpl-dev-portal/_code-samples/verify-credential/js/verify_credential.js
mDuo13 91e8962c25 Revise tutorial guidelines & template
(Includes suggestions from @oeggert review)

Co-authored-by: oeggert <117319296+oeggert@users.noreply.github.com>

More verify creds docs

Rework tutorial guidelines & template

Update verify credential (js) tutorial for reworked code sample

Remove now-unused tutorial structure screenshots
2025-12-15 16:15:09 -08:00

69 lines
2.1 KiB
JavaScript
Executable File

import { Client, rippleTimeToISOTime, convertStringToHex } from "xrpl"
const client = new Client("wss://s.devnet.rippletest.net:51233")
await client.connect()
const SUBJECT_ADDRESS = "rsYhHbanGpnYe3M6bsaMeJT5jnLTfDEzoA"
const ISSUER_ADDRESS = "rEzikzbnH6FQJ2cCr4Bqmf6c3jyWLzkonS"
const CREDENTIAL_TYPE = convertStringToHex("my_credential").toUpperCase()
// Look up Credential ledger entry --------------------------------------------
const ledgerEntryRequest = {
command: "ledger_entry",
credential: {
subject: SUBJECT_ADDRESS,
issuer: ISSUER_ADDRESS,
credential_type: CREDENTIAL_TYPE,
},
ledger_index: "validated",
}
console.log("Looking up credential...")
console.log(JSON.stringify(ledgerEntryRequest, null, 2))
let xrplResponse
try {
xrplResponse = await client.request(ledgerEntryRequest)
} catch (err) {
if (err.data?.error === "entryNotFound") {
console.error("Credential was not found")
} else {
console.error(err)
}
process.exit(1)
}
const credential = xrplResponse.result.node
console.log("Found credential:")
console.log(JSON.stringify(credential, null, 2))
// Check if the credential has been accepted ----------------------------------
const lsfAccepted = 0x00010000
if (!(credential.Flags & lsfAccepted)) {
console.log("Credential is not accepted.")
process.exit(2)
}
// Confirm that the credential is not expired ---------------------------------
if (credential.Expiration) {
const expirationTime = rippleTimeToISOTime(credential.Expiration)
console.log(`Credential has expiration: ${expirationTime}`)
console.log("Looking up validated ledger to check for expiration.")
const ledgerResponse = await client.request({
command: "ledger",
ledger_index: "validated",
})
const closeTime = rippleTimeToISOTime(ledgerResponse.result.ledger.close_time)
console.log(`Most recent validated ledger was at: ${closeTime}`)
if (new Date(closeTime) > new Date(expirationTime)) {
console.log("Credential is expired.")
process.exit(3)
}
}
// Credential has passed all checks -------------------------------------------
console.log("Credential is valid.")
client.disconnect()