Skip to content

Commit

Permalink
Add GetStoredTx method
Browse files Browse the repository at this point in the history
  • Loading branch information
quentinlesceller committed Jul 16, 2020
1 parent cd0c257 commit 7974f53
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 1 deletion.
46 changes: 46 additions & 0 deletions client/secure_owner_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -764,6 +764,52 @@ func (owner *SecureOwnerAPI) GetSlatepackSecretKey(derivationIndex uint32) (*str
return &slatepackSecretKey, nil
}

// GetStoredTx retrieves the stored transaction associated with a TxLogEntry. Can be used even after the transaction has completed.
// Either the Transaction Log ID or the Slate UUID must be supplied.
// If both are supplied, the Transaction Log ID is preferred.
func (owner *SecureOwnerAPI) GetStoredTx(id *uint32, slateID *uuid.UUID) (*slateversions.SlateV4, error) {
params := struct {
Token string `json:"token"`
ID *uint32 `json:"id"`
SlateID *uuid.UUID `json:"slate_id"`
}{
Token: owner.token,
ID: id,
SlateID: slateID,
}
paramsBytes, err := json.Marshal(params)
if err != nil {
return nil, err
}
envl, err := owner.client.EncryptedRequest("get_stored_tx", paramsBytes, owner.sharedSecret)
if err != nil {
return nil, err
}
if envl == nil {
return nil, errors.New("OwnerAPI: Empty RPC Response from grin-wallet")
}
if envl.Error != nil {
log.WithFields(log.Fields{
"code": envl.Error.Code,
"message": envl.Error.Message,
}).Error("OwnerAPI: RPC Error during GetStoredTx")
return nil, errors.New(string(envl.Error.Code) + "" + envl.Error.Message)
}
var result Result
if err = json.Unmarshal(envl.Result, &result); err != nil {
return nil, err
}
if result.Err != nil {
return nil, errors.New(string(result.Err))
}

var slate slateversions.SlateV4
if err := json.Unmarshal(result.Ok, &slate); err != nil {
return nil, err
}
return &slate, nil
}

// CreateSlatepackMessage create a slatepack message from the given slate
func (owner *SecureOwnerAPI) CreateSlatepackMessage(derivationIndex uint32, slate slateversions.SlateV4, senderIndex *uint32, recipients []string) (*string, error) {
params := struct {
Expand Down
12 changes: 12 additions & 0 deletions client/secure_owner_api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ func TestReal(t *testing.T) {
if err := ownerAPI.Open(nil, ""); err != nil {
assert.NoError(t, err)
}
// NodeHeight
{
nodeHeight, err := ownerAPI.NodeHeight()
Expand Down Expand Up @@ -56,7 +57,18 @@ func TestReal(t *testing.T) {
_, outputsRetrieved, err := ownerAPI.RetrieveOutputs(false, false, &txLogOwned[0].ID)
assert.NoError(t, err)
assert.NotEmpty(t, outputsRetrieved)
slate, err := ownerAPI.GetStoredTx(nil, &txSlateID)
assert.NoError(t, err)
for _, comm := range *slate.Coms {
if comm.P == nil {
fmt.Println("found input", comm.C)
}
}
spew.Dump(slate)
assert.NotEmpty(t, slate)
assert.True(t, false)
}
// GetSlatepackAddress
{
slatepackAddress, err := ownerAPI.GetSlatepackAddress(0)
Expand Down
2 changes: 1 addition & 1 deletion libwallet/slateversions/v4.go
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ type PaymentInfoV4 struct {
type CommitsV4 struct {
// Options for an output's structure or use
F OutputFeaturesV4 `json:"f"`
///The homomorphic commitment representing the output amount
// The homomorphic commitment representing the output amount
C string `json:"c"`
// A proof that the commitment is in the right range
// Only applies for transaction outputs
Expand Down

0 comments on commit 7974f53

Please sign in to comment.