From 72daa973d568672cb42465dfbac1b324c153faef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Fri, 8 Sep 2023 15:23:35 +0200 Subject: [PATCH 1/2] Create arc-0077.md --- ARCs/arc-0077.md | 111 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 ARCs/arc-0077.md diff --git a/ARCs/arc-0077.md b/ARCs/arc-0077.md new file mode 100644 index 000000000..c614e2dc1 --- /dev/null +++ b/ARCs/arc-0077.md @@ -0,0 +1,111 @@ +--- +arc: 77 +title: Smart Contract Consensual Soulbound Tokens +description: Interface for Application NFTs with immutable ownership and immutable burn authorization +author: Stephane BARROSO (@SudoWeezy) +discussions-to: https://github.com/algorandfoundation/ARCs/issues/240 +status: Draft +type: Standards Track +category: Interface +created: 2023-09-08 +requires: 72 +--- + +# Algorand Smart Contract Soul Bound Application NFT Specification + +## Abstract + +This ARC defines an interface extending [ARC-72](arc-0072.md) to create soulbound tokens. Before issuance, both parties (the issuer and the receiver), have to agree on who has the authorization to burn this token. Burn authorization is immutable after declaration. After its issuance, a soulbound token can’t be transferred, but can be burned based on a predetermined immutable burn authorization. + +## Motivation + +This ARC envisions soulbound tokens as specialized Smart Contract NFTs that will play the roles of credentials, credit records, loan histories, memberships, and many more. In order to provide the flexibility in these scenarios, soulbound tokens must have an application-specific burn authorization and a way to distinguish themselves from regular ARC-72 tokens. + +## Specification + +The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in RFC-2119. + +### Core Token specification + +A smart contract token that is compliant with this standard MUST implement the following interface: + +```json +{ + "name": "ARC-77", + "desc": "Smart Contract Token Base Interface", + "methods": [ + { + "name": "arc77_burnAuth", + "desc": "provides burn authorization of the token id", + "readonly": true, + "args": [ + { + "type": "uint256", + "name": "tokenId", + "desc": "The identifier for a token" + } + ], + "returns": { "type": "address", "desc": "BurnAuth" } + } + ], + "events": [ + { + "name": "arc77_Issued", + "desc": "Emitted when a soulbound token is issued.", + "args": [ + { + "type": "address", + "name": "from", + "desc": "The source of transfer of tokens" + }, + { + "type": "address", + "name": "to", + "desc": "The destination of transfer of tokens" + }, + { + "type": "uint256", + "name": "tokenId", + "desc": "The id of the issued token" + }, + { + "type": "address", + "name": "burnAuth", + "desc": "Burn authorization Address of the token" + } + ] + } + ] +} +``` + +On issuing, an `arc77_Issued` event will be emitted alongside `arc72_Transfer` event. This design will give clear signals to thrid-parties that this is a soulBound token issuance event. + +All methods in this standard that are marked as `readonly` MUST be read-only as defined by [ARC-22](./arc-0022.md). + +## Rationale + +This specification is based on ERC-5484. + +### Soulbound Token (SBTs) as an extension to ARC-72 +Soulbound token serves as a specialized subset of the existing ARC-72 tokens. Service providers can treat SBTs like ARC-72's NFTs. + +### Transferability + +The burnAuth method allows third parties to check before calling transfer. + +### Core Specification + +The core specification identical to ARC-72. + +## Backwards Compatibility + +This proposal is fully backward compatible with ARC-72. + +## Security Considerations + +There are no security considerations related directly to the implementation of this standard. + +## Copyright + +Copyright and related rights waived via CCO. From 08fdfe7215224519499e9663b17b3221861f7e14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Fri, 8 Sep 2023 16:05:21 +0200 Subject: [PATCH 2/2] Fix Wording --- ARCs/arc-0077.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ARCs/arc-0077.md b/ARCs/arc-0077.md index c614e2dc1..08aa762da 100644 --- a/ARCs/arc-0077.md +++ b/ARCs/arc-0077.md @@ -3,7 +3,7 @@ arc: 77 title: Smart Contract Consensual Soulbound Tokens description: Interface for Application NFTs with immutable ownership and immutable burn authorization author: Stephane BARROSO (@SudoWeezy) -discussions-to: https://github.com/algorandfoundation/ARCs/issues/240 +discussions-to: https://github.com/algorandfoundation/ARCs/issues/242 status: Draft type: Standards Track category: Interface @@ -15,11 +15,11 @@ requires: 72 ## Abstract -This ARC defines an interface extending [ARC-72](arc-0072.md) to create soulbound tokens. Before issuance, both parties (the issuer and the receiver), have to agree on who has the authorization to burn this token. Burn authorization is immutable after declaration. After its issuance, a soulbound token can’t be transferred, but can be burned based on a predetermined immutable burn authorization. +This ARC defines an interface extending [ARC-72](arc-0072.md) to create soulbound tokens. Before issuance, both parties (the issuer and the receiver) must agree on who has the authorization to burn this token. Burn authorization is immutable after declaration. After its issuance, a soulbound token cannot be transferred but can be burned based on a predetermined immutable burn authorization. ## Motivation -This ARC envisions soulbound tokens as specialized Smart Contract NFTs that will play the roles of credentials, credit records, loan histories, memberships, and many more. In order to provide the flexibility in these scenarios, soulbound tokens must have an application-specific burn authorization and a way to distinguish themselves from regular ARC-72 tokens. +This ARC envisions soulbound tokens as specialized Smart Contract NFTs that will play the roles of credentials, credit records, loan histories, memberships, and many more. To provide flexibility in these scenarios, soulbound tokens must have an application-specific burn authorization and a way to distinguish themselves from regular ARC-72 tokens. ## Specification @@ -96,7 +96,7 @@ The burnAuth method allows third parties to check before calling transfer. ### Core Specification -The core specification identical to ARC-72. +The core specification is identical to ARC-72. ## Backwards Compatibility