Entidades

Cada pieza individual de contenido en el world (como una scene o un wearable item) se llama un entity.

Entities son paquetes inmutables de archivosarrow-up-right con un identificador de cadena único, derivado determinísticamente de los datos contenidos, que puede usarse para descubrir y descargar los archivos relacionados desde el content server.

El archivo principal de una entidad es el manifest, un documento JSON que describe las propiedades generales de la entidad, así como atributos especiales para cada type. El identificador de una entidad es en realidad el file identifierarrow-up-right de este manifest.

Como son inmutables, las entidades no pueden actualizarse en el sentido tradicional. En su lugar, son reemplazadas por nuevas entidades descubribles usando el mismo pointerarrow-up-right. La versión más reciente de una entidad se dice que está active.

Toda entidad está firmada por un owner (que está asociado a una cuenta de Ethereum). El owner puede más tarde usar las mismas claves de firma para subir una nueva versión de la entidad e indicar que reemplaza a la anterior. Los content servers validan estas firmas antes de aceptar nuevas entidades, ya sea que vengan directamente de un client o hayan sido retransmitidas por otro server.

Puedes ver entidades realmente desplegadas en el prácticaarrow-up-right sección.

Entity Types

Existen siete tipos de entidades:

  • Scenes: espacios virtuales en el world con sus propios objetos y comportamiento.

  • Profiles: información sobre un jugador específico, como su nombre y avatar.

  • Wearables: ropa y objetos que los jugadores pueden añadir a sus avatars.

  • Emotes: animaciones que el avatar de un jugador puede ejecutar.

  • Stores: sitios de marketplace para wearables y emotes que los jugadores pueden comprar.

  • Outfits: outfits guardados para un jugador específico.

Todos los tipos siguen los mismos procedimientos para creación, identificación, ownership y hosting.

Common Properties

Cada entidad tiene ciertas propiedades comunes en su manifest, aplicables a todos los tipos. Estos campos de primer nivel siempre estarán presentes:

Campo
Valor

type

Uno de escena, perfil, wearable, emote, store o outfits.

pointers

Un arreglo de pointersarrow-up-right associated to this entity.

timestamp

La marca de tiempo Unix UTC cuando esta entidad fue subida.

content

Un arreglo de referencias a archivos adicionales archivosarrow-up-right en el paquete de la entidad.

metadata

Un objeto con información específica para este tipo de entidad.

La estructura y los valores del metadata campo para cada tipo se detallan en sus páginas específicas. El pointers array también tiene contenidos diferentes dependiendo del tipo.

circle-info

Los manifiestos de entidades antiguos pueden contener el version campo, desaprobado en ADR-45arrow-up-right. Puedes ignorarlo con seguridad, ya que el timestamp campo ahora se usa para versionado.

Este es un manifest JSON típico que describe una entidad:

Puedes encontrar los esquemas para estas estructuras JSON, junto con otros objetos en el protocolo de Decentraland, en el Common Schemasarrow-up-right repository.

circle-info

Al mirar los manifiestos de entidades, puedes encontrar campos no documentados. Esto se debe a que el esquema de entidad permite propiedades personalizadas adicionales, establecidas libremente por el owner.

Archivos

Como se mencionó arriba, todas las entidades tienen al menos un archivo asociado: el manifest JSON que describe la propia entidad. El identificador de la entidad es en realidad el file identifierarrow-up-right de este archivo especial.

El content el campo dentro de cada manifest es un arreglo de referencias a archivos adicionales. Estos suelen ser assets, como modelos 3D y animations, o scripts para scenes.

Todos los archivos se almacenan en el distributed file systemarrow-up-rightde Decentraland, y cada elemento en el arreglo tiene dos propiedades:

Campo
Valor

file

El nombre interno usado por los archivos en esta entidad para referenciarse entre sí.

hash

El global identifier for this filearrow-up-right, único en todo el content.

Así es como normalmente se ve dentro del content campo:

circle-info

El file El valor del campo siempre está en minúsculas, para evitar problemas al construir entidades en diferentes sistemas operativos, donde la distinción entre mayúsculas y minúsculas en los nombres de archivo puede ser importante.

La vida útil de un archivo está ligada a la entidad que lo contiene. Para entidades active (es decir, que aún no han sido reemplazadas por su owner), los content servers están obligados por el protocolo a preservar todos los archivos asociados. Si la entidad es eliminada, los archivos pueden conservarse o descartarse a discreción del server.

Ownership and Authentication

Para demostrar ownership y autorizar acciones alrededor de entidades, se utiliza el auth chainarrow-up-right mechanism is used.

El decentraland-cryptoarrow-up-right repository contains the implementation of all cryptographic procedures.

Discovering and Downloading Entities

Los content servers pueden usarse para ubicar entidades usando pointersarrow-up-right, y para descargar sus manifests y cualquier archivo adicional.

Consulta la sección prácticaarrow-up-right para ejemplos y guías.

Última actualización