add slot to chain head (#351)

This commit is contained in:
Vyacheslav
2023-11-27 16:55:20 +02:00
committed by GitHub
parent 4dc52091e3
commit db405a86b8
4 changed files with 8 additions and 5 deletions

View File

@@ -27,7 +27,7 @@ import io.emeraldpay.etherjar.rpc.json.TransactionRefJson
import java.math.BigInteger
import java.time.Instant
class BlockContainer(
class BlockContainer @JvmOverloads constructor(
val height: Long,
val hash: BlockId,
val difficulty: BigInteger,
@@ -39,6 +39,7 @@ class BlockContainer(
val transactions: List<TxId> = emptyList(),
val nodeRating: Int = 0,
val upstreamId: String = "",
val slot: Long = 0,
) : SourceContainer(json, parsed) {
val enriched: Boolean = transactions.isNotEmpty()

View File

@@ -52,6 +52,7 @@ class StreamHead(
return BlockchainOuterClass.ChainHead.newBuilder()
.setChainValue(chain.id)
.setHeight(block.height)
.setSlot(block.slot)
.setTimestamp(block.timestamp.toEpochMilli())
.setWeight(ByteString.copyFrom(block.difficulty.toByteArray()))
.setBlockId(block.hash.toHex())

View File

@@ -65,7 +65,7 @@ object SolanaChainSpecific : AbstractChainSpecific() {
).map {
val raw = it.getResult()
val block = Global.objectMapper.readValue(it.getResult(), SolanaBlock::class.java)
makeBlock(raw, block, upstreamId)
makeBlock(raw, block, upstreamId, response.max())
}.onErrorResume {
log.debug("error during getting last solana block - ${it.message}")
Mono.empty()
@@ -77,10 +77,10 @@ object SolanaChainSpecific : AbstractChainSpecific() {
override fun parseHeader(data: ByteArray, upstreamId: String): BlockContainer {
val res = Global.objectMapper.readValue(data, SolanaWrapper::class.java)
return makeBlock(data, res.value.block, upstreamId)
return makeBlock(data, res.value.block, upstreamId, res.context.slot)
}
private fun makeBlock(raw: ByteArray, block: SolanaBlock, upstreamId: String): BlockContainer {
private fun makeBlock(raw: ByteArray, block: SolanaBlock, upstreamId: String, slot: Long): BlockContainer {
return BlockContainer(
height = block.height,
hash = BlockId.fromBase64(block.hash),
@@ -92,6 +92,7 @@ object SolanaChainSpecific : AbstractChainSpecific() {
transactions = emptyList(),
upstreamId = upstreamId,
parentHash = BlockId.fromBase64(block.parent),
slot = slot,
)
}