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

update peerid to publickey #45

Merged
merged 1 commit into from
May 15, 2023
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
6 changes: 3 additions & 3 deletions core/chain/chain.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ type Chain interface {
QueryNodeConnectionSt() bool

// QueryDeoss queries deoss information.
QueryDeoss(puk []byte) (string, error)
QueryDeoss(pubkey []byte) ([]byte, error)

// QuaryAuthorizedAcc queries the account authorized by puk.
QuaryAuthorizedAcc(puk []byte) (types.AccountID, error)
Expand Down Expand Up @@ -77,13 +77,13 @@ type Chain interface {
QueryTeePodr2Puk() ([]byte, error)

// QueryTeePeerID queries the peerid of the Tee worker.
QueryTeePeerID(puk []byte) (PeerID, error)
QueryTeePeerID(puk []byte) ([]byte, error)

// QueryTeeInfoList queries the information of all tee workers.
QueryTeeInfoList() ([]TeeWorkerInfo, error)

// Register is used to register OSS or BUCKET roles.
Register(role, multiaddr string, income string, pledge uint64) (string, error)
Register(role string, puk []byte, income string, pledge uint64) (string, error)

// UpdateAddress updates the address of oss or sminer.
UpdateAddress(role, multiaddr string) (string, error)
Expand Down
14 changes: 7 additions & 7 deletions core/chain/deoss.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,31 +10,31 @@ import (
)

// QueryDeoss
func (c *chainClient) QueryDeoss(pubkey []byte) (string, error) {
func (c *chainClient) QueryDeoss(pubkey []byte) ([]byte, error) {
defer func() {
if err := recover(); err != nil {
log.Panicln(utils.RecoverError(err))
}
}()
var data types.Bytes
var data PeerPuk

if !c.GetChainState() {
return "", ERR_RPC_CONNECTION
return nil, ERR_RPC_CONNECTION
}

key, err := types.CreateStorageKey(c.metadata, OSS, OSS, pubkey)
if err != nil {
return "", errors.Wrap(err, "[CreateStorageKey]")
return nil, errors.Wrap(err, "[CreateStorageKey]")
}

ok, err := c.api.RPC.State.GetStorageLatest(key, &data)
if err != nil {
return "", errors.Wrap(err, "[GetStorageLatest]")
return nil, errors.Wrap(err, "[GetStorageLatest]")
}
if !ok {
return "", ERR_RPC_EMPTY_VALUE
return nil, ERR_RPC_EMPTY_VALUE
}
return string(data), nil
return []byte(string(data[:])), nil
}

func (c *chainClient) QuaryAuthorizedAcc(puk []byte) (types.AccountID, error) {
Expand Down
40 changes: 20 additions & 20 deletions core/chain/role.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
"github.com/pkg/errors"
)

func (c *chainClient) Register(role, multiaddr string, income string, pledge uint64) (string, error) {
func (c *chainClient) Register(role string, puk []byte, income string, pledge uint64) (string, error) {
c.lock.Lock()
defer func() {
c.lock.Unlock()
Expand All @@ -24,7 +24,6 @@ func (c *chainClient) Register(role, multiaddr string, income string, pledge uin

var (
err error
address string
txhash string
pubkey []byte
minerinfo MinerInfo
Expand All @@ -37,26 +36,34 @@ func (c *chainClient) Register(role, multiaddr string, income string, pledge uin
return txhash, ERR_RPC_CONNECTION
}

var peerpuk PeerPuk
if len(pubkey) != len(puk) {
return txhash, fmt.Errorf("invalid pubkey: %v", pubkey)
}
for i := 0; i < len(pubkey); i++ {
peerpuk[i] = types.U8(pubkey[i])
}

key, err := types.CreateStorageKey(c.metadata, SYSTEM, ACCOUNT, c.keyring.PublicKey)
if err != nil {
return txhash, errors.Wrap(err, "[CreateStorageKey]")
}

switch role {
case Role_OSS, Role_DEOSS, "deoss", "oss", "Deoss", "DeOSS":
address, err = c.QueryDeoss(c.keyring.PublicKey)
pk, err := c.QueryDeoss(c.keyring.PublicKey)
if err != nil {
if err.Error() != ERR_Empty {
return txhash, err
}
} else {
if address != multiaddr {
return c.updateAddress(key, role, multiaddr)
if !CompareSlice(pk, puk) {
return c.updateAddress(key, role, peerpuk)
}
return "", nil
}

call, err = types.NewCall(c.metadata, TX_OSS_REGISTER, types.NewBytes([]byte(multiaddr)))
call, err = types.NewCall(c.metadata, TX_OSS_REGISTER, peerpuk)
if err != nil {
return txhash, errors.Wrap(err, "[NewCall]")
}
Expand All @@ -67,8 +74,8 @@ func (c *chainClient) Register(role, multiaddr string, income string, pledge uin
return txhash, err
}
} else {
if string(minerinfo.PeerId[:]) != multiaddr {
return c.updateAddress(key, role, multiaddr)
if minerinfo.PeerPuk != peerpuk {
return c.updateAddress(key, role, peerpuk)
}
acc, _ := utils.EncodePublicKeyAsCessAccount(minerinfo.BeneficiaryAcc[:])
if acc != income {
Expand All @@ -93,11 +100,7 @@ func (c *chainClient) Register(role, multiaddr string, income string, pledge uin
if !ok {
return txhash, errors.New("[big.Int.SetString]")
}
var peerid PeerID
for i := 0; i < len(multiaddr); i++ {
peerid[i] = types.U8(multiaddr[i])
}
call, err = types.NewCall(c.metadata, TX_SMINER_REGISTER, *acc, peerid, types.NewU128(*realTokens))
call, err = types.NewCall(c.metadata, TX_SMINER_REGISTER, *acc, peerpuk, types.NewU128(*realTokens))
if err != nil {
return txhash, errors.Wrap(err, "[NewCall]")
}
Expand Down Expand Up @@ -288,7 +291,7 @@ func (c *chainClient) UpdateAddress(role, multiaddr string) (string, error) {
}
}

func (c *chainClient) updateAddress(key types.StorageKey, name, multiaddr string) (string, error) {
func (c *chainClient) updateAddress(key types.StorageKey, name string, pubkey PeerPuk) (string, error) {
var (
err error
txhash string
Expand All @@ -298,16 +301,13 @@ func (c *chainClient) updateAddress(key types.StorageKey, name, multiaddr string

switch name {
case Role_OSS, Role_DEOSS, "deoss", "oss", "Deoss", "DeOSS":
call, err = types.NewCall(c.metadata, TX_OSS_UPDATE, types.NewBytes([]byte(multiaddr)))

call, err = types.NewCall(c.metadata, TX_OSS_UPDATE, pubkey)
if err != nil {
return txhash, errors.Wrap(err, "[NewCall]")
}
case Role_BUCKET, "SMINER", "bucket", "Bucket", "Sminer", "sminer":
var peerid PeerID
for i := 0; i < len(multiaddr); i++ {
peerid[i] = types.U8(multiaddr[i])
}
call, err = types.NewCall(c.metadata, TX_SMINER_UPDATEPEERID, peerid)
call, err = types.NewCall(c.metadata, TX_SMINER_UPDATEPEERID, pubkey)
if err != nil {
return txhash, errors.Wrap(err, "[NewCall]")
}
Expand Down
16 changes: 8 additions & 8 deletions core/chain/tee.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ func (c *chainClient) QueryTeeInfoList() ([]TeeWorkerInfo, error) {
return list, nil
}

func (c *chainClient) QueryTeePeerID(puk []byte) (PeerID, error) {
func (c *chainClient) QueryTeePeerID(puk []byte) ([]byte, error) {
defer func() {
if err := recover(); err != nil {
log.Println(utils.RecoverError(err))
Expand All @@ -83,31 +83,31 @@ func (c *chainClient) QueryTeePeerID(puk []byte) (PeerID, error) {
var data TeeWorkerInfo

if !c.GetChainState() {
return PeerID{}, ERR_RPC_CONNECTION
return nil, ERR_RPC_CONNECTION
}

acc, err := types.NewAccountID(puk)
if err != nil {
return PeerID{}, errors.Wrap(err, "[NewAccountID]")
return nil, errors.Wrap(err, "[NewAccountID]")
}

owner, err := codec.Encode(*acc)
if err != nil {
return PeerID{}, errors.Wrap(err, "[EncodeToBytes]")
return nil, errors.Wrap(err, "[EncodeToBytes]")
}

key, err := types.CreateStorageKey(c.metadata, TEEWORKER, TEEWORKERMAP, owner)
if err != nil {
return PeerID{}, errors.Wrap(err, "[CreateStorageKey]")
return nil, errors.Wrap(err, "[CreateStorageKey]")
}

ok, err := c.api.RPC.State.GetStorageLatest(key, &data)
if err != nil {
return PeerID{}, errors.Wrap(err, "[GetStorageLatest]")
return nil, errors.Wrap(err, "[GetStorageLatest]")
}
if !ok {
return PeerID{}, ERR_RPC_EMPTY_VALUE
return nil, ERR_RPC_EMPTY_VALUE
}

return data.PeerId, nil
return []byte(string(data.PeerPuk[:])), nil
}
18 changes: 15 additions & 3 deletions core/chain/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ var (
type FileHash [64]types.U8
type Random [20]types.U8
type TeePodr2Pk [294]types.U8
type PeerID [52]types.U8
type PeerPuk [38]types.U8

type SysProperties struct {
Ss58Format types.U8
Expand All @@ -159,7 +159,7 @@ type SysSyncState struct {

type MinerInfo struct {
BeneficiaryAcc types.AccountID
PeerId PeerID
PeerPuk PeerPuk
Collaterals types.U128
Debt types.U128
State types.Bytes
Expand Down Expand Up @@ -276,7 +276,19 @@ type NodePublickey struct {

type TeeWorkerInfo struct {
ControllerAccount types.AccountID
PeerId PeerID
PeerPuk PeerPuk
NodeKey NodePublickey
StashAccount types.AccountID
}

func CompareSlice(s1, s2 []byte) bool {
if len(s1) != len(s2) {
return false
}
for i := 0; i < len(s1); i++ {
if s1[i] != s2[2] {
return false
}
}
return true
}
2 changes: 1 addition & 1 deletion core/client/getfile.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func (c *Cli) GetFile(roothash, dir string) (string, error) {
if err != nil {
return "", err
}
peerid, err := c.AddMultiaddrToPearstore(string(miner.PeerId[:]), time.Hour)
peerid, err := c.AddMultiaddrToPearstore(string(miner.PeerPuk[:]), time.Hour)
if err != nil {
return "", err
}
Expand Down
2 changes: 1 addition & 1 deletion core/client/putfile.go
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ func (c *Cli) QueryAssignedMiner(minerTaskList []chain.MinerTaskList) ([]string,
if err != nil {
return multiaddrs, err
}
multiaddrs[i] = string(minerInfo.PeerId[:])
multiaddrs[i] = string(minerInfo.PeerPuk[:])
}
return multiaddrs, nil
}
2 changes: 1 addition & 1 deletion core/client/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func (c *Cli) QueryTeeWorkerList() ([]TeeWorkerSt, error) {
var results = make([]TeeWorkerSt, len(teelist))
for k, v := range teelist {
results[k].Node_key = []byte(string(v.NodeKey.NodePublickey[:]))
results[k].Peer_id = []byte(string(v.PeerId[:]))
results[k].Peer_id = []byte(string(v.PeerPuk[:]))
results[k].Controller_account, err = utils.EncodePublicKeyAsCessAccount(v.ControllerAccount[:])
if err != nil {
return results, err
Expand Down
18 changes: 1 addition & 17 deletions core/client/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,6 @@

package client

import (
"errors"

"github.com/CESSProject/sdk-go/core/chain"
)

func (c *Cli) RegisterRole(name string, income string, pledge uint64) (string, error) {
var peerid string
if len(c.Multiaddr()) > len(chain.PeerID{}) {
index := len(c.Multiaddr()) - len(chain.PeerID{})
peerid = c.Multiaddr()[index:]
} else {
peerid = c.Multiaddr()
}
if len(peerid) != len(chain.PeerID{}) {
return "", errors.New("Invalid PeerId")
}
return c.Chain.Register(name, peerid, income, pledge)
return c.Chain.Register(name, c.Node.PublicKey, income, pledge)
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/CESSProject/sdk-go
go 1.19

require (
github.com/CESSProject/p2p-go v0.0.17
github.com/CESSProject/p2p-go v0.0.18
github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce
github.com/cbergoon/merkletree v0.2.0
github.com/centrifuge/go-substrate-rpc-client/v4 v4.0.12
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSu
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo=
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/CESSProject/p2p-go v0.0.17 h1:iVQWRhv+r+WsPXjWS7108vJ379/arUpTmSFEk2lFL+Y=
github.com/CESSProject/p2p-go v0.0.17/go.mod h1:9EOXR2dZpWM6l7sFz75IPQr5AYEAp3FvCXliINQ0hPw=
github.com/CESSProject/p2p-go v0.0.18 h1:GPwUh38vNrkjMcjPRG6/DlabLhCXixoN35Qj/Mgxopc=
github.com/CESSProject/p2p-go v0.0.18/go.mod h1:9EOXR2dZpWM6l7sFz75IPQr5AYEAp3FvCXliINQ0hPw=
github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM=
github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4=
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
Expand Down