From d3c9393e0e14269ee97f3c546d44fcca7d064e5b Mon Sep 17 00:00:00 2001 From: simlecode <69969590+simlecode@users.noreply.github.com> Date: Tue, 21 Feb 2023 16:35:43 +0800 Subject: [PATCH 01/10] fix: resolve address before check permission --- api/messager_impl.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/api/messager_impl.go b/api/messager_impl.go index 9b08f782..c6ff0280 100644 --- a/api/messager_impl.go +++ b/api/messager_impl.go @@ -13,6 +13,7 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-jsonrpc/auth" "github.com/filecoin-project/venus-messager/publisher/pubsub" + v1 "github.com/filecoin-project/venus/venus-shared/api/chain/v1" "github.com/filecoin-project/venus/venus-shared/api/messager" venusTypes "github.com/filecoin-project/venus/venus-shared/types" types "github.com/filecoin-project/venus/venus-shared/types/messager" @@ -32,6 +33,7 @@ type ImplParams struct { SharedParamsService *service.SharedParamsService Net pubsub.INet AuthClient jwtclient.IAuthClient + NodeClient v1.FullNode } func NewMessageImp(implParams ImplParams) *MessageImp { @@ -42,6 +44,7 @@ func NewMessageImp(implParams ImplParams) *MessageImp { ParamsSrv: implParams.SharedParamsService, Net: implParams.Net, AuthClient: implParams.AuthClient, + NodeClient: implParams.NodeClient, } } @@ -52,6 +55,7 @@ type MessageImp struct { ParamsSrv *service.SharedParamsService Net pubsub.INet AuthClient jwtclient.IAuthClient + NodeClient v1.FullNode } var _ messager.IMessager = (*MessageImp)(nil) @@ -72,13 +76,21 @@ func (m MessageImp) WaitMessage(ctx context.Context, id string, confidence uint6 } func (m MessageImp) PushMessage(ctx context.Context, msg *venusTypes.Message, meta *types.SendSpec) (string, error) { - if err := jwtclient.CheckPermissionBySigner(ctx, m.AuthClient, msg.From); err != nil { - return "", err - } - return m.MessageSrv.PushMessage(ctx, msg, meta) + id := venusTypes.NewUUID().String() + return m.MessageSrv.PushMessageWithId(ctx, id, msg, meta) } func (m MessageImp) PushMessageWithId(ctx context.Context, id string, msg *venusTypes.Message, meta *types.SendSpec) (string, error) { + // replace address + if msg.From.Protocol() == address.ID { + fromA, err := m.NodeClient.StateAccountKey(ctx, msg.From, venusTypes.EmptyTSK) + if err != nil { + return "", fmt.Errorf("getting key address %s failed: %w", msg.From, err) + } + log.Warnf("Push from ID address (%s), adjusting to %s", msg.From, fromA) + msg.From = fromA + } + if err := jwtclient.CheckPermissionBySigner(ctx, m.AuthClient, msg.From); err != nil { return "", err } From 3d88ea3787e76be15132a617ad198690a638b38b Mon Sep 17 00:00:00 2001 From: simlecode <69969590+simlecode@users.noreply.github.com> Date: Tue, 21 Feb 2023 17:33:45 +0800 Subject: [PATCH 02/10] chore: fix test --- api/messager_impl.go | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/api/messager_impl.go b/api/messager_impl.go index c6ff0280..4e012ab9 100644 --- a/api/messager_impl.go +++ b/api/messager_impl.go @@ -75,22 +75,38 @@ func (m MessageImp) WaitMessage(ctx context.Context, id string, confidence uint6 return m.MessageSrv.WaitMessage(ctx, id, confidence) } +func (m MessageImp) resolveAddress(ctx context.Context, addr address.Address) (address.Address, error) { + if addr.Protocol() == address.ID { + addrTmp, err := m.NodeClient.StateAccountKey(ctx, addr, venusTypes.EmptyTSK) + if err != nil { + return address.Undef, fmt.Errorf("getting key address %s failed: %w", addr, err) + } + log.Infof("Push from ID address (%s), adjusting to %s", addr, addrTmp) + + addr = addrTmp + } + + return addr, nil +} + func (m MessageImp) PushMessage(ctx context.Context, msg *venusTypes.Message, meta *types.SendSpec) (string, error) { - id := venusTypes.NewUUID().String() - return m.MessageSrv.PushMessageWithId(ctx, id, msg, meta) + var err error + msg.From, err = m.resolveAddress(ctx, msg.From) + if err != nil { + return "", err + } + if err := jwtclient.CheckPermissionBySigner(ctx, m.AuthClient, msg.From); err != nil { + return "", err + } + return m.MessageSrv.PushMessage(ctx, msg, meta) } func (m MessageImp) PushMessageWithId(ctx context.Context, id string, msg *venusTypes.Message, meta *types.SendSpec) (string, error) { - // replace address - if msg.From.Protocol() == address.ID { - fromA, err := m.NodeClient.StateAccountKey(ctx, msg.From, venusTypes.EmptyTSK) - if err != nil { - return "", fmt.Errorf("getting key address %s failed: %w", msg.From, err) - } - log.Warnf("Push from ID address (%s), adjusting to %s", msg.From, fromA) - msg.From = fromA + var err error + msg.From, err = m.resolveAddress(ctx, msg.From) + if err != nil { + return "", err } - if err := jwtclient.CheckPermissionBySigner(ctx, m.AuthClient, msg.From); err != nil { return "", err } From a8321d14b1f7756491daddcd7d8e575fa7a7ab97 Mon Sep 17 00:00:00 2001 From: simlecode <69969590+simlecode@users.noreply.github.com> Date: Tue, 21 Feb 2023 17:47:47 +0800 Subject: [PATCH 03/10] chore: bump version to v1.10.0-rc3 --- CHANGELOG.md | 5 +++++ go.mod | 7 ++++--- go.sum | 19 +++++++++++-------- version/version.go | 2 +- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 695ead6a..88efacbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # venus-message changelog +## v1.10.0-rc3 + +1. 升级 venus 和 go-jsonrpc 版本 +2. 推送消息接口先解析地址再验证权限 + ## v1.10.0-rc1 支持 Filecoin NV18 网络升级 diff --git a/go.mod b/go.mod index 949f640d..597065cf 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/filecoin-project/go-jsonrpc v0.1.5 github.com/filecoin-project/go-state-types v0.10.0-rc3 github.com/filecoin-project/specs-actors/v5 v5.0.6 - github.com/filecoin-project/venus v1.10.0-rc2 + github.com/filecoin-project/venus v1.10.0-rc3 github.com/filecoin-project/venus-auth v1.10.0-rc2 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 @@ -225,7 +225,8 @@ require ( github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/hraban/lrucache v0.0.0-20201130153820-17052bf09781 // indirect - github.com/ipfs/go-block-format v0.0.3 // indirect + github.com/ipfs/go-block-format v0.1.1 // indirect + github.com/ipfs/go-libipfs v0.4.1 // indirect github.com/ipsn/go-secp256k1 v0.0.0-20180726113642-9d62b9f0bc52 // indirect github.com/libp2p/go-libp2p-core v0.20.1 // indirect github.com/libp2p/go-yamux/v4 v4.0.0 // indirect @@ -245,4 +246,4 @@ require ( gopkg.in/ini.v1 v1.66.6 // indirect ) -replace github.com/filecoin-project/go-jsonrpc => github.com/ipfs-force-community/go-jsonrpc v0.1.7-0.20230214070559-dbe74781184a +replace github.com/filecoin-project/go-jsonrpc => github.com/ipfs-force-community/go-jsonrpc v0.1.7-0.20230220074347-8db78dbc20d4 diff --git a/go.sum b/go.sum index a4bb0227..613165db 100644 --- a/go.sum +++ b/go.sum @@ -416,8 +416,8 @@ github.com/filecoin-project/specs-storage v0.4.1/go.mod h1:Z2eK6uMwAOSLjek6+sy0j github.com/filecoin-project/storetheindex v0.3.5/go.mod h1:0r3d0kSpK63O6AvLr1CjAINLi+nWD49clzcnKV+GLpI= github.com/filecoin-project/test-vectors/schema v0.0.5/go.mod h1:iQ9QXLpYWL3m7warwvK1JC/pTri8mnfEmKygNDqqY6E= github.com/filecoin-project/venus v1.2.4/go.mod h1:hJULXHGAnWuq5S5KRtPkwbT8DqgM9II7NwyNU7t59D0= -github.com/filecoin-project/venus v1.10.0-rc2 h1:bSPtGuLnLFTALFdHuHRpo9bkN4bnZ/2RlpNyiKC68Fs= -github.com/filecoin-project/venus v1.10.0-rc2/go.mod h1:khIm31fH1i/2q1aLBgRo5ULB+LbSKiNsKfwQORKD+PY= +github.com/filecoin-project/venus v1.10.0-rc3 h1:gESOXaKqP1xSxIOQXSNYsP8yFAbnhgh6QgyWTwBZ+0I= +github.com/filecoin-project/venus v1.10.0-rc3/go.mod h1:kKhxyint2LSRKk1yJRDlSEKlNe0dnpfiY6iaTCSsH6c= github.com/filecoin-project/venus-auth v1.3.2/go.mod h1:m5Jog2GYxztwP7w3m/iJdv/V1/bTcAVU9rm/CbhxRQU= github.com/filecoin-project/venus-auth v1.10.0-rc2 h1:mC2kRcUmXaL2nPky8iiogFjrygMTUXGXHjvEV9msPgk= github.com/filecoin-project/venus-auth v1.10.0-rc2/go.mod h1:bJT0owiiQfQq7u8QBpIf22JHNRZdsx9rAr4wMEsg+ds= @@ -736,8 +736,8 @@ github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU= github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/ipfs-force-community/go-jsonrpc v0.1.7-0.20230214070559-dbe74781184a h1:qiOQ2/neQ5fbfBE5cPr5ncR1YsukuO5PmlIwmv4CcaU= -github.com/ipfs-force-community/go-jsonrpc v0.1.7-0.20230214070559-dbe74781184a/go.mod h1:jBSvPTl8V1N7gSTuCR4bis8wnQnIjHbRPpROol6iQKM= +github.com/ipfs-force-community/go-jsonrpc v0.1.7-0.20230220074347-8db78dbc20d4 h1:iu/3irYevdNpdc0B/gRi1vuS3+lRn+6Ro9G0FeBiAfE= +github.com/ipfs-force-community/go-jsonrpc v0.1.7-0.20230220074347-8db78dbc20d4/go.mod h1:jBSvPTl8V1N7gSTuCR4bis8wnQnIjHbRPpROol6iQKM= github.com/ipfs-force-community/metrics v1.0.0/go.mod h1:mn40SioMuKtjmRumHFy/fJ26Pn028XuDjUJE9dorjyw= github.com/ipfs-force-community/metrics v1.0.1-0.20211022060227-11142a08b729/go.mod h1:mn40SioMuKtjmRumHFy/fJ26Pn028XuDjUJE9dorjyw= github.com/ipfs-force-community/metrics v1.0.1-0.20220719063006-2c54bb379466 h1:oPQtpBVmYot48fGuUwqVuzD1ilMnHUXkkGSWy5VzUL8= @@ -756,8 +756,9 @@ github.com/ipfs/go-bitswap v0.5.1/go.mod h1:P+ckC87ri1xFLvk74NlXdP0Kj9RmWAh4+H78 github.com/ipfs/go-bitswap v0.10.2 h1:B81RIwkTnIvSYT1ZCzxjYTeF0Ek88xa9r1AMpTfk+9Q= github.com/ipfs/go-block-format v0.0.1/go.mod h1:DK/YYcsSUIVAFNwo/KZCdIIbpN0ROH/baNLgayt4pFc= github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= -github.com/ipfs/go-block-format v0.0.3 h1:r8t66QstRp/pd/or4dpnbVfXT5Gt7lOqRvC+/dDTpMc= github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk= +github.com/ipfs/go-block-format v0.1.1 h1:129vSO3zwbsYADcyQWcOYiuCpAqt462SFfqFHdFJhhI= +github.com/ipfs/go-block-format v0.1.1/go.mod h1:+McEIT+g52p+zz5xGAABGSOKrzmrdX97bc0USBdWPUs= github.com/ipfs/go-blockservice v0.0.7/go.mod h1:EOfb9k/Y878ZTRY/CH0x5+ATtaipfbRhbvNSdgc/7So= github.com/ipfs/go-blockservice v0.1.0/go.mod h1:hzmMScl1kXHg3M2BjTymbVPjv627N7sYcvYaKbop39M= github.com/ipfs/go-blockservice v0.1.4/go.mod h1:OTZhFpkgY48kNzbgyvcexW9cHrpjBYIjSR0KoDOFOLU= @@ -863,13 +864,13 @@ github.com/ipfs/go-ipfs-keystore v0.0.2/go.mod h1:H49tRmibOEs7gLMgbOsjC4dqh1u5e0 github.com/ipfs/go-ipfs-pinner v0.2.1/go.mod h1:l1AtLL5bovb7opnG77sh4Y10waINz3Y1ni6CvTzx7oo= github.com/ipfs/go-ipfs-posinfo v0.0.1/go.mod h1:SwyeVP+jCwiDu0C313l/8jg6ZxM0qqtlt2a0vILTc1A= github.com/ipfs/go-ipfs-pq v0.0.1/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= -github.com/ipfs/go-ipfs-pq v0.0.2 h1:e1vOOW6MuOwG2lqxcLA+wEn93i/9laCY8sXAw76jFOY= github.com/ipfs/go-ipfs-pq v0.0.2/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= +github.com/ipfs/go-ipfs-pq v0.0.3 h1:YpoHVJB+jzK15mr/xsWC574tyDLkezVrDNeaalQBsTE= github.com/ipfs/go-ipfs-provider v0.7.1/go.mod h1:QwdDYRYnC5sYGLlOwVDY/0ZB6T3zcMtu+5+GdGeUuw8= github.com/ipfs/go-ipfs-routing v0.0.1/go.mod h1:k76lf20iKFxQTjcJokbPM9iBXVXVZhcOwc360N4nuKs= github.com/ipfs/go-ipfs-routing v0.1.0/go.mod h1:hYoUkJLyAUKhF58tysKpids8RNDPO42BVMgK5dNsoqY= -github.com/ipfs/go-ipfs-routing v0.2.1 h1:E+whHWhJkdN9YeoHZNj5itzc+OR292AJ2uE9FFiW0BY= github.com/ipfs/go-ipfs-routing v0.2.1/go.mod h1:xiNNiwgjmLqPS1cimvAw6EyB9rkVDbiocA4yY+wRNLM= +github.com/ipfs/go-ipfs-routing v0.3.0 h1:9W/W3N+g+y4ZDeffSgqhgo7BsBSJwPMcyssET9OWevc= github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8= github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= @@ -893,6 +894,8 @@ github.com/ipfs/go-ipld-legacy v0.1.1/go.mod h1:8AyKFCjgRPsQFf15ZQgDB8Din4DML/fO github.com/ipfs/go-ipns v0.1.2/go.mod h1:ioQ0j02o6jdIVW+bmi18f4k2gRf0AV3kZ9KeHYHICnQ= github.com/ipfs/go-ipns v0.3.0 h1:ai791nTgVo+zTuq2bLvEGmWP1M0A6kGTXUsgv/Yq67A= github.com/ipfs/go-ipns v0.3.0/go.mod h1:3cLT2rbvgPZGkHJoPO1YMJeh6LtkxopCkKFcio/wE24= +github.com/ipfs/go-libipfs v0.4.1 h1:tyu3RRMKFQUyUQt5jyt5SmDnls93H4Tr3HifL50zihg= +github.com/ipfs/go-libipfs v0.4.1/go.mod h1:Ad8ybPqwCkl2cNiNUMvM/iaVc/5bwNpHu8RPZ5te1hw= github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= github.com/ipfs/go-log v1.0.0/go.mod h1:JO7RzlMK6rA+CIxFMLOuB6Wf5b81GDiKElL7UPSIKjA= github.com/ipfs/go-log v1.0.1/go.mod h1:HuWlQttfN6FWNHRhlY5yMk/lW7evQC0HHGOxEwMRR8I= @@ -937,7 +940,7 @@ github.com/ipfs/go-peertaskqueue v0.1.1/go.mod h1:Jmk3IyCcfl1W3jTW3YpghSwSEC6IJ3 github.com/ipfs/go-peertaskqueue v0.2.0/go.mod h1:5/eNrBEbtSKWCG+kQK8K8fGNixoYUnr+P7jivavs9lY= github.com/ipfs/go-peertaskqueue v0.7.0/go.mod h1:M/akTIE/z1jGNXMU7kFB4TeSEFvj68ow0Rrb04donIU= github.com/ipfs/go-peertaskqueue v0.7.1/go.mod h1:M/akTIE/z1jGNXMU7kFB4TeSEFvj68ow0Rrb04donIU= -github.com/ipfs/go-peertaskqueue v0.8.0 h1:JyNO144tfu9bx6Hpo119zvbEL9iQ760FHOiJYsUjqaU= +github.com/ipfs/go-peertaskqueue v0.8.1 h1:YhxAs1+wxb5jk7RvS0LHdyiILpNmRIRnZVztekOF0pg= github.com/ipfs/go-pinning-service-http-client v0.1.0/go.mod h1:tcCKmlkWWH9JUUkKs8CrOZBanacNc1dmKLfjlyXAMu4= github.com/ipfs/go-unixfs v0.2.2-0.20190827150610-868af2e9e5cb/go.mod h1:IwAAgul1UQIcNZzKPYZWOCijryFBeCV79cNubPzol+k= github.com/ipfs/go-unixfs v0.2.4/go.mod h1:SUdisfUjNoSDzzhGVxvCL9QO/nKdwXdr+gbMUdqcbYw= diff --git a/version/version.go b/version/version.go index eae89ee2..c233187c 100644 --- a/version/version.go +++ b/version/version.go @@ -3,7 +3,7 @@ package version var ( CurrentCommit string - BuildVersion = "1.10.0-rc2" + BuildVersion = "1.10.0-rc3" Version = BuildVersion + CurrentCommit ) From 4e36873a0dd2b1a62149d8783974ab44c7722644 Mon Sep 17 00:00:00 2001 From: simlecode <69969590+simlecode@users.noreply.github.com> Date: Wed, 1 Mar 2023 10:12:01 +0800 Subject: [PATCH 04/10] chore: add address to error message --- publisher/publisher.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/publisher/publisher.go b/publisher/publisher.go index 835eac26..c31f7858 100644 --- a/publisher/publisher.go +++ b/publisher/publisher.go @@ -164,9 +164,9 @@ func (n *nodeThread) run(ctx context.Context) { if _, err := n.nodeClient.MpoolBatchPushUntrusted(ctx, msgs); err != nil { //skip error if !strings.Contains(err.Error(), errMinimumNonce.Error()) && !strings.Contains(err.Error(), errAlreadyInMpool.Error()) { - log.Errorf("push message to node %s failed %v", n.name, err) + log.Errorf("failed to push message node: %s, address: %v, error: %v", n.name, msgs[0].Message.From, err) } else { - log.Debugf("push message to node failed %v", err) + log.Debugf("failed to push message %v", err) } } } From d0330337c695e6444802e5746534eca8ae1e0b3f Mon Sep 17 00:00:00 2001 From: simlecode <69969590+simlecode@users.noreply.github.com> Date: Thu, 2 Mar 2023 11:27:36 +0800 Subject: [PATCH 05/10] chore: only build venus-messager --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 01cbc168..f95128ce 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ endif GOFLAGS+=-ldflags="$(ldflags)" -build: tools +build: rm -rf venus-messager go build $(GOFLAGS) -o venus-messager . From f3bd8e147b6d060bc08573d12cc8e29f7a83e875 Mon Sep 17 00:00:00 2001 From: simlecode <69969590+simlecode@users.noreply.github.com> Date: Thu, 2 Mar 2023 11:28:38 +0800 Subject: [PATCH 06/10] chore: bump version to v1.10.0 --- CHANGELOG.md | 5 +++++ go.mod | 8 ++++---- go.sum | 16 ++++++++-------- version/version.go | 2 +- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88efacbf..8d0ce87f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # venus-message changelog +## v1.10.0 + +* 升级 venus 和 venus-auth 版本到 v1.10.0 +* 升级 go-jsonrpc 版本到 v0.1.7 + ## v1.10.0-rc3 1. 升级 venus 和 go-jsonrpc 版本 diff --git a/go.mod b/go.mod index 597065cf..a5312000 100644 --- a/go.mod +++ b/go.mod @@ -10,10 +10,10 @@ require ( github.com/filecoin-project/go-address v1.1.0 github.com/filecoin-project/go-bitfield v0.2.4 github.com/filecoin-project/go-jsonrpc v0.1.5 - github.com/filecoin-project/go-state-types v0.10.0-rc3 + github.com/filecoin-project/go-state-types v0.10.0 github.com/filecoin-project/specs-actors/v5 v5.0.6 - github.com/filecoin-project/venus v1.10.0-rc3 - github.com/filecoin-project/venus-auth v1.10.0-rc2 + github.com/filecoin-project/venus v1.10.0 + github.com/filecoin-project/venus-auth v1.10.0 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 github.com/hunjixin/automapper v0.0.0-20191127090318-9b979ce72ce2 @@ -246,4 +246,4 @@ require ( gopkg.in/ini.v1 v1.66.6 // indirect ) -replace github.com/filecoin-project/go-jsonrpc => github.com/ipfs-force-community/go-jsonrpc v0.1.7-0.20230220074347-8db78dbc20d4 +replace github.com/filecoin-project/go-jsonrpc => github.com/ipfs-force-community/go-jsonrpc v0.1.7 diff --git a/go.sum b/go.sum index 613165db..9adfd471 100644 --- a/go.sum +++ b/go.sum @@ -375,8 +375,8 @@ github.com/filecoin-project/go-state-types v0.1.3/go.mod h1:ezYnPf0bNkTsDibL/psS github.com/filecoin-project/go-state-types v0.1.4/go.mod h1:xCA/WfKlC2zcn3fUmDv4IrzznwS98X5XW/irUP3Lhxg= github.com/filecoin-project/go-state-types v0.1.6/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= github.com/filecoin-project/go-state-types v0.1.10/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= -github.com/filecoin-project/go-state-types v0.10.0-rc3 h1:qExCc2swTe5ndsiu9dEoMqIwppjuTNRbsAFgpzHnHbc= -github.com/filecoin-project/go-state-types v0.10.0-rc3/go.mod h1:aLIas+W8BWAfpLWEPUOGMPBdhcVwoCG4pIQSQk26024= +github.com/filecoin-project/go-state-types v0.10.0 h1:vsSThZIaPmOxNGG59+8D/HnlWRtlbdOjduH6ye+v8f0= +github.com/filecoin-project/go-state-types v0.10.0/go.mod h1:aLIas+W8BWAfpLWEPUOGMPBdhcVwoCG4pIQSQk26024= github.com/filecoin-project/go-statemachine v0.0.0-20200925024713-05bd7c71fbfe/go.mod h1:FGwQgZAt2Gh5mjlwJUlVB62JeYdo+if0xWxSEfBD9ig= github.com/filecoin-project/go-statemachine v1.0.1/go.mod h1:jZdXXiHa61n4NmgWFG4w8tnqgvZVHYbJ3yW7+y8bF54= github.com/filecoin-project/go-statemachine v1.0.2-0.20220322104818-27f8fbb86dfd/go.mod h1:jZdXXiHa61n4NmgWFG4w8tnqgvZVHYbJ3yW7+y8bF54= @@ -416,11 +416,11 @@ github.com/filecoin-project/specs-storage v0.4.1/go.mod h1:Z2eK6uMwAOSLjek6+sy0j github.com/filecoin-project/storetheindex v0.3.5/go.mod h1:0r3d0kSpK63O6AvLr1CjAINLi+nWD49clzcnKV+GLpI= github.com/filecoin-project/test-vectors/schema v0.0.5/go.mod h1:iQ9QXLpYWL3m7warwvK1JC/pTri8mnfEmKygNDqqY6E= github.com/filecoin-project/venus v1.2.4/go.mod h1:hJULXHGAnWuq5S5KRtPkwbT8DqgM9II7NwyNU7t59D0= -github.com/filecoin-project/venus v1.10.0-rc3 h1:gESOXaKqP1xSxIOQXSNYsP8yFAbnhgh6QgyWTwBZ+0I= -github.com/filecoin-project/venus v1.10.0-rc3/go.mod h1:kKhxyint2LSRKk1yJRDlSEKlNe0dnpfiY6iaTCSsH6c= +github.com/filecoin-project/venus v1.10.0 h1:UAUR9dwnA5Lx2N67Xg9MT1bHG1IJdFtypsQOFs0KBwA= +github.com/filecoin-project/venus v1.10.0/go.mod h1:lO6L4FiHcW4ad+2R7x2J2slqYkhq/X0ObZfmxkJmZ7M= github.com/filecoin-project/venus-auth v1.3.2/go.mod h1:m5Jog2GYxztwP7w3m/iJdv/V1/bTcAVU9rm/CbhxRQU= -github.com/filecoin-project/venus-auth v1.10.0-rc2 h1:mC2kRcUmXaL2nPky8iiogFjrygMTUXGXHjvEV9msPgk= -github.com/filecoin-project/venus-auth v1.10.0-rc2/go.mod h1:bJT0owiiQfQq7u8QBpIf22JHNRZdsx9rAr4wMEsg+ds= +github.com/filecoin-project/venus-auth v1.10.0 h1:0V5R36HIvLKRFJQjKkW0tjYazgHkDW/gmjwuEtKL1SA= +github.com/filecoin-project/venus-auth v1.10.0/go.mod h1:MoirCIFdK8FNIFXpBbgF4xhRsjGi4KHHfW1EF6iAwZ8= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/flynn/noise v0.0.0-20180327030543-2492fe189ae6/go.mod h1:1i71OnUq3iUe1ma7Lr6yG6/rjvM3emb6yoL7xLFzcVQ= github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= @@ -736,8 +736,8 @@ github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU= github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/ipfs-force-community/go-jsonrpc v0.1.7-0.20230220074347-8db78dbc20d4 h1:iu/3irYevdNpdc0B/gRi1vuS3+lRn+6Ro9G0FeBiAfE= -github.com/ipfs-force-community/go-jsonrpc v0.1.7-0.20230220074347-8db78dbc20d4/go.mod h1:jBSvPTl8V1N7gSTuCR4bis8wnQnIjHbRPpROol6iQKM= +github.com/ipfs-force-community/go-jsonrpc v0.1.7 h1:e0ZTapGFhDY54j0QpRYN54Q3FHawUBQAM1KvXOzZtYY= +github.com/ipfs-force-community/go-jsonrpc v0.1.7/go.mod h1:jBSvPTl8V1N7gSTuCR4bis8wnQnIjHbRPpROol6iQKM= github.com/ipfs-force-community/metrics v1.0.0/go.mod h1:mn40SioMuKtjmRumHFy/fJ26Pn028XuDjUJE9dorjyw= github.com/ipfs-force-community/metrics v1.0.1-0.20211022060227-11142a08b729/go.mod h1:mn40SioMuKtjmRumHFy/fJ26Pn028XuDjUJE9dorjyw= github.com/ipfs-force-community/metrics v1.0.1-0.20220719063006-2c54bb379466 h1:oPQtpBVmYot48fGuUwqVuzD1ilMnHUXkkGSWy5VzUL8= diff --git a/version/version.go b/version/version.go index c233187c..bf438715 100644 --- a/version/version.go +++ b/version/version.go @@ -3,7 +3,7 @@ package version var ( CurrentCommit string - BuildVersion = "1.10.0-rc3" + BuildVersion = "1.10.0" Version = BuildVersion + CurrentCommit ) From 1a84e67db518f7aa8f11b92cc5f96b59f34ec684 Mon Sep 17 00:00:00 2001 From: simlecode <69969590+simlecode@users.noreply.github.com> Date: Mon, 6 Mar 2023 11:44:02 +0800 Subject: [PATCH 07/10] fix: fix delegated message --- api/messager_impl.go | 2 +- service/message_selector.go | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/api/messager_impl.go b/api/messager_impl.go index 4e012ab9..0113f164 100644 --- a/api/messager_impl.go +++ b/api/messager_impl.go @@ -81,7 +81,7 @@ func (m MessageImp) resolveAddress(ctx context.Context, addr address.Address) (a if err != nil { return address.Undef, fmt.Errorf("getting key address %s failed: %w", addr, err) } - log.Infof("Push from ID address (%s), adjusting to %s", addr, addrTmp) + log.Infof("resolve ID address from %s to %s", addr, addrTmp) addr = addrTmp } diff --git a/service/message_selector.go b/service/message_selector.go index 1e5fb373..8f0ecc73 100644 --- a/service/message_selector.go +++ b/service/message_selector.go @@ -527,11 +527,16 @@ func (w *work) estimateMessage(ctx context.Context, func (w *work) signMessage(ctx context.Context, msg *types.Message, accounts []string) (*crypto.Signature, error) { data, err := msg.Message.ToStorageBlock() if err != nil { - return nil, fmt.Errorf("serialize message %s failed %v", msg.ID, err) + return nil, fmt.Errorf("serialize message failed: %v", err) + } + + sb, err := msg.Message.SigningBytes(venusTypes.AddressProtocol2SignType(msg.Message.From.Protocol())) + if err != nil { + return nil, fmt.Errorf("get signing bytes failed: %v", err) } signMsgCtx, signMsgCancel := context.WithTimeout(ctx, w.cfg.SignMessageTimeout) - sigI, err := handleTimeout(signMsgCtx, w.walletClient.WalletSign, []interface{}{w.addr, accounts, msg.Message.Cid().Bytes(), venusTypes.MsgMeta{ + sigI, err := handleTimeout(signMsgCtx, w.walletClient.WalletSign, []interface{}{w.addr, accounts, sb, venusTypes.MsgMeta{ Type: venusTypes.MTChainMsg, Extra: data.RawData(), }}) From bebff569bbde84990879640bd2ce8d8eb1083f86 Mon Sep 17 00:00:00 2001 From: simlecode <69969590+simlecode@users.noreply.github.com> Date: Mon, 6 Mar 2023 15:58:19 +0800 Subject: [PATCH 08/10] fix: set Eip155ChainID --- main.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/main.go b/main.go index 8918823c..d1a4500a 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "net" _ "net/http/pprof" "os" + "strings" "time" "github.com/filecoin-project/venus-messager/publisher" @@ -15,8 +16,10 @@ import ( "github.com/filecoin-project/venus-auth/jwtclient" "github.com/filecoin-project/venus-messager/metrics" "github.com/filecoin-project/venus-messager/utils" + "github.com/filecoin-project/venus/fixtures/networks" v1 "github.com/filecoin-project/venus/venus-shared/api/chain/v1" gatewayAPI "github.com/filecoin-project/venus/venus-shared/api/gateway/v2" + "github.com/filecoin-project/venus/venus-shared/types" logging "github.com/ipfs/go-log/v2" "github.com/mitchellh/go-homedir" ma "github.com/multiformats/go-multiaddr" @@ -216,6 +219,9 @@ func runAction(cctx *cli.Context) error { if err := ccli.LoadBuiltinActors(ctx, client); err != nil { return err } + if err := setEip155ChainID(string(networkParams.NetworkName)); err != nil { + return fmt.Errorf("failed to set Eip155ChainID: %v", err) + } mAddr, err := ma.NewMultiaddr(cfg.API.Address) if err != nil { @@ -389,3 +395,24 @@ func hasFSRepo(repoPath string) (bool, error) { return true, nil } + +// setEip155ChainID set the Eip155ChainID by different network. +// Use Eip155ChainID in https://github.com/filecoin-project/venus/blob/master/venus-shared/actors/types/message.go#L230 +func setEip155ChainID(networkName string) error { + var eip155ChainID int + + // 2k + if strings.Contains(networkName, "localnet-") { + eip155ChainID = networks.Net2k().Network.Eip155ChainID + } else { + netCfg, err := networks.GetNetworkConfigFromName(networkName) + if err != nil { + return err + } + eip155ChainID = netCfg.Network.Eip155ChainID + } + log.Infof("Eip155ChainID: %d", eip155ChainID) + types.SetEip155ChainID(eip155ChainID) + + return nil +} From 8ab089908b5e4c863979c19cf93aaf78843e62cb Mon Sep 17 00:00:00 2001 From: simlecode <69969590+simlecode@users.noreply.github.com> Date: Tue, 7 Mar 2023 11:19:57 +0800 Subject: [PATCH 09/10] chore: optimize ETH address output --- utils/convert_params.go | 49 +++++++++++++++++++++++++-------- utils/convert_params_test.go | 53 ++++++++++++++++++++++++++++++++++-- 2 files changed, 88 insertions(+), 14 deletions(-) diff --git a/utils/convert_params.go b/utils/convert_params.go index 972bc8e6..0761340e 100644 --- a/utils/convert_params.go +++ b/utils/convert_params.go @@ -2,41 +2,50 @@ package utils import ( "bytes" + "encoding/hex" "fmt" "math" "reflect" + "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" + "github.com/filecoin-project/venus/venus-shared/types" ) -var bitFieldTyp = reflect.TypeOf(bitfield.BitField{}) -var bytesTyp = reflect.TypeOf([]byte{}) +var ( + bitFieldTyp = reflect.TypeOf(bitfield.BitField{}) + bytesTyp = reflect.TypeOf([]byte{}) + ethAddressTyp = reflect.TypeOf(types.EthAddress{}) + addrTyp = reflect.TypeOf(address.Address{}) +) func TryConvertParams(in interface{}) (interface{}, error) { rv := reflect.ValueOf(in) - if !hasBitfield(rv) { + if !isNeedConvert(rv) { return in, nil } return convertParams(rv) } -func hasBitfield(v reflect.Value) bool { +func isNeedConvert(v reflect.Value) bool { if v.Kind() == reflect.Ptr { v = v.Elem() } - if v.IsValid() && v.Type().AssignableTo(bitFieldTyp) { - return true + if v.IsValid() { + if v.Type().AssignableTo(bitFieldTyp) || v.Type().AssignableTo(ethAddressTyp) { + return true + } } switch v.Kind() { case reflect.Struct: for i := 0; i < v.NumField(); i++ { - if hasBitfield(v.Field(i)) { + if isNeedConvert(v.Field(i)) { return true } } case reflect.Slice: if v.Len() > 0 { - if hasBitfield(v.Index(0)) { + if isNeedConvert(v.Index(0)) { return true } } @@ -44,7 +53,7 @@ func hasBitfield(v reflect.Value) bool { if v.Len() > 0 { iter := v.MapRange() for iter.Next() { - if hasBitfield(iter.Value()) { + if isNeedConvert(iter.Value()) { return true } } @@ -53,12 +62,24 @@ func hasBitfield(v reflect.Value) bool { return false } -func convertParams(rv reflect.Value) (interface{}, error) { +func convertParams(rv reflect.Value) (any, error) { if rv.Kind() == reflect.Ptr { + if rv.IsNil() { + return nil, nil + } rv = rv.Elem() } - if rv.IsValid() && rv.Type().AssignableTo(bitFieldTyp) { - return convertBitFieldToString(rv.Interface().(bitfield.BitField)) + + if rv.IsValid() { + if rv.Type().AssignableTo(bitFieldTyp) { + return convertBitFieldToString(rv.Interface().(bitfield.BitField)) + } + if rv.Type().AssignableTo(ethAddressTyp) { + return hexEthAddress(rv.Interface().([20]byte)), nil + } + if rv.Type().AssignableTo(addrTyp) { + return rv.Interface(), nil + } } switch rv.Kind() { case reflect.Slice: @@ -147,3 +168,7 @@ func merge(list []uint64) [][]uint64 { return res } + +func hexEthAddress(ethAddr types.EthAddress) string { + return "0x" + hex.EncodeToString(ethAddr[:]) +} diff --git a/utils/convert_params_test.go b/utils/convert_params_test.go index 66daf3a5..c009d2aa 100644 --- a/utils/convert_params_test.go +++ b/utils/convert_params_test.go @@ -7,6 +7,7 @@ import ( "github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/builtin/v10/eam" "github.com/filecoin-project/go-state-types/proof" miner5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/miner" "github.com/filecoin-project/venus/venus-shared/testutil" @@ -228,6 +229,53 @@ func TestTryConvertParams(t *testing.T) { } equalMarshal(t, expect, res) }) + + t.Run("test convert CreateReturn", func(t *testing.T) { + addr := testutil.AddressProvider()(t) + ethAddr := [20]byte{92, 41, 100, 227, 56, 253, 50, 107, 148, 193, 190, 112, 83, 185, 97, 122, 70, 160, 60, 177} + cr := eam.CreateReturn{ + ActorID: 5917, + RobustAddress: &addr, + EthAddress: ethAddr, + } + res, err := TryConvertParams(cr) + assert.NoError(t, err) + expect := map[string]interface{}{ + "ActorID": 5917, + "RobustAddress": addr.String(), + "EthAddress": "0x5c2964e338fd326b94c1be7053b9617a46a03cb1", + } + equalMarshal(t, expect, res) + + cr2 := eam.CreateReturn{ + ActorID: 0, + RobustAddress: nil, + EthAddress: [20]byte{}, + } + res2, err := TryConvertParams(cr2) + assert.NoError(t, err) + expect2 := map[string]interface{}{ + "ActorID": 0, + "RobustAddress": nil, + "EthAddress": "0x0000000000000000000000000000000000000000", + } + equalMarshal(t, expect2, res2) + }) + + t.Run("test convert ActiveBeneficiary", func(t *testing.T) { + addr := testutil.AddressProvider()(t) + ab := &types.ActiveBeneficiary{ + Beneficiary: addr, + Term: types.BeneficiaryTerm{ + Quota: abi.NewTokenAmount(100), + UsedQuota: abi.NewTokenAmount(100), + Expiration: 100, + }, + } + res, err := TryConvertParams(ab) + assert.NoError(t, err) + assert.Equal(t, ab, res) + }) } func equalMarshal(t *testing.T, expect, actual interface{}) { @@ -240,7 +288,7 @@ func equalMarshal(t *testing.T, expect, actual interface{}) { func TestHasBitfield(t *testing.T) { cases := []struct { - typ interface{} + typ any expect bool }{ {&types.ExtendSectorExpirationParams{}, true}, @@ -256,10 +304,11 @@ func TestHasBitfield(t *testing.T) { {&types.PublishStorageDealsReturn{}, true}, {&types.ActiveBeneficiary{}, false}, {&types.ActivateDealsParams{}, false}, + {&eam.CreateReturn{}, true}, } for _, c := range cases { testutil.Provide(t, c.typ) - if actual := hasBitfield(reflect.ValueOf(c.typ)); actual != c.expect { + if actual := isNeedConvert(reflect.ValueOf(c.typ)); actual != c.expect { t.Errorf("call %T failed, actual %v, expect %v", c.typ, actual, c.expect) } } From e5e573607c44b50b296faad00e4fc93a099d8155 Mon Sep 17 00:00:00 2001 From: simlecode <69969590+simlecode@users.noreply.github.com> Date: Wed, 8 Mar 2023 13:46:54 +0800 Subject: [PATCH 10/10] chore: bump version to v1.10.1 --- CHANGELOG.md | 5 +++++ go.mod | 4 ++-- go.sum | 8 ++++---- version/version.go | 2 +- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d0ce87f..b6777476 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # venus-message changelog +## v1.10.1 + +* 支持 delegated 地址的消息 [[#323](https://github.com/filecoin-project/venus-messager/pull/323)] +* 升级 venus 和 venus-auth 版本到 v1.10.1 + ## v1.10.0 * 升级 venus 和 venus-auth 版本到 v1.10.0 diff --git a/go.mod b/go.mod index a5312000..04f0f1f5 100644 --- a/go.mod +++ b/go.mod @@ -12,8 +12,8 @@ require ( github.com/filecoin-project/go-jsonrpc v0.1.5 github.com/filecoin-project/go-state-types v0.10.0 github.com/filecoin-project/specs-actors/v5 v5.0.6 - github.com/filecoin-project/venus v1.10.0 - github.com/filecoin-project/venus-auth v1.10.0 + github.com/filecoin-project/venus v1.10.1 + github.com/filecoin-project/venus-auth v1.10.1 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 github.com/hunjixin/automapper v0.0.0-20191127090318-9b979ce72ce2 diff --git a/go.sum b/go.sum index 9adfd471..893e2c9e 100644 --- a/go.sum +++ b/go.sum @@ -416,11 +416,11 @@ github.com/filecoin-project/specs-storage v0.4.1/go.mod h1:Z2eK6uMwAOSLjek6+sy0j github.com/filecoin-project/storetheindex v0.3.5/go.mod h1:0r3d0kSpK63O6AvLr1CjAINLi+nWD49clzcnKV+GLpI= github.com/filecoin-project/test-vectors/schema v0.0.5/go.mod h1:iQ9QXLpYWL3m7warwvK1JC/pTri8mnfEmKygNDqqY6E= github.com/filecoin-project/venus v1.2.4/go.mod h1:hJULXHGAnWuq5S5KRtPkwbT8DqgM9II7NwyNU7t59D0= -github.com/filecoin-project/venus v1.10.0 h1:UAUR9dwnA5Lx2N67Xg9MT1bHG1IJdFtypsQOFs0KBwA= -github.com/filecoin-project/venus v1.10.0/go.mod h1:lO6L4FiHcW4ad+2R7x2J2slqYkhq/X0ObZfmxkJmZ7M= +github.com/filecoin-project/venus v1.10.1 h1:iIopXQN6oYeN628FugHPIrxr0LpBbeFO25rsciPnNbg= +github.com/filecoin-project/venus v1.10.1/go.mod h1:AkArMvTdspbcJu133WnAu8aMyRI82SZDvgv4Y3rTHiI= github.com/filecoin-project/venus-auth v1.3.2/go.mod h1:m5Jog2GYxztwP7w3m/iJdv/V1/bTcAVU9rm/CbhxRQU= -github.com/filecoin-project/venus-auth v1.10.0 h1:0V5R36HIvLKRFJQjKkW0tjYazgHkDW/gmjwuEtKL1SA= -github.com/filecoin-project/venus-auth v1.10.0/go.mod h1:MoirCIFdK8FNIFXpBbgF4xhRsjGi4KHHfW1EF6iAwZ8= +github.com/filecoin-project/venus-auth v1.10.1 h1:A2AkLabDTU7Ivenx8yzusPh7R1tbTrr4kkDypi+ykTY= +github.com/filecoin-project/venus-auth v1.10.1/go.mod h1:vFL6M8Ko1o05oX2EYr5wSzpKa6yL6RrLOVr5rO29Cxc= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/flynn/noise v0.0.0-20180327030543-2492fe189ae6/go.mod h1:1i71OnUq3iUe1ma7Lr6yG6/rjvM3emb6yoL7xLFzcVQ= github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= diff --git a/version/version.go b/version/version.go index bf438715..d8b40d5e 100644 --- a/version/version.go +++ b/version/version.go @@ -3,7 +3,7 @@ package version var ( CurrentCommit string - BuildVersion = "1.10.0" + BuildVersion = "1.10.1" Version = BuildVersion + CurrentCommit )