Added fundrawtransaction functionality

This commit is contained in:
Nadav Kohen 2018-05-31 14:55:28 -05:00 committed by nkohen
parent c24d61c41a
commit 344c6fc47b
3 changed files with 32 additions and 3 deletions

View file

@ -5,6 +5,7 @@ import org.bitcoins.core.currency.Bitcoins
import org.bitcoins.core.number.UInt32
import org.bitcoins.core.protocol.{Address, P2PKHAddress, P2SHAddress}
import org.bitcoins.core.protocol.script.ScriptPubKey
import org.bitcoins.core.protocol.transaction.Transaction
sealed abstract class WalletResult
@ -37,4 +38,10 @@ case class DecodeScriptResult(
reqSigs: Option[Int],
addresses: Option[Vector[P2PKHAddress]],
p2sh: P2SHAddress
) extends WalletResult
) extends WalletResult
case class FundRawTransactionResult(
hex: Transaction,
fee: Bitcoins,
changepos: Int
) extends WalletResult

View file

@ -8,10 +8,11 @@ import org.bitcoins.core.number.{Int32, UInt32}
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.core.protocol.transaction.{Transaction, TransactionInput, TransactionOutput}
import org.bitcoins.rpc.jsonmodels._
import org.bitcoins.rpc.serializers.JsonReaders._
import play.api.libs.json.{Json, Reads, __}
import org.bitcoins.rpc.serializers.JsonWriters._
import play.api.libs.json.{Json, Reads, Writes, __}
import play.api.libs.functional.syntax._
object JsonSerializers {
@ -33,6 +34,10 @@ object JsonSerializers {
implicit val transactionInputReads: Reads[TransactionInput] = TransactionInputReads
implicit val bitcoinAddressReads: Reads[BitcoinAddress] = BitcoinAddressReads
implicit val merkleBlockReads: Reads[MerkleBlock] = MerkleBlockReads
implicit val transactionReads: Reads[Transaction] = TransactionReads
implicit val bitcoinsWrites: Writes[Bitcoins] = BitcoinsWrites
implicit val bitcoinAddressWrites: Writes[BitcoinAddress] = BitcoinAddressWrites
// Network Models
implicit val networkReads: Reads[Network] = Json.reads[Network]
@ -80,4 +85,6 @@ object JsonSerializers {
(__ \ "addresses").readNullable[Vector[P2PKHAddress]] and
(__ \ "p2sh").read[P2SHAddress]
)(DecodeScriptResult)
implicit val fundRawTransactionResultReads: Reads[FundRawTransactionResult] = Json.reads[FundRawTransactionResult]
}

View file

@ -0,0 +1,15 @@
package org.bitcoins.rpc.serializers
import org.bitcoins.core.currency.Bitcoins
import org.bitcoins.core.protocol.BitcoinAddress
import play.api.libs.json._
object JsonWriters {
implicit object BitcoinsWrites extends Writes[Bitcoins] {
def writes(o: Bitcoins) = JsNumber(o.toBigDecimal)
}
implicit object BitcoinAddressWrites extends Writes[BitcoinAddress] {
def writes(o: BitcoinAddress) = JsString(o.value)
}
}