Skip to content

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.

CampoTipoEtiquetaDescripción
dataMessageDataContenido del mensaje. Alternativamente, puedes usar data_bytes para serializar el MessageData
hashbytesDigestión hash de los datos
hash_schemeHashSchemeEsquema hash que produjo la digestión hash
signaturebytesFirma de la digestión hash
signature_schemeSignatureSchemeEsquema de firma que produjo la firma
signerbytesClave pública o dirección del par de claves que produjo la firma
data_bytesbytesAlternativa 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.

CampoTipoEtiquetaDescripción
typeMessageTypeTipo de Mensaje contenido en el cuerpo
fiduint64Farcaster ID del usuario que produce el mensaje
timestampuint32Timestamp de época Farcaster en segundos
networkFarcasterNetworkRed Farcaster a la que está destinado el mensaje
bodyCastAddBody,
CastRemoveBody,
ReactionBody,
VerificationAddEthAddressBody,
VerificationRemoveBody,
UserDataBody,
LinkBody,
UserNameProof
oneOfPropiedades específicas del MessageType

1.2 HashScheme

Tipo de esquema hash utilizado para producir una digestión de MessageData

NombreNúmeroDescripción
HASH_SCHEME_NONE0
HASH_SCHEME_BLAKE31Esquema predeterminado para hashear MessageData

1.3 Signature Scheme

Tipo de esquema de firma utilizado para firmar el hash del Mensaje

NombreNúmeroDescripción
SIGNATURE_SCHEME_NONE0
SIGNATURE_SCHEME_ED255191Firma Ed25519 (predeterminado)
SIGNATURE_SCHEME_EIP7122Firma ECDSA usando el esquema EIP-712

1.4 Message Type

Tipo del MessageBody

NombreNúmeroDescripción
MESSAGE_TYPE_NONE0Valor predeterminado inválido
MESSAGE_TYPE_CAST_ADD1Añadir un nuevo Cast
MESSAGE_TYPE_CAST_REMOVE2Eliminar un Cast existente
MESSAGE_TYPE_REACTION_ADD3Añadir una Reacción a un Cast
MESSAGE_TYPE_REACTION_REMOVE4Eliminar una Reacción de un Cast
MESSAGE_TYPE_LINK_ADD5Añadir un Link a un objetivo
MESSAGE_TYPE_LINK_REMOVE6Eliminar un Link de un objetivo
MESSAGE_TYPE_VERIFICATION_ADD_ETH_ADDRESS7Añadir una Verificación de una Dirección Ethereum
MESSAGE_TYPE_VERIFICATION_REMOVE8Eliminar una Verificación
MESSAGE_TYPE_USER_DATA_ADD11Añadir metadatos sobre un usuario
MESSAGE_TYPE_USERNAME_PROOF12Añadir o reemplazar una prueba de nombre de usuario

1.5 Farcaster Network

Red Farcaster a la que está destinado el mensaje

NombreNúmeroDescripción
FARCASTER_NETWORK_NONE0
FARCASTER_NETWORK_MAINNET1Red principal pública
FARCASTER_NETWORK_TESTNET2Red de prueba pública
FARCASTER_NETWORK_DEVNET3Red 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

CampoTipoEtiquetaDescripción
typeUserDataTypeTipo de metadatos
valuestringValor de los metadatos

2.2 UserDataType

Tipo de mensaje UserData

NombreNúmeroDescripción
USER_DATA_TYPE_NONE0Valor predeterminado inválido
USER_DATA_TYPE_PFP1Foto de perfil del usuario
USER_DATA_TYPE_DISPLAY2Nombre para mostrar del usuario
USER_DATA_TYPE_BIO3Biografía del usuario
USER_DATA_TYPE_URL5URL del usuario
USER_DATA_TYPE_USERNAME6Nombre Farcaster preferido del usuario
USER_DATA_TYPE_LOCATION7Ubicación del usuario
USER_DATA_TYPE_TWITTER8Nombre de usuario de Twitter del usuario
USER_DATA_TYPE_GITHUB9Nombre 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.

CampoTipoEtiquetaDescripción
embeds_deprecatedstringrepeatedURLs para incrustar en el cast
mentionsuint64repeatedFids mencionados en el cast
parent_cast_idCastIdCast padre del cast
parent_urlstringURL padre del cast
textstringTexto del cast
mentions_positionsuint32repeatedPosiciones de las menciones en el texto
embedsEmbedrepeatedURLs o ids de cast para incrustar en el cast

Embed

CampoTipoEtiquetaDescripción
urlstring
cast_idCastId

3.2 CastRemoveBody

Elimina un mensaje Cast existente.

CampoTipoEtiquetaDescripción
target_hashbytesHash del cast a eliminar

3.3 CastId

Identificador utilizado para buscar un Cast

CampoTipoEtiquetaDescripción
fiduint64Fid del usuario que creó el cast
hashbytesHash 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

CampoTipoEtiquetaDescripción
typeReactionTypeTipo de reacción
target_cast_idCastIdCastId del Cast al que reaccionar
target_urlstringURL a la que reaccionar

4.2 ReactionType

Tipo de Reacción

NombreNúmeroDescripción
REACTION_TYPE_NONE0Valor predeterminado inválido
REACTION_TYPE_LIKE1"Me gusta" el cast objetivo
REACTION_TYPE_RECAST2Compartir el cast objetivo con la audiencia del usuario

Un mensaje Link crea una relación entre dos usuarios (por ejemplo, seguir).

5.1 LinkBody

Añade o elimina un Link

CampoTipoEtiquetaDescripción
typestringTipo de link, <= 8 caracteres
displayTimestampuint32opcionalTimestamp definido por el usuario que preserva el timestamp original cuando message.data.timestamp necesita actualizarse para compactación
target_fiduint64El 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.

CampoTipoEtiquetaDescripción
addressbytesDirección Ethereum que se verifica
eth_signaturebytesFirma producida por la dirección Ethereum del usuario
block_hashbytesHash del último bloque Ethereum cuando se produjo la reclamación

6.2 VerificationRemoveBody

Elimina una Verificación de cualquier tipo

CampoTipoEtiquetaDescripción
addressbytesDirecció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

CampoTipoEtiquetaDescripción
urlbytesLa URL original del frame como se incrustó en el cast
button_indexuint32El botón que se presionó (indexado desde 1)
cast_idCastIdEl cast id que alojó el frame
input_textbytesCualquier texto que el usuario ingresó como parte de la acción
statebytesEstado serializado pasado del frame al servidor