Pending transaction validation
When a transaction is under validation a process is started to perform the ARCH consensus workflow.
At the beginning of this workflow, a prior validation is done to detect if the transaction is errornous according of several implementations based on the type of the transactions and other criterias.
- Check of the previous signature
- Check if there is smart contract, of its validity
- Check the content size does not exceed the threshold defined in the configuration
- Provide verification based on the transaction type
Smart contract verification
If a transaction contains smart contract, it needs to verify certains things to be sure the smart contract is valid and the nodes will be able to interpret the contract, for example:
- Parse the contract and determines its validity
- If an ownership and its secret have been encoded for the node shared storage nonce public key, so they will be able create new transaction on the chain
Transaction type verification
Node transaction verification
Before to join the network, node must submit a transaction with a type "node". The following checks are performed:
- Decoding of the transaction's content
- Assert the origin key is authorized along with the certification. (See Hardware Root of Trust)
- Check if there are not already existing nodes with the same ip, port and public key
Node shared secrets transaction verification
Periodically the nodes submit a renewal of node shared secrets through a transaction. The following checks are performed:
- Decoding of the transactio's content
- Check is the new authorized node proposed are available
Token transaction verification
To create a new asset (Token), a transaction with a type "token" is submitted to the network.
The nodes asserts the content of the Token transactions respects the formatting to be able for the node to interpret it and mint tokens.
Oracle transaction verification
When the OracleChain polled some external data and build a transaction to propose the new changes, the nodes will assert the content from the services data are correct regarding the service SLA. (See OracleChain Service)
OracleSummary transaction verification
Periodically, after a cycle/epoch, the nodes submit a transaction which summarizes the entire oracle chain data for this epoch. Then the nodes have to assert the changes through:
- Fetching the entire oracle chain for this epoch
- Assert the aggregated content in the oracle chain summary matches the data from all the transaction in the oracle chain
Code proposal transaction verification
When a new upgrade of the network is proposed, a transaction embeds the changes and is sent to the network. (See: On-Chain Governance
The following checks are performed:
- Decoding the proposal changes (like Git patch)
- Assert the validity of the changes: format, conformity with the latest Git commit
Code approval transaction verification
When an updated have been proposed, technical commitee member can vote for a proposal, then a transaction is sent. (See: On-Chain Governance)
The following checks are performed:
- Check if the approver is a member of the technical commitee,
- Check if the proposal exists
- Check if the proposal hasn't been signed by the approver earlier