Detailed Description
Reference will now be made in detail to the exemplary embodiments, examples of which are illustrated in the accompanying drawings. When the following description refers to the accompanying drawings, like numbers in different drawings represent the same or similar elements unless otherwise indicated. The implementations described in the following exemplary embodiments do not represent all implementations consistent with one or more embodiments of the present specification. Rather, they are merely examples of apparatus and methods consistent with certain aspects of one or more embodiments of the specification, as detailed in the claims which follow.
It should be noted that: in other embodiments, the steps of the corresponding methods are not necessarily performed in the order shown and described herein. In some other embodiments, the method may include more or fewer steps than those described herein. Moreover, a single step described in this specification may be broken down into multiple steps for description in other embodiments; multiple steps described in this specification may be combined into a single step in other embodiments.
Blockchains are generally divided into three types: public chain (Public Blockchain), Private chain (Private Blockchain) and alliance chain (Consortium Blockchain). In addition, there are various types of combinations, such as private chain + federation chain, federation chain + public chain, and other different combinations. The most decentralized of these is the public chain. The public chain is represented by bitcoin and ether house, and the participators joining the public chain can read the data record on the chain, participate in transaction, compete for accounting right of new blocks, and the like. Furthermore, each participant (i.e., node) is free to join and leave the network and perform related operations. Private chains are the opposite, with the network's write rights controlled by an organization or organization and the data read rights specified by the organization. Briefly, a private chain can be a weakly centralized system with strictly limited and few participating nodes. This type of blockchain is more suitable for use within a particular establishment. A federation chain is a block chain between a public chain and a private chain, and "partial decentralization" can be achieved. Each node in a federation chain typically has a physical organization or organization corresponding to it; participants jointly maintain blockchain operation by authorizing to join the network and forming a benefit-related alliance.
Whether public, private, or alliance, may provide the functionality of an intelligent contract. An intelligent contract on a blockchain is a contract that can be executed on a blockchain system triggered by a transaction. An intelligent contract may be defined in the form of code.
Taking the ethernet as an example, the support user creates and invokes some complex logic in the ethernet network, which is the biggest challenge of ethernet to distinguish from bitcoin blockchain technology. The core of the ethernet plant as a programmable blockchain is the ethernet plant virtual machine (EVM), each ethernet plant node can run the EVM. The EVM is a well-behaved virtual machine, which means that a variety of complex logic can be implemented through it. The user issuing and invoking smart contracts in the etherhouse is running on the EVM. In fact, what the virtual machine directly runs is virtual machine code (virtual machine bytecode, hereinafter referred to as "bytecode"). The intelligent contracts deployed on the blockchain may be in the form of bytecodes.
For example, as shown in fig. 1, after Bob sends a transaction containing information to create an intelligent contract to the ethernet network, the EVM of node 1 may execute the transaction and generate a corresponding contract instance. The "0 x6f8ae93 …" in fig. 1 represents the address of the contract, the data field of the transaction holds the byte code, and the to field of the transaction is empty. After agreement is reached between the nodes through the consensus mechanism, this contract is successfully created and can be invoked in subsequent procedures. After the contract is created, a contract account corresponding to the intelligent contract appears on the blockchain and has a specific address, and the contract code is stored in the contract account. The behavior of the intelligent contract is controlled by the contract code. In other words, an intelligent contract causes a virtual account to be generated on a blockchain that contains a contract code and an account store (Storage).
As shown in fig. 2, still taking an ethernet house as an example, after Bob sends a transaction for invoking an intelligent contract to the ethernet house network, the EVM of a certain node may execute the transaction and generate a corresponding contract instance. The from field of the transaction in fig. 2 is the address of the account of the transaction initiator (i.e., Bob), the "0 x6f8ae93 …" in the to field represents the address of the smart contract called, and the value field is the value of tai-currency in the etherhouse, and the data field of the transaction holds the method and parameters for calling the smart contract. The intelligent contract is independently executed at each node in the blockchain network in a specified mode, and all execution records and data are stored on the blockchain, so that after the transaction is completed, transaction certificates which cannot be tampered and cannot be lost are stored on the blockchain.
After executing Bob-initiated transaction, a node in the blockchain network generates corresponding receipt (receipt) data for recording receipt information related to the transaction. Taking the ether house as an example, the receipt data obtained by the node executing the transaction may include the following:
a Result field indicating the execution Result of the transaction;
a Gas used field representing a Gas value consumed by the transaction;
a Logs field for representing a Log generated by the transaction, wherein the Log may further comprise a From field for representing an account address of an initiator of the call, a To field for representing an account address of an object (such as a smart contract) To be called, a Topic field for representing a subject of the Log, a Log data field for representing Log data, and the like;
an Output field, representing the Output of the transaction.
Wherein the journal is a function provided in the ether house. During the running process of the code of the intelligent contract, the logs generated by various events contained in the code can be recorded. The log allows the details of the event To be recorded, such as the From field and To field mentioned above can indicate the accounts of both parties involved in the transaction, and the Topic field can contain the values of state variables and the like referenced by the event after the code is executed. Thus, the log can be used to drive related operations in addition to being used as relevant evidence after the transaction is performed on the blockchain. For example, a callback function of JavaScript may be used to listen to an event, and a corresponding log may be generated when the event is triggered, so that by retrieving log content, a DAPP (Decentralized Application) client may be driven to perform a related processing operation when retrieving preset log content, and the like.
In the related art, the entire contents of receipt data generated within a TEE are stored on a blockchain as data requiring privacy protection. The block chain is a data set organized by specific logics stored in a database of nodes. The database, as described later, may be a storage medium, such as a persistent storage medium, in physical carrier. In fact, the privacy protection requirements for receipt data are not the same for different users. For example, a part of users may pay relatively more attention to privacy protection, and then the receipt data generated by the transaction initiated by the user may be stored in a ciphertext form as much as possible; another portion of users may be relatively more interested in data availability, such as a desire to support retrieval operations on receipt data, to drive related processing operations, such as DAPP (Decentralized Application) clients, and the like.
The following describes an implementation process of an embodiment of a receipt storing method combining a user type and an event function type according to the present application with reference to fig. 3:
at step 302, a first block link point receives an encrypted transaction invoking a smart contract.
In one embodiment, a user may generate a transaction directly on a first blockchain node; alternatively, the user may generate a transaction on the client and send the transaction to the first blockchain node through the client; alternatively, the client may send the transaction to the second blockchain node and send the transaction to the first blockchain node by the second blockchain node.
In one embodiment, when a transaction is used to invoke a smart contract, the transaction content may include the account address of the invoked smart contract, the methods and parameters that need to be passed in, and the like.
In an embodiment, by encrypting the transaction content, the encrypted transaction can be in a privacy protection state, and the transaction content is prevented from being exposed. For example, the transaction content may include information such as an account address of the transaction initiator and an account address of the transaction target, and the encryption process may ensure that none of the transaction content can be directly read.
In an embodiment, the transaction may be encrypted by a symmetric encryption algorithm or may be encrypted by an asymmetric encryption algorithm. The encryption algorithm used for symmetric encryption is, for example, DES algorithm, 3DES algorithm, TDEA algorithm, Blowfish algorithm, RC5 algorithm, IDEA algorithm, etc. Examples of asymmetric encryption algorithms are RSA, Elgamal, knapsack Algorithm, Rabin, D-H, ECC (elliptic curve encryption Algorithm), etc.
In one embodiment, the transaction may be encrypted by combining a symmetric encryption algorithm with an asymmetric encryption algorithm. Taking the example that the client submits the transaction to the first blockchain node, the client may encrypt the transaction content using a symmetric encryption algorithm, that is, encrypt the transaction content using a key of the symmetric encryption algorithm, and encrypt the key used in the symmetric encryption algorithm using an asymmetric encryption algorithm, for example, encrypt the key used in the symmetric encryption algorithm using a public key of the asymmetric encryption algorithm. Therefore, after the first block chain node receives the encrypted transaction, the first block chain node can firstly decrypt by using the private key of the asymmetric encryption algorithm to obtain the key of the symmetric encryption algorithm, and then decrypt by using the key of the symmetric encryption algorithm to obtain the transaction content.
When the transaction is used to invoke a smart contract, it may be an invocation of multiple nested structures. For example, a transaction directly calls intelligent contract 1, while the code of intelligent contract 1 calls intelligent contract 2, and the code in intelligent contract 2 points to the contract address of intelligent contract 3, so that the transaction actually indirectly calls the code of intelligent contract 3. The specific implementation process is similar to the above process, and is not described herein again.
At step 304, the first blockchain node decrypts the transaction in the trusted execution environment to obtain the intelligent contract, the intelligent contract comprising a special event function.
In one embodiment, a smart contract may contain one or more events, each event for implementing predefined associated processing logic. After each event included in the intelligent contract is called and executed, a corresponding Logs field is generated, for example, when the intelligent contract includes event 1 and event 2, event 1 may generate a corresponding Logs field, and event 2 may generate a corresponding Logs field, so that the receipt data corresponding to the intelligent contract includes multiple Logs fields at the same time.
In one embodiment, the events contained in the smart contract can be divided into special event functions and general event functions, wherein: for the logs generated by the common event function, the logs are inevitably stored in a ciphertext form so as to realize privacy protection; for the logs generated by the special event function, whether plaintext storage or ciphertext storage exists can be further determined according to the privacy protection requirement of the transaction initiator, namely the possibility of plaintext storage exists in the logs generated by the special event function.
The first block link point may identify the event function included in the smart contract in various ways to determine whether it is a special event function.
For example, the special event function may be a predefined global event function in the blockchain network. For example, in a chain code or a system contract of a block chain network, event functions belonging to a "special event function" may be recorded, for example, in a special event function list; accordingly, by comparing the event function included in the intelligent contract with the above-mentioned special event function list, it can be determined whether the event function included in the intelligent contract is the above-mentioned special event function: if the event function contained in the intelligent contract is in the special event function list, the event function contained in the intelligent contract is judged as a special event function, and if the event function contained in the intelligent contract is not in the special event function list, the event function contained in the intelligent contract is judged as a common event function.
For another example, the special event function may be any function customized in the intelligent contract, and the event function may be marked as a special event function by adding a type identifier for the event function to the code of the intelligent contract. For example, in the Solidity language, the code of the event function included in the smart contract is as follows:
Event buy_candy1expose(who,candy_num);
Event buy_candy2(who,candy_num);
in the code example described above, the smart contract defines 2 events: event buy _ candy1 and event buy _ candy 2. The event buy _ candy1 can be marked as the special event function described above by adding the type identifier "expose" to the event buy _ candy 1; accordingly, since the type identifier "expose" is not included in the event buy _ ready 2, the event buy _ ready 2 is a general event function, not the special event function described above.
Many high-level languages supported by etherhouses, such as Solidity, Serpent, LLL, etc., may contain the type identifier described above. The intelligent contract written in the high-level language can be compiled into a corresponding byte code through a compiler, and the first block link point finally executes the intelligent contract in the form of the byte code in the EVM virtual machine. Then, the type identifiers may be the same in the intelligent contract codes in the high-level language and the bytecode, or the intelligent contract codes in the high-level language may be the first type identifiers and the intelligent contract codes in the bytecode may be the second type identifiers, and the first type identifiers and the second type identifiers may correspond to each other.
Step 306, the first blockchain node executes the intelligent contract in the trusted execution environment to obtain receipt data, and the receipt data includes a log corresponding to the special event function.
As described above, when executing the code of the intelligent contract, the first blockchain node generates a corresponding Logs field for each event function included in the code, that is, generates a log corresponding to each event function. By determining the special event function, the log corresponding to the special event function can be further determined.
In one embodiment, for example, in an ethernet, after receiving a transaction for invoking an intelligent contract sent by a client, the first block node may check whether the transaction is valid, whether the format is correct, whether the signature of the transaction is valid, and the like.
Typically, the nodes in the Etherhouse are also accounting contested nodes, and thus the first blockchain node can perform the transaction locally as accounting contested node. If one of the nodes competing for accounting rights wins the current round of accounting rights, the node becomes the accounting node. If the first block link point wins the accounting right in the current round, the first block link point becomes an accounting node; of course, if the first block link point does not win in the process of competing for accounting rights in the current round, it is not an accounting node, and other nodes may become accounting nodes.
An intelligent contract is similar to a class in object-oriented programming, with the result of execution generating a contract instance corresponding to the intelligent contract, similar to generating an object corresponding to a class. Executing code in the transaction to create the intelligent contract creates a contract account and deploys the contract in the account space. In the etherhouse, the address of the intelligent contract account is generated by an encryption algorithm by taking the address of the sender (e.g., "0 xf5e …" in fig. 1-2) and a transaction random number (nonce) as input, such as the contract address "0 x6f8ae93 …" in fig. 1-2, i.e., by the address of the sender "0 xf5e …" and the nonce in the transaction.
In general, in a blockchain network supporting intelligent contracts using consensus algorithms such as Proof of Work (POW) and Proof of equity (POS), Proof of commission (DPOS), nodes competing for accounting rights may execute a transaction including creation of an intelligent contract after receiving the transaction. One of the nodes competing for the accounting right wins the accounting right in the current round of the accounting right competition, and becomes the accounting node. The accounting node may package the transaction containing the smart contract with other transactions and generate a new block, and send the generated new block to other nodes for consensus.
For a block chain network supporting an intelligent contract by using a Practical Byzantine Fault Tolerance (PBFT) mechanism and the like, nodes with the accounting right are already agreed before accounting in the current round. Therefore, after the first block link node receives the transaction, if the first block link node is not the accounting node of the current round, the transaction can be sent to the accounting node. For the accounting node of the current round (which may be the first blockchain node), the transaction may be performed during or before the process of packaging the transaction and generating the new tile, or during or before the process of packaging the transaction with other transactions and generating the new tile. After the accounting node packages the transaction (or packages other transactions together) and generates a new block, the generated new block or a block header is sent to other nodes for consensus.
As described above, in the blockchain network supporting the intelligent contract using the POW mechanism or the blockchain network supporting the intelligent contract using the POS, DPOS, or PBFT mechanisms, the accounting node in the current round may package the transaction and generate a new block, and send the block header after the generated new block to other nodes for consensus. If the other nodes verify that no problem exists after receiving the block, the new block can be added to the tail of the original block chain, so that the accounting process is completed, and consensus is achieved; and if the transaction is used for calling the intelligent contract, the calling and executing of the intelligent contract are finished. Other nodes may also perform transactions in the block while verifying the new block or block header sent by the accounting node.
The execution process may be generally performed by a virtual machine. Taking the ethernet house as an example, the support user creates and/or invokes some complex logic in the ethernet house network, which is the biggest challenge of the ethernet house to distinguish from the bitcoin blockchain technology. The core of an etherhouse as a programmable block chain is an Etherhouse Virtual Machine (EVM), and each etherhouse node can run the EVM. The EVM is a well-behaved virtual machine, which means that a variety of complex logic can be implemented through it. The user issuing and invoking smart contracts in the etherhouse is running on the EVM.
In this embodiment, the first block link point may execute the decrypted code of the smart contract in a Trusted Execution Environment (TEE). For example, as shown in fig. 4, the first block node may be divided into a regular execution environment (left side in the figure) and a TEE, a transaction submitted by a client (as described above, the transaction may have other sources; the transaction submitted by the client is taken as an example for explanation here) first enters a "transaction/query interface" in the regular execution environment to be identified, a transaction without a privacy processing requirement may be left in the regular execution environment to be processed (whether the privacy processing requirement exists may be identified here according to a user type of a transaction initiator, a transaction type, an identifier included in the transaction, and the like), and a transaction with the privacy processing requirement may be transferred to the TEE to be processed. The TEE is isolated from the regular execution environment. The transaction is in an encrypted state before entering the TEE, and is decrypted into plaintext transaction content in a trusted execution environment, so that the plaintext transaction content can be efficiently processed in the TEE on the premise of ensuring data security, and plaintext receipt data is generated in the TEE.
The TEE is a trusted execution environment that is based on a secure extension of the CPU hardware and is completely isolated from the outside. TEE was originally proposed by Global Platform to address the secure isolation of resources on mobile devices, providing a trusted and secure execution environment for applications parallel to the operating system. The Trust Zone technology of ARM realizes the real commercial TEE technology at the earliest. Along with the rapid development of the internet, the security requirement is higher and higher, and more requirements are provided for the TEE by mobile equipment, cloud equipment and a data center. The concept of TEE has also been developed and expanded at a high rate. The concept now referred to as TEE has been a more generalized TEE than the concept originally proposed. For example, server chip manufacturers Intel, AMD, etc. have introduced hardware-assisted TEE in turn and enriched the concept and characteristics of TEE, which have gained wide acceptance in the industry. The mention of TEE now is more generally directed to such hardware assisted TEE techniques. Unlike the mobile terminal, the cloud access requires remote access, and the end user is not visible to the hardware platform, so the first step of using the TEE is to confirm the authenticity and credibility of the TEE. Therefore, the current TEE technology introduces a remote attestation mechanism which is endorsed by a hardware manufacturer (mainly a CPU manufacturer) and ensures that a user can verify the TEE state through a digital signature technology. Meanwhile, the security requirement which cannot be met by only safe resource isolation is also met, and further data privacy protection is also provided. Commercial TEE including Intel SGX, AMD SEV also provide memory encryption techniques, limiting trusted hardware within the CPU, with the data of the bus and memory being ciphertext to prevent snooping by malicious users. For example, TEE technology such as intel's software protection extensions (SGX) isolates code execution, remote attestation, secure configuration, secure storage of data, and trusted paths for executing code. Applications running in the TEE are secured and are almost impossible to access by third parties.
Taking the Intel SGX technology as an example, SGX provides an enclosure (also called enclave), that is, an encrypted trusted execution area in memory, and a CPU protects data from being stolen. Taking the example that the first block link point adopts a CPU supporting SGX, a part of an area EPC (enclosure Page Cache, Enclave Page Cache, or Enclave Page Cache) may be allocated in the memory by using a newly added processor instruction, and data therein is encrypted by an Encryption engine mee (memory Encryption engine) in the CPU. The encrypted content in the EPC is decrypted into plaintext only after entering the CPU. Therefore, in the SGX, a user may not trust an operating System, a VMM (Virtual Machine Monitor), or even a BIOS (Basic Input Output System), and only need to trust the CPU to ensure that private data is not leaked. In practical application, the private data can be encrypted and then transmitted to the enclosure in a ciphertext form, and the corresponding secret key is transmitted to the enclosure through remote certification. Then, the operation is performed by using the data under the encryption protection of the CPU, and the result is returned in a ciphertext form. In this mode, not only can the powerful calculation be utilized, but also data leakage is not worried about.
As described above, by executing the decrypted transaction content in the TEE, the execution process may be assured of being completed within the trusted environment to ensure that private information is not revealed. When the transaction with the privacy processing requirement is used for creating the intelligent contract, the transaction comprises the code of the intelligent contract, and the first block link point can decrypt the transaction in the TEE to obtain the code of the intelligent contract contained in the transaction and further execute the code in the TEE. When the transaction requiring privacy processing is used for invoking the intelligent contract, the first block link point may execute the code in the TEE (if the invoked intelligent contract handles the encryption state, the intelligent contract needs to be decrypted in the TEE to obtain the corresponding code). Specifically, the first block link point may allocate a part of the area EPC in the memory by using a processor instruction newly added in the CPU, and encrypt the plaintext code by using an encryption engine MEE in the CPU and store the plaintext code in the EPC. The encrypted content in the EPC enters the CPU and is decrypted into plaintext. And in the CPU, the operation is carried out on the code of the plaintext, and the execution process is completed. For example, in SGX technology, the EVM may be loaded into the enclosure by executing the plaintext code of the smart contract. In the remote certification process, the key management server can calculate a hash value of the local EVM code, compare the hash value with the hash value of the EVM code loaded in the first block chain link point, and correctly use a comparison result as a necessary condition for passing the remote certification, thereby completing measurement of the code loaded on the SGX enclosure of the first block chain node. Measured, the correct EVM can execute the code of the intelligent contract described above in the SGX.
And 308, storing the receipt data by the first block chain link point, when the transaction initiator belongs to a preset user type, storing at least one log field in the log corresponding to the special event function in a plaintext form, storing the rest content of the receipt data in a ciphertext form, and when the transaction initiator does not belong to the preset user type, storing the receipt data in a ciphertext form.
In one embodiment, a user has a corresponding external account on the blockchain and initiates a transaction or performs other operations on the blockchain based on the external account. For example, when a user initiates a transaction on the blockchain, the transaction is actually initiated through the external account corresponding to the user, and thus the transaction initiator corresponding to the transaction may be considered as the user or the external account corresponding to the user.
In one embodiment, there are multiple types of users. There is a corresponding privacy protection requirement for each user type. The users can be divided into corresponding types according to the difference of privacy protection requirements; or, firstly, a plurality of user types are formed according to a certain factor, and then, a corresponding privacy protection requirement is configured for each user type. In summary, a correspondence may be established between the user type and the privacy protection requirement, so that the first block link point may determine whether to implement plaintext storage for the log corresponding to the special event function based on the user type of the transaction initiator.
In an embodiment, the type of user to which the transaction initiator belongs, i.e. the type of user to which the corresponding external account belongs. Therefore, the first block link point may determine an external account corresponding to the transaction initiator, and query a user type corresponding to the external account recorded on the block link to serve as the user type to which the transaction initiator belongs. For the user type corresponding to the external account, the user type can be recorded on the blockchain in various forms:
for example, the external account may include a user Type field (e.g., a Type field) recorded on the blockchain, the value of the user Type field corresponding to the user Type. For example, when the value of the user type field is 00, the user type is a normal user, when the value of the user type field is 01, the user type is a premium user, and when the value of the user type field is 11, the user type is a management user. Therefore, the first block link point may determine the corresponding user type based on the value by reading the user type field of the external account.
For another example, in creating the external account, the user type may be configured to be associated with the external account, and an association relationship between the user type and the external account may be recorded in the blockchain, for example, the association relationship may include an account address of the user type and the external account. In this embodiment, the data structure of the external account need not be changed, i.e., the external account need not contain the user type field described above. Therefore, the first block link point may determine the user type corresponding to the external account based on the external account corresponding to the transaction initiator by reading the association relationship recorded on the block chain. The association relationship between the user type and the external account may be recorded in a system contract or a chain code, and particularly, when the external account is a preset account of the block chain network, in the process of creating the system contract or writing the chain code, the external account may be known and the corresponding association relationship is added to the system contract or the chain code; or, when the external account is not the preset account, the association relationship corresponding to the external account may be added to the system contract or the chain code by updating the system contract or the chain code when the external account is subsequently created.
In an embodiment, the user type of the external account may be modified under certain conditions. For example, the management user may have a modification right, so that the first tile link point may change the user type corresponding to the external account according to a change request initiated by the management user. The management user may correspond to an external account with management authority preset in the foundational block, so that the management user may perform type change on other ordinary users, advanced users, and the like, for example, change the ordinary user into the advanced user, change the advanced user into the ordinary user, and the like.
In an embodiment, on the premise of protecting the privacy of the user, by identifying the user type, the differentiated storage operation can be implemented for the logs corresponding to the special event function according to the differentiated requirements of different users on the privacy protection degree, and the method has higher flexibility. For example, if the demand for privacy protection of the general user is relatively lower and the demand for the triggering operation based on the receipt data is relatively higher, then for the receipt data generated by the transaction initiated by the general user, the logs corresponding to the special event functions can be stored in a plain text form relatively more, so as to perform retrieval on the receipt content stored in the plain text and trigger relatively more types of association operations. For another example, the requirement for privacy protection of the advanced user is relatively higher, and the requirement for trigger operation based on the receipt data is relatively lower, then for the receipt data generated by the transaction initiated by the advanced user, the logs corresponding to the special event functions can be stored in a plain text form relatively less, and relatively more receipt contents can be stored in a ciphertext form relatively more, or even can be completely stored in the ciphertext form, so as to meet the privacy requirement.
In an embodiment, when the transaction initiator user belongs to the predetermined user type, the first block link point may store the log generated by the special event function completely in a plaintext form, that is, all log fields included in the log are stored in a plaintext form. Accordingly, the first block link point may store the remaining receipt content of the receipt data in ciphertext form.
In an embodiment, when the transaction initiator user belongs to a preset user type, the first block link point may determine an exposed log field corresponding to the special event function, and store the exposed log field in a plaintext form, and store the remaining non-exposed log fields in a ciphertext form, so that privacy protection may be implemented as much as possible while ensuring that a retrieval operation can be performed on the exposed log field.
In one embodiment, the special event function includes an exposure log field that is marked by an exposure identifier. The first block link point may be determined by reading an exposure identifier included in the special event function and determining one or more log fields indicated by the exposure identifier as the exposure log fields. Taking the Solidity language as an example, the code of the special event function included in the intelligent contract is as follows:
Event buy_candy3expose_from(who,candy_num);
Event buy_candy4show_to(who,candy_num);
in the code example described above, the smart contract defines 2 events: event buy _ candy3 and event buy _ candy 4.
The event buy _ can 3 includes a type identifier "expose", and the event buy _ can 3 can be determined as a special event function according to the above description. Further, an exposed identifier "_ From" for designating a Log field From is included after the type identifier "expose", so that in the Log Logs generated corresponding To the event buy _ can 3, the From field will be stored in a plain text form, and the remaining To field, Topic field, Log data field, and the like are stored in a cipher text form.
Event buy _ candy4 does not contain a type identifier "expose"; however, it can be identified whether the event buy _ can 4 is the special event function or not by other means, for example, if the event buy _ can 4 is located in the special event function list, then the event buy _ can 4 can be determined to be a special event function. Further, the event buy _ candidate 4 includes an exposure identifier "show _ To" for indicating the Log field To, so that in the Log Logs generated corresponding To the event buy _ candidate 4, the To field will be stored in a plain text form, and the rest of the From field, the Topic field, the Log data field, and the like will be stored in a cipher text form.
Similar to the exposed log field marked by the exposed identifier, the special event function may include an encrypted log field marked by the encrypted identifier, and the exposed log field is the remaining other log field. Taking the Solidity language as an example, the code of the special event function included in the intelligent contract is as follows:
Event buy_candy5expose_hide_from(who,candy_num);
Event buy_candy6hide_to(who,candy_num);
in the code example described above, the smart contract defines 2 events: event buy _ candy5 and event buy _ candy 6.
The event buy _ can 5 includes a type identifier "expose", and the event buy _ can 5 can be determined as a special event function according to the above description. Further, an encryption identifier "hide _ From" is included after the type identifier "expose", and the encryption identifier "hide _ From" is used To mark the Log field From, so that in the Log Logs generated corresponding To the event buy _ candidate 5, the From field will be stored in a ciphertext form, and the rest of To field, Topic field, Log data field, etc. as exposed Log fields are all stored in a plaintext form.
Event buy _ candy6 does not contain a type identifier "expose"; however, it can be identified whether the event buy _ can 6 is the special event function or not by other means, for example, when the event buy _ can 6 is located in the special event function list, it can be determined that the event buy _ can 6 is a special event function. Further, the event buy _ can 6 includes an encryption identifier "hide _ To" for indicating the Log field To, so that in the Log Logs generated corresponding To the event buy _ can 6, the To field will be stored in a ciphertext form, and the rest of the From field, the Topic field, the Log data field, and the like, which are used as exposed Log fields, are stored in a plain text form.
Many high-level languages supported by etherhouses, such as Solidity, Serpent, LLL, etc., may contain the exposed/encrypted identifiers described above. The exposed/encrypted identifiers may be the same in the high-level language and the bytecode-form intelligent contract code, or the high-level language intelligent contract code may be a first exposed/encrypted identifier and the bytecode-form intelligent contract code may be a second exposed/encrypted identifier, and the first exposed/encrypted identifier and the second exposed/encrypted identifier may correspond to each other.
In addition to adding the exposed identifier or encrypted identifier described above to the special event function by way of a programming language, other approaches may be used. For example, a mapping relationship between the special event function and the exposed log field, or a mapping relationship between the special event function and the encrypted log field may be predefined, so that the first block link point may obtain the predefined mapping relationship, and determine the exposed log field corresponding to the special event function according to the special event function and the mapping relationship included in the intelligent contract.
For example, when the mapping relationship includes contents such as "Event busy _ can 7-From _ To" and "Event busy _ can 8-Topic", if the smart contract includes the Event "Event busy _ can 7", the exposure log field corresponding To the Event "Event busy _ can 7" may be determined as the From field and the To field by querying the mapping relationship "Event busy _ can 7-From _ To", and if the smart contract includes the Event "Event busy _ can 8", the exposure log field corresponding To the Event "Event busy _ can 8" may be determined as the Topic field by querying the mapping relationship "Event busy _ can 8-Topic".
Therefore, on the premise of protecting the privacy of a user, by identifying the special event functions, the logs corresponding to different special event functions can have differentiated log exposing fields according to the differentiated requirements of different special event functions on the privacy protection degree, so that differentiated encryption storage operation can be realized for the logs generated by different special event functions.
In one embodiment, the mapping relationship may be recorded in a system contract. If the mapping relationship has no upgrade requirement or has a weak requirement (for example, can endure a relatively longer update period), the mapping relationship may also be recorded in the chain code of the blockchain network.
In one embodiment, a first block link node reads code of a system contract, the code of the system contract defining receipt data storage logic associated with an event function and a user type; correspondingly, the first block chain node executes the code of the system contract, so that when the transaction initiator belongs to the preset user type, at least one receipt field in the log corresponding to the special event function is stored in a plain text form, the rest content of the receipt data is stored in a ciphertext form, and when the transaction initiator does not belong to the preset user type, the receipt data is stored in the ciphertext form.
Wherein the receipt data storage logic associated with the event function and the user type may include: identification logic for special event functions, identification logic for user types, validation logic for exposed log fields, processing logic for exposed log fields, and so forth.
The identification logic for the special event function is operable to instruct the first block link point to identify the special event function contained in the smart contract. Such as: a predefined list of special event functions may be recorded in the system contract, or processing logic may be recorded in the system contract that identifies special event functions based on the type identifier. Specifically, reference may be made to the above description for identifying the special event function, which is not described herein again.
The identification logic for the user type is to instruct the first tile link point to identify the user type of the transaction initiator. Such as: the system contract may record an association between a predefined external account and a user type, or may record a correspondence between a value of a user type field and a user type. Specifically, reference may be made to the above description related to identifying the user type, which is not described herein again.
The validation logic for the exposed log field is used to instruct the first block link point to identify the exposed log field corresponding to the special event function, such as: the system contract may record a mapping relationship between the special event function and the exposed log field, or record processing logic for identifying the exposed log field based on the exposed identifier or the encrypted identifier.
And the processing logic of the exposure log field is used for indicating the first blockchain node to store the receipt content corresponding to the exposure log field in a plaintext form and store the rest receipt content in a ciphertext form when the transaction initiator belongs to the preset user type.
By running program code (hereinafter simply referred to as chain code) of a blockchain on a computing device (physical or virtual machine), the computing device can be configured as a blockchain link point in a blockchain network, such as the first blockchain node described above, or the like. In other words, the first block link point implements the corresponding functional logic by running the above-mentioned chain code. Therefore, when creating the blockchain network, the receipt data storage logic related to the special event function can be written into the chain code, so that each blockchain link point can realize the receipt data storage logic; taking the first blockchain node as an example, the receipt data store logic is as described above: the exposed field corresponding to each transaction type can be specifically defined in the receipt data storage logic, so that the first block chain node can determine which receipt contents need plaintext storage and which receipt contents need ciphertext storage in the receipt data generated by the transaction according to the transaction type.
However, upgrading and updating of the chain code are relatively difficult, so that the chain code is adopted to realize storage of the receipt data, and the problems of low flexibility and insufficient expandability exist. In order to implement the functional extension of the chain code, as shown in fig. 5, the chain code may be combined with a system contract: the chain code is used for realizing basic functions of the block chain network, and the function extension in the running process can be realized in a system contract mode. Similar to the above-mentioned smart contract, the system contract includes code in the form of byte code, for example, and the first block link node may be functionally complementary to the chain code by running the code of the system contract (for example, reading the code in the system contract according to the uniquely corresponding address "0 x53a98 …").
Unlike the above-described intelligent contracts issued by users to blockchains, system contracts cannot be freely issued by users. The system contract read by the first blockchain node may include a preset system contract configured in a founder block of the blockchain network; and an administrator (i.e., the above-mentioned administrative user) in the blockchain network may have an update authority for the system contract, so as to perform an update for a preset system contract such as the above-mentioned system contract, the system contract read by the above-mentioned first blockchain node may further include a corresponding updated system contract. Certainly, the updated system contract can be obtained by the administrator by performing one-time update on the preset system contract; or, the updated system contract may be obtained by performing multiple iterative updates on the preset system contract by the administrator, for example, the preset system contract is updated to obtain the system contract 1, the system contract 1 is updated to obtain the system contract 2, and the system contract 2 is updated to obtain the system contract 3, where the system contract 1, the system contract 2, and the system contract 3 may all be regarded as the updated system contract, but the first block link point generally is subject to the latest version of the system contract, for example, the first block link node is subject to the code in the system contract 3, but not the code in the system contract 1 or the system contract 2.
In addition to the preset system contracts contained in the foundational blocks, the administrator may also publish system contracts within subsequent blocks and make updates to the published system contracts. In summary, a certain degree of restriction should be imposed on the issuance and updating of system contracts by means such as rights management to ensure that the functional logic of the blockchain network is functioning properly and to avoid unnecessary loss to any user.
Thus, a first block link point may read the code of a system contract in which receipt data storage logic associated with a special event function is defined; then, the first block chain node may execute the code of the system contract, and store at least a part of the receipt content (such as the receipt content corresponding to the exposed log field) corresponding to the special event function contained in the intelligent contract in a plain text form, and store the rest of the receipt content in a cipher text form.
In one embodiment, the first block chain node encrypts the non-exposed log field in the special event function and the receipt content corresponding to the non-special event function by the key. The encryption can adopt symmetric encryption or asymmetric encryption. If the first blockchain node encrypts the receipt content in a symmetric encryption manner, i.e., using the symmetric key of the symmetric encryption algorithm, the client (or other object holding the key) can decrypt the encrypted receipt content using the symmetric key of the symmetric encryption algorithm.
In one embodiment, when the first blockchain node encrypts the receipt content with the symmetric key of the symmetric encryption algorithm, the symmetric key may be pre-provided to the first blockchain node by the client. Then, only the client (which should actually be the user corresponding to the logged-in account on the client) and the first block link point grasp the symmetric key, so that only the client can decrypt the corresponding encrypted receipt content, and an unrelated user or even a lawbreaker is prevented from decrypting the encrypted receipt content.
For example, when the client initiates a transaction to the first block link node, the client may encrypt the transaction content with an initial key of a symmetric encryption algorithm to obtain the transaction; accordingly, the first tile chain node may be used to directly or indirectly encrypt the receipt content by obtaining the initial key. For example, the initial key may be pre-negotiated by the client and the first blockchain node, or sent by the key management server to the client and the first blockchain node, or sent by the client to the first blockchain node. When the initial key is sent to the first block chain node by the client, the client can encrypt the initial key by the public key of the asymmetric encryption algorithm and then send the encrypted initial key to the first block chain node, and the first block chain node decrypts the encrypted initial key by the private key of the asymmetric encryption algorithm to obtain the initial key, that is, the digital envelope encryption described above, which is not described herein again.
In one embodiment, the first tile link point may encrypt the receipt content using the initial key described above. The initial keys used for different transactions may be the same, so that all transactions submitted by the same user are encrypted using the initial keys, or the initial keys used for different transactions may be different, for example, the client may randomly generate an initial key for each transaction, so as to improve security.
In one embodiment, the first tile chain node may generate a derivative key based on the initial key and the impact factor, and encrypt the receipt content with the derivative key. Compared with the method that the initial key is directly adopted for encryption, the derived key can increase the randomness, so that the difficulty of being broken is improved, and the safety protection of data is optimized. The impact factor may be related to the transaction; for example, the impact factor may include designated bits of the transaction hash value, such as the first chunk nexus may concatenate the initial key with the first 16 bits (or the first 32 bits, the last 16 bits, the last 32 bits, or other bits) of the transaction hash value and hash the concatenated string to generate the derivative key.
In an embodiment, the first block link point may further adopt an asymmetric encryption manner, that is, the receipt content is encrypted by using a public key of an asymmetric encryption algorithm, and accordingly, the client may decrypt the encrypted receipt content by using a private key of the asymmetric encryption algorithm. The key of the asymmetric encryption algorithm may be, for example, a pair of a public key and a private key generated by the client, and the public key is sent to the first blockchain node in advance, so that the first blockchain node may encrypt the receipt content with the public key.
The first block link point implements a function by running code for implementing the function. Thus, for functions that need to be implemented in the TEE, the relevant code needs to be executed as well. For code executed in the TEE, relevant specifications and requirements of the TEE need to be met; accordingly, for codes used for realizing a certain function in the related art, code writing needs to be performed again in combination with the specification and requirements of the TEE, so that not only is a relatively large development amount, but also a bug (bug) is easily generated in the rewriting process, and reliability and stability of function realization are affected.
Thus, a first block link point may store receipt data generated in the TEE (including receipt content in plain text requiring plain text storage, and receipt content in cipher text requiring cipher text storage) to an external storage space outside the TEE by executing a store function code outside the TEE, so that the storage function code can be the code used for realizing the storage function in the related art, does not need to be re-written with the specification and requirement of the TEE, the receipt data can be safely and reliably stored, the development amount of related codes can be reduced on the basis of not influencing the safety and reliability, furthermore, the TCB (Trusted Computing Base) can be reduced by reducing the related codes of the TEE, so that the additional security risk caused by the combination of the TEE technology and the block chain technology is in a controllable range.
In one embodiment, the first block chain node may execute a write cache function code within the TEE to store the receipt data described above in a write cache within the TEE, such as may correspond to a "cache" as shown in fig. 1. Further, the first block chain node outputs the data in the write cache from the trusted execution environment to be stored in the external storage space. The writing cache function code can be stored in the TEE in a plaintext form, and the cache function code in the plaintext form can be directly executed in the TEE; alternatively, the write cache function code may be stored outside the TEE in a ciphertext form, such as in the external storage space (for example, "pack + store" as shown in fig. 4, where "pack" indicates that the first blockchain node packs the transaction into blocks outside the trusted execution environment), and the write cache function code in the ciphertext form may be read into the TEE, decrypted in the TEE into a plaintext code, and executed.
Write caching refers to a "buffering" mechanism provided to avoid causing a "shock" to an external storage space when data is written to the external storage space. For example, the above write cache may be implemented by using a buffer; of course, the write cache may also be implemented by using a cache, which is not limited in this specification. In fact, because the TEE is an isolated security environment and the external storage space is located outside the TEE, the external storage space can be written into the data in the cache in batches by adopting a cache writing mechanism, so that the interaction times between the TEE and the external storage space are reduced, and the data storage efficiency is improved. Meanwhile, the TEE may need to call generated data in the process of continuously executing each transaction, and if the data needing to be called is just located in the write cache, the data can be directly read from the write cache, so that on one hand, interaction with an external storage space can be reduced, on the other hand, a decryption process of the data read from the external storage space is omitted, and therefore the data processing efficiency in the TEE is improved.
Of course, the write cache may also be established outside the TEE, for example, the first tile chain node may execute the write cache function code outside the TEE, so as to store the receipt data in the write cache outside the TEE, and further store the data in the write cache to the external storage space.
An embodiment of a receipt storage node of the present specification that combines user types and event function types is described below in conjunction with FIG. 6, including:
a receiving unit 61 that receives the encrypted transaction for calling the smart contract;
a decryption unit 62 that decrypts the transaction in a trusted execution environment to obtain the smart contract, the smart contract containing a special event function;
an execution unit 63, configured to execute the smart contract in the trusted execution environment, to obtain receipt data, where the receipt data includes a log corresponding to the special event function;
and the storage unit 64 stores the receipt data, when the transaction initiator belongs to a preset user type, at least one log field in the log corresponding to the special event function is stored in a plaintext form, the rest content of the receipt data is stored in a ciphertext form, and when the transaction initiator does not belong to the preset user type, the receipt data is stored in a ciphertext form.
Optionally, the transaction initiator has a corresponding external account, and the user type to which the transaction initiator belongs includes: and recording the user type corresponding to the external account on the block chain.
Optionally, the external account includes a user type field recorded on the blockchain, and a value of the user type field corresponds to the user type.
Optionally, when the external account is created, the user type is configured to be associated to the external account, so that an association relationship between the user type and the external account is recorded in a blockchain.
Optionally, the method further includes:
the changing unit 65 changes the user type corresponding to the external account according to the change request initiated by the management user.
Optionally, the event function in the intelligent contract includes a type identifier, and the type identifier is used for marking the event function as a special event function.
Optionally, when the event function included in the intelligent contract is located in a special function list recorded on the blockchain, the event function included in the intelligent contract is determined as a special event function.
Optionally, at least one log field in the log corresponding to the special event function includes: and the exposed log field corresponding to the special event function.
Optionally, the special event function includes the exposure log field marked by an exposure identifier; or, the special event function includes an encrypted log field marked by an encrypted identifier, and the exposed log field is another log field.
Optionally, a mapping relationship between a predefined special event function and an exposed log field is recorded in the blockchain, or a mapping relationship between a predefined special event function and an encrypted log field is obtained; wherein, when the intelligent contract contains a special event function, the mapping is used to determine a corresponding exposed log field.
Optionally, the storage unit 64 is specifically configured to:
reading code of a system contract, the code of the system contract defining receipt data storage logic therein relating to event functions and user types;
code for executing the system contract to store at least one receipt field in the log corresponding to the special event function in plaintext form, store the remaining content of the receipt data in ciphertext form when the transaction initiator is of a preset user type, and store the receipt data in ciphertext form when the transaction initiator is not of the preset user type.
Optionally, the system contract includes: the preset system contract recorded in the creation block or the updated system contract corresponding to the preset system contract.
Optionally, the storage unit 64 is specifically configured to:
executing storage function code outside the trusted execution environment to store the receipt data to an external storage space outside the trusted execution environment.
Optionally, the key for encrypting the receipt data by the first block link point includes: a key of a symmetric encryption algorithm or a key of an asymmetric encryption algorithm.
Optionally, the key of the symmetric encryption algorithm includes an initial key provided by the client; or, the key of the symmetric encryption algorithm comprises the initial key and a derivative key generated by the influence factor.
Optionally, the transaction is encrypted by the initial key, and the initial key is encrypted by a public key of an asymmetric encryption algorithm; the decryption unit 62 is specifically configured to:
and decrypting by using a private key of the asymmetric encryption algorithm to obtain the initial key, and decrypting the transaction by using the initial key to obtain the transaction content.
Optionally, the initial key is generated by the client; or, the initial key is sent to the client by a key management server.
Optionally, the impact factor is associated with the transaction.
Optionally, the influence factor includes: a specified bit of the hash value for the transaction.
In the 90 s of the 20 th century, improvements in a technology could clearly distinguish between improvements in hardware (e.g., improvements in circuit structures such as diodes, transistors, switches, etc.) and improvements in software (improvements in process flow). However, as technology advances, many of today's process flow improvements have been seen as direct improvements in hardware circuit architecture. Designers almost always obtain the corresponding hardware circuit structure by programming an improved method flow into the hardware circuit. Thus, it cannot be said that an improvement in the process flow cannot be realized by hardware physical modules. For example, a Programmable Logic Device (PLD), such as a Field Programmable Gate Array (FPGA), is an integrated circuit whose Logic functions are determined by programming the Device by a user. A digital system is "integrated" on a PLD by the designer's own programming without requiring the chip manufacturer to design and fabricate application-specific integrated circuit chips. Furthermore, nowadays, instead of manually making an Integrated Circuit chip, such Programming is often implemented by "logic compiler" software, which is similar to a software compiler used in program development and writing, but the original code before compiling is also written by a specific Programming Language, which is called Hardware Description Language (HDL), and HDL is not only one but many, such as abel (advanced Boolean Expression Language), ahdl (alternate Hardware Description Language), traffic, pl (core universal Programming Language), HDCal (jhdware Description Language), lang, Lola, HDL, laspam, hardward Description Language (vhr Description Language), vhal (Hardware Description Language), and vhigh-Language, which are currently used in most common. It will also be apparent to those skilled in the art that hardware circuitry that implements the logical method flows can be readily obtained by merely slightly programming the method flows into an integrated circuit using the hardware description languages described above.
The controller may be implemented in any suitable manner, for example, the controller may take the form of, for example, a microprocessor or processor and a computer-readable medium storing computer-readable program code (e.g., software or firmware) executable by the (micro) processor, logic gates, switches, an Application Specific Integrated Circuit (ASIC), a programmable logic controller, and an embedded microcontroller, examples of which include, but are not limited to, the following microcontrollers: ARC 625D, Atmel AT91SAM, Microchip PIC18F26K20, and Silicone Labs C8051F320, the memory controller may also be implemented as part of the control logic for the memory. Those skilled in the art will also appreciate that, in addition to implementing the controller as pure computer readable program code, the same functionality can be implemented by logically programming method steps such that the controller is in the form of logic gates, switches, application specific integrated circuits, programmable logic controllers, embedded microcontrollers and the like. Such a controller may thus be considered a hardware component, and the means included therein for performing the various functions may also be considered as a structure within the hardware component. Or even means for performing the functions may be regarded as being both a software module for performing the method and a structure within a hardware component.
The systems, devices, modules or units illustrated in the above embodiments may be implemented by a computer chip or an entity, or by a product with certain functions. One typical implementation device is a computer. In particular, the computer may be, for example, a personal computer, a laptop computer, a cellular telephone, a camera phone, a smartphone, a personal digital assistant, a media player, a navigation device, an email device, a game console, a tablet computer, a wearable device, or a combination of any of these devices.
For convenience of description, the above devices are described as being divided into various units by function, and are described separately. Of course, the functions of the various elements may be implemented in the same one or more software and/or hardware implementations of the present description.
As will be appreciated by one skilled in the art, embodiments of the present invention may be provided as a method, system, or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the present invention may take the form of a computer program product embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and the like) having computer-usable program code embodied therein.
The present invention is described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each flow and/or block of the flow diagrams and/or block diagrams, and combinations of flows and/or blocks in the flow diagrams and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
This description may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The specification may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks. In a typical configuration, a computer includes one or more processors (CPUs), input/output interfaces, network interfaces, and memory.
The memory may include forms of volatile memory in a computer readable medium, Random Access Memory (RAM) and/or non-volatile memory, such as Read Only Memory (ROM) or flash memory (flash RAM). Memory is an example of a computer-readable medium.
Computer-readable media, including both non-transitory and non-transitory, removable and non-removable media, may implement information storage by any method or technology. The information may be computer readable instructions, data structures, modules of a program, or other data. Examples of computer storage media include, but are not limited to, phase change memory (PRAM), Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), other types of Random Access Memory (RAM), Read Only Memory (ROM), Electrically Erasable Programmable Read Only Memory (EEPROM), flash memory or other memory technology, compact disc read only memory (CD-ROM), Digital Versatile Discs (DVD) or other optical storage, magnetic cassettes, magnetic disk storage, quantum memory, graphene-based storage media or other magnetic storage devices, or any other non-transmission medium that can be used to store information that can be accessed by a computing device. As defined herein, a computer readable medium does not include a transitory computer readable medium such as a modulated data signal and a carrier wave.
It should also be noted that the terms "comprises," "comprising," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising an … …" does not exclude the presence of other like elements in a process, method, article, or apparatus that comprises the element.
The foregoing description has been directed to specific embodiments of this disclosure. Other embodiments are within the scope of the following claims. In some cases, the actions or steps recited in the claims may be performed in a different order than in the embodiments and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In some embodiments, multitasking and parallel processing may also be possible or may be advantageous.
The terminology used in the description of the one or more embodiments is for the purpose of describing the particular embodiments only and is not intended to be limiting of the description of the one or more embodiments. As used in one or more embodiments of the present specification and the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It should also be understood that the term "and/or" as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items.
It should be understood that although the terms first, second, third, etc. may be used in one or more embodiments of the present description to describe various information, such information should not be limited to these terms. These terms are only used to distinguish one type of information from another. For example, first information may also be referred to as second information, and similarly, second information may also be referred to as first information, without departing from the scope of one or more embodiments herein. The word "if" as used herein may be interpreted as "at … …" or "when … …" or "in response to a determination", depending on the context.
The above description is only for the purpose of illustrating the preferred embodiments of the one or more embodiments of the present disclosure, and is not intended to limit the scope of the one or more embodiments of the present disclosure, and any modifications, equivalent substitutions, improvements, etc. made within the spirit and principle of the one or more embodiments of the present disclosure should be included in the scope of the one or more embodiments of the present disclosure.