Documentation ¶
Index ¶
- Constants
- Variables
- func AdminAPI(log *zap.Logger, walletStore WalletStore, netStore NetworkStore, ...) (*jsonrpc.Dispatcher, error)
- type AdminAnnotateKey
- type AdminAnnotateKeyParams
- type AdminAnnotateKeyResult
- type AdminCloseConnection
- type AdminCloseConnectionParams
- type AdminCloseConnectionsToHostname
- type AdminCloseConnectionsToHostnameParams
- type AdminCloseConnectionsToWallet
- type AdminCloseConnectionsToWalletParams
- type AdminCreateWallet
- type AdminCreateWalletParams
- type AdminCreateWalletResult
- type AdminCreatedWallet
- type AdminDescribeKey
- type AdminDescribeKeyParams
- type AdminDescribeKeyResult
- type AdminDescribeNetwork
- type AdminDescribeNetworkParams
- type AdminDescribeNetworkResult
- type AdminDescribePermissions
- type AdminDescribePermissionsParams
- type AdminDescribePermissionsResult
- type AdminDescribeWallet
- type AdminDescribeWalletParams
- type AdminDescribeWalletResult
- type AdminFirstPublicKey
- type AdminGenerateKey
- type AdminGenerateKeyParams
- type AdminGenerateKeyResult
- type AdminImportNetwork
- type AdminImportNetworkParams
- type AdminImportNetworkResult
- type AdminImportWallet
- type AdminImportWalletParams
- type AdminImportWalletResult
- type AdminImportedWallet
- type AdminIsolateKey
- type AdminIsolateKeyParams
- type AdminIsolateKeyResult
- type AdminLastBlockData
- type AdminListConnections
- type AdminListConnectionsResult
- type AdminListKeys
- type AdminListKeysParams
- type AdminListKeysResult
- type AdminListNetworkResult
- type AdminListNetworks
- type AdminListNetworksResult
- type AdminListPermissions
- type AdminListPermissionsParams
- type AdminListPermissionsResult
- type AdminListWallets
- type AdminListWalletsResult
- type AdminNamedPublicKey
- type AdminPurgePermissions
- type AdminPurgePermissionsParams
- type AdminRemoveNetwork
- type AdminRemoveNetworkParams
- type AdminRemoveWallet
- type AdminRemoveWalletParams
- type AdminRenameNetwork
- type AdminRenameNetworkParams
- type AdminRenameWallet
- type AdminRenameWalletParams
- type AdminRevokePermissions
- type AdminRevokePermissionsParams
- type AdminRotateKey
- type AdminRotateKeyParams
- type AdminRotateKeyResult
- type AdminSendRawTransaction
- type AdminSendRawTransactionNodeResult
- type AdminSendRawTransactionParams
- type AdminSendRawTransactionResult
- type AdminSendTransaction
- type AdminSendTransactionNodeResult
- type AdminSendTransactionParams
- type AdminSendTransactionResult
- type AdminSignMessage
- type AdminSignMessageParams
- type AdminSignMessageResult
- type AdminSignTransaction
- type AdminSignTransactionParams
- type AdminSignTransactionResult
- type AdminTaintKey
- type AdminTaintKeyParams
- type AdminUntaintKey
- type AdminUntaintKeyParams
- type AdminUpdateNetwork
- type AdminUpdateNetworkParams
- type AdminUpdatePassphrase
- type AdminUpdatePassphraseParams
- type AdminUpdatePermissions
- type AdminUpdatePermissionsParams
- type AdminUpdatePermissionsResult
- type AdminVerifyMessage
- type AdminVerifyMessageParams
- type AdminVerifyMessageResult
- type AllowedKey
- type ClientAPI
- func (a *ClientAPI) ConnectWallet(ctx context.Context, hostname string) (wallet.Wallet, *jsonrpc.ErrorDetails)
- func (a *ClientAPI) GetChainID(ctx context.Context) (jsonrpc.Result, *jsonrpc.ErrorDetails)
- func (a *ClientAPI) ListKeys(ctx context.Context, connectedWallet ConnectedWallet) (jsonrpc.Result, *jsonrpc.ErrorDetails)
- func (a *ClientAPI) SendTransaction(ctx context.Context, rawParams jsonrpc.Params, connectedWallet ConnectedWallet) (jsonrpc.Result, *jsonrpc.ErrorDetails)
- func (a *ClientAPI) SignTransaction(ctx context.Context, rawParams jsonrpc.Params, connectedWallet ConnectedWallet) (jsonrpc.Result, *jsonrpc.ErrorDetails)
- type ClientConnectWallet
- type ClientGetChainID
- type ClientGetChainIDResult
- type ClientListKeys
- type ClientListKeysResult
- type ClientNamedPublicKey
- type ClientParsedSendTransactionParams
- type ClientParsedSignTransactionParams
- type ClientSendTransaction
- type ClientSendTransactionParams
- type ClientSendTransactionResult
- type ClientSignTransaction
- type ClientSignTransactionParams
- type ClientSignTransactionResult
- type ConnectedWallet
- func (s *ConnectedWallet) AllowedKeys() []AllowedKey
- func (s *ConnectedWallet) CanListKeys() bool
- func (s *ConnectedWallet) CanUseKey(publicKeyToUse string) bool
- func (s *ConnectedWallet) Hostname() string
- func (s *ConnectedWallet) Name() string
- func (s *ConnectedWallet) RefreshFromWallet(freshWallet wallet.Wallet) error
- func (s *ConnectedWallet) RequireInteraction() bool
- type Connection
- type ConnectionsManager
- type ErrorType
- type Interactor
- type LogType
- type NetworkStore
- type NodeSelectorBuilder
- type ParsedAdminSendRawTransactionParams
- type ParsedAdminSendTransactionParams
- type ParsedAdminSignTransactionParams
- type Reader
- type Readers
- type SelectedWallet
- type SpamHandler
- type WalletStore
Constants ¶
const ( // ErrorCodeRequestHasBeenInterrupted refers to a request that has been // interrupted by the server or the third-party application. It could // originate from a timeout or an explicit cancellation. ErrorCodeRequestHasBeenInterrupted jsonrpc.ErrorCode = -32001 // ErrorCodeHostnameResolutionFailure refers to the inability for the server // to resolve the hostname from the request. ErrorCodeHostnameResolutionFailure jsonrpc.ErrorCode = -32002 // ErrorCodeAuthenticationFailure refers to a request that have authentication // problems. ErrorCodeAuthenticationFailure jsonrpc.ErrorCode = -32003 // ErrorCodeNodeCommunicationFailed refers to the inability of the program to // talk to the network nodes. ErrorCodeNodeCommunicationFailed jsonrpc.ErrorCode = 1000 // ErrorCodeNetworkRejectedTransaction refers to a transaction rejected by // the network nodes but for an unknown ABCI code. ErrorCodeNetworkRejectedTransaction jsonrpc.ErrorCode = 1001 // ErrorCodeNetworkRejectedInvalidTransaction refers to a validation failure raised // by the network nodes (error code 51). ErrorCodeNetworkRejectedInvalidTransaction jsonrpc.ErrorCode = 1051 // ErrorCodeNetworkRejectedMalformedTransaction refers to the inability to // decode a transaction from the network nodes (error code 60). ErrorCodeNetworkRejectedMalformedTransaction jsonrpc.ErrorCode = 1060 // ErrorCodeNetworkCouldNotProcessTransaction refers to the inability to // process a transaction from the network nodes (error code 70). ErrorCodeNetworkCouldNotProcessTransaction jsonrpc.ErrorCode = 1070 // ErrorCodeNetworkRejectedUnsupportedTransaction is raised when the network // nodes encounter an unsupported transaction (error code 80). ErrorCodeNetworkRejectedUnsupportedTransaction jsonrpc.ErrorCode = 1080 // ErrorCodeNetworkSpamProtectionActivated is raised when the network // nodes spin up the spam protection mechanism (error code 89). ErrorCodeNetworkSpamProtectionActivated jsonrpc.ErrorCode = 1089 // ErrorCodeRequestNotPermitted refers a request made by a third-party application // that is not permitted to do. This error is related to the permissions' // system. ErrorCodeRequestNotPermitted jsonrpc.ErrorCode = 2000 // ErrorCodeRequestHasBeenCancelledByApplication refers to an automated cancellation of a // request by the application core. This happens when some requirements are // missing to ensure correct handling of a request. ErrorCodeRequestHasBeenCancelledByApplication jsonrpc.ErrorCode = 2001 // ErrorCodeConnectionHasBeenClosed refers to an interruption of the service triggered // by the user. ErrorCodeConnectionHasBeenClosed jsonrpc.ErrorCode = 3000 // ErrorCodeRequestHasBeenRejected refers to an explicit rejection of a request by the // user. When received, the third-party application should consider the user // has withdrawn from the action, and thus, abort the action. ErrorCodeRequestHasBeenRejected jsonrpc.ErrorCode = 3001 // ErrorCodeRequestHasBeenCancelledByUser refers to a cancellation of a request by the // user. It's conceptually different from a rejection. Contrary to a rejection, // when a cancellation is received, the third-party application should temporarily // back off, maintain its state, and wait for the user to be ready to continue. ErrorCodeRequestHasBeenCancelledByUser jsonrpc.ErrorCode = 3002 )
const PermissionsSuccessfullyUpdated = "The permissions have been successfully updated."
const TransactionSuccessfullySigned = "The transaction has been successfully signed."
const WalletConnectionSuccessfullyEstablished = "The connection to the wallet has been successfully established."
Variables ¶
var ( ErrApplicationCancelledTheRequest = errors.New("the application cancelled the request") ErrBlockHashIsRequired = errors.New("the block hash is required") ErrBlockHeightIsRequired = errors.New("the block height is required") ErrBlockHeightTooHistoric = errors.New("the block height is too historic") ErrCannotRotateKeysOnIsolatedWallet = errors.New("cannot rotate keys on an isolated wallet") ErrChainIDIsRequired = errors.New("the chain ID is required") ErrCouldNotConnectToWallet = errors.New("could not connect to the wallet") ErrCouldNotGetChainIDFromNode = errors.New("could not get the chain ID from the node") ErrCouldNotGetLastBlockInformation = errors.New("could not get information about the last block on the network") ErrCouldNotListKeys = errors.New("could not list the keys") ErrCouldNotSendTransaction = errors.New("could not send transaction") ErrCouldNotSignTransaction = errors.New("could not sign transaction") ErrCurrentPublicKeyDoesNotExist = errors.New("the current public key does not exist") ErrCurrentPublicKeyIsRequired = errors.New("the next public key is required") ErrEnactmentBlockHeightIsRequired = errors.New("the enactment block height is required") ErrEnactmentBlockHeightMustBeGreaterThanSubmissionOne = errors.New("the enactment block height must be greater than the submission one") ErrEncodedMessageIsNotValidBase64String = errors.New("the encoded message is not a valid base-64 string") ErrEncodedSignatureIsNotValidBase64String = errors.New("the encoded signature is not a valid base-64 string") ErrEncodedTransactionIsNotValidBase64String = errors.New("the encoded transaction is not a valid base-64 string") ErrEncodedTransactionIsRequired = errors.New("the encoded transaction is required") ErrHostnameIsRequired = errors.New("the hostname is required") ErrIsolatedWalletPassphraseIsRequired = errors.New("the isolated wallet passphrase is required") ErrLastBlockDataOrNetworkIsRequired = errors.New("a network or the last block data is required") ErrMessageIsRequired = errors.New("the message is required") ErrMultipleNetworkSources = errors.New("network sources are mutually exclusive") ErrNetworkAlreadyExists = errors.New("a network with the same name already exists") ErrNetworkConfigurationDoesNotHaveGRPCNodes = errors.New("the network does not have gRPC hosts configured") ErrNetworkDoesNotExist = errors.New("the network does not exist") ErrNetworkIsRequired = errors.New("the network is required") ErrNetworkNameIsRequired = errors.New("the network name is required") ErrNetworkOrNodeAddressIsRequired = errors.New("a network or a node address is required") ErrNetworkSourceIsRequired = errors.New("a network source is required") ErrNewNameIsRequired = errors.New("the new name is required") ErrNewPassphraseIsRequired = errors.New("the new passphrase is required") ErrNextAndCurrentPublicKeysCannotBeTheSame = errors.New("the next and current public keys cannot be the same") ErrNextPublicKeyDoesNotExist = errors.New("the next public key does not exist") ErrNextPublicKeyIsRequired = errors.New("the next public key is required") ErrNextPublicKeyIsTainted = errors.New("the next public key is tainted") ErrNoHealthyNodeAvailable = errors.New("no healthy node available") ErrNoWalletToConnectTo = errors.New("there is no wallet to connect to, you should, first, create or import a wallet") ErrParamsDoNotMatch = errors.New("the params do not match expected ones") ErrParamsRequired = errors.New("the params are required") ErrPassphraseIsRequired = errors.New("the passphrase is required") ErrProofOfWorkDifficultyRequired = errors.New("the proof-of-work difficulty is required") ErrProofOfWorkHashFunctionRequired = errors.New("the proof-of-work hash function is required") ErrPublicKeyDoesNotExist = errors.New("the public key does not exist") ErrPublicKeyIsNotAllowedToBeUsed = errors.New("the public key is not allowed to be used") ErrPublicKeyIsRequired = errors.New("the public key is required") ErrRawTransactionIsNotValidZetaTransaction = errors.New("the raw transaction is not a valid Zeta transaction") ErrRecoveryPhraseIsRequired = errors.New("the recovery phrase is required") ErrRequestInterrupted = errors.New("the request has been interrupted") ErrSendingModeCannotBeTypeUnspecified = errors.New(`the sending mode can't be "TYPE_UNSPECIFIED"`) ErrSendingModeIsRequired = errors.New("the sending mode is required") ErrSignatureIsRequired = errors.New("the signature is required") ErrSpecifyingNetworkAndLastBlockDataIsNotSupported = errors.New("specifying a network and the last block data is not supported") ErrSpecifyingNetworkAndNodeAddressIsNotSupported = errors.New("specifying a network and a node address is not supported") ErrSubmissionBlockHeightIsRequired = errors.New("the submission block height is required") ErrTransactionIsNotValidJSON = errors.New("the transaction is not valid JSON") ErrTransactionIsRequired = errors.New("the transaction is required") ErrTransactionsPerBlockLimitReached = errors.New("the transaction per block limit has been reached") ErrUserCancelledTheRequest = errors.New("the user cancelled the request") ErrUserCloseTheConnection = errors.New("the user closed the connection") ErrUserRejectedAccessToKeys = errors.New("the user rejected the access to the keys") ErrUserRejectedSendingOfTransaction = errors.New("the user rejected the sending of the transaction") ErrUserRejectedSigningOfTransaction = errors.New("the user rejected the signing of the transaction") ErrUserRejectedWalletConnection = errors.New("the user rejected the wallet connection") ErrWalletAlreadyExists = errors.New("a wallet with the same name already exists") ErrWalletDoesNotExist = errors.New("the wallet does not exist") ErrWalletIsLocked = errors.New("the wallet is locked") ErrWalletIsRequired = errors.New("the wallet is required") ErrWalletKeyDerivationVersionIsRequired = errors.New("the wallet key derivation version is required") ErrWrongPassphrase = errors.New("wrong passphrase") )
var ErrInvalidNetworkSource = errors.New("invalid network source")
Functions ¶
func AdminAPI ¶
func AdminAPI( log *zap.Logger, walletStore WalletStore, netStore NetworkStore, nodeSelectorBuilder NodeSelectorBuilder, connectionsManager ConnectionsManager, ) (*jsonrpc.Dispatcher, error)
AdminAPI builds the JSON-RPC API of the wallet with all the methods available. This API exposes highly-sensitive methods, and, as a result, it should be only exposed to highly-trustable applications.
Types ¶
type AdminAnnotateKey ¶
type AdminAnnotateKey struct {
// contains filtered or unexported fields
}
func NewAdminAnnotateKey ¶
func NewAdminAnnotateKey( walletStore WalletStore, ) *AdminAnnotateKey
func (*AdminAnnotateKey) Handle ¶
func (h *AdminAnnotateKey) Handle(ctx context.Context, rawParams jsonrpc.Params) (jsonrpc.Result, *jsonrpc.ErrorDetails)
Handle attaches metadata to the specified public key. It doesn't update in place. It overwrites. All existing metadata have to be specified to not lose them.
type AdminAnnotateKeyParams ¶
type AdminAnnotateKeyResult ¶
type AdminCloseConnection ¶
type AdminCloseConnection struct {
// contains filtered or unexported fields
}
func NewAdminCloseConnection ¶
func NewAdminCloseConnection(connectionsManager ConnectionsManager) *AdminCloseConnection
func (*AdminCloseConnection) Handle ¶
func (h *AdminCloseConnection) Handle(_ context.Context, rawParams jsonrpc.Params) (jsonrpc.Result, *jsonrpc.ErrorDetails)
Handle closes the connection between a third-party application and a wallet opened in the service that run against the specified network. It does not fail if the service or the connection are already closed.
type AdminCloseConnectionsToHostname ¶
type AdminCloseConnectionsToHostname struct {
// contains filtered or unexported fields
}
func NewAdminCloseConnectionsToHostname ¶
func NewAdminCloseConnectionsToHostname(connectionsManager ConnectionsManager) *AdminCloseConnectionsToHostname
func (*AdminCloseConnectionsToHostname) Handle ¶
func (h *AdminCloseConnectionsToHostname) Handle(_ context.Context, rawParams jsonrpc.Params) (jsonrpc.Result, *jsonrpc.ErrorDetails)
Handle closes all the connections from the specified hostname to any wallet opened in the service that run against the specified network. It does not fail if the service or the connections are already closed.
type AdminCloseConnectionsToHostnameParams ¶
type AdminCloseConnectionsToHostnameParams struct {
Hostname string `json:"hostname"`
}
type AdminCloseConnectionsToWallet ¶
type AdminCloseConnectionsToWallet struct {
// contains filtered or unexported fields
}
func NewAdminCloseConnectionsToWallet ¶
func NewAdminCloseConnectionsToWallet(connectionsManager ConnectionsManager) *AdminCloseConnectionsToWallet
func (*AdminCloseConnectionsToWallet) Handle ¶
func (h *AdminCloseConnectionsToWallet) Handle(_ context.Context, rawParams jsonrpc.Params) (jsonrpc.Result, *jsonrpc.ErrorDetails)
Handle closes all the connections from any hostname to the specified wallet opened in the service that run against the specified network. It does not fail if the service or the connections are already closed.
type AdminCloseConnectionsToWalletParams ¶
type AdminCloseConnectionsToWalletParams struct {
Wallet string `json:"wallet"`
}
type AdminCreateWallet ¶
type AdminCreateWallet struct {
// contains filtered or unexported fields
}
func NewAdminCreateWallet ¶
func NewAdminCreateWallet( walletStore WalletStore, ) *AdminCreateWallet
type AdminCreateWalletParams ¶
type AdminCreateWalletResult ¶
type AdminCreateWalletResult struct { Wallet AdminCreatedWallet `json:"wallet"` Key AdminFirstPublicKey `json:"key"` }
type AdminCreatedWallet ¶
type AdminDescribeKey ¶
type AdminDescribeKey struct {
// contains filtered or unexported fields
}
func NewAdminDescribeKey ¶
func NewAdminDescribeKey( walletStore WalletStore, ) *AdminDescribeKey
type AdminDescribeKeyParams ¶
type AdminDescribeKeyResult ¶
type AdminDescribeNetwork ¶
type AdminDescribeNetwork struct {
// contains filtered or unexported fields
}
func NewAdminDescribeNetwork ¶
func NewAdminDescribeNetwork( networkStore NetworkStore, ) *AdminDescribeNetwork
type AdminDescribeNetworkParams ¶
type AdminDescribeNetworkParams struct {
Name string `json:"name"`
}
type AdminDescribeNetworkResult ¶
type AdminDescribeNetworkResult struct { Name string `json:"name"` Metadata []network.Metadata `json:"metadata"` API struct { GRPCConfig struct { Hosts []string `json:"hosts"` Retries uint64 `json:"retries"` } `json:"grpcConfig"` RESTConfig struct { Hosts []string `json:"hosts"` } `json:"restConfig"` GraphQLConfig struct { Hosts []string `json:"hosts"` } `json:"graphQLConfig"` } `json:"api"` Apps struct { Explorer string `json:"explorer"` Console string `json:"console"` TokenDApp string `json:"tokenDApp"` } `json:"apps"` }
type AdminDescribePermissions ¶
type AdminDescribePermissions struct {
// contains filtered or unexported fields
}
func NewAdminDescribePermissions ¶
func NewAdminDescribePermissions( walletStore WalletStore, ) *AdminDescribePermissions
type AdminDescribePermissionsResult ¶
type AdminDescribePermissionsResult struct {
Permissions wallet.Permissions `json:"permissions"`
}
type AdminDescribeWallet ¶
type AdminDescribeWallet struct {
// contains filtered or unexported fields
}
func NewAdminDescribeWallet ¶
func NewAdminDescribeWallet( walletStore WalletStore, ) *AdminDescribeWallet
type AdminFirstPublicKey ¶
type AdminGenerateKey ¶
type AdminGenerateKey struct {
// contains filtered or unexported fields
}
func NewAdminGenerateKey ¶
func NewAdminGenerateKey( walletStore WalletStore, ) *AdminGenerateKey
type AdminGenerateKeyParams ¶
type AdminGenerateKeyResult ¶
type AdminImportNetwork ¶
type AdminImportNetwork struct {
// contains filtered or unexported fields
}
func NewAdminImportNetwork ¶
func NewAdminImportNetwork( networkStore NetworkStore, ) *AdminImportNetwork
type AdminImportWallet ¶
type AdminImportWallet struct {
// contains filtered or unexported fields
}
func NewAdminImportWallet ¶
func NewAdminImportWallet( walletStore WalletStore, ) *AdminImportWallet
type AdminImportWalletParams ¶
type AdminImportWalletResult ¶
type AdminImportWalletResult struct { Wallet AdminImportedWallet `json:"wallet"` Key AdminFirstPublicKey `json:"key"` }
type AdminImportedWallet ¶
type AdminIsolateKey ¶
type AdminIsolateKey struct {
// contains filtered or unexported fields
}
func NewAdminIsolateKey ¶
func NewAdminIsolateKey( walletStore WalletStore, ) *AdminIsolateKey
type AdminIsolateKeyParams ¶
type AdminIsolateKeyResult ¶
type AdminLastBlockData ¶
type AdminListConnections ¶
type AdminListConnections struct {
// contains filtered or unexported fields
}
func NewAdminListConnections ¶
func NewAdminListConnections(connectionsManager ConnectionsManager) *AdminListConnections
type AdminListConnectionsResult ¶
type AdminListConnectionsResult struct {
ActiveConnections []Connection `json:"activeConnections"`
}
type AdminListKeys ¶
type AdminListKeys struct {
// contains filtered or unexported fields
}
func NewAdminListKeys ¶
func NewAdminListKeys( walletStore WalletStore, ) *AdminListKeys
type AdminListKeysParams ¶
type AdminListKeysResult ¶
type AdminListKeysResult struct {
PublicKeys []AdminNamedPublicKey `json:"keys"`
}
type AdminListNetworkResult ¶
type AdminListNetworks ¶
type AdminListNetworks struct {
// contains filtered or unexported fields
}
func NewAdminListNetworks ¶
func NewAdminListNetworks( networkStore NetworkStore, ) *AdminListNetworks
type AdminListNetworksResult ¶
type AdminListNetworksResult struct {
Networks []AdminListNetworkResult `json:"networks"`
}
type AdminListPermissions ¶
type AdminListPermissions struct {
// contains filtered or unexported fields
}
func NewAdminListPermissions ¶
func NewAdminListPermissions( walletStore WalletStore, ) *AdminListPermissions
type AdminListPermissionsResult ¶
type AdminListPermissionsResult struct {
Permissions map[string]wallet.PermissionsSummary `json:"permissions"`
}
type AdminListWallets ¶
type AdminListWallets struct {
// contains filtered or unexported fields
}
func NewAdminListWallets ¶
func NewAdminListWallets( walletStore WalletStore, ) *AdminListWallets
type AdminListWalletsResult ¶
type AdminListWalletsResult struct {
Wallets []string `json:"wallets"`
}
type AdminNamedPublicKey ¶
type AdminPurgePermissions ¶
type AdminPurgePermissions struct {
// contains filtered or unexported fields
}
func NewAdminPurgePermissions ¶
func NewAdminPurgePermissions( walletStore WalletStore, ) *AdminPurgePermissions
type AdminRemoveNetwork ¶
type AdminRemoveNetwork struct {
// contains filtered or unexported fields
}
func NewAdminRemoveNetwork ¶
func NewAdminRemoveNetwork( networkStore NetworkStore, ) *AdminRemoveNetwork
type AdminRemoveNetworkParams ¶
type AdminRemoveNetworkParams struct {
Name string `json:"name"`
}
type AdminRemoveWallet ¶
type AdminRemoveWallet struct {
// contains filtered or unexported fields
}
func NewAdminRemoveWallet ¶
func NewAdminRemoveWallet( walletStore WalletStore, ) *AdminRemoveWallet
type AdminRemoveWalletParams ¶
type AdminRemoveWalletParams struct {
Wallet string `json:"wallet"`
}
type AdminRenameNetwork ¶
type AdminRenameNetwork struct {
// contains filtered or unexported fields
}
func NewAdminRenameNetwork ¶
func NewAdminRenameNetwork( networkStore NetworkStore, ) *AdminRenameNetwork
type AdminRenameWallet ¶
type AdminRenameWallet struct {
// contains filtered or unexported fields
}
func NewAdminRenameWallet ¶
func NewAdminRenameWallet( walletStore WalletStore, ) *AdminRenameWallet
type AdminRenameWalletParams ¶
type AdminRevokePermissions ¶
type AdminRevokePermissions struct {
// contains filtered or unexported fields
}
func NewAdminRevokePermissions ¶
func NewAdminRevokePermissions( walletStore WalletStore, ) *AdminRevokePermissions
type AdminRotateKey ¶
type AdminRotateKey struct {
// contains filtered or unexported fields
}
func NewAdminRotateKey ¶
func NewAdminRotateKey( walletStore WalletStore, ) *AdminRotateKey
type AdminRotateKeyParams ¶
type AdminRotateKeyParams struct { Wallet string `json:"wallet"` Passphrase string `json:"passphrase"` FromPublicKey string `json:"fromPublicKey"` ToPublicKey string `json:"toPublicKey"` ChainID string `json:"chainID"` SubmissionBlockHeight uint64 `json:"submissionBlockHeight"` EnactmentBlockHeight uint64 `json:"enactmentBlockHeight"` }
type AdminRotateKeyResult ¶
type AdminSendRawTransaction ¶
type AdminSendRawTransaction struct {
// contains filtered or unexported fields
}
func NewAdminSendRawTransaction ¶
func NewAdminSendRawTransaction(networkStore NetworkStore, nodeSelectorBuilder NodeSelectorBuilder) *AdminSendRawTransaction
type AdminSendRawTransactionNodeResult ¶
type AdminSendRawTransactionNodeResult struct {
Host string `json:"host"`
}
type AdminSendRawTransactionResult ¶
type AdminSendRawTransactionResult struct { ReceivedAt time.Time `json:"receivedAt"` SentAt time.Time `json:"sentAt"` TxHash string `json:"transactionHash"` Tx *commandspb.Transaction `json:"transaction"` Node AdminSendRawTransactionNodeResult `json:"node"` }
type AdminSendTransaction ¶
type AdminSendTransaction struct {
// contains filtered or unexported fields
}
func NewAdminSendTransaction ¶
func NewAdminSendTransaction(walletStore WalletStore, networkStore NetworkStore, nodeSelectorBuilder NodeSelectorBuilder) *AdminSendTransaction
type AdminSendTransactionNodeResult ¶
type AdminSendTransactionNodeResult struct {
Host string `json:"host"`
}
type AdminSendTransactionParams ¶
type AdminSendTransactionParams struct { Wallet string `json:"wallet"` Passphrase string `json:"passphrase"` PublicKey string `json:"publicKey"` Network string `json:"network"` NodeAddress string `json:"nodeAddress"` Retries uint64 `json:"retries"` SendingMode string `json:"sendingMode"` Transaction interface{} `json:"transaction"` }
type AdminSendTransactionResult ¶
type AdminSendTransactionResult struct { ReceivedAt time.Time `json:"receivedAt"` SentAt time.Time `json:"sentAt"` TxHash string `json:"transactionHash"` Tx *commandspb.Transaction `json:"transaction"` Node AdminSendTransactionNodeResult `json:"node"` }
type AdminSignMessage ¶
type AdminSignMessage struct {
// contains filtered or unexported fields
}
func NewAdminSignMessage ¶
func NewAdminSignMessage(walletStore WalletStore) *AdminSignMessage
type AdminSignMessageParams ¶
type AdminSignMessageResult ¶
type AdminSignMessageResult struct {
Base64Signature string `json:"encodedSignature"`
}
type AdminSignTransaction ¶
type AdminSignTransaction struct {
// contains filtered or unexported fields
}
func NewAdminSignTransaction ¶
func NewAdminSignTransaction(walletStore WalletStore, networkStore NetworkStore, nodeSelectorBuilder NodeSelectorBuilder) *AdminSignTransaction
type AdminSignTransactionParams ¶
type AdminSignTransactionParams struct { Wallet string `json:"wallet"` Passphrase string `json:"passphrase"` PublicKey string `json:"publicKey"` Transaction interface{} `json:"transaction"` Network string `json:"network"` LastBlockData *AdminLastBlockData `json:"lastBlockData"` }
type AdminSignTransactionResult ¶
type AdminSignTransactionResult struct { Tx *commandspb.Transaction `json:"transaction"` EncodedTransaction string }
type AdminTaintKey ¶
type AdminTaintKey struct {
// contains filtered or unexported fields
}
func NewAdminTaintKey ¶
func NewAdminTaintKey( walletStore WalletStore, ) *AdminTaintKey
type AdminTaintKeyParams ¶
type AdminUntaintKey ¶
type AdminUntaintKey struct {
// contains filtered or unexported fields
}
func NewAdminUntaintKey ¶
func NewAdminUntaintKey( walletStore WalletStore, ) *AdminUntaintKey
type AdminUntaintKeyParams ¶
type AdminUpdateNetwork ¶
type AdminUpdateNetwork struct {
// contains filtered or unexported fields
}
func NewAdminUpdateNetwork ¶
func NewAdminUpdateNetwork( networkStore NetworkStore, ) *AdminUpdateNetwork
type AdminUpdatePassphrase ¶
type AdminUpdatePassphrase struct {
// contains filtered or unexported fields
}
func NewAdminUpdatePassphrase ¶
func NewAdminUpdatePassphrase( walletStore WalletStore, ) *AdminUpdatePassphrase
type AdminUpdatePermissions ¶
type AdminUpdatePermissions struct {
// contains filtered or unexported fields
}
func NewAdminUpdatePermissions ¶
func NewAdminUpdatePermissions( walletStore WalletStore, ) *AdminUpdatePermissions
type AdminUpdatePermissionsParams ¶
type AdminUpdatePermissionsParams struct { Wallet string `json:"wallet"` Passphrase string `json:"passphrase"` Hostname string `json:"hostname"` Permissions wallet.Permissions `json:"permissions"` }
type AdminUpdatePermissionsResult ¶
type AdminUpdatePermissionsResult struct {
Permissions wallet.Permissions `json:"permissions"`
}
type AdminVerifyMessage ¶
type AdminVerifyMessage struct{}
func NewAdminVerifyMessage ¶
func NewAdminVerifyMessage() *AdminVerifyMessage
type AdminVerifyMessageResult ¶
type AdminVerifyMessageResult struct {
IsValid bool `json:"valid"`
}
type AllowedKey ¶
type AllowedKey struct {
// contains filtered or unexported fields
}
func (AllowedKey) Name ¶
func (r AllowedKey) Name() string
func (AllowedKey) PublicKey ¶
func (r AllowedKey) PublicKey() string
type ClientAPI ¶
type ClientAPI struct {
// contains filtered or unexported fields
}
func BuildClientAPI ¶
func BuildClientAPI(walletStore WalletStore, interactor Interactor, nodeSelector node.Selector, spam SpamHandler) (*ClientAPI, error)
func (*ClientAPI) ConnectWallet ¶
func (*ClientAPI) GetChainID ¶
func (*ClientAPI) ListKeys ¶
func (a *ClientAPI) ListKeys(ctx context.Context, connectedWallet ConnectedWallet) (jsonrpc.Result, *jsonrpc.ErrorDetails)
func (*ClientAPI) SendTransaction ¶
func (a *ClientAPI) SendTransaction(ctx context.Context, rawParams jsonrpc.Params, connectedWallet ConnectedWallet) (jsonrpc.Result, *jsonrpc.ErrorDetails)
func (*ClientAPI) SignTransaction ¶
func (a *ClientAPI) SignTransaction(ctx context.Context, rawParams jsonrpc.Params, connectedWallet ConnectedWallet) (jsonrpc.Result, *jsonrpc.ErrorDetails)
type ClientConnectWallet ¶
type ClientConnectWallet struct {
// contains filtered or unexported fields
}
func NewConnectWallet ¶
func NewConnectWallet(walletStore WalletStore, interactor Interactor) *ClientConnectWallet
func (*ClientConnectWallet) Handle ¶
func (h *ClientConnectWallet) Handle(ctx context.Context, hostname string) (wallet.Wallet, *jsonrpc.ErrorDetails)
Handle initiates the wallet connection between the API and a third-party application.
It triggers a selection of the wallet the client wants to use for this connection. The wallet is then loaded in memory. All changes done to that wallet will start in-memory, and then, be saved in the wallet file. Any changes done to the wallet outside the JSON-RPC session (via the command-line for example) will be overridden. For the effects to be taken into account, the wallet has to be disconnected first, and then re-connected.
All sessions have to be initialized by using this handler. Otherwise, a call to any other handlers will be rejected.
type ClientGetChainID ¶
type ClientGetChainID struct {
// contains filtered or unexported fields
}
func NewGetChainID ¶
func NewGetChainID(nodeSelector walletnode.Selector) *ClientGetChainID
func (*ClientGetChainID) Handle ¶
func (h *ClientGetChainID) Handle(ctx context.Context) (jsonrpc.Result, *jsonrpc.ErrorDetails)
type ClientGetChainIDResult ¶
type ClientGetChainIDResult struct {
ChainID string `json:"chainID"`
}
type ClientListKeys ¶
type ClientListKeys struct {
// contains filtered or unexported fields
}
func NewListKeys ¶
func NewListKeys(walletStore WalletStore, interactor Interactor) *ClientListKeys
func (*ClientListKeys) Handle ¶
func (h *ClientListKeys) Handle(ctx context.Context, connectedWallet ConnectedWallet) (jsonrpc.Result, *jsonrpc.ErrorDetails)
Handle returns the public keys the third-party application has access to.
This requires a "read" access on "public_keys".
type ClientListKeysResult ¶
type ClientListKeysResult struct {
Keys []ClientNamedPublicKey `json:"keys"`
}
type ClientNamedPublicKey ¶
type ClientParsedSendTransactionParams ¶
type ClientParsedSendTransactionParams struct { PublicKey string SendingMode apipb.SubmitTransactionRequest_Type RawTransaction string }
type ClientSendTransaction ¶
type ClientSendTransaction struct {
// contains filtered or unexported fields
}
func NewClientSendTransaction ¶
func NewClientSendTransaction(walletStore WalletStore, interactor Interactor, nodeSelector node.Selector, pow SpamHandler) *ClientSendTransaction
func (*ClientSendTransaction) Handle ¶
func (h *ClientSendTransaction) Handle(ctx context.Context, rawParams jsonrpc.Params, connectedWallet ConnectedWallet) (jsonrpc.Result, *jsonrpc.ErrorDetails)
type ClientSendTransactionResult ¶
type ClientSendTransactionResult struct { ReceivedAt time.Time `json:"receivedAt"` SentAt time.Time `json:"sentAt"` TxHash string `json:"transactionHash"` Tx *commandspb.Transaction `json:"transaction"` }
type ClientSignTransaction ¶
type ClientSignTransaction struct {
// contains filtered or unexported fields
}
func NewClientSignTransaction ¶
func NewClientSignTransaction(walletStore WalletStore, interactor Interactor, nodeSelector node.Selector, proofOfWork SpamHandler) *ClientSignTransaction
func (*ClientSignTransaction) Handle ¶
func (h *ClientSignTransaction) Handle(ctx context.Context, rawParams jsonrpc.Params, connectedWallet ConnectedWallet) (jsonrpc.Result, *jsonrpc.ErrorDetails)
type ClientSignTransactionParams ¶
type ClientSignTransactionParams struct { PublicKey string `json:"publicKey"` Transaction interface{} `json:"transaction"` }
type ClientSignTransactionResult ¶
type ClientSignTransactionResult struct {
Tx *commandspb.Transaction `json:"transaction"`
}
type ConnectedWallet ¶
type ConnectedWallet struct {
// contains filtered or unexported fields
}
ConnectedWallet is the projection of the wallet through the permissions and authentication system. On a regular wallet, there are no restrictions on what we can call, which doesn't fit the model of having allowed access, so we wrap the "regular wallet" behind the "connected wallet".
func NewConnectedWallet ¶
func NewConnectedWallet(hostname string, w wallet.Wallet) (ConnectedWallet, error)
func NewLongLivingConnectedWallet ¶
func NewLongLivingConnectedWallet(w wallet.Wallet) ConnectedWallet
func (*ConnectedWallet) AllowedKeys ¶
func (s *ConnectedWallet) AllowedKeys() []AllowedKey
AllowedKeys returns the keys a connection has access to. If a third-party application tries to use a keys that does not belong to this set, then the request should fail.
func (*ConnectedWallet) CanListKeys ¶
func (s *ConnectedWallet) CanListKeys() bool
func (*ConnectedWallet) CanUseKey ¶
func (s *ConnectedWallet) CanUseKey(publicKeyToUse string) bool
CanUseKey determines if the permissions allow the specified key to be used.
func (*ConnectedWallet) Hostname ¶
func (s *ConnectedWallet) Hostname() string
Hostname returns the hostname for which the connection has been set. For long-living connections, the hostname is empty as there is no restrictions for that type of connection.
func (*ConnectedWallet) Name ¶
func (s *ConnectedWallet) Name() string
func (*ConnectedWallet) RefreshFromWallet ¶
func (s *ConnectedWallet) RefreshFromWallet(freshWallet wallet.Wallet) error
func (*ConnectedWallet) RequireInteraction ¶
func (s *ConnectedWallet) RequireInteraction() bool
RequireInteraction tells if an interaction with the user is needed for supervision is required or not. It is related to the type of API token that is used for this connection. If it's a long-living token, then no interaction is required.
type Connection ¶
type ConnectionsManager ¶
type ConnectionsManager interface { EndSessionConnection(hostname, wallet string) ListSessionConnections() []Connection }
type ErrorType ¶
type ErrorType string
ErrorType defines the type of error that is sent to the user, for fine grain error management and reporting.
var ( // InternalError defines an unexpected technical error upon which the user // can't act. // The wallet front-end should report it to the user and automatically // abort the processing of the ongoing request. // It can be raised if a file is not accessible or corrupt, for example. InternalError ErrorType = "Internal error" // ServerError defines a programmatic error threw by the server, such as // a request cancellation. The server error targets error that happens in // the communication layer. It's different form application error. // It's a type of error that should be expected and handled. ServerError ErrorType = "Server error" // NetworkError defines an error that comes from the network and its nodes. NetworkError ErrorType = "Network error" // ApplicationError defines a programmatic error threw by the application // core, also called "business logic". ApplicationError ErrorType = "Application error" // UserError defines an error that originated from the user and that // requires its intervention to correct it. // It can be raised if a passphrase is invalid, for example. UserError ErrorType = "User error" )
type Interactor ¶
type Interactor interface { // NotifyInteractionSessionBegan notifies the beginning of an interaction // session. // A session is scoped to a request. NotifyInteractionSessionBegan(ctx context.Context, traceID string) error // NotifyInteractionSessionEnded notifies the end of an interaction // session. // A session is scoped to a request. NotifyInteractionSessionEnded(ctx context.Context, traceID string) // NotifySuccessfulTransaction is used to report a successful transaction. NotifySuccessfulTransaction(ctx context.Context, traceID, txHash, deserializedInputData, tx string, sentAt time.Time, host string) // NotifyFailedTransaction is used to report a failed transaction. NotifyFailedTransaction(ctx context.Context, traceID, deserializedInputData, tx string, err error, sentAt time.Time, host string) // NotifySuccessfulRequest is used to notify the user the request is // successful. NotifySuccessfulRequest(ctx context.Context, traceID string, message string) // NotifyError is used to report errors to the user. NotifyError(ctx context.Context, traceID string, t ErrorType, err error) // Log is used to report information of any kind to the user. This is used // to log internal activities and provide feedback to the wallet front-ends. // It's purely for informational purpose. // Receiving logs should be expected at any point during an interaction // session. Log(ctx context.Context, traceID string, t LogType, msg string) // RequestWalletConnectionReview is used to trigger a user review of // the wallet connection requested by the specified hostname. // It returns the type of connection approval chosen by the user. RequestWalletConnectionReview(ctx context.Context, traceID, hostname string) (string, error) // RequestWalletSelection is used to trigger the selection of the wallet the // user wants to use for the specified hostname. RequestWalletSelection(ctx context.Context, traceID, hostname string, availableWallets []string) (SelectedWallet, error) // RequestPassphrase is used to request to the user the passphrase of a wallet. // It's primarily used by requests that update the wallet. RequestPassphrase(ctx context.Context, traceID, wallet string) (string, error) // RequestPermissionsReview is used to trigger a user review of the permissions // requested by the specified hostname. // It returns true if the user approved the requested permissions, false // otherwise. RequestPermissionsReview(ctx context.Context, traceID, hostname, wallet string, perms map[string]string) (bool, error) // RequestTransactionReviewForSending is used to trigger a user review of the // transaction a third-party application wants to send. // It returns true if the user approved the sending of the transaction, // false otherwise. RequestTransactionReviewForSending(ctx context.Context, traceID, hostname, wallet, pubKey, transaction string, receivedAt time.Time) (bool, error) // RequestTransactionReviewForSigning is used to trigger a user review of the // transaction a third-party application wants to sign. The wallet doesn't // send the transaction. // It returns true if the user approved the signing of the transaction, // false otherwise. RequestTransactionReviewForSigning(ctx context.Context, traceID, hostname, wallet, pubKey, transaction string, receivedAt time.Time) (bool, error) }
Interactor is the component in charge of delegating the JSON-RPC API requests, notifications and logs to the wallet front-end. Convention:
- Notify* calls do not expect a response from the user.
- Request* calls are expecting a response from the user.
- Log function is just information logging and does not expect a response.
type NetworkStore ¶
type NetworkStore interface { NetworkExists(string) (bool, error) GetNetwork(string) (*network.Network, error) SaveNetwork(*network.Network) error ListNetworks() ([]string, error) GetNetworkPath(string) string DeleteNetwork(string) error RenameNetwork(currentName, newName string) error }
NetworkStore is the component used to retrieve and update the networks from the computer.
type NodeSelectorBuilder ¶
type Readers ¶
func NewReaders ¶
func NewReaders() Readers
type SelectedWallet ¶
SelectedWallet holds the result of the wallet selection from the user.
type SpamHandler ¶
type SpamHandler interface { GenerateProofOfWork(pubKey string, blockData *nodetypes.SpamStatistics) (*commandspb.ProofOfWork, error) CheckSubmission(req *walletpb.SubmitTransactionRequest, latest *nodetypes.SpamStatistics) error }
type WalletStore ¶
type WalletStore interface { UnlockWallet(ctx context.Context, name, passphrase string) error LockWallet(ctx context.Context, name string) error WalletExists(ctx context.Context, name string) (bool, error) GetWallet(ctx context.Context, name string) (wallet.Wallet, error) ListWallets(ctx context.Context) ([]string, error) CreateWallet(ctx context.Context, w wallet.Wallet, passphrase string) error UpdateWallet(ctx context.Context, w wallet.Wallet) error UpdatePassphrase(ctx context.Context, name, newPassphrase string) error DeleteWallet(ctx context.Context, name string) error RenameWallet(ctx context.Context, currentName, newName string) error GetWalletPath(name string) string }
WalletStore is the component used to retrieve and update wallets from the computer.
Source Files ¶
- admin_annotate_key.go
- admin_close_connection.go
- admin_close_connections_to_hostname.go
- admin_close_connections_to_wallet.go
- admin_create_wallet.go
- admin_describe_key.go
- admin_describe_network.go
- admin_describe_permissions.go
- admin_describe_wallet.go
- admin_generate_key.go
- admin_import_network.go
- admin_import_wallet.go
- admin_isolate_key.go
- admin_list_connections.go
- admin_list_keys.go
- admin_list_networks.go
- admin_list_permissions.go
- admin_list_wallets.go
- admin_purge_permissions.go
- admin_remove_network.go
- admin_remove_wallet.go
- admin_rename_network.go
- admin_rename_wallet.go
- admin_revoke_permissions.go
- admin_rotate_key.go
- admin_send_raw_transaction.go
- admin_send_transaction.go
- admin_sign_message.go
- admin_sign_transaction.go
- admin_taint_key.go
- admin_untaint_key.go
- admin_update_network.go
- admin_update_passphrase.go
- admin_update_permissions.go
- admin_verify_message.go
- api.go
- client_connect_wallet.go
- client_get_chain_id.go
- client_list_keys.go
- client_send_transaction.go
- client_sign_transaction.go
- connected_wallet.go
- errors.go
- types.go