From ae85861873f9d6f259f1a2a98b19a370c7cbb6cf Mon Sep 17 00:00:00 2001 From: danieljperry Date: Fri, 19 May 2023 10:27:05 +0800 Subject: [PATCH 1/2] Add CHIP-19 and update status to Draft --- CHIPs/chip-0019.md | 127 ++++++++++++++++++ .../credential_restriction_puzzle.png | Bin 0 -> 36720 bytes 2 files changed, 127 insertions(+) create mode 100644 CHIPs/chip-0019.md create mode 100644 assets/chip-0019/credential_restriction_puzzle.png diff --git a/CHIPs/chip-0019.md b/CHIPs/chip-0019.md new file mode 100644 index 00000000..232af348 --- /dev/null +++ b/CHIPs/chip-0019.md @@ -0,0 +1,127 @@ +CHIP Number | 0019 +:-------------|:---- +Title | Restricted CAT Standard +Description | A standard for implementing Restricted Chia Asset Tokens (CATs) on Chia's blockchain +Author | [Matt Hauff](https://github.com/Quexington) +Editor | [Dan Perry](https://github.com/danieljperry) +Comments-URI | [PR #68](https://github.com/Chia-Network/chips/pull/68) +Status | Draft +Category | Standards Track +Sub-Category | Chialisp +Created | 2023-04-25 +Requires | [0016](https://github.com/Chia-Network/chips/pull/65), [CAT2](https://chialisp.com/cats) +Replaces | None +Superseded-By | None + +## Abstract +Restricted CATs are tokens on Chia's blockchain whose ownership is restricted to people or other entities who possess a required set of Verifiable Credentials (VCs). + +## Definitions +Throughout this document, we'll use the following terms: +* **Must, required, shall** – These words indicate an absolute requirement of the specification +* **Must not, shall not** – These phrases indicate an absolute prohibition of the specification +* **Should, recommended** – These words indicate something that is not a requirement of the specification, but the implications of not following it should be carefully considered beforehand +* **Should not, not recommended** – These phrases indicate something that is not a prohibition of the specification, but the implications of following it should be carefully considered beforehand +* **May** – This word indicates something that is optional. Interoperability between implementations must not be broken because of the choice to implement, or not to implement, this feature + +## Motivation + +The seller of an asset sometimes needs to restrict potential buyers to entities that meet certain qualifications. Some examples of assets with this requirement include financial instruments such as unregistered securities, convertible investments, real estate investment trusts, and fixed income securities, as well as non-financial instruments such as concert tickets, club memberships, and admissions to events. The qualifications required to buy such an asset might include being an accredited investor, being a non US resident or citizen, or having paid club membership dues. + +Restricted CATs are similar to standard Chia Asset Tokens (CATs), with the extra requirement that anyone who wants to acquire and/or trade them must fulfill certain qualifications in order to do so. An example of such a qualification is the possession of a Verifiable Credential that contains a set of proofs specific to that restricted CAT. Just like standard CATs, Restricted CATs can be traded peer-to-peer on a bulletin board by using Chia [Offers](https://chialisp.com/offers/). + +### Entities involved +Restricted CATs involve the following four entities: + +1. Credential holder - the individual or entity who has been issued, and currently holds, the VC + * Note - The W3C specification defines a [subject](https://www.w3.org/TR/vc-data-model/#dfn-subjects) as `A thing about which claims are made.` The holder and the subject are typically, but not always, the same entity. This CHIP will refer to this entity as the `subject` before they hold the VC, and as the `holder` when they hold it +2. Credential issuer - the entity that creates and signs the VC, thus asserting the claims about the holder's identity, attributes, or qualifications +3. Verifier - the entity that verifies the authenticity and validity of the VC by checking the cryptographic signatures, trustworthiness of the issuer, and the relevance of the claims to the context of the transaction or interaction +4. Security issuer - the entity that wishes to issue the Restricted CATs + +## Backwards Compatibility +Restricted CATs are a Chialisp standard that extends the CAT2 standard, and does not replace any existing standards. If this CHIP is accepted, the CAT2 standard will continue to function without modification. This CHIP does not introduce any backward incompatibilities. + +## Rationale +The design for Restricted CATs consists of three basic components: +1. **CAT extension** – The required tokens closely resemble Chia Asset Tokens (CATs). Because the CAT2 standard is already in use today, it made sense to extend that standard rather than create a new one + +2. **Verification** – A proofs checker puzzle is used to perform verification of a holder's proofs, as detailed in the [Specification section](#specification). This verification is a required feature because it allows a security issuer to issue Restricted CATs only to certain people or other entities. For example, a security issuer could limit the issuance of their Restricted CAT to those who are: + * At least 18 years old + * Not a citizen or resident of the United States of America + +Additionally, the design for Restricted CATs includes the requirement that they must be compatible with Chia Offers. This requirement exists so that Restricted CATs may be traded peer-to-peer on bulletin boards. + +### Workflow + +This section presents a basic workflow for acquiring and using Chia Restricted CATs. The following roles will be used in this example: +1. Credential subject/holder - the person who wishes to obtain a credential (the subject) or who is currently holding the credential (the holder) +2. Credential issuer - the company that issues the credential +3. Verifier and security issuer - the company that verifies the authenticity of the credential; also the company that issues Restricted CATs + +The following process will be used to obtain and use the Restricted CATs in this example: +1. The subject goes through the necessary steps with the credential issuer to obtain a VC. The subject is now the holder of the VC +2. The holder applies with the security issuer to receive an issuance of Restricted CATs +3. The security issuer verifies the authenticity and current validity of the credential +4. The security issuer issues the Restricted CATs to the holder +5. The holder can now sell the Restricted CATs to any other holders of the same VC + +## Specification + +#### Restricted CAT Structure +Restricted CATs extend the CAT2 standard by wrapping coins with the [credential restriction](https://github.com/Chia-Network/chia-blockchain/blob/main/chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp) puzzle, which ensures that the coins will require the correct set of VCs in order to be spent. Whenever the coins are spent, they call a [proofs checker](https://github.com/Chia-Network/chia-blockchain/blob/main/chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp) puzzle, which checks any proofs that are revealed. + +Note that any type of Chia coin (CATs, NFTs, etc) could be wrapped with a Chialisp puzzle that restricts ownership based on credentials. However, the standard in this CHIP only supports wrapping CAT2 coins. + +#### Restricted CATs usage outline +1. The security issuer mints the desired number of Restricted CATs, where: + * In order to be transferred, the Restricted CATs require that a VC with a set of matching proof(s) authorize it to make the transfer + * Without the matching proof(s), the Restricted CATs cannot be transferred +2. The VC of the subject (receiver) who wishes to purchase the Restricted CATs creates an announcement, which the Restricted CATs then use to verify that the Merkle root in the VC contains the correct proofs +3. The subject (receiver) uses the VC to authorize the transfer of the Restricted CATs +4. The authorization adds to a chain of custody on the blockchain, i.e. a history of each token and which VC(s) have owned it, similar to NFT provenance +5. The history will give the security issuer confidence that they know who has owned the Restricted CATs + +#### Proofs checker +A default proofs checker is included in the Restricted CAT specification. This Chialisp puzzle looks for a list of `(key, value)` pairs, where: +* The `key` is a flag, such as `over_18`, `us_citizen`, etc +* The value is a boolean indicating whether the key has been met + +In order for the default proofs checker to succeed, each of the values is required to be `true`: +* If the values are all `true`, the proofs checker will return `true` +* If any of the values are `false` or missing, the proofs checker will return `false` + +A few notes about proofs checkers: +* The default proofs checker requires `(key, value)` pairs, where the `key` is a string and the `value` is a boolean. This only pertains to the Chialisp puzzle and the on-chain representation of proofs +* The off-chain metadata may use a different structure to represent the proofs. In order to be W3C conformant, the default VC Structure CHIP will use `(key, value)` pairs, where the `key` and `value` are both strings. This metadata will need to be converted into a structure that the default proofs checker will recognize when processing on-chain proofs +* A different proofs checker with a different structure may also be used. For example, the flags could also include more complex logic, such as `over_18 OR signature_from_parent` + +#### Allowed modifications +Some features outlined in this CHIP could be modified while still conforming to the specification: + +* **On-chain enforcement of VC possession** + * Ideally, in order for a public/private key pair to possess a Restricted CAT, the same key pair must also possess the required VC(s) + * However, by default, Restricted CATs simply require the correct VC to authorize their transfer. There is currently no requirement that the public/private key pair that possesses the VC is the only key pair that may receive a Restricted CAT. A VC could therefore authorize the transfer of a Restricted CAT to a different wallet + * Though the default behavior is not ideal, Restricted CATs will still build a list of VCs that have authorized their transfer. This will create a chain of custody, similar to NFT provenance. In other words, the current on-chain information will ensure auditability, but not enforcement + +* **Restricted CAT revocation** + * Ideally, when a user's VC is revoked, the issuer of the Restricted CATs that require the revoked VC would have the option to remove the Restricted CATs from the user's wallet + * However, by default, the user will continue to hold the Restricted CATs, even after their VC has been revoked. At this point, the user can transfer the Restricted CATs to someone else who holds the appropriate VC. This does mean that in order to purchase Restricted CATs from someone other than the security issuer, a user must trust that the seller was allowed to possess the Restricted CATs being sold + +* **Proofs checker** + * As stated above, the default proofs checker could be replaced with a custom Chialisp puzzle + +## Test Cases +Test cases will be posted here prior to this CHIP's completion. + +## Reference Implementation +The reference implementation for Restricted CATs is located on GitHub, in the [/chia/wallet/vc_wallet](https://github.com/Chia-Network/chia-blockchain/tree/main/chia/wallet/vc_wallet) folder of the `chia-blockchain` repository. + +## Security +There currently are plans to conduct a security audit of the source code from this CHIP. + +## Additional Assets +* [Credential Restriction Puzzle](/assets/chip-0019/credential_restriction_puzzle.png) diagram + +## Copyright +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/assets/chip-0019/credential_restriction_puzzle.png b/assets/chip-0019/credential_restriction_puzzle.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec948fcc9d3c2f6987092f5d0475cd0e2514756 GIT binary patch literal 36720 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
  • aP(U>_)$U1s@aK^`aPfdj!2`T;8Dpocjh*$B-Xs!|#rqeNIU z6ubDKunuJ!i|BF7J=t~xO4gOXC#+c?&z5NEapY5+y}%|r53 z#it&Uz31IwNuR2P0U_<~!P`-j@=T&yo+lv6sc2_>_6$_J zZo@c)wk9AZ`Qn6zh-Ih3iu4bR@R6)D>7?m)8`++Fy_+|?D|JfKBtWtqsYeXC5i-tB zSO^n{g<=FF(KeU5?m~i{D#KaNIg)`Z0Yf#4aan+~-kl{mA}6aXDo71r79sjxzs>>zzUY~iw2JiD#pfqE8t|Hu311!UYKd!wLS|jO2?CX`<10&G z6OSgsR-p0eCd{s}EH|(8249T+V>2(uJl_J((&^(|+#z45`0YWvW7isdh9-k}gJJ}o zCWW{Ls|2N1ww>DR+9HB(%UhB|%v|)f3#@e)%ng+bUxU&LL3$01x8jKa21RPvmy0kJ zomq9=TT|-8jvCNac<_1@zsxpn2bNFH(vSGm6n&r9vdpEeL0Z?A7FD?Zjy$(BAxdXU z&}3UpwyyVy1~D!lW`%!;9NNGvh=F(I(NI~EEqp#}a?-WxaBDqLwMMycAB|AIm}r)B z(5|o!rOCMQIOa4b1?FT?5A3txG7dAm7Ba#>h2eF-7ljnS#l=2je;Q<%Nyxim%<8O# zv!L$1yMf-<;_JX{Z7Gyy4XKK;aI;kQNn2kg_Dr}SD?Xy$%zl`6oLdLo?A~K{IBnz@ z#Nmm|_A7_7YAZv?U~cTt2G1zF&YioyQr3WX&%~#y5gD_6D&0@%oc8(YI^nnOeumkGv3x~Ce$I6XL26*zjJnd;co-HHT z{Hz;HN{x$WBcBo-X>oT}8h1EZe1wWvP0WjgTM7XGj%FRmS63r=U#IItC=X6p-qXDqgOT^?#g+_)D-*k*$+%OPjQvW>NGBLmuxXe%hzJ z?|y3jz#hYT@%^)Tt23xf8i9B}NYM7q2VXw&EZ(S)SZ0F)i6Zqn(BzibYFE>Dwb{jA zTe0)HSG|>2Tk!%?@zKmxtzFduy)5ldr2PXN8_EMf*^VZykp4aKF6oME= z%Q|YR!maXQ8fo0D#OO`K_fb(<^+4?jrnE{D_XpA6@y80XHkDuYy zlAtp38lU;UE?BQrmG4z)TJApOce`O$rNj>g7VxGmbNVf2Th;dbFPSP(*Zdsmmf?p2 zcUr5C4NNI1m##Iu+=*`ORrKCsuVXPwO7J2$7%?++Q(&wwt=&O65?ttue^rNf7cfb ze2`|z4{0|3W)bqg<|z{Hlw1+^Yvt*A$nr!rXrihr!S(6~_TusFOyG5*fKmp%5_RJ! z7Da7gqrN&yXw0S*?wA?whoKLuQD)Qa$}ZI+!`<5R6ZL5qs2kG^p)4@E_eJhutwSRokI!Ey*aIvBo(ly>kC42)NTA9zbQPy~j8h)BYOW z7q+x&YJKH8p+C*f%Y9l#PpZ!l2VPPkG8j{-GCADPD<~5a{2Pyr#{C0DF%j3vs~GDk zONp#@;#zDn!K@l}%R#8`&VEJ} zfO-~PM34)M5nHUb(D1;^C%bP{vgfQfW>Axo?A2@T1ol-Ncmr+J@f#Bo5g)HR&UsbZ z*P>Hm#gXMl7wOv-aUT*q${bcJi)*)hr`B%Eg-YAWwV&RjQ7?tLr=X$zy!8CzGJYkn zV3`IpJBuI&D1~-m=EC2!Y(g`cCQ5y+03SJU+cg`OG)AV4c5v9j;X?2Ook93=5}h$U zAi;5kJL!Y+EBsL$9xg40qY=vFlB;GyGlHXy2hcQ;0D~8~4-4tW+rWIeEv3sCPU#sW z)JP2#`1FE|t4x6osyn{93(iz|jEw0JLFI(Tf0V(D7|X4&Na3jv^d=>CHNg* z2+O|`{!To>5PNjM0C<<~{5*mk_5CR-6ZdU(f^1xTT#@y7?%~qyw+SY-OGhRyj%_2u zeC;$C{DT7%a^2BkO*#U)K>YcEl}TnAl^b3ycA9jlvd(ULd5dr8?UxCseOMbR9GDoJ zyvD|Lc*$RNVWaUfzR|4@?4wm;SI{5F|nVrEfHa>pwlYFenz$hxlx{OM}sh6Z3O$gU2k+#}3 zLS0?<`9fXaw@OT9D0OW!m}1)IYUI`LlLRN|r&XUV3wHI8u#XvIFKv;ndu&u^h>`kd zLq)|i)eOpq5gN)uoC|c5p{PfltTO(ru)l3*dlo3_)~e?Qn@@p1XnbT1FI%uLZ>=~9 z9XMis3Jp8@oF!cD%P>5B9e?(=kqZYluDAkp6DPx8$e;{7*KlW?RJ?E0I%Tkp4M zQ%g&t7(N&8+=`)I@N`XArj)2-xdz?LURCJoEYvXI?XKdeZm>sv3G-RU6!sS`n;_Og zq?H&JXU{m8rOBHXPp&Y=Q7<^M6@SRPkUE~~&s@4_Ba@e^#5956kQD-FcB{bmm zl=6o@xjv=pFB|V@(Wc3TXW!=!!!+$8SbK`a^HsWAx|wwe`I0l&@|3($qazJ5)k3`Q zW*1;rEE#Sm)#{=YZpAPz=it5{h7rO?L~tH`Pa!ix>Thc4_KzTzjt$9Xb>V)Y>!TpR zd;9Wwz8__ty7lO=(gN3{{v)zk%^oVc9(wbhB|5x|_{5-?_|9Fz`7xQ^6e`hOf2b2C z8ajW1kuU}&T&sB74zukyGGi-|sVjQb9W3ni>Sz&NOgR-dhQ~C$BJ1nQrIW1ld`vUq z_@J~k%&u=55=}%kef7n2`c6Isi0bNt{F*6(Otb}1%hBxI>!i!|40H|K>oFW`i>$d zHCi*#ocr2Ae}|kw>>m@VlMP|*SeuzAYyQea9xHZ9YtBV(&aEmX4l#8Tes@#-brL2e ztNGNfCGEnTfbOhsYXgXRh&&6HqAtK3JtrXYrN@!(LJ??uIRlBY{@RY3bv|xaItfZw zcqo>XAf?HSb`&8qkzu5opPqH+iu(3EnKEmnN{=!Bz8NRnFTY(Mozs>&F)Vzu8YjhU z&IwadPh4tWhNumm_I}h9&5*F*8Gu6PffExbxw69P^4C`nm+e$syk{ zhP{eu5@SVHzL7h!43A@6?snwtaqGb+s*q&f>5e01g#RNVBa#9^Xc>~K+d;P6)U9^K zT5lwb7>dmYrt_f2oF|2c;z;?ZI;#ls*SOy# zfxE;=2nYyHEAmN^^=n-9y^i?RHn@pa(e>t`f%#?>`|0LEa$a5dO?bTn-`s{rv1gs( z&-R?!^tVxrN%MdeV#4jxgYT3mhlh%QE+bLfUI@d^q4_vBvOW||QDr5pjq38rh}8XN zMMntL5!lj+yHGsZr;MSnq|dM}LgJ9OSLpJfx2ET~F9O^VG??<3Xczn%znK;P@js*S z5W|K-+~c3J=C>zGz8L7>V%9PPvdEH@tVyI*4AJzzN?CJs(GxU^V#X2i#Uhtvy{ZPtise6@TFJ3OF zxtPQw1RQ@P5KKt)eFDWHrJG0OIDTK{cHp{I8>lp03=TmzL>Tss2}m;p5Fp?j9t^nc z*i!qnOfTx!M^U@1dy&C_e@k(|$(StfGn}VeB>k*SadKjha+Rsn=VWq3VWoP2L%{nG_n*`!Il zWA3ik_48s6k%XTOwJNf+rPZ1%Bs)(wu`mQ~GnE4rRN4|me0X>SHt%ACT1n_5`J~H} z0pv7h(qVzayrt5q>51L$Lbddik)(K`jq6g0LDKlTG@DIdqJkFt zd}P&3N2%UQrhTyfs7nQ`0jhl1yw##zI>~Y7V4e5JnImk`2KW@?x#i$9^jaJr zUTPMj^PV*stO=Yi?2{UyUtdUlJSD+b=K6`v2Hh)5$*6^eH&iIxDryulKcY(C>8b?_ z({#YobamDt=OC7iwwd1S{r2dln#geh=N}4A&4fs;&5V-GG>mjUb~|>^La*dw_v*5n zK${9oL=1Ugp__C`foJTmnv_;Fs?NE3?f;#@&?=SI@ObKy7W+DW-K*SM@WV=5=5UxZ z`!;7GFq>x3X_QZTg^OkwpALo^vT8vVj!)ZO3%84zoQ2>Gocy4e6Qg0(I~J-|Too2p zdql;4gUz=9mxmLc{jtW0ktff*qyLa~z`2*<2l!p!@NhEMtne^xj_IlYCrEITRh@O^ z>ND89ozHdi8oIAB@mkqvVC;wdW9SNgp9dLZOWH|~Y?tqJ^vQ=w2X`eeOr`N~L5fi$ z0|dZUsN+yv?3aN)745 zpS76xCfJq6ypauiuP4mkwACpLDc}R)!zy zD=%_V|HEkpmj#_;l545x3pFH^RXq44|L>ZL9ug95Lk1#6{U2$`uUy@nOi09sL*!E6 zAJzi)iJDMQE60520rRc(s@{hIXH&KFqQ X&^@yniEw%d@Sl{pyjZ!2VbK2r6<06D literal 0 HcmV?d00001 From 1971ffa672c1a7ce432ef0f289d0ed8c02b83300 Mon Sep 17 00:00:00 2001 From: danieljperry Date: Wed, 31 Jan 2024 10:26:49 +0800 Subject: [PATCH 2/2] Moving CHIP-19 to Stagnant status as it has been inactive for over six months --- CHIPs/chip-0019.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHIPs/chip-0019.md b/CHIPs/chip-0019.md index 232af348..ef25ddfe 100644 --- a/CHIPs/chip-0019.md +++ b/CHIPs/chip-0019.md @@ -5,7 +5,7 @@ Description | A standard for implementing Restricted Chia Asset Tokens (CATs) Author | [Matt Hauff](https://github.com/Quexington) Editor | [Dan Perry](https://github.com/danieljperry) Comments-URI | [PR #68](https://github.com/Chia-Network/chips/pull/68) -Status | Draft +Status | Stagnant Category | Standards Track Sub-Category | Chialisp Created | 2023-04-25