CIP Royalties-777 version 2.0

I just tweeted at some https://twitter.com/hadaloha/status/1493435217716998147
Not sure how else to reach them or who they are.

Hey I’ve been getting an issue with 64character limit. This is a wallet address from a Flint Wallet. Its very long which makes me think I’m missing something. I’m passing the royalties as an array.

Total Characters: 103
addr1qx5grl75evfda265r4emc7t4v3kmktayvfvz[...]xac5crynaghqhp4nfrcwj4ymepygg7cmsdnxnsdr6q8yd03d
{
  "777": {
    "rate": "0.01",
    "addr": [
      "addr1qx5grl75evfda265r4emc7t4v3kmktayvfvz[....]m8xac5crynaghqhp4nfrcwj4ymepygg7cmsdnxnsdr6q8yd03d"
    ]
  }
}

103 characters is exactly the correct length for a delegated address. It does not depend on the wallet app. It is the same for all wallet apps.

To overcome this, addr can be an array. In fact, your example already is an array, albeit one with only one element:

https://github.com/cardano-foundation/CIPs/tree/master/CIP-0027#specification

Just break the address at arbitrary positions to put it in several strings in the array:

{
  "777": {
    "rate": "0.01",
    "addr": [
      "addr1qx5grl75evfda265r4emc7t4v3kmktayvfvz",
      "[....]",
      "m8xac5crynaghqhp4nfrcwj4ymepygg7cmsdnxnsdr6q8yd03d"
    ]
  }
}
1 Like

Oh is this the attempted behavior? I was under the impression that we can set multiple wallets with the same rate. (I’m still wondering how to give different rates to multiple wallets)

.....
    rate: 0.2,
    addr: [addr1, addr2]
.....

I also noticed that the documentation specifies a “payment” address which are indeed 64 character long. This would allow passing multiple “payment” addresses with the same rate that’s why I’m a bit confused. I minted an asset using a payment address for royalties and CNFT.io recognizes the royalties but I haven’t been able to list it. Their system fails with a 500 error. I’m wondering if this is because I’m using a payment address

No, the CIP explicitly says: “It is to include a single payment address.”

You can’t. 777 is to include a single pair of a rate and exactly one address that rate of royalties should go to.

They say: “This payment address could be part of a smart contract, which should allow for greater flexibility of royalties distributions, controlled by the asset creator.” So, you could tell the NFT market places to pay X % to a smart contract and then write the contract in a way that distributes these X % further to different people.

Never heard of anything that specifies the term “payment address” for a Shelley address that does not have a delegation part (which would be 58 characters as far as I can see).

You should be able to use all eight types of Shelley addresses defined in https://github.com/cardano-foundation/CIPs/tree/master/CIP-0019#shelley-addresses as payment address.

I would think that that’s unrelated. There are quite a few reports about cnft.io being pretty unreliable lately.

1 Like

Got it! Makes perfect sense. Thank you for clarifying. I guess I had a coincidence that led me to a confusion. We can just break any address in chunks of 64 characters or less and put them all together as elements of an array.

By the way I took the term “payment” address from cardano cli command, for some reason I thought these may be two different types of addresses.

if you already have a **payment address** and keys and you want to use those ....
cardano-cli address build 

Thank you anyways,

On another subject, is there any other marketplace for cardano besides cnft.io?

1 Like

There are https://www.jpg.store/ and https://tokhun.io/ and maybe even more. Also, the DExes have promised to include NFTs at some point, I think.

Ah, the minting guide?

I found that very confusing, when first reading it, because: “Why the payment address? I already have a lot of addresses that can receive and send payments in my wallets?” I renamed them to mint.skey/.vkey/.addr for my setup.

What I think they want to distinguish there, is the payment key – the one that is loaded with ADA that are spent in the minting – and the policy key – the one that is required to be allowed to mint or burn a token.

I’m building a decentralized nft launchpad, handles your 777 minting, allows creating any scale automated minting campaign, etc., nft-dex being added soon. Alpha is out now. mintedwithlovelace.com

1 Like

Hello! Yea we saw your project! Its very nice too! My team and I we are also building developer tools for minting and more! Check it out! I’m sure we will be able to find something to support each other

Bakrypt.io

Very cool, will take a look!

I hope this standard progresses with more sensibilities, issues I have right now are:

(1) If you stamp in an address into the 777 and you can’t change it. What happens when/if someones wallet/address is compromised in the future or if a hard fork in a few decades results in a new set of addresses? The bad actor will continue to benefit, making hacking an address that can be publicly stated in the 777 metadata makes these a GREAT candidate.
(2) Why can’t the the 777 token placement in a wallet be the marker for the address where the royalty is sent? Yes, a data oracle source would be required by Market Places to keep up to date, but this would resolve the issue of locality.

There really needs to be a way to have the ability to change the royalty percentages in my opinion.

Just my thoughts on this.

I had similar thoughts a few months back and wrote up this proposal for an “extended 777”: MintedWithLovelace/dapp-smartcontracts/global-registry at main · MadeWithLovelace/MintedWithLovelace · GitHub