Documentation ¶
Index ¶
- type APIBackendHelper
- type ChainAccessor
- type Client
- type DataHandler
- type DefaultServicesFactory
- type EthclientManagementContractFacade
- func (facade EthclientManagementContractFacade) Caller(managementAddress common.Address) (*extensionContracts.ContractExtenderCaller, error)
- func (facade EthclientManagementContractFacade) Deploy(args *bind.TransactOpts, toExtend common.Address, ...) (*types.Transaction, error)
- func (facade EthclientManagementContractFacade) GetAllVoters(addressToVoteOn common.Address) ([]common.Address, error)
- func (facade EthclientManagementContractFacade) Transactor(managementAddress common.Address) (*extensionContracts.ContractExtenderTransactor, error)
- type ExtensionContract
- type InProcessClient
- func (client *InProcessClient) NextNonce(from common.Address) (uint64, error)
- func (client *InProcessClient) SubscribeToLogs(query ethereum.FilterQuery) (<-chan types.Log, ethereum.Subscription, error)
- func (client *InProcessClient) TransactionByHash(hash common.Hash) (*types.Transaction, error)
- func (client *InProcessClient) TransactionInBlock(blockHash common.Hash, txIndex uint) (*types.Transaction, error)
- type JsonFileDataHandler
- type ManagementContractFacade
- type PrivacyService
- func (service *PrivacyService) APIs() []rpc.API
- func (service *PrivacyService) CheckIfContractCreator(blockHash common.Hash, address common.Address) bool
- func (service *PrivacyService) GenerateTransactOptions(txa ethapi.SendTxArgs) (*bind.TransactOpts, error)
- func (service *PrivacyService) GetAllParticipants(blockHash common.Hash, address common.Address) ([]string, error)
- func (service *PrivacyService) Protocols() []p2p.Protocol
- func (service *PrivacyService) Start(p2pServer *p2p.Server) error
- func (service *PrivacyService) Stop() error
- type PrivateExtensionAPI
- func (api *PrivateExtensionAPI) ActiveExtensionContracts() []ExtensionContract
- func (api *PrivateExtensionAPI) ApproveExtension(ctx context.Context, addressToVoteOn common.Address, vote bool, ...) (string, error)
- func (api *PrivateExtensionAPI) CancelExtension(ctx context.Context, extensionContract common.Address, txa ethapi.SendTxArgs) (string, error)
- func (api *PrivateExtensionAPI) ExtendContract(ctx context.Context, toExtend common.Address, newRecipientPtmPublicKey string, ...) (string, error)
- func (api *PrivateExtensionAPI) GetExtensionStatus(ctx context.Context, extensionContract common.Address) (string, error)
- type ServicesFactory
- type StateFetcher
- func (fetcher *StateFetcher) GetAddressStateFromBlock(blockHash common.Hash, addressToFetch common.Address) ([]byte, error)
- func (fetcher *StateFetcher) GetPrivacyMetaData(blockHash common.Hash, address common.Address) (*state.PrivacyMetadata, error)
- func (fetcher *StateFetcher) GetStorageRoot(blockHash common.Hash, address common.Address) (common.Hash, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type APIBackendHelper ¶
type APIBackendHelper interface { multitenancy.AuthorizationProvider AccountExtraDataStateGetterByNumber(ctx context.Context, number rpc.BlockNumber) (vm.AccountExtraDataStateGetter, error) CurrentBlock() *types.Block }
Only extract required methods from ethService.APIBackend
type ChainAccessor ¶
type ChainAccessor interface { multitenancy.ContextAware // GetBlockByHash retrieves a block from the local chain. GetBlockByHash(common.Hash) *types.Block StateAt(root common.Hash) (*state.StateDB, *state.StateDB, error) State() (*state.StateDB, *state.StateDB, error) CurrentBlock() *types.Block }
ChainAccessor provides methods to fetch state and blocks from the local blockchain
type Client ¶
type Client interface { SubscribeToLogs(query ethereum.FilterQuery) (<-chan types.Log, ethereum.Subscription, error) NextNonce(from common.Address) (uint64, error) TransactionByHash(hash common.Hash) (*types.Transaction, error) TransactionInBlock(blockHash common.Hash, txIndex uint) (*types.Transaction, error) }
type DataHandler ¶
type DataHandler interface { Load() (map[common.Address]*ExtensionContract, error) Save(extensionContracts map[common.Address]*ExtensionContract) error }
type DefaultServicesFactory ¶
type DefaultServicesFactory struct {
// contains filtered or unexported fields
}
func NewServicesFactory ¶
func NewServicesFactory(node *node.Node, ptm private.PrivateTransactionManager, ethService *eth.Ethereum) (*DefaultServicesFactory, error)
func (*DefaultServicesFactory) AccountManager ¶
func (factory *DefaultServicesFactory) AccountManager() *accounts.Manager
func (*DefaultServicesFactory) BackendService ¶
func (factory *DefaultServicesFactory) BackendService() *PrivacyService
func (*DefaultServicesFactory) DataHandler ¶
func (factory *DefaultServicesFactory) DataHandler() DataHandler
func (*DefaultServicesFactory) StateFetcher ¶
func (factory *DefaultServicesFactory) StateFetcher() *StateFetcher
type EthclientManagementContractFacade ¶
type EthclientManagementContractFacade struct {
// contains filtered or unexported fields
}
func (EthclientManagementContractFacade) Caller ¶
func (facade EthclientManagementContractFacade) Caller(managementAddress common.Address) (*extensionContracts.ContractExtenderCaller, error)
func (EthclientManagementContractFacade) Deploy ¶
func (facade EthclientManagementContractFacade) Deploy(args *bind.TransactOpts, toExtend common.Address, recipientAddress common.Address, recipientHash string) (*types.Transaction, error)
func (EthclientManagementContractFacade) GetAllVoters ¶
func (EthclientManagementContractFacade) Transactor ¶
func (facade EthclientManagementContractFacade) Transactor(managementAddress common.Address) (*extensionContracts.ContractExtenderTransactor, error)
type ExtensionContract ¶
type ExtensionContract struct { ContractExtended common.Address `json:"contractExtended"` Initiator common.Address `json:"initiator"` Recipient common.Address `json:"recipient"` ManagementContractAddress common.Address `json:"managementContractAddress"` RecipientPtmKey string `json:"recipientPtmKey"` CreationData []byte `json:"creationData"` }
type InProcessClient ¶
type InProcessClient struct {
// contains filtered or unexported fields
}
func NewInProcessClient ¶
func NewInProcessClient(client *ethclient.Client) *InProcessClient
func (*InProcessClient) NextNonce ¶
func (client *InProcessClient) NextNonce(from common.Address) (uint64, error)
func (*InProcessClient) SubscribeToLogs ¶
func (client *InProcessClient) SubscribeToLogs(query ethereum.FilterQuery) (<-chan types.Log, ethereum.Subscription, error)
func (*InProcessClient) TransactionByHash ¶
func (client *InProcessClient) TransactionByHash(hash common.Hash) (*types.Transaction, error)
func (*InProcessClient) TransactionInBlock ¶
func (client *InProcessClient) TransactionInBlock(blockHash common.Hash, txIndex uint) (*types.Transaction, error)
type JsonFileDataHandler ¶
type JsonFileDataHandler struct {
// contains filtered or unexported fields
}
func NewJsonFileDataHandler ¶
func NewJsonFileDataHandler(dataDirectory string) *JsonFileDataHandler
func (*JsonFileDataHandler) Load ¶
func (handler *JsonFileDataHandler) Load() (map[common.Address]*ExtensionContract, error)
func (*JsonFileDataHandler) Save ¶
func (handler *JsonFileDataHandler) Save(extensionContracts map[common.Address]*ExtensionContract) error
type ManagementContractFacade ¶
type ManagementContractFacade interface { Transactor(managementAddress common.Address) (*extensionContracts.ContractExtenderTransactor, error) Caller(managementAddress common.Address) (*extensionContracts.ContractExtenderCaller, error) Deploy(args *bind.TransactOpts, toExtend common.Address, recipientAddress common.Address, recipientHash string) (*types.Transaction, error) GetAllVoters(addressToVoteOn common.Address) ([]common.Address, error) }
func NewManagementContractFacade ¶
func NewManagementContractFacade(client *ethclient.Client) ManagementContractFacade
type PrivacyService ¶
type PrivacyService struct {
// contains filtered or unexported fields
}
func New ¶
func New(ptm private.PrivateTransactionManager, manager *accounts.Manager, handler DataHandler, fetcher *StateFetcher, apiBackendHelper APIBackendHelper) (*PrivacyService, error)
func (*PrivacyService) APIs ¶
func (service *PrivacyService) APIs() []rpc.API
func (*PrivacyService) CheckIfContractCreator ¶
func (service *PrivacyService) CheckIfContractCreator(blockHash common.Hash, address common.Address) bool
check if the node had created the contract
func (*PrivacyService) GenerateTransactOptions ¶
func (service *PrivacyService) GenerateTransactOptions(txa ethapi.SendTxArgs) (*bind.TransactOpts, error)
func (*PrivacyService) GetAllParticipants ¶
func (service *PrivacyService) GetAllParticipants(blockHash common.Hash, address common.Address) ([]string, error)
returns the participant list for a given private contract
func (*PrivacyService) Protocols ¶
func (service *PrivacyService) Protocols() []p2p.Protocol
node.Service interface methods:
func (*PrivacyService) Stop ¶
func (service *PrivacyService) Stop() error
type PrivateExtensionAPI ¶
type PrivateExtensionAPI struct {
// contains filtered or unexported fields
}
func NewPrivateExtensionAPI ¶
func NewPrivateExtensionAPI(privacyService *PrivacyService) *PrivateExtensionAPI
func (*PrivateExtensionAPI) ActiveExtensionContracts ¶
func (api *PrivateExtensionAPI) ActiveExtensionContracts() []ExtensionContract
ActiveExtensionContracts returns the list of all currently outstanding extension contracts
func (*PrivateExtensionAPI) ApproveExtension ¶
func (api *PrivateExtensionAPI) ApproveExtension(ctx context.Context, addressToVoteOn common.Address, vote bool, txa ethapi.SendTxArgs) (string, error)
ApproveContractExtension submits the vote to the specified extension management contract. The vote indicates whether to extend a given contract to a new participant or not
func (*PrivateExtensionAPI) CancelExtension ¶
func (api *PrivateExtensionAPI) CancelExtension(ctx context.Context, extensionContract common.Address, txa ethapi.SendTxArgs) (string, error)
CancelExtension allows the creator to cancel the given extension contract, ensuring that no more calls for votes or accepting can be made
func (*PrivateExtensionAPI) ExtendContract ¶
func (api *PrivateExtensionAPI) ExtendContract(ctx context.Context, toExtend common.Address, newRecipientPtmPublicKey string, recipientAddr common.Address, txa ethapi.SendTxArgs) (string, error)
ExtendContract deploys a new extension management contract to the blockchain to start the process of extending a contract to a new participant Create a new extension contract that signifies that we want to add a new participant to an existing contract This should contain: - arguments for sending a new transaction (the same as sendTransaction) - the contract address we want to extend - the new PTM public key - the Ethereum addresses of who can vote to extend the contract
func (*PrivateExtensionAPI) GetExtensionStatus ¶
func (api *PrivateExtensionAPI) GetExtensionStatus(ctx context.Context, extensionContract common.Address) (string, error)
Returns the extension status from management contract
type ServicesFactory ¶
type ServicesFactory interface { BackendService() *PrivacyService AccountManager() *accounts.Manager DataHandler() DataHandler StateFetcher() *StateFetcher }
type StateFetcher ¶
type StateFetcher struct {
// contains filtered or unexported fields
}
StateFetcher manages retrieving state from the database and returning it in a usable form by the extension API.
func NewStateFetcher ¶
func NewStateFetcher(chainAccessor ChainAccessor) *StateFetcher
Creates a new StateFetcher from the ethereum service
func (*StateFetcher) GetAddressStateFromBlock ¶
func (fetcher *StateFetcher) GetAddressStateFromBlock(blockHash common.Hash, addressToFetch common.Address) ([]byte, error)
GetAddressStateFromBlock is a public method that combines the other functions of a StateFetcher, retrieving the state of an address at a given block, represented in JSON.
func (*StateFetcher) GetPrivacyMetaData ¶
func (fetcher *StateFetcher) GetPrivacyMetaData(blockHash common.Hash, address common.Address) (*state.PrivacyMetadata, error)
returns the privacy metadata
func (*StateFetcher) GetStorageRoot ¶
func (fetcher *StateFetcher) GetStorageRoot(blockHash common.Hash, address common.Address) (common.Hash, error)
returns the privacy metadata