In ImFact network, there are two types of accounts: multi-signature accounts and single-signature accounts. The primary distinction between these two types of accounts lies in their creation methods.
single-signature account is created by mitum-currency-transfer-operation operation.
While, multi-signature account is created by mitum-currency-create-account-operation or mitum-currency-create-contract-account-operation operation.
Methods that generate single-signature account:
account.createAccount
account.createWallet
account.createBatchWallet
account.key + currency.transfer
Methods that generate multi-signature account:
account.createMultiSig
contract.createAccount
contract.createWallet
Currently, ImFACT allows the creation of multi-signature accounts even with just one account, which differs from the typical multiSig accounts derived from multiple public keys.
While ImFACT offers the multi-signature accounts in the conventional sense as well, the concept of multiSig accounts in Mitum can be considered as more "extended."
You don't need to dwell too deeply on this. The differences observed at the ImFACT network between single-signature and multi-signature accounts created through the aforementioned methods are summarized in the table below.
Single vs Multi signature account Comparison
Attribute
Single-Sig Account
Multi-Sig account
Creation Operation Type
transfer-operation
create-account-operation or create-contract-account-operation
Public Key
Not applicable.
Utilized.
Query By Public Key
Account cannot be queried via getByPublicKey (data returns null).
Account can be queried via getByPublicKey. (Not for CA)
Account Information
When queried via getAccountInfo, data.keys.keys is null.
When queried via getAccountInfo, data.keys.keys contains an array of public keys. (Empty array for CA)