Skip to content

Add asset comparison#2174

Open
janewang wants to merge 26 commits intomainfrom
comparison
Open

Add asset comparison#2174
janewang wants to merge 26 commits intomainfrom
comparison

Conversation

@janewang
Copy link
Contributor

@janewang janewang commented Jan 7, 2026

No description provided.

@stellar-jenkins
Copy link

6 similar comments
@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

1 similar comment
@stellar-jenkins
Copy link

@janewang janewang requested a review from tomerweller January 12, 2026 19:43
@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

Copy link
Member

@leighmcculloch leighmcculloch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some thoughts inline, the main one being I think we are introducing the "classic" term here unnecessarily. This change looks like both a refactor and new information about SEP-57.

Copilot AI review requested due to automatic review settings January 23, 2026 19:55
@stellar-jenkins
Copy link

1 similar comment
@stellar-jenkins
Copy link

Copy link
Contributor

@ElliotFriend ElliotFriend left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

couple tiny nitpicks, and a more significant question about the note at the bottom of the table.

great additions!!

| **Source Code** | [Built-in Stellar Asset Contract](https://github.com/stellar/rs-soroban-env/tree/main/soroban-env-host/src/builtin_contracts) | [OpenZeppelin Fungible Token reference](https://github.com/OpenZeppelin/stellar-contracts/tree/main/packages/tokens/src/fungible) | [OpenZeppelin T-REX (RWA token) reference](https://github.com/OpenZeppelin/stellar-contracts/tree/main/packages/tokens/src/rwa) |
| **Relevant SEPs** | [SEP-0001 (Stellar Info File)][sep-1] <br /><br /> [SEP-0014 (Dynamic Asset Metadata)][sep-14] <br /><br />[SEP-41 (Soroban Token Interface)][sep-41] | [SEP-41 (Soroban Token Interface)][sep-41] | [SEP-41 (Soroban Token Interface)][sep-41] <br /><br /> [SEP-0057 (T-REX / Token for Regulated EXchanges)][sep-57] |

_\* By assigning a smart contract (`C...` address) as the owner of a Stellar Asset Contract, balances and transfer rules can be fully managed within the contract. This removes the need for trustlines, as balances are hold in the contract storage._
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is true, as written. At least, it the way it reads to me feels inaccurate. This sounds like a G... account holding an asset wouldn't need a trustline if the asset's SAC has a C... address admin.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is what @leighmcculloch had suggested

Copy link
Member

@leighmcculloch leighmcculloch Feb 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The admin can manage minting. In protocol 26 G accounts in contract land can also manage their own trust lines.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@leighmcculloch We probably should clarify this is coming in protocol 26.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Protocol 26 does not get rid of the trustlines though, and there is still going to be friction in using them. Trustlines also have nothing to do with the admin, do they? I.e. surely a contract can mint token, but that doesn't allow it the requirement for a G-account receiver to have a trustline.

Copy link
Contributor Author

@janewang janewang Feb 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dmkozh We have two viable models of managing this asset correct? Using a C… address as the admin over SAC balances, or a G… address to manage classic asset balances through trustlines. Managing with C... address gives you that composability where the admin can be another contract. Anything else I could add?

Copy link
Member

@leighmcculloch leighmcculloch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some feedback inline.

janewang and others added 8 commits February 4, 2026 17:29
Co-authored-by: Leigh <351529+leighmcculloch@users.noreply.github.com>
Co-authored-by: Elliot Voris <elliot@stellar.org>
Co-authored-by: Elliot Voris <elliot@stellar.org>
Co-authored-by: Leigh <351529+leighmcculloch@users.noreply.github.com>
Co-authored-by: Leigh <351529+leighmcculloch@users.noreply.github.com>
Co-authored-by: Leigh <351529+leighmcculloch@users.noreply.github.com>
Co-authored-by: Leigh <351529+leighmcculloch@users.noreply.github.com>
Co-authored-by: Leigh <351529+leighmcculloch@users.noreply.github.com>
@stellar-jenkins
Copy link

7 similar comments
@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

Co-authored-by: Leigh <351529+leighmcculloch@users.noreply.github.com>
| **Source Code** | [Built-in Stellar Asset Contract](https://github.com/stellar/rs-soroban-env/tree/main/soroban-env-host/src/builtin_contracts) | [OpenZeppelin Fungible Token reference](https://github.com/OpenZeppelin/stellar-contracts/tree/main/packages/tokens/src/fungible) | [OpenZeppelin T-REX (RWA token) reference](https://github.com/OpenZeppelin/stellar-contracts/tree/main/packages/tokens/src/rwa) |
| **Relevant SEPs** | [SEP-0001 (Stellar Info File)][sep-1] <br /><br /> [SEP-0014 (Dynamic Asset Metadata)][sep-14] <br /><br />[SEP-41 (Soroban Token Interface)][sep-41] | [SEP-41 (Soroban Token Interface)][sep-41] | [SEP-41 (Soroban Token Interface)][sep-41] <br /><br /> [SEP-0057 (T-REX / Token for Regulated EXchanges)][sep-57] |

_\* By assigning a smart contract (`C...` address) as the owner of a Stellar Asset Contract, balances and transfer rules can be fully managed within the contract. This removes the need for trustlines, as balances are hold in the contract storage._
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Protocol 26 does not get rid of the trustlines though, and there is still going to be friction in using them. Trustlines also have nothing to do with the admin, do they? I.e. surely a contract can mint token, but that doesn't allow it the requirement for a G-account receiver to have a trustline.


## Tokenization Model Comparison

| Dimension | Stellar Asset (with SAC) | SEP-41 Contract Token | ERC-3643 (T-REX) |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

General note: I know that we're trying to avoid 'Soroban' in the docs for the most part and use just 'smart contracts'/'Stellar smart contracts' etc. I don't have a strong preference here, but just wanted to bring this up for consideration.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call, okay will globally replace

### Tradeoffs

- Accounts must have an active trustline to receive, hold, and transact.
- Trustlines cannot be added programmatically through contract invocations, limiting support for assets that rely on bridging or chain abstraction patterns.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • until protocol 26

Though the most important thing about trustline is really that they require explicit user authorization.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dmkozh do you have a write up on what's coming from protocol 26 that we could catch up on?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

### Benefits of the SAC

**Compatibility**
The SAC preserves full compatibility with the existing Stellar asset model, including trustlines, authorization flags, and the Stellar DEX.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Stellar DEX part is kind of misleading, it might be worth specifying that DEX compatibility does not exist for SAC , but exists for the underlying assets via classic operation. That's pretty important, because e.g. C-accounts holding a SAC balance won't have access to DEX.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we just not mention DEX?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think DEX and classic liquidity pools are a valid benefit of classic assets and thus SAC because of liquidity they provide. I just think we could separate these points (i.e. one point is what you have here but without DEX, another point is just additional liquidity thanks to the classic DEX/LPs). But the second point is up to your preference really.

@stellar-jenkins
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants