Cleanup and type fixes

This commit is contained in:
Nadav Kohen 2018-05-31 13:34:07 -05:00 committed by nkohen
parent 260f554ced
commit c24d61c41a
3 changed files with 106 additions and 12 deletions

View file

@ -5,8 +5,10 @@ import java.net.InetAddress
import org.bitcoins.core.crypto.{DoubleSha256Digest, ECPublicKey, Sha256Hash160Digest}
import org.bitcoins.core.currency.Bitcoins
import org.bitcoins.core.number.{Int32, UInt32}
import org.bitcoins.core.protocol.Address
import org.bitcoins.core.protocol.blockchain.Block
import org.bitcoins.core.protocol.{Address, BitcoinAddress}
import org.bitcoins.core.protocol.script.ScriptPubKey
import org.bitcoins.core.protocol.transaction.TransactionInput
sealed abstract class NetworkResult
@ -54,7 +56,7 @@ case class GetBlockHeaderResult(
mediantime: UInt32,
nonce: UInt32,
bits: UInt32,
difficulty: Double,
difficulty: BigDecimal,
chainwork: String,
previousblockhash: Option[DoubleSha256Digest],
nextblockhash: Option[DoubleSha256Digest]) extends NetworkResult
@ -94,15 +96,14 @@ case class NodeAddress(
connected: String
) extends NetworkResult
// Is Double the correct type for priorities? PRIORITY
case class GetMemPoolEntryResult(
size: Int,
fee: Bitcoins,
modifiedfee: Bitcoins,
time: UInt32,
height: Int,
startingpriority: Double,
currentpriority: Double,
startingpriority: BigDecimal,
currentpriority: BigDecimal,
descendantcount: Int,
descendantsize: Int,
descendantfees: Int,
@ -129,4 +130,72 @@ case class GetTxOutSetInfoResult(
bytes_serialized: Int,
hash_serialized: DoubleSha256Digest,
total_amount: Bitcoins
) extends NetworkResult
) extends NetworkResult
case class GetBlockResult(
hash: DoubleSha256Digest,
confirmations: Int,
strippedsize: Int,
size: Int,
weight: Int,
height: Int,
version: Int,
versionHex: Int32,
merkleroot: DoubleSha256Digest,
tx: Vector[DoubleSha256Digest],
time: UInt32,
mediantime: UInt32,
nonce: UInt32,
bits: UInt32,
difficulty: BigDecimal,
chainwork: String,
previousblockhash: Option[DoubleSha256Digest],
nextblockhash: Option[DoubleSha256Digest]
) extends NetworkResult
case class GetBlockWithTransactionsResult(
hash: DoubleSha256Digest,
confirmations: Int,
strippedsize: Int,
size: Int,
weight: Int,
height: Int,
version: Int,
versionHex: Int32,
merkleroot: DoubleSha256Digest,
tx: Vector[RpcTransaction],
time: UInt32,
mediantime: UInt32,
nonce: UInt32,
bits: UInt32,
difficulty: BigDecimal,
chainwork: String,
previousblockhash: Option[DoubleSha256Digest],
nextblockhash: Option[DoubleSha256Digest]
) extends NetworkResult
case class RpcTransaction(
txid: DoubleSha256Digest,
hash: DoubleSha256Digest,
version: Int,
size: Int,
vsize: Int,
locktime: UInt32,
vin: Vector[TransactionInput],
vout: Vector[RpcTransactionOutput],
hex: Block
) extends NetworkResult
case class RpcTransactionOutput(
value: Bitcoins,
n: Int,
scriptPubKey: RpcScriptPubKey
) extends NetworkResult
case class RpcScriptPubKey(
asm: String,
hex: String,
reqSigs: Int,
scriptType: String,
addresses: Vector[BitcoinAddress]
) extends NetworkResult

View file

@ -3,7 +3,7 @@ package org.bitcoins.rpc.jsonmodels
import org.bitcoins.core.crypto.{DoubleSha256Digest, Sha256Hash160Digest}
import org.bitcoins.core.currency.Bitcoins
import org.bitcoins.core.number.UInt32
import org.bitcoins.core.protocol.Address
import org.bitcoins.core.protocol.{Address, P2PKHAddress, P2SHAddress}
import org.bitcoins.core.protocol.script.ScriptPubKey
sealed abstract class WalletResult
@ -29,4 +29,12 @@ case class BumpFeeResult(
warnings: String
) extends WalletResult
case class CreateMultiSigResult(address: Address, redeemScript: ScriptPubKey) extends WalletResult
case class CreateMultiSigResult(address: Address, redeemScript: ScriptPubKey) extends WalletResult
case class DecodeScriptResult(
asm: String,
typeOfScript: Option[String],
reqSigs: Option[Int],
addresses: Option[Vector[P2PKHAddress]],
p2sh: P2SHAddress
) extends WalletResult

View file

@ -5,13 +5,14 @@ import java.net.InetAddress
import org.bitcoins.core.crypto.{DoubleSha256Digest, ECPublicKey, Sha256Hash160Digest}
import org.bitcoins.core.currency.Bitcoins
import org.bitcoins.core.number.{Int32, UInt32}
import org.bitcoins.core.protocol.{Address, P2PKHAddress, P2SHAddress}
import org.bitcoins.core.protocol.blockchain.{Block, BlockHeader}
import org.bitcoins.core.protocol.{Address, BitcoinAddress, P2PKHAddress, P2SHAddress}
import org.bitcoins.core.protocol.blockchain.{Block, BlockHeader, MerkleBlock}
import org.bitcoins.core.protocol.script.ScriptPubKey
import org.bitcoins.core.protocol.transaction.{TransactionInput, TransactionOutput}
import org.bitcoins.rpc.jsonmodels._
import org.bitcoins.rpc.serializers.JsonReaders._
import play.api.libs.json.{Json, Reads}
import play.api.libs.json.{Json, Reads, __}
import play.api.libs.functional.syntax._
object JsonSerializers {
// Internal Types
@ -30,7 +31,8 @@ object JsonSerializers {
implicit val p2PKHAddressReads: Reads[P2PKHAddress] = P2PKHAddressReads
implicit val p2SHAddressReads: Reads[P2SHAddress] = P2SHAddressReads
implicit val transactionInputReads: Reads[TransactionInput] = TransactionInputReads
implicit val transactionOutputReads: Reads[TransactionOutput] = TransactionOutputReads
implicit val bitcoinAddressReads: Reads[BitcoinAddress] = BitcoinAddressReads
implicit val merkleBlockReads: Reads[MerkleBlock] = MerkleBlockReads
// Network Models
implicit val networkReads: Reads[Network] = Json.reads[Network]
@ -54,6 +56,13 @@ object JsonSerializers {
implicit val getTxOutSetInfoResultReads: Reads[GetTxOutSetInfoResult] = Json.reads[GetTxOutSetInfoResult]
implicit val getBlockResultReads: Reads[GetBlockResult] = Json.reads[GetBlockResult]
implicit val rpcScriptPubKeyReads: Reads[RpcScriptPubKey] = Json.reads[RpcScriptPubKey]
implicit val rpcTransactionOutputReads: Reads[RpcTransactionOutput] = Json.reads[RpcTransactionOutput]
implicit val rpcTransactionReads: Reads[RpcTransaction] = Json.reads[RpcTransaction]
implicit val getBlockWithTransactionsResultReads: Reads[GetBlockWithTransactionsResult] = Json.reads[GetBlockWithTransactionsResult]
// Mining Models
implicit val miningInfoReads: Reads[GetMiningInfoResult] = Json.reads[GetMiningInfoResult]
@ -63,4 +72,12 @@ object JsonSerializers {
implicit val bumpFeeReads: Reads[BumpFeeResult] = Json.reads[BumpFeeResult]
implicit val createMultiSigReads: Reads[CreateMultiSigResult] = Json.reads[CreateMultiSigResult]
implicit val decodeScriptResultReads: Reads[DecodeScriptResult] = (
(__ \ "asm").read[String] and
(__ \ "type").readNullable[String] and
(__ \ "reqSigs").readNullable[Int] and
(__ \ "addresses").readNullable[Vector[P2PKHAddress]] and
(__ \ "p2sh").read[P2SHAddress]
)(DecodeScriptResult)
}