Alexis Hernandez
7 years ago
2 changed files with 71 additions and 0 deletions
@ -0,0 +1,60 @@ |
|||||
|
package com.xsn.explorer.models |
||||
|
|
||||
|
import play.api.libs.functional.syntax._ |
||||
|
import play.api.libs.json._ |
||||
|
|
||||
|
/** |
||||
|
* Represents a block coming from the RPC server. |
||||
|
* |
||||
|
* PoS blocks supported. |
||||
|
* Pending to support PoW and TPoS blocks. |
||||
|
*/ |
||||
|
case class Block( |
||||
|
hash: Blockhash, |
||||
|
previousBlockhash: Blockhash, |
||||
|
nextBlockhash: Blockhash, |
||||
|
merkleRoot: Blockhash, |
||||
|
transactions: List[TransactionId], |
||||
|
confirmations: Confirmations, |
||||
|
size: Size, |
||||
|
height: Height, |
||||
|
version: Int, |
||||
|
time: Long, |
||||
|
medianTime: Long, |
||||
|
nonce: Int, |
||||
|
bits: String, |
||||
|
chainwork: String, |
||||
|
difficulty: BigDecimal |
||||
|
) |
||||
|
|
||||
|
object Block { |
||||
|
implicit val reads: Reads[Block] = { |
||||
|
val builder = (__ \ 'hash).read[Blockhash] and |
||||
|
(__ \ 'previousblockhash).read[Blockhash] and |
||||
|
(__ \ 'nextblockhash).read[Blockhash] and |
||||
|
(__ \ 'merkleroot).read[Blockhash] and |
||||
|
(__ \ 'tx).read[List[TransactionId]] and |
||||
|
(__ \ 'confirmations).read[Confirmations] and |
||||
|
(__ \ 'size).read[Size] and |
||||
|
(__ \ 'height).read[Height] and |
||||
|
(__ \ 'version).read[Int] and |
||||
|
(__ \ 'time).read[Long] and |
||||
|
(__ \ 'mediantime).read[Long] and |
||||
|
(__ \ 'nonce).read[Int] and |
||||
|
(__ \ 'bits).read[String] and |
||||
|
(__ \ 'chainwork).read[String] and |
||||
|
(__ \ 'difficulty).read[BigDecimal] |
||||
|
|
||||
|
builder.apply { (hash, previous, next, root, transactions, |
||||
|
confirmations, size, height, version, time, |
||||
|
medianTime, nonce, bits, chainwork, difficulty) => |
||||
|
|
||||
|
Block( |
||||
|
hash, previous, next, root, transactions, |
||||
|
confirmations, size, height, version, time, |
||||
|
medianTime, nonce, bits, chainwork, difficulty) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
implicit val writes: Writes[Block] = Json.writes[Block] |
||||
|
} |
@ -0,0 +1,11 @@ |
|||||
|
package com.xsn.explorer.models |
||||
|
|
||||
|
import com.xsn.explorer.models.base.WrappedInt |
||||
|
import play.api.libs.json.{JsPath, Reads} |
||||
|
|
||||
|
case class Height(int: Int) extends AnyVal with WrappedInt |
||||
|
|
||||
|
object Height { |
||||
|
|
||||
|
implicit val reads: Reads[Height] = JsPath.read[Int].map(Height.apply) |
||||
|
} |
Loading…
Reference in new issue