This commit is contained in:
timlucmiptev 2021-03-01 11:13:07 +02:00 committed by ixv
parent b96c752c3c
commit b50144b1a1
5 changed files with 32 additions and 42 deletions

View File

@ -172,9 +172,6 @@
:: ::
%broadcast-tx %broadcast-tx
[%broadcast-tx rawtx.act] [%broadcast-tx rawtx.act]
::
%ping
[%get-block-info ~]
== ==
[~[(req-card act ract)] state] [~[(req-card act ract)] state]
:: ::

View File

@ -173,7 +173,7 @@
:: ::
:: overwrites any payment being built in poym :: overwrites any payment being built in poym
:: ::
%req-pay-address %init-payment
~| "Can't pay ourselves; no comets; can't do while tx is being signed" ~| "Can't pay ourselves; no comets; can't do while tx is being signed"
?< =(src.bowl payee.comm) ?< =(src.bowl payee.comm)
?< ?=(%pawn (clan:title payee.comm)) ?< ?=(%pawn (clan:title payee.comm))
@ -217,7 +217,7 @@
=. state state(num-fam.piym (~(put by num-fam.piym) f +(n))) =. state state(num-fam.piym (~(put by num-fam.piym) f +(n)))
=^ a=address state =^ a=address state
(generate-address u.curr-xpub %0) (generate-address u.curr-xpub %0)
:- ~[(poke-peer src.bowl [%recv-pay-address a value.act])] :- ~[(poke-peer src.bowl [%give-pay-address a value.act])]
state(ps.piym (~(put by ps.piym) src.bowl [~ u.curr-xpub a src.bowl value.act])) state(ps.piym (~(put by ps.piym) src.bowl [~ u.curr-xpub a src.bowl value.act]))
:: ::
++ generate-address ++ generate-address
@ -237,10 +237,10 @@
?^ pend.u.p ~|("%gen-address: {<payer>} already has pending payment to us" !!) ?^ pend.u.p ~|("%gen-address: {<payer>} already has pending payment to us" !!)
=+ newp=u.p(value value.act) =+ newp=u.p(value value.act)
:_ state(ps.piym (~(put by ps.piym) payer newp)) :_ state(ps.piym (~(put by ps.piym) payer newp))
~[(poke-peer payer [%recv-pay-address address.newp value.act])] ~[(poke-peer payer [%give-pay-address address.newp value.act])]
-- --
:: ::
%recv-pay-address %give-pay-address
?: =(src.bowl our.bowl) ~|("Can't pay ourselves" !!) ?: =(src.bowl our.bowl) ~|("Can't pay ourselves" !!)
?: is-broadcasting ~|("Broadcasting a transaction" !!) ?: is-broadcasting ~|("Broadcasting a transaction" !!)
?~ curr-xpub ~|("btc-wallet-hook: no curr-xpub set" !!) ?~ curr-xpub ~|("btc-wallet-hook: no curr-xpub set" !!)
@ -293,6 +293,15 @@
?& =(payer.p src.bowl) ?& =(payer.p src.bowl)
=(value.p value.act) =(value.p value.act)
== ==
::
++ update-pend-piym
|= [txid=hexb p=payment]
^- _state
?~ pend.p ~|("update-pend-piym: no pending payment" !!)
%= state
ps.piym (~(put by ps.piym) payer.p p)
pend.piym (~(put by pend.piym) txid p)
==
-- --
== ==
:: ::
@ -301,6 +310,7 @@
^- (quip card _state) ^- (quip card _state)
?- -.intr ?- -.intr
%add-poym-raw-txi %add-poym-raw-txi
|^
?> =(src.bowl our.bowl) ?> =(src.bowl our.bowl)
?~ poym `state ?~ poym `state
=. txis.u.poym =. txis.u.poym
@ -313,6 +323,18 @@
~& >> "{<vb>} vbytes, {<(div fee vb)>} sats/byte, {<fee>} sats fee" ~& >> "{<vb>} vbytes, {<(div fee vb)>} sats/byte, {<fee>} sats fee"
%- (slog [%leaf "PSBT: {<u.pb>}"]~) %- (slog [%leaf "PSBT: {<u.pb>}"]~)
~ ~
:: update outgoing payment with a rawtx, if the txid is in poym's txis
::
++ update-poym-txis
|= [txis=(list txi) txid=hexb rawtx=hexb]
^- (list txi)
=| i=@
|- ?: (gte i (lent txis)) txis
=/ ith=txi (snag i txis)
=? txis =(txid txid.utxo.ith)
(snap txis i `txi`ith(rawtx `rawtx))
$(i +(i))
--
:: delete an incoming/outgoing payment when we see it included in a tx :: delete an incoming/outgoing payment when we see it included in a tx
:: ::
%close-pym %close-pym
@ -491,6 +513,7 @@
?: ?|(?!(connected.p) (lth block.btc-state block)) ?: ?|(?!(connected.p) (lth block.btc-state block))
;: weld ;: weld
(retry-pend-piym network) (retry-pend-piym network)
(retry-poym network)
(retry-addrs network) (retry-addrs network)
(retry-txs network) (retry-txs network)
(retry-scans network) (retry-scans network)
@ -769,34 +792,6 @@
[(weld cards0 cards1) state] [(weld cards0 cards1) state]
:: ::
:: ::
:: +update-pend.piym
:: - set pend.payment to txid (lock)
:: - add txid to pend.piym
::
++ update-pend-piym
|= [txid=hexb p=payment]
^- _state
?~ pend.p ~|("update-pend-piym: no pending payment" !!)
%= state
ps.piym (~(put by ps.piym) payer.p p)
pend.piym (~(put by pend.piym) txid p)
==
::
:: +update-poym-txis:
:: update outgoing payment with a rawtx, if the txid is in poym's txis
::
++ update-poym-txis
|= [txis=(list txi) txid=hexb rt=hexb]
^- (list txi)
=| i=@
|- ?: (gte i (lent txis)) txis
=/ ith=txi (snag i txis)
=? txis =(txid txid.utxo.ith)
(snap txis i `txi`ith(ur `rt))
$(i +(i))
::
::
:: ::
++ poke-provider ++ poke-provider
|= [act=action:bp] |= [act=action:bp]

View File

@ -151,8 +151,8 @@
=/ ins=(list in:psbt:bc) =/ ins=(list in:psbt:bc)
%+ murn txis.t %+ murn txis.t
|= =txi |= =txi
?~ ur.txi ~ ?~ rawtx.txi ~
`[utxo.txi u.ur.txi hdkey.txi] `[utxo.txi u.rawtx.txi hdkey.txi]
?: (lth (lent ins) (lent txis.t)) ?: (lth (lent ins) (lent txis.t))
~ ~
=/ outs=(list out:psbt:bc) =/ outs=(list out:psbt:bc)

View File

@ -31,9 +31,7 @@
[%raw-tx txid=hexb] [%raw-tx txid=hexb]
[%broadcast-tx rawtx=hexb] [%broadcast-tx rawtx=hexb]
[%ping ~] [%ping ~]
check-network
== ==
+$ check-network [%check-network =network]
:: ::
+$ result +$ result
$% [%address-info =address utxos=(set utxo) used=? block=@ud] $% [%address-info =address utxos=(set utxo) used=? block=@ud]

View File

@ -16,14 +16,14 @@
[%set-current-wallet =xpub] [%set-current-wallet =xpub]
[%add-wallet =xpub =fprint scan-to=(unit scon) max-gap=(unit @ud) confs=(unit @ud)] [%add-wallet =xpub =fprint scan-to=(unit scon) max-gap=(unit @ud) confs=(unit @ud)]
[%delete-wallet =xpub] [%delete-wallet =xpub]
[%req-pay-address payee=ship value=sats feyb=sats] [%init-payment payee=ship value=sats feyb=sats]
[%broadcast-tx txhex=cord] [%broadcast-tx txhex=cord]
== ==
:: action: how peers poke us :: action: how peers poke us
:: ::
+$ action +$ action
$% [%gen-pay-address value=sats] $% [%gen-pay-address value=sats]
[%recv-pay-address =address value=sats] [%give-pay-address =address value=sats]
[%expect-payment =txid value=sats] [%expect-payment =txid value=sats]
== ==
:: internal: actions that simply make the state machine more explicit :: internal: actions that simply make the state machine more explicit
@ -88,7 +88,7 @@
:: ::
+$ insel [=utxo =chyg =idx] +$ insel [=utxo =chyg =idx]
+$ feyb sats +$ feyb sats
+$ txi [=utxo ur=(unit hexb) =hdkey] +$ txi [=utxo rawtx=(unit hexb) =hdkey]
+$ txo [=address value=sats hk=(unit hdkey)] +$ txo [=address value=sats hk=(unit hdkey)]
+$ txbu +$ txbu
$: =xpub $: =xpub