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

@@ -43,6 +43,8 @@ func main() {
&sendCommand,
&balanceCommand,
&redeemCommand,
&notesCommand,
&registerNostrCommand,
)
app.Flags = []cli.Flag{
datadirFlag,
@@ -127,6 +129,16 @@ var (
Name: "force",
Usage: "force redemption without collaboration",
}
notesFlag = &cli.StringSliceFlag{
Name: "notes",
Aliases: []string{"n"},
Usage: "notes to redeem",
}
nostrProfileFlag = &cli.StringFlag{
Name: "profile",
Aliases: []string{"p"},
Usage: "nostr profile to register",
}
restFlag = &cli.BoolFlag{
Name: "rest",
Usage: "use REST client instead of gRPC",
@@ -198,6 +210,22 @@ var (
return redeem(ctx)
},
}
notesCommand = cli.Command{
Name: "redeem-notes",
Usage: "Redeem offchain notes",
Flags: []cli.Flag{notesFlag},
Action: func(ctx *cli.Context) error {
return redeemNotes(ctx)
},
}
registerNostrCommand = cli.Command{
Name: "register-nostr",
Usage: "Register Nostr profile",
Flags: []cli.Flag{nostrProfileFlag, passwordFlag},
Action: func(ctx *cli.Context) error {
return registerNostrProfile(ctx)
},
}
)
func initArkSdk(ctx *cli.Context) error {
@@ -384,6 +412,31 @@ func redeem(ctx *cli.Context) error {
})
}
func registerNostrProfile(ctx *cli.Context) error {
profile := ctx.String(nostrProfileFlag.Name)
password, err := readPassword(ctx)
if err != nil {
return err
}
if err := arkSdkClient.Unlock(ctx.Context, string(password)); err != nil {
return err
}
return arkSdkClient.SetNostrNotificationRecipient(ctx.Context, profile)
}
func redeemNotes(ctx *cli.Context) error {
notes := ctx.StringSlice(notesFlag.Name)
txID, err := arkSdkClient.RedeemNotes(ctx.Context, notes)
if err != nil {
return err
}
return printJSON(map[string]interface{}{
"txid": txID,
})
}
func getArkSdkClient(ctx *cli.Context) (arksdk.ArkClient, error) {
dataDir := ctx.String(datadirFlag.Name)
sdkRepository, err := store.NewStore(store.Config{