Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flexible party types #2149

Open
4 tasks
scirner22 opened this issue Sep 12, 2024 · 1 comment
Open
4 tasks

Flexible party types #2149

scirner22 opened this issue Sep 12, 2024 · 1 comment
Labels
enhancement New feature or request metadata Metadata Module
Milestone

Comments

@scirner22
Copy link
Contributor

Summary

Allow more arbitrary party types.

Problem Definition

// PartyType are the different roles parties on a contract may use
enum PartyType {
  // PARTY_TYPE_UNSPECIFIED is an error condition
  PARTY_TYPE_UNSPECIFIED = 0;
  // PARTY_TYPE_ORIGINATOR is an asset originator
  PARTY_TYPE_ORIGINATOR = 1;
  // PARTY_TYPE_SERVICER provides debt servicing functions
  PARTY_TYPE_SERVICER = 2;
  // PARTY_TYPE_INVESTOR is a generic investor
  PARTY_TYPE_INVESTOR = 3;
  // PARTY_TYPE_CUSTODIAN is an entity that provides custodian services for assets
  PARTY_TYPE_CUSTODIAN = 4;
  // PARTY_TYPE_OWNER indicates this party is an owner of the item
  PARTY_TYPE_OWNER = 5;
  // PARTY_TYPE_AFFILIATE is a party with an affiliate agreement
  PARTY_TYPE_AFFILIATE = 6;
  // PARTY_TYPE_OMNIBUS is a special type of party that controls an omnibus bank account
  PARTY_TYPE_OMNIBUS = 7;
  // PARTY_TYPE_PROVENANCE is used to indicate this party represents the blockchain or a smart contract action
  PARTY_TYPE_PROVENANCE = 8;
  // PARTY_TYPE_CONTROLLER is an entity which controls a specific asset on chain (ie enote)
  PARTY_TYPE_CONTROLLER = 10;
  // PARTY_TYPE_VALIDATOR is an entity which validates given assets on chain
  PARTY_TYPE_VALIDATOR = 11;
}

The party type is currently an enum. This is inflexible because anything that would deviate from this list cannot be used without a protocol change and release. Also, this list is generic, but was likely made with Figure's origination and servicing flow in mind.

Proposal

Given there's benefits to using an enum and also possibly not wanting to migrate from an enum to string type, I'm proposing the addition of the following types. These types would allow the caller to illustrate arbitrary parties on sessions without having to fit into the concrete party types that are already defined. This would be up to the caller, but including a description of the usage of these party types would be great inside of the scope specification.

// PartyType are the different roles parties on a contract may use
enum PartyType {
  ...
  PARTY_TYPE_GENERIC_1 = 12;
  PARTY_TYPE_GENERIC_2 = 13;
  PARTY_TYPE_GENERIC_3 = 14;
  PARTY_TYPE_GENERIC_4 = 15;
  PARTY_TYPE_GENERIC_5 = 16;
  PARTY_TYPE_GENERIC_6 = 17;
}

For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate contributors tagged
  • Contributor assigned/self-assigned
@scirner22 scirner22 added enhancement New feature or request metadata Metadata Module labels Sep 12, 2024
@iramiller
Copy link
Member

It would be nice to get a batch of these to add ... perhaps some that make sense for Infineo and their insurance use case and include those with this update as well... having a large list of types isn't the worst thing in the word.

@SpicyLemon SpicyLemon added this to the v1.21.0 milestone Nov 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request metadata Metadata Module
Projects
Development

No branches or pull requests

3 participants