# On the Design and Implementation of a Blockchain-Based Data Management System for ETO Manufacturing
## 3 Blockchain network layer (BNL)
### Validation of Process Route  
A process route is a combination of multiple process definitions, and a process is an action or a series of actions performed by production operators or machines to complete a specified task. It is the most basic processing operation for processing materials and assembling products. Ensuring the validity and reliability of production data is the key concern in the data management of manufacturing enterprises. In discrete processing production, to ensure that the production is executed according to the process route, the sequential aggregate signature mechanism is introduced. To facilitate interpretation and improve readability, the relevant notations in the SAS mechanism are listed, as shown in Table 1. The bilinear mapping on the elliptic curve \(e(G1,G2)\to G3\), and the secure hash function \(H(*)\to G1\) and \(h:\left\{0,1\right\}^{*}\rightarrow\left\{0,1\right\}^{n},\) are used in the signature scheme. The SAS scheme designed in [49] is adopted, which extends the BSL03 [48] scheme architecture, including three parts:  
* key generation \(Kg(1^{n})\): the algorithm can generate the signer's key \((pk,sk)\);
* signature \((sk,m)\): this algorithm takes messages m and a secret key \(sk\) as input; it computes a signature \(s=H(m)^{sk}\);
* signature verification \(Vf(m,pk,s)\): if \(e(s,g_{2})==e(H(m),pk)\), then it outputs 1. The general flow chart of the execution of the process route on the production line for a particular product is shown in Figure 4. \begin{table}
\begin{tabular}{c c} \hline \hline
**Notations** & **Description** \\ \hline \(U\)i & The ith node on the production process route. \\ \((pk_{i},sk_{i})\) & Node i’s public and private key pair for signing. \\ \(m_{i}\) & Each process name on the production route. \\ \(e\) & The bilinear mapping on the elliptic curve. \\ \(G_{1},\ G_{2},\ G_{3}\) & Three multiplicative cyclic groups. \\ \(g_{1},\ g_{2}\) & The generators of \(G_{1},\ G_{2}\), respectively. \\ \(H(),h()\) & The secure hash function. \\ _Vef_ () & The signature verification in [48]. \\ SAS\((\sigma,pk,c,s)\) & The sequential aggregate signature in [49]: \(\sigma\) is an aggregate signature; \(c\) is a hash value, and \(s\) is the previous process node’s non-aggregated signature. \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Notation list. For the convenience of description, the execution route of process II marked in red in Figure 5 can be taken as an example. If the process route of the product is set to pass through the production units A, B, and E in sequence, then the signature of the product needs to be generated by orderly aggregation of the signatures of the three production units in the order of A, B, and E. Finally, through the verification of the aggregated signature, it can be checked whether the production process is actually completed through each corresponding production unit in the order of route II. Using \(Kg\) to generate the signature key pair \((pk_{i},sk_{i})\) of three production units \(U\) (NodeA, NodeB, nodeE), the process name \(M\{m_{1},m_{2},m_{3}\}\) of the process route II is set; then, the validation algorithm for sequential execution of processes is shown in Algorithm 1. In each verification step, the production unit Ui receives the aggregate-so-far \(SAS\)(\(\sigma^{\prime},\text{pk}^{\prime},\text{c}^{\prime},\text{s}^{\prime}\)), including an aggregate signature \(\sigma^{\prime}\), the signature public key pk' of the previous process unit, a hash chain value c', and the previous process unit's non-aggregated signature s'. The \(Ui\) first verifies that s' is a valid signature for c' under pk'. If it passes the verification, then \(Ui\) can extend the hash chain for the new process \(m_{i}\). Then, a signature s\({}_{i}\) is generated for the new hash value c\({}_{i}\), and a new aggregated signature \(\sigma_{j}\) is derived by aggregating the signature s\({}_{i}\). Finally, the \(SAS\)(\(\sigma_{i}\), pk\({}_{i}\), \({}_{i}\), s\({}_{i}\)) is forwarded to the next process unit.