====== Question: 22. Are there additional design principles that should be considered? Are there tradeoffs around any of the identified design principles, especially in trying to achieve the potential benefits of a CBDC? ====== |< 100% >| | [[cbdc:public:cbdc_omg:04_doc:20_comments:dsn:start| Return to Design Considerations ]] | Provide Feedback | ===== Question ===== [[cbdc:public:cbdc_omg:04_doc:20_comments:dsn:q22:start| Return to Top]] - **Are there additional design principles that should be considered?** - **Are there tradeoffs around any of the identified design principles, especially in trying to achieve the potential benefits of a CBDC?** ===== Answer ===== [[cbdc:public:cbdc_omg:04_doc:20_comments:dsn:q22:start| Return to Top]] ==== Non-Functional Requirements Design Principles ==== [[cbdc:public:cbdc_omg:04_doc:20_comments:dsn:q22:start| Return to Top]] === Overview === [[cbdc:public:cbdc_omg:04_doc:20_comments:dsn:q22:start| Return to Top]] Some major design principles missing from the [[https://www.federalreserve.gov/publications/files/money-and-payments-20220120.pdf | White Paper]] are the specification of [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:xapend:xapend.a_glossary:n:nonfuncreq | Non-Functional Requirements]]. The [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra | Distributed Immutable Data Objects - Reference Architecture (DIDO-RA)]] provides a list of [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc | Non-Functional Requirements]] applicable to the CBDC. The following is an outline of the **Non-Functional Requirements**: 1. [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:10_portability | Portability ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:10_portability:01_adapt | Adaptability ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:10_portability:04_install | Installability ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:10_portability:06_replace | Replaceability ]] 2. [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:14_reliability | Reliability ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:14_reliability:01_matuity | Maturity ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:14_reliability:02_availability | Availability ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:14_reliability:04_faulttolerance | Fault Tolerance ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:14_reliability:12_recoverability | Recoverability ]] 3. [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:20_maintainability | Maintainability ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:20_maintainability:modularity | Modularity ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:20_maintainability:reuseability | Reusability ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:20_maintainability:analysability | Analysability ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:20_maintainability:modifiability | Modifiability ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:20_maintainability:testability | Testability ]] 4. [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:25_security | Security ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:25_security:confidentiality | Confidentiality ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:25_security:04_data_integrity | Data Integrity]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:25_security:nonrepudiability | Non-Repudiation ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:25_security:authenticity | Authenticity ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:25_security:accountability | Accountability]] 5. [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:28_manageability | Manageability ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:28_manageability:02_types | Types of Manageability Functions ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:28_manageability:04_costs | Manageability Costs ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:28_manageability:06_system | System Manageability Issues ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:28_manageability:08_software | Software Manageability Issues ]] 6. [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:30_usability | Usability ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:30_usability:effectiveness | Effectiveness Metrics ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:30_usability:efficiency | Efficiency Metrics ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:30_usability:satisfaction | Satisfaction Metrics ]] 7. [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:40_performance | Performance ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:40_performance:01_platform | Platform Performance ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:40_performance:02_application | Application Performance ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:40_performance:04_nework | Network Performance ]] 8. [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:05_interoperability | Interoperability ]] 9. [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:08_elasticity | Elasticity ]] 10. [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:16_scalability | Scalability ]] === Examples === [[cbdc:public:cbdc_omg:04_doc:20_comments:dsn:q22:start| Return to Top]] Some of these **Non-Functional** requirements were alluded to in the White Paper, but not directly specified or defined. Table {{ref>xreftable}} provides an example of cross-referencing the Non-Functional Requirements to the Benefits, Policy Considerations, Risks and Design requirements identified in the [[cbdc:public:cbdc_omg:04_doc:12_summary:start| White Paper Analysis]] done by the [[https://www.omg.org/ | Object Management Group's ]] CBDC WG. ^ Non-Functional Requirement ^ Benefits, Policy Considerations, Risks and Design requirements | ^ [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:10_portability:01_adapt | Adaptability ]] | : B: B0008, B0016, B0025, B0026, B0029, B0032, B0033, B0035, B0037, B0038, B0039, B0048, : P: P0007 | ^ [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:40_performance | Performance ]] | : B: B0009, B0011-1, B0011-2, B0017-1, B0017-2, B0024, B0034, B0045, B0047, : P: P0026, P0028-6 | ^ [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:14_reliability:02_availability | Availability ]] | : B: B0012, B0013 B0053, : D: D0016 | ^ [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:25_security:confidentiality | Confidentiality ]] | : B: B0004, B0022-1, B0051 | ^ [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:30_usability:efficiency | Efficiency Metrics ]] | : B: B0001, B0002, B0009, B0011, B0014, B0047, B0051, : P: P0023, P0026, P0028-6 | | **''B''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#benefits| Benefit Considerations ]] || | **''P''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#policy_considerations| Policy Considerations]] || | **''R''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#risks| Risk Considerations ]] || | **''D''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#design| Design Considerations]] ||
Example of mapping a subset of requirements identified during the White Paper Analysis conducted by the OMG's CBDC WG.
: **Note:** There should be no tradeoffs between **Non-Functional Requirements** and any existing requirements identified in [[https://www.federalreserve.gov/publications/files/money-and-payments-20220120.pdf | White Paper]] as determined by the OMG's CBDC WG [[cbdc:public:cbdc_omg:04_doc:12_summary:start| White Paper Analysis]] === Discussion of Example === [[cbdc:public:cbdc_omg:04_doc:20_comments:dsn:q22:start| Return to Top]] The first requirement listed under [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:2_nonfunc:10_portability:01_adapt | Adaptability ]] is Benefit **''B0008''**: ^ B0008 ^ 3 | Provide entrepreneurs a platform on which to create new financial products and services | | **''B''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#benefits| Benefit Considerations ]] ||| | **''P''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#policy_considerations| Policy Considerations]] ||| | **''R''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#risks| Risk Considerations ]] ||| | **''D''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#design| Design Considerations]] ||| In order to realize **''B0008''**, the CBDC needs to be considered a system that can support both: * //[[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:xapend:xapend.a_glossary:s:swadapt | Software Adaptability]] - A software component with a well-defined, stable [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:xapend:xapend.a_glossary:a:api | Application Programming Interface (API)]] can be exchanged using another component with minimal effort, as long as that component adheres to the API. For example, [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:xapend:xapend.a_glossary:s:sql|SQL]] describes an API for a database component. As long as the software adheres to the standard SQL API, the [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:xapend:xapend.a_glossary:d:dbms | Database Management System (DBMS)]] can be exchanged between, for example, [[https://www.oracle.com/database/technologies/| Oracle | Oracle ]] and [[https://www.postgresql.org/ | PostgreSQL]], with no to minimal impact.// * //[[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:xapend:xapend.a_glossary:a:archdaptability | Architecture Adaptability]] - Connectors between software components change without having to change the components. This again comes down to having well-defined, stable APIs for the connectors. For example, the [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:xapend:xapend.a_glossary:u:unix|Unix]] File System (UnixFS) is a connector between software components and the physical filesystem. The associated UnixFS library can be exchanged for the [[https://ipfs.io/ | InterPlanetary File System (IPFS) ]] UnixFS connector and the software component should have no to minimal impact.// Obviously, this is just an example, and the Federal Reserve should adopt the information and update the information in the OMG's CBDC WG [[cbdc:public:cbdc_omg:04_doc:12_summary:start| White Paper Analysis]] and also perform their own assessment a similar to that presented in Table {{ref>xreftable}}. The discussions and justifications for each requirement need to be captured for future reference. For example, **''B00008''** would have its own discussion area within the CBDC requirements document. ==== Functional Requirements Design Principles ==== [[cbdc:public:cbdc_omg:04_doc:20_comments:dsn:q22:start| Return to Top]] === Overview === [[cbdc:public:cbdc_omg:04_doc:20_comments:dsn:q22:start| Return to Top]] Some major design principles missing from the [[https://www.federalreserve.gov/publications/files/money-and-payments-20220120.pdf | White Paper]] are the specification of [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:xapend:xapend.a_glossary:f:funcreq]]. The [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra | Distributed Immutable Data Objects - Reference Architecture (DIDO-RA)]] provides a list of [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:1_func | Functional Requirements]] applicable to the CBDC. The following is an outline of the **Functional Requirements**: 1. [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:1_func:platform | Platforms ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:1_func:platform:hw_arch | Hardware Platforms ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:1_func:platform:os_arch | Operating System Platforms ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:1_func:platform:sw_arch | Runtime Platforms ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:1_func:platform:net_arch | Network Platforms ]] * [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:1_func:platform:virtnodes | Virtualization Platforms ]] 2. [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:1_func:access | Access Control ]] Some of these **Functional Requirements** were alluded to in the White Paper, but not directly specified or defined. The Table {{ref>funcxreftable}} provides an example of cross-referencing the **Functional Requirements** to the Benefits, Policy Considerations, Risks and Design requirements identified in the [[cbdc:public:cbdc_omg:04_doc:12_summary:start| White Paper Analysis]] done by the [[https://www.omg.org/ | Object Management Group's ]] CBDC WG. === Examples === [[cbdc:public:cbdc_omg:04_doc:20_comments:dsn:q22:start| Return to Top]] ^ Functional Requirement ^ Benefits, Policy Considerations, Risks and Design requirements | ^ [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:1_func:platform:hw_arch | Hardware Platforms ]] | : B: B0007, B0008, B0011, B0014, B0015, B0018, B0022-3, B0024, B0025, B0029, B0030, B0032, B0033, B0037, B0038, B0039, B0040, B0041, B0043, B0044, B0047, B0049, B0053, : P: P0007, P0013, P0020, P0026, P0028, : R: R0007, R0008, R0010, R0011, : D: D0009, D0012, D0015, D0016, D0017 | ^ [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:1_func:access | Access Control ]] | : B: B0004, B0005, B0007, B0009, B0010, B0011, B0015, B0018, B0022, B0025, B0029, B0033, B0035-2, B0038, B0041, B0044, B0045, B0046, B0049, B0050, : P: P0004, P0005, P0007, P0020, P0021, P0023, P0025, P0029, : R: R0001, R0003, R0007, R0008, R0011, R0014, | | **''B''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#benefits| Benefit Considerations ]] || | **''P''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#policy_considerations| Policy Considerations]] || | **''R''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#risks| Risk Considerations ]] || | **''D''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#design| Design Considerations]] ||
Example of mapping a subset of requirements identified during the White Paper Analysis conducted by the OMG's CBDC WG.
=== Discussion of Example === [[cbdc:public:cbdc_omg:04_doc:20_comments:dsn:q22:start| Return to Top]] The one of the first requirements listed under [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:1.4_req:1_func:platform | Platforms ]] is Benefit **''B00011''**: ^ B0011 ^ 7 | Make payments: : 1. faster : 2. cheaper : 3. more convenient : 4. more accessible | | **''B''** = [[cbdc:public:cbdc_omg:04_doc:12_summary:start#benefits| Benefit Considerations ]] ||| Requirement **''B0011''** is a compound requirement, and the selection of a Platform can have an impact on: * **''B00011-1''** - Faster * **''B00011-2''** - Cheaper * **''B00011-3''** - More Convenient * **''B00011-4''** - More Accessible /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- /* To add a discussion page to this page, comment out the line that says ~~DISCUSSION:off~~ */ ~~DISCUSSION:on|Outstanding Issues~~ ~~DISCUSSION:off~~