tycho-core 0.3.9

Basic functionality of peer.
Documentation
// Overlay
////////////////////////////////////////////////////////////////////////////////

---types---

overlay.ping = overlay.Ping;
overlay.pong = overlay.Pong;

/**
* A successful response for the overlay query
*
* @param value  an existing value
*/
overlay.response.ok value:T = overlay.Response T;
/**
* An unsuccessful response for the overlay query
*/
overlay.response.err code:int = overlay.Response T;

/**
* Message broadcast prefix
*/
overlay.broadcastPrefix = overlay.BroadcastPrefix;

// Blockchain public overlay
////////////////////////////////////////////////////////////////////////////////

---types---

/**
* Data for computing a public overlay id
*/
blockchain.overlayIdData
    zerostate_root_hash:int256
    zerostate_file_hash:int256
    = blockchain.OverlayIdData;

/**
* A full block id
*/
blockchain.blockId
    workchain:int
    shard:long
    seqno:int
    root_hash:int256
    file_hash:int256
    = blockchain.BlockId;

/**
* A response for the `getNextKeyBlockIds` query
*
* @param block_ids      list of key block ids
* @param incomplete     flag points to finishing query
*/
blockchain.keyBlockIds block_ids:(vector blockchain.blockId) incomplete:Bool = blockchain.KeyBlockIds;

/**
* A response for getting full block info
*
* @param block_id       block id
* @param block          block data raw
* @param proof          block proof raw
* @param queue_diff     queue diff raw
*/
blockchain.blockFull.found
    block_id:blockchain.blockId
    block:blockchain.blockData
    proof:bytes
    queue_diff:bytes
    = blockchain.BlockFull;

/**
* A response for getting block info with the first chunk
*
* @param block          block data raw
* @param size           block size in bytes
* @param chunk_size     block chunk size in bytes
*/
blockchain.blockData
    data:bytes
    size:int
    chunk_size:int
    = blockchain.BlockData;

/**
* Block not found
*/
blockchain.blockFull.notFound = blockchain.BlockFull;

/**
* A response for getting a key block proof
*
* @param proof          block proof data
*/
blockchain.keyBlockProof.found proof:bytes = blockchain.KeyBlockProof;


/**
* A response for getting a zerostate proof
*
* @param proof          zerostate proof data
*/
blockchain.zerostateProof.found proof:bytes = blockchain.ZerostateProof;

/**
* Zerostate not found
*/
blockchain.zerostateProof.notFound = blockchain.ZerostateProof;

/**
* Key block proof not found
*/
blockchain.keyBlockProof.notFound = blockchain.KeyBlockProof;

/**
* A successful response for the 'getArchiveInfo' query
*
* @param id             archive id
* @param size           archive size in bytes
* @param chunk_size     chunk size in bytes
*/
blockchain.archiveInfo.found
    id:long
    size:long
    chunk_size:long
    = blockchain.ArchiveInfo;

/**
* A successful response for the 'getArchiveInfo' query
* says that requested block hasn't commited in archive yet
*/
blockchain.archiveInfo.tooNew = blockchain.ArchiveInfo;

/**
* An unsuccessful response for the 'getArchiveInfo' query
*/
blockchain.archiveInfo.notFound = blockchain.ArchiveInfo;

/**
* A successful response for the 'getPersistentStateInfo' query
*
* @param size           state file size in bytes
* @param chunk_size     chunk size in bytes
*/
blockchain.persistentStateInfo.found
    size:long
    chunk_size:long
    = blockchain.PersistentStateInfo;

/**
* An unsuccessful response for the 'getPersistentStateInfo' query
*/
blockchain.persistentStateInfo.notFound = blockchain.PersistentStateInfo;

/**
* Raw data bytes
*/
blockchain.data data:bytes = blockchain.Data;


/**
* External message broadcast.
*/
blockchain.broadcast.message data:bytes = blockchain.Broadcast;

---functions---

/**
* Get list of next key block ids.
*
* @param block_id       first key block id
* @param count          max number of items in the response
*/
blockchain.getNextKeyBlockIds
    block_id:blockchain.blockId
    count:int
    = overlay.Response blockchain.KeyBlockIds;

/**
* Get full block info
*
* @param block_id       target block id
*/
blockchain.getBlockFull
    block_id:blockchain.blockId
    = overlay.Response blockchain.blockFull;

/**
* Get next full block info
*
* @param prev_block_id  previous block id
*/
blockchain.getNextBlockFull
    prev_block_id:blockchain.blockId
    = overlay.Response blockchain.blockFull;

/**
* Get block data chunk
*
* @param block_id       target block id
* @param offset         chunk offset in bytes (must be a multiple of `chunk_size`)
*/
blockchain.getBlockDataChunk
    block_id:blockchain.blockId
    offset:int
    = overlay.Response blockchain.Data;


/**
* Get key block proof
*
* @param block_id  key block id
*/
blockchain.getKeyBlockProof
    block_id:blockchain.blockId
    = overlay.Response blockchain.KeyBlockProof;

/**
* Get zerostate proof
*/
blockchain.getZerostateProof = blockchain.GetZerostateProof;

/**
* Get archive info
*
* @param mc_seqno       masterchain block seqno
*/
blockchain.getArchiveInfo
    mc_seqno:int
    = overlay.Response blockchain.ArchiveInfo;

/**
* Get archive chunk
*
* @param archive_id     archive id (masterchain seqno)
* @param offset         chunk offset in bytes (must be a multiple of `chunk_size`)
*/
blockchain.getArchiveChunk
    archive_id:long
    offset:long
    = overlay.Response blockchain.Data;

/**
* Get persistent shard state info
*
* @param block_id       requested block id
*/
blockchain.getPersistentShardStateInfo
    block_id:blockchain.blockId
    = overlay.Response blockchain.PersistentStateInfo;

/**
* Get persistent shard state part
*
* @param block_id       requested block id
* @param limit          max response size in bytes
* @param offset         part offset in bytes
*/
blockchain.getPersistentShardStateChunk
    block_id:blockchain.blockId
    offset:long
    = overlay.Response blockchain.Data;

/**
* Get persistent queue state info
*
* @param block_id       requested block id
*/
blockchain.getPersistentQueueStateInfo
    block_id:blockchain.blockId
    = overlay.Response blockchain.PersistentStateInfo;

/**
* Get persistent queue state part
*
* @param block_id       requested block id
* @param offset         part offset in bytes
*/
blockchain.getPersistentQueueStateChunk
    block_id:blockchain.blockId
    offset:long
    = overlay.Response blockchain.Data;