Skip to content

Commit

Permalink
Base key (#31)
Browse files Browse the repository at this point in the history
* add QueryTeePodr2Puk

* add QueryTeeWorkerList and QueryTeeWorkerPeerID

* format
  • Loading branch information
AstaFrode authored Apr 20, 2023
1 parent e57cb05 commit 30f58fa
Show file tree
Hide file tree
Showing 6 changed files with 134 additions and 2 deletions.
6 changes: 6 additions & 0 deletions core/chain/chain.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,12 @@ type Chain interface {
QuerySpacePricePerGib() (string, error)
//
QueryNetSnapShot() (NetSnapShot, error)
//
QueryTeePodr2Puk() ([]byte, error)
//
QueryTeeWorker(pubkey []byte) ([]byte, error)
//
QueryTeeWorkerList() ([]TeeWorkerInfo, error)
}

type chainClient struct {
Expand Down
103 changes: 103 additions & 0 deletions core/chain/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -633,6 +633,109 @@ func (c *chainClient) QueryNetSnapShot() (NetSnapShot, error) {
return data, nil
}

func (c *chainClient) QueryTeePodr2Puk() ([]byte, error) {
defer func() {
if err := recover(); err != nil {
println(utils.RecoverError(err))
}
}()
var data TeePodr2Pk

if !c.IsChainClientOk() {
c.SetChainState(false)
return nil, ERR_RPC_CONNECTION
}
c.SetChainState(true)

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

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

return []byte(string(data[:])), nil
}

func (c *chainClient) QueryTeeWorker(pubkey []byte) ([]byte, error) {
defer func() {
if err := recover(); err != nil {
println(utils.RecoverError(err))
}
}()
var data TeeWorkerInfo

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

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

if !c.IsChainClientOk() {
c.SetChainState(false)
return nil, ERR_RPC_CONNECTION
}
c.SetChainState(true)

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

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

return []byte(string(data.Peer_id[:])), nil
}

func (c *chainClient) QueryTeeWorkerList() ([]TeeWorkerInfo, error) {
var list []TeeWorkerInfo
key := createPrefixedKey(TEEWORKER, TEEWORKERMAP)
keys, err := c.api.RPC.State.GetKeysLatest(key)
if err != nil {
return list, errors.Wrap(err, "[GetKeysLatest]")
}
set, err := c.api.RPC.State.QueryStorageAtLatest(keys)
if err != nil {
return list, errors.Wrap(err, "[QueryStorageAtLatest]")
}
for _, elem := range set {
for _, change := range elem.Changes {
var teeWorker TeeWorkerInfo
if err := codec.Decode(change.StorageData, &teeWorker); err != nil {
log.Println(err)
continue
}
list = append(list, teeWorker)
}
}
return list, nil
}

// Pallert
const (
_FILEBANK = "FileBank"
Expand Down
10 changes: 9 additions & 1 deletion core/chain/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ const (
MINERITEMS = "MinerItems"

// TEEWORKER
SCHEDULERMAP = "SchedulerMap"
TEEWORKERMAP = "TeeWorkerMap"
TEEPODR2Pk = "TeePodr2Pk"

// FILEBANK
FILE = "File"
Expand Down Expand Up @@ -126,6 +127,8 @@ var (

type FileHash [64]types.U8
type Random [20]types.U8
type TeePodr2Pk [294]types.U8
type PeerID [53]types.U8

type MinerInfo struct {
PeerId types.U64
Expand Down Expand Up @@ -231,3 +234,8 @@ type MinerSnapShot struct {
Idle_space types.U128
Service_space types.U128
}

type TeeWorkerInfo struct {
Peer_id PeerID
Stash_account types.AccountID
}
3 changes: 3 additions & 0 deletions core/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ type Client interface {
QuerySpacePricePerGib() (string, error)
QueryNetSnapShot() (chain.NetSnapShot, error)
QueryChallenge(pubkey []byte) (ChallengeInfo, error)
QueryTeePodr2Puk() ([]byte, error)
QueryTeeWorkerPeerID(pubkey []byte) ([]byte, error)
QueryTeeWorkerList() ([]chain.TeeWorkerInfo, error)
CheckBucketName(bucketname string) bool
CreateBucket(owner []byte, bucketname string) (string, error)
ProcessingData(path string) ([]SegmentInfo, string, error)
Expand Down
2 changes: 1 addition & 1 deletion core/client/idlefile.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ func (c *Cli) SubmitIdleFile(size uint64, blockNum, blocksize, scansize uint32,
filehash[i] = types.U8(hash[i])
}
var idlefiles = []chain.IdleMetaInfo{
chain.IdleMetaInfo{
{
Size: types.NewU64(size),
BlockNum: types.NewU32(blockNum),
BlockSize: types.NewU32(blocksize),
Expand Down
12 changes: 12 additions & 0 deletions core/client/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,15 @@ func (c *Cli) QueryUserSpaceInfo(pubkey []byte) (chain.UserSpaceInfo, error) {
func (c *Cli) QuerySpacePricePerGib() (string, error) {
return c.Chain.QuerySpacePricePerGib()
}

func (c *Cli) QueryTeePodr2Puk() ([]byte, error) {
return c.Chain.QueryTeePodr2Puk()
}

func (c *Cli) QueryTeeWorkerList() ([]chain.TeeWorkerInfo, error) {
return c.Chain.QueryTeeWorkerList()
}

func (c *Cli) QueryTeeWorkerPeerID(pubkey []byte) ([]byte, error) {
return c.Chain.QueryTeeWorker(pubkey)
}

0 comments on commit 30f58fa

Please sign in to comment.