Skip to content

Commit 90b5988

Browse files
nkitlabsRogerKSI
andauthored
[TSS] fix from spec (#174)
* fix proto from Address to Sender or Signer * fix hook names * fix dkgContext * fix de storage logic * change function name * add retry signing * fix lint * fix typo * change hook to callback * rename helper function to groupContext * fix signing interface * fix token allocaiton * fix transition flow and heartbeat * fix tss types * refactor tss keeper and some tests * fix test * fix msg encoding * fix type * add counts query and fix signing query * fix encode logic on feeds module * fix proposal transition example * fix status on forceReplace * fix des exported genesis * fix from comments * fix from comments * fix from comments * move testsuite to keeper_test * fix signing endblock * add UpdateSigningInfo * fix from comments * fix default valid price duration * fix default valid price duration * move originator to tss * fix from comments * remove expireBlock from SigningExpiration * fix key name * fix params variable name and hooks * add comment * fix from comments * fix feeds * Merge branch master-tss into tss-fix-from-spec * add logic check transition status on callback * add memo into DirectOriginator * fix group transition * fix format for contentMsgPrefix * fix tss originator and signingPerFee in bandtss * remove count on exported genesis * fix generated proto * fix from comment * fix from comments * fix groupTransition * fix genesis * fix fn name addMember * fix forceReplace * fix from comments * fix transition status * add validation on feeds content and text content * fix tss README.md * remove unsued * fix from comments * fix from comments * fix transition logic * remove unused * fix from comments * fix create signing object logic * rename variable * fix proto * fix signing and test * fix partial signature * fix msg server and query * fix genesis * fix callback and endblock logic * fix requestSigning and aggregatePartialSignatures * rename function * add signing endblock test * fix endblock logic * add unit test * fix readme and event * fix event and readme bandtss * fix genesis and description * fix word 'replacement' to 'transition' * fix from comments * fix key function names * fix MustGetCurrentAssignedMembers * fix endblock logic and comments * newObject function * add event on submitsignature --------- Co-authored-by: Kitipong Sirirueangsakul <[email protected]>
1 parent fb48d91 commit 90b5988

File tree

157 files changed

+13252
-8210
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

157 files changed

+13252
-8210
lines changed

app/app.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -539,13 +539,16 @@ func NewBandApp(
539539
rollingseedModule := rollingseed.NewAppModule(app.RollingseedKeeper)
540540

541541
// register the request signature types
542-
tssRouter := tsstypes.NewRouter()
542+
tssContentRouter := tsstypes.NewContentRouter()
543+
tssCbRouter := tsstypes.NewCallbackRouter()
544+
543545
app.TSSKeeper = tsskeeper.NewKeeper(
544546
appCodec,
545547
keys[tsstypes.StoreKey],
546548
app.AuthzKeeper,
547549
app.RollingseedKeeper,
548-
tssRouter,
550+
tssContentRouter,
551+
tssCbRouter,
549552
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
550553
)
551554
tssModule := tss.NewAppModule(app.TSSKeeper)
@@ -564,11 +567,6 @@ func NewBandApp(
564567
)
565568
bandtssModule := bandtss.NewAppModule(app.BandtssKeeper)
566569

567-
// register TSS Hooks
568-
app.TSSKeeper.SetHooks(
569-
tsstypes.NewMultiTSSHooks(app.BandtssKeeper.Hooks()),
570-
)
571-
572570
app.OracleKeeper = oraclekeeper.NewKeeper(
573571
appCodec,
574572
keys[oracletypes.StoreKey],
@@ -608,16 +606,20 @@ func NewBandApp(
608606
)
609607

610608
// Add TSS route
611-
tssRouter.
612-
AddRoute(tsstypes.RouterKey, tsstypes.NewSignatureOrderHandler()).
609+
tssContentRouter.
610+
AddRoute(tsstypes.RouterKey, tss.NewSignatureOrderHandler(*app.TSSKeeper)).
613611
AddRoute(oracletypes.RouterKey, oracle.NewSignatureOrderHandler(app.OracleKeeper)).
614612
AddRoute(bandtsstypes.RouterKey, bandtsstypes.NewSignatureOrderHandler()).
615613
AddRoute(feedstypes.RouterKey, feeds.NewSignatureOrderHandler(app.FeedsKeeper))
616614

615+
tssCbRouter.
616+
AddRoute(bandtsstypes.RouterKey, bandtsskeeper.NewTSSCallback(app.BandtssKeeper))
617+
617618
// It is vital to seal the request signature router here as to not allow
618619
// further handlers to be registered after the keeper is created since this
619620
// could create invalid or non-deterministic behavior.
620-
tssRouter.Seal()
621+
tssContentRouter.Seal()
622+
tssCbRouter.Seal()
621623

622624
app.StakingKeeper.SetHooks(
623625
stakingtypes.NewMultiStakingHooks(

benchmark/app_test.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,8 @@ func (ba *BenchmarkApp) SetupTSSGroup() {
246246
IsActive: true,
247247
})
248248
_, err := msgSrvr.SubmitDEs(ctx, &tsstypes.MsgSubmitDEs{
249-
DEs: GetDEs(),
250-
Address: ba.Sender.Address.String(),
249+
DEs: GetDEs(),
250+
Sender: ba.Sender.Address.String(),
251251
})
252252
require.NoError(ba.TB, err)
253253

@@ -262,9 +262,9 @@ func (ba *BenchmarkApp) SetupTSSGroup() {
262262
})
263263
tssKeeper.SetDKGContext(ctx, gid, dkg)
264264

265-
// Set active group in bandtss module
265+
// Set current group in bandtss module
266266
bandtssKeeper.SetCurrentGroupID(ctx, gid)
267-
err = bandtssKeeper.AddNewMember(ctx, ba.Sender.Address)
267+
err = bandtssKeeper.AddMember(ctx, ba.Sender.Address, gid)
268268
require.NoError(ba.TB, err)
269269

270270
// Set privKey Store
@@ -287,14 +287,16 @@ func (ba *BenchmarkApp) GetPendingSignTxs(gid tss.GroupID) []sdk.Tx {
287287
require.NotNil(ba.TB, privKey)
288288

289289
for _, sid := range sids {
290-
signing := k.MustGetSigning(ctx, tss.SigningID(sid))
290+
signing := k.MustGetSigning(ctx, sid)
291+
signingAttempt := k.MustGetSigningAttempt(ctx, sid, signing.CurrentAttempt)
292+
assignedMembers := tsstypes.AssignedMembers(signingAttempt.AssignedMembers)
291293

292-
sig, err := CreateSignature(m.ID, signing, group.PubKey, privKey)
294+
sig, err := CreateSignature(m.ID, signing, assignedMembers, group.PubKey, privKey)
293295
require.NoError(ba.TB, err)
294296

295297
tx, err := bandtesting.GenTx(
296298
ba.TxConfig,
297-
GenMsgSubmitSignature(tss.SigningID(sid), m.ID, sig, ba.Sender.Address),
299+
GenMsgSubmitSignature(sid, m.ID, sig, ba.Sender.Address),
298300
sdk.Coins{sdk.NewInt64Coin("uband", 1)},
299301
math.MaxInt64,
300302
bandtesting.ChainID,
@@ -345,11 +347,12 @@ func (ba *BenchmarkApp) RequestSignature(
345347
func (ba *BenchmarkApp) AddDEs(addr sdk.AccAddress) {
346348
ctx, msgSrvr, k := ba.Ctx, ba.TSSMsgSrvr, ba.TSSKeeper
347349

348-
count := k.GetDECount(ctx, addr)
350+
deQueue := k.GetDEQueue(ctx, addr)
351+
count := deQueue.Tail - deQueue.Head
349352
if count < uint64(DELen) {
350353
_, err := msgSrvr.SubmitDEs(ctx, &tsstypes.MsgSubmitDEs{
351-
DEs: GetDEs(),
352-
Address: addr.String(),
354+
DEs: GetDEs(),
355+
Sender: addr.String(),
353356
})
354357
require.NoError(ba.TB, err)
355358
}

benchmark/helper_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ func GenMsgSubmitSignature(sid tss.SigningID, mid tss.MemberID, sig tss.Signatur
168168
SigningID: sid,
169169
MemberID: mid,
170170
Signature: sig,
171-
Address: member.String(),
171+
Signer: member.String(),
172172
}
173173

174174
return []sdk.Msg{&msg}
@@ -177,19 +177,20 @@ func GenMsgSubmitSignature(sid tss.SigningID, mid tss.MemberID, sig tss.Signatur
177177
func CreateSignature(
178178
mid tss.MemberID,
179179
signing tsstypes.Signing,
180+
assignedMembers tsstypes.AssignedMembers,
180181
groupPubKey tss.Point,
181182
ownPrivKey tss.Scalar,
182183
) (tss.Signature, error) {
183184
// Compute Lagrange coefficient
184185
lgc, err := tss.ComputeLagrangeCoefficient(
185186
mid,
186-
signing.AssignedMembers.MemberIDs(),
187+
assignedMembers.MemberIDs(),
187188
)
188189
if err != nil {
189190
return nil, err
190191
}
191192

192-
for _, am := range signing.AssignedMembers {
193+
for _, am := range assignedMembers {
193194
if am.MemberID == mid {
194195
// Compute private nonce
195196
pn, err := tss.ComputeOwnPrivNonce(PrivD, PrivE, am.BindingFactor)

cmd/cylinder/run.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"github.com/bandprotocol/chain/v2/cylinder"
99
"github.com/bandprotocol/chain/v2/cylinder/workers/de"
1010
"github.com/bandprotocol/chain/v2/cylinder/workers/group"
11-
"github.com/bandprotocol/chain/v2/cylinder/workers/healthcheck"
11+
"github.com/bandprotocol/chain/v2/cylinder/workers/heartbeat"
1212
"github.com/bandprotocol/chain/v2/cylinder/workers/sender"
1313
"github.com/bandprotocol/chain/v2/cylinder/workers/signing"
1414
)
@@ -40,7 +40,7 @@ func runCmd(ctx *Context) *cobra.Command {
4040
return err
4141
}
4242

43-
healthcheck, err := healthcheck.New(c)
43+
heartbeat, err := heartbeat.New(c)
4444
if err != nil {
4545
return err
4646
}
@@ -65,7 +65,7 @@ func runCmd(ctx *Context) *cobra.Command {
6565
return err
6666
}
6767

68-
workers := cylinder.Workers{healthcheck, group, de, signing, sender}
68+
workers := cylinder.Workers{heartbeat, group, de, signing, sender}
6969

7070
return cylinder.Run(c, workers)
7171
},

cylinder/client/client.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,8 @@ func (c *Client) QueryDE(address string, offset uint64, limit uint64) (*DERespon
162162
}
163163

164164
// QueryMember queries the member information of the given address.
165-
// It returns the de response or an error.
166-
func (c *Client) QueryMember(address string) (*bandtsstypes.Member, error) {
165+
// It returns the member information on current and incoming group or an error.
166+
func (c *Client) QueryMember(address string) (*bandtsstypes.QueryMemberResponse, error) {
167167
queryClient := bandtsstypes.NewQueryClient(c.context)
168168

169169
res, err := queryClient.Member(context.Background(), &bandtsstypes.QueryMemberRequest{
@@ -173,7 +173,7 @@ func (c *Client) QueryMember(address string) (*bandtsstypes.Member, error) {
173173
return nil, err
174174
}
175175

176-
return &res.Member, nil
176+
return res, nil
177177
}
178178

179179
// QueryPendingGroups queries the all pending groups with the given address.

cylinder/client/signing_response.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ func NewSigningResponse(gr *types.QuerySigningResponse) *SigningResponse {
1919

2020
// GetMemberIDs returns all assigned member's id of the assigned members
2121
func (sr SigningResponse) GetMemberIDs() []tss.MemberID {
22-
return sr.SigningResult.Signing.AssignedMembers.MemberIDs()
22+
assignedMembers := types.AssignedMembers(sr.SigningResult.CurrentSigningAttempt.AssignedMembers)
23+
return assignedMembers.MemberIDs()
2324
}
2425

2526
// GetAssignedMember returns assigned member of the specific address
2627
func (sr SigningResponse) GetAssignedMember(address string) (types.AssignedMember, error) {
27-
for _, am := range sr.SigningResult.Signing.AssignedMembers {
28+
for _, am := range sr.SigningResult.CurrentSigningAttempt.AssignedMembers {
2829
if am.Address == address {
2930
return am, nil
3031
}

cylinder/client/signing_response_test.go

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,9 @@ func TestGetMemberIDs(t *testing.T) {
2121
name: "One member",
2222
querySigningResponse: &types.QuerySigningResponse{
2323
SigningResult: types.SigningResult{
24-
Signing: types.Signing{
25-
AssignedMembers: []types.AssignedMember{
26-
{
27-
MemberID: 1,
28-
},
29-
},
24+
Signing: types.Signing{},
25+
CurrentSigningAttempt: &types.SigningAttempt{
26+
AssignedMembers: []types.AssignedMember{{MemberID: 1}},
3027
},
3128
},
3229
},
@@ -36,15 +33,9 @@ func TestGetMemberIDs(t *testing.T) {
3633
name: "No data from MemberID",
3734
querySigningResponse: &types.QuerySigningResponse{
3835
SigningResult: types.SigningResult{
39-
Signing: types.Signing{
40-
AssignedMembers: []types.AssignedMember{
41-
{
42-
MemberID: 2,
43-
},
44-
{
45-
MemberID: 3,
46-
},
47-
},
36+
Signing: types.Signing{},
37+
CurrentSigningAttempt: &types.SigningAttempt{
38+
AssignedMembers: []types.AssignedMember{{MemberID: 2}, {MemberID: 3}},
4839
},
4940
},
5041
},
@@ -73,16 +64,11 @@ func TestGetAssignedMember(t *testing.T) {
7364
name: "Existing MemberID",
7465
querySigningResponse: &types.QuerySigningResponse{
7566
SigningResult: types.SigningResult{
76-
Signing: types.Signing{
67+
Signing: types.Signing{},
68+
CurrentSigningAttempt: &types.SigningAttempt{
7769
AssignedMembers: []types.AssignedMember{
78-
{
79-
MemberID: 1,
80-
Address: "band address 1",
81-
},
82-
{
83-
MemberID: 2,
84-
Address: "band address 2",
85-
},
70+
{MemberID: 1, Address: "band address 1"},
71+
{MemberID: 2, Address: "band address 2"},
8672
},
8773
},
8874
},
@@ -98,16 +84,11 @@ func TestGetAssignedMember(t *testing.T) {
9884
name: "No member",
9985
querySigningResponse: &types.QuerySigningResponse{
10086
SigningResult: types.SigningResult{
101-
Signing: types.Signing{
87+
Signing: types.Signing{},
88+
CurrentSigningAttempt: &types.SigningAttempt{
10289
AssignedMembers: []types.AssignedMember{
103-
{
104-
MemberID: 1,
105-
Address: "band address 1",
106-
},
107-
{
108-
MemberID: 2,
109-
Address: "band address 2",
110-
},
90+
{MemberID: 1, Address: "band address 1"},
91+
{MemberID: 2, Address: "band address 2"},
11192
},
11293
},
11394
},

cylinder/workers/group/round3.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func (r *Round3) handleGroup(gid tss.GroupID) {
149149
}
150150

151151
// Sign own public key
152-
ownPubKeySig, err := tss.SignOwnPubkey(
152+
ownPubKeySig, err := tss.SignOwnPubKey(
153153
group.MemberID,
154154
groupRes.DKGContext,
155155
group.PrivKey.Point(),

cylinder/workers/healthcheck/healthcheck.go

Lines changed: 0 additions & 80 deletions
This file was deleted.

0 commit comments

Comments
 (0)