WO2021057166A1 - Method and apparatus for implementing external call in fpga - Google Patents

Method and apparatus for implementing external call in fpga Download PDF

Info

Publication number
WO2021057166A1
WO2021057166A1 PCT/CN2020/100491 CN2020100491W WO2021057166A1 WO 2021057166 A1 WO2021057166 A1 WO 2021057166A1 CN 2020100491 W CN2020100491 W CN 2020100491W WO 2021057166 A1 WO2021057166 A1 WO 2021057166A1
Authority
WO
WIPO (PCT)
Prior art keywords
fpga
call
processing unit
central processing
coprocessor
Prior art date
Application number
PCT/CN2020/100491
Other languages
French (fr)
Chinese (zh)
Inventor
潘国振
魏长征
闫莺
Original Assignee
支付宝(杭州)信息技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 支付宝(杭州)信息技术有限公司 filed Critical 支付宝(杭州)信息技术有限公司
Publication of WO2021057166A1 publication Critical patent/WO2021057166A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Definitions

  • One or more embodiments of this specification relate to the field of blockchain technology, and in particular, to a method and device for implementing external calls in FPGA.
  • Blockchain technology is built on a transmission network (such as a peer-to-peer network).
  • the network nodes in the transmission network use chained data structures to verify and store data, and use distributed node consensus algorithms to generate and update data.
  • TEE Trusted Execution Environment
  • TEE can play the role of a black box in the hardware. Neither the code executed in the TEE nor the data operating system layer can be peeped, and only the pre-defined interface in the code can operate on it.
  • plaintext data is calculated in TEE instead of complex cryptographic operations in homomorphic encryption. There is no loss of efficiency in the calculation process. Therefore, the combination with TEE can achieve less performance loss. Under the premise, the security and privacy of the blockchain are greatly improved. At present, the industry is very concerned about the TEE solution.
  • TEE solutions including TPM (Trusted Platform Module) in software and Intel SGX (Software Guard Extensions) in hardware. , Software Protection Extension), ARM Trustzone (trust zone) and AMD PSP (Platform Security Processor, platform security processor).
  • one or more embodiments of this specification provide a method and device for implementing external calls in FPGA.
  • a method for implementing external calls in an FPGA includes: the coprocessor on the FPGA chip receives the calls issued by the central processing unit during the execution of the smart contract Request; wherein the FPGA chip belongs to the FPGA structure, the smart contract is related to the transaction received by the blockchain node to which the FPGA structure belongs; the coprocessor calls the target to the target that can respond to the call request Send a call instruction to make the target call object respond to the call request; wherein the deployed circuit logic configuration file in the memory contained in the FPGA structure is loaded to the FPGA chip to form the center The processor and the coprocessor.
  • a device for implementing external calls in FPGA including: a receiving unit, which enables the coprocessor on the FPGA chip to receive the process of executing the smart contract by the central processor Where the FPGA chip belongs to the FPGA structure, and the smart contract is related to the transaction received by the blockchain node to which the FPGA structure belongs; the sending unit enables the coprocessor to respond to The target call object of the call request sends a call instruction to make the target call object respond to the call request; wherein, the circuit logic configuration file that has been deployed in the memory contained in the FPGA structure is loaded into the FPGA chip to form the central processing unit and the coprocessor.
  • an electronic device including: a processor;
  • a memory for storing executable instructions of a processor; wherein the processor executes the executable instructions to implement the method according to the first aspect.
  • a computer-readable storage medium on which computer instructions are stored, and when the instructions are executed by a processor, the steps of the method described in the first aspect are implemented.
  • Fig. 1 is a flowchart of a method for implementing external calls in FPGA provided by an exemplary embodiment.
  • Fig. 2 is a schematic structural diagram of a blockchain node provided by an exemplary embodiment.
  • Fig. 3 is a schematic diagram of forming a functional module on an FPGA chip provided by an exemplary embodiment.
  • Fig. 4 is a block diagram of a device for implementing external calls in FPGA provided by an exemplary embodiment.
  • the steps of the corresponding method are not necessarily executed in the order shown and described in this specification.
  • the method may include more or fewer steps than described in this specification.
  • a single step described in this specification may be decomposed into multiple steps for description in other embodiments; and multiple steps described in this specification may also be combined into a single step in other embodiments. description.
  • Blockchain is generally divided into three types: Public Blockchain, Private Blockchain and Consortium Blockchain.
  • the public chain is represented by Bitcoin and Ethereum. Participants who join the public chain can read the data records on the chain, participate in transactions, and compete for the accounting rights of new blocks. Moreover, each participant (ie, node) can freely join and exit the network, and perform related operations.
  • the private chain is the opposite.
  • the write permission of the network is controlled by an organization or institution, and the data read permission is regulated by the organization.
  • the private chain can be a weakly centralized system with strict restrictions and few participating nodes.
  • This type of blockchain is more suitable for internal use by specific institutions.
  • Consortium chain is a block chain between public chain and private chain, which can realize "partial decentralization".
  • Each node in the alliance chain usually has a corresponding entity or organization; participants are authorized to join the network and form a stakeholder alliance to jointly maintain the operation of the blockchain.
  • the nodes in the blockchain network may use a solution that combines the blockchain and the TEE (Trusted Execution Environment).
  • TEE Trusted Execution Environment
  • TEE is a secure extension based on CPU hardware and a trusted execution environment that is completely isolated from the outside.
  • TEE was first proposed by Global Platform to solve the security isolation of resources on mobile devices, and parallel to the operating system to provide a trusted and secure execution environment for applications.
  • ARM's Trust Zone technology is the first to realize the real commercial TEE technology. With the rapid development of the Internet, security requirements are getting higher and higher. Not only mobile devices, cloud devices, and data centers have put forward more demands on TEE.
  • TEE has also been rapidly developed and expanded. Compared with the originally proposed concept, the TEE referred to now is a more generalized TEE.
  • server chip manufacturers Intel and AMD have successively introduced hardware-assisted TEE and enriched the concepts and features of TEE, which has been widely recognized in the industry.
  • the TEE mentioned now usually refers more to this kind of hardware-assisted TEE technology.
  • SGX provides an enclave (also known as an enclave), which is an encrypted trusted execution area in the memory, and the CPU protects data from being stolen.
  • enclave also known as an enclave
  • the CPU protects data from being stolen.
  • a part of the area EPC Enclave Page Cache, enclave page cache or enclave page cache
  • the encryption engine MEE Memory Encryption Engine
  • the first step in using TEE is to confirm the authenticity of TEE.
  • the related technology provides a remote certification mechanism for the above-mentioned SGX technology to prove that the SGX platform on the target device and the challenger have deployed the same configuration file.
  • the TEE technology in the related technology is implemented by software or a combination of software and hardware, even if the remote attestation method can indicate to a certain extent that the configuration file deployed in the TEE has not been tampered with, the TEE itself depends on the operation The environment cannot be verified.
  • a virtual machine for executing smart contracts needs to be configured in the TEE.
  • the instructions executed by the virtual machine are not directly executed, but actually executed corresponding X86 instructions (Assuming that the target device adopts the X86 architecture), which poses a certain degree of security risk.
  • this specification proposes a hardware TEE technology based on FPGA implementation.
  • FPGA implements hardware TEE by loading circuit logic configuration files. Because the content of the circuit logic configuration file can be checked and verified in advance, and the FPGA is configured and operated completely based on the logic recorded in the circuit logic configuration file, it can be ensured that the hardware TEE implemented by the FPGA has relatively higher security.
  • the circuit logic configuration file can form a central processing unit for executing the code program of the smart contract on the FPGA to satisfy the operation of the smart contract. In the process of executing code programs, the central processing unit needs to implement external calls for the purpose of improving operating efficiency or data interaction. Therefore, in this specification, the operating efficiency can be improved by configuring the coprocessor on the FPGA.
  • Fig. 1 is a flowchart of a method for implementing external calls in FPGA provided by an exemplary embodiment. As shown in FIG. 1, the method is applied to the FPGA structure and may include the following steps 102 and 104.
  • Step 102 The coprocessor on the FPGA chip receives the call request sent by the central processing unit during the execution of the smart contract; wherein, the FPGA chip belongs to the FPGA structure, and the smart contract and the blockchain to which the FPGA structure belongs The transaction received by the node is related.
  • a central processing unit By configuring the FPGA chip, a central processing unit can be formed on the FPGA chip.
  • the central processing unit is used to implement virtual machine logic, which is equivalent to a "hardware virtual machine” configured on the FPGA chip.
  • the virtual machine logic can include Ethernet This manual does not limit the execution logic of the Fang virtual machine or the execution logic of the WASM virtual machine.
  • the central processing unit may be a byte-code instruction set CPU.
  • the bytecode consists of a series of bytes, and each byte can identify an operation. Based on many considerations such as development efficiency and readability, developers may not directly write bytecode programs, but choose a high-level language to write code programs for smart contracts.
  • a code program written in a high-level language is compiled by a compiler to generate a corresponding bytecode program, and then the bytecode program can be deployed to the blockchain.
  • the above-mentioned compiler can be deployed on the client, so that the client can use the compiler to compile a code program written in a high-level language into a bytecode program, and then submit it to the blockchain network through a transaction; or, the above-mentioned compilation
  • the processor can be deployed at the blockchain node, so that after receiving the transaction submitted by the client, the blockchain node compiles a code program written in a high-level language into a bytecode program through a compiler.
  • the contract written in it is very similar to the class in the object-oriented programming language.
  • a variety of members can be declared in a contract, including contract state (or state variable), function, and function modifier. , Events, etc.
  • the contract state is the value permanently stored in the account storage of the smart contract and is used to save the state of the contract.
  • the compilation result of the compiler is, for example, as shown below (/*...*/The part of... is a comment, and if there are Chinese characters after it, it is the corresponding Chinese comment):
  • dup2/* copy the second item from the top to the bottom in the stack, so at this time the stack has 1, 0, and 1 data from the top to the top*/
  • Solidity code in the above code example is compiled into a corresponding bytecode program, and each bytecode contained in the bytecode program includes a byte-length opcode (Opcode) and the following zero at most Operands (Operands), which are the parameters required by the corresponding operation code during execution.
  • Opcode byte-length opcode
  • Operaands the following zero at most Operands
  • the blockchain node when the above-mentioned bytecode program runs on a virtual machine on a blockchain node, for example, if the blockchain node adopts the X86 architecture, then the blockchain node will execute the bytecode program in the virtual machine. , In fact, through the X86 instruction set to simulate each bytecode contained in the bytecode program.
  • the above-mentioned bytecode instruction set CPU is configured on the FPGA chip, so that the bytecode instruction set CPU directly adopts the bytecode instruction set during the execution of the bytecode program.
  • the bytecode instructions execute each bytecode contained in the bytecode program, without the need to simulate the execution of the bytecode program through other instruction sets, so that it has a relatively higher processing efficiency.
  • the above-mentioned bytecode instruction set CPU maintains a bytecode instruction set, and the bytecode instruction set can include any type of predefined bytecode instructions. For example, add instruction is used to implement addition operation, sub instruction is used to implement subtraction operation, mul instruction is used to implement multiplication operation, div instruction is used to implement division operation, or instruction is used to implement bitwise OR operation, and instruction is used to implement press Bitwise AND operation, xor instruction is used to realize bitwise XOR operation, etc. This manual does not limit this.
  • the central processing unit in this specification may not be a bytecode instruction set CPU.
  • the central processing unit can use other forms of instruction sets, and simulate execution of each word contained in the bytecode program through the other forms of instruction sets.
  • the code section can also implement the execution of smart contracts.
  • the above transactions can be used to deploy or call smart contracts. If the transaction is used to deploy a smart contract, the data field of the transaction content will contain the code program of the smart contract; if the code program is written in a high-level language, the FPGA structure can also be formed on the FPGA chip through the deployed circuit logic configuration file A compiler, and the code program is compiled into a bytecode program through the compiler. If the transaction is used to call a smart contract, the to field of the transaction content will contain the contract address of the called smart contract, and the FPGA structure can call the corresponding deployed bytecode program based on the contract address.
  • Step 104 The coprocessor sends a call instruction to a target call object that can respond to the call request, so that the target call object responds to the call request; wherein, the memory contained in the FPGA structure
  • the deployed circuit logic configuration file is loaded into the FPGA chip to form the central processing unit and the coprocessor.
  • the FPGA chip contains a number of editable hardware logic units. After these hardware logic units are configured via a circuit logic configuration file, they can be implemented as corresponding functional modules to implement corresponding logic functions. Specifically, the circuit logic configuration file can be burned to the FPGA structure based on the form of a bit stream. Therefore, by deploying the corresponding circuit logic configuration file to the FPGA structure, the central processing unit and the co-processor as described above can be formed on the FPGA chip.
  • the coprocessor is used to provide assistance to the central processing unit to complete processing tasks that the central processing unit cannot complete, or although the central processing unit can complete processing tasks that are inefficient and perform poorly, etc.
  • the coprocessor usually exists independently of the central processing unit.
  • the co-processor receives related requests from the central processing unit to implement assisted operations for the central processing unit. For example, if the central processing unit sends a call request for a target calling object to the coprocessor, the coprocessor can send a calling instruction to the target calling object, so that the target calling object can meet the calling requirements of the central processing unit.
  • the above call request may include local call, that is, the call request is a local call request, and the corresponding target call object is a local object on the FPGA structure; or, the above call request may include remote call, that is, the call request is a remote call request ,
  • the corresponding target call object is an external object connected to the FPGA structure, or the corresponding target call object includes both external objects and local objects. It can be seen that there may be a large number of target call objects.
  • the central processor directly docks with each target call object.
  • the central processor only needs to dock the coprocessor, and the coprocessor calls the objects with each target. The docking can not only achieve higher docking efficiency, but also greatly save the resources consumed by the central processing unit in terms of external docking, so as to improve the execution efficiency of smart contracts.
  • the local object may include a preset function module formed on the FPGA chip by loading the above-mentioned circuit logic configuration file.
  • the preset function module may include at least one of the following: an encryption module, which is used to encrypt plaintext data generated by the central processing unit; a decryption module, which is used to perform encryption on ciphertext data transferred from the outside to the FPGA structure. Decryption; calculation module, used to perform calculation operations related to the smart contract; cache module, used to store the state of the contract generated by the smart contract, etc., this specification does not limit this.
  • the transaction initiator when it has a privacy protection requirement, it can submit an encrypted private transaction to the blockchain, so that the blockchain node transmits the private transaction to the FPGA structure.
  • the central processing unit can initiate a local call to the co-processor to call the decryption module, then the co-processor can transmit the private transaction to the decryption module, and decrypt the decryption module to obtain the result
  • the clear text transaction content is returned to the central processing unit.
  • the central processor when the private transaction is used to deploy a smart contract, the central processor can obtain the contract code of the smart contract from the data field of the received plaintext transaction content; when the private transaction is used to call the smart contract, the central processor can obtain the contract code of the smart contract.
  • the processor can obtain the contract address of the smart contract from the to field of the received plaintext transaction content, and then obtain the corresponding contract code based on the contract address: if the contract code is deployed in the above-mentioned cache module, the central processor can pass Initiate a local call to the coprocessor, so that the coprocessor assists in retrieving the corresponding contract code from the cache module. If the contract code is deployed on a blockchain node or an external storage device connected to the FPGA chip, the target is involved The case where the calling object is an external object will be described in detail below.
  • the central processing unit may need to call the calculation module to assist in processing.
  • the contract code is characterized as a wasm bytecode program
  • the wasm bytecode specifies a data length of 32b or 64b, the processing efficiency of some large-length data is often affected.
  • the data with a length of 1024b when comparing data with a length of 1024b, if it is directly processed by the central processing unit, the data with a length of 1024b needs to be divided into 32 data segments with a length of 32b or 16 data segments with a length of 64b, and then each data segment is compared separately , You need to compare 32 times or 16 times; and if you use the additional configuration of the calculation module on the FPGA chip, you can not be restricted by the wasm bytecode, for example, you can set the maximum data length to 1024b or greater, then only one time The comparison operation of 1024b length data can be completed, which greatly improves the processing efficiency. Similarly, in the process of realizing operations such as multiplication of large numbers, the call to the calculation module can greatly improve the execution efficiency of the contract code.
  • the central processing unit runs the contract code, the value of at least a part of the contract state involved in the contract code may change. If the contract state is maintained on the FPGA chip, such as the above-mentioned cache module, the central processing unit can initiate a local call to the coprocessor, so that the coprocessor can store the updated value of the relevant contract state in the above-mentioned cache module; if The state of the contract is maintained at the aforementioned blockchain node or external storage device, which involves the case where the target calling object is an external object, which will be described in detail below. Similarly, the central processing unit can initiate a local call to the coprocessor to process the transaction receipt generated by the execution of the contract code.
  • the central processing unit needs to initiate a local call to the coprocessor, so that the coprocessor can transmit the above-mentioned contract code, contract status, transaction receipt, etc. to the aforementioned encryption module for encryption processing to ensure that the block
  • the chain node or external storage device transmits the corresponding ciphertext contract code, ciphertext contract status, ciphertext transaction receipt, etc.
  • the external object may include: an external storage device or a blockchain node (actually a node host included in the blockchain node), and the call request initiated by the central processing unit is used to communicate with the external
  • the storage device or blockchain node reads and writes data.
  • the FPGA structure can initiate a remote call to the coprocessor for the contract code extracted from the transaction, so that the coprocessor can assist in sending the contract code to the above External storage device or blockchain node for deployment.
  • a DMA (Direct Memory Access) connection can be established between the coprocessor and the blockchain node to realize data interaction.
  • the central processing unit can initiate a remote call to the coprocessor to make the coprocessor Assist in obtaining contract code from external objects to be executed by the central processing unit.
  • the central processing unit needs to use the value of the contract state involved, and update at least a part of the value during or after the execution of the contract code.
  • the central processing unit can send a remote call to the coprocessor, so that the coprocessor can obtain the value of the contract state from the external object, or return the value of the updated contract state to the external object.
  • the contract code and contract status obtained from external objects may be in ciphertext state.
  • the central processing unit needs to initiate a local call together so that the coprocessor can call the decryption module for decryption.
  • the central processing unit needs to initiate a local call together, so that the coprocessor can call the encryption module for encryption.
  • Fig. 2 is a schematic structural diagram of a blockchain node provided by an exemplary embodiment.
  • an FPGA structure can be added to the blockchain node to implement hardware TEE.
  • the FPGA structure can be an FPGA board as shown in FIG. 2.
  • the FPGA board can be connected to the blockchain node through the PCIE interface to realize the data interaction between the FPGA board and the blockchain node.
  • FPGA boards can include FPGA chips, Flash (flash memory) chips, and dense tube chips; of course, in addition to FPGA chips in some embodiments, they may only include parts of the remaining Flash chips and dense tube chips. , Or may contain more structures, here are just examples.
  • no user-defined logic is programmed on the FPGA chip, which is equivalent to the FPGA chip in a blank state.
  • Users can burn circuit logic configuration files on the FPGA chip to form corresponding functions or logic on the FPGA chip.
  • the FPGA board does not have the capability of security protection, so it usually needs to provide an external security environment.
  • users can implement the programming of the circuit logic configuration file in an offline environment to achieve physical security isolation. Instead of implementing remote programming online.
  • the corresponding logic code can be formed through FPGA hardware language, and then the logic code can be mirrored to obtain the above-mentioned circuit logic configuration file.
  • the user can check the above-mentioned logic code. Especially, when multiple users are involved at the same time, multiple users can check the above logic code separately to ensure that the FPGA board can finally meet the needs of all users and prevent security risks, logic errors, fraud and other abnormalities. problem.
  • the user can burn the circuit logic configuration file to the FPGA board in the above-mentioned offline environment.
  • the circuit logic configuration file is transferred from the blockchain node to the FPGA board, and then deployed to the Flash chip as shown in Figure 2, so that even if the FPGA board is powered off, the Flash chip can still save the above-mentioned circuit logic. Configuration file.
  • Fig. 3 is a schematic diagram of forming a functional module on an FPGA chip provided by an exemplary embodiment.
  • the hardware logic unit contained in the FPGA chip can be configured to form corresponding functional modules on the FPGA chip.
  • the formed functional modules can include such The central processing unit, co-processor, cache module, encryption and decryption module, calculation module, key agreement module, decryption verification module, etc. shown in FIG. 3.
  • the circuit logic configuration file can also be used to transmit the information that needs to be stored to the FPGA board.
  • the preset certificate can be stored on the FPGA chip, and the authentication root key can be stored in the secret tube chip (the authentication root key can also be Stored on the FPGA chip) and so on.
  • the FPGA board can realize remote key agreement with the user.
  • the key agreement process can use related technologies. Any algorithm or standard can be implemented, and this specification does not limit it.
  • the key agreement process can include: the user can generate a key Ka-1 at the local client, the key agreement module can generate a key Kb-1 locally, and the client can generate a key Kb-1 based on the key Ka- 1 Calculate the key agreement information Ka-2, the key agreement module can calculate the key agreement information Kb-2 based on the key Kb-1, and then the client sends the key agreement information Ka-2 to the key agreement module, The key agreement module sends the key agreement information Kb-2 to the client, so that the client can generate a secret value based on the key Ka-1 and the key agreement information Kb-2, and the key agreement module can be based on the key Kb -1 generates the same secret value as the key agreement information Ka-2, and finally the client and the key agreement module respectively derive the same
  • the key agreement information Ka-2 and key agreement information Kb-2 are transmitted between the client and the key agreement module via the blockchain node
  • the key Ka-1 is controlled by the client
  • the key Kb-1 is controlled by the key agreement module, so it can ensure that the blockchain node cannot know the final secret value and the configuration file deployment key, so as to avoid possible security risks.
  • the secret value is also used to derive the business secret deployment key; for example, the secret value can be derived as a 32-bit value, the first 16 bits can be used as the configuration file deployment key, and the last 16 bits can be used as the business secret deployment Key.
  • the user can deploy the service key to the FPGA board through the service secret deployment key.
  • the service key may include the node private key and the service root key.
  • the user can use the business secret deployment key on the client to sign, encrypt the node private key or the business root key, and send it to the FPGA board, so that after the FPGA board is decrypted and verified through the decryption verification module, Deploy the obtained node private key or service root key.
  • the FPGA board can be implemented as a TEE on the blockchain node to meet privacy demand. For example, when a blockchain node receives a transaction, if the transaction is a plaintext transaction, the blockchain node can directly process the plaintext transaction, if the transaction is a private transaction, the blockchain node transmits the private transaction to the FPGA The board is processed.
  • the transaction content of a plaintext transaction is in plaintext form, and the contract status generated after the transaction is executed is also stored in plaintext form.
  • the transaction content of a private transaction is in ciphertext form, which is obtained by encrypting the plaintext transaction content by the transaction initiator, and the contract status generated after transaction execution needs to be stored in ciphertext form to ensure the protection of transaction privacy.
  • the transaction initiator can generate a symmetric key randomly or based on other methods.
  • the business public key corresponding to the above-mentioned business private key is disclosed, then the transaction initiator can perform transaction content in plaintext based on the symmetric key and the business public key.
  • the transaction initiator encrypts the plaintext transaction content with a symmetric key, and encrypts the symmetric key with the business public key.
  • the two parts obtained are included in the above-mentioned private transaction; in other words, the private transaction includes Two parts of content: the content of the transaction in plaintext encrypted with a symmetric key, and the symmetric key encrypted with the business public key.
  • the central processor initiates a local call call request to the coprocessor, and the coprocessor further calls the encryption and decryption module, so that the encryption and decryption module uses the service private key to decrypt the symmetric key encrypted with the service public key to obtain the symmetric key , And then the encryption and decryption module further uses the symmetric key to decrypt the plaintext transaction content encrypted with the symmetric key to obtain the plaintext transaction content.
  • the data field of the plaintext transaction content can contain the contract code of the smart contract to be deployed.
  • the central processing unit can deploy the obtained contract code. If it is deployed on the cache module on the FPGA chip, the central processing unit directly deploys the contract code to the cache module in plain text; if it is deployed on a blockchain node (or other external object, here is a blockchain node as an example), then The central processor initiates a local call call request to the coprocessor, and the coprocessor calls the encryption and decryption module to encrypt the contract code, and then deploys the encrypted ciphertext contract code to the blockchain node.
  • the to field of the plaintext transaction content can contain the contract address of the called smart contract, and the FPGA board can retrieve the corresponding contract code based on the contract address. If the contract code is deployed in the cache module of the FPGA chip, the contract code is often stored in plain text, and the coprocessor can directly obtain the contract code from the cache module and hand it over to the central processing unit for processing.
  • the central processing unit needs to further initiate a local call request to the coprocessor, and the coprocessor will call the encryption and decryption module
  • the ciphertext contract code is decrypted, and the central processing unit executes the decrypted contract code.
  • the central processing unit is used to implement virtual machine logic in related technologies, that is, the central processing unit is equivalent to the "hardware virtual machine" on the FPGA board. Therefore, after the contract code is determined based on the foregoing plaintext transaction content, the contract code can be transferred to the central processing unit, so that the central processing unit executes the contract code.
  • the central processing unit can be the bytecode instruction set CPU in this manual.
  • the FPGA board can read the bytecode program of the smart contract into words
  • the code instruction set CPU enables the bytecode instruction set CPU to directly execute each bytecode contained in the bytecode program, without the need to simulate the bytecode through other instruction sets, which greatly improves the performance of the bytecode. Execution efficiency, thereby speeding up transaction processing.
  • the most recent value of the contract state involved in the contract code needs to be obtained.
  • the latest value of the contract state may be deployed in the cache module on the FPGA chip in clear text, then the central processing unit can initiate a local call request to the coprocessor, and the coprocessor can retrieve the latest value of the contract state from the cache module. Value.
  • the latest value of the contract state may be deployed in the form of cipher text at the blockchain node (or other external object), then the central processing unit can initiate a remote call call request to the coprocessor, and the coprocessor can send it from the blockchain.
  • the node remotely calls the latest value of the contract state in the form of ciphertext, and the central processor can initiate a local call call request to the coprocessor, and the coprocessor can call the encryption and decryption module to get the latest value of the contract state in the form of ciphertext.
  • the value is decrypted, and the central processing unit obtains the latest value of the decrypted contract state.
  • the state of the contract involved in the contract code may be updated. If the update value of the contract state needs to be deployed in the cache module on the FPGA chip, the central processing unit can initiate a local call request to the coprocessor, and the coprocessor directly saves the update value of the contract state into the cache module . If the updated value of the contract state needs to be deployed at the blockchain node, the central processing unit can initiate a local call call request to the coprocessor, and the coprocessor can call the encryption and decryption module to encrypt the updated value of the contract state , And the central processor initiates a remote call call request to the coprocessor, and the coprocessor remotely stores the updated value of the contract state in the form of ciphertext to the blockchain node.
  • the user may want to update the version of the circuit logic configuration file deployed on the FPGA board.
  • the authentication root key contained in the circuit logic configuration file may be known by risky users, or the user wants to update the version on the FPGA board.
  • the deployed functional modules are upgraded, etc. This manual does not limit this.
  • the circuit logic configuration file that has been deployed in the above process can be referred to as the old version of the circuit logic configuration file, and the circuit logic configuration file that needs to be deployed is referred to as the new version of the circuit logic configuration file.
  • the user can generate a new version of the circuit logic configuration file through the process of writing code and mirroring. Further, the user can sign the new version of the circuit logic configuration file with his own private key, and then encrypt the signed new version of the circuit logic configuration file with the configuration file deployment key negotiated above to obtain the encrypted new version of the circuit Logical configuration file. In some cases, there may be multiple users at the same time, so the old version of the circuit logic configuration file needs to deploy the preset certificates corresponding to these users to the FPGA board, and these users need to use their own private keys to pair the new version of the circuit. Sign the logical configuration file.
  • the user can remotely send the encrypted new version of the circuit logic configuration file to the blockchain node through the client, and the blockchain node will further transfer it to the FPGA board.
  • the decryption verification module formed on the FPGA chip in the foregoing process is located on the transmission path between the PCIE interface and the Flash chip, so that the encrypted new version of the circuit logic configuration file must first be successfully processed by the decryption verification module before it can be
  • the Flash chip is passed in to achieve a credible update, and the Flash chip cannot be updated directly without bypassing the process of decryption and verification.
  • the decryption verification module After the decryption verification module receives the encrypted new version of the circuit logic configuration file, it first decrypts it with the configuration file deployment key deployed on the FPGA board. If the decryption is successful, the decryption verification module is further based on the preset certificate deployed on the FPGA chip , To perform signature verification on the decrypted new version of the circuit logic configuration file.
  • the decryption and signature verification module will trigger the termination of the update operation; and if the decryption is successful and the signature verification is passed, you can It is determined that the obtained new version of the circuit logic configuration file is from the aforementioned user and has not been tampered with during the transmission process.
  • the new version of the circuit logic configuration file can be further transmitted to the Flash chip to update and deploy the old version of the circuit logic configuration file in the Flash chip.
  • the above-mentioned key agreement module, decryption and verification module can also be formed on the FPGA chip, and the pre-set certificate and authentication can be stored in the FPGA chip. Root key and other information.
  • the formed key agreement module, decryption verification module, etc., the implemented functional logic can be changed and upgraded, and the information stored in the deployed preset certificate, authentication root key and other information may also be different from the information before the update .
  • the FPGA board can remotely negotiate with the user to obtain a new configuration file deployment key based on the updated key agreement module, authentication root key, etc., and the configuration file deployment key can be used for the next renewal Update process. Similarly, a reliable update operation for FPGA boards can be continuously implemented accordingly.
  • the FPGA board can generate certification results for the new version of the circuit logic configuration file.
  • the above-mentioned key agreement module can calculate the hash value of the new version of the circuit logic configuration file and the hash value of the configuration file deployment key negotiated based on the new version of the circuit logic configuration file through an algorithm such as sm3 or other algorithms.
  • the calculation result can be used as the above-mentioned authentication result, and the key agreement module sends the authentication result to the user.
  • the user can verify the authentication result on the client based on the maintained new version of the circuit logic configuration file and the configuration file deployment key negotiated accordingly. If the verification is successful, it indicates that the new version of the circuit logic configuration file is successful on the FPGA board. Deployed, and the user and the FPGA board successfully negotiated accordingly to obtain a consistent configuration file deployment key, thereby confirming the successful completion of the circuit logic configuration file update deployment.
  • Fig. 4 is a schematic structural diagram of a device for implementing external calls in an FPGA provided by an exemplary embodiment.
  • the device for implementing external calls in FPGA may include a receiving unit 401 and a sending unit 402.
  • the receiving unit 401 enables the coprocessor on the FPGA chip to receive the call request sent by the central processing unit during the execution of the smart contract; wherein the FPGA chip belongs to the FPGA structure, and the smart contract and the area to which the FPGA structure belongs The transaction received by the blockchain node is related.
  • the sending unit 402 is configured to cause the coprocessor to send a call instruction to a target call object that can respond to the call request, so that the target call object responds to the call request; wherein, the FPGA structure contains The circuit logic configuration file deployed in the memory is loaded to the FPGA chip to form the central processing unit and the coprocessor.
  • the target invocation object is a local object on the FPGA structure; or, when the invocation request is a remote invocation request, the target invocation object is and The external object connected to the FPGA structure, or the target calling object is the external object and the local object.
  • the local object includes: a preset function module formed on the FPGA chip by loading the circuit logic configuration file.
  • the preset function module includes at least one of the following: an encryption module, which is used to encrypt plaintext data generated by the central processing unit; and a decryption module, which is used to encrypt the ciphertext transferred from the outside of the FPGA structure
  • the data is decrypted;
  • the calculation module is used to execute the calculation operations involved in the smart contract;
  • the cache module is used to store the contract state generated by the smart contract.
  • the external object includes: an external storage device or a node host included in the blockchain node.
  • the call request is used to read and write data with the external storage device or the node host.
  • the transaction is used to deploy or invoke the smart contract.
  • the contract code of the smart contract is a bytecode program
  • the central processing unit is a bytecode instruction set CPU.
  • the central processing unit is used to implement virtual machine logic.
  • the virtual machine logic includes: the execution logic of the Ethereum virtual machine or the execution logic of the WASM virtual machine.
  • a typical implementation device is a computer.
  • the specific form of the computer can be a personal computer, a laptop computer, a cellular phone, a camera phone, a smart phone, a personal digital assistant, a media player, a navigation device, an email receiving and sending device, and a game control A console, a tablet computer, a wearable device, or a combination of any of these devices.
  • the computer includes one or more processors (CPU), input/output interfaces, network interfaces, and memory.
  • processors CPU
  • input/output interfaces network interfaces
  • memory volatile and non-volatile memory
  • the memory may include non-permanent 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 computer readable media.
  • RAM random access memory
  • ROM read-only memory
  • flash RAM flash memory
  • Computer-readable media include permanent and non-permanent, removable and non-removable media, and information storage can be realized by any method or technology.
  • the information can be computer-readable instructions, data structures, program modules, 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, CD-ROM, digital versatile disc (DVD) or other optical storage, Magnetic cassettes, disk storage, quantum memory, graphene-based storage media or other magnetic storage devices or any other non-transmission media can be used to store information that can be accessed by computing devices. According to the definition in this article, computer-readable media does not include transitory media, such as modulated data signals and carrier waves.
  • first, second, third, etc. may be used to describe various information in one or more embodiments of this specification, the information should not be limited to these terms. These terms are only used to distinguish the same type of information from each other.
  • first information may also be referred to as second information, and similarly, the second information may also be referred to as first information.
  • word “if” as used herein can be interpreted as "when” or “when” or "in response to determination”.

Abstract

One or more embodiments of the present description provide a method and apparatus for implementing an external call in an FPGA. The method may comprise: a coprocessor on an FPGA chip receives a call request sent by a central processing unit during the process of executing a smart contract, wherein the FPGA chip is an FPGA structure, and the smart contract is relevant to a transaction received by a blockchain node to which the FPGA structure belongs; and the coprocessor sends a call instruction to a target call object which can respond to the call request, so that the target call object responds to the call request, wherein a circuit logic configuration file deployed in a memory comprised in the FPGA structure is loaded into the FPGA chip, so as to form the central processing unit and the coprocessor.

Description

在FPGA中实现外部调用的方法及装置Method and device for realizing external call in FPGA 技术领域Technical field
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种在FPGA中实现外部调用的方法及装置。One or more embodiments of this specification relate to the field of blockchain technology, and in particular, to a method and device for implementing external calls in FPGA.
背景技术Background technique
区块链技术构建在传输网络(例如点对点网络)之上。传输网络中的网络节点利用链式数据结构来验证与存储数据,并采用分布式节点共识算法来生成和更新数据。Blockchain technology is built on a transmission network (such as a peer-to-peer network). The network nodes in the transmission network use chained data structures to verify and store data, and use distributed node consensus algorithms to generate and update data.
目前企业级的区块链平台技术上最大的两个挑战就是隐私和性能,往往这两个挑战很难同时解决。大多解决方案都是通过损失性能换取隐私,或者不大考虑隐私去追求性能。常见的解决隐私问题的加密技术,如同态加密(Homomorphic encryption)和零知识证明(Zero-knowledge proof)等复杂度高,通用性差,而且还可能带来严重的性能损失。At present, the two biggest challenges in enterprise-level blockchain platform technology are privacy and performance. It is often difficult to solve these two challenges at the same time. Most of the solutions are to lose performance in exchange for privacy, or do not consider privacy to pursue performance. Common encryption technologies that solve privacy problems, such as Homomorphic encryption and Zero-knowledge proof, are highly complex, have poor versatility, and may also cause serious performance losses.
可信执行环境(Trusted Execution Environment,TEE)是另一种解决隐私问题的方式。TEE可以起到硬件中的黑箱作用,在TEE中执行的代码和数据操作系统层都无法偷窥,只有代码中预先定义的接口才能对其进行操作。在效率方面,由于TEE的黑箱性质,在TEE中进行运算的是明文数据,而不是同态加密中的复杂密码学运算,计算过程效率没有损失,因此与TEE相结合可以在性能损失较小的前提下很大程度上提升区块链的安全性和隐私性。目前工业界十分关注TEE的方案,几乎所有主流的芯片和软件联盟都有自己的TEE解决方案,包括软件方面的TPM(Trusted Platform Module,可信赖平台模块)以及硬件方面的Intel SGX(Software Guard Extensions,软件保护扩展)、ARM Trustzone(信任区)和AMD PSP(Platform Security Processor,平台安全处理器)。Trusted Execution Environment (TEE) is another way to solve privacy issues. TEE can play the role of a black box in the hardware. Neither the code executed in the TEE nor the data operating system layer can be peeped, and only the pre-defined interface in the code can operate on it. In terms of efficiency, due to the black box nature of TEE, plaintext data is calculated in TEE instead of complex cryptographic operations in homomorphic encryption. There is no loss of efficiency in the calculation process. Therefore, the combination with TEE can achieve less performance loss. Under the premise, the security and privacy of the blockchain are greatly improved. At present, the industry is very concerned about the TEE solution. Almost all mainstream chip and software alliances have their own TEE solutions, including TPM (Trusted Platform Module) in software and Intel SGX (Software Guard Extensions) in hardware. , Software Protection Extension), ARM Trustzone (trust zone) and AMD PSP (Platform Security Processor, platform security processor).
发明内容Summary of the invention
有鉴于此,本说明书一个或多个实施例提供一种在FPGA中实现外部调用的方法及装置。In view of this, one or more embodiments of this specification provide a method and device for implementing external calls in FPGA.
为实现上述目的,本说明书一个或多个实施例提供技术方案如下。To achieve the foregoing objectives, one or more embodiments of the present specification provide technical solutions as follows.
根据本说明书一个或多个实施例的第一方面,提出了一种在FPGA中实现外部调 用的方法,包括:FPGA芯片上的协处理器接收中央处理器在执行智能合约的过程中发出的调用请求;其中,所述FPGA芯片属于FPGA结构,所述智能合约与所述FPGA结构所属的区块链节点接收到的交易相关;所述协处理器向可响应于所述调用请求的目标调用对象发送调用指令,使所述目标调用对象对所述调用请求进行响应处理;其中,所述FPGA结构所含的存储器中已部署的电路逻辑配置文件被加载至所述FPGA芯片,以形成所述中央处理器和所述协处理器。According to the first aspect of one or more embodiments of this specification, a method for implementing external calls in an FPGA is proposed, which includes: the coprocessor on the FPGA chip receives the calls issued by the central processing unit during the execution of the smart contract Request; wherein the FPGA chip belongs to the FPGA structure, the smart contract is related to the transaction received by the blockchain node to which the FPGA structure belongs; the coprocessor calls the target to the target that can respond to the call request Send a call instruction to make the target call object respond to the call request; wherein the deployed circuit logic configuration file in the memory contained in the FPGA structure is loaded to the FPGA chip to form the center The processor and the coprocessor.
根据本说明书一个或多个实施例的第二方面,提出了一种在FPGA中实现外部调用的装置,包括:接收单元,使FPGA芯片上的协处理器接收中央处理器在执行智能合约的过程中发出的调用请求;其中,所述FPGA芯片属于FPGA结构,所述智能合约与所述FPGA结构所属的区块链节点接收到的交易相关;发送单元,使所述协处理器向可响应于所述调用请求的目标调用对象发送调用指令,使所述目标调用对象对所述调用请求进行响应处理;其中,所述FPGA结构所含的存储器中已部署的电路逻辑配置文件被加载至所述FPGA芯片,以形成所述中央处理器和所述协处理器。According to the second aspect of one or more embodiments of the present specification, a device for implementing external calls in FPGA is proposed, including: a receiving unit, which enables the coprocessor on the FPGA chip to receive the process of executing the smart contract by the central processor Where the FPGA chip belongs to the FPGA structure, and the smart contract is related to the transaction received by the blockchain node to which the FPGA structure belongs; the sending unit enables the coprocessor to respond to The target call object of the call request sends a call instruction to make the target call object respond to the call request; wherein, the circuit logic configuration file that has been deployed in the memory contained in the FPGA structure is loaded into the FPGA chip to form the central processing unit and the coprocessor.
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:处理器;According to a third aspect of one or more embodiments of this specification, an electronic device is proposed, including: a processor;
用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。A memory for storing executable instructions of a processor; wherein the processor executes the executable instructions to implement the method according to the first aspect.
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。According to the fourth aspect of one or more embodiments of the present specification, a computer-readable storage medium is provided, on which computer instructions are stored, and when the instructions are executed by a processor, the steps of the method described in the first aspect are implemented.
附图说明Description of the drawings
图1是一示例性实施例提供的一种在FPGA中实现外部调用的方法的流程图。Fig. 1 is a flowchart of a method for implementing external calls in FPGA provided by an exemplary embodiment.
图2是一示例性实施例提供的一种区块链节点的结构示意图。Fig. 2 is a schematic structural diagram of a blockchain node provided by an exemplary embodiment.
图3是一示例性实施例提供的一种在FPGA芯片上形成功能模块的示意图。Fig. 3 is a schematic diagram of forming a functional module on an FPGA chip provided by an exemplary embodiment.
图4是一示例性实施例提供的一种在FPGA中实现外部调用的装置的框图。Fig. 4 is a block diagram of a device for implementing external calls in FPGA provided by an exemplary embodiment.
具体实施方式detailed description
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实 施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。The exemplary embodiments will be described in detail here, and examples thereof are shown in the accompanying drawings. When the following description refers to the drawings, unless otherwise indicated, the same numbers in different drawings indicate the same or similar elements. The implementation manners described in the following exemplary embodiments do not represent all implementation manners consistent with one or more embodiments of this specification. Rather, they are merely examples of devices and methods consistent with some aspects of one or more embodiments of this specification as detailed in the appended claims.
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。It should be noted that in other embodiments, the steps of the corresponding method are not necessarily executed in the order shown and described in this specification. In some other embodiments, the method may include more or fewer steps than described in this specification. In addition, a single step described in this specification may be decomposed into multiple steps for description in other embodiments; and multiple steps described in this specification may also be combined into a single step in other embodiments. description.
区块链一般被划分为三种类型:公有链(Public Blockchain)、私有链(Private Blockchain)和联盟链(Consortium Blockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。Blockchain is generally divided into three types: Public Blockchain, Private Blockchain and Consortium Blockchain. In addition, there are many types of combinations, such as private chain + alliance chain, alliance chain + public chain and other different combinations. Among them, the most decentralized one is the public chain. The public chain is represented by Bitcoin and Ethereum. Participants who join the public chain can read the data records on the chain, participate in transactions, and compete for the accounting rights of new blocks. Moreover, each participant (ie, node) can freely join and exit the network, and perform related operations. The private chain is the opposite. The write permission of the network is controlled by an organization or institution, and the data read permission is regulated by the organization. In simple terms, the private chain can be a weakly centralized system with strict restrictions and few participating nodes. This type of blockchain is more suitable for internal use by specific institutions. Consortium chain is a block chain between public chain and private chain, which can realize "partial decentralization". Each node in the alliance chain usually has a corresponding entity or organization; participants are authorized to join the network and form a stakeholder alliance to jointly maintain the operation of the blockchain.
不论是公有链、私有链还是联盟链,区块链网络中的节点出于隐私保护的目的,均可能通过区块链与TEE(Trusted Execution Environment,可信执行环境)相结合的解决方案,在TEE内执行收到的交易。TEE是基于CPU硬件的安全扩展,且与外部完全隔离的可信执行环境。TEE最早是由Global Platform提出的概念,用于解决移动设备上资源的安全隔离,平行于操作系统为应用程序提供可信安全的执行环境。ARM的Trust Zone技术最早实现了真正商用的TEE技术。伴随着互联网的高速发展,安全的需求越来越高,不仅限于移动设备,云端设备,数据中心都对TEE提出了更多的需求。TEE的概念也得到了高速的发展和扩充。现在所说的TEE相比与最初提出的概念已经是更加广义的TEE。例如,服务器芯片厂商Intel,AMD等都先后推出了硬件辅助的TEE并丰富了TEE的概念和特性,在工业界得到了广泛的认可。现在提起的TEE通常更多指这类硬件辅助的TEE技术。Regardless of whether it is a public chain, a private chain or a consortium chain, for the purpose of privacy protection, the nodes in the blockchain network may use a solution that combines the blockchain and the TEE (Trusted Execution Environment). Execute received transactions within TEE. TEE is a secure extension based on CPU hardware and a trusted execution environment that is completely isolated from the outside. TEE was first proposed by Global Platform to solve the security isolation of resources on mobile devices, and parallel to the operating system to provide a trusted and secure execution environment for applications. ARM's Trust Zone technology is the first to realize the real commercial TEE technology. With the rapid development of the Internet, security requirements are getting higher and higher. Not only mobile devices, cloud devices, and data centers have put forward more demands on TEE. The concept of TEE has also been rapidly developed and expanded. Compared with the originally proposed concept, the TEE referred to now is a more generalized TEE. For example, server chip manufacturers Intel and AMD have successively introduced hardware-assisted TEE and enriched the concepts and features of TEE, which has been widely recognized in the industry. The TEE mentioned now usually refers more to this kind of hardware-assisted TEE technology.
以Intel SGX技术为例,SGX提供了围圈(enclave,也称为飞地),即内存中一个加密的可信执行区域,由CPU保护数据不被窃取。以第一区块链节点采用支持SGX的CPU为例,利用新增的处理器指令,在内存中可以分配一部分区域EPC(Enclave Page Cache,围圈页面缓存或飞地页面缓存),通过CPU内的加密引擎MEE(Memory Encryption Engine)对其中的数据进行加密。EPC中加密的内容只有进入CPU后才会被解密成明文。因此,在SGX中,用户可以不信任操作系统、VMM(Virtual Machine Monitor,虚拟机监控器)、甚至BIOS(Basic Input Output System,基本输入输出系统),只需要信任CPU便能确保隐私数据不会泄漏。因此,围圈就相当于SGX技术下产生的TEE。Taking Intel SGX technology as an example, SGX provides an enclave (also known as an enclave), which is an encrypted trusted execution area in the memory, and the CPU protects data from being stolen. Taking the first blockchain node using a CPU that supports SGX as an example, using the newly added processor instructions, a part of the area EPC (Enclave Page Cache, enclave page cache or enclave page cache) can be allocated in the memory, and through the CPU The encryption engine MEE (Memory Encryption Engine) encrypts the data in it. The encrypted content in EPC will be decrypted into plain text only after entering the CPU. Therefore, in SGX, users can distrust the operating system, VMM (Virtual Machine Monitor), and even BIOS (Basic Input Output System). They only need to trust the CPU to ensure that private data will not leakage. Therefore, the enclosure is equivalent to the TEE produced under SGX technology.
不同于移动端,云端访问需要远程访问,终端用户对硬件平台不可见,因此使用TEE的第一步就是要确认TEE的真实可信。例如,相关技术中提供了针对上述SGX技术的远程证明机制,以用于证明目标设备上的SGX平台与挑战方部署了相同的配置文件。但是,由于相关技术中的TEE技术是以软件或软硬件结合的方式实现,使得即便通过远程证明方式可以在一定程度上表明TEE内所部署的配置文件未经篡改,但是TEE本身所依托的运行环境却无法被验证。例如,在需要实现隐私功能的区块链节点上,TEE内需要配置用于执行智能合约的虚拟机,该虚拟机所执行的指令并非直接执行,而是实际上执行了对应的若干条X86指令(假定目标设备采用X86架构),从而造成了一定程度上的安全性风险。Different from the mobile terminal, cloud access requires remote access, and the end user is invisible to the hardware platform. Therefore, the first step in using TEE is to confirm the authenticity of TEE. For example, the related technology provides a remote certification mechanism for the above-mentioned SGX technology to prove that the SGX platform on the target device and the challenger have deployed the same configuration file. However, because the TEE technology in the related technology is implemented by software or a combination of software and hardware, even if the remote attestation method can indicate to a certain extent that the configuration file deployed in the TEE has not been tampered with, the TEE itself depends on the operation The environment cannot be verified. For example, on a blockchain node that needs to implement privacy functions, a virtual machine for executing smart contracts needs to be configured in the TEE. The instructions executed by the virtual machine are not directly executed, but actually executed corresponding X86 instructions (Assuming that the target device adopts the X86 architecture), which poses a certain degree of security risk.
为此,本说明书提出了一种基于FPGA实现的硬件TEE技术,FPGA通过加载电路逻辑配置文件而实现硬件TEE。由于电路逻辑配置文件的内容可以被预先查看与检验,并且FPGA完全基于电路逻辑配置文件中记载的逻辑而配置运行,因而可以确保FPGA所实现的硬件TEE具有相对更高的安全性。其中,电路逻辑配置文件可以在FPGA上形成用于执行智能合约的代码程序的中央处理器,以满足对智能合约的运行。中央处理器在执行代码程序的过程中,出于提升运行效率或数据交互等方面的目的,需要实现外部调用。因此,本说明书中通过在FPGA上配置形成协处理器,可以提升运行效率。To this end, this specification proposes a hardware TEE technology based on FPGA implementation. FPGA implements hardware TEE by loading circuit logic configuration files. Because the content of the circuit logic configuration file can be checked and verified in advance, and the FPGA is configured and operated completely based on the logic recorded in the circuit logic configuration file, it can be ensured that the hardware TEE implemented by the FPGA has relatively higher security. Among them, the circuit logic configuration file can form a central processing unit for executing the code program of the smart contract on the FPGA to satisfy the operation of the smart contract. In the process of executing code programs, the central processing unit needs to implement external calls for the purpose of improving operating efficiency or data interaction. Therefore, in this specification, the operating efficiency can be improved by configuring the coprocessor on the FPGA.
以下结合实施例说明本说明书提供的一种在FPGA中实现外部调用的方法,以满足中央处理器的外部调用需求。The following describes a method for implementing external calls in FPGA provided in this specification in conjunction with embodiments, so as to meet the external call requirements of the central processing unit.
图1是一示例性实施例提供的一种在FPGA中实现外部调用的方法的流程图。如图1所示,该方法应用于FPGA结构,可以包括以下步骤102和步骤104。Fig. 1 is a flowchart of a method for implementing external calls in FPGA provided by an exemplary embodiment. As shown in FIG. 1, the method is applied to the FPGA structure and may include the following steps 102 and 104.
步骤102,FPGA芯片上的协处理器接收中央处理器在执行智能合约的过程中发出 的调用请求;其中,所述FPGA芯片属于FPGA结构,所述智能合约与所述FPGA结构所属的区块链节点接收到的交易相关。Step 102: The coprocessor on the FPGA chip receives the call request sent by the central processing unit during the execution of the smart contract; wherein, the FPGA chip belongs to the FPGA structure, and the smart contract and the blockchain to which the FPGA structure belongs The transaction received by the node is related.
通过对FPGA芯片进行配置,可以在FPGA芯片上形成中央处理器,该中央处理器用于实现虚拟机逻辑,相当于在FPGA芯片上配置形成的“硬件虚拟机”,譬如该虚拟机逻辑可以包括以太坊虚拟机的执行逻辑或者WASM虚拟机的执行逻辑等,本说明书并不对此进行限制。By configuring the FPGA chip, a central processing unit can be formed on the FPGA chip. The central processing unit is used to implement virtual machine logic, which is equivalent to a "hardware virtual machine" configured on the FPGA chip. For example, the virtual machine logic can include Ethernet This manual does not limit the execution logic of the Fang virtual machine or the execution logic of the WASM virtual machine.
在智能合约的合约代码为字节码(Byte-code)程序的情况下,中央处理器可以为字节码指令集CPU。字节码由一连串的字节组成,每一字节可以标识一个操作。基于开发效率、可读性等多方面考虑,开发者可以不直接书写字节码程序,而是选择一门高级语言编写智能合约的代码程序。高级语言编写的代码程序经过编译器编译,可以生成相应的字节码程序,进而该字节码程序可以部署至区块链。以太坊支持的高级语言很多,如Solidity、Serpent、LLL语言等。上述的编译器可以部署在客户端上,使得该客户端可以通过该编译器将采用高级语言编写的代码程序编译为字节码程序后,通过交易提交至区块链网络;或者,上述的编译器可以部署在区块链节点处,使得区块链节点在收到客户端提交的交易后,通过编译器将采用高级语言编写的代码程序编译为字节码程序。When the contract code of the smart contract is a byte-code program, the central processing unit may be a byte-code instruction set CPU. The bytecode consists of a series of bytes, and each byte can identify an operation. Based on many considerations such as development efficiency and readability, developers may not directly write bytecode programs, but choose a high-level language to write code programs for smart contracts. A code program written in a high-level language is compiled by a compiler to generate a corresponding bytecode program, and then the bytecode program can be deployed to the blockchain. There are many high-level languages supported by Ethereum, such as Solidity, Serpent, and LLL languages. The above-mentioned compiler can be deployed on the client, so that the client can use the compiler to compile a code program written in a high-level language into a bytecode program, and then submit it to the blockchain network through a transaction; or, the above-mentioned compilation The processor can be deployed at the blockchain node, so that after receiving the transaction submitted by the client, the blockchain node compiles a code program written in a high-level language into a bytecode program through a compiler.
以Solidity语言为例,用其编写的合约与面向对象编程语言中的类(Class)很相似,在一个合约中可以声明多种成员,包括合约状态(或称状态变量)、函数、函数修改器、事件等。合约状态是永久存储在智能合约的账户存储中的值,用于保存合约的状态。Take the Solidity language as an example. The contract written in it is very similar to the class in the object-oriented programming language. A variety of members can be declared in a contract, including contract state (or state variable), function, and function modifier. , Events, etc. The contract state is the value permanently stored in the account storage of the smart contract and is used to save the state of the contract.
如下是以Solidity语言编写的一个简单的智能合约的代码示例:The following is a code example of a simple smart contract written in Solidity language:
Figure PCTCN2020100491-appb-000001
Figure PCTCN2020100491-appb-000001
对于上述代码示例中的C()函数部分,编译器的编译结果例如为如下所示(/*…*/中…的部分为注释,后面如有汉字则为对应的中文注释):For the C() function part of the above code example, the compilation result of the compiler is, for example, as shown below (/*...*/The part of... is a comment, and if there are Chinese characters after it, it is the corresponding Chinese comment):
/*compile function C()balance+=1编译函数C()balance+=1*//*compile function C()balance+=1 Compile function C()balance+=1*/
tag_2tag_2
/*pushes 1 onto stack将1压入栈顶,这个1就是要赋值的1*//*pushes 1 onto stack pushes 1 onto the top of the stack, this 1 is the 1 to be assigned*/
0x10x1
/*pushes 0 onto stack将0压入栈顶,这个0是指balance这个数据将要存储到合约账户数据存储的0号位置。上面这两句执行完后,堆栈里从顶往下,就有了0和1两个数据*//*pushes 0 onto the stack pushes 0 onto the top of the stack. This 0 means that the data of balance will be stored in position 0 of the contract account data storage. After the above two sentences are executed, from the top to the bottom of the stack, there are two data of 0 and 1*/
0x00x0
/*balance+=1将balance赋值为balance+1后的值*//*balance+=1 Assign balance to the value after balance+1*/
dup2/*复制栈中从顶往下数的第二项,所以这时堆栈从顶往上就有了1、0、1三个数据*/dup2/*copy the second item from the top to the bottom in the stack, so at this time the stack has 1, 0, and 1 data from the top to the top*/
swap1/*交换栈顶的两项数据,这时堆栈从顶往下存储的是0、1、1*/swap1/*Swap the two data at the top of the stack. At this time, the stack stores 0, 1, 1 from the top to the bottom*/
/*store(0x0,0x1)存储(0x0,0x1),从栈顶往下数,将第二项数据存储到第一项标识的位置上,同时将这两项弹出堆栈。这里便是将数据1存储到0号位置,前面因为已经将balance与0号位置做了绑定,所以就完成了balance=1的赋值。这时堆栈里就只剩一层数据:1*//*store(0x0,0x1) stores (0x0,0x1), counts down from the top of the stack, stores the second item of data to the location identified by the first item, and simultaneously pops these two items from the stack. Here is to store data 1 to position 0. Because the balance has been bound to position 0, the assignment of balance=1 is completed. At this time, there is only one layer of data left in the stack: 1*/
sstoresstore
pop/*丢弃栈顶数据,这时堆栈变成空,等待下一条指令的执行*/pop/*discard the data on the top of the stack, at this time the stack becomes empty, waiting for the execution of the next instruction*/
可见,上述代码示例中的Solidity代码被编译为相应的字节码程序,该字节码程序所含的每一字节码包括一个字节长度的操作码(Opcode)及跟随在后的零至多个操作数(Operands),该操作数为相应操作码在执行时所需的参数。It can be seen that the Solidity code in the above code example is compiled into a corresponding bytecode program, and each bytecode contained in the bytecode program includes a byte-length opcode (Opcode) and the following zero at most Operands (Operands), which are the parameters required by the corresponding operation code during execution.
在相关技术中,当上述字节码程序运行于区块链节点上的虚拟机时,譬如该区块链节点采用X86架构,那么该区块链节点将字节码程序在虚拟机内运行时,实际上是通过X86指令集来模拟实现字节码程序所含的各个字节码。而在本说明书的技术方案中,通过在FPGA芯片上配置形成上述的字节码指令集CPU,使得该字节码指令集CPU在执行字节码程序的过程中,直接采用字节码指令集中的字节码指令执行字节码程序所含 的各个字节码,而无需通过其他指令集来模拟执行字节码程序,从而具有相对更高的处理效率。In related technologies, when the above-mentioned bytecode program runs on a virtual machine on a blockchain node, for example, if the blockchain node adopts the X86 architecture, then the blockchain node will execute the bytecode program in the virtual machine. , In fact, through the X86 instruction set to simulate each bytecode contained in the bytecode program. In the technical solution of this specification, the above-mentioned bytecode instruction set CPU is configured on the FPGA chip, so that the bytecode instruction set CPU directly adopts the bytecode instruction set during the execution of the bytecode program. The bytecode instructions execute each bytecode contained in the bytecode program, without the need to simulate the execution of the bytecode program through other instruction sets, so that it has a relatively higher processing efficiency.
上述的字节码指令集CPU维护有字节码指令集,该字节码指令集中可以包含预定义的任意类型的字节码指令。例如,add指令用于实现加运算,sub指令用于实现减运算,mul指令用于实现乘运算,div指令用于实现除运算,or指令用于实现按位或运算,and指令用于实现按位与运算,xor指令用于实现按位异或运算等,本说明书并不对此进行限制。The above-mentioned bytecode instruction set CPU maintains a bytecode instruction set, and the bytecode instruction set can include any type of predefined bytecode instructions. For example, add instruction is used to implement addition operation, sub instruction is used to implement subtraction operation, mul instruction is used to implement multiplication operation, div instruction is used to implement division operation, or instruction is used to implement bitwise OR operation, and instruction is used to implement press Bitwise AND operation, xor instruction is used to realize bitwise XOR operation, etc. This manual does not limit this.
当然,本说明书中的中央处理器可以并非字节码指令集CPU,譬如该中央处理器可以采用其他形式的指令集,并通过该其他形式的指令集模拟执行字节码程序所含的各个字节码,同样可以实现对智能合约的执行。Of course, the central processing unit in this specification may not be a bytecode instruction set CPU. For example, the central processing unit can use other forms of instruction sets, and simulate execution of each word contained in the bytecode program through the other forms of instruction sets. The code section can also implement the execution of smart contracts.
上述交易可以用于部署或调用智能合约。如果该交易用于部署智能合约,那么交易内容的data字段会包含该智能合约的代码程序;若代码程序基于高级语言编写,则FPGA结构还可以通过已部署的电路逻辑配置文件在FPGA芯片上形成编译器,并通过该编译器将代码程序编译为字节码程序。如果该交易用于调用智能合约,那么交易内容的to字段会包含被调用的智能合约的合约地址,而FPGA结构可以基于该合约地址调用相应已部署的字节码程序。The above transactions can be used to deploy or call smart contracts. If the transaction is used to deploy a smart contract, the data field of the transaction content will contain the code program of the smart contract; if the code program is written in a high-level language, the FPGA structure can also be formed on the FPGA chip through the deployed circuit logic configuration file A compiler, and the code program is compiled into a bytecode program through the compiler. If the transaction is used to call a smart contract, the to field of the transaction content will contain the contract address of the called smart contract, and the FPGA structure can call the corresponding deployed bytecode program based on the contract address.
步骤104,所述协处理器向可响应于所述调用请求的目标调用对象发送调用指令,使所述目标调用对象对所述调用请求进行响应处理;其中,所述FPGA结构所含的存储器中已部署的电路逻辑配置文件被加载至所述FPGA芯片,以形成所述中央处理器和所述协处理器。Step 104: The coprocessor sends a call instruction to a target call object that can respond to the call request, so that the target call object responds to the call request; wherein, the memory contained in the FPGA structure The deployed circuit logic configuration file is loaded into the FPGA chip to form the central processing unit and the coprocessor.
FPGA芯片上包含若干可编辑的硬件逻辑单元,这些硬件逻辑单元经由电路逻辑配置文件进行配置后,可以实现为相应的功能模块,以用于实现相应的逻辑功能。具体的,该电路逻辑配置文件可以基于比特流的形式被烧录至FPGA结构。因此,通过向FPGA结构部署相应的电路逻辑配置文件,可使FPGA芯片上形成如前所述的中央处理器和协处理器。The FPGA chip contains a number of editable hardware logic units. After these hardware logic units are configured via a circuit logic configuration file, they can be implemented as corresponding functional modules to implement corresponding logic functions. Specifically, the circuit logic configuration file can be burned to the FPGA structure based on the form of a bit stream. Therefore, by deploying the corresponding circuit logic configuration file to the FPGA structure, the central processing unit and the co-processor as described above can be formed on the FPGA chip.
协处理器(coprocessor)用于向中央处理器提供协助,以完成中央处理器无法完成的处理任务,或者中央处理器虽然能够完成但执行效率低下、效果不佳的处理任务等。协处理器通常独立于中央处理器而存在。协处理器通过接收中央处理器的相关请求,以实现针对中央处理器的协助操作。例如,如果中央处理器向协处理器发送针对目标调用 对象的调用请求,那么协处理器可以向该目标调用对象发送调用指令,以使得该目标调用对象可以满足中央处理器的调用需求。The coprocessor is used to provide assistance to the central processing unit to complete processing tasks that the central processing unit cannot complete, or although the central processing unit can complete processing tasks that are inefficient and perform poorly, etc. The coprocessor usually exists independently of the central processing unit. The co-processor receives related requests from the central processing unit to implement assisted operations for the central processing unit. For example, if the central processing unit sends a call request for a target calling object to the coprocessor, the coprocessor can send a calling instruction to the target calling object, so that the target calling object can meet the calling requirements of the central processing unit.
上述的调用请求可以包括local call,即该调用请求为本地调用请求,相应的目标调用对象为FPGA结构上的本地对象;或,上述的调用请求可以包括remote call,即该调用请求为远程调用请求,相应的目标调用对象为与FPGA结构相连的外部对象,或者相应的目标调用对象同时包含外部对象和本地对象。可见,目标调用对象的数量可能很多,通过设置协处理器可以避免由中央处理器直接与各个目标调用对象进行对接,中央处理器只需对接协处理器、而由协处理器与各个目标调用对象进行对接,不仅可以实现更高的对接效率,而且极大地节省了中央处理器在外部对接方面所需消耗的资源,以用于提升对智能合约的执行效率。The above call request may include local call, that is, the call request is a local call request, and the corresponding target call object is a local object on the FPGA structure; or, the above call request may include remote call, that is, the call request is a remote call request , The corresponding target call object is an external object connected to the FPGA structure, or the corresponding target call object includes both external objects and local objects. It can be seen that there may be a large number of target call objects. By setting the coprocessor, it can be avoided that the central processor directly docks with each target call object. The central processor only needs to dock the coprocessor, and the coprocessor calls the objects with each target. The docking can not only achieve higher docking efficiency, but also greatly save the resources consumed by the central processing unit in terms of external docking, so as to improve the execution efficiency of smart contracts.
当目标调用对象包括本地对象时,该本地对象可以包括通过加载上述电路逻辑配置文件而在FPGA芯片上形成的预设功能模块。例如,该预设功能模块可以包括以下至少之一:加密模块,用于对所述中央处理器产生的明文数据进行加密;解密模块,用于对外部传入所述FPGA结构的密文数据进行解密;计算模块,用于执行所述智能合约涉及的计算操作;缓存模块,用于存储所述智能合约产生的合约状态等,本说明书并不对此进行限制。When the target calling object includes a local object, the local object may include a preset function module formed on the FPGA chip by loading the above-mentioned circuit logic configuration file. For example, the preset function module may include at least one of the following: an encryption module, which is used to encrypt plaintext data generated by the central processing unit; a decryption module, which is used to perform encryption on ciphertext data transferred from the outside to the FPGA structure. Decryption; calculation module, used to perform calculation operations related to the smart contract; cache module, used to store the state of the contract generated by the smart contract, etc., this specification does not limit this.
例如,当交易发起方存在隐私保护需求时,可以向区块链提交经过加密的隐私交易,使得区块链节点向FPGA结构传入该隐私交易。隐私交易被传入中央处理器后,中央处理器可以通过向协处理器发起local call,以针对解密模块进行调用,那么协处理器可以将隐私交易传输至解密模块,并将解密模块进行解密得到的明文交易内容返回至中央处理器。如前所述,当该隐私交易用于部署智能合约时,中央处理器可从收到的明文交易内容的data字段获得该智能合约的合约代码;当该隐私交易用于调用智能合约时,中央处理器可以从收到的明文交易内容的to字段获得该智能合约的合约地址,进而基于该合约地址获得相应的合约代码:如果合约代码被部署于上述的缓存模块中,则中央处理器可以通过向协处理器发起local call,以使得协处理器协助从缓存模块中调取相应的合约代码,如果合约代码被部署于区块链节点或者与FPGA芯片相连的外部存储设备处,则涉及到目标调用对象为外部对象的情况,下文将对此详述。For example, when the transaction initiator has a privacy protection requirement, it can submit an encrypted private transaction to the blockchain, so that the blockchain node transmits the private transaction to the FPGA structure. After the private transaction is transferred to the central processing unit, the central processing unit can initiate a local call to the co-processor to call the decryption module, then the co-processor can transmit the private transaction to the decryption module, and decrypt the decryption module to obtain the result The clear text transaction content is returned to the central processing unit. As mentioned earlier, when the private transaction is used to deploy a smart contract, the central processor can obtain the contract code of the smart contract from the data field of the received plaintext transaction content; when the private transaction is used to call the smart contract, the central processor can obtain the contract code of the smart contract. The processor can obtain the contract address of the smart contract from the to field of the received plaintext transaction content, and then obtain the corresponding contract code based on the contract address: if the contract code is deployed in the above-mentioned cache module, the central processor can pass Initiate a local call to the coprocessor, so that the coprocessor assists in retrieving the corresponding contract code from the cache module. If the contract code is deployed on a blockchain node or an external storage device connected to the FPGA chip, the target is involved The case where the calling object is an external object will be described in detail below.
中央处理器在运行合约代码的过程中,可能需要调用计算模块进行协助处理。例如,当合约代码被表征为wasm字节码程序时,由于wasm字节码规定了数据长度为32b或64b,因而在针对一些长度较大的数据进行处理时,往往会影响其处理效率。譬如在 针对长度为1024b的数据进行比较时,若直接由中央处理器进行处理,需要将该1024b长度的数据划分为32个32b或16个64b长度的数据段,然后分别对各个数据段进行比较,需要比较32次或16次;而如果采用FPGA芯片上额外配置的计算模块,则可以不受wasm字节码的限制,譬如可以将数据最大长度设定为1024b或更大,那么只需一次即可完成对1024b长度数据的比较操作,极大地提升了处理效率。类似地,在实现诸如大数乘法等运算过程中,对于计算模块的调用均可以极大地提升对合约代码的执行效率。In the process of running the contract code, the central processing unit may need to call the calculation module to assist in processing. For example, when the contract code is characterized as a wasm bytecode program, since the wasm bytecode specifies a data length of 32b or 64b, the processing efficiency of some large-length data is often affected. For example, when comparing data with a length of 1024b, if it is directly processed by the central processing unit, the data with a length of 1024b needs to be divided into 32 data segments with a length of 32b or 16 data segments with a length of 64b, and then each data segment is compared separately , You need to compare 32 times or 16 times; and if you use the additional configuration of the calculation module on the FPGA chip, you can not be restricted by the wasm bytecode, for example, you can set the maximum data length to 1024b or greater, then only one time The comparison operation of 1024b length data can be completed, which greatly improves the processing efficiency. Similarly, in the process of realizing operations such as multiplication of large numbers, the call to the calculation module can greatly improve the execution efficiency of the contract code.
中央处理器运行合约代码后,可能使得合约代码所涉及的至少一部分合约状态发生取值变化。如果合约状态被维护于FPGA芯片上,比如上述的缓存模块,那么中央处理器可以向协处理器发起local call,使得协处理器将相关合约状态的更新后取值存储至上述的缓存模块;如果合约状态被维护于前述的区块链节点或外部存储设备处,则涉及到目标调用对象为外部对象的情况,下文将对此详述。类似地,中央处理器可以向协处理器发起local call,从而对合约代码执行产生的交易收据进行处理。After the central processing unit runs the contract code, the value of at least a part of the contract state involved in the contract code may change. If the contract state is maintained on the FPGA chip, such as the above-mentioned cache module, the central processing unit can initiate a local call to the coprocessor, so that the coprocessor can store the updated value of the relevant contract state in the above-mentioned cache module; if The state of the contract is maintained at the aforementioned blockchain node or external storage device, which involves the case where the target calling object is an external object, which will be described in detail below. Similarly, the central processing unit can initiate a local call to the coprocessor to process the transaction receipt generated by the execution of the contract code.
由于FPGA芯片内部被认为属于安全范围、FPGA芯片外部被认为属于非安全范围,因此当FPGA结构需要将诸如合约代码、合约状态、交易收据等从FPGA芯片向外传输时,譬如传输至区块链节点或外部存储设备,中央处理器需要通过向协处理器发起local call,使得协处理器可以将上述的合约代码、合约状态、交易收据等传输至前述的加密模块进行加密处理,确保向区块链节点或外部存储设备传输相应的密文合约代码、密文合约状态、密文交易收据等。Since the inside of the FPGA chip is considered to be in the safe range, and the outside of the FPGA chip is considered to be in the non-safe range, when the FPGA structure needs to transmit the contract code, contract status, transaction receipt, etc. from the FPGA chip to the outside, for example, to the blockchain For nodes or external storage devices, the central processing unit needs to initiate a local call to the coprocessor, so that the coprocessor can transmit the above-mentioned contract code, contract status, transaction receipt, etc. to the aforementioned encryption module for encryption processing to ensure that the block The chain node or external storage device transmits the corresponding ciphertext contract code, ciphertext contract status, ciphertext transaction receipt, etc.
当目标调用对象包括外部对象时,该外部对象可以包括:外部存储设备或区块链节点(实际为区块链节点包含的节点主机),而中央处理器所发起的调用请求用于与该外部存储设备或区块链节点进行数据读写。When the target calling object includes an external object, the external object may include: an external storage device or a blockchain node (actually a node host included in the blockchain node), and the call request initiated by the central processing unit is used to communicate with the external The storage device or blockchain node reads and writes data.
例如,FPGA结构在收到用于部署智能合约的交易后,针对从该交易中提取出的合约代码,可以通过向协处理器发起remote call,以使得协处理器协助向合约代码发送至上述的外部存储设备或区块链节点进行部署。协处理器与区块链节点之间可以通过建立DMA(Direct Memory Access,直接内存存取)连接以实现数据交互。For example, after the FPGA structure receives a transaction for deploying a smart contract, it can initiate a remote call to the coprocessor for the contract code extracted from the transaction, so that the coprocessor can assist in sending the contract code to the above External storage device or blockchain node for deployment. A DMA (Direct Memory Access) connection can be established between the coprocessor and the blockchain node to realize data interaction.
如前所述,FPGA结构在收到用于调用智能合约的交易后,如果相应的合约代码被部署于外部对象处,那么中央处理器可以通过向协处理器发起remote call,以使得协处理器协助从外部对象处获得合约代码,以由中央处理器予以执行。中央处理器在执行合约代码的过程中,需要使用所涉及的合约状态的取值,并在合约代码执行过程中或执行完毕后针对其中的至少一部分取值予以更新。其中,中央处理器可以通过向协处理器发 起remote call,以使得协处理器从外部对象处获得合约状态的取值,或者向外部对象返回更新后的合约状态的取值。此外,如前所述:从外部对象处获得的合约代码、合约状态等可能处于密文状态,中央处理器需要结合发起local call,以由协处理器调用解密模块进行解密,以及在向外部对象返回相关数据之前,中央处理器需要结合发起local call,以由协处理器调用加密模块进行加密。As mentioned earlier, after the FPGA structure receives the transaction used to call the smart contract, if the corresponding contract code is deployed at an external object, the central processing unit can initiate a remote call to the coprocessor to make the coprocessor Assist in obtaining contract code from external objects to be executed by the central processing unit. In the process of executing the contract code, the central processing unit needs to use the value of the contract state involved, and update at least a part of the value during or after the execution of the contract code. Among them, the central processing unit can send a remote call to the coprocessor, so that the coprocessor can obtain the value of the contract state from the external object, or return the value of the updated contract state to the external object. In addition, as mentioned earlier, the contract code and contract status obtained from external objects may be in ciphertext state. The central processing unit needs to initiate a local call together so that the coprocessor can call the decryption module for decryption. Before returning the relevant data, the central processing unit needs to initiate a local call together, so that the coprocessor can call the encryption module for encryption.
图2是一示例性实施例提供的一种区块链节点的结构示意图。基于本说明书的技术方案,可以在区块链节点上添加FPGA结构以实现硬件TEE,譬如该FPGA结构可以为如图2所示的FPGA板卡。FPGA板卡可以通过PCIE接口连接至区块链节点上,以实现FPGA板卡与区块链节点之间的数据交互。FPGA板卡可以包括FPGA芯片、Flash(闪存)芯片和密管芯片等结构;当然,在一些实施例中除了包含FPGA芯片之外,可能仅包含剩余的Flash芯片和密管芯片等中的部分结构,或者可能包含更多结构,此处仅用于举例。Fig. 2 is a schematic structural diagram of a blockchain node provided by an exemplary embodiment. Based on the technical solution in this specification, an FPGA structure can be added to the blockchain node to implement hardware TEE. For example, the FPGA structure can be an FPGA board as shown in FIG. 2. The FPGA board can be connected to the blockchain node through the PCIE interface to realize the data interaction between the FPGA board and the blockchain node. FPGA boards can include FPGA chips, Flash (flash memory) chips, and dense tube chips; of course, in addition to FPGA chips in some embodiments, they may only include parts of the remaining Flash chips and dense tube chips. , Or may contain more structures, here are just examples.
在初始阶段,FPGA芯片上并未烧录用户定义的任何逻辑,相当于FPGA芯片处于空白状态。用户可以通过向FPGA芯片上烧录电路逻辑配置文件,以在FPGA芯片上形成相应的功能或逻辑。在首次烧录电路逻辑配置文件时,FPGA板卡不具有安全防护的能力,因而通常需要外部提供安全环境,比如用户可以在离线环境下实施对电路逻辑配置文件的烧录以实现物理安全隔离,而非在线上实施远程烧录。In the initial stage, no user-defined logic is programmed on the FPGA chip, which is equivalent to the FPGA chip in a blank state. Users can burn circuit logic configuration files on the FPGA chip to form corresponding functions or logic on the FPGA chip. When programming the circuit logic configuration file for the first time, the FPGA board does not have the capability of security protection, so it usually needs to provide an external security environment. For example, users can implement the programming of the circuit logic configuration file in an offline environment to achieve physical security isolation. Instead of implementing remote programming online.
针对用户所需实现的功能或逻辑,可以通过FPGA硬件语言形成相应的逻辑代码,并进而对该逻辑代码进行镜像化处理,即可得到上述的电路逻辑配置文件。在烧录至FPGA板卡之前,用户可以针对上述的逻辑代码进行检查。尤其是,当同时涉及到多个用户时,多个用户可以分别对上述的逻辑代码进行检查,以确保FPGA板卡最终能够满足所有用户的需求,防止出现安全性风险、逻辑错误、欺诈等异常问题。For the function or logic that the user needs to implement, the corresponding logic code can be formed through FPGA hardware language, and then the logic code can be mirrored to obtain the above-mentioned circuit logic configuration file. Before programming to the FPGA board, the user can check the above-mentioned logic code. Especially, when multiple users are involved at the same time, multiple users can check the above logic code separately to ensure that the FPGA board can finally meet the needs of all users and prevent security risks, logic errors, fraud and other abnormalities. problem.
在确定代码无误后,用户可以在上述的离线环境下,将电路逻辑配置文件烧录至FPGA板卡上。具体的,电路逻辑配置文件被从区块链节点传入FPGA板卡,进而部署至如图2所示的Flash芯片中,使得即便FPGA板卡发生掉电,Flash芯片仍然能够保存上述的电路逻辑配置文件。After confirming that the code is correct, the user can burn the circuit logic configuration file to the FPGA board in the above-mentioned offline environment. Specifically, the circuit logic configuration file is transferred from the blockchain node to the FPGA board, and then deployed to the Flash chip as shown in Figure 2, so that even if the FPGA board is powered off, the Flash chip can still save the above-mentioned circuit logic. Configuration file.
图3是一示例性实施例提供的一种在FPGA芯片上形成功能模块的示意图。通过将Flash芯片中所部署的电路逻辑配置文件加载至FPGA芯片,可以对FPGA芯片所含的硬件逻辑单元进行配置,从而在FPGA芯片上形成相应的功能模块,譬如所形成的功能模块可以包括如图3所示的中央处理器、协处理器、缓存模块、加解密模块、计算模 块、密钥协商模块、解密验签模块等。同时,电路逻辑配置文件还可以用于向FPGA板卡传输需要存储的信息,比如可以将预置证书存储于FPGA芯片上、将认证根密钥存储于密管芯片中(认证根密钥也可以存储于FPGA芯片上)等。Fig. 3 is a schematic diagram of forming a functional module on an FPGA chip provided by an exemplary embodiment. By loading the circuit logic configuration file deployed in the Flash chip to the FPGA chip, the hardware logic unit contained in the FPGA chip can be configured to form corresponding functional modules on the FPGA chip. For example, the formed functional modules can include such The central processing unit, co-processor, cache module, encryption and decryption module, calculation module, key agreement module, decryption verification module, etc. shown in FIG. 3. At the same time, the circuit logic configuration file can also be used to transmit the information that needs to be stored to the FPGA board. For example, the preset certificate can be stored on the FPGA chip, and the authentication root key can be stored in the secret tube chip (the authentication root key can also be Stored on the FPGA chip) and so on.
基于FPGA芯片上所形成的密钥协商模块,以及部署于FPGA板卡上的认证根密钥,使得FPGA板卡可以与用户实现远程的密钥协商,该密钥协商过程可以采用相关技术中的任意算法或标准来实现,本说明书并不对此进行限制。举例而言,密钥协商过程可以包括:用户可以在本地的客户端生成一密钥Ka-1、密钥协商模块可以在本地生成一密钥Kb-1,且客户端可以基于密钥Ka-1计算得到密钥协商信息Ka-2、密钥协商模块可以基于密钥Kb-1计算得到密钥协商信息Kb-2,然后客户端将密钥协商信息Ka-2发送至密钥协商模块、密钥协商模块将密钥协商信息Kb-2发送至客户端,使得客户端可以基于密钥Ka-1与密钥协商信息Kb-2生成一秘密值,而密钥协商模块可以基于密钥Kb-1与密钥协商信息Ka-2生成相同的秘密值,最后由客户端、密钥协商模块分别基于密钥导出函数从该相同的秘密值导出相同的配置文件部署密钥,该配置文件部署密钥可以存在FPGA芯片或密管芯片。在上述过程中,虽然密钥协商信息Ka-2、密钥协商信息Kb-2是经由区块链节点在客户端与密钥协商模块之间传输,但是由于密钥Ka-1由客户端掌握、密钥Kb-1由密钥协商模块掌握,因而可以确保区块链节点无法获知最终得到的秘密值和配置文件部署密钥,避免可能造成的安全性风险。Based on the key agreement module formed on the FPGA chip and the authentication root key deployed on the FPGA board, the FPGA board can realize remote key agreement with the user. The key agreement process can use related technologies. Any algorithm or standard can be implemented, and this specification does not limit it. For example, the key agreement process can include: the user can generate a key Ka-1 at the local client, the key agreement module can generate a key Kb-1 locally, and the client can generate a key Kb-1 based on the key Ka- 1 Calculate the key agreement information Ka-2, the key agreement module can calculate the key agreement information Kb-2 based on the key Kb-1, and then the client sends the key agreement information Ka-2 to the key agreement module, The key agreement module sends the key agreement information Kb-2 to the client, so that the client can generate a secret value based on the key Ka-1 and the key agreement information Kb-2, and the key agreement module can be based on the key Kb -1 generates the same secret value as the key agreement information Ka-2, and finally the client and the key agreement module respectively derive the same configuration file deployment key from the same secret value based on the key derivation function, and the configuration file deployment The key can be stored in the FPGA chip or the secret management chip. In the above process, although the key agreement information Ka-2 and key agreement information Kb-2 are transmitted between the client and the key agreement module via the blockchain node, the key Ka-1 is controlled by the client , The key Kb-1 is controlled by the key agreement module, so it can ensure that the blockchain node cannot know the final secret value and the configuration file deployment key, so as to avoid possible security risks.
除了配置文件部署密钥之外,秘密值还用于导出业务秘密部署密钥;例如,秘密值可以导出32位数值,可以将前16位作为配置文件部署密钥、后16位作为业务秘密部署密钥。用户可以通过业务秘密部署密钥向FPGA板卡部署业务密钥,譬如该业务密钥可以包括节点私钥和业务根密钥。例如,用户可以在客户端上采用业务秘密部署密钥对节点私钥或业务根密钥进行签名、加密并发送至FPGA板卡,使得FPGA板卡通过解密验签模块进行解密、验签后,对得到的节点私钥或业务根密钥进行部署。In addition to the configuration file deployment key, the secret value is also used to derive the business secret deployment key; for example, the secret value can be derived as a 32-bit value, the first 16 bits can be used as the configuration file deployment key, and the last 16 bits can be used as the business secret deployment Key. The user can deploy the service key to the FPGA board through the service secret deployment key. For example, the service key may include the node private key and the service root key. For example, the user can use the business secret deployment key on the client to sign, encrypt the node private key or the business root key, and send it to the FPGA board, so that after the FPGA board is decrypted and verified through the decryption verification module, Deploy the obtained node private key or service root key.
基于部署的节点密钥、业务根密钥和FPGA芯片上的加解密模块、中央处理器、协处理器、计算模块等,使得FPGA板卡可以实现为区块链节点上的TEE,以满足隐私需求。例如,当区块链节点收到一笔交易时,如果该交易为明文交易,区块链节点可以直接处理该明文交易,如果该交易为隐私交易,区块链节点将该隐私交易传入FPGA板卡进行处理。Based on the deployed node key, business root key and encryption and decryption modules, central processing unit, coprocessor, computing module, etc. on the FPGA chip, the FPGA board can be implemented as a TEE on the blockchain node to meet privacy demand. For example, when a blockchain node receives a transaction, if the transaction is a plaintext transaction, the blockchain node can directly process the plaintext transaction, if the transaction is a private transaction, the blockchain node transmits the private transaction to the FPGA The board is processed.
明文交易的交易内容为明文形式,并且交易执行后所产生的合约状态等同样采用明文形式进行存储。隐私交易的交易内容为密文形式,由交易发起方对明文交易内容进 行加密而得到,且交易执行后产生的合约状态等需要采用密文形式进行存储,从而确保交易隐私保护。例如,交易发起方可以随机或基于其他方式生成一对称密钥,同样上述的业务私钥对应的业务公钥被公开,那么交易发起方可以基于该对称密钥和业务公钥对明文交易内容进行数字信封加密:交易发起方通过对称密钥加密明文交易内容,并通过业务公钥对该对称密钥进行加密,得到的两部分内容均被包含于上述的隐私交易中;换言之,隐私交易中包含两部分内容:采用对称密钥加密的明文交易内容、采用业务公钥加密的对称密钥。The transaction content of a plaintext transaction is in plaintext form, and the contract status generated after the transaction is executed is also stored in plaintext form. The transaction content of a private transaction is in ciphertext form, which is obtained by encrypting the plaintext transaction content by the transaction initiator, and the contract status generated after transaction execution needs to be stored in ciphertext form to ensure the protection of transaction privacy. For example, the transaction initiator can generate a symmetric key randomly or based on other methods. Similarly, the business public key corresponding to the above-mentioned business private key is disclosed, then the transaction initiator can perform transaction content in plaintext based on the symmetric key and the business public key. Digital Envelope Encryption: The transaction initiator encrypts the plaintext transaction content with a symmetric key, and encrypts the symmetric key with the business public key. The two parts obtained are included in the above-mentioned private transaction; in other words, the private transaction includes Two parts of content: the content of the transaction in plaintext encrypted with a symmetric key, and the symmetric key encrypted with the business public key.
因此,FPGA板卡在收到区块链节点传入的隐私交易后,可将该隐私交易交由中央处理器进行处理。中央处理器通过向协处理器发起local call的调用请求,由协处理器进一步调用加解密模块,使得加解密模块通过业务私钥对采用业务公钥加密的对称密钥进行解密、得到对称密钥,然后加解密模块进一步通过对称密钥对采用对称密钥加密的明文交易内容进行解密、得到明文交易内容。Therefore, after the FPGA board receives the private transaction from the blockchain node, the private transaction can be handed over to the central processing unit for processing. The central processor initiates a local call call request to the coprocessor, and the coprocessor further calls the encryption and decryption module, so that the encryption and decryption module uses the service private key to decrypt the symmetric key encrypted with the service public key to obtain the symmetric key , And then the encryption and decryption module further uses the symmetric key to decrypt the plaintext transaction content encrypted with the symmetric key to obtain the plaintext transaction content.
如果隐私交易用于部署智能合约,那么明文交易内容的data字段可以包含待部署的智能合约的合约代码。中央处理器可以对获得的合约代码进行部署。如果部署于FPGA芯片上的缓存模块,则中央处理器直接以明文形式将合约代码部署至缓存模块;如果部署于区块链节点(或其他外部对象,此处以区块链节点为例),则中央处理器通过向协处理器发起local call的调用请求,由协处理器调用加解密模块对该合约代码进行加密,进而将加密后的密文合约代码部署至区块链节点。If a private transaction is used to deploy a smart contract, the data field of the plaintext transaction content can contain the contract code of the smart contract to be deployed. The central processing unit can deploy the obtained contract code. If it is deployed on the cache module on the FPGA chip, the central processing unit directly deploys the contract code to the cache module in plain text; if it is deployed on a blockchain node (or other external object, here is a blockchain node as an example), then The central processor initiates a local call call request to the coprocessor, and the coprocessor calls the encryption and decryption module to encrypt the contract code, and then deploys the encrypted ciphertext contract code to the blockchain node.
如果隐私交易用于调用智能合约,那么明文交易内容的to字段可以包含被调用的智能合约的合约地址,而FPGA板卡可以基于该合约地址调取相应的合约代码。如果合约代码部署于FPGA芯片的缓存模块,该合约代码往往采用明文形式进行存储,那么协处理器可以直接从该缓存模块中获得合约代码,并交由中央处理器进行处理。如果合约代码部署于区块链节点,协处理器从区块链节点处获得密文合约代码,那么中央处理器需要进一步向协处理器发起local call的调用请求,由协处理器调用加解密模块对该密文合约代码进行解密,进而由中央处理器执行解密后的合约代码。If a private transaction is used to call a smart contract, the to field of the plaintext transaction content can contain the contract address of the called smart contract, and the FPGA board can retrieve the corresponding contract code based on the contract address. If the contract code is deployed in the cache module of the FPGA chip, the contract code is often stored in plain text, and the coprocessor can directly obtain the contract code from the cache module and hand it over to the central processing unit for processing. If the contract code is deployed on a blockchain node, and the coprocessor obtains the ciphertext contract code from the blockchain node, the central processing unit needs to further initiate a local call request to the coprocessor, and the coprocessor will call the encryption and decryption module The ciphertext contract code is decrypted, and the central processing unit executes the decrypted contract code.
中央处理器用于实现相关技术中的虚拟机逻辑,即中央处理器相当于FPGA板卡上的“硬件虚拟机”。因此,基于上述明文交易内容确定出合约代码后,可以将该合约代码传入中央处理器中,以由该中央处理器执行该合约代码。中央处理器可以为本说明书中的字节码指令集CPU,针对区块链节点所收到的交易需要部署或调用的智能合约,FPGA板卡可以将该智能合约的字节码程序读入字节码指令集CPU,使得字节码指令集 CPU直接执行该字节码程序所含的各个字节码,而无需通过其他指令集对字节码进行模拟,极大地提升了针对字节码的执行效率,从而加快了交易处理速度。The central processing unit is used to implement virtual machine logic in related technologies, that is, the central processing unit is equivalent to the "hardware virtual machine" on the FPGA board. Therefore, after the contract code is determined based on the foregoing plaintext transaction content, the contract code can be transferred to the central processing unit, so that the central processing unit executes the contract code. The central processing unit can be the bytecode instruction set CPU in this manual. For the smart contract that needs to be deployed or called for the transaction received by the blockchain node, the FPGA board can read the bytecode program of the smart contract into words The code instruction set CPU enables the bytecode instruction set CPU to directly execute each bytecode contained in the bytecode program, without the need to simulate the bytecode through other instruction sets, which greatly improves the performance of the bytecode. Execution efficiency, thereby speeding up transaction processing.
在中央处理器执行合约代码之前或过程中,需要获取该合约代码所涉及的合约状态的最近取值。合约状态的最近取值可能以明文形式部署于FPGA芯片上的缓存模块,那么中央处理器可以通过向协处理器发起local call的调用请求,由协处理器从缓存模块中调取合约状态的最近取值。合约状态的最近取值可能以密文形式部署于区块链节点(或其他外部对象)处,那么中央处理器可以通过向协处理器发起remote call的调用请求,由协处理器从区块链节点远程调用密文形式的合约状态的最近取值,以及中央处理器可以通过向协处理器发起local call的调用请求,由协处理器调用加解密模块对该密文形式的合约状态的最近取值进行解密,进而由中央处理器获得解密后的合约状态的最近取值。Before or during the execution of the contract code by the central processing unit, the most recent value of the contract state involved in the contract code needs to be obtained. The latest value of the contract state may be deployed in the cache module on the FPGA chip in clear text, then the central processing unit can initiate a local call request to the coprocessor, and the coprocessor can retrieve the latest value of the contract state from the cache module. Value. The latest value of the contract state may be deployed in the form of cipher text at the blockchain node (or other external object), then the central processing unit can initiate a remote call call request to the coprocessor, and the coprocessor can send it from the blockchain. The node remotely calls the latest value of the contract state in the form of ciphertext, and the central processor can initiate a local call call request to the coprocessor, and the coprocessor can call the encryption and decryption module to get the latest value of the contract state in the form of ciphertext. The value is decrypted, and the central processing unit obtains the latest value of the decrypted contract state.
执行完毕后,合约代码所涉及的合约状态可能发生更新。如果合约状态的更新取值需要部署于FPGA芯片上的缓存模块,那么中央处理器可以通过向协处理器发起local call的调用请求,由协处理器直接将合约状态的更新取值存入缓存模块。如果合约状态的更新取值需要部署于区块链节点处,那么中央处理器可以通过向协处理器发起local call的调用请求,由协处理器调用加解密模块对合约状态的更新取值进行加密,以及中央处理器通过向协处理器发起remote call的调用请求,由协处理器向区块链节点远程存入密文形式的合约状态的更新取值。After the execution is completed, the state of the contract involved in the contract code may be updated. If the update value of the contract state needs to be deployed in the cache module on the FPGA chip, the central processing unit can initiate a local call request to the coprocessor, and the coprocessor directly saves the update value of the contract state into the cache module . If the updated value of the contract state needs to be deployed at the blockchain node, the central processing unit can initiate a local call call request to the coprocessor, and the coprocessor can call the encryption and decryption module to encrypt the updated value of the contract state , And the central processor initiates a remote call call request to the coprocessor, and the coprocessor remotely stores the updated value of the contract state in the form of ciphertext to the blockchain node.
基于一些原因,用户可能希望对FPGA板卡上部署的电路逻辑配置文件进行版本更新,比如该电路逻辑配置文件所含的认证根密钥可能被风险用户获知、再比如用户希望对FPGA板卡上部署的功能模块进行升级等,本说明书并不对此进行限制。为了便于区分,可以将上述过程中已部署的电路逻辑配置文件称之为旧版电路逻辑配置文件,而将需要部署的电路逻辑配置文件称之为新版电路逻辑配置文件。For some reasons, the user may want to update the version of the circuit logic configuration file deployed on the FPGA board. For example, the authentication root key contained in the circuit logic configuration file may be known by risky users, or the user wants to update the version on the FPGA board. The deployed functional modules are upgraded, etc. This manual does not limit this. In order to facilitate the distinction, the circuit logic configuration file that has been deployed in the above process can be referred to as the old version of the circuit logic configuration file, and the circuit logic configuration file that needs to be deployed is referred to as the new version of the circuit logic configuration file.
与旧版电路逻辑配置文件相类似的,用户可以通过编写代码、镜像化等过程生成新版电路逻辑配置文件。进一步的,用户可以通过自身持有的私钥对新版电路逻辑配置文件进行签名,然后通过上文协商出的配置文件部署密钥对签名后的新版电路逻辑配置文件进行加密,得到加密后新版电路逻辑配置文件。在一些情况下,可能同时存在多名用户,那么旧版电路逻辑配置文件需要将这些用户对应的预置证书均部署至FPGA板卡中,且这些用户需要分别采用自身持有的私钥对新版电路逻辑配置文件进行签名。Similar to the old version of the circuit logic configuration file, the user can generate a new version of the circuit logic configuration file through the process of writing code and mirroring. Further, the user can sign the new version of the circuit logic configuration file with his own private key, and then encrypt the signed new version of the circuit logic configuration file with the configuration file deployment key negotiated above to obtain the encrypted new version of the circuit Logical configuration file. In some cases, there may be multiple users at the same time, so the old version of the circuit logic configuration file needs to deploy the preset certificates corresponding to these users to the FPGA board, and these users need to use their own private keys to pair the new version of the circuit. Sign the logical configuration file.
用户可以通过客户端远程将加密后新版电路逻辑配置文件发送至区块链节点,并 由区块链节点进一步将其传入FPGA板卡。前述过程中在FPGA芯片上形成的解密验签模块位于PCIE接口与Flash芯片之间的传输通路上,使得加密后新版电路逻辑配置文件必然需要优先经过解密验签模块的成功处理后,才能够被传入Flash芯片以实现可信更新,无法绕过解密验签的过程而直接对Flash芯片进行更新。The user can remotely send the encrypted new version of the circuit logic configuration file to the blockchain node through the client, and the blockchain node will further transfer it to the FPGA board. The decryption verification module formed on the FPGA chip in the foregoing process is located on the transmission path between the PCIE interface and the Flash chip, so that the encrypted new version of the circuit logic configuration file must first be successfully processed by the decryption verification module before it can be The Flash chip is passed in to achieve a credible update, and the Flash chip cannot be updated directly without bypassing the process of decryption and verification.
解密验签模块在收到加密后新版电路逻辑配置文件后,首先通过FPGA板卡上部署的配置文件部署密钥进行解密,如果解密成功则解密验签模块进一步基于FPGA芯片上部署的预置证书,对解密后的新版电路逻辑配置文件进行签名验证。如果解密失败或者签名验证未通过,则说明收到的文件并非来自上述用户或者遭到篡改,解密验签模块将触发终止本次的更新操作;而在解密成功且验签通过的情况下,可以确定得到的新版电路逻辑配置文件来自上述用户且传输过程中未遭到篡改,可以将该新版电路逻辑配置文件进一步传输至Flash芯片,以针对Flash芯片中的旧版电路逻辑配置文件进行更新部署。After the decryption verification module receives the encrypted new version of the circuit logic configuration file, it first decrypts it with the configuration file deployment key deployed on the FPGA board. If the decryption is successful, the decryption verification module is further based on the preset certificate deployed on the FPGA chip , To perform signature verification on the decrypted new version of the circuit logic configuration file. If the decryption fails or the signature verification fails, it means that the received file is not from the above-mentioned user or has been tampered with, and the decryption and signature verification module will trigger the termination of the update operation; and if the decryption is successful and the signature verification is passed, you can It is determined that the obtained new version of the circuit logic configuration file is from the aforementioned user and has not been tampered with during the transmission process. The new version of the circuit logic configuration file can be further transmitted to the Flash chip to update and deploy the old version of the circuit logic configuration file in the Flash chip.
新版电路逻辑配置文件被加载至FPGA芯片后,同样可以在该FPGA芯片上形成诸如上述的密钥协商模块、解密验签模块,以及向FPGA芯片存入预置证书、向密管芯片存入认证根密钥等信息。其中,所形成的密钥协商模块、解密验签模块等,所实现的功能逻辑可以发生变化和升级,所存入部署的预置证书、认证根密钥等信息也可能区别于更新前的信息。那么,FPGA板卡可以基于更新后的密钥协商模块、认证根密钥等,与用户进行远程协商得到新的配置文件部署密钥,该配置文件部署密钥可以被用于下一次的可新更新过程。类似地,可以据此不断实现针对FPGA板卡的可信更新操作。After the new version of the circuit logic configuration file is loaded into the FPGA chip, the above-mentioned key agreement module, decryption and verification module can also be formed on the FPGA chip, and the pre-set certificate and authentication can be stored in the FPGA chip. Root key and other information. Among them, the formed key agreement module, decryption verification module, etc., the implemented functional logic can be changed and upgraded, and the information stored in the deployed preset certificate, authentication root key and other information may also be different from the information before the update . Then, the FPGA board can remotely negotiate with the user to obtain a new configuration file deployment key based on the updated key agreement module, authentication root key, etc., and the configuration file deployment key can be used for the next renewal Update process. Similarly, a reliable update operation for FPGA boards can be continuously implemented accordingly.
在完成更新部署后,FPGA板卡可以针对新版电路逻辑配置文件生成认证结果。例如,上述的密钥协商模块可以通过诸如sm3算法或其他算法对新版电路逻辑配置文件的哈希值、基于新版电路逻辑配置文件协商得到的配置文件部署密钥的哈希值进行计算,得到的计算结果可以被作为上述的认证结果,并由密钥协商模块将该认证结果发送至用户。相应地,用户可以在客户端上基于所维护的新版电路逻辑配置文件和据此协商的配置文件部署密钥对认证结果进行验证,如果验证成功则表明新版电路逻辑配置文件在FPGA板卡上成功部署,且用户与FPGA板卡之间据此成功协商得到了一致的配置文件部署密钥,从而确认成功完成了针对电路逻辑配置文件的更新部署。After completing the update deployment, the FPGA board can generate certification results for the new version of the circuit logic configuration file. For example, the above-mentioned key agreement module can calculate the hash value of the new version of the circuit logic configuration file and the hash value of the configuration file deployment key negotiated based on the new version of the circuit logic configuration file through an algorithm such as sm3 or other algorithms. The calculation result can be used as the above-mentioned authentication result, and the key agreement module sends the authentication result to the user. Correspondingly, the user can verify the authentication result on the client based on the maintained new version of the circuit logic configuration file and the configuration file deployment key negotiated accordingly. If the verification is successful, it indicates that the new version of the circuit logic configuration file is successful on the FPGA board. Deployed, and the user and the FPGA board successfully negotiated accordingly to obtain a consistent configuration file deployment key, thereby confirming the successful completion of the circuit logic configuration file update deployment.
图4是一示例性实施例提供的一种在FPGA中实现外部调用的装置的示意结构图。请参考图4,在软件实施方式中,该在FPGA中实现外部调用的装置可以包括接收单元401和发送单元402。Fig. 4 is a schematic structural diagram of a device for implementing external calls in an FPGA provided by an exemplary embodiment. Referring to FIG. 4, in the software implementation, the device for implementing external calls in FPGA may include a receiving unit 401 and a sending unit 402.
接收单元401,使FPGA芯片上的协处理器接收中央处理器在执行智能合约的过程中发出的调用请求;其中,所述FPGA芯片属于FPGA结构,所述智能合约与所述FPGA结构所属的区块链节点接收到的交易相关。The receiving unit 401 enables the coprocessor on the FPGA chip to receive the call request sent by the central processing unit during the execution of the smart contract; wherein the FPGA chip belongs to the FPGA structure, and the smart contract and the area to which the FPGA structure belongs The transaction received by the blockchain node is related.
发送单元402,使所述协处理器向可响应于所述调用请求的目标调用对象发送调用指令,使所述目标调用对象对所述调用请求进行响应处理;其中,所述FPGA结构所含的存储器中已部署的电路逻辑配置文件被加载至所述FPGA芯片,以形成所述中央处理器和所述协处理器。The sending unit 402 is configured to cause the coprocessor to send a call instruction to a target call object that can respond to the call request, so that the target call object responds to the call request; wherein, the FPGA structure contains The circuit logic configuration file deployed in the memory is loaded to the FPGA chip to form the central processing unit and the coprocessor.
可选的,当所述调用请求为本地调用请求时,所述目标调用对象为所述FPGA结构上的本地对象;或,当所述调用请求为远程调用请求时,所述目标调用对象为与所述FPGA结构相连的外部对象,或者所述目标调用对象为所述外部对象和所述本地对象。Optionally, when the invocation request is a local invocation request, the target invocation object is a local object on the FPGA structure; or, when the invocation request is a remote invocation request, the target invocation object is and The external object connected to the FPGA structure, or the target calling object is the external object and the local object.
可选的,所述本地对象包括:通过加载所述电路逻辑配置文件而在所述FPGA芯片上形成的预设功能模块。Optionally, the local object includes: a preset function module formed on the FPGA chip by loading the circuit logic configuration file.
可选的,所述预设功能模块包括以下至少之一:加密模块,用于对所述中央处理器产生的明文数据进行加密;解密模块,用于对外部传入所述FPGA结构的密文数据进行解密;计算模块,用于执行所述智能合约涉及的计算操作;缓存模块,用于存储所述智能合约产生的合约状态。Optionally, the preset function module includes at least one of the following: an encryption module, which is used to encrypt plaintext data generated by the central processing unit; and a decryption module, which is used to encrypt the ciphertext transferred from the outside of the FPGA structure The data is decrypted; the calculation module is used to execute the calculation operations involved in the smart contract; the cache module is used to store the contract state generated by the smart contract.
可选的,所述外部对象包括:外部存储设备或所述区块链节点包含的节点主机。Optionally, the external object includes: an external storage device or a node host included in the blockchain node.
可选的,所述调用请求用于与所述外部存储设备或所述节点主机进行数据读写。Optionally, the call request is used to read and write data with the external storage device or the node host.
可选的,所述交易用于部署或调用所述智能合约。Optionally, the transaction is used to deploy or invoke the smart contract.
可选的,所述智能合约的合约代码为字节码程序,且所述中央处理器为字节码指令集CPU。Optionally, the contract code of the smart contract is a bytecode program, and the central processing unit is a bytecode instruction set CPU.
可选的,所述中央处理器用于实现虚拟机逻辑。Optionally, the central processing unit is used to implement virtual machine logic.
可选的,所述虚拟机逻辑包括:以太坊虚拟机的执行逻辑或者WASM虚拟机的执行逻辑。Optionally, the virtual machine logic includes: the execution logic of the Ethereum virtual machine or the execution logic of the WASM virtual machine.
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或 者这些设备中的任意几种设备的组合。The systems, devices, modules, or units explained in the above embodiments may be implemented by computer chips or entities, or implemented by products with certain functions. A typical implementation device is a computer. The specific form of the computer can be a personal computer, a laptop computer, a cellular phone, a camera phone, a smart phone, a personal digital assistant, a media player, a navigation device, an email receiving and sending device, and a game control A console, a tablet computer, a wearable device, or a combination of any of these devices.
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。In a typical configuration, the computer includes one or more processors (CPU), input/output interfaces, network interfaces, and memory.
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。The memory may include non-permanent 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 computer readable media.
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。Computer-readable media include permanent and non-permanent, removable and non-removable media, and information storage can be realized by any method or technology. The information can be computer-readable instructions, data structures, program modules, 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, CD-ROM, digital versatile disc (DVD) or other optical storage, Magnetic cassettes, disk storage, quantum memory, graphene-based storage media or other magnetic storage devices or any other non-transmission media can be used to store information that can be accessed by computing devices. According to the definition in this article, computer-readable media does not include transitory media, such as modulated data signals and carrier waves.
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。It should also be noted that the terms "include", "include" or any other variants thereof are intended to cover non-exclusive inclusion, so that a process, method, commodity or equipment including a series of elements not only includes those elements, but also includes Other elements that are not explicitly listed, or they also include elements inherent to such processes, methods, commodities, or equipment. If there are no more restrictions, the element defined by the sentence "including a..." does not exclude the existence of other identical elements in the process, method, commodity, or equipment that includes the element.
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。The foregoing describes specific embodiments of this specification. Other embodiments are within the scope of the appended claims. In some cases, the actions or steps described in the claims may be performed in a different order than in the embodiments and still achieve desired results. In addition, the processes depicted in the drawings do not necessarily require the specific order or sequential order shown in order to achieve the desired results. In some embodiments, multitasking and parallel processing are also possible or may be advantageous.
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下 文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。The terms used in one or more embodiments of this specification are only for the purpose of describing specific embodiments, and are not intended to limit one or more embodiments of this specification. The singular forms of "a", "said" and "the" used in one or more embodiments of this specification and the appended claims are also intended to include plural forms, unless the context clearly indicates other meanings. It should also be understood that the term "and/or" as used herein refers to and includes any or all possible combinations of one or more associated listed items.
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。It should be understood that, although the terms first, second, third, etc. may be used to describe various information in one or more embodiments of this specification, the information should not be limited to these terms. These terms are only used to distinguish the same type of information from each other. For example, without departing from the scope of one or more embodiments of this specification, the first information may also be referred to as second information, and similarly, the second information may also be referred to as first information. Depending on the context, the word "if" as used herein can be interpreted as "when" or "when" or "in response to determination".
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。The foregoing descriptions are only preferred embodiments of one or more embodiments of this specification, and are not intended to limit one or more embodiments of this specification. All within the spirit and principle of one or more embodiments of this specification, Any modification, equivalent replacement, improvement, etc. made should be included in the protection scope of one or more embodiments of this specification.

Claims (13)

  1. 一种在FPGA中实现外部调用的方法,包括:A method for implementing external calls in FPGA, including:
    FPGA芯片上的协处理器接收中央处理器在执行智能合约的过程中发出的调用请求;其中,所述FPGA芯片属于FPGA结构,所述智能合约与所述FPGA结构所属的区块链节点接收到的交易相关;The coprocessor on the FPGA chip receives the call request issued by the central processing unit during the execution of the smart contract; wherein the FPGA chip belongs to the FPGA structure, and the smart contract and the blockchain node to which the FPGA structure belongs receive the call request Transaction related;
    所述协处理器向可响应于所述调用请求的目标调用对象发送调用指令,使所述目标调用对象对所述调用请求进行响应处理;其中,所述FPGA结构所含的存储器中已部署的电路逻辑配置文件被加载至所述FPGA芯片,以形成所述中央处理器和所述协处理器。The coprocessor sends a call instruction to a target call object that can respond to the call request, so that the target call object responds to the call request; wherein, the deployed memory in the FPGA structure The circuit logic configuration file is loaded into the FPGA chip to form the central processing unit and the coprocessor.
  2. 根据权利要求1所述的方法,According to the method of claim 1,
    当所述调用请求为本地调用请求时,所述目标调用对象为所述FPGA结构上的本地对象;或,When the call request is a local call request, the target call object is a local object on the FPGA structure; or,
    当所述调用请求为远程调用请求时,所述目标调用对象为与所述FPGA结构相连的外部对象,或者所述目标调用对象为所述外部对象和所述本地对象。When the call request is a remote call request, the target call object is an external object connected to the FPGA structure, or the target call object is the external object and the local object.
  3. 根据权利要求2所述的方法,所述本地对象包括:通过加载所述电路逻辑配置文件而在所述FPGA芯片上形成的预设功能模块。The method according to claim 2, wherein the local object comprises: a preset function module formed on the FPGA chip by loading the circuit logic configuration file.
  4. 根据权利要求3所述的方法,所述预设功能模块包括以下至少之一:The method according to claim 3, the preset function module comprises at least one of the following:
    加密模块,用于对所述中央处理器产生的明文数据进行加密;An encryption module for encrypting the plaintext data generated by the central processing unit;
    解密模块,用于对外部传入所述FPGA结构的密文数据进行解密;The decryption module is used to decrypt the ciphertext data transferred from the outside of the FPGA structure;
    计算模块,用于执行所述智能合约涉及的计算操作;A calculation module, used to execute the calculation operations involved in the smart contract;
    缓存模块,用于存储所述智能合约产生的合约状态。The cache module is used to store the state of the contract generated by the smart contract.
  5. 根据权利要求2所述的方法,所述外部对象包括:外部存储设备或所述区块链节点包含的节点主机。The method according to claim 2, wherein the external object comprises: an external storage device or a node host included in the blockchain node.
  6. 根据权利要求5所述的方法,所述调用请求用于与所述外部存储设备或所述节点主机进行数据读写。The method according to claim 5, wherein the call request is used to read and write data with the external storage device or the node host.
  7. 根据权利要求1所述的方法,所述交易用于部署或调用所述智能合约。According to the method of claim 1, the transaction is used to deploy or invoke the smart contract.
  8. 根据权利要求1所述的方法,所述智能合约的合约代码为字节码程序,且所述中央处理器为字节码指令集CPU。The method according to claim 1, wherein the contract code of the smart contract is a bytecode program, and the central processing unit is a bytecode instruction set CPU.
  9. 根据权利要求1所述的方法,所述中央处理器用于实现虚拟机逻辑。According to the method of claim 1, the central processing unit is used to implement virtual machine logic.
  10. 根据权利要求9所述的方法,所述虚拟机逻辑包括:以太坊虚拟机的执行逻辑或者WASM虚拟机的执行逻辑。The method according to claim 9, wherein the virtual machine logic comprises: the execution logic of the Ethereum virtual machine or the execution logic of the WASM virtual machine.
  11. 一种在FPGA中实现外部调用的装置,包括:A device for implementing external calls in FPGA, including:
    接收单元,使FPGA芯片上的协处理器接收中央处理器在执行智能合约的过程中发出的调用请求;其中,所述FPGA芯片属于FPGA结构,所述智能合约与所述FPGA结构所属的区块链节点接收到的交易相关;The receiving unit enables the coprocessor on the FPGA chip to receive the call request sent by the central processing unit during the execution of the smart contract; wherein the FPGA chip belongs to the FPGA structure, and the smart contract and the block to which the FPGA structure belongs Related to the transaction received by the chain node;
    发送单元,使所述协处理器向可响应于所述调用请求的目标调用对象发送调用指令,使所述目标调用对象对所述调用请求进行响应处理;其中,所述FPGA结构所含的存储器中已部署的电路逻辑配置文件被加载至所述FPGA芯片,以形成所述中央处理器和所述协处理器。The sending unit causes the coprocessor to send a call instruction to a target call object that can respond to the call request, so that the target call object responds to the call request; wherein the memory contained in the FPGA structure The circuit logic configuration files deployed in the FPGA chip are loaded into the FPGA chip to form the central processing unit and the coprocessor.
  12. 一种电子设备,包括:An electronic device including:
    处理器;processor;
    用于存储处理器可执行指令的存储器;A memory for storing processor executable instructions;
    其中,所述处理器通过运行所述可执行指令以实现如权利要求1-10中任一项所述的方法。Wherein, the processor implements the method according to any one of claims 1-10 by running the executable instruction.
  13. 一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-10中任一项所述的方法。A computer-readable storage medium having computer instructions stored thereon, and when the instructions are executed by a processor, the method according to any one of claims 1-10 is implemented.
PCT/CN2020/100491 2019-09-25 2020-07-06 Method and apparatus for implementing external call in fpga WO2021057166A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910913488.X 2019-09-25
CN201910913488.XA CN110750488B (en) 2019-09-25 2019-09-25 Method and device for realizing external calling in FPGA

Publications (1)

Publication Number Publication Date
WO2021057166A1 true WO2021057166A1 (en) 2021-04-01

Family

ID=69277086

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/100491 WO2021057166A1 (en) 2019-09-25 2020-07-06 Method and apparatus for implementing external call in fpga

Country Status (2)

Country Link
CN (1) CN110750488B (en)
WO (1) WO2021057166A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750488B (en) * 2019-09-25 2021-02-19 支付宝(杭州)信息技术有限公司 Method and device for realizing external calling in FPGA
CN112364356A (en) * 2021-01-11 2021-02-12 支付宝(杭州)信息技术有限公司 Data processing equipment and method
CN112905238A (en) * 2021-02-08 2021-06-04 北京微芯区块链与边缘计算研究院 Intelligent contract executor and method for block chain and block chain operation system
CN112882774A (en) * 2021-02-08 2021-06-01 北京微芯区块链与边缘计算研究院 Intelligent contract chip device and method executed in parallel and block chain link point device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030223581A1 (en) * 2002-05-30 2003-12-04 Bedros Hanounik Cipher block chaining unit for use with multiple encryption cores
CN104778148A (en) * 2015-04-03 2015-07-15 哈尔滨工业大学 Dynamic reconfigurable embedded data co-processing platform based on FPGA (Field-Programmable Gate Array) and data processing method realized by using platform
WO2016209717A1 (en) * 2015-06-23 2016-12-29 Microsoft Technology Licensing, Llc Integration and synchronization using a virtual data provider
CN109886682A (en) * 2019-01-31 2019-06-14 阿里巴巴集团控股有限公司 The method and node, storage medium that contract calls are realized in block chain
CN110750488A (en) * 2019-09-25 2020-02-04 支付宝(杭州)信息技术有限公司 Method and device for realizing external calling in FPGA

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9621547B2 (en) * 2014-12-22 2017-04-11 Mcafee, Inc. Trust establishment between a trusted execution environment and peripheral devices
US10102370B2 (en) * 2015-12-21 2018-10-16 Intel Corporation Techniques to enable scalable cryptographically protected memory using on-chip memory
CN106815510B (en) * 2017-01-18 2020-08-07 珠海市魅族科技有限公司 Data processing method and terminal
JP2019092134A (en) * 2017-11-17 2019-06-13 株式会社シーエスサービス Encryption key generation method
CN109525400A (en) * 2018-11-01 2019-03-26 联想(北京)有限公司 Security processing, system and electronic equipment
CA3058239C (en) * 2019-03-26 2021-01-05 Alibaba Group Holding Limited Field-programmable gate array based trusted execution environment for use in a blockchain network

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030223581A1 (en) * 2002-05-30 2003-12-04 Bedros Hanounik Cipher block chaining unit for use with multiple encryption cores
CN104778148A (en) * 2015-04-03 2015-07-15 哈尔滨工业大学 Dynamic reconfigurable embedded data co-processing platform based on FPGA (Field-Programmable Gate Array) and data processing method realized by using platform
WO2016209717A1 (en) * 2015-06-23 2016-12-29 Microsoft Technology Licensing, Llc Integration and synchronization using a virtual data provider
CN109886682A (en) * 2019-01-31 2019-06-14 阿里巴巴集团控股有限公司 The method and node, storage medium that contract calls are realized in block chain
CN110750488A (en) * 2019-09-25 2020-02-04 支付宝(杭州)信息技术有限公司 Method and device for realizing external calling in FPGA

Also Published As

Publication number Publication date
CN110750488B (en) 2021-02-19
CN110750488A (en) 2020-02-04

Similar Documents

Publication Publication Date Title
WO2021103794A1 (en) Method for realizing highly efficient privacy-preserving transaction in blockchain, and device
WO2021057166A1 (en) Method and apparatus for implementing external call in fpga
CN110020855B (en) Method, node and storage medium for realizing privacy protection in block chain
WO2020233616A1 (en) Receipt storage method and node employing code marking in combination with transaction type and user type
WO2020233642A1 (en) Conditional receipt storage method and node which combine code labelling and type dimension
WO2020233638A1 (en) Receipt storage method and node based on code labeling and transaction type
WO2021057181A1 (en) Fpga-based key negotiation method and device
WO2020233623A1 (en) Receipt storage method and node combining transaction type and judgment condition
WO2021057168A1 (en) Method and apparatus for realizing virtual machine operation on the basis of fpga
WO2020233613A1 (en) Conditional receipt storage method and node which combine code marking with transaction type
WO2020233622A1 (en) Receipt storage method and node based on code labeling and multiple types of dimensions
WO2020233635A1 (en) Receipt storage method combining conditional restrictions of multiple types of dimensions and node
WO2020233631A1 (en) Transaction type-based receipt storage method and node
CN110020856B (en) Method, node and storage medium for realizing mixed transaction in block chain
WO2020233625A1 (en) Receipt storage method combining user type and determination conditions and node
WO2020233640A1 (en) Receipt storage method and node based on code labeling and determination condition
WO2020233615A1 (en) Receipt storage method combining user type and event function type and node
WO2021057184A1 (en) Efficient operation method and apparatus for security intelligent contract processor based on fpga
WO2020233630A1 (en) User type-based receipt storing method and node
WO2020233624A1 (en) Receipt storage method and node employing transaction type in combination with event function type
WO2021057182A1 (en) Trusted update method and apparatus for fpga logic
WO2021057180A1 (en) Fpga-based privacy blockchain implementation method, and device
WO2020233639A1 (en) Receipt storage method and node based on code labeling and event function type
WO2020233619A1 (en) Receipt storage method and node in combination with user type and transaction type
WO2020233627A1 (en) Receipt storage method and node based on multiple types of dimensions

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20869336

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20869336

Country of ref document: EP

Kind code of ref document: A1