Skip to content

Commit

Permalink
update chainst (#77)
Browse files Browse the repository at this point in the history
  • Loading branch information
AstaFrode authored Jun 15, 2023
1 parent acdc171 commit 983e95b
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 39 deletions.
1 change: 1 addition & 0 deletions chain/audit.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ func (c *ChainSDK) ReportProof(idlesigma, servicesigma string) (string, error) {
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down
10 changes: 10 additions & 0 deletions chain/fileBank.go
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,7 @@ func (c *ChainSDK) SubmitIdleMetadata(teeAcc []byte, idlefiles []pattern.IdleMet
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -428,6 +429,7 @@ func (c *ChainSDK) CreateBucket(owner_pkey []byte, name string) (string, error)
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -523,6 +525,7 @@ func (c *ChainSDK) DeleteBucket(owner_pkey []byte, name string) (string, error)
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -621,6 +624,7 @@ func (c *ChainSDK) UploadDeclaration(filehash string, dealinfo []pattern.Segment
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -724,6 +728,7 @@ func (c *ChainSDK) DeleteFile(puk []byte, filehash []string) (string, []pattern.
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, hashs, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -810,6 +815,7 @@ func (c *ChainSDK) SubmitFileReport(roothash []pattern.FileHash) (string, []patt
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, nil, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -913,6 +919,7 @@ func (c *ChainSDK) ReplaceIdleFiles(roothash []pattern.FileHash) (string, []patt
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, nil, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -1081,6 +1088,7 @@ func (c *ChainSDK) GenerateRestoralOrder(rootHash, fragmentHash string) (string,
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -1180,6 +1188,7 @@ func (c *ChainSDK) ClaimRestoralOrder(fragmentHash string) (string, error) {
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -1293,6 +1302,7 @@ func (c *ChainSDK) ClaimRestoralNoExistOrder(puk []byte, rootHash, restoralFragm
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down
67 changes: 32 additions & 35 deletions chain/role.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (
"github.com/pkg/errors"
)

func (c *ChainSDK) Register(role string, puk []byte, earnings string, pledge uint64) (string, bool, string, error) {
func (c *ChainSDK) Register(role string, puk []byte, earnings string, pledge uint64) (string, string, error) {
c.lock.Lock()
defer func() {
c.lock.Unlock()
Expand All @@ -33,7 +33,6 @@ func (c *ChainSDK) Register(role string, puk []byte, earnings string, pledge uin

var (
err error
registed bool
txhash string
pubkey []byte
minerinfo pattern.MinerInfo
Expand All @@ -43,95 +42,92 @@ func (c *ChainSDK) Register(role string, puk []byte, earnings string, pledge uin
)

if !c.GetChainState() {
return txhash, registed, earnings, pattern.ERR_RPC_CONNECTION
return txhash, earnings, pattern.ERR_RPC_CONNECTION
}

var peerid pattern.PeerId
if len(peerid) != len(puk) {
return txhash, registed, earnings, fmt.Errorf("invalid peerid: %v", puk)
return txhash, earnings, fmt.Errorf("invalid peerid: %v", puk)
}
for i := 0; i < len(peerid); i++ {
peerid[i] = types.U8(puk[i])
}

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

switch role {
case pattern.Role_OSS, pattern.Role_DEOSS, "deoss", "oss", "Deoss", "DeOSS":
id, err := c.QueryDeossPeerPublickey(c.keyring.PublicKey)
if err != nil {
if err.Error() != pattern.ERR_Empty {
return txhash, registed, earnings, err
return txhash, earnings, err
}
registed = true
} else {
if !utils.CompareSlice(id, puk) {
txhash, err = c.updateAddress(key, role, peerid)
return txhash, registed, earnings, err
return txhash, earnings, err
}
return "", registed, earnings, nil
return "", earnings, nil
}

call, err = types.NewCall(c.metadata, pattern.TX_OSS_REGISTER, peerid)
if err != nil {
return txhash, registed, earnings, errors.Wrap(err, "[NewCall]")
return txhash, earnings, errors.Wrap(err, "[NewCall]")
}
case pattern.Role_BUCKET, "SMINER", "bucket", "Bucket", "Sminer", "sminer":
minerinfo, err = c.QueryStorageMiner(c.keyring.PublicKey)
if err != nil {
if err.Error() != pattern.ERR_Empty {
return txhash, registed, earnings, err
return txhash, earnings, err
}
registed = true
} else {
if !utils.CompareSlice([]byte(string(minerinfo.PeerId[:])), puk) {
txhash, err = c.updateAddress(key, role, peerid)
return txhash, registed, earnings, err
return txhash, earnings, err
}
acc, _ := utils.EncodePublicKeyAsCessAccount(minerinfo.BeneficiaryAcc[:])
if earnings != "" {
if acc != earnings {
puk, err := utils.ParsingPublickey(earnings)
if err != nil {
return txhash, registed, acc, err
return txhash, acc, err
}
txhash, err = c.updateEarningsAcc(key, puk)
return txhash, registed, earnings, err
return txhash, earnings, err
}
}
return "", registed, acc, nil
return "", acc, nil
}

pubkey, err = utils.ParsingPublickey(earnings)
if err != nil {
return txhash, registed, earnings, errors.Wrap(err, "[DecodeToPub]")
return txhash, earnings, errors.Wrap(err, "[DecodeToPub]")
}
acc, err = types.NewAccountID(pubkey)
if err != nil {
return txhash, registed, earnings, errors.Wrap(err, "[NewAccountID]")
return txhash, earnings, errors.Wrap(err, "[NewAccountID]")
}
realTokens, ok := new(big.Int).SetString(strconv.FormatUint(pledge, 10)+pattern.TokenPrecision_CESS, 10)
if !ok {
return txhash, registed, earnings, errors.New("[big.Int.SetString]")
return txhash, earnings, errors.New("[big.Int.SetString]")
}
call, err = types.NewCall(c.metadata, pattern.TX_SMINER_REGISTER, *acc, peerid, types.NewU128(*realTokens))
if err != nil {
return txhash, registed, earnings, errors.Wrap(err, "[NewCall]")
return txhash, earnings, errors.Wrap(err, "[NewCall]")
}
default:
return "", registed, earnings, fmt.Errorf("invalid role name")
return "", earnings, fmt.Errorf("invalid role name")
}

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

if !ok {
return txhash, registed, earnings, pattern.ERR_RPC_EMPTY_VALUE
return txhash, earnings, pattern.ERR_RPC_EMPTY_VALUE
}

o := types.SignatureOptions{
Expand All @@ -149,13 +145,14 @@ func (c *ChainSDK) Register(role string, puk []byte, earnings string, pledge uin
// Sign the transaction
err = ext.Sign(c.keyring, o)
if err != nil {
return txhash, registed, earnings, errors.Wrap(err, "[Sign]")
return txhash, earnings, errors.Wrap(err, "[Sign]")
}

// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
return txhash, registed, earnings, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
c.SetChainState(false)
return txhash, earnings, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()

Expand All @@ -170,31 +167,29 @@ func (c *ChainSDK) Register(role string, puk []byte, earnings string, pledge uin
txhash, _ = codec.EncodeToHex(status.AsInBlock)
h, err := c.api.RPC.State.GetStorageRaw(c.keyEvents, status.AsInBlock)
if err != nil {
return txhash, registed, earnings, errors.Wrap(err, "[GetStorageRaw]")
return txhash, earnings, errors.Wrap(err, "[GetStorageRaw]")
}
err = types.EventRecordsRaw(*h).DecodeEventRecords(c.metadata, &events)
if err != nil {
return txhash, registed, earnings, nil
return txhash, earnings, nil
}
switch role {
case pattern.Role_OSS, pattern.Role_DEOSS, "deoss", "oss", "Deoss", "DeOSS":
if len(events.Oss_OssRegister) > 0 {
registed = true
return txhash, registed, earnings, nil
return txhash, earnings, nil
}
case pattern.Role_BUCKET, "SMINER", "bucket", "Bucket", "Sminer", "sminer":
if len(events.Sminer_Registered) > 0 {
registed = true
return txhash, registed, earnings, nil
return txhash, earnings, nil
}
default:
return txhash, registed, earnings, errors.New(pattern.ERR_Failed)
return txhash, earnings, errors.New(pattern.ERR_Failed)
}
}
case err = <-sub.Err():
return txhash, registed, earnings, errors.Wrap(err, "[sub]")
return txhash, earnings, errors.Wrap(err, "[sub]")
case <-timeout.C:
return txhash, registed, earnings, pattern.ERR_RPC_TIMEOUT
return txhash, earnings, pattern.ERR_RPC_TIMEOUT
}
}
}
Expand Down Expand Up @@ -252,6 +247,7 @@ func (c *ChainSDK) updateAddress(key types.StorageKey, name string, peerid patte
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -363,6 +359,7 @@ func (c *ChainSDK) Exit(role string) (string, error) {
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down
5 changes: 5 additions & 0 deletions chain/sminer.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ func (c *ChainSDK) UpdateEarningsAcc(puk []byte) (string, error) {
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -260,6 +261,7 @@ func (c *ChainSDK) updateEarningsAcc(key types.StorageKey, puk []byte) (string,
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -357,6 +359,7 @@ func (c *ChainSDK) IncreaseStakingAmount(tokens *big.Int) (string, error) {
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -454,6 +457,7 @@ func (c *ChainSDK) ClaimRewards() (string, error) {
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down Expand Up @@ -543,6 +547,7 @@ func (c *ChainSDK) Withdraw() (string, error) {
// Do the transfer and track the actual status
sub, err := c.api.RPC.Author.SubmitAndWatchExtrinsic(ext)
if err != nil {
c.SetChainState(false)
return txhash, errors.Wrap(err, "[SubmitAndWatchExtrinsic]")
}
defer sub.Unsubscribe()
Expand Down
2 changes: 1 addition & 1 deletion core/pattern/pattern.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ type TeePodr2Pk [270]types.U8
type PeerId [38]types.U8

type SysProperties struct {
Ss58Format types.U8
Ss58Format types.Bytes
TokenDecimals types.U8
TokenSymbol types.Text
SS58Prefix types.U32
Expand Down
2 changes: 1 addition & 1 deletion core/sdk/sdk.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ type SDK interface {
QueryRestoralTargetList() ([]pattern.RestoralTargetInfo, error)

// Register is used to register oss or bucket roles.
Register(role string, puk []byte, earnings string, pledge uint64) (string, bool, string, error)
Register(role string, puk []byte, earnings string, pledge uint64) (string, string, error)

// UpdateEarningsAcc update earnings account.
UpdateEarningsAcc(puk []byte) (string, error)
Expand Down
4 changes: 2 additions & 2 deletions example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func TestRegisterDeOSS(t *testing.T) {
)
assert.NoError(t, err)

_, _, _, err = cli.Register(cli.GetRoleName(), p2p.GetPeerPublickey(), "", 0)
_, _, err = cli.Register(cli.GetRoleName(), p2p.GetPeerPublickey(), "", 0)
assert.NoError(t, err)
}

Expand Down Expand Up @@ -102,6 +102,6 @@ func TestRegisterStorageNode(t *testing.T) {
)
assert.NoError(t, err)

_, _, _, err = cli.Register(cli.GetRoleName(), p2p.GetPeerPublickey(), os.Getenv("MY_ADDR"), 0)
_, _, err = cli.Register(cli.GetRoleName(), p2p.GetPeerPublickey(), os.Getenv("MY_ADDR"), 0)
assert.NoError(t, err)
}

0 comments on commit 983e95b

Please sign in to comment.