owned this note
owned this note
Published
Linked with GitHub
**This article is marged to [nem2-docs](https://nemtech.github.io/)**
# Catapult Model
## Models
### Verifiable Entity
#### Verifiable Entity
|Key|Type|
|---|---|
|signature|binary|
|signer|binary|
### Block
#### Block Header
|Key|Type|
|---|---|
|height|uint64|
|timestamp|uint64|
|difficulty|uint64|
|previousBlockHash|binary|
|blockTransactionsHash|binary|
|stateHash|binary|
#### Block Header Metadata
|Key|Type|schemaName|
|---|---|---|
|hash|binary|-|
|generationHash|binary|-|
|totalFee|uint64|-|
|subCacheMerkleRoots|arrary|binary|
#### Block Header with Metadata
|Key|Type|schemaName|
|---|---|---|
|meta|object|blockHeaderMetadata|
|block|object|blockHeader|
#### Merkel Proof Info
|Key|Type|schemaName|
|---|---|---|
|merklePath|array|merkleProofInfoPathNode|
#### Merkel Proof Info Path Node
|Key|Type|
|---|---|
|hash|binary|
### Transaction
#### Transaction
|Key|Type|
|---|---|
|deadline|uint64|
|fee|uint64|
#### Transaction Metadata
|Key|Type|
|---|---|
|aggregateHash|binary|
|aggregateId|objectId|
|id|objectId|
|height|uint64|
|hash|binary|
|merkleComponentHash|binary|
#### Transaction with Metadata
|Key|Type|schemaName|
|---|---|---|
|meta|object|transactionMetadata|
|transaction|object|undefined|
### Transaction Status
#### Transaction Status
|Key|Type|
|---|---|
|hash|binary|
|status|statusCode|
|deadline|uint64|
|height|uint64|
### Account
#### Account
|Key|Type|schemaName|
|---|---|---|
|address|binary|-|
|addressHeight|uint64|-|
|publicKey|binary|-|
|publicKeyHeight|uint64|-|
|importance|uint64|-|
|importanceHeight|uint64|-|
|mosaics|array|mosaic|
#### Mosaic
|Key|Type|
|---|---|
|id|uint64|
|amount|uint64|
#### Account Metadata
- Empty
#### Account With Metadata
|Key|Type|schemaName|
|---|---|---|
|meta|object|accountMetadata|
|account|object|account|
### Other
#### Chain Info
|Key|Type|
|---|---|
|height|uint64|
|scoreLow|uint64|
|scoreHigh|uint64|
#### Node Info
|Key|Type|
|---|---|
|friendName|string|
|host|string|
|publicKey|binary|
#### Communication Timestamps
|Key|Type|
|---|---|
|receiveTimestamp|uint64|
|sendTimestamp|uint64|
#### Node Time
|Key|Type|schemaName|
|---|---|---|
|communicationTimestamps|object|communicationTimestamps|
#### Storage Info
- Empty
### Account Properties
#### modificationType Schema
|Key|Type|schemaName|
|---|---|---|
|modifications|array|accountProperties.modificationType|
#### accountProperties.modificationType
|Key|Type|
|---|---|
|value|binary|
#### accountProperties.accountProperties
|Key|Type|schemaName|
|---|---|---|
|address|binary|-|
|properties|array|accountProperties.accountProperty|
#### accountProperties.accountProperty
|Key|Type|
|---|---|
|value|binary|
### Aggregate
#### Aggregate Schema
|Key|Type|schemaName|
|---|---|---|
|transactions|array|transactionWithMetadata|
|cosignatures|array|aggregate.cosignature|
#### aggregate.cosignature
|Key|Type|
|---|---|
|signer|binary|
|signature|binary|
|parentHash|binary|
### Lock
#### commonLockInfo Schema
|Key|Type|
|---|---|
|account|binary|
|accountAddress|binary|
|mosaicId|uint64|
|amount|uint64|
|height|uint64|
#### commonLockTransaction Schema
|Key|Type|
|---|---|
|mosaicId|uint64|
|amount|uint64|
|duration|uint64|
#### hashLockInfo
|Key|Type|schemaName|
|---|---|---|
|lock|object|hashLockInfo.lock|
#### hashLockInfo.lock
|Key|Type|
|---|---|
|hash|binary|
#### secretLockInfo
|Key|Type|schemaName|
|---|---|---|
|lock|object|secretLockInfo.lock|
#### secretLockInfo.lock
|Key|Type|
|---|---|
|secret|binary|
|recipient|binary|
### mosaic
#### mosaicDefinition.mosaicProperty
|Key|Type|
|---|---|
|value|uint64|
#### mosaicDescriptor
|Key|Type|schemaName|
|---|---|---|
|meta|object|transactionMetadata|
|mosaic|object|mosaicDescriptor.mosaic|
#### mosaicDescriptor.mosaic
|Key|Type|schemaName|
|---|---|---|
|mosaicId|uint64|-|
|supply|uint64|-|
|height|uint64|-|
|owner|binary|-|
|properties|arrary|ModelType.uint64|
### multisig
#### modifyMultisigAccount.modification
|Key|Type|
|---|---|
|cosignatoryPublicKey|binary|
#### multisigEntry
|Key|Type|schemaName|
|---|---|---|
|multisig|object|multisigEntry.multisig|
#### multisigEntry.multisig
|Key|Type|schemaName|
|---|---|---|
|account|binary|-|
|accountAddress|binary|-|
|multisigAccounts|arrary|binary|
|cosignatories|arrary|binary|
#### multisigGraph
|Key|Type|schemaName|
|---|---|---|
|multisigEntries|arrary|multisigEntry|
### namespace
#### namespaceDescriptor
|Key|Type|schemaName|
|---|---|---|
|meta|object|transactionMetadata|
|namespace|object|namespaceDescriptor.namespace|
#### namespaceDescriptor.namespace
|Key|Type|
|---|---|
|level0|uint64|
|level1|uint64|
|level2|uint64|
|parentId|uint64|
|owner|binary|
|ownerAddress|binary|
|startHeight|uint64|
|endHeight|uint64|
#### namespaceNameTuple
|Key|Type|
|---|---|
|namespaceId|uint64|
|name|string|
|parentId|uint64|
### Transfer
#### transfer.message
|Key|Type|
|---|---|
|payload|binary|
## Relationship
### Verifiable Entity
```graphviz
digraph ER{
node[shape=box];
VerifiableEntity;
}
```
### Block
```graphviz
digraph ER{
node[shape=box];
BlockHeaderWithMetaData;
BlockHeader;
BlockHeaderMetadata;
MerkelProofInfo;
MerkelProofInfoPathNode;
{rank=same; BlockHeader BlockHeaderMetadata}
BlockHeaderWithMetaData->BlockHeader[dir="forward",arrowhead="tee"];
BlockHeaderWithMetaData->BlockHeaderMetadata[dir="forward",arrowhead="tee"];
MerkelProofInfo->MerkelProofInfoPathNode[dir="forward",arrowhead="crow"];
}
```
### Transaction
```graphviz
digraph ER{
node[shape=box];
Transaction;
TransactionMetadata;
TransactionWithMetadata;
{rank=same; Transaction TransactionMetadata }
TransactionWithMetadata->Transaction[dir="forward",arrowhead="tee"];
TransactionWithMetadata->TransactionMetadata[dir="forward",arrowhead="tee"];
}
```
### Transaction Status
```graphviz
digraph ER{
node[shape=box];
TransactionStatus;
}
```
### Account
```graphviz
digraph ER{
node[shape=box];
Account;
Mosaic;
AccountMetadata;
AccountWithMetadata;
{rank=same; Account AccountMetadata }
Account->Mosaic[dir="forward",arrowhead="crow"];
AccountWithMetadata->Account[dir="forward",arrowhead="tee"];
AccountWithMetadata->AccountMetadata[dir="forward",arrowhead="tee"];
}
```
### Other
```graphviz
digraph ER{
node[shape=box];
ChainInfo;
NodeInfo;
CommunicationTimestamps;
NodeTime;
StorageInfo
NodeTime->CommunicationTimestamps[dir="forward",arrowhead="tee"]
}
```
### Account Properties
```graphviz
digraph ER{
node[shape=box];
modificationTypeSchema;
ap_modicationType;
ap_accountProperties;
ap_accountProperty;
modificationTypeSchema->ap_modicationType[dir="forward",arrowhead="crow"];
ap_accountProperties->ap_accountProperty[dir="forward",arrowhead="crow"];
}
```
### Aggregate
```graphviz
digraph ER{
node[shape=box];
AggregateSchema;
ag_cosignature;
transactionWithMetadata;
AggregateSchema->ag_cosignature[dir="forward",arrowhead="crow"];
AggregateSchema->transactionWithMetadata[dir="forward",arrowhead="crow"]
}
```
### Lock
```graphviz
digraph ER{
node[shape=box];
commonLockInfoSchema;
commonLockTransactionSchema;
hashLockInfo;
hashLockInfo_lock;
secretLockInfo;
secretLockInfo_lock;
hashLockInfo->hashLockInfo_lock[dir="forward",arrowhead="tee"];
secretLockInfo->secretLockInfo_lock[dir="forward",arrowhead="tee"]
}
```
### Mosaic
```graphviz
digraph ER{
node[shape=box];
mosaicDefinition_mosaicProperty;
mosaicDescriptor;
mosaicDescriptor_mosaic;
mosaicDescriptor->mosaicDescriptor_mosaic[dir="forward",arrowhead="tee"];
mosaicDescriptor->transactionMetadata[dir="forward",arrowhead="tee"]
}
```
### Multisig
```graphviz
digraph ER{
node[shape=box];
modifyMultisigAccount_Modification;
multisigEntry;
multisigEntry_multisig;
multisigGraph;
multisigEntry->multisigEntry_multisig[dir="forward",arrowhead="tee"];
multisigGraph->multisigEntry[dir="forward",arrowhead="crow"];
}
```
### Namespace
```graphviz
digraph ER{
node[shape=box];
namespaceDescriptor;
namespaceDescriptor_namespace;
namespaceNameTuple;
namespaceDescriptor->transactionMetadata[dir="forward",arrowhead="tee"];
namespaceDescriptor->namespaceDescriptor_namespace[dir="forward",arrowhead="tee"];
}
```
### Transfer
```graphviz
digraph ER{
node[shape=box];
transfer_message;
}
```
## EntityType
|EntityType|value|
|---|---|
|transfer|0x4154|
|registerNamespace|0x414E|
|aliasAddress|0x424E|
|aliasMosaic|0x434E|
|mosaicDefinition|0x414D|
|mosaicSupplyChange|0x424D|
|mosaicLevyChange|0x434D|
|modifyMultisigAccount|0x4155|
|aggregateComplete|0x4141|
|aggregateBonded|0x4241|
|hashLock|0x4148|
|secretLock|0x4152|
|secretProof|0x4252|
|accountPropertiesAddress|0x4150|
|accountPropertiesMosaic|0x4250|
|accountPropertiesEntityType|0x4350|
|accountLink|0x414C|
## Network Info
|NetworkType|value|
|---|---|
|mijin|0x60|
|mijinTest|0x90|
|public|0x68|
|publicTest|0x98|
## Status
|status|value|
|---|---|
|Success|0x00000000|
|Neutral|0x40000000|
|Failure|0x80000000|
|Failure_Core_Past_Deadline|0x80430003|
|Failure_Core_Future_Deadline|0x80430004|Failure_Core_Insufficient_Balance|0x80430005|
|Failure_Core_Timestamp_Too_Far_In_Future|0x8043000A|
|Failure_Core_Too_Many_Transactions|0x8043000F|
|Failure_Core_Nemesis_Account_Signed_After_Nemesis_Block|0x80430012|
|Failure_Core_Wrong_Network|0x80430014|
|Failure_Core_Invalid_Address|0x80430015|
|Failure_Core_Block_Harvester_Ineligible|0x80430069|
|Failure_Hash_Exists|0x81480007|
|Failure_Signature_Not_Verifiable|0x80530008|
|Failure_Aggregate_Too_Many_Transactions|0x80410001|
|Failure_Aggregate_No_Transactions|0x80410002|
|Failure_Aggregate_Too_Many_Cosignatures|0x80410003|
|Failure_Aggregate_Redundant_Cosignatures|0x80410004|
|Failure_Aggregate_Ineligible_Cosigners|0x80411001|
|Failure_Aggregate_Missing_Cosigners|0x80411002|
|Failure_Lock_Invalid_Hash_Algorithm|0x804C0001|
|Failure_Lock_Invalid_Mosaic_Id|0x804C0002|
|Failure_Lock_Invalid_Mosaic_Amount|0x804C0003|
|Failure_Lock_Hash_Exists|0x804C0004|
|Failure_Lock_Hash_Does_Not_Exist|0x804C0005|
|Failure_Lock_Missing_Secret_Padding|0x804C0006|
|Failure_Lock_Hash_Not_Implemented|0x804C0007|
|Failure_Lock_Proof_Size_Out_Of_Bounds|0x804C0008|
|Failure_Lock_Secret_Mismatch|0x804C0009|
|Failure_Lock_Unknown_Secret|0x804C000A|
|Failure_Lock_Inactive_Hash|0x804C000B|
|Failure_Lock_Inactive_Secret|0x804C000C|
|Failure_Lock_Hash_Algorithm_Mismatch|0x804C000D|
|Failure_Lock_Hash_Already_Used|0x804C000E|
|Failure_Lock_Secret_Already_Used|0x804C000F|
|Failure_Lock_Invalid_Duration|0x804C0010|
|Failure_Multisig_Modify_Account_In_Both_Sets|0x80550001|
|Failure_Multisig_Modify_Multiple_Deletes|0x80550002|
|Failure_Multisig_Modify_Redundant_Modifications|0x80550003|
|Failure_Multisig_Modify_Unknown_Multisig_Account|0x80550004|
|Failure_Multisig_Modify_Not_A_Cosigner|0x80550005|
|Failure_Multisig_Modify_Already_A_Cosigner|0x80550006|
|Failure_Multisig_Modify_Min_Setting_Out_Of_Range|0x80550007|
|Failure_Multisig_Modify_Min_Setting_Larger_Than_Num_Cosignatories|0x80550008|
|Failure_Multisig_Modify_Unsupported_Modification_Type|0x80550009|
|Failure_Multisig_Modify_Max_Cosigned_Accounts|0x8055000A|
|Failure_Multisig_Modify_Max_Cosigners|0x8055000B|
|Failure_Multisig_Modify_Loop|0x8055000C|
|Failure_Multisig_Modify_Max_Multisig_Depth|0x8055000D|
|Failure_Multisig_Operation_Not_Permitted_By_Account|0x80550800|
|Failure_Namespace_Invalid_Duration|0x804E0001|
|Failure_Mosaic_Invalid_Duration|0x804D0001|
|Failure_Namespace_Invalid_Name|0x804E0002|
|Failure_Mosaic_Invalid_Name|0x804D0002|
|Failure_Namespace_Name_Id_Mismatch|0x804E0003|
|Failure_Mosaic_Name_Id_Mismatch|0x804D0003|
|Failure_Namespace_Expired|0x804E0004|
|Failure_Mosaic_Expired|0x804D0004|
|Failure_Namespace_Owner_Conflict|0x804E0005|
|Failure_Mosaic_Owner_Conflict|0x804D0005|
|Failure_Namespace_Invalid_Namespace_Type|0x804E0064|
|Failure_Namespace_Root_Name_Reserved|0x804E0065|
|Failure_Namespace_Too_Deep|0x804E0066|
|Failure_Namespace_Parent_Unknown|0x804E0067|
|Failure_Namespace_Already_Exists|0x804E0096|
|Failure_Namespace_Already_Active|0x804E0097|
|Failure_Namespace_Eternal_After_Nemesis_Block|0x804E0098|
|Failure_Mosaic_Parent_Id_Conflict|0x804D0064|
|Failure_Mosaic_Invalid_Property|0x804D0065|
|Failure_Mosaic_Invalid_Flags|0x804D0066|
|Failure_Mosaic_Invalid_Divisibility|0x804D0067|
|Failure_Mosaic_Invalid_Supply_Change_Direction|0x804D0068|
|Failure_Mosaic_Invalid_Supply_Change_Amount|0x804D0069|
|Failure_Mosaic_Name_Reserved|0x804D006A|
|Failure_Mosaic_Modification_Disallowed|0x804D0096|
|Failure_Mosaic_Modification_No_Changes|0x804D0097|
|Failure_Mosaic_Supply_Immutable|0x804D00A1|
|Failure_Mosaic_Supply_Negative|0x804D00A2|
Failure_Mosaic_Supply_Exceeded|0x804D00A3|
|Failure_Mosaic_Non_Transferable|0x804D00A4|
|Failure_Transfer_Message_Too_Large|0x80540006|
|Failure_Transfer_Out_Of_Order_Mosaics|0x805400C8|
|Failure_Chain_Unlinked|0x80FF0066|
|Failure_Chain_Block_Not_Hit|0x80FF0068|
|Failure_Consumer_Empty_Input|0x80FE0001|
|Failure_Consumer_Block_Transactions_Hash_Mismatch|0x80FE1001|
|Failure_Consumer_Hash_In_Recency_Cache|0x81FE1002|
|Failure_Consumer_Remote_Chain_Too_Many_Blocks|0x80FE2001|
|Failure_Consumer_Remote_Chain_Improper_Link|0x80FE2002|
|Failure_Consumer_Remote_Chain_Duplicate_Transactions|0x80FE2003|
|Failure_Consumer_Remote_Chain_Unlinked|0x80FE3001|
|Failure_Consumer_Remote_Chain_Mismatched_Difficulties|0x80FE3002|
|Failure_Consumer_Remote_Chain_Score_Not_Better|0x80FE3003|
|Failure_Consumer_Remote_Chain_Too_Far_Behind|0x80FE3004|
|Failure_Extension_Partial_Transaction_Cache_Prune|0x80450101|
|Failure_Extension_Partial_Transaction_Dependency_Removed|0x80450102|
## refs
- https://github.com/nemtech/catapult-rest/blob/master/catapult-sdk/src/model
- https://github.com/nemtech/catapult-rest/tree/master/catapult-sdk/src/plugins
###### tags: `nem` `catapult`