====== 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.
Example of mapping a subset of requirements identified during the White Paper Analysis conducted by the OMG'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]] ||
: **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]]
Example of mapping a subset of requirements identified during the White Paper Analysis conducted by the OMG's CBDC WG.
^ 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]] ||
=== 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~~