From 3ed9b46b003580ccb4a26b9ea2b3cdf5834e3f73 Mon Sep 17 00:00:00 2001 From: Hitenjain14 Date: Wed, 3 Jan 2024 19:45:33 +0530 Subject: [PATCH 01/10] aggregate validation ticket sig --- .../blobbercore/challenge/challenge.go | 12 +++++++-- .../blobbercore/challenge/entity.go | 2 +- .../blobbercore/challenge/protocol.go | 9 ++++--- code/go/0chain.net/core/encryption/keys.go | 25 ++++++++++++++++--- .../storage/challenge_handler.go | 2 +- .../validatorcore/storage/models.go | 2 +- 6 files changed, 39 insertions(+), 13 deletions(-) diff --git a/code/go/0chain.net/blobbercore/challenge/challenge.go b/code/go/0chain.net/blobbercore/challenge/challenge.go index afa9fa4bc..19a3a8faf 100644 --- a/code/go/0chain.net/blobbercore/challenge/challenge.go +++ b/code/go/0chain.net/blobbercore/challenge/challenge.go @@ -8,6 +8,7 @@ import ( "strconv" "time" + "github.com/0chain/blobber/code/go/0chain.net/core/encryption" "github.com/0chain/blobber/code/go/0chain.net/core/node" "github.com/0chain/blobber/code/go/0chain.net/blobbercore/config" @@ -195,12 +196,19 @@ func (c *ChallengeEntity) getCommitTransaction(ctx context.Context) (*transactio sn := &ChallengeResponse{} sn.ChallengeID = c.ChallengeID + signatures := make([]string, 0, len(c.ValidationTickets)) for _, vt := range c.ValidationTickets { - if vt != nil { + if vt != nil && vt.Result { sn.ValidationTickets = append(sn.ValidationTickets, vt) + signatures = append(signatures, vt.Signature) } } - + sn.AggregatedSignature, err = encryption.AggregateSig(signatures) + if err != nil { + logging.Logger.Error("[challenge]aggregateSig", zap.Error(err)) + c.CancelChallenge(ctx, err) + return nil, nil + } err = txn.ExecuteSmartContract(transaction.STORAGE_CONTRACT_ADDRESS, transaction.CHALLENGE_RESPONSE, sn, 0) if err != nil { logging.Logger.Info("Failed submitting challenge to the mining network", zap.String("err:", err.Error())) diff --git a/code/go/0chain.net/blobbercore/challenge/entity.go b/code/go/0chain.net/blobbercore/challenge/entity.go index ab95dec3e..70c5703ee 100644 --- a/code/go/0chain.net/blobbercore/challenge/entity.go +++ b/code/go/0chain.net/blobbercore/challenge/entity.go @@ -68,7 +68,7 @@ type ValidationTicket struct { } func (vt *ValidationTicket) VerifySign() (bool, error) { - hashData := fmt.Sprintf("%v:%v:%v:%v:%v:%v", vt.ChallengeID, vt.BlobberID, vt.ValidatorID, vt.ValidatorKey, vt.Result, vt.Timestamp) + hashData := fmt.Sprintf("%v:%v:%v:%v", vt.ChallengeID, vt.BlobberID, vt.Result, vt.Timestamp) hash := encryption.Hash(hashData) verified, err := encryption.Verify(vt.ValidatorKey, vt.Signature, hash) return verified, err diff --git a/code/go/0chain.net/blobbercore/challenge/protocol.go b/code/go/0chain.net/blobbercore/challenge/protocol.go index fbb0610df..7a2489b41 100644 --- a/code/go/0chain.net/blobbercore/challenge/protocol.go +++ b/code/go/0chain.net/blobbercore/challenge/protocol.go @@ -41,8 +41,9 @@ var ( ) type ChallengeResponse struct { - ChallengeID string `json:"challenge_id"` - ValidationTickets []*ValidationTicket `json:"validation_tickets"` + ChallengeID string `json:"challenge_id"` + ValidationTickets []*ValidationTicket `json:"validation_tickets"` + AggregatedSignature string `json:"aggregated_signature"` } func (cr *ChallengeEntity) CancelChallenge(ctx context.Context, errReason error) { @@ -291,17 +292,17 @@ func (cr *ChallengeEntity) LoadValidationTickets(ctx context.Context) error { ) verified, err := validationTicket.VerifySign() - if err != nil || !verified { + if err != nil || !verified || !validationTicket.Result { numFailed++ logging.Logger.Error( "[challenge]ticket: Validation ticket from validator could not be verified.", zap.String("validator", validatorID), + zap.String("validator_response", validationTicket.Message), ) updateMapAndSlice(validatorID, i, nil) return } updateMapAndSlice(validatorID, i, &validationTicket) - numSuccess++ }(url, validator.ID, i) } diff --git a/code/go/0chain.net/core/encryption/keys.go b/code/go/0chain.net/core/encryption/keys.go index bb652f1bf..98c9310de 100644 --- a/code/go/0chain.net/core/encryption/keys.go +++ b/code/go/0chain.net/core/encryption/keys.go @@ -13,8 +13,10 @@ import ( "github.com/herumi/bls-go-binary/bls" ) -/*ReadKeys - reads a publicKey and a privateKey from a Reader. -They are assumed to be in two separate lines one followed by the other*/ +/* +ReadKeys - reads a publicKey and a privateKey from a Reader. +They are assumed to be in two separate lines one followed by the other +*/ func ReadKeys(reader io.Reader) (publicKey, privateKey, publicIp, port string) { scanner := bufio.NewScanner(reader) scanner.Scan() @@ -45,13 +47,14 @@ func Verify(publicKey, signature, hash string) (bool, error) { } // If input is normal herumi/bls public key, it returns it immmediately. -// So this is completely backward compatible with herumi/bls. +// +// So this is completely backward compatible with herumi/bls. +// // If input is MIRACL public key, convert it to herumi/bls public key. // // This is an example of the raw public key we expect from MIRACL var miraclExamplePK = `0418a02c6bd223ae0dfda1d2f9a3c81726ab436ce5e9d17c531ff0a385a13a0b491bdfed3a85690775ee35c61678957aaba7b1a1899438829f1dc94248d87ed36817f6dfafec19bfa87bf791a4d694f43fec227ae6f5a867490e30328cac05eaff039ac7dfc3364e851ebd2631ea6f1685609fc66d50223cc696cb59ff2fee47ac` -// // This is an example of the same MIRACL public key serialized with ToString(). // pk ([1bdfed3a85690775ee35c61678957aaba7b1a1899438829f1dc94248d87ed368,18a02c6bd223ae0dfda1d2f9a3c81726ab436ce5e9d17c531ff0a385a13a0b49],[039ac7dfc3364e851ebd2631ea6f1685609fc66d50223cc696cb59ff2fee47ac,17f6dfafec19bfa87bf791a4d694f43fec227ae6f5a867490e30328cac05eaff]) func MiraclToHerumiPK(pk string) string { @@ -99,3 +102,17 @@ func MiraclToHerumiSig(sig string) string { } return sign.SerializeToHexStr() } + +func AggregateSig(signatures []string) (string, error) { + var sig bls.Sign + sigVec := make([]bls.Sign, len(signatures)) + for i := 0; i < len(signatures); i++ { + err := sigVec[i].DeserializeHexStr(signatures[i]) + if err != nil { + Logger.Error("AggregateSig: " + err.Error()) + return "", err + } + } + sig.Aggregate(sigVec) + return sig.SerializeToHexStr(), nil +} diff --git a/code/go/0chain.net/validatorcore/storage/challenge_handler.go b/code/go/0chain.net/validatorcore/storage/challenge_handler.go index e88aaba8f..6a49ace6c 100644 --- a/code/go/0chain.net/validatorcore/storage/challenge_handler.go +++ b/code/go/0chain.net/validatorcore/storage/challenge_handler.go @@ -106,7 +106,7 @@ func ValidValidationTicket(challengeObj *Challenge, challengeID string, challeng validationTicket.Message = "Challenge passed" validationTicket.ValidatorID = node.Self.ID validationTicket.ValidatorKey = node.Self.PublicKey - validationTicket.Timestamp = common.Now() + validationTicket.Timestamp = challengeObj.Timestamp if err := validationTicket.Sign(); err != nil { return nil, common.NewError("invalid_parameters", err.Error()) } diff --git a/code/go/0chain.net/validatorcore/storage/models.go b/code/go/0chain.net/validatorcore/storage/models.go index ba47ef2f8..c07e7ed3f 100644 --- a/code/go/0chain.net/validatorcore/storage/models.go +++ b/code/go/0chain.net/validatorcore/storage/models.go @@ -395,7 +395,7 @@ type ValidationTicket struct { } func (vt *ValidationTicket) Sign() error { - hashData := fmt.Sprintf("%v:%v:%v:%v:%v:%v", vt.ChallengeID, vt.BlobberID, vt.ValidatorID, vt.ValidatorKey, vt.Result, vt.Timestamp) + hashData := fmt.Sprintf("%v:%v:%v:%v", vt.ChallengeID, vt.BlobberID, vt.Result, vt.Timestamp) hash := encryption.Hash(hashData) signature, err := node.Self.Sign(hash) vt.Signature = signature From bf87b0f3a8e76f533451dd481d9d6536a324fd6a Mon Sep 17 00:00:00 2001 From: Hitenjain14 Date: Wed, 3 Jan 2024 20:40:23 +0530 Subject: [PATCH 02/10] init bls --- code/go/0chain.net/core/encryption/keys.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/go/0chain.net/core/encryption/keys.go b/code/go/0chain.net/core/encryption/keys.go index 98c9310de..40c8cab27 100644 --- a/code/go/0chain.net/core/encryption/keys.go +++ b/code/go/0chain.net/core/encryption/keys.go @@ -13,6 +13,13 @@ import ( "github.com/herumi/bls-go-binary/bls" ) +func init() { + err := bls.Init(bls.CurveFp254BNb) + if err != nil { + panic(err) + } +} + /* ReadKeys - reads a publicKey and a privateKey from a Reader. They are assumed to be in two separate lines one followed by the other From 4c0e4c656c4b93f1ce74d6ff8f565388e3ad9690 Mon Sep 17 00:00:00 2001 From: Hitenjain14 Date: Wed, 3 Jan 2024 23:11:39 +0530 Subject: [PATCH 03/10] add aggregate log --- code/go/0chain.net/blobbercore/challenge/challenge.go | 1 + 1 file changed, 1 insertion(+) diff --git a/code/go/0chain.net/blobbercore/challenge/challenge.go b/code/go/0chain.net/blobbercore/challenge/challenge.go index 19a3a8faf..f14b2a020 100644 --- a/code/go/0chain.net/blobbercore/challenge/challenge.go +++ b/code/go/0chain.net/blobbercore/challenge/challenge.go @@ -215,6 +215,7 @@ func (c *ChallengeEntity) getCommitTransaction(ctx context.Context) (*transactio c.CancelChallenge(ctx, err) return nil, nil } + logging.Logger.Info("[challenge]response:", zap.Any("challengeResponse", *sn)) err = UpdateChallengeTimingTxnSubmission(c.ChallengeID, txn.CreationDate) if err != nil { From 196d8a5ca396f5a92858e972ae4f9059edaa0a52 Mon Sep 17 00:00:00 2001 From: Hitenjain14 Date: Thu, 4 Jan 2024 00:45:01 +0530 Subject: [PATCH 04/10] cleanup --- code/go/0chain.net/blobbercore/challenge/challenge.go | 1 - code/go/0chain.net/blobbercore/challenge/protocol.go | 4 ++-- code/go/0chain.net/blobbercore/challenge/worker.go | 8 ++++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/code/go/0chain.net/blobbercore/challenge/challenge.go b/code/go/0chain.net/blobbercore/challenge/challenge.go index f14b2a020..19a3a8faf 100644 --- a/code/go/0chain.net/blobbercore/challenge/challenge.go +++ b/code/go/0chain.net/blobbercore/challenge/challenge.go @@ -215,7 +215,6 @@ func (c *ChallengeEntity) getCommitTransaction(ctx context.Context) (*transactio c.CancelChallenge(ctx, err) return nil, nil } - logging.Logger.Info("[challenge]response:", zap.Any("challengeResponse", *sn)) err = UpdateChallengeTimingTxnSubmission(c.ChallengeID, txn.CreationDate) if err != nil { diff --git a/code/go/0chain.net/blobbercore/challenge/protocol.go b/code/go/0chain.net/blobbercore/challenge/protocol.go index 7a2489b41..1bcd00110 100644 --- a/code/go/0chain.net/blobbercore/challenge/protocol.go +++ b/code/go/0chain.net/blobbercore/challenge/protocol.go @@ -373,7 +373,7 @@ func (cr *ChallengeEntity) VerifyChallengeTransaction(ctx context.Context, txn * _ = cr.Save(ctx) return err } - logging.Logger.Info("Success response from BC for challenge response transaction", zap.String("txn", txn.TransactionOutput), zap.String("challenge_id", cr.ChallengeID)) + logging.Logger.Info("Success response from BC for challenge response transaction", zap.String("txn", txn.Hash), zap.String("challenge_id", cr.ChallengeID)) cr.SaveChallengeResult(ctx, t, true) return nil } @@ -383,7 +383,7 @@ func IsValueNotPresentError(err error) bool { } func IsEntityNotFoundError(err error) bool { - return strings.Contains(err.Error(), EntityNotFound) + return strings.Contains(err.Error(), EntityNotFound) || strings.Contains(err.Error(), "not present") || strings.Contains(err.Error(), "invalid challenge response") } func (cr *ChallengeEntity) SaveChallengeResult(ctx context.Context, t *transaction.Transaction, toAdd bool) { diff --git a/code/go/0chain.net/blobbercore/challenge/worker.go b/code/go/0chain.net/blobbercore/challenge/worker.go index b721f2030..16215f3a4 100644 --- a/code/go/0chain.net/blobbercore/challenge/worker.go +++ b/code/go/0chain.net/blobbercore/challenge/worker.go @@ -172,8 +172,8 @@ func commitOnChainWorker(ctx context.Context) { continue } - logging.Logger.Info("committing_challenge_tickets", zap.Any("num", len(challenges)), zap.Any("challenges", challenges)) - + logging.Logger.Info("committing_challenge_tickets", zap.Any("num", len(challenges))) + now := time.Now() for _, challenge := range challenges { chall := challenge var ( @@ -198,6 +198,9 @@ func commitOnChainWorker(ctx context.Context) { err := challenge.VerifyChallengeTransaction(ctx, txn) if err == nil || err != ErrEntityNotFound { deleteChallenge(challenge.RoundCreatedAt) + if err != nil { + logging.Logger.Error("verifyChallengeTransaction", zap.Any("challenge", *challenge)) + } } return nil }) @@ -205,6 +208,7 @@ func commitOnChainWorker(ctx context.Context) { } } wg.Wait() + logging.Logger.Info("committing_tickets_timing", zap.Any("num", len(challenges)), zap.Duration("elapsed", time.Since(now))) } } From 8b8f336909041757d586194864cdbc2f0e52468d Mon Sep 17 00:00:00 2001 From: Hitenjain14 Date: Sat, 3 Feb 2024 00:39:22 +0530 Subject: [PATCH 05/10] check hardfork round --- .../blobbercore/challenge/challenge.go | 30 ++++++++++++------- .../blobbercore/challenge/entity.go | 9 ++++-- .../blobbercore/challenge/protocol.go | 2 +- .../blobbercore/challenge/worker.go | 9 +++++- .../0chain.net/core/common/handler/worker.go | 25 +++++++++++++++- .../storage/challenge_handler.go | 4 +-- .../validatorcore/storage/models.go | 11 +++++-- .../validatorcore/storage/models_test.go | 2 +- go.mod | 10 +++---- go.sum | 30 +++++++++---------- 10 files changed, 90 insertions(+), 42 deletions(-) diff --git a/code/go/0chain.net/blobbercore/challenge/challenge.go b/code/go/0chain.net/blobbercore/challenge/challenge.go index fc4eb97fd..17d137651 100644 --- a/code/go/0chain.net/blobbercore/challenge/challenge.go +++ b/code/go/0chain.net/blobbercore/challenge/challenge.go @@ -196,18 +196,26 @@ func (c *ChallengeEntity) getCommitTransaction(ctx context.Context) (*transactio sn := &ChallengeResponse{} sn.ChallengeID = c.ChallengeID - signatures := make([]string, 0, len(c.ValidationTickets)) - for _, vt := range c.ValidationTickets { - if vt != nil && vt.Result { - sn.ValidationTickets = append(sn.ValidationTickets, vt) - signatures = append(signatures, vt.Signature) + if c.RoundCreatedAt >= hardForkRound { + signatures := make([]string, 0, len(c.ValidationTickets)) + for _, vt := range c.ValidationTickets { + if vt != nil && vt.Result { + sn.ValidationTickets = append(sn.ValidationTickets, vt) + signatures = append(signatures, vt.Signature) + } + } + sn.AggregatedSignature, err = encryption.AggregateSig(signatures) + if err != nil { + logging.Logger.Error("[challenge]aggregateSig", zap.Error(err)) + c.CancelChallenge(ctx, err) + return nil, nil + } + } else { + for _, vt := range c.ValidationTickets { + if vt != nil { + sn.ValidationTickets = append(sn.ValidationTickets, vt) + } } - } - sn.AggregatedSignature, err = encryption.AggregateSig(signatures) - if err != nil { - logging.Logger.Error("[challenge]aggregateSig", zap.Error(err)) - c.CancelChallenge(ctx, err) - return nil, nil } err = txn.ExecuteSmartContract(transaction.STORAGE_CONTRACT_ADDRESS, transaction.CHALLENGE_RESPONSE, sn, 0) if err != nil { diff --git a/code/go/0chain.net/blobbercore/challenge/entity.go b/code/go/0chain.net/blobbercore/challenge/entity.go index 0002336cf..d1272cd59 100644 --- a/code/go/0chain.net/blobbercore/challenge/entity.go +++ b/code/go/0chain.net/blobbercore/challenge/entity.go @@ -67,8 +67,13 @@ type ValidationTicket struct { Signature string `json:"signature"` } -func (vt *ValidationTicket) VerifySign() (bool, error) { - hashData := fmt.Sprintf("%v:%v:%v:%v", vt.ChallengeID, vt.BlobberID, vt.Result, vt.Timestamp) +func (vt *ValidationTicket) VerifySign(round int64) (bool, error) { + var hashData string + if round >= hardForkRound { + hashData = fmt.Sprintf("%v:%v:%v:%v", vt.ChallengeID, vt.BlobberID, vt.Result, vt.Timestamp) + } else { + hashData = fmt.Sprintf("%v:%v:%v:%v:%v:%v", vt.ChallengeID, vt.BlobberID, vt.ValidatorID, vt.ValidatorKey, vt.Result, vt.Timestamp) + } hash := encryption.Hash(hashData) verified, err := encryption.Verify(vt.ValidatorKey, vt.Signature, hash) return verified, err diff --git a/code/go/0chain.net/blobbercore/challenge/protocol.go b/code/go/0chain.net/blobbercore/challenge/protocol.go index b38dd1559..929affad8 100644 --- a/code/go/0chain.net/blobbercore/challenge/protocol.go +++ b/code/go/0chain.net/blobbercore/challenge/protocol.go @@ -292,7 +292,7 @@ func (cr *ChallengeEntity) LoadValidationTickets(ctx context.Context) error { zap.Any("numFailed", numFailed), ) - verified, err := validationTicket.VerifySign() + verified, err := validationTicket.VerifySign(cr.RoundCreatedAt) if err != nil || !verified || !validationTicket.Result { numFailed++ logging.Logger.Error( diff --git a/code/go/0chain.net/blobbercore/challenge/worker.go b/code/go/0chain.net/blobbercore/challenge/worker.go index b23e0cdbb..0c1665eeb 100644 --- a/code/go/0chain.net/blobbercore/challenge/worker.go +++ b/code/go/0chain.net/blobbercore/challenge/worker.go @@ -2,6 +2,7 @@ package challenge import ( "context" + "math" "sync" "time" @@ -17,6 +18,9 @@ import ( ) const GetRoundInterval = 3 * time.Minute +const HARDFORK_NAME = "apollo" + +var hardForkRound int64 = math.MaxInt64 type TodoChallenge struct { Id string @@ -82,7 +86,6 @@ func startWorkers(ctx context.Context) { func getRoundWorker(ctx context.Context) { ticker := time.NewTicker(GetRoundInterval) - for { select { case <-ctx.Done(): @@ -90,6 +93,10 @@ func getRoundWorker(ctx context.Context) { return case <-ticker.C: setRound() + if hardForkRound == math.MaxInt64 { + hardForkRound, _ = zcncore.GetHardForkRound(HARDFORK_NAME) + logging.Logger.Info("hard_fork_round", zap.Any("round", hardForkRound)) + } } } } diff --git a/code/go/0chain.net/core/common/handler/worker.go b/code/go/0chain.net/core/common/handler/worker.go index 05f665283..e8c3d3a9f 100644 --- a/code/go/0chain.net/core/common/handler/worker.go +++ b/code/go/0chain.net/core/common/handler/worker.go @@ -2,19 +2,25 @@ package handler import ( "context" + "math" "time" blobConfig "github.com/0chain/blobber/code/go/0chain.net/blobbercore/config" "github.com/0chain/blobber/code/go/0chain.net/blobbercore/handler" valConfig "github.com/0chain/blobber/code/go/0chain.net/validatorcore/config" + "github.com/0chain/gosdk/zcncore" "github.com/0chain/blobber/code/go/0chain.net/core/common" "github.com/0chain/blobber/code/go/0chain.net/core/logging" "go.uber.org/zap" ) -func StartHealthCheck(ctx context.Context, provider common.ProviderType) { +const HARDFORK_NAME = "apollo" + +var HardForkRound int64 = math.MaxInt64 +func StartHealthCheck(ctx context.Context, provider common.ProviderType) { + go setHardForkRound(ctx) var t time.Duration switch provider { @@ -44,3 +50,20 @@ func StartHealthCheck(ctx context.Context, provider common.ProviderType) { } } } + +func setHardForkRound(ctx context.Context) { + HardForkRound, _ = zcncore.GetHardForkRound(HARDFORK_NAME) + if HardForkRound == math.MaxInt64 { + for { + select { + case <-ctx.Done(): + return + case <-time.After(5 * time.Minute): + HardForkRound, _ = zcncore.GetHardForkRound(HARDFORK_NAME) + if HardForkRound != math.MaxInt64 { + return + } + } + } + } +} diff --git a/code/go/0chain.net/validatorcore/storage/challenge_handler.go b/code/go/0chain.net/validatorcore/storage/challenge_handler.go index 6a49ace6c..d8c97a623 100644 --- a/code/go/0chain.net/validatorcore/storage/challenge_handler.go +++ b/code/go/0chain.net/validatorcore/storage/challenge_handler.go @@ -107,7 +107,7 @@ func ValidValidationTicket(challengeObj *Challenge, challengeID string, challeng validationTicket.ValidatorID = node.Self.ID validationTicket.ValidatorKey = node.Self.PublicKey validationTicket.Timestamp = challengeObj.Timestamp - if err := validationTicket.Sign(); err != nil { + if err := validationTicket.Sign(challengeObj.RoundCreatedAt); err != nil { return nil, common.NewError("invalid_parameters", err.Error()) } logging.Logger.Info("Validation passed.", zap.String("challenge_id", challengeID)) @@ -135,7 +135,7 @@ func InvalidValidationTicket(challengeObj *Challenge, err error) (interface{}, e validationTicket.ValidatorKey = node.Self.PublicKey validationTicket.Timestamp = common.Now() - if err := validationTicket.Sign(); err != nil { + if err := validationTicket.Sign(challengeObj.RoundCreatedAt); err != nil { return nil, common.NewError("invalid_parameters", err.Error()) } return &validationTicket, nil diff --git a/code/go/0chain.net/validatorcore/storage/models.go b/code/go/0chain.net/validatorcore/storage/models.go index c07e7ed3f..9f100c545 100644 --- a/code/go/0chain.net/validatorcore/storage/models.go +++ b/code/go/0chain.net/validatorcore/storage/models.go @@ -8,6 +8,7 @@ import ( "strings" "github.com/0chain/blobber/code/go/0chain.net/core/common" + "github.com/0chain/blobber/code/go/0chain.net/core/common/handler" "github.com/0chain/blobber/code/go/0chain.net/core/encryption" "github.com/0chain/blobber/code/go/0chain.net/core/node" "github.com/0chain/blobber/code/go/0chain.net/validatorcore/storage/writemarker" @@ -380,6 +381,7 @@ type Challenge struct { AllocationRoot string `json:"allocation_root"` BlobberID string `json:"blobber_id"` Timestamp common.Timestamp `json:"timestamp"` + RoundCreatedAt int64 `json:"round_created_at"` } type ValidationTicket struct { @@ -394,8 +396,13 @@ type ValidationTicket struct { Signature string `json:"signature"` } -func (vt *ValidationTicket) Sign() error { - hashData := fmt.Sprintf("%v:%v:%v:%v", vt.ChallengeID, vt.BlobberID, vt.Result, vt.Timestamp) +func (vt *ValidationTicket) Sign(round int64) error { + var hashData string + if round >= handler.HardForkRound { + hashData = fmt.Sprintf("%v:%v:%v:%v", vt.ChallengeID, vt.BlobberID, vt.Result, vt.Timestamp) + } else { + hashData = fmt.Sprintf("%v:%v:%v:%v:%v:%v", vt.ChallengeID, vt.BlobberID, vt.ValidatorID, vt.ValidatorKey, vt.Result, vt.Timestamp) + } hash := encryption.Hash(hashData) signature, err := node.Self.Sign(hash) vt.Signature = signature diff --git a/code/go/0chain.net/validatorcore/storage/models_test.go b/code/go/0chain.net/validatorcore/storage/models_test.go index 221053cdb..e35680842 100644 --- a/code/go/0chain.net/validatorcore/storage/models_test.go +++ b/code/go/0chain.net/validatorcore/storage/models_test.go @@ -642,7 +642,7 @@ func TestValidationTicket_Sign(t *testing.T) { Timestamp: common.Now(), } - err = vt.Sign() + err = vt.Sign(0) require.NoError(t, err) } diff --git a/go.mod b/go.mod index 258820c31..3a053467e 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( github.com/0chain/errors v1.0.3 - github.com/0chain/gosdk v1.11.8-0.20240121220047-6f48750d0df4 + github.com/0chain/gosdk v1.11.8-0.20240202182855-9568cf1b3c0d github.com/DATA-DOG/go-sqlmock v1.5.0 github.com/didip/tollbooth/v6 v6.1.2 github.com/go-openapi/runtime v0.26.0 @@ -21,9 +21,9 @@ require ( github.com/spf13/viper v1.16.0 github.com/stretchr/testify v1.8.4 go.uber.org/zap v1.24.0 - golang.org/x/crypto v0.15.0 - golang.org/x/net v0.10.0 // indirect - golang.org/x/sys v0.14.0 + golang.org/x/crypto v0.16.0 + golang.org/x/net v0.19.0 // indirect + golang.org/x/sys v0.15.0 golang.org/x/time v0.3.0 // indirect google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e // indirect google.golang.org/grpc v1.56.2 @@ -38,7 +38,7 @@ require ( require ( github.com/lithammer/shortuuid/v3 v3.0.7 - golang.org/x/sync v0.3.0 + golang.org/x/sync v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc ) diff --git a/go.sum b/go.sum index a0a0fcaf3..edfd2fb47 100644 --- a/go.sum +++ b/go.sum @@ -40,10 +40,8 @@ github.com/0chain/common v0.0.6-0.20230127095721-8df4d1d72565 h1:z+DtCR8mBsjPnEs github.com/0chain/common v0.0.6-0.20230127095721-8df4d1d72565/go.mod h1:UyDC8Qyl5z9lGkCnf9RHJPMektnFX8XtCJZHXCCVj8E= github.com/0chain/errors v1.0.3 h1:QQZPFxTfnMcRdt32DXbzRQIfGWmBsKoEdszKQDb0rRM= github.com/0chain/errors v1.0.3/go.mod h1:xymD6nVgrbgttWwkpSCfLLEJbFO6iHGQwk/yeSuYkIc= -github.com/0chain/gosdk v1.11.0 h1:PSD4ohQaaSOsH/sHvfnCbq35Bs5fCtL1g9S4vyvxQOY= -github.com/0chain/gosdk v1.11.0/go.mod h1:DAg/de6vodjEa7CM1/LjElOwntRtNV5lb9rMRaR7fzU= -github.com/0chain/gosdk v1.11.8-0.20240121220047-6f48750d0df4 h1:et9y6ZvUDrpWGh7akBAyW8EYc//hnzZRBW5nTiwRye8= -github.com/0chain/gosdk v1.11.8-0.20240121220047-6f48750d0df4/go.mod h1:DAg/de6vodjEa7CM1/LjElOwntRtNV5lb9rMRaR7fzU= +github.com/0chain/gosdk v1.11.8-0.20240202182855-9568cf1b3c0d h1:dbjoiBvLqC9AUtcS0xg1kl4fut1Pzs0ynWNBQ3V3W7A= +github.com/0chain/gosdk v1.11.8-0.20240202182855-9568cf1b3c0d/go.mod h1:ew7kU2Cf1Y/CzoxMqtnmflD1CuSPaOI5TukoXA26Sz4= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= @@ -894,8 +892,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= -golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -932,8 +930,8 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -980,8 +978,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1003,8 +1001,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1072,8 +1070,8 @@ golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1154,8 +1152,8 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= -golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM= +golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 7de38336a5fc16c07c03ee52b12010f1d4080cf7 Mon Sep 17 00:00:00 2001 From: Hitenjain14 Date: Mon, 5 Feb 2024 00:13:50 +0530 Subject: [PATCH 06/10] update gosdk --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3a053467e..5ff5e09ec 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( github.com/0chain/errors v1.0.3 - github.com/0chain/gosdk v1.11.8-0.20240202182855-9568cf1b3c0d + github.com/0chain/gosdk v1.12.0-RC5 github.com/DATA-DOG/go-sqlmock v1.5.0 github.com/didip/tollbooth/v6 v6.1.2 github.com/go-openapi/runtime v0.26.0 diff --git a/go.sum b/go.sum index edfd2fb47..209118b4e 100644 --- a/go.sum +++ b/go.sum @@ -40,8 +40,8 @@ github.com/0chain/common v0.0.6-0.20230127095721-8df4d1d72565 h1:z+DtCR8mBsjPnEs github.com/0chain/common v0.0.6-0.20230127095721-8df4d1d72565/go.mod h1:UyDC8Qyl5z9lGkCnf9RHJPMektnFX8XtCJZHXCCVj8E= github.com/0chain/errors v1.0.3 h1:QQZPFxTfnMcRdt32DXbzRQIfGWmBsKoEdszKQDb0rRM= github.com/0chain/errors v1.0.3/go.mod h1:xymD6nVgrbgttWwkpSCfLLEJbFO6iHGQwk/yeSuYkIc= -github.com/0chain/gosdk v1.11.8-0.20240202182855-9568cf1b3c0d h1:dbjoiBvLqC9AUtcS0xg1kl4fut1Pzs0ynWNBQ3V3W7A= -github.com/0chain/gosdk v1.11.8-0.20240202182855-9568cf1b3c0d/go.mod h1:ew7kU2Cf1Y/CzoxMqtnmflD1CuSPaOI5TukoXA26Sz4= +github.com/0chain/gosdk v1.12.0-RC5 h1:/wlPxavQY6thWR77qdVgB72L+XeIUwwhlLMI1Ti/Pwo= +github.com/0chain/gosdk v1.12.0-RC5/go.mod h1:ew7kU2Cf1Y/CzoxMqtnmflD1CuSPaOI5TukoXA26Sz4= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= From 3a83e65ad3e2c387ced830c3b942562a02a39607 Mon Sep 17 00:00:00 2001 From: Hitenjain14 Date: Mon, 5 Feb 2024 00:39:06 +0530 Subject: [PATCH 07/10] get hard fork --- code/go/0chain.net/blobbercore/challenge/worker.go | 13 +++++++++---- code/go/0chain.net/core/common/handler/worker.go | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/code/go/0chain.net/blobbercore/challenge/worker.go b/code/go/0chain.net/blobbercore/challenge/worker.go index 0c1665eeb..44bae5d35 100644 --- a/code/go/0chain.net/blobbercore/challenge/worker.go +++ b/code/go/0chain.net/blobbercore/challenge/worker.go @@ -76,6 +76,7 @@ func startPullWorker(ctx context.Context) { func startWorkers(ctx context.Context) { setRound() + setHardFork() go getRoundWorker(ctx) // start challenge listeners @@ -93,14 +94,18 @@ func getRoundWorker(ctx context.Context) { return case <-ticker.C: setRound() - if hardForkRound == math.MaxInt64 { - hardForkRound, _ = zcncore.GetHardForkRound(HARDFORK_NAME) - logging.Logger.Info("hard_fork_round", zap.Any("round", hardForkRound)) - } + setHardFork() } } } +func setHardFork() { + if hardForkRound == math.MaxInt64 { + hardForkRound, _ = zcncore.GetHardForkRound(HARDFORK_NAME) + logging.Logger.Info("hard_fork_round", zap.Any("round", hardForkRound)) + } +} + func setRound() { currentRound, _ := zcncore.GetRoundFromSharders() diff --git a/code/go/0chain.net/core/common/handler/worker.go b/code/go/0chain.net/core/common/handler/worker.go index e8c3d3a9f..190e8653d 100644 --- a/code/go/0chain.net/core/common/handler/worker.go +++ b/code/go/0chain.net/core/common/handler/worker.go @@ -53,6 +53,7 @@ func StartHealthCheck(ctx context.Context, provider common.ProviderType) { func setHardForkRound(ctx context.Context) { HardForkRound, _ = zcncore.GetHardForkRound(HARDFORK_NAME) + logging.Logger.Info("hard_fork_round", zap.Any("round", HardForkRound)) if HardForkRound == math.MaxInt64 { for { select { @@ -61,6 +62,7 @@ func setHardForkRound(ctx context.Context) { case <-time.After(5 * time.Minute): HardForkRound, _ = zcncore.GetHardForkRound(HARDFORK_NAME) if HardForkRound != math.MaxInt64 { + logging.Logger.Info("hard_fork_round", zap.Any("round", HardForkRound)) return } } From 03be7a6be88b37cc76896cbfdb5a1c1d476daeef Mon Sep 17 00:00:00 2001 From: Hitenjain14 Date: Mon, 5 Feb 2024 02:05:23 +0530 Subject: [PATCH 08/10] start worker for validator --- code/go/0chain.net/core/common/handler/worker.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/go/0chain.net/core/common/handler/worker.go b/code/go/0chain.net/core/common/handler/worker.go index 190e8653d..6ce526cab 100644 --- a/code/go/0chain.net/core/common/handler/worker.go +++ b/code/go/0chain.net/core/common/handler/worker.go @@ -20,7 +20,6 @@ const HARDFORK_NAME = "apollo" var HardForkRound int64 = math.MaxInt64 func StartHealthCheck(ctx context.Context, provider common.ProviderType) { - go setHardForkRound(ctx) var t time.Duration switch provider { @@ -28,7 +27,7 @@ func StartHealthCheck(ctx context.Context, provider common.ProviderType) { t = blobConfig.Configuration.HealthCheckWorkerFreq case common.ProviderTypeValidator: t = valConfig.Configuration.HealthCheckWorkerFreq - + go setHardForkRound(ctx) } for { From 9607c623683bb505b31f704ea08878d10dbf4d65 Mon Sep 17 00:00:00 2001 From: Hitenjain14 Date: Mon, 5 Feb 2024 02:08:00 +0530 Subject: [PATCH 09/10] add log for hard fork --- code/go/0chain.net/validatorcore/storage/models.go | 1 + 1 file changed, 1 insertion(+) diff --git a/code/go/0chain.net/validatorcore/storage/models.go b/code/go/0chain.net/validatorcore/storage/models.go index 9f100c545..dde593f1b 100644 --- a/code/go/0chain.net/validatorcore/storage/models.go +++ b/code/go/0chain.net/validatorcore/storage/models.go @@ -398,6 +398,7 @@ type ValidationTicket struct { func (vt *ValidationTicket) Sign(round int64) error { var hashData string + logging.Logger.Info("signing_validation_ticket", zap.Int64("round", round), zap.Int64("hard_fork_round", handler.HardForkRound)) if round >= handler.HardForkRound { hashData = fmt.Sprintf("%v:%v:%v:%v", vt.ChallengeID, vt.BlobberID, vt.Result, vt.Timestamp) } else { From 5ac704156ecea1d054da38f79615b758f4e23bae Mon Sep 17 00:00:00 2001 From: Hitenjain14 Date: Thu, 8 Feb 2024 01:09:49 +0530 Subject: [PATCH 10/10] change hardfork name --- code/go/0chain.net/blobbercore/challenge/worker.go | 2 +- code/go/0chain.net/core/common/handler/worker.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/go/0chain.net/blobbercore/challenge/worker.go b/code/go/0chain.net/blobbercore/challenge/worker.go index 44bae5d35..dbec9d95f 100644 --- a/code/go/0chain.net/blobbercore/challenge/worker.go +++ b/code/go/0chain.net/blobbercore/challenge/worker.go @@ -18,7 +18,7 @@ import ( ) const GetRoundInterval = 3 * time.Minute -const HARDFORK_NAME = "apollo" +const HARDFORK_NAME = "hard_fork_2" var hardForkRound int64 = math.MaxInt64 diff --git a/code/go/0chain.net/core/common/handler/worker.go b/code/go/0chain.net/core/common/handler/worker.go index 6ce526cab..ca080d38e 100644 --- a/code/go/0chain.net/core/common/handler/worker.go +++ b/code/go/0chain.net/core/common/handler/worker.go @@ -15,7 +15,7 @@ import ( "go.uber.org/zap" ) -const HARDFORK_NAME = "apollo" +const HARDFORK_NAME = "hard_fork_2" var HardForkRound int64 = math.MaxInt64