Documentation ¶
Index ¶
- Constants
- Variables
- func DefaultClientOptions() []grpc.DialOption
- type GfSpClient
- func (s *GfSpClient) ApproverConn(ctx context.Context, opts ...grpc.DialOption) (*grpc.ClientConn, error)
- func (s *GfSpClient) AskCreateBucketApproval(ctx context.Context, task coretask.ApprovalCreateBucketTask) (bool, coretask.ApprovalCreateBucketTask, error)
- func (s *GfSpClient) AskCreateObjectApproval(ctx context.Context, task coretask.ApprovalCreateObjectTask) (bool, coretask.ApprovalCreateObjectTask, error)
- func (s *GfSpClient) AskSecondaryReplicatePieceApproval(ctx context.Context, task coretask.ApprovalReplicatePieceTask, low, high int, ...) ([]*gfsptask.GfSpReplicatePieceApprovalTask, error)
- func (s *GfSpClient) AskTask(ctx context.Context, limit corercmgr.Limit) (coretask.Task, error)
- func (s *GfSpClient) Close() error
- func (s *GfSpClient) Connection(ctx context.Context, address string, opts ...grpc.DialOption) (*grpc.ClientConn, error)
- func (s *GfSpClient) CreateResumableUploadObject(ctx context.Context, task coretask.ResumableUploadObjectTask) error
- func (s *GfSpClient) CreateUploadObject(ctx context.Context, task coretask.UploadObjectTask) error
- func (s *GfSpClient) DiscontinueBucket(ctx context.Context, bucket *storagetypes.MsgDiscontinueBucket) (string, error)
- func (s *GfSpClient) DoneReplicatePiece(ctx context.Context, task coretask.ReceivePieceTask, opts ...grpc.DialOption) ([]byte, []byte, error)
- func (s *GfSpClient) DoneReplicatePieceToSecondary(ctx context.Context, endpoint string, ...) ([]byte, []byte, error)
- func (s *GfSpClient) DownloaderConn(ctx context.Context, opts ...grpc.DialOption) (*grpc.ClientConn, error)
- func (s *GfSpClient) GetAuthNonce(ctx context.Context, account string, domain string, opts ...grpc.CallOption) (currentNonce int32, nextNonce int32, currentPublicKey string, expiryDate int64, ...)
- func (s *GfSpClient) GetBucketByBucketID(ctx context.Context, bucketId int64, includePrivate bool, ...) (*types.Bucket, error)
- func (s *GfSpClient) GetBucketByBucketName(ctx context.Context, bucketName string, includePrivate bool, ...) (*types.Bucket, error)
- func (s *GfSpClient) GetBucketMeta(ctx context.Context, bucketName string, includePrivate bool, ...) (*types.Bucket, *payment_types.StreamRecord, error)
- func (s *GfSpClient) GetBucketReadQuota(ctx context.Context, bucket *storage_types.BucketInfo, yearMonth string, ...) (uint64, uint64, uint64, error)
- func (s *GfSpClient) GetChallengeInfo(ctx context.Context, challengePieceTask coretask.ChallengePieceTask, ...) ([]byte, [][]byte, []byte, error)
- func (s *GfSpClient) GetEndpointBySpAddress(ctx context.Context, spAddress string, opts ...grpc.DialOption) (string, error)
- func (s *GfSpClient) GetGroupList(ctx context.Context, name string, prefix string, sourceType string, ...) ([]*types.Group, int64, error)
- func (s *GfSpClient) GetObject(ctx context.Context, downloadObjectTask coretask.DownloadObjectTask, ...) ([]byte, error)
- func (s *GfSpClient) GetObjectByID(ctx context.Context, objectID uint64, opts ...grpc.DialOption) (*storage_types.ObjectInfo, error)
- func (s *GfSpClient) GetObjectMeta(ctx context.Context, objectName string, bucketName string, includePrivate bool, ...) (*types.Object, error)
- func (s *GfSpClient) GetPaymentByBucketID(ctx context.Context, bucketID int64, includePrivate bool, ...) (*payment_types.StreamRecord, error)
- func (s *GfSpClient) GetPaymentByBucketName(ctx context.Context, bucketName string, includePrivate bool, ...) (*payment_types.StreamRecord, error)
- func (s *GfSpClient) GetPiece(ctx context.Context, downloadPieceTask coretask.DownloadPieceTask, ...) ([]byte, error)
- func (s *GfSpClient) GetPieceFromECChunks(ctx context.Context, endpoint string, task coretask.RecoveryPieceTask) (io.ReadCloser, error)
- func (s *GfSpClient) GetUploadObjectSegment(ctx context.Context, objectID uint64, opts ...grpc.DialOption) (uint32, error)
- func (s *GfSpClient) GetUploadObjectState(ctx context.Context, objectID uint64, opts ...grpc.DialOption) (int32, string, error)
- func (s *GfSpClient) GetUserBuckets(ctx context.Context, account string, includeRemoved bool, ...) ([]*types.Bucket, error)
- func (s *GfSpClient) GetUserBucketsCount(ctx context.Context, account string, includeRemoved bool, ...) (int64, error)
- func (s *GfSpClient) HTTPClient(ctx context.Context) *http.Client
- func (s *GfSpClient) ListBucketReadRecord(ctx context.Context, bucket *storage_types.BucketInfo, ...) ([]*types.ReadRecord, int64, error)
- func (s *GfSpClient) ListBucketsByBucketID(ctx context.Context, bucketIDs []uint64, includeRemoved bool, ...) (map[uint64]*types.Bucket, error)
- func (s *GfSpClient) ListDeletedObjectsByBlockNumberRange(ctx context.Context, spOperatorAddress string, startBlockNumber uint64, ...) ([]*types.Object, uint64, error)
- func (s *GfSpClient) ListExpiredBucketsBySp(ctx context.Context, createAt int64, primarySpAddress string, limit int64, ...) ([]*types.Bucket, error)
- func (s *GfSpClient) ListObjectsByBucketName(ctx context.Context, bucketName string, accountId string, maxKeys uint64, ...) (objects []*types.Object, KeyCount uint64, MaxKeys uint64, IsTruncated bool, ...)
- func (s *GfSpClient) ListObjectsByObjectID(ctx context.Context, objectIDs []uint64, includeRemoved bool, ...) (map[uint64]*types.Object, error)
- func (s *GfSpClient) ManagerConn(ctx context.Context, opts ...grpc.DialOption) (*grpc.ClientConn, error)
- func (s *GfSpClient) P2PConn(ctx context.Context, opts ...grpc.DialOption) (*grpc.ClientConn, error)
- func (s *GfSpClient) QueryP2PBootstrap(ctx context.Context) ([]string, error)
- func (s *GfSpClient) QueryTasks(ctx context.Context, endpoint string, subKey string) ([]string, error)
- func (s *GfSpClient) RejectUnSealObject(ctx context.Context, object *storagetypes.MsgRejectSealObject) (string, error)
- func (s *GfSpClient) ReplicatePiece(ctx context.Context, task coretask.ReceivePieceTask, data []byte, ...) error
- func (s *GfSpClient) ReplicatePieceToSecondary(ctx context.Context, endpoint string, ...) error
- func (s *GfSpClient) ReportTask(ctx context.Context, report coretask.Task) error
- func (s *GfSpClient) ResumableUploadObject(ctx context.Context, task coretask.ResumableUploadObjectTask, stream io.Reader) error
- func (s *GfSpClient) SealObject(ctx context.Context, object *storagetypes.MsgSealObject) (string, error)
- func (s *GfSpClient) SignCreateBucketApproval(ctx context.Context, bucket *storagetypes.MsgCreateBucket) ([]byte, error)
- func (s *GfSpClient) SignCreateObjectApproval(ctx context.Context, object *storagetypes.MsgCreateObject) ([]byte, error)
- func (s *GfSpClient) SignIntegrityHash(ctx context.Context, objectID uint64, checksums [][]byte) ([]byte, []byte, error)
- func (s *GfSpClient) SignP2PPingMsg(ctx context.Context, ping *gfspp2p.GfSpPing) ([]byte, error)
- func (s *GfSpClient) SignP2PPongMsg(ctx context.Context, pong *gfspp2p.GfSpPong) ([]byte, error)
- func (s *GfSpClient) SignReceiveTask(ctx context.Context, receiveTask coretask.ReceivePieceTask) ([]byte, error)
- func (s *GfSpClient) SignRecoveryTask(ctx context.Context, recoveryTask coretask.RecoveryPieceTask) ([]byte, error)
- func (s *GfSpClient) SignReplicatePieceApproval(ctx context.Context, task coretask.ApprovalReplicatePieceTask) ([]byte, error)
- func (s *GfSpClient) SignerConn(ctx context.Context, opts ...grpc.DialOption) (*grpc.ClientConn, error)
- func (s *GfSpClient) UpdateUserPublicKey(ctx context.Context, account string, domain string, currentNonce int32, ...) (bool, error)
- func (s *GfSpClient) UploadObject(ctx context.Context, task coretask.UploadObjectTask, stream io.Reader) error
- func (s *GfSpClient) VerifyAuthentication(ctx context.Context, auth coremodule.AuthOpType, ...) (bool, error)
- func (s *GfSpClient) VerifyOffChainSignature(ctx context.Context, account string, domain string, offChainSig string, ...) (bool, error)
- func (s *GfSpClient) VerifyPermission(ctx context.Context, Operator string, bucketName string, objectName string, ...) (*permission_types.Effect, error)
Constants ¶
const ( // MaxClientCallMsgSize defines the max message size for grpc client MaxClientCallMsgSize = 3 * 1024 * 1024 * 1024 // ClientCodeSpace defines the code space for gfsp client ClientCodeSpace = "GfSpClient" // HttpMaxIdleConns defines the max idle connections for HTTP server HttpMaxIdleConns = 20 // HttpIdleConnTimout defines the idle time of connection for closing HttpIdleConnTimout = 60 * time.Second // DefaultStreamBufSize defines gateway stream forward payload buf size DefaultStreamBufSize = 16 * 1024 * 1024 )
const ( // ReplicateObjectPiecePath defines replicate-object path style ReplicateObjectPiecePath = "/greenfield/receiver/v1/replicate-piece" // GnfdReplicatePieceApprovalHeader defines secondary approved msg for replicating piece GnfdReplicatePieceApprovalHeader = "X-Gnfd-Replicate-Piece-Approval-Msg" // GnfdReceiveMsgHeader defines receive piece data meta GnfdReceiveMsgHeader = "X-Gnfd-Receive-Msg" // GnfdIntegrityHashHeader defines integrity hash, which is used by challenge and receiver GnfdIntegrityHashHeader = "X-Gnfd-Integrity-Hash" // GnfdIntegrityHashSignatureHeader defines integrity hash signature, which is used by receiver GnfdIntegrityHashSignatureHeader = "X-Gnfd-Integrity-Hash-Signature" //RecoveryObjectPiecePath defines recovery-object path style RecoveryObjectPiecePath = "/greenfield/recovery/v1/get-piece" // GnfdRecoveryMsgHeader defines receive piece data meta GnfdRecoveryMsgHeader = "X-Gnfd-Recovery-Msg" )
spilt server and client const definition avoids circular references TODO:: extract the common parts of http to the gfsp app layer
Variables ¶
var ( ErrRpcUnknown = gfsperrors.Register(ClientCodeSpace, http.StatusNotFound, 98001, "server slipped away, try again later") ErrExceptionsStream = gfsperrors.Register(ClientCodeSpace, http.StatusBadRequest, 98002, "stream closed abnormally") ErrTypeMismatch = gfsperrors.Register(ClientCodeSpace, http.StatusBadRequest, 98101, "response type mismatch") ErrNoSuchObject = gfsperrors.Register(ClientCodeSpace, http.StatusBadRequest, 98093, "no such object from metadata") )
Functions ¶
func DefaultClientOptions ¶
func DefaultClientOptions() []grpc.DialOption
Types ¶
type GfSpClient ¶
type GfSpClient struct {
// contains filtered or unexported fields
}
func NewGfSpClient ¶
func (*GfSpClient) ApproverConn ¶
func (s *GfSpClient) ApproverConn(ctx context.Context, opts ...grpc.DialOption) (*grpc.ClientConn, error)
func (*GfSpClient) AskCreateBucketApproval ¶
func (s *GfSpClient) AskCreateBucketApproval(ctx context.Context, task coretask.ApprovalCreateBucketTask) ( bool, coretask.ApprovalCreateBucketTask, error)
func (*GfSpClient) AskCreateObjectApproval ¶
func (s *GfSpClient) AskCreateObjectApproval(ctx context.Context, task coretask.ApprovalCreateObjectTask) ( bool, coretask.ApprovalCreateObjectTask, error)
func (*GfSpClient) AskSecondaryReplicatePieceApproval ¶
func (s *GfSpClient) AskSecondaryReplicatePieceApproval(ctx context.Context, task coretask.ApprovalReplicatePieceTask, low, high int, timeout int64) ([]*gfsptask.GfSpReplicatePieceApprovalTask, error)
func (*GfSpClient) Close ¶
func (s *GfSpClient) Close() error
func (*GfSpClient) Connection ¶
func (s *GfSpClient) Connection(ctx context.Context, address string, opts ...grpc.DialOption) (*grpc.ClientConn, error)
func (*GfSpClient) CreateResumableUploadObject ¶ added in v0.2.3
func (s *GfSpClient) CreateResumableUploadObject(ctx context.Context, task coretask.ResumableUploadObjectTask) error
func (*GfSpClient) CreateUploadObject ¶
func (s *GfSpClient) CreateUploadObject(ctx context.Context, task coretask.UploadObjectTask) error
func (*GfSpClient) DiscontinueBucket ¶
func (s *GfSpClient) DiscontinueBucket(ctx context.Context, bucket *storagetypes.MsgDiscontinueBucket) (string, error)
func (*GfSpClient) DoneReplicatePiece ¶
func (s *GfSpClient) DoneReplicatePiece(ctx context.Context, task coretask.ReceivePieceTask, opts ...grpc.DialOption) ( []byte, []byte, error)
func (*GfSpClient) DoneReplicatePieceToSecondary ¶
func (s *GfSpClient) DoneReplicatePieceToSecondary(ctx context.Context, endpoint string, approval coretask.ApprovalReplicatePieceTask, receive coretask.ReceivePieceTask) ([]byte, []byte, error)
func (*GfSpClient) DownloaderConn ¶
func (s *GfSpClient) DownloaderConn(ctx context.Context, opts ...grpc.DialOption) (*grpc.ClientConn, error)
func (*GfSpClient) GetAuthNonce ¶
func (s *GfSpClient) GetAuthNonce(ctx context.Context, account string, domain string, opts ...grpc.CallOption) (currentNonce int32, nextNonce int32, currentPublicKey string, expiryDate int64, err error)
GetAuthNonce get the auth nonce for which the Dapp or client can generate EDDSA key pairs.
func (*GfSpClient) GetBucketByBucketID ¶
func (s *GfSpClient) GetBucketByBucketID(ctx context.Context, bucketId int64, includePrivate bool, opts ...grpc.DialOption) (*types.Bucket, error)
GetBucketByBucketID get bucket info by a bucket id
func (*GfSpClient) GetBucketByBucketName ¶
func (s *GfSpClient) GetBucketByBucketName(ctx context.Context, bucketName string, includePrivate bool, opts ...grpc.DialOption) (*types.Bucket, error)
GetBucketByBucketName get bucket info by a bucket name
func (*GfSpClient) GetBucketMeta ¶
func (s *GfSpClient) GetBucketMeta(ctx context.Context, bucketName string, includePrivate bool, opts ...grpc.DialOption) (*types.Bucket, *payment_types.StreamRecord, error)
GetBucketMeta get bucket info along with its related info such as payment
func (*GfSpClient) GetBucketReadQuota ¶
func (s *GfSpClient) GetBucketReadQuota(ctx context.Context, bucket *storage_types.BucketInfo, yearMonth string, opts ...grpc.DialOption) ( uint64, uint64, uint64, error)
func (*GfSpClient) GetChallengeInfo ¶
func (s *GfSpClient) GetChallengeInfo(ctx context.Context, challengePieceTask coretask.ChallengePieceTask, opts ...grpc.DialOption) ( []byte, [][]byte, []byte, error)
func (*GfSpClient) GetEndpointBySpAddress ¶
func (s *GfSpClient) GetEndpointBySpAddress(ctx context.Context, spAddress string, opts ...grpc.DialOption) (string, error)
GetEndpointBySpAddress get endpoint by sp address
func (*GfSpClient) GetGroupList ¶
func (*GfSpClient) GetObject ¶
func (s *GfSpClient) GetObject(ctx context.Context, downloadObjectTask coretask.DownloadObjectTask, opts ...grpc.DialOption) ( []byte, error)
func (*GfSpClient) GetObjectByID ¶ added in v0.2.3
func (s *GfSpClient) GetObjectByID(ctx context.Context, objectID uint64, opts ...grpc.DialOption) (*storage_types.ObjectInfo, error)
func (*GfSpClient) GetObjectMeta ¶
func (s *GfSpClient) GetObjectMeta(ctx context.Context, objectName string, bucketName string, includePrivate bool, opts ...grpc.DialOption) (*types.Object, error)
GetObjectMeta get object metadata
func (*GfSpClient) GetPaymentByBucketID ¶
func (s *GfSpClient) GetPaymentByBucketID(ctx context.Context, bucketID int64, includePrivate bool, opts ...grpc.DialOption) (*payment_types.StreamRecord, error)
GetPaymentByBucketID get bucket payment info by a bucket id
func (*GfSpClient) GetPaymentByBucketName ¶
func (s *GfSpClient) GetPaymentByBucketName(ctx context.Context, bucketName string, includePrivate bool, opts ...grpc.DialOption) (*payment_types.StreamRecord, error)
GetPaymentByBucketName get bucket payment info by a bucket name
func (*GfSpClient) GetPiece ¶
func (s *GfSpClient) GetPiece(ctx context.Context, downloadPieceTask coretask.DownloadPieceTask, opts ...grpc.DialOption) ( []byte, error)
func (*GfSpClient) GetPieceFromECChunks ¶ added in v0.2.3
func (s *GfSpClient) GetPieceFromECChunks(ctx context.Context, endpoint string, task coretask.RecoveryPieceTask) (io.ReadCloser, error)
func (*GfSpClient) GetUploadObjectSegment ¶ added in v0.2.3
func (s *GfSpClient) GetUploadObjectSegment(ctx context.Context, objectID uint64, opts ...grpc.DialOption) (uint32, error)
func (*GfSpClient) GetUploadObjectState ¶
func (s *GfSpClient) GetUploadObjectState(ctx context.Context, objectID uint64, opts ...grpc.DialOption) (int32, string, error)
func (*GfSpClient) GetUserBuckets ¶
func (s *GfSpClient) GetUserBuckets(ctx context.Context, account string, includeRemoved bool, opts ...grpc.DialOption) ([]*types.Bucket, error)
func (*GfSpClient) GetUserBucketsCount ¶
func (s *GfSpClient) GetUserBucketsCount(ctx context.Context, account string, includeRemoved bool, opts ...grpc.DialOption) (int64, error)
func (*GfSpClient) HTTPClient ¶
func (s *GfSpClient) HTTPClient(ctx context.Context) *http.Client
func (*GfSpClient) ListBucketReadRecord ¶
func (s *GfSpClient) ListBucketReadRecord(ctx context.Context, bucket *storage_types.BucketInfo, startTimestampUs, endTimestampUs, maxRecordNum int64, opts ...grpc.DialOption) ([]*types.ReadRecord, int64, error)
func (*GfSpClient) ListBucketsByBucketID ¶
func (*GfSpClient) ListDeletedObjectsByBlockNumberRange ¶
func (*GfSpClient) ListExpiredBucketsBySp ¶
func (s *GfSpClient) ListExpiredBucketsBySp(ctx context.Context, createAt int64, primarySpAddress string, limit int64, opts ...grpc.DialOption) ([]*types.Bucket, error)
ListExpiredBucketsBySp list buckets that are expired by specific sp
func (*GfSpClient) ListObjectsByBucketName ¶
func (s *GfSpClient) ListObjectsByBucketName(ctx context.Context, bucketName string, accountId string, maxKeys uint64, startAfter string, continuationToken string, delimiter string, prefix string, includeRemoved bool, opts ...grpc.DialOption) ( objects []*types.Object, KeyCount uint64, MaxKeys uint64, IsTruncated bool, NextContinuationToken string, Name string, Prefix string, Delimiter string, CommonPrefixes []string, ContinuationToken string, err error)
ListObjectsByBucketName list objects info by a bucket name
func (*GfSpClient) ListObjectsByObjectID ¶
func (*GfSpClient) ManagerConn ¶
func (s *GfSpClient) ManagerConn(ctx context.Context, opts ...grpc.DialOption) (*grpc.ClientConn, error)
func (*GfSpClient) P2PConn ¶
func (s *GfSpClient) P2PConn(ctx context.Context, opts ...grpc.DialOption) (*grpc.ClientConn, error)
func (*GfSpClient) QueryP2PBootstrap ¶
func (s *GfSpClient) QueryP2PBootstrap(ctx context.Context) ([]string, error)
func (*GfSpClient) QueryTasks ¶
func (*GfSpClient) RejectUnSealObject ¶
func (s *GfSpClient) RejectUnSealObject( ctx context.Context, object *storagetypes.MsgRejectSealObject) (string, error)
func (*GfSpClient) ReplicatePiece ¶
func (s *GfSpClient) ReplicatePiece(ctx context.Context, task coretask.ReceivePieceTask, data []byte, opts ...grpc.DialOption) error
func (*GfSpClient) ReplicatePieceToSecondary ¶
func (s *GfSpClient) ReplicatePieceToSecondary( ctx context.Context, endpoint string, approval coretask.ApprovalReplicatePieceTask, receive coretask.ReceivePieceTask, data []byte) error
func (*GfSpClient) ReportTask ¶
func (*GfSpClient) ResumableUploadObject ¶ added in v0.2.3
func (s *GfSpClient) ResumableUploadObject(ctx context.Context, task coretask.ResumableUploadObjectTask, stream io.Reader) error
func (*GfSpClient) SealObject ¶
func (s *GfSpClient) SealObject(ctx context.Context, object *storagetypes.MsgSealObject) (string, error)
func (*GfSpClient) SignCreateBucketApproval ¶
func (s *GfSpClient) SignCreateBucketApproval(ctx context.Context, bucket *storagetypes.MsgCreateBucket) ( []byte, error)
func (*GfSpClient) SignCreateObjectApproval ¶
func (s *GfSpClient) SignCreateObjectApproval(ctx context.Context, object *storagetypes.MsgCreateObject) ([]byte, error)
func (*GfSpClient) SignIntegrityHash ¶
func (*GfSpClient) SignP2PPingMsg ¶
func (*GfSpClient) SignP2PPongMsg ¶
func (*GfSpClient) SignReceiveTask ¶
func (s *GfSpClient) SignReceiveTask(ctx context.Context, receiveTask coretask.ReceivePieceTask) ([]byte, error)
func (*GfSpClient) SignRecoveryTask ¶ added in v0.2.3
func (s *GfSpClient) SignRecoveryTask(ctx context.Context, recoveryTask coretask.RecoveryPieceTask) ([]byte, error)
func (*GfSpClient) SignReplicatePieceApproval ¶
func (s *GfSpClient) SignReplicatePieceApproval(ctx context.Context, task coretask.ApprovalReplicatePieceTask) ([]byte, error)
func (*GfSpClient) SignerConn ¶
func (s *GfSpClient) SignerConn(ctx context.Context, opts ...grpc.DialOption) (*grpc.ClientConn, error)
func (*GfSpClient) UpdateUserPublicKey ¶
func (s *GfSpClient) UpdateUserPublicKey(ctx context.Context, account string, domain string, currentNonce int32, nonce int32, userPublicKey string, expiryDate int64, opts ...grpc.CallOption) (bool, error)
UpdateUserPublicKey updates the user public key once the Dapp or client generates the EDDSA key pairs.
func (*GfSpClient) UploadObject ¶
func (s *GfSpClient) UploadObject(ctx context.Context, task coretask.UploadObjectTask, stream io.Reader) error
func (*GfSpClient) VerifyAuthentication ¶
func (s *GfSpClient) VerifyAuthentication(ctx context.Context, auth coremodule.AuthOpType, account, bucket, object string) (bool, error)
func (*GfSpClient) VerifyOffChainSignature ¶
func (s *GfSpClient) VerifyOffChainSignature(ctx context.Context, account string, domain string, offChainSig string, realMsgToSign string, opts ...grpc.CallOption) (bool, error)
VerifyOffChainSignature verifies the signature signed by user's EDDSA private key.
func (*GfSpClient) VerifyPermission ¶
func (s *GfSpClient) VerifyPermission(ctx context.Context, Operator string, bucketName string, objectName string, actionType permission_types.ActionType, opts ...grpc.DialOption) (*permission_types.Effect, error)
VerifyPermission Verify the input account’s permission to input items