add slot to chain head (#351)
This commit is contained in:
Submodule emerald-grpc updated: e6fcfa6f81...6c969f4e74
@@ -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()
|
||||||
|
|
||||||
|
|||||||
@@ -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())
|
||||||
|
|||||||
@@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user