驴Est谩s escribiendo un nuevo complemento de bitxorcore que incluye un nuevo tipo de transacci贸n?
En esta gu铆a, examinaremos c贸mo se construy贸 el transfer.cats en la biblioteca de catbuffer. Puedes adaptar los mismos pasos para definir un nuevo esquema.
Clona el repositorio de catbuffer-schemas.
git clone https://github.com/bitxorcorp/bitxor.git
Crea un nuevo archivo dentro de la carpeta catbuffer/schemas
. En nuestro caso, hemos llamado al archivo transfer.cats
.
Define la estructura para el cuerpo de la transacci贸n.
Piensa en una estructura como un conjunto de propiedades que deseamos almacenar en el mismo bloque de memoria.
El cuerpo de la transacci贸n contiene las propiedades adicionales que difieren de una transacci贸n b谩sica. Cada atributo puede tener uno de los tipos definidos en types.cats.
# Dise帽o binario para una transacci贸n de transferencia
struct TransferTransactionBody
# destinatario de la transacci贸n
recipient = UnresolvedAddress
# tama帽o del mensaje adjunto
messageSize = uint16
# n煤mero de tokens adjuntos
tokensCount = uint8
# mensaje de la transacci贸n
message = array(byte, messageSize)
# tokens adjuntos
tokens = array(UnresolvedToken, tokensCount, sort_key=tokenId)
Define una segunda estructura de transacci贸n en el mismo archivo.
Esto contendr谩 informaci贸n sobre la versi贸n de la entidad y su identificador. Las propiedades de la transacci贸n subyacente y el cuerpo de la transacci贸n en particular se agregan como elementos en l铆nea.
# Dise帽o binario para una transacci贸n de transferencia no incrustada
struct TransferTransaction
const uint8 version = 3
const EntityType entityType = 0x4154
inline Transaction
inline TransferTransactionBody
Define una estructura EmbeddedTransaction
para serializar las transacciones internas dentro de un conjunto.
La transacci贸n incrustada y la transacci贸n de cuerpo se agregan como elementos en l铆nea.
# Dise帽o binario para una transacci贸n incrustada
struct EmbeddedTransaction
inline SizePrefixedEntity
inline EntityBody
La biblioteca catbuffer te permite generar los generadores de transacciones a partir del esquema que hemos definido.
Por ejemplo, ejecuta el siguiente comando para generar c贸digo C++:
python main.py --schema bitxor/transfer/transfer.cats --generator cpp_builder
El generador crea el archivo de generadores de transacciones en la carpeta _generated/cpp_builder
.