Public and Private Blockchains
Iroha can run in a variety of configurations. As the administrator of your own network, you decide which executor and permission policy determine whether a transaction is accepted.
The common profiles are private permissioned networks and more open public networks. Both are configured through genesis state and executor policy, not through separate node binaries.
Below we outline the major differences in these two use cases.
Permissions
In a public blockchain, most accounts have the same set of permissions. In a private blockchain, each account receives only its explicit permissions.
INFO
Refer to the dedicated section on permissions for more details.
Peers
In a public blockchain, peer admission is part of chain policy. For a private blockchain, deployments usually pin the trusted peer set in configuration and genesis.
INFO
Refer to peer management for more details.
Registering accounts
Depending on how you decide to set up your genesis block (genesis.json), the process for registering an account might go one of two ways. To understand why, let's talk about permission first.
The selected executor defines which permission checks apply. You can grant the default permission tokens in genesis to shape a private, administrator-managed network or a more open network. Once those permissions are active, the process of registering accounts is different.
Public and private registration policies usually differ:
A public registration policy accepts account registrations from any eligible user[1]. The user needs a suitable client, a private key for a supported algorithm, and a registration request accepted by policy.
A private registration policy can authorize one account or one smart contract to submit registrations. A custom policy can limit registration to a time window. It can also require the submitter to spend a token whose supply is fixed because no authority has permission to mint more.
With the default private-network pattern, an existing account submits the registration for each new account.
The default permission validators cover the typical private blockchain use case.
INFO
Public and private modes are executor and genesis policy choices. Both use the same node binary. Review the selected executor and genesis permissions before running an open network.
Refer to the section on instructions for more details about Register<Account> instructions.
Register<Account>creates ledger state for a canonical, domainlessAccountId; domain routing and aliases are managed separately. ↩︎