WO2022079809A1 - ブロックチェーンに関わるピアツーピアネットワークを含むシステム、同ピアツーピアネットワークの構築を支援する方法、並びに、ピアで実行されるスマートコントラクト - Google Patents
ブロックチェーンに関わるピアツーピアネットワークを含むシステム、同ピアツーピアネットワークの構築を支援する方法、並びに、ピアで実行されるスマートコントラクト Download PDFInfo
- Publication number
- WO2022079809A1 WO2022079809A1 PCT/JP2020/038660 JP2020038660W WO2022079809A1 WO 2022079809 A1 WO2022079809 A1 WO 2022079809A1 JP 2020038660 W JP2020038660 W JP 2020038660W WO 2022079809 A1 WO2022079809 A1 WO 2022079809A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- entity
- smart contract
- specified
- name
- peer
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000010276 construction Methods 0.000 title claims 2
- 238000012545 processing Methods 0.000 claims description 47
- 230000004044 response Effects 0.000 claims description 18
- 238000011161 development Methods 0.000 claims description 10
- 230000001419 dependent effect Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 30
- 238000013480 data collection Methods 0.000 description 26
- 239000004744 fabric Substances 0.000 description 10
- 230000018109 developmental process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 230000001052 transient effect Effects 0.000 description 5
- 230000000052 comparative effect Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 239000002131 composite material Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
- G06F16/212—Schema design and management with details for data modelling support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Definitions
- the present invention generally relates to a blockchain.
- a technique called "blockchain” is known.
- the definition of the blockchain according to the present invention may be the following definition (1) or the following broad definition (2).
- the blockchain may be interpreted as an example of the distributed ledger technique, or an example of the distributed ledger technique may be interpreted as a blockchain.
- a blockchain is defined as a protocol, or implementation of a protocol, used by an unspecified number of nodes containing Byzantine faults, and converges the probability of consensus reversion with the passage of time to zero.
- a blockchain is a technology with a data structure which can easily detect manipulation using digital signatures and hash pointers, and where the data has high availability and integrity due to distribution across multiple nodes on a network.
- Hyperledger Fabric (trademark) is known for open source blockchain.
- Hyperledger Fabric SDK for node.js (hereinafter referred to as "Fabric Node SDK") is known as a standard SDK (Software Development Kit) for system development using Hyperledger Fabric.
- Hyperledger Fabric (Apache License 2.0)
- services for example, applications
- the API Application Programming Interface
- a chain code is required to register and refer to the data in the blockchain network. Therefore, in the development of services, it is necessary to develop and deploy the chain code.
- the chain code is developed for each entity. Specifically, in the coding of the chain code, the definition of the entity corresponding to the chain code and the definition of the process for operating the entity are described, and in the instantiation of the chain code, the chain is used as an argument. The value of the entity manipulated by the code is entered.
- Each peer of a peer-to-peer network consisting of multiple peers is provided with a general-purpose smart contract, which is a smart contract that defines general-purpose processing that does not depend on the entity, and one or more entities associated with the general-purpose smart contract.
- a general-purpose smart contract which is a smart contract that defines general-purpose processing that does not depend on the entity, and one or more entities associated with the general-purpose smart contract.
- schema definition information including the entity definition of the relevant entity is stored.
- the general-purpose smart contract accepts the specification of the entity name, identifies the entity with the specified entity name from the schema definition information, and processes the specified entity.
- a peer according to a comparative example is shown.
- a peer according to an embodiment of the present invention is shown.
- An example of schema definition information is shown.
- An example of the schema definition UI is shown.
- An example of the schema definition information input to the general-purpose chain code and the storage and control according to the schema definition information is shown.
- Another example of the schema definition information input to the general-purpose chain code and the storage according to the schema definition information is shown.
- An example of the flow of the instantiation process is shown.
- An example of the flow of the registration process is shown.
- An example of the flow of transaction processing other than registration processing is shown. Shows the opportunity to upgrade the general-purpose chain code.
- An overview of entity configuration and storage is given.
- the "interface device” may be one or more interface devices.
- the one or more interface devices may be at least one of the following.
- An I / O (Input / Output) interface device is an interface device for at least one of an I / O device and a remote display computer.
- the I / O interface device for the display computer may be a communication interface device.
- the at least one I / O device may be any of a user interface device, eg, an input device such as a keyboard and pointing device, and an output device such as a display device.
- -One or more communication interface devices may be any of a user interface device, eg, an input device such as a keyboard and pointing device, and an output device such as a display device.
- One or more communication interface devices may be one or more homogenous communication interface devices (eg, one or more NICs (Network Interface Cards)) or two or more heterogeneous communication interface devices (eg, NICs). It may be HBA (Host Bus Adapter)).
- NICs Network Interface Cards
- HBA Hypervisor Adapter
- the "memory” is one or more memory devices which is an example of one or more storage devices, and may be typically a main storage device. At least one memory device in the memory may be a volatile memory device or a non-volatile memory device.
- the "permanent storage device” may be one or more permanent storage devices which are an example of one or more storage devices.
- the permanent storage device may typically be a non-volatile storage device (for example, an auxiliary storage device), and specifically, for example, an HDD (Hard Disk Drive), SSD (Solid State Drive), NVNE (Non-Volatile). It may be a Memory Express) drive or an SCM (Storage Class Memory).
- the “storage device” may be a memory and at least a memory of a permanent storage device.
- the processor may be one or more processor devices.
- the at least one processor device may typically be a microprocessor device such as a CPU (Central Processing Unit), but may be another type of processor device such as a GPU (Graphics Processing Unit).
- At least one processor device may be single-core or multi-core.
- At least one processor device may be a processor core.
- At least one processor device is a circuit (for example, FPGA (Field-Programmable Gate Array), CPLD (Complex Programmable Logic Device)) or ASIC (Application) which is a collection of gate arrays by a hardware description language that performs a part or all of processing. Specific Integrated It may be a processor device in a broad sense such as Circuit)).
- the process may be described with "chain code” as the subject, but the chain code is executed by the processor to appropriately perform the specified process in the storage device and / or the interface device.
- the subject of the process may be a processor (or a device or system having the processor).
- a common code among reference codes may be used when the same type of elements are not distinguished, and a reference code may be used when the same type of elements are described separately. ..
- Hyperledger Fabric is taken as an example, and therefore, a chain code is taken as an example as a smart contract.
- FIG. 1 shows the configuration of the entire system according to the embodiment of the present invention.
- a blockchain service platform as a system including a peer-to-peer network 100 that is related to Hyperledger Fabric and is composed of a plurality of authorized peers 110.
- a blockchain client 160 that communicates with the blockchain service infrastructure via the network 50.
- the blockchain client 160 may be a physical computer or a logical computer (for example, a virtual computer) realized by the physical computer.
- the blockchain client 160 communicates with the user system 150, which is a computer system of the user (for example, a company using the blockchain service infrastructure), via the network 60.
- the networks 50 and 60 may be the same network. Communication between the peers 110 may be performed via the network 50 or may be performed via a dedicated network (not shown).
- the function of the blockchain client 160 may be included in the peer 110.
- the peer-to-peer network 100 may be an example of a distributed system, and the peer 110 may be an example of a node in the distributed system.
- the peer 110 has an interface device 111, a storage device 112, and a processor 113 connected to them.
- the interface device 111 is connected to the network 50.
- the general-purpose chain code 121 is stored in the storage device 112, and the schema definition information 131 is stored in the storage device 112.
- a state DB (database) 122 and a Private Data Collection 123 are provided, respectively.
- One or more entities 133 (133A, 133B, ...) Are stored in the state DB 122 and the Private Data Collection 123.
- Entity 133 is data (eg, a table). Which entity 133 is stored only in the state DB 122 or spans the state DB 122 and the Private Data Collection 123 depends on the schema definition information 131.
- the "state DB” may be referred to as a "world state” or a “public state”.
- the "Private Data Collection” may be referred to as the "private state”.
- FIG. 2 shows a peer according to a comparative example.
- Each chain code 251 includes an individual process description 201 which is a process for the entity 133 corresponding to the chain code 251 and represents a process dependent on the entity 133, and an entity definition description 203 which represents the definition of the entity 133.
- the developer inputs the value registered in the entity 133 into the chain code 251 as an argument in the instantiation of the chain code 251. As a result, the entity 133 processed by the chain code 251 is realized.
- FIG. 3 shows the peer 110 according to the present embodiment.
- a general-purpose chain code 121 is prepared for the peer 110.
- the general-purpose chain code 121 is a chain code including a general-purpose processing description 301 representing a general-purpose processing that does not depend on the entity 133.
- the processing for each of one or a plurality of entities 133 is performed by the general-purpose chain code 121.
- Schema definition information 131 exists outside the general-purpose chain code 121.
- the schema definition information 131 is information including an entity definition description 303 for each of one or a plurality of entities 133 associated with the general-purpose chain code 121.
- the schema definition information 131 includes an entity definition description 303A representing the entity definition of the entity 133A and an entity definition description 303B representing the entity definition of the entity 133B.
- the peer-to-peer network 100 has one channel as an overlay, and therefore the general-purpose chain code 121 existing in each peer 110 is one.
- a general-purpose chain code 121 may be prepared for each channel.
- FIG. 4 shows an example of schema definition information 131.
- the schema definition information 131 is, for example, JSON format information. Information is hierarchically registered in the schema definition information 131 in a key-value format.
- the schema definition information 131 includes an entity definition description 303 for each entity 133 and an endorsement policy description 413 representing an endorsement policy.
- the entity definition description 303 includes an entity field definition description 401, a private field definition description 402, a composite key definition description 403, an encrypted field definition description 404, a method control description 405, and an ACL (Access Control List) description 406.
- entity field definition description 401 a private field definition description 402
- composite key definition description 403 an encrypted field definition description 404
- method control description 405 an encrypted field definition description 404
- ACL Access Control List
- the entity field definition description 401 is a description representing the field definition (for example, type, field name) in the entity 133.
- the private field definition description 402 is a description representing the definition of the field (for example, the field name) stored in the Private Data Collection 123.
- the compound key definition description 403 is a description representing a key definition (for example, a field name) for searching.
- the encrypted field definition description 404 is a description representing the definition of the field (for example, the field name) in which the value is encrypted.
- the method control description 405 is a description representing an impossible method for the entity 133.
- the "method" referred to here may be a type of processing, and specifically, an access method such as registration, reference or deletion.
- ACL description 406 is a description representing at least one of an attribute value at which execution of processing is permitted and an attribute value at which execution of processing is prohibited.
- the "attribute value” may be a value representing the attribute of the access source (for example, the title of the access source user) or a value representing the attribute of the data to be accessed.
- the schema definition information 131 may be input via CLI (Command Line Interface), but in the present embodiment, it is information created according to the information input via the schema definition UI (User Interface).
- CLI Common Line Interface
- UI User Interface
- the schema definition information 131 illustrated in FIG. 4 it can be interpreted as follows. -The entity named "books” is newly defined, and it has id, name, isbn, price and publish_date as fields (components), and the types are specified respectively. Among them, the field name “id” is a required item (“required”). -The field with the field name "price” is stored in the Private Data Collection. The field with the field name “price” is not stored in the state DB. -"Publisher” and “publish_date” are registered as a combination key for Composite Key search. -The value registered in the field of the field name "price” is encrypted using the common key. -The method “delete” cannot be executed. -The method "register” can be executed only by the user whose "title” attribute value included in the user information (for example, X.509 certificate) is "director” or "supervisor”.
- FIG. 5 shows an example of the schema definition UI.
- the schema definition UI 500 is a UI that accepts the input of the elements of the schema definition information 131.
- the schema definition UI 500 has an entity definition UI 501 and a CREATE button 550.
- the entity definition information for each entity 133 associated with the general-purpose chain code 121 is input to the entity definition UI 501.
- the entity definition UI 501 has UI 511 to 515.
- the UI 511 is a UI that accepts the input of the entity name.
- UI 512 is a UI that accepts input of the version of the entity.
- the UI 513 accepts input of the definition of each field in the entity 133 (for example, field name, type, whether or not it is required, whether or not it is to be stored in the Private Data Collection, and whether or not it is to be encrypted). Is.
- the UI 514 is a UI that accepts input of an impossible method for entity 133.
- the UI 515 is a UI that accepts input of information contained in the ACL (for example, an attribute name, an attribute value, whether it is permitted or not, and a target operation).
- schema definition information 131 (see, for example, FIG. 4) as an argument is generated based on the information input via the schema definition UI 500.
- the schema definition UI 500 By using the schema definition UI 500, the developer may specify the element of the schema definition information 131 for creating the schema definition information 131, and does not have to describe the schema definition information 131 itself in JSON format.
- the schema definition UI 500 has one entity definition UI 501, but for each entity via the schema definition UI 500, for example, the tab-type entity definition UI 501 increases as the number of entities increases. It is possible to enter the entity definition.
- FIG. 6 shows an example of the schema definition information 131 input to the general-purpose chain code 121 and the storage and control according to the schema definition information 131.
- the schema definition information 131 as external information of the general-purpose chain code 121 includes, for example, an entity definition including "books” as the value of the key "entity name”.
- the entity 133A having the entity name “books” is stored in the state DB 122 by the general-purpose chain code 121.
- ACL control information is included as the value of the key "acl”.
- the ACL control information includes "register” as the value of the key "method name” and "" title “: [” director ",” supervisor “]” as the value of the key “allow”.
- the general-purpose chain code 121 accepts the operation of registration for the entity 133A of the entity name "books”, whether the general-purpose chain code 121 has the attribute of the operation source (access source) "director” or "supervisor”. It is determined whether or not, and registration is executed when the result of the determination is true, and registration is not executed when the result of the determination is false.
- the Collection Definition 600 is, for example, JSON format information, and is stored in the local area of the peer 110 (a place other than the state DB 122 and the Private Data Collection 123). It is specified as one of the parameters when instantiating the general-purpose chain code 121.
- the Collection Definition 600 has a key "name”. Since the general-purpose chain code 121 makes it possible to specify the entity to which the field straddling the state DB 122 and the Private Data Collection 123 belongs, the entity name is set as the value of the key "name”.
- Transient Map is handled separately from the data registered in the state DB 122.
- the data set in TransientMap has the characteristic that it is not registered in the state DB 122 (and Ledger), and the data stored in PrivateDataCollection123 and the key information (common key) for encryption are stored in the general-purpose chain code 121. Used to pass.
- FIG. 7 shows another example of the schema definition information 131 input to the general-purpose chain code 121 and the storage according to the schema definition information 131.
- each peer 110 is provided with a general-purpose chain code 121, and the general-purpose chain code 121 includes schema definition information including a description of the entity definition of the entity for each of one or a plurality of entities. 131 is associated.
- the developer does not need to implement the chain code itself, and may define the entity definition (for example, layout and accompanying data management requirements) in the schema definition information 131 as metadata.
- entity definition for example, layout and accompanying data management requirements
- the general-purpose chain code 121 and the entity 133 are 1: n (n is a natural number). Therefore, even if there are a plurality of entities 133, it is not necessary to maintain the plurality of chain codes individually, and it is sufficient to maintain one general-purpose chain code 121. That is, the maintenance burden is reduced.
- each entity 133 has an entity name, and each entity 133 holds data in key-value format.
- the key may be defined as a pair of an entity name and a unique key (an example of an entity ID).
- the unique key may be a serial number or an arbitrary character string.
- the value may be JSON format data (for example, data designated as a storage target from a business application (not shown) executed by the user system 150).
- the schema definition information 131 is specified at the time of instantiation of the general-purpose chain code 121 as described later, but the data registered as a value in the entity is the data consistent with the entity definition represented by the schema definition information 131. Is.
- FIG. 8 shows an example of the flow of the instantiation process.
- the chaincode accepts the information specified as an argument in the instantiation of the chaincode.
- An Init function is associated with the general-purpose chain code 121.
- the REST API (FabricNode SDK) API is called from the caller (for example, the user system 150 used by the developer) (S801).
- the call enters the schema definition.
- the schema definition UI 500 illustrated in FIG. 5 is provided to the caller and the schema definition is input through the schema definition UI 500.
- the peer I / F (program as an interface to the REST API) in the peer 110 receives an Instantiate request from the REST API (S802).
- Schema definition information 131 is associated with the Instantiate request.
- the schema definition information 131 is information according to the schema definition input in S801.
- the Init function of the general-purpose chain code 121 is called from the peer I / F (S803).
- the general-purpose chain code 121 in which the Init function is called accepts the schema definition information 131 as an argument, and stores the accepted schema definition information 131 in the state DB 122 (S804).
- the general-purpose chain code 121 stores the schema definition information 131 in the state DB 122, it responds to the peer I / F with the completion (S805).
- the peer I / F After receiving the response of S805, the peer I / F reads the Collection Definition from the local area (S806) and reflects the Private Data Collection policy (policy specified from the read Collection Definition) on the channel (S807). ). As a result, access control of Private Data Collection is realized. After that, the peer I / F responds to the REST API with the completion (S808). Completion is returned from the REST API to the caller (S809).
- the schema definition information 131 is input in place of the value registered in the entity as an argument in the call of the Init function and stored in the state DB 122.
- the instantiation of the general-purpose chain code 121 can be realized.
- FIG. 9 shows an example of the flow of the registration process.
- the REST API is called from the caller (for example, the user system 150 used by the operation administrator) (S901). Input data is input in the call.
- the peer I / F in peer 110 receives a Register request from the REST API (S902).
- the input data input in S901 is associated with the Register request.
- the Register function (an example of the registration function) of the general-purpose chain code 121 is called from the peer I / F (S903).
- the general-purpose chain code 121 in which the Register function is called receives the input data and reads the schema definition information 131 from the schema DB 122 (S904).
- the input data includes a dataset containing the value of the field name and the entity name for at least one entity.
- the data set associated with the entity name includes, for example, the following. -Unique key for the entity.
- -For the state DB 122 the field name for each field and the value registered in the field.
- -For Private Data Collection 123 a Transient Map containing the field name for each field and the value registered in the field (in addition, a common key for encryption may be included).
- the general-purpose chain code 121 specifies an entity definition including an entity name that matches the entity name specified in the received input data from the read schema definition information 131 (S905).
- the general-purpose chain code 121 determines whether or not the data set corresponding to the entity name specified in the input data conforms to the entity definition specified in S905 (S906).
- the determination of S906 includes, for example, at least one of the following. -Whether or not all the field names included in the data set in the input data are described in the entity field definition description 401 of the entity definition specified in S905. -For each of the field names included in the data set in the input data, whether or not the type of the value registered in the field of the field name matches the type described in the entity field definition description 401. .. -Whether or not the field name corresponding to the value registered in the Private Data Collection 123 is described in the private field definition description 402.
- the general-purpose chain code 121 registers a value specified in the input data in the field according to the entity definition specified in S905 and corresponding to the field (S907 and / or S908). ). In this way, since the value is registered in the field when the result of the determination in S906 is true, it is possible to prevent an inappropriate value from being registered in the field.
- the general-purpose chain code 121 returns the response to the peer I / F (S909).
- the peer I / F returns the response to the REST API in response to the response of S909 (S910).
- a response is returned from the REST API to the caller (S911).
- the values can be registered in the plurality of entities 133 represented by the schema definition information 131 for the general-purpose chain code 121.
- the same registration process as the registration process shown in FIG. 9 is performed. That is, the Register function of the general-purpose chain code 121 is called, and the input data including the entity name of the entity 133 is input to the general-purpose chain code 121.
- the general-purpose chain code 121 reads the schema definition information 131, determines whether or not the added or updated value in the input data satisfies the entity definition corresponding to the entity name, and if the result of the determination is true, the value.
- the general-purpose processing description 301 (see FIG. 3) of the general-purpose chain code 121 includes the registration processing description excluding the entity name, and the general-purpose chain code 121 registers according to the registration process represented by the registration processing description.
- the entity definition specified in S905 includes a private field definition description 402 (a field name designated as a field stored in the Private Data Collection 123), and the input data includes a value registered in the field.
- the general-purpose chain code 121 stores the field of the field name specified in the description 402 in the Private Data Collection 123, and registers the value corresponding to the field name in the field (S908). In this way, the registration of the value in the Private Data Collection 123 is realized.
- S907 registration of the value in the state DB 122
- S908 registration of the value in the Private Data Collection 123 may occur.
- the general-purpose chain code 121 uses a common key (an example of an encryption key) in the input data to set the value of the field name. Encrypt and register the encrypted value in the field of the field name. As a result, the value registered in the entity is concealed.
- the input data may be data for each entity or data for a plurality of entities.
- the general-purpose chain code 121 may return a response including the unique key (an example of ID) of the entity, and the unique key may be returned to the caller. .. This allows the caller to know which entity the registration has been completed for.
- FIG. 10 shows an example of the flow of transaction processing other than registration processing.
- Transaction processing other than registration processing includes, for example, reference processing (search processing) and deletion processing.
- the general-purpose processing description 301 (see FIG. 3) of the general-purpose chain code 121 includes a processing description excluding the entity name for transaction processing other than the registration processing, and the general-purpose chain code 121 performs processing according to the processing represented by the processing description. conduct.
- the outline of the processing flow is the same as the flow of registration processing.
- the REST API is called from the caller (S1001).
- the caller In the call, at least the name of the entity to be processed is input.
- Peer I / F receives a request from REST API (S1002).
- the input data input to S1001 is associated with the request.
- the function of the general-purpose chain code 121 is called from the peer I / F (S1003).
- the function related to query for example, query function, queryPublicData function, queryPrivateData function, richQueryPublicData function, richQueryPrivateData function
- the delete function is called.
- the general-purpose chain code 121 in which the function is called reads the schema definition information 131 from the schema DB 122 (S1004), and specifies the entity definition including the entity name matching the input entity name from the read schema definition information 131. (S1005). The general-purpose chain code 121 determines whether or not the specified entity definition is satisfied (S1006).
- the general-purpose chain code 121 When the result of the determination of S1006 is true, the general-purpose chain code 121 performs a process for the entity according to the entity definition specified in S1005 (S1007 and / or S1008). After that, the general-purpose chain code 121 returns the response to the peer I / F (S1009). The peer I / F returns the response to the REST API in response to the response of S1009 (S1010). A response is returned from the REST API to the caller (S1011).
- the general-purpose chain code 121 accepts a search condition in addition to the entity name.
- the search condition may be a search key or a search range.
- the general-purpose chain code 121 searches for a value matching the search condition key from the entity with the entity name, and returns the search result to the caller. In this way, the general-purpose chain code 121 receives the designation of the entity name and executes the search.
- the search range may be determined by the type of the function to be called, instead of or in addition to being specified by the search condition.
- the search range may be the state DB 122, and when the queryPrivateData function or the richQueryPrivateData function is called, the search range may be the PrivateDataCollection123.
- the determination of S1006 is that the method (processing type) according to the called function is executed in the method control description 405. Includes determining if is a disabled method.
- the general-purpose chain code 121 executes processing when the result of this determination is true, but does not execute processing when the result of this determination is false (typically, an error is returned). In this way, it is possible to define an inexecutable method in the entity definition and prevent such method from being executed.
- the determination of S1006 is permitted to execute the process according to the method (process type) according to the called function in the ACL description 406. It includes a determination as to whether or not the processing is for an attribute value that exists and a determination as to whether or not the processing is for an attribute value whose execution is prohibited in the ACL description 406. That is, when the attribute value that is permitted to execute the process is specified in the ACL description 406 and the attribute value related to the process to be executed corresponds to the attribute value, the general-purpose chain code 121 is the execution target. Executes the processing of.
- the general-purpose chain code 121 is the execution target. Does not perform any processing (typically returns an error). In this way, at least one of the attribute value that is allowed to execute the process and the attribute value that is prohibited from executing the process can be defined in the entity definition, and the process is executed and not executed based on the attribute value. Can be controlled.
- the "upgrade” referred to here may be an update of the description of the general-purpose chain code 121 itself, but in the present embodiment, after the update, the Init function is called and the schema definition information 131 in the state DB 122 is specified as an argument. It is to be replaced with schema definition information.
- the general-purpose process description 301 of the general-purpose chain code 121 includes a description of a process that prohibits the addition of a new entity.
- the general-purpose chain code 121 returns an error when it detects a request to add a new entity.
- Collections Definition is set for the channel on the blockchain network at the time of instantiation or upgrade of the general-purpose chain code 121.
- the Private Data Collection is a data format defined by Hyperledger Fabric, and if you use the Private Data Collection when updating the chaincode itself (during instantiation or upgrade), the Collection Definition. Must be specified. Therefore, in the present embodiment, when the Private Data Collection is used when updating the schema definition information 131 for the general-purpose chain code, the Collection Definition is specified (at the time of instantiation or upgrade).
- the present invention may be applied to blockchains other than Hyperledger Fabric, as well as licensed blockchains (typically private or consortium blockchains) and licenseless blockchains (typically). It may be applied to any of the public type blockchains).
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
複数のピアで構成されたピアツーピアネットワークの各ピアにおいて、エンティティに依存しない汎用の処理が定義されたスマートコントラクトである汎用スマートコントラクトが備えられ、当該汎用スマートコントラクトに関連付けられる一つ又は複数のエンティティの各々について当該エンティティのエンティティ定義を含んだスキーマ定義情報が格納される。汎用スマートコントラクトは、エンティティ名の指定を受け付け、当該指定されたエンティティ名のエンティティをスキーマ定義情報から特定し、特定したエンティティに対して処理を行う。
Description
本発明は、概して、ブロックチェーンに関する。
「ブロックチェーン」と呼ばれる技術が知られている。本出願時において、ブロックチェーンの定義として、日本ブロックチェーン協会から、下記の定義が提供されている。本発明に関するブロックチェーンの定義は、下記の定義(1)でもよいし、下記の広義の定義(2)でもよい。また、ブロックチェーンは、分散台帳技術の一例と解釈されてもよいし、或いは、分散台帳技術の一例がブロックチェーンと解釈されてもよい。
(1) A blockchain is defined as a protocol, or implementation of a protocol, used by an unspecified number of nodes containing Byzantine faults, and converges the probability of consensus reversion with the passage of time to zero.
(2) In a broader sense, a blockchain is a technology with a data structure which can easily detect manipulation using digital signatures and hash pointers, and where the data has high availability and integrity due to distribution across multiple nodes on a network.
(1) A blockchain is defined as a protocol, or implementation of a protocol, used by an unspecified number of nodes containing Byzantine faults, and converges the probability of consensus reversion with the passage of time to zero.
(2) In a broader sense, a blockchain is a technology with a data structure which can easily detect manipulation using digital signatures and hash pointers, and where the data has high availability and integrity due to distribution across multiple nodes on a network.
オープンソースのブロックチェーンに関して、Hyperledger Fabric(商標)が知られている。Hyperledger Fabricを用いてシステム開発をする上での標準のSDK(Software Development Kit)として、Hyperledger Fabric SDK for node.js (以下、「Fabric Node SDK」)が知られている。
Hyperledger Fabric SDK for node.jshttps://hyperledger.github.io/fabric-sdk-node/release-1.4/module-fabric-network.html
Hyperledger Fabric(Apache License 2.0)において、Fabric Node SDKが提供するAPI(Application Programming Interface)を利用して、ピアツーピアネットワークとしてのブロックチェーンネットワークを基盤としたサービス(例えばアプリケーション)が開発される。サービスの実行において、ブロックチェーンネットワークにデータを登録及び参照するためには、チェーンコードと呼ばれる特別なプログラムが必要である。このため、サービスの開発において、チェーンコードを開発及びデプロイすることが必要となる。
チェーンコードは、エンティティ毎に開発される。具体的には、チェーンコードのコーディングにおいて、当該チェーンコードに対応したエンティティの定義と、当該エンティティの操作のための処理の定義とが記述され、当該チェーンコードのインスタンス化において、引数として、当該チェーンコードにより操作されるエンティティの値が入力される。
チェーンコードの開発においては、ブロックチェーンに関する知識、及び、チェーンコード開発のためのAPIに関する知識が前提として必要であり、また、チェーンコードのコーディングが、エンティティ毎に必要である。このため、開発難易度が比較的高く、サービスの開発生産性が低い。
更に、エンティティ毎にチェーンコードが存在するため、サービスのメンテンナンスの負担が大きい。
以上のような課題は、ブロックチェーンネットワークを基盤としたサービスの実用化のハードルの一つである。また、チェーンコードは、スマートコントラクトの一例であるが、以上のような課題は、Hyperledger Fabric以外のブロックチェーンにおけるスマートコントラクトについてもあり得る。
複数のピアで構成されたピアツーピアネットワークの各ピアにおいて、エンティティに依存しない汎用の処理が定義されたスマートコントラクトである汎用スマートコントラクトが備えられ、当該汎用スマートコントラクトに関連付けられる一つ又は複数のエンティティの各々について当該エンティティのエンティティ定義を含んだスキーマ定義情報が格納される。汎用スマートコントラクトは、エンティティ名の指定を受け付け、当該指定されたエンティティ名のエンティティをスキーマ定義情報から特定し、特定したエンティティに対して処理を行う。
ブロックチェーンネットワークを基盤としたサービスの開発生産性が向上しメンテンナンス負担が低減する。
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVNE(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)でよい。
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated
Circuit))といった広義のプロセッサデバイスでもよい。
Circuit))といった広義のプロセッサデバイスでもよい。
また、以下の説明では、「チェーンコード」を主語として処理を説明する場合があるが、チェーンコードは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び/又はインターフェース装置を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有する装置又はシステム)とされてもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別して説明する場合は、参照符号を使用することがある。
また、以下の実施形態では、Hyperledger Fabricを例に取り、故に、スマートコントラクトとしてチェーンコードを例に取る。
図1は、本発明の一実施形態に係るシステム全体の構成を示す。
Hyperledger Fabricに関わり複数の許可されたピア110で構成されたピアツーピアネットワーク100を含むシステムとしてのブロックチェーンサービス基盤がある。ネットワーク50を介してブロックチェーンサービス基盤と通信するブロックチェーンクライアント160がある。ブロックチェーンクライアント160は、物理的な計算機でもよいし、物理的な計算機で実現される論理的な計算機(例えば、仮想計算機)でもよい。ブロックチェーンクライアント160は、ネットワーク60を介し、ユーザ(例えば、ブロックチェーンサービス基盤の利用企業)の計算機システムであるユーザシステム150と通信する。ネットワーク50及び60は同一のネットワークでもよい。ピア110間の通信は、ネットワーク50を介して行われてもよいし、図示しない専用のネットワークを介して行われてもよい。ブロックチェーンクライアント160の機能がピア110に含まれていてもよい。
ピアツーピアネットワーク100は、分散システムの一例でよく、ピア110は、分散システムにおけるノードの一例でよい。ピア110は、インターフェース装置111、記憶装置112及びそれらに接続されたプロセッサ113を有する。インターフェース装置111がネットワーク50に接続される。記憶装置112に、汎用チェーンコード121が格納されており、スキーマ定義情報131が格納される。記憶装置112に基づくデータストアの一例として、ステートDB(データベース)122及びPrivate Data Collection123がそれぞれ設けられる。ステートDB122及びPrivate Data Collection123に、一つ又は複数のエンティティ133(133A、133B、…)が格納される。エンティティ133は、データ(例えば、テーブル)である。いずれのエンティティ133が、ステートDB122のみに格納されるかや、ステートDB122及びPrivate Data Collection123にまたがるかは、スキーマ定義情報131に依存する。「ステートDB」は、「ワールドステート」又は「パブリックステート」と呼ばれてもよい。「Private Data Collection」は、「プライベートステート」と呼ばれてもよい。
図2は、一比較例に係るピアを示す。
一比較例では、ピア11に複数のエンティティ133が格納される場合、エンティティ133毎にチェーンコード251のコーディングを行う必要がある。例えば、開発者は、エンティティ133A用のチェーンコード251Aのコーディングと、エンティティ133B用のチェーンコード251Bのコーディングとを行う必要がある。チェーンコード251とエンティティ133は1:1である。
各チェーンコード251には、当該チェーンコード251に対応したエンティティ133に対する処理でありエンティティ133に依存した処理を表す個別処理記述201と、当該エンティティ133の定義を表すエンティティ定義記述203とが含まれる。開発者は、チェーンコード251のインスタンス化において、エンティティ133に登録される値を引数としてチェーンコード251に入力する。これにより、当該チェーンコード251により処理されるエンティティ133が実現される。
図3は、本実施形態に係るピア110を示す。
ピア110に、汎用チェーンコード121が用意されている。汎用チェーンコード121は、エンティティ133に依存しない汎用の処理を表す汎用処理記述301を含んだチェーンコードである。一つ又は複数のエンティティ133の各々に対する処理は、汎用チェーンコード121により行われる。
汎用チェーンコード121の外部に、スキーマ定義情報131が存在する。スキーマ定義情報131は、汎用チェーンコード121に紐付けられる一つ又は複数のエンティティ133の各々についてのエンティティ定義記述303を含んだ情報である。例えば、スキーマ定義情報131は、エンティティ133Aのエンティティ定義を表すエンティティ定義記述303Aと、エンティティ133Bのエンティティ定義を表すエンティティ定義記述303Bとを含む。
本実施形態の説明を簡単にするために、ピアツーピアネットワーク100のオーバーレイとしてのチャネルは一つであり、故に、各ピア110に存在する汎用チェーンコード121は一つであるとする。各ピア110において、チャネル毎に、汎用チェーンコード121が用意されてよい。
図4は、スキーマ定義情報131の一例を示す。
スキーマ定義情報131は、例えばJSON形式の情報である。スキーマ定義情報131には、キーバリュー形式で階層的に情報が登録される。スキーマ定義情報131は、エンティティ133毎のエンティティ定義記述303と、エンドースメントポリシーを表すエンドースメントポリシー記述413とを含む。
エンティティ定義記述303は、エンティティフィールド定義記述401、プライベートフィールド定義記述402、複合キー定義記述403、暗号化フィールド定義記述404、メソッド制御記述405、及びACL(Access Control List)記述406を含む。記述401~406のうち、記述402~405はオプションでよい。
エンティティフィールド定義記述401は、エンティティ133におけるフィールドの定義(例えば、型、フィールド名)を表す記述である。
プライベートフィールド定義記述402は、Private Data Collection123に格納されるフィールドの定義(例えば、フィールド名)を表す記述である。
複合キー定義記述403は、検索のためのキーの定義(例えば、フィールド名)を表す記述である。
暗号化フィールド定義記述404は、値が暗号化されるフィールドの定義(例えば、フィールド名)を表す記述である。
メソッド制御記述405は、エンティティ133に対する不可のメソッドを表す記述である。ここで言う「メソッド」は、処理の種別でよく、具体的には、登録、参照又は削除といったアクセスメソッドでよい。
ACL記述406は、処理の実行が許可される属性値と処理の実行が禁止される属性値とのうちの少なくとも一つを表す記述である。「属性値」は、アクセス元の属性(例えば、アクセス元ユーザの役職)を表す値でもよいし、アクセス対象のデータの属性を表す値でもよい。
スキーマ定義情報131は、CLI(Command Line Interface)経由で入力されてもよいが、本実施形態では、スキーマ定義UI(User Interface)経由で入力された情報に従い作成される情報である。
図4に例示のスキーマ定義情報131によれば、以下のように解釈することができる。
・エンティティ名"books"というエンティティを新たに定義し、フィールド(構成要素)として、id、name、isbn、price及びpublish_dateを有し、型がそれぞれ指定されている。そのうち、フィールド名“id”は必須項目(“required”)である。
・Private Data Collectionには、フィールド名“price”のフィールドが格納される。フィールド名“price”のフィールドは、ステートDBには格納されない。
・Composite Key検索の組み合わせキーとして、“publisher”と“publish_date”が登録される。
・フィールド名“price”のフィールドに登録される値は、共通鍵を用いた暗号化が行われる。
・メソッド“delete”は実行不可である。
・メソッド“register”については、ユーザ情報(例えばX.509証明書)に含まれる「title」の属性値が“director”又は“supervisor”のユーザのみ実行可能である。
・エンティティ名"books"というエンティティを新たに定義し、フィールド(構成要素)として、id、name、isbn、price及びpublish_dateを有し、型がそれぞれ指定されている。そのうち、フィールド名“id”は必須項目(“required”)である。
・Private Data Collectionには、フィールド名“price”のフィールドが格納される。フィールド名“price”のフィールドは、ステートDBには格納されない。
・Composite Key検索の組み合わせキーとして、“publisher”と“publish_date”が登録される。
・フィールド名“price”のフィールドに登録される値は、共通鍵を用いた暗号化が行われる。
・メソッド“delete”は実行不可である。
・メソッド“register”については、ユーザ情報(例えばX.509証明書)に含まれる「title」の属性値が“director”又は“supervisor”のユーザのみ実行可能である。
なお、全フィールドをPrivate Data Collectionに格納することの指定も可能である。具体的には、キー「transient」のバリューとして、全てのフィールドのフィールド名が指定されていれば、全てのフィールドがPrivate Data Collectionに格納される。
図5は、スキーマ定義UIの一例を示す。
スキーマ定義UI500は、スキーマ定義情報131の要素の入力を受け付けるUIである。スキーマ定義UI500は、エンティティ定義UI501とCREATEボタン550とを有する。エンティティ定義UI501には、汎用チェーンコード121に紐付けられるエンティティ133毎のエンティティ定義の情報が入力される。
エンティティ定義UI501は、UI511~515を有する。UI511は、エンティティ名の入力を受け付けるUIである。UI512は、エンティティのバージョンの入力を受け付けるUIである。
UI513は、エンティティ133における各フィールドの定義(例えば、フィールド名、型、必須か否か、Private Data Collectionへの格納対象とするか否か、暗号化対象とするか否か)の入力を受け付けるUIである。
UI514は、エンティティ133に対する不可のメソッドの入力を受け付けるUIである。UI515は、ACLに含まれる情報(例えば、属性名、属性値、許可か不可か、対象となる動作)の入力を受け付けるUIである。
CREATEボタン550が押された場合、スキーマ定義UI500経由で入力された情報に基づき、引数としてのスキーマ定義情報131(例えば図4参照)が生成される。
スキーマ定義UI500を利用することで、開発者は、スキーマ定義情報131の作成のためにスキーマ定義情報131の要素を指定すればよく、JSON形式のスキーマ定義情報131それ自体を記述しなくてよい。なお、図5によれば、スキーマ定義UI500が有するエンティティ定義UI501は一つであるが、例えばエンティティが増えるごとにタブ形式のエンティティ定義UI501が増えるといった方法によって、スキーマ定義UI500を介し、エンティティ毎のエンティティ定義の入力が可能でよい。
図6は、汎用チェーンコード121に入力されたスキーマ定義情報131と当該スキーマ定義情報131に従う格納と制御の一例を示す。
汎用チェーンコード121の外部の情報としてのスキーマ定義情報131に、例えば、キー「エンティティ名」のバリューとして“books”を含んだエンティティ定義がある。これにより、エンティティ名“books”のエンティティ133Aが、汎用チェーンコード121によりステートDB122に格納される。
また、エンティティ定義では、キー「transient」のバリューとして“price”を含む。これにより、エンティティ名“books”のエンティティ133Aについて、フィールド名“price”の値が、汎用チェーンコード121により、ステートDB122ではなくPrivate Data Collection123に格納される(符号133A´参照)。
また、エンティティ定義では、キー「disable」のバリューとして“delete”を含む。これにより、エンティティ名“books”のエンティティ133Aに対して削除の操作(トランザクション)を汎用チェーンコード121が受け付けた場合、汎用チェーンコード121が、削除を実行せず、エラーを返す。
また、エンティティ定義では、キー「acl」のバリューとしてACL制御情報を含む。ACL制御情報は、キー「メソッド名」のバリューとして“register”を含みキー“allow”のバリューとして““title”: [ “director”, “supervisor” ]”を含む。これにより、エンティティ名“books”のエンティティ133Aに対する登録の操作を汎用チェーンコード121が受け付けた場合、汎用チェーンコード121が、操作元(アクセス元)の属性が“director”又は“supervisor”であるか否かの判定し、当該判定の結果が真の場合に登録を実行し、当該判定の結果が偽の場合に登録を実行しない。
Private Data Collection123を形成するためにCollection Definition600及びTransient Map(図示せず)が必要である。
Collection Definition600は、例えばJSON形式の情報であり、ピア110のローカル領域(ステートDB122及びPrivate Data Collection123以外の場所)に保存される。汎用チェーンコード121のインスタンス化の際のパラメータの一つとして指定される。Collection Definition600には、キー「name」がある。汎用チェーンコード121によりステートDB122とPrivate Data Collection123に跨るフィールドが属するエンティティを特定可能とするため、キー「name」のバリューとしてエンティティ名が設定される。
Transient Mapは、ステートDB122に登録されるデータとは別に扱われる。Transient Mapに設定されたデータは、ステートDB122(及びLedger)に登録されないという特性があり、Private Data Collection123に格納されるデータや暗号化のための鍵情報(共通鍵)などを汎用チェーンコード121に渡すために利用される。
図7は、汎用チェーンコード121に入力されたスキーマ定義情報131と当該スキーマ定義情報131に従う格納の別の一例を示す。
エンティティ名“books”のエンティティ定義において、キー「encryption」のバリューとして““price”がある。これにより、エンティティ名“books”のエンティティ133Aについて、フィールド名“price”の値が、汎用チェーンコード121により、ステートDB122に暗号化されて登録される。
本実施形態によれば、各ピア110に、汎用チェーンコード121が備えられていて、汎用チェーンコード121に、一つ又は複数のエンティティの各々について当該エンティティのエンティティ定義の記述を含んだスキーマ定義情報131が関連付けられる。開発者は、チェーンコードそれ自体の実装が不要であり、エンティティの定義(例えば、レイアウトや付随するデータ管理要件)をメタデータとしてのスキーマ定義情報131に定義すればよい。言い換えれば、コーディングレスでエンティティへのデータ登録や参照を実現することができる。このため、Hyperledger Fabricに関して深い知識を有していない開発者でもブロックチェーンアプリケーションの開発が可能である。つまり、開発生産性が向上する。
また、本実施形態によれば、汎用チェーンコード121とエンティティ133は1:n(nは自然数)である。このため、複数のエンティティ133があっても、複数のチェーンコードをそれぞれ個別にメンテナンスする必要が無く、一つの汎用チェーンコード121をメンテナンスすればよい。つまり、メンテナンス負担が低減される。
なお、ピア110において、汎用チェーンコード121とエンティティ133は1:nであるが、エンティティ133の構成及び格納の概要は、図12に例示の通りである。エンティティ133毎に、エンティティ名があり、各エンティティ133は、キーバリュー形式でデータを保持する。キーは、エンティティ名とユニークキー(エンティティのIDの一例)との組で定義されてよい。ユニークキーは、連番でもよいし、任意の文字列でもよい。バリューは、JSON形式のデータ(例えば、ユーザシステム150で実行される図示しない業務アプリケーションから格納対象として指定されたデータ)でよい。スキーマ定義情報131は、後述するように、汎用チェーンコード121のインスタンス化の際に指定されるが、エンティティにバリューとして登録されるデータは、スキーマ定義情報131が表すエンティティ定義と整合が取れたデータである。
以下、本実施形態で行われる処理の一例を説明する。
図8は、インスタンス化処理の流れの一例を示す。
Fabric Node SDK(許可型ブロックチェーンに関するスマートコントラクト開発環境の一例)によれば、チェーンコードのインスタンス化において引数として指定された情報をチェーンコードが受け付けるようになっている。汎用チェーンコード121に、Init関数(インスタンス化用の関数の一例)が関連付けられている。
呼出し元(例えば、開発者が使用するユーザシステム150)からREST API(Fabric Node SDK)のAPIが呼び出される(S801)。その呼出しでは、スキーマ定義が入力される。例えば、図5に例示のスキーマ定義UI500が呼出し元に提供されてスキーマ定義UI500を通じてスキーマ定義が入力される。
ピア110におけるピアI/F(REST APIに対するインターフェースとしてのプログラム)がREST APIからInstantiate要求を受ける(S802)。Instantiate要求にスキーマ定義情報131が関連付けられている。スキーマ定義情報131は、S801で入力されたスキーマ定義に従う情報である。
Instantiate要求に応答して、ピアI/Fから、汎用チェーンコード121のInit関数が呼び出される(S803)。当該呼出しにおいて、引数としてスキーマ定義情報131がある。Init関数が呼び出された汎用チェーンコード121が、引数としてスキーマ定義情報131を受け付け、当該受け付けたスキーマ定義情報131を、ステートDB122に格納する(S804)。汎用チェーンコード121が、スキーマ定義情報131をステートDB122に格納した場合、完了をピアI/Fに応答する(S805)。
ピアI/Fが、S805の応答を受けた後、Collection Definitionをローカル領域から読み込み(S806)、Private Data Collectionのポリシー(読み込まれたCollection Definitionから特定されたポリシー)を、チャネルに反映する(S807)。これにより、Private Data Collectionのアクセス制御が実現される。その後、ピアI/Fが、完了をREST APIに応答する(S808)。REST APIから呼出し元に完了が応答される(S809)。
このように、本実施形態に係るインスタンス化処理では、Init関数の呼出しでの引数としてエンティティに登録される値に代えてスキーマ定義情報131が入力されてステートDB122に格納される。これにより、汎用チェーンコード121のインスタンス化を実現することができる。
図9は、登録処理の流れの一例を示す。
呼出し元(例えば、運用管理者が使用するユーザシステム150)からREST APIが呼び出される(S901)。その呼出しでは、入力データが入力される。
ピア110におけるピアI/FがREST APIからRegister要求を受ける(S902)。Register要求に、S901で入力された入力データが関連付けられている。
Register要求に応答して、ピアI/Fから、汎用チェーンコード121のRegister関数(登録用の関数の一例)が呼び出される(S903)。
Register関数が呼び出された汎用チェーンコード121が、入力データを受け付け、スキーマDB122からスキーマ定義情報131を読み出す(S904)。入力データは、フィールド名の値を含んだデータセットとエンティティ名とを少なくとも一つのエンティティについて含む。エンティティ名に紐付くデータセットは、例えば下記を含む。
・エンティティに対するユニークキー。
・ステートDB122についてフィールド毎のフィールド名と当該フィールドに登録される値。
・Private Data Collection123についてフィールド毎のフィールド名と当該フィールドに登録される値を含んだTransient Map(更に、暗号化のための共通鍵を含むことがある)。
・エンティティに対するユニークキー。
・ステートDB122についてフィールド毎のフィールド名と当該フィールドに登録される値。
・Private Data Collection123についてフィールド毎のフィールド名と当該フィールドに登録される値を含んだTransient Map(更に、暗号化のための共通鍵を含むことがある)。
汎用チェーンコード121は、受け付けた入力データにおいて指定されているエンティティ名と一致するエンティティ名を含んだエンティティ定義を、読み出したスキーマ定義情報131から特定する(S905)。汎用チェーンコード121は、入力データにおいて指定されているエンティティ名に対応したデータセットが、S905で特定されたエンティティ定義に適合するか否かを判定する(S906)。S906の判定は、例えば、下記のうちの少なくとも一つを含む。
・入力データにおけるデータセットに含まれている全てのフィールド名が、S905で特定されたエンティティ定義のエンティティフィールド定義記述401に記述されているか否か。
・入力データにおけるデータセットに含まれている全てのフィールド名の各々について、当該フィールド名のフィールドに登録される値の型が、エンティティフィールド定義記述401に記述されている型に適合するか否か。
・Private Data Collection123に登録される値に対応したフィールド名が、プライベートフィールド定義記述402に記述されているか否か。
・入力データにおけるデータセットに含まれている全てのフィールド名が、S905で特定されたエンティティ定義のエンティティフィールド定義記述401に記述されているか否か。
・入力データにおけるデータセットに含まれている全てのフィールド名の各々について、当該フィールド名のフィールドに登録される値の型が、エンティティフィールド定義記述401に記述されている型に適合するか否か。
・Private Data Collection123に登録される値に対応したフィールド名が、プライベートフィールド定義記述402に記述されているか否か。
S906の判定の結果が真の場合に、汎用チェーンコード121は、S905で特定されたエンティティ定義に従うフィールドに、入力データにおいて指定されており当該フィールドに対応した値を登録する(S907及び/又はS908)。このように、S906の判定の結果が真の場合にフィールドに値が登録されるので、不適切な値がフィールドに登録されることを防ぐことができる。
その後、汎用チェーンコード121が、応答をピアI/Fに返す(S909)。ピアI/Fが、S909の応答に応じて、応答をREST APIに返す(S910)。REST APIから呼出し元に応答が返る(S911)。
このように、インスタンス化処理の後の登録処理により、汎用チェーンコード121についてスキーマ定義情報131が表す複数のエンティティ133に値を登録することができる。その後、任意のエンティティ133に値を追加したり任意のエンティティ133における値を更新したりする場合には、図9に示した登録処理と同様の登録処理が行われる。すなわち、汎用チェーンコード121のRegister関数が呼び出され、そのエンティティ133のエンティティ名を含んだ入力データが汎用チェーンコード121に入力される。汎用チェーンコード121は、スキーマ定義情報131を読み出し、入力データ中の追加又は更新後の値が当該エンティティ名に対応したエンティティ定義を満たすか否か判定し、当該判定の結果が真の場合に値をエンティティ133に登録する。また、汎用チェーンコード121の汎用処理記述301(図3参照)が、エンティティ名を除く登録処理記述を含み、当該登録処理記述が表す登録処理に従い、汎用チェーンコード121が、登録を行う。
また、S905で特定されたエンティティ定義が、プライベートフィールド定義記述402(Private Data Collection123に格納されるフィールドとして指定されたフィールド名)を含んでいて、入力データが、当該フィールドに登録される値を含んでいる場合、汎用チェーンコード121が、当該記述402において指定されているフィールド名のフィールドを、Private Data Collection123に格納し、当該フィールドに、当該フィールド名に対応した値を登録する(S908)。このように、Private Data Collection123への値の登録が実現される。なお、本登録処理では、S907(ステートDB122への値の登録)が行われその後にS908(Private Data Collection123への値の登録)という2種類の登録が発生することがあるが、これらの登録は、一つのトランザクションとして扱われてよい。このため、どちらか一方の登録がエラーにより失敗した場合は、登録処理それ自体が失敗したとみなされ、呼び出し元にエラーが返却される。言い換えれば、S907及びS908の双方が正常終了した場合に呼び出し元に完了応答が通知されてよい。
また、S907及びS908の少なくとも一つにおいて、暗号化が指定されているフィールドがあれば、汎用チェーンコード121が、入力データ中の共通鍵(暗号鍵の一例)を用いて当該フィールド名の値を暗号化し、当該暗号化された値を、当該フィールド名のフィールドに登録する。これにより、エンティティに登録される値の秘匿化が実現される。
なお、入力データは、エンティティ毎のデータでもよいし、複数のエンティティについてのデータでもよい。エンティティに対する値の登録が完了する都度に、S909で、汎用チェーンコード121が、当該エンティティのユニークキー(IDの一例)を含んだ応答を返し、当該ユニークキーが、呼出し元に返されてもよい。これにより、呼出し元は、どのエンティティに対する登録まで完了したかを把握できる。
図10は、登録処理以外のトランザクション処理の流れの一例を示す。
登録処理以外のトランザクション処理として、例えば、参照処理(検索処理)及び削除処理がある。汎用チェーンコード121の汎用処理記述301(図3参照)が、登録処理以外のトランザクション処理についても、エンティティ名を除く処理記述を含み、当該処理記述が表す処理に従い、汎用チェーンコード121が、処理を行う。登録処理以外のトランザクション処理についても、処理流れの概要は、登録処理の流れと同様である。
すなわち、呼出し元からREST APIが呼び出される(S1001)。当該呼出しでは、少なくとも処理対象のエンティティ名が入力される。
ピアI/FがREST APIから要求を受ける(S1002)。当該要求に、S1001に入力された入力データが関連付けられている。
Register要求に応答して、ピアI/Fから、汎用チェーンコード121の関数が呼び出される(S1003)。例えば、参照(検索)の場合、queryに関する関数(例えば、query関数、queryPublicData関数、queryPrivateData関数、richQueryPublicData関数、richQueryPrivateData関数)が呼び出される。削除の場合、delete関数が呼び出される。
関数が呼び出された汎用チェーンコード121が、スキーマDB122からスキーマ定義情報131を読み出し(S1004)、入力されたエンティティ名と一致するエンティティ名を含んだエンティティ定義を、読み出したスキーマ定義情報131から特定する(S1005)。汎用チェーンコード121は、当該特定されたエンティティ定義が満たされているか否かを判定する(S1006)。
S1006の判定の結果が真の場合に、汎用チェーンコード121は、S1005で特定されたエンティティ定義に従うエンティティに対する処理を行う(S1007及び/又はS1008)。その後、汎用チェーンコード121が、応答をピアI/Fに返す(S1009)。ピアI/Fが、S1009の応答に応じて、応答をREST APIに返す(S1010)。REST APIから呼出し元に応答が返る(S1011)。
呼び出された関数が、queryに関する関数(参照用の関数の一例)の場合、汎用チェーンコード121は、エンティティ名の他に検索条件を受け付ける。検索条件は、検索キーや検索範囲でよい。汎用チェーンコード121は、当該エンティティ名のエンティティから、当該検索条件キーに適合する値を検索し、検索の結果を呼出し元に返す。このように、汎用チェーンコード121は、エンティティ名の指定を受けて検索を実行する。なお、検索範囲は、検索条件で指定されることに代えて又は加えて、呼び出される関数の種類によって定まってもよい。例えば、queryPublicData関数又はrichQueryPublicData関数が呼び出された場合、検索範囲はステートDB122でよく、queryPrivateData関数又はrichQueryPrivateData関数が呼び出された場合、検索範囲はPrivate Data Collection123でよい。
また、S1005で特定されたエンティティ定義の記述が、メソッド制御記述405(図4参照)を含む場合、S1006の判定は、呼び出された関数に従うメソッド(処理の種別)が、メソッド制御記述405において実行が不可とされているメソッドか否かの判定を含む。汎用チェーンコード121は、この判定の結果が真の場合に処理を実行するが、この判定の結果が偽の場合に処理を実行しない(典型的にはエラーを返す)。このように、エンティティ定義において実行不可のメソッドを定義することができそのようなメソッドが実行されることを避けることができる。
また、S1005で特定されたエンティティ定義の記述が、ACL記述406を含む場合、S1006の判定は、呼び出された関数に従うメソッド(処理の種別)に従う処理が、ACL記述406において実行が許可とされている属性値についての処理か否かの判定とACL記述406において実行が禁止とされている属性値についての処理か否かの判定とを含む。すなわち、ACL記述406において、処理の実行が許可される属性値が指定されていて、且つ、当該属性値に、実行対象の処理に関する属性値が該当する場合に、汎用チェーンコード121が、実行対象の処理を実行する。一方、ACL記述406において、処理の実行が禁止される属性値が指定されていて、且つ、当該属性値に、実行対象の処理に関する属性値が該当する場合に、汎用チェーンコード121が、実行対象の処理を実行しない(典型的にはエラーを返す)。このように、エンティティ定義において処理の実行が許可される属性値と当該処理の実行が禁止される属性値の少なくとも一つを定義することができ、属性値を基に処理の実行と非実行を制御することができる。
汎用チェーンコード121のアップグレードが必要なケースが生じる。ここで言う「アップグレード」とは、汎用チェーンコード121それ自体の記述の更新でもよいが、本実施形態では、Init関数が呼び出されてステートDB122におけるスキーマ定義情報131が引数として指定された更新後のスキーマ定義情報に差し替えられることである。
スキーマ定義情報131における少なくとも一部の所定の情報の更新が必要な場合の例として、図11に示すように、下記のうちの少なくとも一つがある。
・エンドースメントポリシーの変更。新規ピアの参加又は他の理由により、スキーマ定義情報131におけるエンドースメントポリシー記述413の更新が必要である。
・汎用チェーンコード121に関連付けられるエンティティの追加。例えば、汎用チェーンコード121の汎用処理記述301は、新たなエンティティの追加を禁止する処理の記述を含む。汎用チェーンコード121は、新たなエンティティの追加要求を検知した場合、エラーを返す。
・Private Data Collectionのポリシーの変更。Private Data Collectionを使用するためには、汎用チェーンコード121のインスタンス化の際に、スキーマ定義情報131を引数として与えることとは別に、Collections Definitionをオプションとして指定する必要がある。このため、ポリシー(Collections Definition)を変更する場合は、チェーンコードのアップグレードが必要となる。なお、Collections Definitionは、汎用チェーンコード121のインスタンス化時又はアップグレード時に、ブロックチェーンネットワーク上のチャネルに対して設定される。また、Hyperledger Fabricのプロトコルよれば、Private Data CollectionはHyperledger Fabricで定義されるデータフォーマットであり、チェーンコード自身を更新する際に、Private Data Collectionを使用する場合は(インスタンス化又はアップグレード時に)Collection Definitionを指定する必要がある。そこで、本実施形態では、汎用チェーンコードについてスキーマ定義情報131を更新する際に、Private Data Collectionを使用する場合は(インスタンス化又はアップグレード時に)Collection Definitionが指定される。
・エンドースメントポリシーの変更。新規ピアの参加又は他の理由により、スキーマ定義情報131におけるエンドースメントポリシー記述413の更新が必要である。
・汎用チェーンコード121に関連付けられるエンティティの追加。例えば、汎用チェーンコード121の汎用処理記述301は、新たなエンティティの追加を禁止する処理の記述を含む。汎用チェーンコード121は、新たなエンティティの追加要求を検知した場合、エラーを返す。
・Private Data Collectionのポリシーの変更。Private Data Collectionを使用するためには、汎用チェーンコード121のインスタンス化の際に、スキーマ定義情報131を引数として与えることとは別に、Collections Definitionをオプションとして指定する必要がある。このため、ポリシー(Collections Definition)を変更する場合は、チェーンコードのアップグレードが必要となる。なお、Collections Definitionは、汎用チェーンコード121のインスタンス化時又はアップグレード時に、ブロックチェーンネットワーク上のチャネルに対して設定される。また、Hyperledger Fabricのプロトコルよれば、Private Data CollectionはHyperledger Fabricで定義されるデータフォーマットであり、チェーンコード自身を更新する際に、Private Data Collectionを使用する場合は(インスタンス化又はアップグレード時に)Collection Definitionを指定する必要がある。そこで、本実施形態では、汎用チェーンコードについてスキーマ定義情報131を更新する際に、Private Data Collectionを使用する場合は(インスタンス化又はアップグレード時に)Collection Definitionが指定される。
以上、本発明の一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、本発明は、Hyperledger Fabric以外のブロックチェーンに適用されてもよいし、許可型ブロックチェーン(典型的には、プライベート型又はコンソーシアム型のブロックチェーン)と許可レスブロックチェーン(典型的には、パブリック型のブロックチェーン)のいずれに適用されてもよい。
121……汎用チェーンコード
Claims (15)
- 許可型ブロックチェーンに関わり複数の許可されたピアで構成されたピアツーピアネットワークを含むシステムであって、
各ピアにおいて、
当該ピアに実行されることによりエンティティに対する処理を行うスマートコントラクトであってエンティティに依存しない汎用の処理が定義されたスマートコントラクトである汎用スマートコントラクトが備えられており、
当該汎用スマートコントラクトに関連付けられる一つ又は複数のエンティティの各々について当該エンティティのエンティティ定義の記述を含んだスキーマ定義情報が格納され、
当該汎用スマートコントラクトが、エンティティ名の指定を受け付け、当該指定されたエンティティ名のエンティティを前記スキーマ定義情報から特定し、特定したエンティティに対して処理を行う、
システム。 - 前記許可型ブロックチェーンに関するスマートコントラクト開発環境によれば、スマートコントラクトのインスタンス化において引数として指定された情報をスマートコントラクトが受け付けるようになっており、
前記汎用スマートコントラクトに、インスタンス化用の関数が関連付けられており、
インスタンス化用の関数が呼び出された汎用スマートコントラクトが、
引数として前記スキーマ定義情報を受け付け、
当該受け付けたスキーマ定義情報を、当該汎用スマートコントラクトを有するピアに格納する、
請求項1に記載のシステム。 - 前記エンティティ定義は、エンティティのエンティティ名と、当該エンティティが有する一つ以上のフィールドの各々のフィールド名とを含み、
前記汎用スマートコントラクトに、登録用の関数が関連付けられており、
登録用の関数が呼び出された汎用スマートコントラクトが、
フィールド名の値を含んだデータセットとエンティティ名とを少なくとも一つのエンティティについて含む入力データを受け付け、
当該入力データにおいて指定されているエンティティ名と一致するエンティティ名を含んだエンティティ定義を、当該ピアに格納されているスキーマ定義情報から特定し、
当該特定されたエンティティ定義に従うエンティティのフィールドに、当該入力データにおいて指定されており当該フィールドに対応した値を登録する、
請求項2に記載のシステム。 - 前記登録用の関数が呼び出された汎用スマートコントラクトが、
前記入力データにおいて指定されているエンティティ名に対応したデータセットが、当該エンティティ名を用いて特定されたエンティティ定義に適合するか否かを判定し、
当該判定の結果が真の場合、当該特定されたエンティティ定義に従うエンティティのフィールドに、当該フィールドに対応した値を登録する、
請求項3に記載のシステム。 - 前記エンティティ定義が、一部公開用のフィールドとして指定されたフィールド名を含むことが可能であり、
前記特定されたエンティティ定義が、一部公開用のフィールドとして指定されたフィールド名を含んでおり、前記入力データが、前記一部公開用のフィールドに登録される値を含んでいる場合、前記汎用スマートコントラクトが、一部公開用のフィールドとして指定されているフィールド名のフィールドを、当該ピアにおける一部公開用のデータストアに格納し、当該フィールドに、当該フィールド名に対応した値を登録する、
請求項3に記載のシステム。 - 前記エンティティ定義が、暗号化用のフィールドとして指定されたフィールド名を含むことが可能であり、
前記特定されたエンティティ定義が、暗号化用のフィールドとして指定されたフィールド名を含んでいる場合、
当該フィールド名について、前記データセットが、暗号鍵を含んでおり、
前記汎用スマートコントラクトが、当該暗号鍵を用いて当該フィールド名の値を暗号化し、当該暗号化された値を、当該フィールド名のフィールドに登録する、
請求項3に記載のシステム。 - 前記入力データには、エンティティ名に関連付けられたIDを含んでおり、
前記汎用スマートコントラクトが、前記登録用の関数が呼び出されたことに応答して行われるトランザクションであって、当該エンティティ名に対応したエンティティのフィールドに値を登録することを含むトランザクションがコミットした場合に、当該エンティティ名に対応したIDを含んだ応答を呼出し元に返す、
請求項3に記載のシステム。 - 前記エンティティ定義が、当該エンティティ定義に対応したエンティティに対する実行不可の処理の種別の指定を含むことが可能であり、
前記スキーマ定義情報のうちの、指定されたエンティティ名に対応したエンティティ定義において、実行不可の処理の種別が指定されていて、且つ、当該実行不可として指定されている処理に、前記指定されたエンティティ名のエンティティに対する実行対象の処理の種別が該当する場合に、前記汎用スマートコントラクトが、前記実行対象の処理を実行する、
請求項2に記載のシステム。 - 前記エンティティ定義が、処理の実行が許可される属性値と処理の実行が禁止される属性値とのうちの少なくとも一つを含み、
前記スキーマ定義情報のうちの、指定されたエンティティ名に対応したエンティティ定義において、処理の実行が許可される属性値が指定されていて、且つ、当該属性値に、前記指定されたエンティティ名のエンティティに対する実行対象の処理に関する属性値が該当する場合に、前記汎用スマートコントラクトが、前記実行対象の処理を実行し、
前記スキーマ定義情報のうちの、指定されたエンティティ名に対応したエンティティ定義において、処理の実行が禁止される属性値が指定されていて、且つ、当該属性値に、前記指定されたエンティティ名のエンティティに対する実行対象の処理に関する属性値が該当する場合に、前記汎用スマートコントラクトが、前記実行対象の処理を実行しない、
請求項2に記載のシステム。 - 前記スキーマ定義情報における少なくとも一部の所定の情報の更新が必要な場合、前記インスタンス化用の関数が呼び出され、前記汎用スマートコントラクトが、引数として指定された更新後のスキーマ定義情報を受け付ける、
請求項2に記載のシステム。 - 前記スキーマ定義情報における少なくとも一部の所定の情報の更新が必要な場合とは、下記のうちの少なくとも一つである、
・当該スキーマ定義情報において記述されている情報が表すエンドースメントポリシーが変更される場合、
・新たなエンティティが追加される場合、
・少なくとも一つのエンティティ定義に含まれている、一部公開用のフィールドに関してのポリシーが、変更される場合、
請求項10に記載のシステム。 - 前記汎用スマートコントラクトに、参照用の関数が関連付けられており、
参照用の関数が呼び出された汎用スマートコントラクトが、
呼出し元からエンティティ名の指定と検索条件を受け付け、
当該指定されたエンティティ名のエンティティから、当該検索条件に適合する値を検索し、
検索の結果を呼出し元に返す、
請求項1に記載のシステム。 - 許可型ブロックチェーンに関わり複数の許可されたピアで構成されたピアツーピアネットワークの構築を支援する方法であって、
ピアで実行される汎用スマートコントラクトのインスタンス化用の関数が呼び出された場合、当該汎用スマートコントラクトが、引数として指定されたスキーマ定義情報を受け付け、
前記汎用スマートコントラクトは、前記ピアに実行されることによりエンティティに対する処理を行うスマートコントラクトであってエンティティに依存しない汎用の処理が定義されたスマートコントラクトであり、
前記スキーマ定義情報は、前記汎用スマートコントラクトに関連付けられる一つ又は複数のエンティティの各々について、当該エンティティのエンティティ定義の記述を含み、
前記汎用スマートコントラクトが、前記受け付けたスキーマ定義情報を、前記ピアに格納する、
方法。 - 許可型ブロックチェーンに関わりピアツーピアネットワークにおけるピアに実行されることによりエンティティに対する処理を行うスマートコントラクトであって、
インスタンス化用の関数が呼び出された場合、
引数として指定されたスキーマ定義情報を受け付け、
前記スキーマ定義情報は、前記スマートコントラクトに関連付けられる一つ又は複数のエンティティの各々について、当該エンティティのエンティティ定義の記述を含み、
前記許可型ブロックチェーンに関するスマートコントラクト開発環境によれば、スマートコントラクトのインスタンス化において引数として指定された情報をスマートコントラクトが受け付けるようになっており、
前記受け付けたスキーマ定義情報を、前記ピアに格納する、
ことを前記ピアに実行させるスマートコントラクト。 - 登録用の関数が呼び出された場合、
フィールド名の値を含んだデータセットとエンティティ名とを少なくとも一つのエンティティについて含む入力データを受け付け、
前記エンティティ定義は、エンティティのエンティティ名と、当該エンティティが有する一つ以上のフィールドの各々のフィールド名とを含み、
当該入力データにおいて指定されているエンティティ名と一致するエンティティ名を含んだエンティティ定義を、当該ピアに格納されているスキーマ定義情報から特定し、
当該特定されたエンティティ定義に従うエンティティのフィールドに、当該入力データにおいて指定されており当該フィールドに対応した値を登録する、
ことを前記ピアに実行させる請求項14に記載のスマートコントラクト。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202080105912.9A CN116348862A (zh) | 2020-10-13 | 2020-10-13 | 包含与区块链相关的对等网络的系统、辅助该对等网络的构建的方法、以及在对等节点执行的智能合约 |
PCT/JP2020/038660 WO2022079809A1 (ja) | 2020-10-13 | 2020-10-13 | ブロックチェーンに関わるピアツーピアネットワークを含むシステム、同ピアツーピアネットワークの構築を支援する方法、並びに、ピアで実行されるスマートコントラクト |
US18/028,792 US20230334064A1 (en) | 2020-10-13 | 2020-10-13 | System including peer-to-peer network involved in blockchain, method for supporting construction of the same peer-to-peer network, and smart contract executed on peer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2020/038660 WO2022079809A1 (ja) | 2020-10-13 | 2020-10-13 | ブロックチェーンに関わるピアツーピアネットワークを含むシステム、同ピアツーピアネットワークの構築を支援する方法、並びに、ピアで実行されるスマートコントラクト |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022079809A1 true WO2022079809A1 (ja) | 2022-04-21 |
Family
ID=81207778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2020/038660 WO2022079809A1 (ja) | 2020-10-13 | 2020-10-13 | ブロックチェーンに関わるピアツーピアネットワークを含むシステム、同ピアツーピアネットワークの構築を支援する方法、並びに、ピアで実行されるスマートコントラクト |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230334064A1 (ja) |
CN (1) | CN116348862A (ja) |
WO (1) | WO2022079809A1 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019535076A (ja) * | 2016-09-30 | 2019-12-05 | アマゾン・テクノロジーズ、インコーポレイテッド | 暗号学的に保護された台帳が支援するイミュータブルなデータベース |
US20200252406A1 (en) * | 2019-01-31 | 2020-08-06 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (dlt) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190147553A1 (en) * | 2017-11-14 | 2019-05-16 | TitleFlow LLC | Storing linked lists of mineral rights transactions in directed acyclic graphs of cryptographic hash pointers |
US11057366B2 (en) * | 2018-08-21 | 2021-07-06 | HYPR Corp. | Federated identity management with decentralized computing platforms |
US10764752B1 (en) * | 2018-08-21 | 2020-09-01 | HYPR Corp. | Secure mobile initiated authentication |
US10726002B1 (en) * | 2019-08-19 | 2020-07-28 | DLT Global Inc. | Relational data management and organization using DLT |
US20220027992A1 (en) * | 2020-07-23 | 2022-01-27 | Plants Map, Inc. | Non-fungible cryptographic tokens for tracking trees |
-
2020
- 2020-10-13 CN CN202080105912.9A patent/CN116348862A/zh active Pending
- 2020-10-13 US US18/028,792 patent/US20230334064A1/en active Pending
- 2020-10-13 WO PCT/JP2020/038660 patent/WO2022079809A1/ja active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019535076A (ja) * | 2016-09-30 | 2019-12-05 | アマゾン・テクノロジーズ、インコーポレイテッド | 暗号学的に保護された台帳が支援するイミュータブルなデータベース |
US20200252406A1 (en) * | 2019-01-31 | 2020-08-06 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (dlt) |
Non-Patent Citations (2)
Title |
---|
"Innovative Technology of Blockchain - Application Development with Hyperledger Fabric", 22 June 2018, RICK TELECOM CO., LTD., JP, ISBN: 978-4-86594-146-3, article SHIMIZU, TOMONORI ET AL.: "Chapter 4 Hyperledger Fabric application development", pages: 135 - 202, XP009537020 * |
ANONYMOUS: "hyperledger-fabricdocs Documentation - Release master", HYPERLEDGER-FABRICDOCS DOCUMENTATION, HYPERLEDGER, 30 September 2020 (2020-09-30), pages 1 - 601, XP009537005 * |
Also Published As
Publication number | Publication date |
---|---|
US20230334064A1 (en) | 2023-10-19 |
CN116348862A (zh) | 2023-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6490633B2 (ja) | プライベート・クラウド・コンピューティングためのシステムおよび方法 | |
Holmes | Hadoop in practice | |
JP2021533448A (ja) | ハイパーレッジャファブリックブロックチェーンにおいてsqlベースのリッチクエリをサポートするためのシステムおよび方法 | |
CN111527488A (zh) | 基于区块链的数据同步的系统和方法 | |
US11288395B2 (en) | Metadata storage architecture and data aggregation | |
US9063815B2 (en) | Provisioning a virtual machine from one or more VM images | |
Martí et al. | Dataclay: A distributed data store for effective inter-player data sharing | |
EP4071648A1 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
Chen et al. | Fbaas: Functional blockchain as a service | |
US20230342437A1 (en) | Blockchain-based system and method for publishing an operating system | |
Goel | Neo4j cookbook | |
WO2022079809A1 (ja) | ブロックチェーンに関わるピアツーピアネットワークを含むシステム、同ピアツーピアネットワークの構築を支援する方法、並びに、ピアで実行されるスマートコントラクト | |
Gupta | Neo4j Essentials | |
WO2021048665A1 (en) | Storing a program on a blockchain | |
Modi et al. | Getting started with terraform | |
US11620307B2 (en) | Stage replication in a cloud data lake | |
Diaz et al. | Azure Data Lake Store and Azure Data Lake Analytics | |
US12061600B2 (en) | API management for batch processing | |
Kirpes et al. | Distributed Data Validation for a Key-value Store in a Decentralized Electric Vehicle Charging Network. | |
Japikse et al. | Build the RESTful Service with ASP. NET Core | |
Shukla | Elasticsearch for Hadoop | |
Novokmet | Monolith to serverless microservice application evolution | |
Sikos et al. | Graph databases | |
Vemula et al. | Exploring Azure Cosmos DB and Its Change Feed Mechanism | |
Zhang et al. | Building Team Projects |
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: 20957638 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 202347027476 Country of ref document: IN |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 20957638 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: JP |