Skip to content

Commit 9ed8657

Browse files
authored
refactor: improve logging (#51)
* Streamline TSS constructor * Propagate logger * Propagate logger [2] * Refactor logs by using event fields * Add msg_id to logs * Minor improvements in logging * Add req.SetLogFields * Fix typo
1 parent 776a5e3 commit 9ed8657

31 files changed

+723
-333
lines changed

blame/manager.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import (
66
btss "github.com/bnb-chain/tss-lib/tss"
77
"github.com/libp2p/go-libp2p/core/peer"
88
"github.com/rs/zerolog"
9-
"github.com/rs/zerolog/log"
9+
10+
"github.com/zeta-chain/go-tss/logs"
1011
)
1112

1213
type Manager struct {
@@ -24,10 +25,11 @@ type Manager struct {
2425
localPartyID string
2526
}
2627

27-
func NewBlameManager() *Manager {
28+
func NewBlameManager(logger zerolog.Logger) *Manager {
2829
blame := NewBlame("", nil)
30+
2931
return &Manager{
30-
logger: log.With().Str("module", "blame_manager").Logger(),
32+
logger: logger.With().Str(logs.Component, "blame_manager").Logger(),
3133
partyInfo: nil,
3234
PartyIDtoP2PID: make(map[string]peer.ID),
3335
lastUnicastPeer: make(map[string][]peer.ID),

blame/policy_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
btss "github.com/bnb-chain/tss-lib/tss"
1010
"github.com/btcsuite/btcd/btcec/v2"
1111
"github.com/libp2p/go-libp2p/core/peer"
12+
"github.com/rs/zerolog"
1213
. "gopkg.in/check.v1"
1314

1415
"github.com/zeta-chain/go-tss/conversion"
@@ -40,7 +41,7 @@ type policyTestSuite struct {
4041
var _ = Suite(&policyTestSuite{})
4142

4243
func (p *policyTestSuite) SetUpTest(c *C) {
43-
p.blameMgr = NewBlameManager()
44+
p.blameMgr = NewBlameManager(zerolog.Nop())
4445
conversion.SetupBech32Prefix()
4546
p1, err := peer.Decode(testPeers[0])
4647
c.Assert(err, IsNil)

cmd/tss/main.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/cosmos/cosmos-sdk/client/input"
1414
golog "github.com/ipfs/go-log"
1515
"github.com/libp2p/go-libp2p/core/peer"
16+
zlog "github.com/rs/zerolog/log"
1617

1718
"github.com/zeta-chain/go-tss/common"
1819
"github.com/zeta-chain/go-tss/conversion"
@@ -44,6 +45,7 @@ func main() {
4445
conversion.SetupBech32Prefix()
4546
// Read stdin for the private key
4647
inBuf := bufio.NewReader(os.Stdin)
48+
4749
priKeyBytes, err := input.GetPassword("input node secret key:", inBuf)
4850
if err != nil {
4951
fmt.Printf("error in get the secret key: %s\n", err.Error())
@@ -53,17 +55,23 @@ func main() {
5355
if err != nil {
5456
log.Fatal(err)
5557
}
58+
59+
networkConfig := tss.NetworkConfig{
60+
TssConfig: tssConf,
61+
BootstrapPeers: p2pConf.BootstrapPeers,
62+
ExternalIP: p2pConf.ExternalIP,
63+
Port: p2pConf.Port,
64+
WhitelistedPeers: []peer.ID{},
65+
}
66+
5667
// init tss module
5768
tss, err := tss.New(
58-
p2pConf.BootstrapPeers,
59-
p2pConf.Port,
60-
priKey,
69+
networkConfig,
6170
baseFolder,
62-
tssConf,
63-
nil,
64-
p2pConf.ExternalIP,
71+
priKey,
6572
os.Getenv("PASSWORD"),
66-
[]peer.ID{},
73+
nil,
74+
zlog.Logger,
6775
)
6876
if nil != err {
6977
log.Fatal(err)

cmd/tss/tss_http.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -129,36 +129,36 @@ func (t *HTTPServer) keySignHandler(w http.ResponseWriter, r *http.Request) {
129129
w.WriteHeader(http.StatusMethodNotAllowed)
130130
return
131131
}
132+
132133
defer func() {
133134
if err := r.Body.Close(); nil != err {
134135
t.logger.Error().Err(err).Msg("fail to close request body")
135136
}
136137
}()
137-
t.logger.Info().Msg("receive key sign request")
138138

139139
var keySignReq keysign.Request
140-
decoder := json.NewDecoder(r.Body)
141-
if err := decoder.Decode(&keySignReq); nil != err {
140+
141+
if err := json.NewDecoder(r.Body).Decode(&keySignReq); nil != err {
142142
t.logger.Error().Err(err).Msg("fail to decode key sign request")
143143
w.WriteHeader(http.StatusBadRequest)
144144
return
145145
}
146-
t.logger.Info().Msgf("request:%+v", keySignReq)
146+
147147
signResp, err := t.tssServer.KeySign(keySignReq)
148148
if err != nil {
149149
t.logger.Error().Err(err).Msg("fail to key sign")
150150
w.WriteHeader(http.StatusInternalServerError)
151151
return
152152
}
153153

154-
jsonResult, err := json.MarshalIndent(signResp, "", " ")
154+
jsonResult, err := json.MarshalIndent(signResp, "", " ")
155155
if err != nil {
156156
t.logger.Error().Err(err).Msg("fail to marshal response to json message")
157157
w.WriteHeader(http.StatusInternalServerError)
158158
return
159159
}
160-
_, err = w.Write(jsonResult)
161-
if err != nil {
160+
161+
if _, err = w.Write(jsonResult); err != nil {
162162
t.logger.Error().Err(err).Msg("fail to write response")
163163
}
164164
}

common/tss.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"github.com/cometbft/cometbft/crypto/secp256k1"
1414
"github.com/libp2p/go-libp2p/core/peer"
1515
"github.com/rs/zerolog"
16-
"github.com/rs/zerolog/log"
1716

1817
"github.com/zeta-chain/go-tss/blame"
1918
"github.com/zeta-chain/go-tss/conversion"
@@ -60,10 +59,11 @@ func NewTssCommon(
6059
msgID string,
6160
privKey tcrypto.PrivKey,
6261
msgNum int,
62+
logger zerolog.Logger,
6363
) *TssCommon {
6464
return &TssCommon{
6565
conf: conf,
66-
logger: log.With().Str("module", "tsscommon").Logger(),
66+
logger: logger,
6767
partyLock: &sync.Mutex{},
6868
partyInfo: nil,
6969
PartyIDtoP2PID: make(map[string]peer.ID),
@@ -77,7 +77,7 @@ func NewTssCommon(
7777
localPeerID: peerID,
7878
privateKey: privKey,
7979
taskDone: make(chan struct{}),
80-
blameMgr: blame.NewBlameManager(),
80+
blameMgr: blame.NewBlameManager(logger),
8181
finishedPeers: make(map[string]bool),
8282
culpritsLock: &sync.RWMutex{},
8383
cachedWireBroadcastMsgLists: &sync.Map{},
@@ -139,7 +139,7 @@ func (t *TssCommon) doTssJob(tssJobChan chan *tssJob, jobWg *sync.WaitGroup) {
139139
_, errUp := party.UpdateFromBytes(wireBytes, partyID, isBroadcast)
140140
if errUp != nil {
141141
err := t.processInvalidMsgBlame(round.RoundMsg, round, errUp)
142-
t.logger.Error().Err(err).Msgf("fail to apply the share to tss")
142+
t.logger.Error().Err(err).Msg("fail to apply the share to tss")
143143
continue
144144
}
145145
// we need to retrieve the partylist again as others may update it once we process apply tss share
@@ -204,7 +204,7 @@ func (t *TssCommon) processInvalidMsgBlame(roundInfo string, round blame.RoundIn
204204
}
205205
pubkeys, errBlame := conversion.AccPubKeysFromPartyIDs(culpritsID, t.partyInfo.PartyIDMap)
206206
if errBlame != nil {
207-
t.logger.Error().Err(err.Cause()).Msgf("error in get the blame nodes")
207+
t.logger.Error().Err(err.Cause()).Msg("error in get the blame nodes")
208208
t.blameMgr.GetBlame().SetBlame(blame.TssBrokenMsg, nil, unicast, roundInfo)
209209
return fmt.Errorf("error in getting the blame nodes")
210210
}
@@ -603,7 +603,7 @@ func (t *TssCommon) applyShare(
603603

604604
blamePk, err := t.blameMgr.TssWrongShareBlame(localCacheItem.Msg)
605605
if err != nil {
606-
t.logger.Error().Err(err).Msgf("error in get the blame nodes")
606+
t.logger.Error().Err(err).Msg("error in get the blame nodes")
607607
t.blameMgr.GetBlame().SetBlame(blame.HashCheckFail, nil, unicast, t.RoundInfo)
608608
return fmt.Errorf("error in getting the blame nodes %w", blame.ErrHashCheck)
609609
}

common/tss_helper_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/cometbft/cometbft/crypto/secp256k1"
1212
sdk "github.com/cosmos/cosmos-sdk/types/bech32/legacybech32"
1313
"github.com/libp2p/go-libp2p/core/peer"
14+
"github.com/rs/zerolog"
1415
. "gopkg.in/check.v1"
1516

1617
"github.com/zeta-chain/go-tss/blame"
@@ -70,7 +71,7 @@ func (t *tssHelpSuite) TestTssCommon_NotifyTaskDone(c *C) {
7071
peerID, err := conversion.GetPeerIDFromSecp256PubKey(pk.Bytes())
7172
c.Assert(err, IsNil)
7273
sk := secp256k1.GenPrivKey()
73-
tssCommon := NewTssCommon(peerID.String(), nil, TssConfig{}, "message-id", sk, 1)
74+
tssCommon := NewTssCommon(peerID.String(), nil, TssConfig{}, "message-id", sk, 1, zerolog.Nop())
7475
err = tssCommon.NotifyTaskDone()
7576
c.Assert(err, IsNil)
7677
}
@@ -86,7 +87,7 @@ func (t *tssHelpSuite) TestTssCommon_processRequestMsgFromPeer(c *C) {
8687
sk := secp256k1.GenPrivKey()
8788
testPeer, err := peer.Decode("16Uiu2HAm2FzqoUdS6Y9Esg2EaGcAG5rVe1r6BFNnmmQr2H3bqafa")
8889
c.Assert(err, IsNil)
89-
tssCommon := NewTssCommon(peerID.String(), nil, TssConfig{}, "message-id", sk, 1)
90+
tssCommon := NewTssCommon(peerID.String(), nil, TssConfig{}, "message-id", sk, 1, zerolog.Nop())
9091
err = tssCommon.processRequestMsgFromPeer([]peer.ID{testPeer}, nil, true)
9192
c.Assert(err, IsNil)
9293
err = tssCommon.processRequestMsgFromPeer([]peer.ID{testPeer}, nil, false)

common/tss_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/cometbft/cometbft/crypto/secp256k1"
1919
coskey "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
2020
sdk "github.com/cosmos/cosmos-sdk/types/bech32/legacybech32"
21+
"github.com/rs/zerolog/log"
2122
. "gopkg.in/check.v1"
2223

2324
"github.com/btcsuite/btcd/btcec/v2"
@@ -136,7 +137,7 @@ func (t *TssTestSuite) TestTssProcessOutCh(c *C) {
136137
}
137138
msg := btss.NewMessageWrapper(messageRouting, testContent)
138139
tssMsg := btss.NewMessage(messageRouting, testContent, msg)
139-
tssCommonStruct := NewTssCommon("", nil, conf, "test", t.privKey, 1)
140+
tssCommonStruct := NewTssCommon("", nil, conf, "test", t.privKey, 1, log.Logger)
140141
err = tssCommonStruct.ProcessOutCh(tssMsg, messages.TSSKeyGenMsg)
141142
c.Assert(err, IsNil)
142143
}
@@ -230,7 +231,7 @@ func setupProcessVerMsgEnv(
230231
partyNum int,
231232
) (*TssCommon, []*btss.PartyID, []*btss.PartyID) {
232233
conf := TssConfig{}
233-
tssCommonStruct := NewTssCommon("", nil, conf, "test", privKey, 1)
234+
tssCommonStruct := NewTssCommon("", nil, conf, "test", privKey, 1, log.Logger)
234235
localTestPubKeys := make([]string, partyNum)
235236
copy(localTestPubKeys, keyPool[:partyNum])
236237
// for the test, we choose the first pubic key as the test instance public key
@@ -479,7 +480,7 @@ func (t *TssTestSuite) TestTssCommon(c *C) {
479480
c.Assert(err, IsNil)
480481
broadcastChannel := make(chan *messages.BroadcastMsgChan)
481482
sk := secp256k1.GenPrivKey()
482-
tssCommon := NewTssCommon(peerID.String(), broadcastChannel, TssConfig{}, "message-id", sk, 1)
483+
tssCommon := NewTssCommon(peerID.String(), broadcastChannel, TssConfig{}, "message-id", sk, 1, log.Logger)
483484
c.Assert(tssCommon, NotNil)
484485
stopchan := make(chan struct{})
485486
wg := sync.WaitGroup{}

keygen/ecdsa/keygen_test.go

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,13 @@ func (s *TssECDSAKeygenTestSuite) SetUpTest(c *C) {
124124
buf, err := base64.StdEncoding.DecodeString(testPriKeyArr[i])
125125
c.Assert(err, IsNil)
126126
if i == 0 {
127-
comm, err := p2p.NewCommunication(nil, ports[i], "", whitelistedPeers)
127+
comm, err := p2p.NewCommunication(nil, ports[i], "", whitelistedPeers, zlog.Logger)
128128
c.Assert(err, IsNil)
129129
c.Assert(comm.Start(buf[:]), IsNil)
130130
s.comms[i] = comm
131131
continue
132132
}
133-
comm, err := p2p.NewCommunication(bootstrapPeers, ports[i], "", whitelistedPeers)
133+
comm, err := p2p.NewCommunication(bootstrapPeers, ports[i], "", whitelistedPeers, zlog.Logger)
134134
c.Assert(err, IsNil)
135135
c.Assert(comm.Start(buf[:]), IsNil)
136136
s.comms[i] = comm
@@ -199,7 +199,11 @@ func (s *TssECDSAKeygenTestSuite) TestGenerateNewKey(c *C) {
199199
stopChan,
200200
s.preParams[idx],
201201
messageID,
202-
s.stateMgrs[idx], s.nodePrivKeys[idx], s.comms[idx])
202+
s.stateMgrs[idx],
203+
s.nodePrivKeys[idx],
204+
s.comms[idx],
205+
zlog.Logger,
206+
)
203207
c.Assert(keygenInstance, NotNil)
204208
keygenMsgChannel := keygenInstance.GetTssKeyGenChannels()
205209
comm.SetSubscribe(messages.TSSKeyGenMsg, messageID, keygenMsgChannel)
@@ -254,7 +258,10 @@ func (s *TssECDSAKeygenTestSuite) TestGenerateNewKeyWithStop(c *C) {
254258
s.preParams[idx],
255259
messageID,
256260
s.stateMgrs[idx],
257-
s.nodePrivKeys[idx], s.comms[idx])
261+
s.nodePrivKeys[idx],
262+
s.comms[idx],
263+
zlog.Logger,
264+
)
258265
c.Assert(keygenInstance, NotNil)
259266
keygenMsgChannel := keygenInstance.GetTssKeyGenChannels()
260267
comm.SetSubscribe(messages.TSSKeyGenMsg, messageID, keygenMsgChannel)
@@ -290,7 +297,19 @@ func (s *TssECDSAKeygenTestSuite) TestKeyGenWithError(c *C) {
290297
}
291298
conf := common.TssConfig{}
292299
stateManager := &storage.MockLocalStateManager{}
293-
keyGenInstance := NewTssKeyGen("", conf, "", nil, nil, nil, "test", stateManager, s.nodePrivKeys[0], nil)
300+
keyGenInstance := NewTssKeyGen(
301+
"",
302+
conf,
303+
"",
304+
nil,
305+
nil,
306+
nil,
307+
"test",
308+
stateManager,
309+
s.nodePrivKeys[0],
310+
nil,
311+
zlog.Logger,
312+
)
294313
generatedKey, err := keyGenInstance.GenerateNewKey(req)
295314
c.Assert(err, NotNil)
296315
c.Assert(generatedKey, IsNil)
@@ -299,7 +318,19 @@ func (s *TssECDSAKeygenTestSuite) TestKeyGenWithError(c *C) {
299318
func (s *TssECDSAKeygenTestSuite) TestCloseKeyGenNotifyChannel(c *C) {
300319
conf := common.TssConfig{}
301320
stateManager := &storage.MockLocalStateManager{}
302-
keyGenInstance := NewTssKeyGen("", conf, "", nil, nil, nil, "test", stateManager, s.nodePrivKeys[0], s.comms[0])
321+
keyGenInstance := NewTssKeyGen(
322+
"",
323+
conf,
324+
"",
325+
nil,
326+
nil,
327+
nil,
328+
"test",
329+
stateManager,
330+
s.nodePrivKeys[0],
331+
s.comms[0],
332+
zlog.Logger,
333+
)
303334

304335
taskDone := messages.TssTaskNotifier{TaskDone: true}
305336
taskDoneBytes, err := json.Marshal(taskDone)

keygen/ecdsa/tss_keygen.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ import (
1313
"github.com/btcsuite/btcd/btcec/v2"
1414
tcrypto "github.com/cometbft/cometbft/crypto"
1515
"github.com/rs/zerolog"
16-
"github.com/rs/zerolog/log"
1716

1817
"github.com/zeta-chain/go-tss/blame"
1918
"github.com/zeta-chain/go-tss/common"
2019
"github.com/zeta-chain/go-tss/conversion"
2120
"github.com/zeta-chain/go-tss/keygen"
21+
"github.com/zeta-chain/go-tss/logs"
2222
"github.com/zeta-chain/go-tss/messages"
2323
"github.com/zeta-chain/go-tss/p2p"
2424
"github.com/zeta-chain/go-tss/storage"
@@ -36,7 +36,8 @@ type TssKeyGen struct {
3636
p2pComm *p2p.Communication
3737
}
3838

39-
func NewTssKeyGen(localP2PID string,
39+
func NewTssKeyGen(
40+
localP2PID string,
4041
conf common.TssConfig,
4142
localNodePubKey string,
4243
broadcastChan chan *messages.BroadcastMsgChan,
@@ -45,14 +46,19 @@ func NewTssKeyGen(localP2PID string,
4546
msgID string,
4647
stateManager storage.LocalStateManager,
4748
privateKey tcrypto.PrivKey,
48-
p2pComm *p2p.Communication) *TssKeyGen {
49+
p2pComm *p2p.Communication,
50+
logger zerolog.Logger,
51+
) *TssKeyGen {
52+
logger = logger.With().
53+
Str(logs.Component, "keygen").
54+
Str(logs.MsgID, msgID).
55+
Logger()
56+
4957
return &TssKeyGen{
50-
logger: log.With().
51-
Str("module", "keygen").
52-
Str("msgID", msgID).Logger(),
58+
logger: logger,
5359
localNodePubKey: localNodePubKey,
5460
preParams: preParam,
55-
tssCommonStruct: common.NewTssCommon(localP2PID, broadcastChan, conf, msgID, privateKey, 1),
61+
tssCommonStruct: common.NewTssCommon(localP2PID, broadcastChan, conf, msgID, privateKey, 1, logger),
5662
stopChan: stopChan,
5763
localParty: nil,
5864
stateManager: stateManager,

0 commit comments

Comments
 (0)