Migración a snapchain
Snapchain es una implementación más escalable del protocolo Farcaster. Para interactuar con snapchain, puedes operar tu propio nodo de lectura.
Ejecutando un nodo
mkdir snapchain
wget https://raw.githubusercontent.com/farcasterxyz/snapchain/refs/heads/main/docker-compose.mainnet.yml -O docker-compose.yml
docker compose up # -d para ejecutar en segundo plano
Nota: el puerto HTTP predeterminado es 3381
, el puerto de gossip predeterminado es 3382
y el puerto gRPC predeterminado es 3383
. Es posible que necesites abrir estos puertos.
Lectura desde snapchain
Las APIs de lectura son totalmente compatibles con los hubs, por lo que no se requiere migración. Consulta la documentación existente para leer datos mediante la biblioteca cliente.
Vía HTTP una vez que tengas un nodo en ejecución:
curl http://localhost:3381/v1/info
Vía gRPC:
git clone git@github.com:farcasterxyz/snapchain.git
cd snapchain
grpcurl -plaintext -proto src/proto/rpc.proto -import-path src/proto localhost:3383 HubService/GetInfo
Si estás usando Shuttle, funcionará igual que antes. Solo necesitas apuntarlo al nodo de snapchain.
Escritura en snapchain
Las APIs de escritura también son compatibles con los hubs, con algunas advertencias (ver más abajo).
Para escribir en snapchain, debes ejecutar un nodo y enviar los mensajes directamente a él. Consulta la documentación existente para escribir datos mediante la biblioteca cliente. Nota: DEBES usar la versión 0.16
o posterior de la biblioteca hub-nodejs
.
Consideraciones
Si no estás usando los constructores de la biblioteca
hub-nodejs
, asegúrate de rellenardataBytes
en lugar dedata
en cada mensaje, así:tsif (message.dataBytes === undefined) { message.dataBytes = protobufs.MessageData.encode(message.data).finish(); message.data = undefined; }
Algunos mensajes de error devueltos por
submitMessage
son diferentes en Snapchain que en Hubs.Los envíos a Snapchain son de mejor esfuerzo. Es posible que
submitMessage
tenga éxito pero el mensaje no se incluya en un bloque. Sigue este issue para conocer el plan de proporcionar retroalimentación a los clientes cuando un mensaje aceptado en el mempool no pueda incluirse en un bloque.
Testnet
Existe un testnet para snapchain. Puedes ejecutar un nodo contra él usando este archivo docker compose:
mkdir snap_test
wget https://raw.githubusercontent.com/farcasterxyz/snapchain/refs/heads/main/docker-compose.testnet.yml -O docker-compose.yml
docker compose up # -d para ejecutar en segundo plano
Nota: el testnet es inestable y se reiniciará periódicamente.