Skip to content

Commit 53884aa

Browse files
stevenjbkioshnRyun1rphair
authored
CIP-0134? | Cardano URIs - CIP-0019 Address Representation (#888)
* docs(CIP): Add simple extension to embed any Cardano address into a CIP-0013 URI * Update CIP-XXXX/README.md Co-authored-by: bkioshn <35752733+bkioshn@users.noreply.github.com> * Update CIP-XXXX/README.md Co-authored-by: bkioshn <35752733+bkioshn@users.noreply.github.com> * Update CIP-XXXX/README.md Co-authored-by: bkioshn <35752733+bkioshn@users.noreply.github.com> * Update CIP-XXXX/README.md Co-authored-by: Ryan <44342099+Ryun1@users.noreply.github.com> * Update CIP-XXXX/README.md Co-authored-by: Ryan <44342099+Ryun1@users.noreply.github.com> * Update CIP-XXXX/README.md Co-authored-by: Ryan <44342099+Ryun1@users.noreply.github.com> * Update CIP-XXXX/README.md Co-authored-by: Robert Phair <rphair@cosd.com> * Update CIP-XXXX/README.md Co-authored-by: Robert Phair <rphair@cosd.com> * fix(CIP): Cleanup example addresses * Update CIP-XXXX/README.md Co-authored-by: Ryan <44342099+Ryun1@users.noreply.github.com> * Update CIP-XXXX/README.md Co-authored-by: Robert Phair <rphair@cosd.com> * Update CPS-0016/README.md Co-authored-by: Ryan <44342099+Ryun1@users.noreply.github.com> * docs: Rename draft CIP folder to CIP-0134 * fix(CIP): Properly rename the draft cip folder to CIP-0134 * Update README.md --------- Co-authored-by: bkioshn <35752733+bkioshn@users.noreply.github.com> Co-authored-by: Ryan <44342099+Ryun1@users.noreply.github.com> Co-authored-by: Robert Phair <rphair@cosd.com>
1 parent e4a2380 commit 53884aa

File tree

2 files changed

+125
-0
lines changed

2 files changed

+125
-0
lines changed

CIP-0134/README.md

+120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
---
2+
CIP: 134
3+
Title: Cardano URIs - Address Representation
4+
Category: Wallets
5+
Status: Proposed
6+
Authors:
7+
- Steven Johnson <steven.johnson@iohk.io>
8+
Implementors: []
9+
Discussions:
10+
- https://github.com/cardano-foundation/CIPs/pull/888
11+
Created: 2024-08-23
12+
License: CC-BY-4.0
13+
---
14+
15+
## Abstract
16+
17+
This CIP proposes an extension to [CIP-0013] to allow easy and unambiguous encoding of
18+
[CIP-0019]/[CIP-0105] Addresses into URL's.
19+
20+
## Motivation: why is this CIP necessary?
21+
22+
[CIP-0013] defines encoding for payment addresses and stake pool, however [CIP-0019]
23+
and [CIP-0105] define numerous other address types.
24+
25+
These addresses cannot currently be encoded into URIs unambiguously.
26+
This extension proposes a simple and forward compatible method of encoding such addresses into the URI scheme defined by [CIP-0013].
27+
28+
[x509] certificates can contain name or alternative name information related to either the issuer of
29+
the certificate or its subject.
30+
It is desirable to distinguish an Issuer or Subject of a certificate by one or more on-chain keys.
31+
This, for example, can facilitate the ability to link off-chain actions authorized with a x509 certificate,
32+
with an on-chain identity.
33+
34+
Currently, there is no standard way to embed a Cardano address, such as a stake address,
35+
or a dRep address as distinguishing name within a [x509] certificate.
36+
37+
A URI is one of the possible names that can be associated with the Issuer or Subject of a certificate.
38+
This URI can be referenced in the alternative name for both the Issuer and Subject of a certificate
39+
by using the uniformResourceIdentifier in the general name.
40+
[CIP-0013] does not define a method for stake or dRep addresses, etc., to be encoded in the URI scheme it defines.
41+
42+
Allowing these addresses to be easily encoded as URIs allows them to be 100% interoperable
43+
with existing public key infrastructure and certificate creation tools.
44+
45+
## Specification
46+
47+
We extend [CIP-0013] with a single new authority for referencing Cardano addresses in [CIP-0019] format.
48+
49+
### Grammar & interpretation
50+
51+
We extend the grammar from [CIP-0013] with the new authority:
52+
53+
```
54+
authorityref = (... | addr )
55+
56+
addr = "//addr/" cip19-addr
57+
cip19-addr = *cip19-char
58+
cip19-char = ALPHA / DIGIT / "_"
59+
```
60+
61+
Effectively, any address string specified by [CIP-0019], [CIP-0105] or future extension to either
62+
of these specifications can be embedded directly within the URI.
63+
64+
### Examples
65+
66+
#### CIP-19 Addresses
67+
68+
```uri
69+
web+cardano://addr/addr1qx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3n0d3vllmyqwsx5wktcd8cc3sq835lu7drv2xwl2wywfgse35a3x
70+
web+cardano://addr/addr_test1gz2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer5pnz75xxcrdw5vky
71+
web+cardano://addr/stake1uyehkck0lajq8gr28t9uxnuvgcqrc6070x3k9r8048z8y5gh6ffgw
72+
web+cardano://addr/stake_test1uqehkck0lajq8gr28t9uxnuvgcqrc6070x3k9r8048z8y5gssrtvn
73+
```
74+
75+
#### CIP-105 Addresses
76+
77+
```uri
78+
web+cardano://addr/drep_vk17axh4sc9zwkpsft3tlgpjemfwc0u5mnld80r85zw7zdqcst6w54sdv4a4e
79+
web+cardano://addr/drep15k6929drl7xt0spvudgcxndryn4kmlzpk4meed0xhqe25nle07s
80+
web+cardano://addr/drep_script16pjhzfkm7rqntfezfkgu5p50t0mkntmdruwlp089zu8v29l95rg
81+
web+cardano://addr/cc_cold_vk149up407pvp9p36lldlp4qckqqzn6vm7u5yerwy8d8rqalse3t04q7qsvwl
82+
web+cardano://addr/cc_cold1lmaet9hdvu9d9jvh34u0un4ndw3yewaq5ch6fnwsctw02xxwylj
83+
web+cardano://addr/cc_cold_script14ehj5f64f40xju0086fnunctulkh46mq7munm7upe4hpcwpcat
84+
web+cardano://addr/cc_cold_script14ehj5f64f40xju0086fnunctulkh46mq7munm7upe4hpcwpcatv
85+
web+cardano://addr/cc_hot_vk10y48lq72hypxraew74lwjjn9e2dscuwphckglh2nrrpkgweqk5hschnzv5
86+
web+cardano://addr/cc_hot17mffcrm3vnfhvyxt7ea3y65e804jfgrk6pjn78aqd9vg7xpq8dv
87+
web+cardano://addr/cc_hot_script16fayy2wf9myfvxmtl5e2suuqmnhy5zx80vxkezen7xqwskncf40
88+
```
89+
90+
## Rationale: how does this CIP achieve its goals?
91+
92+
By extending [CIP-0013] to allow a [CIP-0019] encoded address to be simply embedded in the URI scheme,
93+
we enable existing certificate creation tools and public key infrastructure to be used to easily
94+
create certificates that reference Cardano addresses.
95+
96+
It is envisioned that this extension could have use cases beyond the one presented here.
97+
98+
## Path to Active
99+
100+
### Acceptance Criteria
101+
102+
* [ ] Community Feedback and Review Integrated.
103+
* [ ] Demonstration of Cardano addresses being embedded in x509 certificates using existing tools.
104+
* [ ] At least one project utilizing this standard.
105+
106+
### Implementation Plan
107+
108+
Project Catalyst intends to use this standard to facilitate linking of on-chain and off-chain identity
109+
with x509 certificates.
110+
This specification does not deal with the processes or proofs required, simply the URI scheme that is
111+
required to embed a Cardano address in a x509 certificate.
112+
113+
## Copyright
114+
115+
This CIP is licensed under [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
116+
117+
[CIP-0013]:https://github.com/cardano-foundation/CIPs/blob/master/CIP-0013/
118+
[CIP-0019]:https://github.com/cardano-foundation/CIPs/blob/master/CIP-0019/
119+
[CIP-0105]:https://github.com/cardano-foundation/CIPs/blob/master/CIP-0105/
120+
[x509]:https://datatracker.ietf.org/doc/html/rfc5280

CPS-0016/README.md

+5
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ Proposed Solutions:
99
- CIP-0013: https://github.com/cardano-foundation/CIPs/tree/master/CIP-0013
1010
- CIP-0099: https://github.com/cardano-foundation/CIPs/tree/master/CIP-0099
1111
- CIP-0107: https://github.com/cardano-foundation/CIPs/tree/master/CIP-0107
12+
- CIP-0134: https://github.com/cardano-foundation/CIPs/tree/master/CIP-0134
1213
Discussions:
1314
- https://github.com/cardano-foundation/CIPs/issues/836
1415
- https://github.com/cardano-foundation/CIPs/pull/559
1516
- https://github.com/cardano-foundation/CIPs/pull/635
1617
- https://github.com/cardano-foundation/CIPs/pull/841
18+
- https://github.com/cardano-foundation/CIPs/pull/888
1719
Created: 2024-06-15
1820
License: CC-BY-4.0
1921
---
@@ -136,6 +138,7 @@ CIPs:
136138
* `//claim`: supports versioning, registered in [CIP-99]
137139
* `//transaction`: supports versioning (?), registered in [CIP-107]
138140
* `//block`: supports versioning (?), registered in [CIP-107]
141+
* `//addr/`: registered in [CIP-134]
139142

140143
## Copyright
141144

@@ -151,6 +154,8 @@ This CPS is licensed under [CC-BY-4.0].
151154

152155
[CIP-107]:https://github.com/cardano-foundation/CIPs/tree/master/CIP-0107
153156

157+
[CIP-134]:https://github.com/cardano-foundation/CIPs/tree/master/CIP-0134
158+
154159
[CC-BY-4.0]:https://creativecommons.org/licenses/by/4.0/legalcode
155160

156161
[URI Syntax]:https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax

0 commit comments

Comments
 (0)