diff --git a/lnbits/extensions/cashu/mint.py b/lnbits/extensions/cashu/mint.py
index 883d0fa9..4153fb30 100644
--- a/lnbits/extensions/cashu/mint.py
+++ b/lnbits/extensions/cashu/mint.py
@@ -71,7 +71,7 @@ async def melt(cashu: Cashu, proofs: List[Proof], invoice: str):
fees_msat = await check_fees(cashu.wallet, invoice_obj)
assert total_provided >= amount + fees_msat / 1000, Exception(
- f"Provided proofs (${total_provided} sats) not enough for Lightning payment ({amount + fees_msat} sats)."
+ f"Provided proofs ({total_provided} sats) not enough for Lightning payment ({amount + fees_msat} sats)."
)
await pay_invoice(
diff --git a/lnbits/extensions/cashu/templates/cashu/wallet.html b/lnbits/extensions/cashu/templates/cashu/wallet.html
index 641b704c..02358d3d 100644
--- a/lnbits/extensions/cashu/templates/cashu/wallet.html
+++ b/lnbits/extensions/cashu/templates/cashu/wallet.html
@@ -306,7 +306,7 @@ page_container %}
Show Tokens p.amount === amount)
+ if (index >= 0) {
+ return {
+ promise: token.promises[index],
+ secret: token.secrets[index],
+ randomBlindingFactor: token.randomBlindingFactors[index]
+ }
+ }
+ }
+ },
+
+ constructProof: function (token) {},
+
buildTokens: async function (amounts, paymentHash) {
const blindedMessages = []
const secrets = []
@@ -1038,34 +1072,19 @@ page_container %}
const paidTokens = this.tokens.filter(t => t.promises?.length)
console.log('### paidTokens', paidTokens)
const proofs = paidTokens.map(token => {
- // const promiseIndex = token.promises
- // .map(p => `${p.amount}`)
- // .indexOf(`${amount}`)
return token.promises.map((promise, promiseIndex) => {
- // const promise = token.promises[promiseIndex]
console.log('### promise', promise)
const secret = token.secrets[promiseIndex]
const randomBlindingFactor =
token.randomBlindingFactors[promiseIndex]
- const C_ = nobleSecp256k1.Point.fromHex(promise['C_'])
- const A = this.keys[promise.amount] // todo
-
- console.log('#### C_', C_)
- console.log('#### A', A)
-
- const C = step3Bob(
- C_,
- randomBlindingFactor,
- nobleSecp256k1.Point.fromHex(A)
- )
-
- return {
- amount: promise.amount,
+ return this.promiseToProof(
+ promise.amount,
+ promise['C_'],
secret,
- C: C.toHex(true)
- }
+ randomBlindingFactor
+ )
})
})
const payload = {
@@ -1074,6 +1093,40 @@ page_container %}
invoice: this.sellData.bolt11
}
console.log('#### payload', JSON.stringify(payload))
+ try {
+ const {data} = await LNbits.api.request(
+ 'POST',
+ `/cashu/api/v1/cashu/${this.mintId}/melt`,
+ '',
+ payload
+ )
+ this.$q.notify({
+ timeout: 5000,
+ message: 'Invoice paid'
+ })
+ } catch (error) {
+ console.error(error)
+ LNbits.utils.notifyApiError(error)
+ }
+ },
+
+ // C_hex = promise['C_']
+ // amount = promise.amount
+ promiseToProof: function (amount, C_hex, secret, randomBlindingFactor) {
+ const C_ = nobleSecp256k1.Point.fromHex(C_hex)
+ const A = this.keys[amount]
+
+ const C = step3Bob(
+ C_,
+ randomBlindingFactor,
+ nobleSecp256k1.Point.fromHex(A)
+ )
+
+ return {
+ amount,
+ secret,
+ C: C.toHex(true)
+ }
},
fetchMintKeys: async function () {