Skip to content

Commit 879d35f

Browse files
authored
Merge pull request #5 from onflow/fxamacker/update-readme-for-1.0.0-RC3
Update README for 1.0.0-RC3: - Status: added to describe status of CCF specs and codec - Abstract: removed - Introduction: copied from ccf_specs.md RC3
2 parents 9e229d1 + b2fcdc0 commit 879d35f

File tree

1 file changed

+8
-16
lines changed

1 file changed

+8
-16
lines changed

README.md

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,15 @@
33

44
CCF is defined in [ccf_specs.md](ccf_specs.md).
55

6-
The [CCF codec](https://github.com/onflow/cadence/tree/master/encoding/ccf) in Cadence is used for encoding events in CCF. However, some CCF options are not yet implemented in the codec.
6+
## Status
77

8-
"Abstract" and "Introduction" sections in this README were copied from the CCF specs. Additional content such as benchmarks will be added to the README later.
8+
CCF 1.0.0-RC3 is partially supported by the [CCF codec](https://github.com/onflow/cadence/tree/master/encoding/ccf) deployed in [June 2023 spork](https://developers.flow.com/concepts/nodes/node-operation/upcoming-sporks).
99

10-
## Abstract
10+
The CCF codec in Cadence is currently used for encoding events in CCF. Some CCF options (partially self-describing mode) are not yet implemented by the codec.
1111

12-
Cadence Compact Format (CCF) is a data format designed for compact, efficient, and deterministic encoding of [Cadence](https://github.com/onflow/cadence) external values.
12+
New Cadence types added to Cadence after August 4, 2023 are not yet added to CCF specs.
1313

14-
Cadence is a resource-oriented programming language that introduces new features to smart contract programming. It's used by [Flow](https://github.com/onflow/flow-go) blockchain and has a syntax inspired by Swift, Kotlin, and Rust. Its use of resource types maps well to the Move language.
15-
16-
CCF messages can be fully self-describing or partially self-describing. Both are more compact than JSON-based messages. CCF-based protocols can send Cadence metadata just once for all messages of that type. Malformed data can be detected without Cadence metadata and without creating Cadence objects.
17-
18-
CCF defines "Deterministic CCF Encoding Requirements" and makes it optional. It allows CCF codecs implemented in different programming languages to produce the same deterministic encodings. CCF-based formats and protocols can balance tradeoffs by specifying how they use CCF options.
19-
20-
CCF obsoletes [JSON-Cadence Data Interchange Format](https://developers.flow.com/cadence/json-cadence-spec) (JSON-CDC) for use cases that do not require JSON.
21-
22-
### Introduction
14+
## Introduction
2315

2416
CCF is a data format that allows compact, efficient, and deterministic encoding of Cadence external values.
2517

@@ -32,15 +24,15 @@ The same `FeesDeducted` event on the Flow blockchain can encode to:
3224

3325
CCF defines all requirements for deterministic encoding (sort orders, smallest encoded forms, and Cadence-specific requirements) to allow CCF codecs implemented in different programming languages to produce the same deterministic encodings.
3426

35-
Some requirements (such as "Deterministic CCF Encoding Requirements") are defined as optional. Each CCF-based format or protocol can have its specification state how CCF options are used. This allows each protocol to balance tradeoffs such as compatibility, determinism, speed, encoded data size, etc.
27+
Some requirements (such as "Deterministic CCF Encoding Requirements") are defined as optional. Each CCF-based format or protocol can have its specification state how CCF options are used. This allows each protocol to balance trade-offs such as compatibility, determinism, speed, encoded data size, etc.
3628

3729
CCF uses CBOR and is designed to allow efficient detection and rejection of malformed messages without creating Cadence objects. This allows more costly checks for validity, etc. to be performed only on well-formed messages.
3830

39-
CBOR is an [Internet Standard](https://www.ietf.org/rfc/std-index.txt) defined by [IETF STD 94](https://www.rfc-editor.org/info/std94). CBOR is designed to be relevant for decades and is used by data formats and protocols such as [W3C WebAuthn](https://www.w3.org/TR/webauthn-2/), C-DNS ([IETF RFC 8618](https://www.rfc-editor.org/rfc/rfc8618.html)), COSE ([IETF STD 96](https://www.rfc-editor.org/info/std96)), CWT ([IETF RFC 8392](https://www.rfc-editor.org/info/rfc8392)), etc.
31+
CBOR is an [Internet Standard](https://www.ietf.org/rfc/std-index.txt) defined by [IETF STD 94](https://www.rfc-editor.org/info/std94). CBOR is designed to be relevant for decades and is used by data formats and protocols such as [W3C WebAuthn](https://www.w3.org/TR/webauthn-2/), C-DNS ([IETF RFC 8618](https://www.rfc-editor.org/rfc/rfc8618.html)), COSE ([IETF STD 96](https://www.rfc-editor.org/info/std96)), CWT ([IETF RFC 8392](https://www.rfc-editor.org/info/rfc8392)), etc.
4032

4133
## History
4234

43-
Commit history and contributions to `ccf_specs.md` file prior to Nov 29, 2022 are associated with `README.md` file.
35+
Commit history of `ccf_specs.md` file prior to Nov 29, 2022 are associated with `README.md` file.
4436

4537
Old branches can be found at https://github.com/fxamacker/ccf_draft.
4638

0 commit comments

Comments
 (0)