Skip to content

Commit 08cf501

Browse files
Adding events through logger
Signed-off-by: Alexandros Filios <alexandros.filios@ibm.com>
1 parent 6e01ecb commit 08cf501

File tree

31 files changed

+279
-532
lines changed

31 files changed

+279
-532
lines changed

integration/token/fungible/views/balance.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx/multisig"
1818
token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token"
1919
"github.com/pkg/errors"
20-
"go.opentelemetry.io/otel/trace"
2120
)
2221

2322
type BalanceQuery struct {
@@ -38,17 +37,13 @@ type BalanceView struct {
3837
}
3938

4039
func (b *BalanceView) Call(context view.Context) (interface{}, error) {
41-
span := trace.SpanFromContext(context.Context())
42-
defer span.AddEvent("end_balance_view")
43-
span.AddEvent("start_balance_view")
4440
tms := token.GetManagementService(context, ServiceOpts(b.TMSID)...)
4541
wallet := tms.WalletManager().OwnerWallet(context.Context(), b.Wallet)
4642
if wallet == nil {
4743
return nil, fmt.Errorf("wallet %s not found", b.Wallet)
4844
}
4945

50-
span.AddEvent("start_sum_calculation_unspent")
51-
unspentTokens, err := wallet.ListUnspentTokensIterator(token.WithType(b.Type))
46+
unspentTokens, err := wallet.ListUnspentTokensIterator(token.WithType(b.Type), token.WithContext(context.Context()))
5247
if err != nil {
5348
return nil, errors.Wrapf(err, "failed listing unspent tokens")
5449
}
@@ -57,7 +52,6 @@ func (b *BalanceView) Call(context view.Context) (interface{}, error) {
5752
if err != nil {
5853
return nil, err
5954
}
60-
span.AddEvent("end_sum_calculation_unspent")
6155

6256
// co-owned
6357
multisigWallet := multisig.Wallet(context, wallet)
@@ -67,12 +61,10 @@ func (b *BalanceView) Call(context view.Context) (interface{}, error) {
6761
assert.NoError(err, "failed to compute the sum of the co-owned tokens")
6862

6963
if !b.SkipCheck {
70-
span.AddEvent("start_sum_calculation")
7164
balance, err := wallet.Balance(context.Context(), token.WithType(b.Type))
7265
if err != nil {
7366
return nil, err
7467
}
75-
span.AddEvent("end_sum_calculation")
7668
if sum.ToBigInt().Uint64() != balance {
7769
return nil, errors.Errorf("balance doesn't match [%d]!=[%d]", balance, sum.ToBigInt().Uint64())
7870
}

integration/token/fungible/views/transfer.go

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
token2 "github.com/hyperledger-labs/fabric-token-sdk/token"
2020
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx"
2121
"github.com/hyperledger-labs/fabric-token-sdk/token/token"
22-
"go.opentelemetry.io/otel/trace"
2322
)
2423

2524
// TransferAction defines a transfer action
@@ -76,19 +75,16 @@ type TransferView struct {
7675
}
7776

7877
func (t *TransferView) Call(context view.Context) (txID interface{}, err error) {
79-
span := trace.SpanFromContext(context.Context())
8078

8179
// As a first step operation, the sender contacts the recipient's FSC node
8280
// to ask for the identity to use to assign ownership of the freshly created token.
8381
// Notice that, this step would not be required if the sender knew already which
8482
// identity the recipient wants to use.
8583
// If t.RecipientData is different from nil, then this recipient data will be advertised to the recipient
8684
// to make sure the recipient is aware of this identity the will be used to transfer tokens to
87-
span.AddEvent("receive_recipient_identity")
8885
recipient, err := ttx.RequestRecipientIdentity(context, t.Recipient, ServiceOpts(t.TMSID, ttx.WithRecipientData(t.RecipientData), ttx.WithRecipientWalletID(t.RecipientWalletID))...)
8986
assert.NoError(err, "failed getting recipient")
9087

91-
span.AddEvent("add_additional_recipients")
9288
wm := token2.GetManagementService(context, ServiceOpts(t.TMSID)...).WalletManager()
9389
// if there are more recipients, ask for their recipient identity
9490
var additionalRecipients []view.Identity
@@ -111,7 +107,7 @@ func (t *TransferView) Call(context view.Context) (txID interface{}, err error)
111107
// and specify the auditor that must be contacted to approve the operation.
112108
var tx *ttx.Transaction
113109
txOpts := TxOpts(t.TMSID, ttx.WithAuditor(view2.GetIdentityProvider(context).Identity(t.Auditor)))
114-
span.AddEvent("create_transfer")
110+
logger.DebugfContext(context.Context(), "Create transfer")
115111
if !t.NotAnonymous {
116112
// create an anonymous transaction (this means that the resulting Fabric transaction will be signed using idemix, for example),
117113
tx, err = ttx.NewAnonymousTransaction(context, txOpts...)
@@ -139,7 +135,7 @@ func (t *TransferView) Call(context view.Context) (txID interface{}, err error)
139135
// selector.Select(wallet, amount, tokenType)
140136
// It is also possible to pass a custom token selector to the Transfer function by using the relative opt:
141137
// token2.WithTokenSelector(selector).
142-
span.AddEvent("append_transfer")
138+
logger.DebugfContext(context.Context(), "Append transfer")
143139
err = tx.Transfer(
144140
senderWallet,
145141
t.Type,
@@ -151,7 +147,7 @@ func (t *TransferView) Call(context view.Context) (txID interface{}, err error)
151147
assert.NoError(err, "failed adding transfer action [%d:%s]", t.Amount, t.Recipient)
152148

153149
// add additional transfers
154-
span.AddEvent("add_additional_transfers")
150+
logger.DebugfContext(context.Context(), "Append additional actions")
155151
for i, action := range t.TransferAction {
156152
err = tx.Transfer(
157153
senderWallet,
@@ -184,26 +180,24 @@ func (t *TransferView) Call(context view.Context) (txID interface{}, err error)
184180
stream := view4.GetStream(context)
185181
endorserOpts = append(endorserOpts, ttx.WithExternalWalletSigner(t.Wallet, ttx.NewStreamExternalWalletSignerServer(stream)))
186182
}
187-
span.AddEvent("collect_endorsements")
183+
188184
_, err = context.RunView(ttx.NewCollectEndorsementsView(tx, endorserOpts...))
189185
assert.NoError(err, "failed to sign transaction [<<<%s>>>]", tx.ID())
190186

191187
// Sanity checks:
192188
// - the transaction is in pending state
193-
span.AddEvent("verify_owner")
189+
logger.DebugfContext(context.Context(), "Verify owner")
194190
owner := ttx.NewOwner(context, tx.TokenService())
195191
vc, _, err := owner.GetStatus(context.Context(), tx.ID())
196192
assert.NoError(err, "failed to retrieve status for transaction [%s]", tx.ID())
197193
assert.Equal(ttx.Pending, vc, "transaction [%s] should be in busy state", tx.ID())
198194

199195
// Send to the ordering service and wait for finality
200-
span.AddEvent("ask_ordering_finality")
201196
_, err = context.RunView(ttx.NewOrderingAndFinalityView(tx))
202197
assert.NoError(err, "failed asking ordering")
203198

204199
// Sanity checks:
205200
// - the transaction is in confirmed state
206-
span.AddEvent("verify_tx_status")
207201
vc, _, err = owner.GetStatus(context.Context(), tx.ID())
208202
assert.NoError(err, "failed to retrieve status for transaction [%s]", tx.ID())
209203
assert.Equal(ttx.Confirmed, vc, "transaction [%s] should be in valid state", tx.ID())

integration/token/fungible/views/upgrade.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
"github.com/hyperledger-labs/fabric-token-sdk/token/services/tokens"
1919
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx"
2020
token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token"
21-
"go.opentelemetry.io/otel/trace"
2221
)
2322

2423
type TokensUpgrade struct {
@@ -41,8 +40,6 @@ type TokensUpgradeInitiatorView struct {
4140
}
4241

4342
func (i *TokensUpgradeInitiatorView) Call(context view.Context) (interface{}, error) {
44-
span := trace.SpanFromContext(context.Context())
45-
4643
// First, the initiator selects the tokens to upgrade, namely those that are unsupported.
4744
tms := token.GetManagementService(context, token.WithTMSID(i.TMSID))
4845
assert.NotNil(tms, "failed getting token management service for [%s]", i.TMSID)
@@ -66,7 +63,6 @@ func (i *TokensUpgradeInitiatorView) Call(context view.Context) (interface{}, er
6663
// First register it locally
6764
assert.NoError(w.RegisterRecipient(context.Context(), i.RecipientData), "failed to register remote recipient")
6865
// Then request upgrade
69-
span.AddEvent("request_upgrade_for_recipient")
7066
id, session, err = ttx.RequestTokensUpgradeForRecipient(
7167
context,
7268
view.Identity(i.Issuer),
@@ -77,7 +73,6 @@ func (i *TokensUpgradeInitiatorView) Call(context view.Context) (interface{}, er
7773
token.WithTMSID(tms.ID()),
7874
)
7975
} else {
80-
span.AddEvent("request_upgrade")
8176
id, session, err = ttx.RequestTokensUpgrade(
8277
context,
8378
view.Identity(i.Issuer),
@@ -96,8 +91,6 @@ func (i *TokensUpgradeInitiatorView) Call(context view.Context) (interface{}, er
9691
// This is a trick to the reuse the same API independently of the role a party plays.
9792
return context.RunView(nil, view.AsResponder(session), view.WithViewCall(
9893
func(context view.Context) (interface{}, error) {
99-
span := trace.SpanFromContext(context.Context())
100-
10194
// At some point, the recipient receives the token transaction that in the meantime has been assembled
10295
tx, err := ttx.ReceiveTransaction(context)
10396
assert.NoError(err, "failed to receive tokens")
@@ -116,12 +109,10 @@ func (i *TokensUpgradeInitiatorView) Call(context view.Context) (interface{}, er
116109
// If everything is fine, the recipient accepts and sends back her signature.
117110
// Notice that, a signature from the recipient might or might not be required to make the transaction valid.
118111
// This depends on the driver implementation.
119-
span.AddEvent("accept_upgrade")
120112
_, err = context.RunView(ttx.NewAcceptView(tx))
121113
assert.NoError(err, "failed to accept new tokens")
122114

123115
// Before completing, the recipient waits for finality of the transaction
124-
span.AddEvent("ask_for_finality")
125116
_, err = context.RunView(ttx.NewFinalityView(tx, ttx.WithTimeout(1*time.Minute)))
126117
assert.NoError(err, "new tokens were not committed")
127118

integration/token/fungible/views/withdraw.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616
"github.com/hyperledger-labs/fabric-token-sdk/token"
1717
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx"
1818
token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token"
19-
"go.opentelemetry.io/otel/trace"
2019
)
2120

2221
type Withdrawal struct {
@@ -41,8 +40,6 @@ type WithdrawalInitiatorView struct {
4140
}
4241

4342
func (i *WithdrawalInitiatorView) Call(context view.Context) (interface{}, error) {
44-
span := trace.SpanFromContext(context.Context())
45-
4643
// First the initiator send a withdrawal request to the issuer.
4744
// If the initiator has already some recipient data, it uses that directly
4845
var id view.Identity
@@ -55,10 +52,8 @@ func (i *WithdrawalInitiatorView) Call(context view.Context) (interface{}, error
5552
assert.NotNil(w, "cannot find wallet [%s:%s]", i.TMSID, i.Wallet)
5653
assert.NoError(w.RegisterRecipient(context.Context(), i.RecipientData), "failed to register remote recipient")
5754
// Then request withdrawal
58-
span.AddEvent("request_withdrawal_for_recipient")
5955
id, session, err = ttx.RequestWithdrawalForRecipient(context, view.Identity(i.Issuer), i.Wallet, i.TokenType, i.Amount, i.NotAnonymous, i.RecipientData, token.WithTMSID(i.TMSID))
6056
} else {
61-
span.AddEvent("request_withdrawal")
6257
id, session, err = ttx.RequestWithdrawal(context, view.Identity(i.Issuer), i.Wallet, i.TokenType, i.Amount, i.NotAnonymous, token.WithTMSID(i.TMSID))
6358
}
6459
// Request withdrawal
@@ -69,8 +64,6 @@ func (i *WithdrawalInitiatorView) Call(context view.Context) (interface{}, error
6964
// This is a trick to the reuse the same API independently of the role a party plays.
7065
return context.RunView(nil, view.AsResponder(session), view.WithViewCall(
7166
func(context view.Context) (interface{}, error) {
72-
span := trace.SpanFromContext(context.Context())
73-
7467
// At some point, the recipient receives the token transaction that in the meantime has been assembled
7568
tx, err := ttx.ReceiveTransaction(context)
7669
assert.NoError(err, "failed to receive tokens")
@@ -88,12 +81,10 @@ func (i *WithdrawalInitiatorView) Call(context view.Context) (interface{}, error
8881
// If everything is fine, the recipient accepts and sends back her signature.
8982
// Notice that, a signature from the recipient might or might not be required to make the transaction valid.
9083
// This depends on the driver implementation.
91-
span.AddEvent("accept_withdrawal")
9284
_, err = context.RunView(ttx.NewAcceptView(tx))
9385
assert.NoError(err, "failed to accept new tokens")
9486

9587
// Before completing, the recipient waits for finality of the transaction
96-
span.AddEvent("ask_for_finality")
9788
_, err = context.RunView(ttx.NewFinalityView(tx, ttx.WithTimeout(1*time.Minute)))
9889
assert.NoError(err, "new tokens were not committed")
9990

token/core/common/loaders.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import (
1717
"go.opentelemetry.io/otel/trace"
1818
)
1919

20+
var logger = logging.MustGetLogger()
21+
2022
type TokenVault interface {
2123
IsPending(ctx context.Context, id *token.ID) (bool, error)
2224
GetTokenOutputsAndMeta(ctx context.Context, ids []*token.ID) ([][]byte, [][]byte, []token.Format, error)
@@ -66,13 +68,8 @@ func NewLedgerTokenLoader[T any](logger logging.Logger, _ trace.TracerProvider,
6668

6769
// GetTokenOutputs takes an array of token identifiers (txID, index) and returns the corresponding token outputs
6870
func (s *VaultLedgerTokenLoader[T]) GetTokenOutputs(ctx context.Context, ids []*token.ID) (map[string]T, error) {
69-
span := trace.SpanFromContext(ctx)
70-
span.AddEvent("start_get_token_outputs")
71-
defer span.AddEvent("end_get_token_outputs")
72-
7371
var err error
7472
for i := 0; i < s.NumRetries; i++ {
75-
span.AddEvent("try_fetch")
7673
tokens := make(map[string]T, len(ids))
7774
counter := 0
7875
err = s.TokenVault.GetTokenOutputs(ctx, ids, func(id *token.ID, bytes []byte) error {
@@ -95,7 +92,6 @@ func (s *VaultLedgerTokenLoader[T]) GetTokenOutputs(ctx context.Context, ids []*
9592

9693
// check if there is any token id whose corresponding transaction is pending
9794
// if there is, then wait a bit and retry to load the outputs
98-
span.AddEvent("check_any_pending")
9995
anyPending, anyError := s.isAnyPending(ctx, ids...)
10096
if anyError != nil {
10197
err = anyError
@@ -144,14 +140,13 @@ func NewVaultLedgerTokenAndMetadataLoader[T any, M any](tokenVault TokenVault, d
144140
// tokens in clear text and the identities of their owners
145141
// LoadToken returns an error in case of failure
146142
func (s *VaultLedgerTokenAndMetadataLoader[T, M]) LoadTokens(ctx context.Context, ids []*token.ID) ([]LoadedToken[T, M], error) {
147-
span := trace.SpanFromContext(ctx)
148143
// return token outputs and the corresponding opening
149144
outputs, metadata, types, err := s.TokenVault.GetTokenOutputsAndMeta(ctx, ids)
150145
if err != nil {
151146
return nil, err
152147
}
153148

154-
span.AddEvent("iterate_tokens")
149+
logger.DebugfContext(ctx, "Deserialize %d tokens", len(ids))
155150
result := make([]LoadedToken[T, M], len(ids))
156151
for i, id := range ids {
157152
if len(outputs[i]) == 0 {
@@ -160,12 +155,10 @@ func (s *VaultLedgerTokenAndMetadataLoader[T, M]) LoadTokens(ctx context.Context
160155
if len(metadata[i]) == 0 {
161156
return nil, errors.Errorf("failed getting state for id [%v], nil info value", id)
162157
}
163-
span.AddEvent("deserialize_token")
164158
tok, err := s.Deserializer.DeserializeToken(outputs[i])
165159
if err != nil {
166160
return nil, errors.Wrapf(err, "failed deserializing token for id [%v][%s]", id, string(outputs[i]))
167161
}
168-
span.AddEvent("deserialize_metadata")
169162
meta, err := s.Deserializer.DeserializeMetadata(metadata[i])
170163
if err != nil {
171164
return nil, errors.Wrapf(err, "failed deserializeing token info for id [%v]", id)

token/core/common/validator.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ func NewValidator[P driver.PublicParameters, T any, TA driver.TransferAction, IA
8383
}
8484

8585
func (v *Validator[P, T, TA, IA, DS]) VerifyTokenRequestFromRaw(ctx context.Context, getState driver.GetStateFnc, anchor string, raw []byte) ([]interface{}, driver.ValidationAttributes, error) {
86+
logger.DebugfContext(ctx, "Verify token request from raw")
8687
if len(raw) == 0 {
8788
return nil, nil, errors.New("empty token request")
8889
}

token/core/zkatdlog/nogh/v1/audit/auditor.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,17 +140,14 @@ func (a *Auditor) Check(
140140
txID string,
141141
) error {
142142
// TODO: inputTokens should be checked against the actions
143-
span := trace.SpanFromContext(ctx)
144-
span.AddEvent("start_check")
145-
defer span.AddEvent("end_check")
146143
// De-obfuscate issue requests
147-
span.AddEvent("get_issue_audit_info")
144+
a.Logger.DebugfContext(ctx, "Get audit info for %d issues", len(tokenRequest.Issues))
148145
outputsFromIssue, identitiesFromIssue, err := a.GetAuditInfoForIssues(tokenRequest.Issues, tokenRequestMetadata.Issues)
149146
if err != nil {
150147
return errors.Wrapf(err, "failed getting audit info for issues for [%s]", txID)
151148
}
152149
// check validity of issue requests
153-
span.AddEvent("check_issue_requests")
150+
a.Logger.DebugfContext(ctx, "Check %d issue outputs", len(outputsFromIssue))
154151
err = a.CheckIssueRequests(outputsFromIssue, txID)
155152
if err != nil {
156153
return errors.Wrapf(err, "failed checking issues for [%s]", txID)
@@ -162,13 +159,13 @@ func (a *Auditor) Check(
162159
}
163160
}
164161
// De-obfuscate transfer requests
165-
span.AddEvent("get_transfer_audit_info")
162+
a.Logger.DebugfContext(ctx, "Get audit info for %d transfers", len(tokenRequest.Transfers))
166163
auditableInputs, outputsFromTransfer, err := a.GetAuditInfoForTransfers(tokenRequest.Transfers, tokenRequestMetadata.Transfers, inputTokens)
167164
if err != nil {
168165
return errors.Wrapf(err, "failed getting audit info for transfers for [%s]", txID)
169166
}
170167
// check validity of transfer requests
171-
span.AddEvent("check_transfer_requests")
168+
a.Logger.DebugfContext(ctx, "Check %d transfer outputs", len(outputsFromTransfer))
172169
if err := a.CheckTransferRequests(auditableInputs, outputsFromTransfer, txID); err != nil {
173170
return errors.Wrapf(err, "failed checking transfers [%s]", txID)
174171
}

token/core/zkatdlog/nogh/v1/auditor.go

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,7 @@ func NewAuditorService(
5656

5757
// AuditorCheck verifies if the passed tokenRequest matches the tokenRequestMetadata
5858
func (s *AuditorService) AuditorCheck(ctx context.Context, request *driver.TokenRequest, metadata *driver.TokenRequestMetadata, txID string) error {
59-
span := trace.SpanFromContext(ctx)
60-
span.AddEvent("start_auditor_check")
61-
defer span.AddEvent("end_auditor_check")
62-
s.Logger.Debugf("[%s] check token request validity, number of transfer actions [%d]...", txID, len(metadata.Transfers))
59+
s.Logger.DebugfContext(ctx, "[%s] check token request validity, number of transfer actions [%d]...", txID, len(metadata.Transfers))
6360

6461
actionDes := &validator.ActionDeserializer{
6562
PublicParams: s.PublicParametersManager.PublicParams(ctx),
@@ -75,17 +72,16 @@ func (s *AuditorService) AuditorCheck(ctx context.Context, request *driver.Token
7572
tokenIDs = append(tokenIDs, transfer.TokenIDs()...)
7673
}
7774

78-
span.AddEvent("load_token_outputs")
7975
// tokenMap, err := s.TokenCommitmentLoader.GetTokenOutputs(ctx, tokenIDs)
8076
// if err != nil {
8177
// return errors.Wrapf(err, "failed getting token outputs to perform auditor check")
8278
// }
83-
s.Logger.Debugf("loaded [%d] corresponding inputs for TX [%s]", len(tokenIDs), txID)
79+
s.Logger.DebugfContext(ctx, "loaded [%d] corresponding inputs for TX [%s]", len(tokenIDs), txID)
8480

8581
inputTokens := make([][]*token.Token, len(metadata.Transfers))
8682
for i, transfer := range transfers {
8783
if err := transfer.Validate(); err != nil {
88-
span.AddEvent("failed_to_validate_transfer")
84+
s.Logger.ErrorfContext(ctx, "failed to validate transfer: %v", err)
8985
return errors.Wrapf(err, "failed to validate transfer")
9086
}
9187
inputTokens[i] = make([]*token.Token, len(transfer.Inputs))
@@ -94,11 +90,9 @@ func (s *AuditorService) AuditorCheck(ctx context.Context, request *driver.Token
9490
}
9591
}
9692

97-
span.AddEvent("load_public_params")
9893
pp := s.PublicParametersManager.PublicParams(ctx)
99-
span.AddEvent("create_new_auditor")
10094
auditor := audit.NewAuditor(s.Logger, s.tracer, s.Deserializer, pp.PedersenGenerators, nil, math.Curves[pp.Curve])
101-
span.AddEvent("start_auditor_check")
95+
s.Logger.DebugfContext(ctx, "Start auditor check")
10296
err = auditor.Check(
10397
ctx,
10498
request,

0 commit comments

Comments
 (0)