The following PyTeal code can be used to validate that the specified NFD name matches the passed NFD App ID and that it's an authentic NFD.
# is_nfd_id_authentic composes the name lookup LSIG and checks if the app id stored in the passed-in NFD name's# registry-contract local state matches the passed Nfd App ID.# ie: patrick.algo -> check registry contract discovery mechanism -> read app id.. does it match.@Subroutine(TealType.uint64)defis_nfd_id_authentic(nfd_name,nfd_app_id): lsigByteCode =ScratchVar(TealType.bytes) nameBytes =ScratchVar(TealType.bytes) progHash =ScratchVar(TealType.bytes) localGetMv = App.localGetEx(progHash.load(), Tmpl.Int("TMPL_NFD_RC_ID"), REGISTRY_KEY_APPID)returnSeq( nameBytes.store(Concat(Bytes("name/"), nfd_name)), lsigByteCode.store(Concat(Bytes("base16", "0x052001018008010203040506"),Bytes("base16", "0x070817350031183400123110"),Bytes("base16", "0x810612103119221231198100"),Bytes("base16", "0x1211104000010022432601"))),# Now replace bytes 6-13 w/ NFD's registry contract id lsigByteCode.store(Replace(lsigByteCode.load(), Int(6), Itob(Tmpl.Int("TMPL_NFD_RC_ID")))),# then concat {length}name/{nfd_name} - uvar int (just last byte in BE value) - then bytes of string lsigByteCode.store(Concat(lsigByteCode.load(), encode_uvarint(Len(nameBytes.load())), nameBytes.load())),# we can now hash these bytes to get our LSIG address progHash.store(Sha512_256(Concat(Bytes("Program"), lsigByteCode.load()))), localGetMv,Assert(localGetMv.hasValue(), comment="lsig has to have i.appid localstate"),Return(Btoi(localGetMv.value()) == nfd_app_id))
See Registry Application IDsfor the correct registry ID to substitute in the TMPL_NFD_RC_ID parameter.