Skip to content

消息

消息是 Farcaster 网络中的基础数据类型。

当账户执行诸如发布公开消息、更改个人资料或验证以太坊账户等操作时,都会生成新的消息。

1. 消息

消息是一个 protobuf 结构,包含数据、其哈希值以及作者的签名。

字段类型标签描述
dataMessageData消息内容。也可以使用 data_bytes 字段来序列化 MessageData
hashbytes数据的哈希摘要
hash_schemeHashScheme生成哈希摘要的哈希方案
signaturebytes哈希摘要的签名
signature_schemeSignatureScheme生成签名的签名方案
signerbytes生成签名的密钥对的公钥或地址
data_bytesbytes替代 "data" 字段。如果使用非 Typescript 的编程语言构造 MessageData,可以使用此字段序列化 MessageData 并基于这些字节计算 hashsignature。可选字段。

1.1 MessageData

MessageData 是一个通用信封,包含所有 Farcaster 消息中必须存在的类型、fid、时间戳和网络信息。它还包含一个 body,其类型由 MessageType 决定。

字段类型标签描述
typeMessageTypebody 中包含的消息类型
fiduint64生成消息的用户 Farcaster ID
timestampuint32Farcaster 时间戳(秒)
networkFarcasterNetwork消息目标 Farcaster 网络
bodyCastAddBody,
CastRemoveBody,
ReactionBody,
VerificationAddEthAddressBody,
VerificationRemoveBody,
UserDataBody,
LinkBody,
UserNameProof
oneOf特定于 MessageType 的属性

1.2 HashScheme

用于生成 MessageData 摘要的哈希方案类型

名称数值描述
HASH_SCHEME_NONE0
HASH_SCHEME_BLAKE31哈希 MessageData 的默认方案

1.3 签名方案

用于签名消息哈希的签名方案类型

名称数值描述
SIGNATURE_SCHEME_NONE0
SIGNATURE_SCHEME_ED255191Ed25519 签名(默认)
SIGNATURE_SCHEME_EIP7122使用 EIP-712 方案的 ECDSA 签名

1.4 消息类型

消息体的类型

名称数值描述
MESSAGE_TYPE_NONE0无效默认值
MESSAGE_TYPE_CAST_ADD1添加新 Cast
MESSAGE_TYPE_CAST_REMOVE2移除现有 Cast
MESSAGE_TYPE_REACTION_ADD3向 Cast 添加 Reaction
MESSAGE_TYPE_REACTION_REMOVE4从 Cast 移除 Reaction
MESSAGE_TYPE_LINK_ADD5向目标添加 Link
MESSAGE_TYPE_LINK_REMOVE6从目标移除 Link
MESSAGE_TYPE_VERIFICATION_ADD_ETH_ADDRESS7添加以太坊地址验证
MESSAGE_TYPE_VERIFICATION_REMOVE8移除验证
MESSAGE_TYPE_USER_DATA_ADD11添加用户元数据
MESSAGE_TYPE_USERNAME_PROOF12添加或替换用户名证明

1.5 Farcaster 网络

消息目标 Farcaster 网络

名称数值描述
FARCASTER_NETWORK_NONE0
FARCASTER_NETWORK_MAINNET1公共主网
FARCASTER_NETWORK_TESTNET2公共测试网
FARCASTER_NETWORK_DEVNET3私有测试网

2. 用户数据

UserData 消息表示用户元数据(例如个人资料图片 URL)。

2.1 UserDataBody

UserData 消息体

字段类型标签描述
typeUserDataType元数据类型
valuestring元数据值

2.2 UserDataType

UserData 消息类型

名称数值描述
USER_DATA_TYPE_NONE0无效默认值
USER_DATA_TYPE_PFP1用户个人资料图片
USER_DATA_TYPE_DISPLAY2用户显示名称
USER_DATA_TYPE_BIO3用户简介
USER_DATA_TYPE_URL5用户 URL
USER_DATA_TYPE_USERNAME6用户首选 Farcaster 名称
USER_DATA_TYPE_LOCATION7用户位置
USER_DATA_TYPE_TWITTER8用户 Twitter 用户名
USER_DATA_TYPE_GITHUB9用户 GitHub 用户名

有关位置的更多信息,请参阅 FIP-196
有关 Twitter/X 和 Github 用户名的更多信息,请参阅 FIP-19

3. Cast

Cast 消息是用户的公开帖子。

3.1 CastAddBody

添加新 Cast 消息。

字段类型标签描述
embeds_deprecatedstringrepeated嵌入 Cast 的 URL
mentionsuint64repeatedCast 中提及的 Fids
parent_cast_idCastIdCast 的父 Cast
parent_urlstringCast 的父 URL
textstringCast 文本
mentions_positionsuint32repeated文本中提及的位置
embedsEmbedrepeated嵌入 Cast 的 URL 或 cast ids

Embed

字段类型标签描述
urlstring
cast_idCastId

3.2 CastRemoveBody

移除现有 Cast 消息。

字段类型标签描述
target_hashbytes要移除的 Cast 哈希

3.3 CastId

用于查找 Cast 的标识符

字段类型标签描述
fiduint64创建 Cast 的用户 Fid
hashbytesCast 哈希

4. Reaction

Reaction 消息在账户和 Cast 之间创建关系(例如点赞)。

4.1 ReactionBody

向 Cast 添加或移除 Reaction

字段类型标签描述
typeReactionTypeReaction 类型
target_cast_idCastId要反应的 Cast 的 CastId
target_urlstring要反应的 URL

4.2 ReactionType

Reaction 类型

名称数值描述
REACTION_TYPE_NONE0无效默认值
REACTION_TYPE_LIKE1点赞目标 Cast
REACTION_TYPE_RECAST2将目标 Cast 分享到用户的受众

Link 消息在两个用户之间创建关系(例如关注)。

5.1 LinkBody

添加或移除 Link

字段类型标签描述
typestringLink 类型,≤ 8 个字符
displayTimestampuint32optional用户定义的时间戳,当 message.data.timestamp 需要更新以进行压缩时保留原始时间戳
target_fiduint64Link 关联的 fid

6. 验证

Verification 消息是某物所有权证明。

6.1 VerificationAddEthAddressBody

添加双向签名,证明 fid 控制某个以太坊地址。

字段类型标签描述
addressbytes被验证的以太坊地址
eth_signaturebytes用户以太坊地址生成的签名
block_hashbytes生成声明时的最新以太坊区块哈希

6.2 VerificationRemoveBody

移除任何类型的 Verification

字段类型标签描述
addressbytes要移除的 Verification 地址

7. Frame 操作

表示用户在 frame 上执行的操作。此消息不存储在 hubs 上且无法提交,仅用于验证。

7.1 FrameActionBody

用户在 frame 上的操作

字段类型标签描述
urlbytes嵌入 Cast 中的 frame 原始 URL
button_indexuint32按下的按钮索引(从 1 开始)
cast_idCastId托管 frame 的 cast id
input_textbytes用户作为操作一部分输入的任何文本
statebytes从 frame 传递到服务器的序列化状态