Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add reset address command #107

Merged
merged 3 commits into from
Jun 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
jobs:

build:
runs-on: Ubuntu-20.04
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/golangci-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
jobs:
golangci:
name: lint
runs-on: ubuntu-latest
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Deps
Expand Down
6 changes: 6 additions & 0 deletions api/client/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ type IMessager interface {
ActiveAddress(ctx context.Context, addr address.Address) (address.Address, error) //perm:admin
SetSelectMsgNum(ctx context.Context, addr address.Address, num uint64) (address.Address, error) //perm:admin
SetFeeParams(ctx context.Context, addr address.Address, gasOverEstimation float64, maxFee, maxFeeCap string) (address.Address, error) //perm:admin
ResetAddress(ctx context.Context, addr address.Address, nonce uint64) (uint64, error) //perm:admin

GetSharedParams(ctx context.Context) (*types.SharedParams, error) //perm:admin
SetSharedParams(ctx context.Context, params *types.SharedParams) (struct{}, error) //perm:admin
Expand Down Expand Up @@ -101,6 +102,7 @@ type Message struct {
ActiveAddress func(ctx context.Context, addr address.Address) (address.Address, error)
SetSelectMsgNum func(ctx context.Context, addr address.Address, num uint64) (address.Address, error)
SetFeeParams func(ctx context.Context, addr address.Address, gasOverEstimation float64, maxFee, maxFeeCap string) (address.Address, error)
ResetAddress func(ctx context.Context, addr address.Address, nonce uint64) (uint64, error)

GetSharedParams func(context.Context) (*types.SharedParams, error)
SetSharedParams func(context.Context, *types.SharedParams) (struct{}, error)
Expand Down Expand Up @@ -242,6 +244,10 @@ func (message *Message) SetSelectMsgNum(ctx context.Context, addr address.Addres
return message.Internal.SetSelectMsgNum(ctx, addr, num)
}

func (message *Message) ResetAddress(ctx context.Context, addr address.Address, nonce uint64) (uint64, error) {
return message.Internal.ResetAddress(ctx, addr, nonce)
}

func (message *Message) SetFeeParams(ctx context.Context, addr address.Address, gasOverEstimation float64, maxFee, maxFeeCap string) (address.Address, error) {
return message.Internal.SetFeeParams(ctx, addr, gasOverEstimation, maxFee, maxFeeCap)
}
Expand Down
67 changes: 34 additions & 33 deletions api/controller/auth_map.go
Original file line number Diff line number Diff line change
@@ -1,47 +1,48 @@
package controller

var AuthMap = map[string]string{
"DeleteNode": "admin",
"PushMessage": "write",
"GetMessageBySignedCid": "read",
"ListBlockedMessage": "admin",
"HasAddress": "read",
"ListNode": "admin",
"ListenWalletEvent": "write",
"SupportNewAccount": "write",
"PushMessageWithId": "write",
"UpdateFilledMessageByID": "admin",
"UpdateNonce": "admin",
"GetNode": "admin",
"ListMessage": "admin",
"HasNode": "admin",
"ResponseEvent": "write",
"HasMessageByUid": "read",
"ListMessageByAddress": "admin",
"HasAddress": "read",
"RefreshSharedParams": "admin",
"SetFeeParams": "admin",
"GetMessageByUid": "read",
"ListFailedMessage": "admin",
"ListAddress": "admin",
"UpdateMessageStateByID": "admin",
"ReplaceMessage": "admin",
"SaveAddress": "admin",
"DeleteAddress": "admin",
"ActiveAddress": "admin",
"GetMessageBySignedCid": "read",
"GetMessageByUnsignedCid": "read",
"ListMessageByFromState": "admin",
"RepublishMessage": "admin",
"GetSharedParams": "admin",
"MarkBadMessage": "admin",
"ResetAddress": "admin",
"SetSharedParams": "admin",
"SupportNewAccount": "write",
"WaitMessage": "read",
"PushMessageWithId": "write",
"UpdateFilledMessageByID": "admin",
"SaveAddress": "admin",
"RefreshSharedParams": "admin",
"ListNode": "admin",
"GetNode": "admin",
"HasMessageByUid": "read",
"GetMessageByCid": "read",
"ListMessageByFromState": "admin",
"ListBlockedMessage": "admin",
"HasNode": "admin",
"ResponseEvent": "write",
"SetLogLevel": "admin",
"GetAddress": "admin",
"WalletHas": "read",
"ForbiddenAddress": "admin",
"SetSelectMsgNum": "admin",
"GetSharedParams": "admin",
"PushMessage": "write",
"GetMessageByFromAndNonce": "read",
"UpdateAllFilledMessage": "admin",
"MarkBadMessage": "admin",
"ActiveAddress": "admin",
"ReplaceMessage": "admin",
"ListMessage": "admin",
"SaveNode": "admin",
"ListenWalletEvent": "write",
"GetMessageByUnsignedCid": "read",
"ListMessageByAddress": "admin",
"UpdateMessageStateByID": "admin",
"ListAddress": "admin",
"DeleteAddress": "admin",
"SetFeeParams": "admin",
"WalletHas": "read",
"SetLogLevel": "admin",
"DeleteNode": "admin",
"WaitMessage": "read",
"UpdateAllFilledMessage": "admin",
"SetSelectMsgNum": "admin",
}
48 changes: 46 additions & 2 deletions cli/address.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@ var AddrCmds = &cli.Command{
listAddrCmd,
deleteAddrCmd,
//updateNonceCmd,
forbiddenAddrCmd,
activeAddrCmd,
//forbiddenAddrCmd,
//activeAddrCmd,
setAddrSelMsgNumCmd,
setFeeParamsCmd,
resetAddrCmd,
},
}

Expand Down Expand Up @@ -145,6 +146,7 @@ var deleteAddrCmd = &cli.Command{
},
}

// nolint
var forbiddenAddrCmd = &cli.Command{
Name: "forbidden",
Usage: "forbidden address",
Expand Down Expand Up @@ -182,6 +184,7 @@ var forbiddenAddrCmd = &cli.Command{
},
}

// nolint
var activeAddrCmd = &cli.Command{
Name: "active",
Usage: "activate a frozen address",
Expand Down Expand Up @@ -290,3 +293,44 @@ var setFeeParamsCmd = &cli.Command{
return err
},
}

var resetAddrCmd = &cli.Command{
Name: "reset",
Usage: "reset address nonce",
ArgsUsage: "address",
Flags: []cli.Flag{
ReallyDoItFlag,
&cli.Uint64Flag{
Name: "nonce",
Usage: "The nonce you want to set",
},
},
Action: func(ctx *cli.Context) error {
client, closer, err := getAPI(ctx)
if err != nil {
return err
}
defer closer()

if !ctx.Bool("really-do-it") {
return xerrors.New("confirm to exec this command, specify --really-do-it")
}
if !ctx.Args().Present() {
return xerrors.Errorf("must pass address")
}

addr, err := address.NewFromString(ctx.Args().First())
if err != nil {
return err
}
fmt.Println("It will take dozens of seconds.")

currentNonce, err := client.ResetAddress(ctx.Context, addr, ctx.Uint64("nonce"))
if err != nil {
return err
}
fmt.Printf("address %s current nonce %d \n", addr.String(), currentNonce)

return nil
},
}
10 changes: 6 additions & 4 deletions cli/msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ import (
"github.com/filecoin-project/venus-messager/types"
)

var ReallyDoItFlag = &cli.BoolFlag{
Name: "really-do-it",
Usage: "specify this flag to confirm mark-bad",
}

var MsgCmds = &cli.Command{
Name: "msg",
Usage: "message commands",
Expand Down Expand Up @@ -545,10 +550,7 @@ var markBadCmd = &cli.Command{
Name: "mark-bad",
Usage: "mark bad message",
Flags: []cli.Flag{
&cli.BoolFlag{
Name: "really-do-it",
Usage: "specify this flag to confirm mark-bad",
},
ReallyDoItFlag,
&cli.StringFlag{
Name: "from",
Usage: "mark unfill message as bad message if specify this flag",
Expand Down
9 changes: 3 additions & 6 deletions models/message_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ func TestSaveAndGetMessage(t *testing.T) {
assert.NoError(t, err)
assert.LessOrEqual(t, 1, len(allMsg))

unchainedMsgs, err := messageRepo.ListUnchainedMsgs()
unFilledMsgs, err := messageRepo.ListUnFilledMessage(msg.From)
assert.NoError(t, err)
assert.LessOrEqual(t, 1, len(unchainedMsgs))
assert.LessOrEqual(t, 1, len(unFilledMsgs))

signedMsg := NewSignedMessages(1)[0]
err = messageRepo.CreateMessage(signedMsg)
Expand Down Expand Up @@ -172,7 +172,7 @@ func TestGetMessageState(t *testing.T) {
assert.NoError(t, err)
state, err := messageRepo.GetMessageState(msg.ID)
assert.NoError(t, err)
assert.Equal(t, state, types.UnKnown)
assert.Equal(t, state, types.UnFillMsg)

for _, state := range []types.MessageState{types.UnFillMsg, types.FillMsg, types.OnChainMsg, types.FailedMsg} {
msg.State = state
Expand Down Expand Up @@ -350,7 +350,6 @@ func TestMarkBadMessage(t *testing.T) {

msgs := NewMessages(1)
for _, msg := range msgs {
msg.State = types.UnFillMsg
err := messageRepo.CreateMessage(msg)
assert.NoError(t, err)
}
Expand Down Expand Up @@ -380,7 +379,6 @@ func TestUpdateReturnValue(t *testing.T) {

msgs := NewMessages(2)
for _, msg := range msgs {
msg.State = types.UnFillMsg
err := messageRepo.CreateMessage(msg)
assert.NoError(t, err)
}
Expand Down Expand Up @@ -412,7 +410,6 @@ func TestListBlockedMessage(t *testing.T) {
messageRepoTest := func(t *testing.T, messageRepo repo.MessageRepo) {

msgs := NewMessages(3)
msgs[0].State = types.UnFillMsg
msgs[1].State = types.FillMsg
assert.NoError(t, messageRepo.CreateMessage(msgs[0]))
assert.NoError(t, messageRepo.CreateMessage(msgs[1]))
Expand Down
13 changes: 10 additions & 3 deletions models/mysql/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,14 @@ func (m *mysqlMessageRepo) GetMessageByFromAndNonce(from address.Address, nonce
return msg.Message(), nil
}

func (m *mysqlMessageRepo) GetMessageByFromNonceAndState(from address.Address, nonce uint64, state types.MessageState) (*types.Message, error) {
var msg mysqlMessage
if err := m.DB.Where("from_addr = ? and nonce = ? and state = ?", from.String(), nonce, state).Take(&msg).Error; err != nil {
return nil, err
}
return msg.Message(), nil
}

func (m *mysqlMessageRepo) ListMessage() ([]*types.Message, error) {
var sqlMsgs []*mysqlMessage
if err := m.DB.Find(&sqlMsgs).Error; err != nil {
Expand Down Expand Up @@ -447,11 +455,10 @@ func (m *mysqlMessageRepo) ListBlockedMessage(addr address.Address, d time.Durat
return result, nil
}

func (m *mysqlMessageRepo) ListUnchainedMsgs() ([]*types.Message, error) {
func (m *mysqlMessageRepo) ListUnFilledMessage(addr address.Address) ([]*types.Message, error) {
var sqlMsgs []*mysqlMessage
if err := m.DB.Model((*mysqlMessage)(nil)).
Where("height=0 and signed_data is null").
Find(&sqlMsgs).Error; err != nil {
Find(&sqlMsgs, "from_addr = ? AND state = ?", addr.String(), types.UnFillMsg).Error; err != nil {
return nil, err
}

Expand Down
9 changes: 5 additions & 4 deletions models/mysql/shared_params.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package mysql

import (
"context"

"github.com/filecoin-project/go-state-types/big"

"gorm.io/gorm"
Expand Down Expand Up @@ -31,8 +32,8 @@ func FromSharedParams(sp types.SharedParams) *mysqlSharedParams {
ID: sp.ID,
ExpireEpoch: sp.ExpireEpoch,
GasOverEstimation: sp.GasOverEstimation,
MaxFee: types.Int{sp.MaxFee.Int},
MaxFeeCap: types.Int{sp.MaxFeeCap.Int},
MaxFee: types.Int{Int: sp.MaxFee.Int},
MaxFeeCap: types.Int{Int: sp.MaxFeeCap.Int},
SelMsgNum: sp.SelMsgNum,
ScanInterval: sp.ScanInterval,
MaxEstFailNumOfMsg: sp.MaxEstFailNumOfMsg,
Expand Down Expand Up @@ -91,8 +92,8 @@ func (s mysqlSharedParamsRepo) SetSharedParams(ctx context.Context, params *type

ssp.ExpireEpoch = params.ExpireEpoch
ssp.GasOverEstimation = params.GasOverEstimation
ssp.MaxFeeCap = types.Int{params.MaxFeeCap.Int}
ssp.MaxFee = types.Int{params.MaxFee.Int}
ssp.MaxFeeCap = types.Int{Int: params.MaxFeeCap.Int}
ssp.MaxFee = types.Int{Int: params.MaxFee.Int}

ssp.SelMsgNum = params.SelMsgNum

Expand Down
3 changes: 2 additions & 1 deletion models/repo/message_repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ type MessageRepo interface {
SaveMessage(msg *types.Message) error

GetMessageByFromAndNonce(from address.Address, nonce uint64) (*types.Message, error)
GetMessageByFromNonceAndState(from address.Address, nonce uint64, state types.MessageState) (*types.Message, error)
GetMessageByUid(id string) (*types.Message, error)
HasMessageByUid(id string) (bool, error)
GetMessageState(id string) (types.MessageState, error)
Expand All @@ -34,7 +35,7 @@ type MessageRepo interface {
ListUnChainMessageByAddress(addr address.Address, topN int) ([]*types.Message, error)
ListFilledMessageByAddress(addr address.Address) ([]*types.Message, error)
ListFilledMessageByHeight(height abi.ChainEpoch) ([]*types.Message, error)
ListUnchainedMsgs() ([]*types.Message, error)
ListUnFilledMessage(addr address.Address) ([]*types.Message, error)
ListSignedMsgs() ([]*types.Message, error)
ListFilledMessageBelowNonce(addr address.Address, nonce uint64) ([]*types.Message, error)

Expand Down
13 changes: 10 additions & 3 deletions models/sqlite/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,14 @@ func (m *sqliteMessageRepo) GetMessageByFromAndNonce(from address.Address, nonce
return msg.Message(), nil
}

func (m *sqliteMessageRepo) GetMessageByFromNonceAndState(from address.Address, nonce uint64, state types.MessageState) (*types.Message, error) {
var msg sqliteMessage
if err := m.DB.Where("from_addr = ? and nonce = ? and state = ?", from.String(), nonce, state).Take(&msg).Error; err != nil {
return nil, err
}
return msg.Message(), nil
}

func (m *sqliteMessageRepo) ListMessage() ([]*types.Message, error) {
var sqlMsgs []*sqliteMessage
if err := m.DB.Find(&sqlMsgs).Error; err != nil {
Expand Down Expand Up @@ -448,11 +456,10 @@ func (m *sqliteMessageRepo) ListBlockedMessage(addr address.Address, d time.Dura
return result, nil
}

func (m *sqliteMessageRepo) ListUnchainedMsgs() ([]*types.Message, error) {
func (m *sqliteMessageRepo) ListUnFilledMessage(addr address.Address) ([]*types.Message, error) {
var sqlMsgs []*sqliteMessage
if err := m.DB.Model((*sqliteMessage)(nil)).
Where("height=0 and signed_data is null").
Find(&sqlMsgs).Error; err != nil {
Find(&sqlMsgs, "from_addr = ? AND state = ?", addr.String(), types.UnFillMsg).Error; err != nil {
return nil, err
}

Expand Down
Loading