Add clightning listtransactions func (#3797)

This commit is contained in:
benthecarman 2021-11-05 09:31:24 -04:00 committed by GitHub
parent aa748c012f
commit cd5451adaa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 36 additions and 0 deletions

View file

@ -332,4 +332,17 @@ object CLightningJsonModels {
case class FundChannelCancelResult( case class FundChannelCancelResult(
cancelled: String cancelled: String
) extends CLightningJsonModel ) extends CLightningJsonModel
case class CLightningTransaction(
hash: DoubleSha256DigestBE,
rawtx: Transaction,
blockheight: Int,
txindex: Int,
locktime: Long,
version: Int
) extends CLightningJsonModel
case class ListTransactionsResults(
transactions: Vector[CLightningTransaction]
) extends CLightningJsonModel
} }

View file

@ -698,6 +698,13 @@ object JsonSerializers {
FundChannelCancelResult] = FundChannelCancelResult] =
Json.reads[FundChannelCancelResult] Json.reads[FundChannelCancelResult]
implicit val CLightningTransactionReads: Reads[CLightningTransaction] =
Json.reads[CLightningTransaction]
implicit val CLightningListTransactionsResultsReads: Reads[
ListTransactionsResults] =
Json.reads[ListTransactionsResults]
implicit val byteVectorWrites: Writes[ByteVector] = implicit val byteVectorWrites: Writes[ByteVector] =
Writes[ByteVector](bytes => JsString(bytes.toHex)) Writes[ByteVector](bytes => JsString(bytes.toHex))

View file

@ -22,10 +22,16 @@ class CLightningClientPairTest extends DualCLightningFixture {
for { for {
infoA <- clightningA.getInfo infoA <- clightningA.getInfo
infoB <- clightningB.getInfo infoB <- clightningB.getInfo
txs <- clightningA.listTransactions()
funds <- clightningB.listFunds
} yield { } yield {
assert(infoA.id != infoB.id) assert(infoA.id != infoB.id)
assert(infoA.blockheight >= 0) assert(infoA.blockheight >= 0)
assert(infoB.blockheight >= 0) assert(infoB.blockheight >= 0)
assert(txs.nonEmpty)
assert(funds.outputs.nonEmpty)
} }
} }

View file

@ -55,4 +55,10 @@ class CLightningRpcClientTest extends CLightningFixture {
assert(funds.channels.isEmpty) assert(funds.channels.isEmpty)
} }
} }
it must "list txs" in { client =>
for {
txs <- client.listTransactions()
} yield assert(txs.isEmpty)
}
} }

View file

@ -256,6 +256,10 @@ class CLightningRpcClient(val instance: CLightningInstanceLocal, binary: File)(
clightningCall[CLightningPsbtResult]("signpsbt", params).map(_.signed_psbt) clightningCall[CLightningPsbtResult]("signpsbt", params).map(_.signed_psbt)
} }
def listTransactions(): Future[Vector[CLightningTransaction]] =
clightningCall[ListTransactionsResults]("listtransactions").map(
_.transactions)
def withdraw( def withdraw(
address: BitcoinAddress, address: BitcoinAddress,
amount: Satoshis): Future[WithdrawResult] = amount: Satoshis): Future[WithdrawResult] =