Referencia de la API del Servidor de Registro FName
El servidor de registro Fname está alojado en https://fnames.farcaster.xyz
Es un servicio HTTP simple responsable de emitir y rastrear fnames. Todos los cambios de Fname se registran como una transferencia.
Registrar un fname es una transferencia desde el FID 0 al fid del usuario. Transferir un fname es una transferencia desde el fid del usuario a otro fid. Cancelar el registro de un fname es una transferencia desde el fid del usuario al fid 0.
Registrar un fname
Nota: al registrar un nuevo fname, llamar a esta API no es suficiente. Esto solo reserva el nombre para tu fid. También debes enviar un mensaje UserDataAdd al hub para establecer este nombre como tu nombre de usuario.
Obtener historial de transferencias
Para obtener un historial de todas las transferencias, realiza una solicitud GET a /transfers
curl https://fnames.farcaster.xyz/transfers | jq
También acepta los siguientes parámetros de consulta:
from_id
- El ID de transferencia desde el que comenzar la paginaciónname
- El fname por el que filtrarfid
- El fid (ya sea from o to) por el que filtrarfrom_ts
- El timestamp (en segundos) desde el que comenzar la paginación
Obtener fname o fid actual
Para obtener el evento de transferencia más reciente para un fid o fname, realiza una solicitud GET a /transfers/current
Ejemplo: Para determinar el fid de @farcaster
, realiza la siguiente llamada y usa el valor del campo to
en la respuesta
curl https://fnames.farcaster.xyz/transfers?name=farcaster | jq
Para determinar el fname del fid 1
, realiza la siguiente llamada y usa el valor del campo username
en la respuesta
curl https://fnames.farcaster.xyz/transfers?fid=1 | jq
Ambos devolverán el mismo objeto de transferencias:
{
"transfers": [
{
"id": 1,
"timestamp": 1628882891,
"username": "farcaster",
"owner": "0x8773442740c17c9d0f0b87022c722f9a136206ed",
"from": 0,
"to": 1,
"user_signature": "0xa6fdd2a69deab5633636f32a30a54b21b27dff123e6481532746eadca18cd84048488a98ca4aaf90f4d29b7e181c4540b360ba0721b928e50ffcd495734ef8471b",
"server_signature": "0xb7181760f14eda0028e0b647ff15f45235526ced3b4ae07fcce06141b73d32960d3253776e62f761363fb8137087192047763f4af838950a96f3885f3c2289c41b"
}
]
}
Registrar o transferir un fname
Para registrar un nuevo fid, por ejemplo hubble
, primero asegúrate de que el fname no esté ya registrado.
Luego realiza una solicitud POST a /transfers
con el siguiente cuerpo:
{
"name": "hubble", // Nombre a registrar
"from": 0, // Fid desde el que se transfiere (0 para un nuevo registro)
"to": 123, // Fid al que se transfiere (0 para cancelar el registro)
"fid": 123, // Fid que realiza la solicitud (debe coincidir con from o to)
"owner": "0x...", // Dirección de custodia del fid que realiza la solicitud
"timestamp": 1641234567, // Timestamp actual en segundos
"signature": "0x..." // Firma EIP-712 firmada por la dirección de custodia del fid
}
Para generar la firma EIP-712, usa el siguiente código:
import { makeUserNameProofClaim, EIP712Signer } from '@farcaster/hub-nodejs';
const accountKey: EIP712Signer = undefined; // Clave de cuenta para la dirección de custodia (usa la subclase apropiada de hub-nodejs para ethers o viem)
const claim = makeUserNameProofClaim({
name: 'hubble',
owner: '0x...',
timestamp: Math.floor(Date.now() / 1000),
});
const signature = (
await accountKey.signUserNameProofClaim(claim)
)._unsafeUnwrap();
Este es el mismo tipo de firma utilizado en los UsernameProofs de ENS proporcionados a los hubs para demostrar la propiedad de un nombre ENS.
Ejemplo:
curl -X POST https://fnames.farcaster.xyz/transfers \
-H "Content-Type: application/json" \
-d \
'{"name": "hubble", "owner": "0x...", "signature": "0x...", "from": 0, "to": 1000, "timestamp": 1641234567, fid: 1000}'
Una vez que un nombre está registrado, aún se necesita enviar un mensaje UserData al hub para establecer realmente el nombre de usuario. Consulta ejemplos en el repositorio hub-nodejs.