proxy_api.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package extension
  2. import (
  3. "context"
  4. "github.com/ethereum/go-ethereum/common"
  5. "github.com/ethereum/go-ethereum/internal/ethapi"
  6. "github.com/ethereum/go-ethereum/log"
  7. "github.com/ethereum/go-ethereum/rpc"
  8. )
  9. type PrivateExtensionProxyAPI struct {
  10. PrivateExtensionAPI
  11. proxyClient *rpc.Client
  12. }
  13. func NewPrivateExtensionProxyAPI(privacyService *PrivacyService) interface{} {
  14. apiSupport, ok := privacyService.apiBackendHelper.(ethapi.ProxyAPISupport)
  15. if ok {
  16. if apiSupport.ProxyEnabled() {
  17. return &PrivateExtensionProxyAPI{
  18. PrivateExtensionAPI{privacyService},
  19. apiSupport.ProxyClient(),
  20. }
  21. }
  22. }
  23. return NewPrivateExtensionAPI(privacyService)
  24. }
  25. // ActiveExtensionContracts returns the list of all currently outstanding extension contracts
  26. func (api *PrivateExtensionProxyAPI) ActiveExtensionContracts(ctx context.Context) []ExtensionContract {
  27. api.privacyService.mu.Lock()
  28. defer api.privacyService.mu.Unlock()
  29. psi, err := api.privacyService.apiBackendHelper.PSMR().ResolveForUserContext(ctx)
  30. if err != nil {
  31. return nil
  32. }
  33. extracted := make([]ExtensionContract, 0)
  34. for _, contract := range api.privacyService.psiContracts[psi.ID] {
  35. extracted = append(extracted, *contract)
  36. }
  37. return extracted
  38. }
  39. // ApproveContractExtension submits the vote to the specified extension management contract. The vote indicates whether to extend
  40. // a given contract to a new participant or not
  41. func (api *PrivateExtensionProxyAPI) ApproveExtension(ctx context.Context, addressToVoteOn common.Address, vote bool, txa ethapi.SendTxArgs) (string, error) {
  42. log.Info("QLight - proxy enabled")
  43. var result string
  44. err := api.proxyClient.CallContext(ctx, &result, "quorumExtension_approveExtension", addressToVoteOn, vote, txa)
  45. return result, err
  46. }
  47. func (api *PrivateExtensionProxyAPI) ExtendContract(ctx context.Context, toExtend common.Address, newRecipientPtmPublicKey string, recipientAddr common.Address, txa ethapi.SendTxArgs) (string, error) {
  48. log.Info("QLight - proxy enabled")
  49. var result string
  50. err := api.proxyClient.CallContext(ctx, &result, "quorumExtension_extendContract", toExtend, newRecipientPtmPublicKey, recipientAddr, txa)
  51. return result, err
  52. }
  53. func (api *PrivateExtensionProxyAPI) CancelExtension(ctx context.Context, extensionContract common.Address, txa ethapi.SendTxArgs) (string, error) {
  54. log.Info("QLight - proxy enabled")
  55. var result string
  56. err := api.proxyClient.CallContext(ctx, &result, "quorumExtension_cancelExtension", extensionContract, txa)
  57. return result, err
  58. }