Mensajes
Un mensaje es el tipo de dato fundamental en la red Farcaster.
Cuando una cuenta realiza una acción como publicar un mensaje público, cambiar su perfil o verificar una cuenta de Ethereum, genera nuevos mensajes.
1. Mensaje
El mensaje es un protobuf que contiene los datos, su hash y una firma del autor.
Campo | Tipo | Etiqueta | Descripción |
---|---|---|---|
data | MessageData | Contenido del mensaje. Alternativamente, puedes usar data_bytes para serializar el MessageData | |
hash | bytes | Digestión hash de los datos | |
hash_scheme | HashScheme | Esquema hash que produjo la digestión hash | |
signature | bytes | Firma de la digestión hash | |
signature_scheme | SignatureScheme | Esquema de firma que produjo la firma | |
signer | bytes | Clave pública o dirección del par de claves que produjo la firma | |
data_bytes | bytes | Alternativa al campo "data". Si estás construyendo el MessageData en un lenguaje de programación distinto a Typescript, puedes usar este campo para serializar el MessageData y calcular el hash y signature sobre estos bytes. Opcional. |
1.1 MessageData
MessageData es un envoltorio genérico que contiene un tipo, fid, timestamp y red que deben estar presentes en todos los mensajes de Farcaster. También contiene un cuerpo cuyo tipo está determinado por el MessageType.
Campo | Tipo | Etiqueta | Descripción |
---|---|---|---|
type | MessageType | Tipo de Mensaje contenido en el cuerpo | |
fid | uint64 | Farcaster ID del usuario que produce el mensaje | |
timestamp | uint32 | Timestamp de época Farcaster en segundos | |
network | FarcasterNetwork | Red Farcaster a la que está destinado el mensaje | |
body | CastAddBody, CastRemoveBody, ReactionBody, VerificationAddEthAddressBody, VerificationRemoveBody, UserDataBody, LinkBody, UserNameProof | oneOf | Propiedades específicas del MessageType |
1.2 HashScheme
Tipo de esquema hash utilizado para producir una digestión de MessageData
Nombre | Número | Descripción |
---|---|---|
HASH_SCHEME_NONE | 0 | |
HASH_SCHEME_BLAKE3 | 1 | Esquema predeterminado para hashear MessageData |
1.3 Signature Scheme
Tipo de esquema de firma utilizado para firmar el hash del Mensaje
Nombre | Número | Descripción |
---|---|---|
SIGNATURE_SCHEME_NONE | 0 | |
SIGNATURE_SCHEME_ED25519 | 1 | Firma Ed25519 (predeterminado) |
SIGNATURE_SCHEME_EIP712 | 2 | Firma ECDSA usando el esquema EIP-712 |
1.4 Message Type
Tipo del MessageBody
Nombre | Número | Descripción |
---|---|---|
MESSAGE_TYPE_NONE | 0 | Valor predeterminado inválido |
MESSAGE_TYPE_CAST_ADD | 1 | Añadir un nuevo Cast |
MESSAGE_TYPE_CAST_REMOVE | 2 | Eliminar un Cast existente |
MESSAGE_TYPE_REACTION_ADD | 3 | Añadir una Reacción a un Cast |
MESSAGE_TYPE_REACTION_REMOVE | 4 | Eliminar una Reacción de un Cast |
MESSAGE_TYPE_LINK_ADD | 5 | Añadir un Link a un objetivo |
MESSAGE_TYPE_LINK_REMOVE | 6 | Eliminar un Link de un objetivo |
MESSAGE_TYPE_VERIFICATION_ADD_ETH_ADDRESS | 7 | Añadir una Verificación de una Dirección Ethereum |
MESSAGE_TYPE_VERIFICATION_REMOVE | 8 | Eliminar una Verificación |
MESSAGE_TYPE_USER_DATA_ADD | 11 | Añadir metadatos sobre un usuario |
MESSAGE_TYPE_USERNAME_PROOF | 12 | Añadir o reemplazar una prueba de nombre de usuario |
1.5 Farcaster Network
Red Farcaster a la que está destinado el mensaje
Nombre | Número | Descripción |
---|---|---|
FARCASTER_NETWORK_NONE | 0 | |
FARCASTER_NETWORK_MAINNET | 1 | Red principal pública |
FARCASTER_NETWORK_TESTNET | 2 | Red de prueba pública |
FARCASTER_NETWORK_DEVNET | 3 | Red de prueba privada |
2. UserData
Un mensaje UserData representa metadatos de usuario (por ejemplo, una URL de foto de perfil).
2.1 UserDataBody
Cuerpo de un mensaje UserData
Campo | Tipo | Etiqueta | Descripción |
---|---|---|---|
type | UserDataType | Tipo de metadatos | |
value | string | Valor de los metadatos |
2.2 UserDataType
Tipo de mensaje UserData
Nombre | Número | Descripción |
---|---|---|
USER_DATA_TYPE_NONE | 0 | Valor predeterminado inválido |
USER_DATA_TYPE_PFP | 1 | Foto de perfil del usuario |
USER_DATA_TYPE_DISPLAY | 2 | Nombre para mostrar del usuario |
USER_DATA_TYPE_BIO | 3 | Biografía del usuario |
USER_DATA_TYPE_URL | 5 | URL del usuario |
USER_DATA_TYPE_USERNAME | 6 | Nombre Farcaster preferido del usuario |
USER_DATA_TYPE_LOCATION | 7 | Ubicación del usuario |
USER_DATA_TYPE_TWITTER | 8 | Nombre de usuario de Twitter del usuario |
USER_DATA_TYPE_GITHUB | 9 | Nombre de usuario de GitHub del usuario |
Consulta FIP-196 para más información sobre Ubicación. Consulta FIP-19 para más información sobre nombres de usuario de Twitter/X y Github.
3. Cast
Un mensaje Cast es una publicación pública de un usuario.
3.1 CastAddBody
Añade un nuevo mensaje Cast.
Campo | Tipo | Etiqueta | Descripción |
---|---|---|---|
embeds_deprecated | string | repeated | URLs para incrustar en el cast |
mentions | uint64 | repeated | Fids mencionados en el cast |
parent_cast_id | CastId | Cast padre del cast | |
parent_url | string | URL padre del cast | |
text | string | Texto del cast | |
mentions_positions | uint32 | repeated | Posiciones de las menciones en el texto |
embeds | Embed | repeated | URLs o ids de cast para incrustar en el cast |
Embed
Campo | Tipo | Etiqueta | Descripción |
---|---|---|---|
url | string | ||
cast_id | CastId |
3.2 CastRemoveBody
Elimina un mensaje Cast existente.
Campo | Tipo | Etiqueta | Descripción |
---|---|---|---|
target_hash | bytes | Hash del cast a eliminar |
3.3 CastId
Identificador utilizado para buscar un Cast
Campo | Tipo | Etiqueta | Descripción |
---|---|---|---|
fid | uint64 | Fid del usuario que creó el cast | |
hash | bytes | Hash del cast |
4. Reacción
Un mensaje Reacción crea una relación entre una cuenta y un cast (por ejemplo, un "me gusta").
4.1 ReactionBody
Añade o elimina una Reacción de un Cast
Campo | Tipo | Etiqueta | Descripción |
---|---|---|---|
type | ReactionType | Tipo de reacción | |
target_cast_id | CastId | CastId del Cast al que reaccionar | |
target_url | string | URL a la que reaccionar |
4.2 ReactionType
Tipo de Reacción
Nombre | Número | Descripción |
---|---|---|
REACTION_TYPE_NONE | 0 | Valor predeterminado inválido |
REACTION_TYPE_LIKE | 1 | "Me gusta" el cast objetivo |
REACTION_TYPE_RECAST | 2 | Compartir el cast objetivo con la audiencia del usuario |
5. Link
Un mensaje Link crea una relación entre dos usuarios (por ejemplo, seguir).
5.1 LinkBody
Añade o elimina un Link
Campo | Tipo | Etiqueta | Descripción |
---|---|---|---|
type | string | Tipo de link, <= 8 caracteres | |
displayTimestamp | uint32 | opcional | Timestamp definido por el usuario que preserva el timestamp original cuando message.data.timestamp necesita actualizarse para compactación |
target_fid | uint64 | El fid al que se relaciona el link |
6. Verificación
Un mensaje Verificación es una prueba de propiedad de algo.
6.1 VerificationAddEthAddressBody
Añade una firma bidireccional que prueba que un fid tiene control sobre una dirección Ethereum.
Campo | Tipo | Etiqueta | Descripción |
---|---|---|---|
address | bytes | Dirección Ethereum que se verifica | |
eth_signature | bytes | Firma producida por la dirección Ethereum del usuario | |
block_hash | bytes | Hash del último bloque Ethereum cuando se produjo la reclamación |
6.2 VerificationRemoveBody
Elimina una Verificación de cualquier tipo
Campo | Tipo | Etiqueta | Descripción |
---|---|---|---|
address | bytes | Dirección de la Verificación a eliminar |
7. Frame Action
Representa una acción realizada por un usuario en un frame. Este mensaje no se almacena en los hubs y no se puede enviar, solo validar.
7.1 FrameActionBody
Una acción de usuario en un frame
Campo | Tipo | Etiqueta | Descripción |
---|---|---|---|
url | bytes | La URL original del frame como se incrustó en el cast | |
button_index | uint32 | El botón que se presionó (indexado desde 1) | |
cast_id | CastId | El cast id que alojó el frame | |
input_text | bytes | Cualquier texto que el usuario ingresó como parte de la acción | |
state | bytes | Estado serializado pasado del frame al servidor |