hyperledger-firefly / hyperledger-firefly/firefly

Evolving: v1.0.0 milestone scope

Open
#117 0 comments 0 reactions 1 assignee Claimed by @peterbroadhurst View on GitHub
architecture
Dominant language
Go
Stars
602
Forks
246
Avg merge
18h 47m
Merged PRs (30d)
6

Description

### WORK IN PROGRESS

... output of this piece of work will include organizing and tagging issues in Git into a milestone.

## Line item list

Below is a list of line items that are known requirements, and an initial mapping on which would be required to consider a version of FireFly to be a v1.0.0 release.

The high level requirements of what a v1.0.0 release is would include are:
- Stable API proven to solve a set of real-world problems - on-chain/off-chain coordination is the primary candidate here
- Proven on top of at least two blockchain technologies - Ethereum and Fabric are the primary candidates
- Sufficient non-functional testing of throughput and resiliency, including in fail-over scenarios
- Enough reference plugins for non-core technologies to allow proof of viability for production deployment

> There are items below that are under active development, that are not considered a pre-req for meeting the requirements of a v1.0.0 release. Depending on readiness those items might obviously might be available functions at the point the milestone criteria are met.

| Category: Line item | v1.0.0
Prereq | Done
July 6th 2021 | Ref |
|---------------------|:-----------------:|:-------------------------:|----|
| On-chain/off-chain: Private send - pinned | ✓ | ✓ |
| On-chain/off-chain: Private send - unpinned | ✓ | ✓ |
| On-chain/off-chain: Broadcast - pinned | ✓ | ✓ |
| On-chain/off-chain: Broadcast - unpinned | | |
| On-chain/off-chain: Request/Reply - pinned | ✓ | ✓ |
| On-chain/off-chain: Request/Reply - unpinned | ✓ | ✓ |
| On-chain/off-chain: Custom on-chain transactions with off-chain data | ✓ | |
| On-chain/off-chain: Fungible token transfer integration | | |
| On-chain/off-chain: Non-fungible token transfer integration | | |
| On-chain/off-chain: Anonymized transaction submission support | ✓ | |
| On-chain/off-chain: Blocking API option to await confirmation | | |
| On-chain/off-chain: Large/BLOB attachment support | ✓ | ✓ |
| On-chain/off-chain: JSON Schema Validation (source & target) | ✓ | ✓ |
| On-chain/off-chain: Group management | ✓ | |
| Network admin: Organization identities - broadcast | ✓ | ✓ |
| Network admin: Nodes (owned by orgs) - broadcast | ✓ | ✓ |
| Network admin: Network registry plugin for admission of new members | ✓ | |
| Network admin: Network registry - File based | ✓ | |
| Network admin: Network registry - On-chain | | |
| Multi-tenancy: Namespace segregation | ✓ | ✓ |
| Multi-tenancy: Parent/child orgs | ✓ | ✓ |
| Batching: Broadcast data - pinned | ✓ | ✓ |
| Batching: Private data - pinned | ✓ | ✓ |
| Batching: Private data - unpinned | | |
| API: CRU(D) on local resources (delete on local-only resources) | ✓ | ✓ | |
| API: Delete on network shared resources | | |
| API: Filtering (database pluggable) | ✓ | ✓ | |
| API: Data upload / JSON | ✓ | ✓ | # 34 |
| API: Data upload / large BLOB (multiparty form upload) | ✓ | ✓ | |
| API: Metrics | ✓ | |
| API: Database change events (ephemeral WebSockets only) | ✓ | |
| Off-chain logic integration (events): Long-lived (durable) app subscriptions | ✓ | ✓ |
| Off-chain logic integration (events): Ephemeral (non-durable) subscriptions | ✓ | ✓ |
| Off-chain logic integration (events): WebSockets | ✓ | ✓ |
| Off-chain logic integration (events): Webhooks | ✓ | ✓ |
| Off-chain logic integration (events): Low-code (NodeRED) | | |
| Off-chain logic integration (events): Trusted compute (Hyperledger Avalon) | | |
| Off-chain logic integration (events): MPC framework | | |
| Off-chain logic integration (events): Message queuing (AMQP/MQTT) | | |
| Custom blockchain transactions: TX submission API | ✓ | |
| Custom blockchain transactions: On-chain event subscription API | ✓ | |
| Custom blockchain transactions: Private transaction data support | | |
| Multi-ledger support: Fabric channels | ✓ | |
| Tokens: Fungible token mint/transfer API | | |
| Tokens: Non-fungible token mint/transfer API | | |
| Tokens: Transaction history API (database cached) | | |
| Tokens: Role/permission management API | | |
| Ethereum: All-participant chain management (ethconnect) | ✓ | ✓ |
| Ethereum: Pinning contract implementation (ethconnect) | ✓ | ✓ |
| Ethereum: Pinning contract audit (ethconnect) | ✓ | |
| Ethereum: Reliable transaction submission (ethconnect) | ✓ | ✓ |
| Ethereum: Reliable event detection (ethconnect) | ✓ | ✓ |
| Ethereum: Private transaction data support (Tessera / ethconnect) | | ✓ |
| Ethereum: Plug-point for advanced key management (ethconnect) | ✓ | ✓ |
| Ethereum: Plug-point for anonymized signing (ethconnect) | ✓ | ✓ |
| Ethereum: Fungible token support - tested with ref implementation | | |
| Ethereum: Non-fungible token support - tested with ref implementation | | |
| Fabric: All-participant chain management (fabconnect) | ✓ | |
| Fabric: Pinning contract implementation (fabconnect) | ✓ | |
| Fabric: Pinning contract audit (fabconnect) | ✓ | |
| Fabric: Reliable transaction submission (fabconnect) | ✓ | |
| Fabric: Reliable event detection (fabconnect) | ✓ |
| Fabric: Private transaction data support (fabconnect) | | |
| Fabric: Plug-point for advanced key management (fabconnect) | ✓ | |
| Fabric: Plug-point for anonymized signing (fabconnect) | ✓ | |
| Fabric: Fungible token support - tested with ref implementation | | |
| Fabric: Non-fungible token support - tested with ref implementation | | |
| Ethereum: All-participant chain management (cordaconnect) | | |
| Private Data Exchange: HTTPS + Mutual TLS | ✓ | ✓ |
| Private Data Exchange: Message Queuing (AMQP/MQTT) | | |
| Public data: InterPlanetary File System (IPFS) | ✓ | ✓ |
| Web UI: Messages (table/timeline) | ✓ | ✓ |
| Web UI: Events (table/timeline) | ✓ | |
| Web UI: Data | ✓ | ✓ |
| Web UI: Subscriptions (inc. manage) | ✓ | |
| Web UI: Transactions | ✓ | |
| Web UI: Operations (inc. resubmit) | ✓ | |
| Web UI: Filtering | ✓ | |
| Web UI: Network map (orgs/nodes) | ✓ | |
| Web UI: Graphical timeline navigation | | |
| State store: SQL common abstraction layer | ✓ | ✓ |
| State store: SQL / PostgreSQL | ✓ | ✓ |
| State store: SQL / SQLite (CGO version) | ✓ | |
| State store: SQL / SQLite (pure Go) | | |
| State store: SQL / QL (pure Go) | ✓ | ✓ |
| State store: SQL / MySQL | | |
| State store: SQL / Oracle | | |
| State store: SQL / DB2 | | |
| State store: SQL / migration tooling | ✓ | ✓ | #2 |
| State store: NoSQL / common abstraction layer | | |
| State store: NoSQL / CouchDB | | |
| State store: NoSQL / MongoDB | | |
| State store: Auto-delete / auto-archive of old data | | |
| Active/active clustering: Config model | ✓ | |
| Active/active clustering: DB-backed leadership election | ✓ | |
| Kubernetes support: Reference helm chart | ✓ | ✓ |
| Kubernetes support: Pre-release test | ✓ | |
| Kubernetes support: Operator | | |
| CLI: Dev environment creation - docker compose | ✓ | ✓ |
| CLI: Dev environment admin/status | ✓ | ✓ |
| CLI: Ethereum + IPFS + HTTPS Data Exchange support | ✓ | ✓ |
| CLI: Fabric + IPFS + HTTPS Data Exchange support | ✓ | |
| CICD: code coverage | ✓ | ✓ |
| CICD: unit test framework (initial 100% coverage) | ✓ | ✓ |
| CICD: unit test thresholds for contributors | ✓ | |
| CICD: e2e acceptance test framework | ✓ | ✓ |
| CICD: e2e acceptance test - Broadcast | ✓ | ✓ |
| CICD: e2e acceptance test - Private send | ✓ | ✓ |
| CICD: e2e acceptance test - Ethereum | ✓ | ✓ |
| CICD: e2e acceptance test - Fabric | | |
| CICD: e2e acceptance test - HTTPS Data Exchange | ✓ | ✓ |
| CICD: e2e acceptance test - IPFS | ✓ | ✓ |
| Hardening: Ethereum / Throughput & latency measurement | ✓ | |
| Hardening: Ethereum / Bottleneck analysis and triage | ✓ | |
| Hardening: Ethereum / Multi-day soak testing | ✓ | |
| Hardening: Ethereum / HA fail-over testing - at least once in-order tx/event delivery | ✓ | |
| Hardening: Fabric / Throughput & latency measurement | ✓ | |
| Hardening: Fabric / Bottleneck analysis and triage | ✓ | |
| Hardening: Fabric / Multi-day soak testing | ✓ | |
| Hardening: Fabric / HA fail-over testing - at least once in-order tx/event delivery | ✓ | |
| Docs: Core concepts | ✓ | ✓ |
| Docs: Quick start | ✓ | ✓ |
| Docs: Reference | ✓ | |
| Docs: Open API 3.0 / auto-generation | ✓ | ✓ |
| Docs: Open API 3.0 / full descriptions of all types | ✓ | |
| Samples: Broadcast | ✓ | ✓ |
| Samples: Private send | ✓ | ✓ |
| Samples: Custom blockchain transactions | ✓ | |
| Samples: Tokens | | |

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.