Address Permission to Issue Specific Asset?

+2 votes
Everyone can send and receive, Address A is God.

Time T0:
- Address A issues asset X for address B

Time T1:

- Address B has to issue one more asset X for Address C.

The first time T0 is covered already, I'm curious how I could do T1? If I give issue permission to B he can issue anything he wants, right? How can I limit him to only being able to issuemore of that specific address.

I'm treating the possession of X as a certificate of authority. Imagine your house's keys. You can make a copy and gives it to your friend. (Your friend could also do an copy, even tho that's not ideally, but can we prevent it somehow this?)

So, in summary: (1)  How can I limit an address to only being able to issuemore from a token it holds? And also: is there anyway to prohibit others that hold it to issuemore? (2)

I had this idea:
(1): Maybe only those with custom permissions can issue at all and I restrict it using Smart Filters: (a) only high3 can issues, (b) you can only issuemore if you have any balance of that address and (c) you can only transfer your whole asset?
(2) Insert the original owner on the asset's details, and create a Smart Filter that only lets someone issuemore if it matches the owner described in the asset's details that they should have a balance of.

Would those two ideas together work? It does seem so...
asked Jul 30, 2019 by tloriato
edited Jul 30, 2019 by tloriato

1 Answer

+1 vote
Best answer

You can do this quite simply. The permission to issue a new asset is called issue and should only be granted to A. The permission to issue more units of an existing asset is completely separate and is the issue permission for that asset. So if the asset was called asset1 all you need is for address A to grant the permission asset1.issue to address B. You can follow a tutorial about this here:

answered Jul 31, 2019 by MultiChain
selected Aug 1, 2019 by tloriato
While doing so I found a Multichain-Explorer bug due to an uncaught Exception. I tried fixing for a few hours, but arrived a dead-end:
Just a follow up on this, I still haven't figured it out. I'd love some help with this.
Thanks, we will look at this issue in due course.
Sure, thanks "Multichain"!

I spent the last few hours trying to debug and managed to lower the reproducible case to the maximum! I left a comment on the issue.

I realize that this is a "peripheral" project, but if someone could take a look. I believe that the person who wrote that function might be able to realize really quick what's happening given the information I provided. Thank you!