You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
Copy file name to clipboardExpand all lines: README.md
+8-16Lines changed: 8 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -3,23 +3,15 @@
3
3
4
4
CCF is defined in [ccf_specs.md](ccf_specs.md).
5
5
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
7
7
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).
9
9
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.
11
11
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.
13
13
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
23
15
24
16
CCF is a data format that allows compact, efficient, and deterministic encoding of Cadence external values.
25
17
@@ -32,15 +24,15 @@ The same `FeesDeducted` event on the Flow blockchain can encode to:
32
24
33
25
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.
34
26
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.
36
28
37
29
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.
38
30
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.
40
32
41
33
## History
42
34
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.
44
36
45
37
Old branches can be found at https://github.com/fxamacker/ccf_draft.
0 commit comments