Skip to content

Commit 709908d

Browse files
Yashk767shekhar2807ashish10677shyam-patel-kirarajkharvar
authored
Merged v1 into v1.3.0-aplha with hotfixes (#966)
* Hotfix-proposed data (#913) * Updated propose data global variables correctly * Fixed tests * Returned correct waitForBlockCompletion error * coverage increase * GetLocalData returns type types.ProposeFileData * fixed benchmark * Fetched Last proposed from contracts (#917) * fetched getLastProposedEpoch from contracts and tests for it * typo fix * V1 propose hotfix (#918) * Change propose.go to get sorted proposed block ids. * Fix sorted proposed block issue. Signed-off-by: Ashish Kumar Mishra <[email protected]> * allow stakers to addStake < minSafeRazor (#928) * Call claimStakerReward only if there reward to claim (#926) * Make contract call only if there is commission to claim * Add tests for claimCommission file * update check * Hotfix-giveSorted (#921) * ResetDispute only done after FinalizeDispute * Fixed tests * Update README (#931) * Update README * Update logs path * Fix home dir path * Add logs to vote.go and commit.go Signed-off-by: Ashish Kumar Mishra <[email protected]> * Add logs for dispute and propose. Signed-off-by: Ashish Kumar Mishra <[email protected]> * Fix tests. Signed-off-by: Ashish Kumar Mishra <[email protected]> * Suppress unneccessary error logs. (#935) Signed-off-by: Ashish Kumar Mishra <[email protected]> * changed http timeout to 30 sec (#943) * saving commit data only after successfull commit (#947) * Added password flag (#946) * added password flag * README updated * Hotfix-giveSorted (new implementation) (#953) * GiveSorted linear recursion * Added backupNode flag * Compilation success for tests * Fixed tests * removed recusrsion, called giveSorted linearly * fixed tests * Added leafId to giveSortedLeafIds[] on successful giveSorted * Hotfix-sortedProposedBlocks (#957) * Shuffled copied slice instead of original slice * returned error from giveSorted when len(sortedValues)=0 * Fixed dispute tests * Changed pending nonce at to nonce at. (#948) * Changed pending nonce at to nonce at. * Update mockery Signed-off-by: Ashish Kumar Mishra <[email protected]> * Hotfix -RPCTimeout (#955) * Added a generic function with timeout for contract calls * Moved generic function to utils and implemented to all contract getter calls * Implemented timeout for contract setter functions * rpc timeout custom error * type asserting structs from contract mappings * Shifted timeout to constants * passed timeout in int in constants.go * Added rpcTimeout as config * Removed errorIndex paramter from CheckIfAnyError() * Function renamed * Fixed tests * Unrequired change * Added backup node info in readme (#963) * Passed a initialized varible instead of nil value as a parameter Signed-off-by: Ashish Kumar Mishra <[email protected]> Co-authored-by: Shekhar Gaur <[email protected]> Co-authored-by: Ashish Kumar Mishra <[email protected]> Co-authored-by: Shyam Patel <[email protected]> Co-authored-by: Raj Kharvar <[email protected]> Co-authored-by: Skanda Bhat <[email protected]>
1 parent ba96f0e commit 709908d

Some content is hidden

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

75 files changed

+2093
-988
lines changed

README.md

+141-35
Large diffs are not rendered by default.

cmd/addStake.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func (*UtilsStruct) ExecuteStake(flagSet *pflag.FlagSet) {
4343
logger.SetLoggerParameters(client, address)
4444
razorUtils.AssignLogFile(flagSet)
4545

46-
password := razorUtils.AssignPassword()
46+
password := razorUtils.AssignPassword(flagSet)
4747

4848
balance, err := razorUtils.FetchBalance(client, address)
4949
utils.CheckError("Error in fetching razor balance for account: "+address, err)
@@ -57,7 +57,10 @@ func (*UtilsStruct) ExecuteStake(flagSet *pflag.FlagSet) {
5757
minSafeRazor, err := utils.UtilsInterface.GetMinSafeRazor(client)
5858
utils.CheckError("Error in getting minimum safe razor amount: ", err)
5959

60-
if valueInWei.Cmp(minSafeRazor) < 0 {
60+
stakerId, err := razorUtils.GetStakerId(client, address)
61+
utils.CheckError("Error in getting stakerId: ", err)
62+
63+
if valueInWei.Cmp(minSafeRazor) < 0 && stakerId == 0 {
6164
log.Fatal("The amount of razors entered is below min safe value.")
6265
}
6366

@@ -111,11 +114,13 @@ func init() {
111114
var (
112115
Amount string
113116
Address string
117+
Password string
114118
WeiRazor bool
115119
)
116120

117121
stakeCmd.Flags().StringVarP(&Amount, "value", "v", "0", "amount of Razors to stake")
118122
stakeCmd.Flags().StringVarP(&Address, "address", "a", "", "address of the staker")
123+
stakeCmd.Flags().StringVarP(&Password, "password", "", "", "password path of staker to protect the keystore")
119124
stakeCmd.Flags().BoolVarP(&WeiRazor, "weiRazor", "", false, "value can be passed in wei")
120125

121126
amountErr := stakeCmd.MarkFlagRequired("value")

cmd/addStake_test.go

+27-2
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,8 @@ func TestExecuteStake(t *testing.T) {
147147
approveErr error
148148
minSafeRazor *big.Int
149149
minSafeRazorErr error
150+
stakerId uint32
151+
stakerIdErr error
150152
stakeTxn common.Hash
151153
stakeErr error
152154
}
@@ -164,6 +166,7 @@ func TestExecuteStake(t *testing.T) {
164166
amount: big.NewInt(2000),
165167
balance: big.NewInt(10000),
166168
minSafeRazor: big.NewInt(0),
169+
stakerId: 1,
167170
approveTxn: common.BigToHash(big.NewInt(1)),
168171
stakeTxn: common.BigToHash(big.NewInt(2)),
169172
},
@@ -179,6 +182,7 @@ func TestExecuteStake(t *testing.T) {
179182
amount: big.NewInt(2000),
180183
balance: big.NewInt(10000),
181184
minSafeRazor: big.NewInt(0),
185+
stakerId: 1,
182186
approveTxn: common.BigToHash(big.NewInt(1)),
183187
stakeTxn: common.BigToHash(big.NewInt(2)),
184188
},
@@ -194,6 +198,7 @@ func TestExecuteStake(t *testing.T) {
194198
amount: big.NewInt(2000),
195199
balance: big.NewInt(10000),
196200
minSafeRazor: big.NewInt(0),
201+
stakerId: 1,
197202
approveTxn: common.BigToHash(big.NewInt(1)),
198203
stakeTxn: common.BigToHash(big.NewInt(2)),
199204
},
@@ -222,6 +227,7 @@ func TestExecuteStake(t *testing.T) {
222227
amount: big.NewInt(2000),
223228
balance: big.NewInt(10000),
224229
minSafeRazor: big.NewInt(0),
230+
stakerId: 1,
225231
approveTxn: core.NilHash,
226232
approveErr: errors.New("approve error"),
227233
stakeTxn: common.BigToHash(big.NewInt(2)),
@@ -237,6 +243,7 @@ func TestExecuteStake(t *testing.T) {
237243
amount: big.NewInt(2000),
238244
balance: big.NewInt(10000),
239245
minSafeRazor: big.NewInt(0),
246+
stakerId: 1,
240247
approveTxn: common.BigToHash(big.NewInt(1)),
241248
stakeTxn: core.NilHash,
242249
stakeErr: errors.New("stake error"),
@@ -251,6 +258,7 @@ func TestExecuteStake(t *testing.T) {
251258
address: "0x000000000000000000000000000000000000dead",
252259
amount: big.NewInt(2000),
253260
minSafeRazor: big.NewInt(0),
261+
stakerId: 1,
254262
balance: nil,
255263
balanceErr: errors.New("balance error"),
256264
approveTxn: common.BigToHash(big.NewInt(1)),
@@ -259,17 +267,33 @@ func TestExecuteStake(t *testing.T) {
259267
expectedFatal: true,
260268
},
261269
{
262-
name: "Test 8: When stake value is less than minSafeRazor",
270+
name: "Test 8: When stake value is less than minSafeRazor and staker has never staked",
263271
args: args{
264272
config: config,
265273
password: "test",
266274
address: "0x000000000000000000000000000000000000dead",
267275
amount: big.NewInt(20),
268276
balance: big.NewInt(10000),
269277
minSafeRazor: big.NewInt(100),
278+
stakerId: 0,
270279
},
271280
expectedFatal: true,
272281
},
282+
{
283+
name: "Test 9: When stake value is less than minSafeRazor and staker's stake is more than the minSafeRazor already",
284+
args: args{
285+
config: config,
286+
password: "test",
287+
address: "0x000000000000000000000000000000000000dead",
288+
amount: big.NewInt(20),
289+
balance: big.NewInt(10000),
290+
minSafeRazor: big.NewInt(100),
291+
stakerId: 1,
292+
approveTxn: common.BigToHash(big.NewInt(1)),
293+
stakeTxn: common.BigToHash(big.NewInt(2)),
294+
},
295+
expectedFatal: false,
296+
},
273297
}
274298

275299
defer func() { log.ExitFunc = nil }()
@@ -290,7 +314,7 @@ func TestExecuteStake(t *testing.T) {
290314

291315
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
292316
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
293-
utilsMock.On("AssignPassword").Return(tt.args.password)
317+
utilsMock.On("AssignPassword", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.password)
294318
flagSetUtilsMock.On("GetStringAddress", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.address, tt.args.addressErr)
295319
utilsMock.On("ConnectToClient", mock.AnythingOfType("string")).Return(client)
296320
utilsMock.On("WaitForBlockCompletion", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("string")).Return(nil)
@@ -299,6 +323,7 @@ func TestExecuteStake(t *testing.T) {
299323
utilsMock.On("CheckAmountAndBalance", mock.AnythingOfType("*big.Int"), mock.AnythingOfType("*big.Int")).Return(tt.args.amount)
300324
utilsMock.On("CheckEthBalanceIsZero", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("string")).Return()
301325
utilsPkgMock.On("GetMinSafeRazor", mock.AnythingOfType("*ethclient.Client")).Return(tt.args.minSafeRazor, tt.args.minSafeRazorErr)
326+
utilsMock.On("GetStakerId", mock.Anything, mock.Anything).Return(tt.args.stakerId, tt.args.stakerIdErr)
302327
cmdUtilsMock.On("Approve", mock.Anything).Return(tt.args.approveTxn, tt.args.approveErr)
303328
cmdUtilsMock.On("StakeCoins", mock.Anything).Return(tt.args.stakeTxn, tt.args.stakeErr)
304329

cmd/claimBounty.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func (*UtilsStruct) ExecuteClaimBounty(flagSet *pflag.FlagSet) {
4545
logger.SetLoggerParameters(client, address)
4646
razorUtils.AssignLogFile(flagSet)
4747

48-
password := razorUtils.AssignPassword()
48+
password := razorUtils.AssignPassword(flagSet)
4949

5050
if utilsInterface.IsFlagPassed("bountyId") {
5151
bountyId, err := flagSetUtils.GetUint32BountyId(flagSet)
@@ -183,10 +183,12 @@ func init() {
183183
rootCmd.AddCommand(claimBountyCmd)
184184
var (
185185
Address string
186+
Password string
186187
BountyId uint32
187188
)
188189

189190
claimBountyCmd.Flags().StringVarP(&Address, "address", "a", "", "address of the staker")
191+
claimBountyCmd.Flags().StringVarP(&Password, "password", "", "", "password path of staker to protect the keystore")
190192
claimBountyCmd.Flags().Uint32VarP(&BountyId, "bountyId", "", 0, "bountyId of the bounty hunter")
191193

192194
addrErr := claimBountyCmd.MarkFlagRequired("address")

cmd/claimBounty_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func TestExecuteClaimBounty(t *testing.T) {
136136

137137
utilsMock.On("AssignLogFile", mock.AnythingOfType("*pflag.FlagSet"))
138138
cmdUtilsMock.On("GetConfigData").Return(tt.args.config, tt.args.configErr)
139-
utilsMock.On("AssignPassword").Return(tt.args.password)
139+
utilsMock.On("AssignPassword", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.password)
140140
flagSetUtilsMock.On("GetStringAddress", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.address, tt.args.addressErr)
141141
flagSetUtilsMock.On("GetUint32BountyId", mock.AnythingOfType("*pflag.FlagSet")).Return(tt.args.bountyId, tt.args.bountyIdErr)
142142
utilsMock.On("ConnectToClient", mock.AnythingOfType("string")).Return(client)

cmd/claimCommission.go

+37-24
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22
package cmd
33

44
import (
5-
"github.com/spf13/pflag"
5+
"math/big"
66
"razor/core"
77
"razor/core/types"
88
"razor/logger"
99
"razor/pkg/bindings"
1010
"razor/utils"
1111

12+
"github.com/spf13/pflag"
13+
1214
"github.com/spf13/cobra"
1315
)
1416

@@ -36,42 +38,53 @@ func (*UtilsStruct) ClaimCommission(flagSet *pflag.FlagSet) {
3638
logger.SetLoggerParameters(client, address)
3739
razorUtils.AssignLogFile(flagSet)
3840

39-
password := razorUtils.AssignPassword()
41+
password := razorUtils.AssignPassword(flagSet)
4042

4143
razorUtils.CheckEthBalanceIsZero(client, address)
4244

43-
txnOpts := razorUtils.GetTxnOpts(types.TransactionOptions{
44-
Client: client,
45-
AccountAddress: address,
46-
Password: password,
47-
ChainId: core.ChainId,
48-
Config: config,
49-
ContractAddress: core.StakeManagerAddress,
50-
MethodName: "claimStakerReward",
51-
Parameters: []interface{}{},
52-
ABI: bindings.StakeManagerABI,
53-
})
54-
55-
log.Info("Claiming commission")
56-
57-
txn, err := stakeManagerUtils.ClaimStakeReward(client, txnOpts)
58-
if err != nil {
59-
log.Fatal("Error in claiming stake reward: ", err)
45+
stakerId, err := razorUtils.GetStakerId(client, address)
46+
utils.CheckError("Error in getting stakerId: ", err)
47+
callOpts := razorUtils.GetOptions()
48+
49+
stakerInfo, err := stakeManagerUtils.StakerInfo(client, &callOpts, stakerId)
50+
utils.CheckError("Error in getting stakerInfo: ", err)
51+
52+
if stakerInfo.StakerReward.Cmp(big.NewInt(0)) > 0 {
53+
txnOpts := razorUtils.GetTxnOpts(types.TransactionOptions{
54+
Client: client,
55+
AccountAddress: address,
56+
Password: password,
57+
ChainId: core.ChainId,
58+
Config: config,
59+
ContractAddress: core.StakeManagerAddress,
60+
MethodName: "claimStakerReward",
61+
Parameters: []interface{}{},
62+
ABI: bindings.StakeManagerABI,
63+
})
64+
65+
log.Info("Claiming commission")
66+
67+
txn, err := stakeManagerUtils.ClaimStakeReward(client, txnOpts)
68+
utils.CheckError("Error in claiming stake reward: ", err)
69+
70+
err = razorUtils.WaitForBlockCompletion(client, transactionUtils.Hash(txn).String())
71+
utils.CheckError("Error in WaitForBlockCompletion for claimCommission: ", err)
72+
} else {
73+
log.Error("no commission to claim")
74+
return
6075
}
61-
62-
err = razorUtils.WaitForBlockCompletion(client, transactionUtils.Hash(txn).String())
63-
utils.CheckError("Error in WaitForBlockCompletion for claimCommission: ", err)
64-
6576
}
6677

6778
func init() {
6879
rootCmd.AddCommand(claimCommissionCmd)
6980

7081
var (
71-
Address string
82+
Address string
83+
Password string
7284
)
7385

7486
claimCommissionCmd.Flags().StringVarP(&Address, "address", "a", "", "address of the staker")
87+
claimCommissionCmd.Flags().StringVarP(&Password, "password", "", "", "password path of staker to protect the keystore")
7588

7689
addrErr := claimCommissionCmd.MarkFlagRequired("address")
7790
utils.CheckError("Address error: ", addrErr)

0 commit comments

Comments
 (0)