Skip to content

Commit dc294c3

Browse files
committed
More byte strings
1 parent bf8270f commit dc294c3

File tree

8 files changed

+30
-25
lines changed

8 files changed

+30
-25
lines changed

registry/registry_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ func TestRegistryClient_ListOwnRegistryEntries(t *testing.T) {
339339
Outputs: []wallet.Output{
340340
{
341341
Satoshis: 1000,
342-
LockingScript: lockingScript.String(),
342+
LockingScript: lockingScript.Bytes(),
343343
Spendable: true,
344344
Outpoint: wallet.Outpoint{Txid: *tx.TxID()},
345345
Tags: []string{"registry", "basket"},
@@ -458,12 +458,14 @@ func TestRegistryClient_RevokeOwnRegistryEntry(t *testing.T) {
458458
// This is necessary to pass the ownership check in RevokeOwnRegistryEntry
459459
outpoint := tu.OutpointFromString(t, "a755810c21e17183ff6db6685f0de239fd3a0a3c0d4ba7773b0b0d1748541e2b.0")
460460

461+
lockScript, err := script.NewFromASM("OP_FALSE OP_RETURN 74657374 626173686b65745f6964 54657374204261736b6574 68747470733a2f2f6578616d706c652e636f6d2f69636f6e2e706e67 54657374206261736b6574206465736372697074696f6e 68747470733a2f2f6578616d706c652e636f6d2f646f6373 " + operatorPubKeyHex)
462+
require.NoError(t, err, "Failed to create locking script from ASM")
461463
mockRegistry.ListOutputsResultToReturn = &wallet.ListOutputsResult{
462464
TotalOutputs: 1,
463465
Outputs: []wallet.Output{
464466
{
465467
Satoshis: 1000,
466-
LockingScript: "OP_FALSE OP_RETURN 74657374 626173686b65745f6964 54657374204261736b6574 68747470733a2f2f6578616d706c652e636f6d2f69636f6e2e706e67 54657374206261736b6574206465736372697074696f6e 68747470733a2f2f6578616d706c652e636f6d2f646f6373 " + operatorPubKeyHex,
468+
LockingScript: lockScript.Bytes(),
467469
Spendable: true,
468470
Outpoint: *outpoint,
469471
Tags: []string{"registry", "basket"},
@@ -576,7 +578,7 @@ func TestRegistryClient_ListOwnRegistryEntries_PushDropParity(t *testing.T) {
576578
Outputs: []wallet.Output{
577579
{
578580
Satoshis: 1000,
579-
LockingScript: lockingScript.String(),
581+
LockingScript: lockingScript.Bytes(),
580582
Spendable: true,
581583
Outpoint: *tu.OutpointFromString(t, "a755810c21e17183ff6db6685f0de239fd3a0a3c0d4ba7773b0b0d1748541e2b.0"),
582584
Tags: []string{"registry", "basket"},

wallet/interfaces.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -316,13 +316,13 @@ type ListOutputsArgs struct {
316316

317317
// Output represents a wallet UTXO with its metadata
318318
type Output struct {
319-
Satoshis uint64 `json:"satoshis"`
320-
LockingScript string `json:"lockingScript,omitempty"` // Hex encoded
321-
Spendable bool `json:"spendable"`
322-
CustomInstructions string `json:"customInstructions,omitempty"`
323-
Tags []string `json:"tags,omitempty"`
324-
Outpoint Outpoint `json:"outpoint"` // Format: "txid.index"
325-
Labels []string `json:"labels,omitempty"`
319+
Satoshis uint64 `json:"satoshis"`
320+
LockingScript JSONByteHex `json:"lockingScript,omitempty"` // Hex encoded
321+
Spendable bool `json:"spendable"`
322+
CustomInstructions string `json:"customInstructions,omitempty"`
323+
Tags []string `json:"tags,omitempty"`
324+
Outpoint Outpoint `json:"outpoint"` // Format: "txid.index"
325+
Labels []string `json:"labels,omitempty"`
326326
}
327327

328328
// ListOutputsResult contains a paginated list of wallet outputs matching the query.
@@ -609,7 +609,7 @@ func AcquisitionProtocolFromString(s string) (AcquisitionProtocol, error) {
609609
const KeyringRevealerCertifier = "certifier"
610610

611611
type AcquireCertificateArgs struct {
612-
Type string `json:"type"`
612+
Type Base64Bytes32 `json:"type"`
613613
Certifier HexBytes33 `json:"certifier"`
614614
AcquisitionProtocol AcquisitionProtocol `json:"acquisitionProtocol"` // "direct" | "issuance"
615615
Fields map[string]string `json:"fields,omitempty"`

wallet/serializer/acquire_certificate.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ func SerializeAcquireCertificateArgs(args *wallet.AcquireCertificateArgs) ([]byt
1919
w := util.NewWriter()
2020

2121
// Encode type (base64)
22-
if err := w.WriteSizeFromBase64(args.Type, sizeType); err != nil {
23-
return nil, fmt.Errorf("invalid type base64: %w", err)
24-
}
22+
w.WriteBytes(args.Type[:])
2523

2624
// Encode certifier (hex)
2725
if args.Certifier == [33]byte{} {
@@ -103,7 +101,7 @@ func DeserializeAcquireCertificateArgs(data []byte) (*wallet.AcquireCertificateA
103101
args := &wallet.AcquireCertificateArgs{}
104102

105103
// Read type (base64) and certifier (hex)
106-
args.Type = r.ReadBase64(sizeType)
104+
copy(args.Type[:], r.ReadBytes(sizeType))
107105
copy(args.Certifier[:], r.ReadBytes(sizeCertifier))
108106

109107
// Read fields

wallet/serializer/acquire_certificate_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func TestAcquireCertificateArgs(t *testing.T) {
1818
}{{
1919
name: "direct acquisition",
2020
args: &wallet.AcquireCertificateArgs{
21-
Type: base64.StdEncoding.EncodeToString(tu.PadOrTrim([]byte("test-type"), sizeType)),
21+
Type: tu.GetByte32FromString("test-type"),
2222
Certifier: [33]byte{1},
2323
AcquisitionProtocol: wallet.AcquisitionProtocolDirect,
2424
Fields: map[string]string{
@@ -38,7 +38,7 @@ func TestAcquireCertificateArgs(t *testing.T) {
3838
}, {
3939
name: "issuance acquisition",
4040
args: &wallet.AcquireCertificateArgs{
41-
Type: base64.StdEncoding.EncodeToString(tu.PadOrTrim([]byte("issuance-type"), sizeType)),
41+
Type: tu.GetByte32FromString("issuance-type"),
4242
Certifier: [33]byte{2},
4343
AcquisitionProtocol: wallet.AcquisitionProtocolIssuance,
4444
Fields: map[string]string{
@@ -49,7 +49,7 @@ func TestAcquireCertificateArgs(t *testing.T) {
4949
}, {
5050
name: "minimal args",
5151
args: &wallet.AcquireCertificateArgs{
52-
Type: base64.StdEncoding.EncodeToString(tu.PadOrTrim([]byte("minimal"), sizeType)),
52+
Type: tu.GetByte32FromString("minimal"),
5353
Certifier: [33]byte{3},
5454
AcquisitionProtocol: wallet.AcquisitionProtocolDirect,
5555
SerialNumber: [32]byte{3},

wallet/serializer/list_outputs.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func SerializeListOutputsResult(result *wallet.ListOutputsResult) ([]byte, error
8787
for _, output := range result.Outputs {
8888
// Serialize each output
8989
w.WriteVarInt(output.Satoshis)
90-
w.WriteOptionalString(output.LockingScript)
90+
w.WriteIntBytes(output.LockingScript)
9191
w.WriteOptionalBool(&output.Spendable)
9292
w.WriteOptionalString(output.CustomInstructions)
9393
w.WriteStringSlice(output.Tags)
@@ -116,7 +116,7 @@ func DeserializeListOutputsResult(data []byte) (*wallet.ListOutputsResult, error
116116
for i := uint64(0); i < outputCount; i++ {
117117
output := wallet.Output{
118118
Satoshis: r.ReadVarInt(),
119-
LockingScript: r.ReadString(),
119+
LockingScript: r.ReadIntBytes(),
120120
Spendable: *r.ReadOptionalBool(),
121121
CustomInstructions: r.ReadString(),
122122
Tags: r.ReadStringSlice(),

wallet/serializer/list_outputs_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package serializer
22

33
import (
4+
"github.com/bsv-blockchain/go-sdk/script"
45
"github.com/bsv-blockchain/go-sdk/util"
56
tu "github.com/bsv-blockchain/go-sdk/util/test_util"
67
"github.com/bsv-blockchain/go-sdk/wallet"
@@ -54,14 +55,18 @@ func TestListOutputsArgs(t *testing.T) {
5455
}
5556

5657
func TestListOutputsResult(t *testing.T) {
58+
script1, err := script.NewFromHex("76a9143cf53c49c322d9d811728182939aee2dca087f9888ac")
59+
require.NoError(t, err)
60+
script2, err := script.NewFromHex("76a9143cf53c49c322d9d811728182939aee2dca087f9888ad")
61+
require.NoError(t, err)
5762
t.Run("with BEEF and outputs", func(t *testing.T) {
5863
result := &wallet.ListOutputsResult{
5964
TotalOutputs: 2,
6065
BEEF: []byte{1, 2, 3, 4},
6166
Outputs: []wallet.Output{
6267
{
6368
Satoshis: 1000,
64-
LockingScript: "76a9143cf53c49c322d9d811728182939aee2dca087f9888ac",
69+
LockingScript: script1.Bytes(),
6570
Spendable: true,
6671
CustomInstructions: "instructions",
6772
Tags: []string{"tag1"},
@@ -70,7 +75,7 @@ func TestListOutputsResult(t *testing.T) {
7075
},
7176
{
7277
Satoshis: 2000,
73-
LockingScript: "76a9143cf53c49c322d9d811728182939aee2dca087f9888ad",
78+
LockingScript: script2.Bytes(),
7479
Spendable: false,
7580
Outpoint: *tu.OutpointFromString(t, "abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234.1"),
7681
},

wallet/substrates/http_wallet_json_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@ func TestHTTPWalletJSON_CertificateOperations(t *testing.T) {
453453
var args wallet.AcquireCertificateArgs
454454
err := json.NewDecoder(r.Body).Decode(&args)
455455
require.NoError(t, err)
456-
require.Equal(t, "test-type", args.Type)
456+
require.Equal(t, typeTest, args.Type)
457457
require.Equal(t, certifier, args.Certifier)
458458

459459
cert := wallet.Certificate{
@@ -466,7 +466,7 @@ func TestHTTPWalletJSON_CertificateOperations(t *testing.T) {
466466

467467
client := NewHTTPWalletJSON("", ts.URL, nil)
468468
cert, err := client.AcquireCertificate(t.Context(), &wallet.AcquireCertificateArgs{
469-
Type: "test-type",
469+
Type: typeTest,
470470
Certifier: certifier,
471471
})
472472
require.NoError(t, err)

wallet/substrates/vector_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ func TestVectors(t *testing.T) {
435435
}, {
436436
Filename: "acquireCertificate-simple-args",
437437
Object: wallet.AcquireCertificateArgs{
438-
Type: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0LXR5cGU=",
438+
Type: typeArray,
439439
Certifier: certifier,
440440
AcquisitionProtocol: wallet.AcquisitionProtocolIssuance,
441441
Fields: map[string]string{"name": "Alice", "email": "alice@example.com"},

0 commit comments

Comments
 (0)