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

View File

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

View File

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