Ark Notes (#379)

* ark credits

* rename "ecash" --> "ark credit"

* rework note_test.go

* NewFromString

* create several notes

* note repo: rename "push" to "add"

* RegisterInputsForNextRoundRequest: move "notes" to field #3

* use uint64 as note ID

* rename to voucher

* add nostr notification

* nostr notification test and fixes

* bump badger to 4.3

* allow npub to be registered

* rename poolTxID

* add default relays

* Update server/internal/config/config.go

Co-authored-by: Marco Argentieri <3596602+tiero@users.noreply.github.com>

* fix RedeemVouchers test

* notification = voucher

* WASM wrappers

* fix arkd voucher cmd

* test_utils.go ignore gosec rule G101

* fix permissions

* rename ALL to notes

* add URI prefix

* note.go : fix signature encoding

* fix decode note.Data

* Update server/internal/infrastructure/notifier/nostr/nostr.go

Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com>

* Update pkg/client-sdk/wasm/browser/wrappers.go

Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com>

* Update server/internal/infrastructure/notifier/nostr/nostr.go

Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com>

* rework note and entity db + sqlite implementations

* NOTIFICATION_PREFIX -> NOTE_URI_PREFIX

* validate NOTE_URI_PREFIX

* Update defaults to convenant-less mainnet (#2)

* config: defaults to convenant-less tx builder

* Drop env var for blockchain scanner

---------

Co-authored-by: altafan <18440657+altafan@users.noreply.github.com>

* add // before URI prefix

* add URI prefix in admin CreateNote

* Fixes

* rework nonces encoding (#4)

* rework nonces encoding

* add a check in Musig2Nonce decode function

* musig2_test: increase number of signers to 20

* musig2.json: add a test case with a 35 leaves tree

* GetEventStream REST rework

* fix round phases time intervals

* [SDK] Use server-side streams in rest client

* Fix history

* make the URI optional

* Updates

* Fix settled txs in history

* fix e2e test

* go work sync in sdk unit test

* fix signMessage in btc and liquid sdk wallets

---------

Co-authored-by: Marco Argentieri <3596602+tiero@users.noreply.github.com>
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com>
This commit is contained in:
Louis Singer
2024-11-15 19:07:33 +01:00
committed by GitHub
parent 963f5d89e6
commit ff96524f22
94 changed files with 6377 additions and 1230 deletions

View File

@@ -138,6 +138,24 @@ func (a *restClient) RegisterInputsForNextRound(
return resp.Payload.ID, nil
}
func (a *restClient) RegisterNotesForNextRound(
ctx context.Context, notes []string, ephemeralKey string,
) (string, error) {
body := &models.V1RegisterInputsForNextRoundRequest{
Notes: notes,
}
if len(ephemeralKey) > 0 {
body.EphemeralPubkey = ephemeralKey
}
resp, err := a.svc.ArkServiceRegisterInputsForNextRound(
ark_service.NewArkServiceRegisterInputsForNextRoundParams().WithBody(body),
)
if err != nil {
return "", err
}
return resp.Payload.ID, nil
}
func (a *restClient) RegisterOutputsForNextRound(
ctx context.Context, paymentID string, outputs []client.Output,
) error {
@@ -518,6 +536,33 @@ func (a *restClient) ListVtxos(
return spendableVtxos, spentVtxos, nil
}
func (a *restClient) SetNostrRecipient(
ctx context.Context, nostrRecipient string, vtxos []client.SignedVtxoOutpoint,
) error {
body := models.V1SetNostrRecipientRequest{
NostrRecipient: nostrRecipient,
Vtxos: toSignedVtxoModel(vtxos),
}
_, err := a.svc.ArkServiceSetNostrRecipient(
ark_service.NewArkServiceSetNostrRecipientParams().WithBody(&body),
)
return err
}
func (a *restClient) DeleteNostrRecipient(
ctx context.Context, vtxos []client.SignedVtxoOutpoint,
) error {
body := models.V1DeleteNostrRecipientRequest{
Vtxos: toSignedVtxoModel(vtxos),
}
_, err := a.svc.ArkServiceDeleteNostrRecipient(
ark_service.NewArkServiceDeleteNostrRecipientParams().WithBody(&body),
)
return err
}
func (c *restClient) Close() {}
func newRestClient(
@@ -730,3 +775,21 @@ func vtxosFromRest(restVtxos []*models.V1Vtxo) []client.Vtxo {
}
return vtxos
}
func toSignedVtxoModel(vtxos []client.SignedVtxoOutpoint) []*models.V1SignedVtxoOutpoint {
signedVtxos := make([]*models.V1SignedVtxoOutpoint, 0, len(vtxos))
for _, v := range vtxos {
signedVtxos = append(signedVtxos, &models.V1SignedVtxoOutpoint{
Outpoint: &models.V1Outpoint{
Txid: v.Outpoint.Txid,
Vout: int64(v.Outpoint.VOut),
},
Proof: &models.V1OwnershipProof{
ControlBlock: v.Proof.ControlBlock,
Script: v.Proof.Script,
Signature: v.Proof.Signature,
},
})
}
return signedVtxos
}