{"id":19610693,"url":"https://github.com/onflow/ccf","last_synced_at":"2026-01-28T22:31:50.097Z","repository":{"id":186203569,"uuid":"674814231","full_name":"onflow/ccf","owner":"onflow","description":"Cadence Compact Format (CCF) is a binary data format and alternative to JSON-CDC","archived":false,"fork":false,"pushed_at":"2025-08-15T20:54:28.000Z","size":199,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-08-15T22:46:16.557Z","etag":null,"topics":["cadence","cbor","cddl","codec","flow"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/onflow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-08-04T21:15:15.000Z","updated_at":"2025-08-15T20:54:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"05f85421-a66f-43c2-a48f-6112fdbb7e8a","html_url":"https://github.com/onflow/ccf","commit_stats":null,"previous_names":["onflow/ccf"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/onflow/ccf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onflow%2Fccf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onflow%2Fccf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onflow%2Fccf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onflow%2Fccf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onflow","download_url":"https://codeload.github.com/onflow/ccf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onflow%2Fccf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28853537,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T15:15:36.453Z","status":"ssl_error","status_checked_at":"2026-01-28T15:15:13.020Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cadence","cbor","cddl","codec","flow"],"created_at":"2024-11-11T10:32:02.629Z","updated_at":"2026-01-28T22:31:50.092Z","avatar_url":"https://github.com/onflow.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cadence Compact Format (CCF)\n\nCCF is a binary data format defined in [ccf_specs.md](ccf_specs.md) at https://github.com/onflow/ccf.\n\nCCF-based protocols can balance trade-offs in their own specifications. For example:\n- CCF specifies deterministic encoding requirements and makes it optional.\n- CCF-based protocols MUST specify when to comply with the optional CCF requirements.\n\nIt is outside the scope of CCF to specify each CCF-based protocol (e.g., Events). Protocols are responsible for specifying aspects outside the scope of CCF (e.g., when to comply with each optional CCF requirement and how to encode version numbers).\n\n## CBOR (RFC 8949) and CBOR Sequences (RFC 8742)\n\nA valid CCF data item is also a valid CBOR data item.\n\nSome protocols may want to specify use of CBOR Sequences. For example:\n- First CBOR data item contains metadata specified by each protocol (e.g., version and data item count).\n- Next CBOR data item(s) are CCF encoded data item(s) representing Cadence data.\n\n## Status\n\nCCF 1.0.0 (March 31, 2025) was released with support for new data types added in Cadence 1.0. \n\nCCF 1.0.0 specification supports two modes of encoding Cadence data:\n- fully self-describing mode (includes type definitions in the same CCF data item)\n- partially self-describing mode (can omit type definitions from CCF data item)\n\nA CCF codec implementing the \"fully self-describing mode\" of CCF is at:\n\nhttps://github.com/onflow/cadence/tree/master/encoding/ccf\n\nThe \"partially self-describing mode\" has not yet been implemented by any CCF codec.\n\n### Prior Versions\n\nCCF 1.0.0-RC3 did not support new Cadence types added to Cadence after August 4, 2023.\n\nA CCF codec partially supporting CCF 1.0.0-RC3 was deployed in [June 2023 spork](https://developers.flow.com/concepts/nodes/node-operation/upcoming-sporks).\n\n## Introduction\n\nCCF is a binary data format that allows compact, efficient, and deterministic encoding of Cadence external values.\n\nCadence external values (e.g., events, transaction arguments, etc.) have been encoded using JSON-CDC, which is inefficient, verbose, and doesn't define deterministic encoding.\n\nThe same `FeesDeducted` event on the Flow blockchain can be encoded to:\n- 298 bytes in JSON-CDC (minified).\n- 118 bytes in CCF (fully self-describing mode).\n- \u0026nbsp;20 bytes in CCF (partially self-describing mode).\n\nCCF defines all requirements for deterministic encoding (sort orders, shortest forms, and Cadence-specific requirements) so that CCF codecs implemented in different programming languages can produce the same deterministic encodings.\n\nSome requirements (such as \"Deterministic CCF Encoding Requirements\") are specified as optional. The specification of each CCF-based protocol determines how it uses optional CCF requirements. This allows each protocol to balance trade-offs such as compatibility, determinism, speed, encoded data size, etc.\n\nCCF allows efficient detection of malformed messages without creating Cadence objects. More costly validation is performed only on well-formed messages.\n\nCCF uses a subset of the Concise Binary Object Representation (CBOR) format. CBOR is a binary data format specified by [RFC 8949](https://www.rfc-editor.org/info/std94) and designated by IETF as an [Internet Standard](https://www.ietf.org/rfc/std-index.txt) (STD\u0026nbsp;94). CBOR is designed to be relevant for decades and is used by data formats and protocols such as [W3C\u0026nbsp;WebAuthn](https://www.w3.org/TR/webauthn-2/), Compacted-DNS\u0026nbsp;([RFC\u0026nbsp;8618](https://www.rfc-editor.org/rfc/rfc8618.html)), COSE\u0026nbsp;([IETF\u0026nbsp;STD\u0026nbsp;96](https://www.rfc-editor.org/info/std96)), CWT\u0026nbsp;([RFC\u0026nbsp;8392](https://www.rfc-editor.org/info/rfc8392)), etc.\n\n## History\n\nCommit history of `ccf_specs.md` file prior to Nov 29, 2022 are associated with `README.md` file.\n\nOld branches can be found at https://github.com/fxamacker/ccf_draft.\n\n## License\n\nCCF is licensed under the terms of the Apache License, Version 2.0. See [LICENSE](LICENSE) for more information.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonflow%2Fccf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonflow%2Fccf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonflow%2Fccf/lists"}