Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ARC-0077 Smart Contract SoulBound Tokens #242

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 111 additions & 0 deletions ARCs/arc-0077.md
Original file line number Diff line number Diff line change
@@ -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/242
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) 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. 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

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 <a href="https://www.ietf.org/rfc/rfc2119.txt">RFC-2119</a>.

### 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 <a href="https://eips.ethereum.org/EIPS/eip-5484">ERC-5484</a>.

### 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 is 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 <a href="https://creativecommons.org/publicdomain/zero/1.0/">CCO</a>.