Restrict Activate Permission?

+2 votes

A scenario with two running nodes, node 1 is admin (Master), and node 2 is permissioned to connect, send, and receive.

Without Activate permission, node2 can generate permission less addresses.

from node1, I gave node2 the Activate permission to be able to give the proper permissions (Sending, receiving, and connect) to any newly generated address on it (on node2)

but, the Activate permission also permits node2 to alter the wallet Addresses permissions on node1 (Master node) too.

Is there away to restrict node2 from this capability (only allow it to use activate on its own wallet addresses) ?

asked Oct 16, 2020 by Dusares

1 Answer

+2 votes
Best answer

There's no built-in mechanism for this, but you could use a combination of:

  1. Assign a custom permission (e.g. low1) to the addresses on node1 to mark them as special.
  2. Use a transaction filter to only allow addresses with admin permission to change permissions for addresses with this custom permission, rather than addresses with activate permission.
answered Oct 17, 2020 by MultiChain
selected Oct 18, 2020 by Dusares
Ok, I need to read more about custom permissions. and before that, Thank you for the quick reply and advice.

as I understood, currently, nodes (if given the Activate permission) can change their own local addresses and other nodes (excluding now the admin node or excluding addresses under low1 with the proper transaction filter applied)

and, if we connected another node (node3), then node2 and node3 (if given the Activate permission) would be able to manipulate each other (connect, send, receive) permissions?

So, what we need now, is another filter (if applicable) to instruct other nodes (if given the Activate permission and putting aside the admin nodes) the ability to manipulate their own local addresses only……….

It’s like having a multilevel admin permission!

Multichain is distinguished for being a straight forward private chain solution, which is perfect (this is my point of view, and others I’m sure)

But, since sidechains is not applied, at least, we should have a level of control gives the ability to other running nodes to control their own local addresses,
each node is local admin on its wallet, and the administrator node by default will still be the God, Admin, main node.
In general, from the blockchain's perspective, there's no meaning to which particular node owns an address.

If you want to have lots of nodes that only change the permissions for their own addresses, another model could be to create a transaction filter that requires any permission change for address X to also be signed by address X - that way each node will only be able to change the permissions for addresses that it owns the private key for.

You would build the transaction using preparelockunspent for both addresses and an output containing 0, then createrawtransaction with the two UTXOs and an output that makes the permission change for the destination address (see "help addresses-all" via the command line).