WO2021125107A1 - 制御方法、装置、および、プログラム - Google Patents

制御方法、装置、および、プログラム Download PDF

Info

Publication number
WO2021125107A1
WO2021125107A1 PCT/JP2020/046398 JP2020046398W WO2021125107A1 WO 2021125107 A1 WO2021125107 A1 WO 2021125107A1 JP 2020046398 W JP2020046398 W JP 2020046398W WO 2021125107 A1 WO2021125107 A1 WO 2021125107A1
Authority
WO
WIPO (PCT)
Prior art keywords
transaction data
contract
distributed ledger
stored
variable
Prior art date
Application number
PCT/JP2020/046398
Other languages
English (en)
French (fr)
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 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
Priority to CN202080086752.8A priority Critical patent/CN114846497A/zh
Priority to JP2021565560A priority patent/JPWO2021125107A1/ja
Publication of WO2021125107A1 publication Critical patent/WO2021125107A1/ja
Priority to US17/835,189 priority patent/US20220300957A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions

Definitions

  • the present invention relates to control methods, devices, and programs.
  • the technology for aligning the operation policy or operation timing is disclosed even in the situation where there are multiple administrators in the system using the distributed ledger.
  • the present invention provides a control method for suppressing an increase in power consumption of a computer system that manages contracts.
  • the control method is a control method executed by one of the plurality of devices in a contract management system including a plurality of devices having a distributed ledger, and is a first user.
  • (1) The transaction data is acquired, the acquired first transaction data is stored in the distributed ledger, and the predetermined value included as the first variable in the first transaction data stored in the distributed ledger is read out and described.
  • the storage process of storing in the rewritable storage unit of one device is executed, the second transaction data including the change instruction for changing the first variable to the identification information of the third user is acquired, and the acquired second transaction.
  • a change process for changing the first variable stored in the storage unit according to the change command is executed, and the first (I)
  • a recording medium such as a system, an apparatus, an integrated circuit, a computer program or a computer-readable CD-ROM, and the system, the apparatus, the integrated circuit, the computer program. And may be realized by any combination of recording media.
  • the control method of the present invention can suppress an increase in power consumption of a computer system that manages contracts.
  • FIG. 1 is an explanatory diagram schematically showing an example of a contract flow according to the first embodiment.
  • FIG. 2 is a block diagram schematically showing the configuration of the contract management system according to the first embodiment.
  • FIG. 3 is a block diagram showing a functional configuration of the ledger server according to the first embodiment.
  • FIG. 4 is an explanatory diagram showing a first example of transaction data according to the first embodiment.
  • FIG. 5 is an explanatory diagram showing a second example of transaction data according to the first embodiment.
  • FIG. 6 is an explanatory diagram showing a third example of transaction data according to the first embodiment.
  • FIG. 7 is an explanatory diagram showing a fourth example of transaction data according to the first embodiment.
  • FIG. 8 is a first sequence diagram showing the processing of the contract management system according to the first embodiment.
  • FIG. 9 is a second sequence diagram showing the processing of the contract management system according to the first embodiment.
  • FIG. 10 is an explanatory diagram showing a first example of transaction data according to the second embodiment.
  • FIG. 11 is an explanatory diagram showing a second example of transaction data according to the second embodiment.
  • FIG. 12 is a flow chart showing the processing of the ledger server according to the second embodiment.
  • FIG. 13 is an explanatory diagram showing an example of transaction data according to the third embodiment.
  • FIG. 14 is a sequence diagram showing the processing of the contract management system according to the third embodiment.
  • FIG. 15 is an explanatory diagram showing a modified example of the supply chain.
  • FIG. 16 is an explanatory diagram showing a data structure of the blockchain.
  • FIG. 17 is an explanatory diagram showing a data structure of transaction data.
  • the present invention provides a control method for suppressing an increase in power consumption of a computer system that manages contracts.
  • the control method is executed by one of the plurality of devices in a contract management system including a plurality of devices having a distributed ledger.
  • the first variable indicating an authorized person who has the authority to recognize the first contract between the first user and the second user as valid, and a predetermined value indicating that the authorized person is undecided.
  • the first transaction data including the set first variable is acquired, the acquired first transaction data is stored in the distributed ledger, and the first transaction data stored in the distributed ledger is included as the first variable.
  • Second transaction data including a change instruction that reads the predetermined value and stores it in the rewritable storage unit of the one device, and changes the first variable to the identification information of the third user.
  • the acquired second transaction data is stored in the distributed ledger, the second transaction data is stored in the distributed ledger, and then the first variable stored in the storage unit is stored in accordance with the change instruction.
  • the change process to be changed is executed, the third transaction data including the performance order for executing the fulfillment process for fulfilling the first contract is acquired, the acquired third transaction data is stored in the distributed ledger, and the third is said.
  • This is a control method for executing the fulfillment process in accordance with the fulfillment command when it is determined that the first variable stored in the storage unit is other than the predetermined value after the transaction data is stored in the distributed ledger. ..
  • the transaction data corresponding to the first contract is managed using the distributed ledger, and , The authorized person set after that is properly managed by changing the information. Then, after confirming that the authorized person of the first contract is not undecided, it is managed so that the performance process is executed.
  • the processing of the undecided information change is performed by the computer processing of the server, in other words, it is executed without human intervention. Therefore, it is possible to suppress an increase in computer power consumption or a required amount of computer resources. In addition, it is possible to reduce the time and effort required for human processing.
  • the control method can suppress an increase in power consumption of the computer system that manages the contract.
  • the performance process when executing the fulfillment process, after the third transaction data is stored in the distributed ledger, the identification information of the third user as the authorized person is stored in the first variable stored in the storage unit.
  • the performance process may be executed according to the performance order.
  • the control method can suppress an increase in power consumption of a computer system that manages a contract involving three parties.
  • the first variable further includes an electronic signature of the authorized person to be given to the first transaction data, and when executing the fulfillment process, after storing the third transaction data in the distributed ledger.
  • the performance process may be executed according to the performance order.
  • the above control method can suppress an increase in power consumption of the computer system that manages the contract while making it possible to confirm that the authorized person has recognized the contract as valid.
  • the first transaction data includes a first contract code including the first variable and a storage instruction for storing the first variable in the storage unit, and in the storage process, the first transaction data is the same. It may be performed by executing the storage instruction included in the first contract code by the contract execution unit included in the one device based on the storage in the distributed ledger.
  • the process of storing the first transaction data in the storage unit is automatically executed by the smart contract based on the first transaction data being stored in the distributed ledger, in other words, a person intervenes. It is executed without. Therefore, the increase in computer power consumption can be further suppressed, or the required amount of computer resources can be further suppressed. In addition, it is possible to further reduce the time and effort required for human processing. As described above, the control method can further suppress an increase in power consumption of the computer system that manages the contract.
  • the first transaction data includes a first contract code including the first variable and a storage instruction for storing the first variable in the storage unit, and in the storage process, the first transaction data is the said.
  • the contract execution unit included in the one device executes the storage instruction included in the first contract code
  • the first contract code is the storage unit.
  • the contract execution unit executes the signature setting function based on the acquired fourth transaction data stored in the distributed ledger. May be good.
  • the signature of the authorized person is stored in the storage unit by using the signature setting function prepared in advance included in the first contract code. Since the signature setting function prepared in advance by including it in the first contract code is used, the labor required for human processing is further reduced, the increase in computer power consumption is further suppressed, or the required amount of computer resources is further reduced. It can be further suppressed.
  • the second transaction data includes a second contract code including the change instruction
  • the change process is included in the one device based on the fact that the second transaction data is stored in the distributed ledger. It may be performed by executing the change instruction by the contract execution unit.
  • the process of changing the second information is automatically executed by the smart contract based on the second transaction data being stored in the distributed ledger, in other words, it is executed without human intervention.
  • the increase in computer power consumption can be further suppressed, or the required amount of computer resources can be further suppressed.
  • the control method can further suppress an increase in power consumption of the computer system that manages the contract.
  • the first transaction data includes the electronic signature of the first user and the electronic signature of the second user, and when the first transaction data is stored in the distributed ledger, the first transaction data is described. When both the electronic signature of the first user and the electronic signature of the second user included in the transaction data are successfully verified, the first transaction data may be stored in the distributed ledger.
  • the first transaction data corresponding to the first contract includes the electronic signatures of the first user and the second user who have concluded the first contract. Therefore, by verifying each electronic signature, it can be proved that the first user and the second user have certainly concluded the first contract. Therefore, the above control method can manage the contract more appropriately.
  • control method further acquires the fifth transaction data including the second variable related to the second contract between the first user and the third user, and stores the acquired fifth transaction data in the distributed ledger.
  • the second transaction data may be the second transaction data provided based on the fact that the fifth transaction data is stored in the distributed ledger.
  • the fifth transaction data is automatically stored in the distributed ledger.
  • the second transaction data for changing the authorized person is stored in the distributed ledger, and the authorized person is changed. Therefore, it is possible to further reduce the time and effort required for human processing, further suppress the increase in computer power consumption, or further suppress the required amount of computer resources.
  • the first contract includes a contract in which the first user purchases a material from the second user and delivers the purchased material to a predetermined delivery destination by a predetermined deadline
  • the second contract includes the contract.
  • a variable indicating the deadline for delivering the product and a variable indicating the delivery destination of the product may be included.
  • the control method can appropriately manage the material contract between the first user and the second user and the authority of the material contract.
  • the device is one of the plurality of devices in a contract management system including a plurality of devices having a distributed ledger, and is a device of a processing unit and the distributed ledger.
  • a ledger storage unit that stores data, an execution unit, and a rewritable storage unit, and the processing unit has an authorized person who has the authority to recognize that the first contract between the first user and the second user is valid.
  • the first transaction data including the first variable to be shown and the first variable in which a predetermined value indicating that the authorized person is undecided is set is acquired, and the acquired first transaction data is used as the distributed ledger.
  • the execution unit reads the predetermined value included as the first variable in the first transaction data stored in the distributed ledger and stores it in the rewritable storage unit of the one device.
  • the processing is executed, and the processing unit further acquires the second transaction data including the change instruction for changing the first variable into the identification information of the third user, and the acquired second transaction data is stored in the distributed ledger.
  • the execution unit further executes a change process for changing the first variable stored in the storage unit according to the change command.
  • the processing unit further acquires third transaction data including a performance order for executing the performance process for fulfilling the first contract, stores the acquired third transaction data in the distributed ledger, and the execution unit receives the third transaction data. Further, after storing the third transaction data in the distributed ledger, when it is determined that the first variable stored in the storage unit is other than the predetermined value, the fulfillment process is executed according to the fulfillment order. It is a device to do.
  • the program according to one aspect of the present invention is a program for causing a computer to execute the above control method.
  • a recording medium such as a system, an apparatus, an integrated circuit, a computer program or a computer-readable CD-ROM, and the system, the apparatus, the integrated circuit, the computer program.
  • a recording medium such as a system, an apparatus, an integrated circuit, a computer program or a computer-readable CD-ROM, and the system, the apparatus, the integrated circuit, the computer program.
  • it may be realized by any combination of recording media.
  • FIG. 1 is an explanatory diagram schematically showing an example of the contract flow in the present embodiment.
  • FIG. 1 schematically shows a contract involving three parties, Company A, Company B, and Company C, which constitute the supply chain, and the delivery of goods made by the contract.
  • Company A is also referred to as a first user
  • Company B is also referred to as a second user
  • Company C is also referred to as a third user.
  • a material contract is a contract in which Company A purchases materials from Company B, and Company B delivers the materials to a delivery destination (also referred to as a material delivery destination).
  • the material contract includes the delivery date of the material, the purchase price of the material, and the delivery destination of the material.
  • the purchase price of the material and the delivery date of the material have been decided, but it is assumed that the delivery destination of the material is undecided.
  • the material delivery destination to be decided in the future recognizes that the contract between company A and company B is valid, it is assumed that the contract is fulfilled.
  • the above contract is not fulfilled in its original state, in other words, it is invalid at the time it is concluded.
  • the delivery destination of the material and the person who has the authority to recognize the above contract as valid also referred to as the authorized person
  • the authorized person is set with information indicating undecided.
  • a manufacturing consignment contract (corresponding to the second contract) is concluded between company A and company C.
  • the manufacturing consignment contract is a contract that stipulates that Company C manufactures a product from a material and delivers the manufactured product to Company A.
  • the material is delivered from Company B.
  • the manufacturing consignment contract includes the delivery date of the product, the purchase price of the product, and the delivery destination of the product (also referred to as the delivery destination of the product).
  • Company C who is the authorized person, confirms that there is no problem by referring to the contents of the material contract, and recognizes that the material contract is valid ((4) in Fig. 1).
  • Company A pays Company B the purchase price of the material related to the material contract ((5a) in Fig. 1), and Company B delivers the material to Company C ((5a in Fig. 1)).
  • Company B delivers the material to Company C ((5a in Fig. 1)).
  • Company A pays the amount of money related to the manufacturing consignment contract to Company C ((6a) in FIG. 1), and Company C delivers the product to Company A ((6b) in Fig. 1), so that the manufacturing consignment contract is made. Is fulfilled.
  • the material delivery destination and the authorized person in the smart contract CA are set to be undecided when the material contract between the company A and the company B is concluded, and then the smart contract CB is set when the manufacturing consignment contract between the company A and the company C is concluded. Is expected to be changed or set by the processing performed by.
  • the material delivery destination and the authorized person are stored in a rewritable storage area so that the material delivery destination and the authorized person can be changed or set.
  • FIG. 2 is a block diagram schematically showing the configuration of the contract management system 1 according to the present embodiment.
  • the contract management system 1 includes ledger servers 10A, 10B and 10C, and terminals 20A, 20B and 20C.
  • ledger servers 10A, 10B and 10C are also referred to as “ledger server 10A and the like", and the terminals 20A, 20B and 20C are also referred to as “terminal 20A and the like”.
  • the ledger server 10A and the terminal 20A belong to the company A
  • the ledger server 10B and the terminal 20B belong to the company B
  • the ledger server 10C and the terminal 20C belong to the company C.
  • the contract management system 1 shows an example of managing a contract in which three parties are involved, but the number of persons involved in the contract may be four or more.
  • Each device included in the contract management system 1 is directly or indirectly connected to the network N and can communicate with each other via the network N.
  • the network N may be composed of any communication line or network, and may include, for example, the Internet, a carrier network of a mobile phone, an access network of an Internet provider, a public access network, and the like.
  • the ledger server 10A is one of a plurality of ledger servers 10A and the like that manage contracts using a distributed ledger in the contract management system 1.
  • the ledger server 10A is also referred to as a device.
  • the ledger server 10A has a distributed ledger. Transaction data is stored in the distributed ledger held by the ledger server 10A.
  • the transaction data stored in the distributed ledger includes transaction data including a contract code (also simply referred to as a code) related to a smart contract related to a contract.
  • the ledger server 10A has a rewritable storage area in addition to the storage area in which the distributed ledger is stored, and stores variables related to the contract in the rewritable storage area.
  • the ledger servers 10B and 10C are devices having the same functions as the ledger server 10A, respectively, and operate independently of the ledger server 10A.
  • Terminal 20A is an information terminal used by a user belonging to company A.
  • the terminal 20A is operated by the user and is used, for example, to generate a smart contract code or to arrange the smart contract code on the ledger server 10A or the like.
  • the terminal 20A is, for example, a personal computer, a smartphone, a tablet, or the like.
  • the terminals 20B and 20C have the same functions as the terminal 20A, respectively, and are information terminals used by users belonging to the companies B and C, and operate independently of the terminal 20A.
  • one or more terminals may belong to each of company A, company B, and company C.
  • the terminal 20A may further have the function of the ledger server 10A. In that case, the terminal 20A corresponds to a device that manages contracts using a distributed ledger.
  • the terminal 20B may further include the function of the ledger server 10B. In that case, the terminal 20B corresponds to a device that manages contracts using a distributed ledger.
  • the terminal 20C may further include the function of the ledger server 10C. In that case, the terminal 20C corresponds to a device that manages contracts using a distributed ledger.
  • FIG. 3 is a block diagram showing a functional configuration of the ledger server 10A according to the present embodiment.
  • the ledger server 10A includes a processing unit 11, a ledger storage unit 12, an execution unit 13, and a storage unit 14.
  • the processing unit 11 is a functional unit that executes processing related to transaction data.
  • the processing unit 11 can be realized by executing a program by a processor (for example, a CPU (Central Processing Unit)) included in the ledger server 10A using a memory.
  • a processor for example, a CPU (Central Processing Unit) included in the ledger server 10A using a memory.
  • the processing unit 11 acquires transaction data and executes a process of storing the acquired transaction data in the distributed ledger. Further, the processing unit 11 generates transaction data, generates an electronic signature (also simply referred to as a signature) for the generated transaction data, and executes a process of assigning the generated signature to the transaction data.
  • an electronic signature also simply referred to as a signature
  • the processing unit 11 stores the new transaction data in the distributed ledger
  • the processing unit 11 stores the new transaction data in the ledger storage unit 12 by a method according to the type of the distributed ledger. Further, the processing unit 11 transmits and receives communication data to and from the ledger storage unit 12 provided in another ledger server such as the ledger server 10A, and stores the transaction data in the ledger storage unit 12 provided in the other ledger server.
  • the distributed ledger is a blockchain
  • the processing unit 11 generates a block containing new transaction data, and after forming a consensus algorithm between the ledger server 10A and the like for the generated block, the above-mentioned The block is stored in the ledger storage unit 12.
  • the processing unit 11 acquires the first transaction data and stores the acquired first transaction data in the distributed ledger.
  • the first transaction data is a variable (also called the first variable) indicating an authorized person who has the authority to recognize the material contract (first contract) between company A and company B as valid, and the authorized person is undecided.
  • a variable for which a predetermined value indicating is set As the predetermined value, a numerical value (for example, zero) or a predetermined reserved value that is not actually used to indicate the material delivery destination may be used within the range of the numerical value that can be set in the second variable.
  • the processing unit 11 acquires the second transaction data and stores the acquired second transaction data in the distributed ledger.
  • the second transaction data includes a change instruction for changing the first variable to the identification information of company C.
  • the second transaction data is the second transaction provided based on the fact that the fifth transaction data including the variables (also referred to as the second variables) related to the second contract between the company A and the company C is stored in the distributed ledger. It may be data.
  • the processing unit 11 acquires the third transaction data and stores the acquired third transaction data in the distributed ledger.
  • the third transaction data includes a performance order that executes a performance process that fulfills the material contract.
  • the ledger storage unit 12 is a storage unit that stores the distributed ledger.
  • the distributed ledger stored in the ledger storage unit 12 stores one or more transaction data, and is managed so as to be difficult to falsify by using characteristics such as a hash value (described later).
  • the ledger storage unit 12 stores the transaction data provided by the processing unit 11 in the distributed ledger. Transaction data from the past to the present is stored in the distributed ledger. Based on the characteristic that it is difficult to falsify the information recorded in the distributed ledger, the transaction data is managed so as not to be falsified.
  • the distributed ledger is, for example, a blockchain, and this case will be described as an example, but it is also possible to adopt another type of distributed ledger (for example, IOTA or hash graph).
  • the distributed ledger may execute a consensus algorithm (for example, PBFT (Practical Byzantine Facility Resource), PoW (Proof of Work) or PoS (Proof of Stake)) when storing new data. , It may not be executed.
  • PBFT Practice Byzantine Facility Resource
  • PoW Proof of Work
  • PoS Proof of Stake
  • Hyperledger fabric is an example of a distributed ledger technology that does not execute a consensus algorithm.
  • the execution unit 13 is a functional unit that executes processing by referring to the transaction data stored in the distributed ledger stored in the ledger storage unit 12.
  • the execution unit 13 can be realized by executing a program by a processor (for example, a CPU) included in the ledger server 10A using a memory.
  • a processor for example, a CPU
  • the execution unit 13 is a contract execution unit that executes processing according to the code of the smart contract included in the transaction data stored in the distributed ledger will be described as an example.
  • the execution unit 13 reads out a predetermined value included as the first variable in the first transaction data stored in the distributed ledger and stores it in the storage unit 14. Execute the storage process to store.
  • the storage process is performed, for example, by the execution unit 13 executing the first contract code based on the fact that the first transaction data is stored in the distributed ledger.
  • the execution unit 13 executes the signature setting function based on the acquired fourth transaction data being stored in the distributed ledger. It may be done by executing.
  • the first contract code includes a signature setting function that sets a digital signature stored as a first variable in the storage unit 14.
  • the execution unit 13 executes a change process of changing the first variable stored in the storage unit 14 according to the change instruction after the second transaction data is stored in the distributed ledger.
  • the change process is performed, for example, by executing a change instruction by the execution unit 13 based on the fact that the second transaction data is stored in the distributed ledger.
  • the second transaction data includes the change instruction. Includes two contract codes.
  • the execution unit 13 determines that the first variable stored in the storage unit 14 is other than a predetermined value after the third transaction data is stored in the distributed ledger, the execution unit 13 executes the performance process according to the performance order. To do.
  • the performance process When executing the fulfillment process, after storing the third transaction data in the distributed ledger, it is determined that the identification information of the third user is set as the authority of the first variable stored in the storage unit 14. If so, the performance process may be executed according to the performance order.
  • the fulfillment process is executed according to the fulfillment order. May be good.
  • the first variable further includes the electronic signature of the authorized person to be given to the first transaction data.
  • the storage unit 14 is a storage device having a storage area for storing variables.
  • the variable is a variable indicating information about the contract, and specifically includes a first variable and a second variable.
  • the variables stored in the storage unit 14 are set and read by the execution unit 13.
  • the storage unit 14 is realized by a rewritable storage device, for example, a memory such as a RAM (Random Access Memory) or a storage such as an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
  • a multi-sig technique in which a plurality of signatures are given may be applied to the first transaction data, and this case will be described as an example. However, even if a single electronic signature is given to the first transaction data. Good.
  • the first transaction data may include the electronic signatures of the companies A and B, which are the contractors of the material contract.
  • the processing unit 11 stores the first transaction data in the distributed ledger, if the verification of the electronic signatures of each of the companies A and B included in the first transaction data is successful, the first transaction Store the data in the distributed ledger.
  • the first contract and the second contract can also be expressed as follows. That is, the first contract includes a contract in which the first user purchases materials from the second user and delivers the purchased materials to a predetermined delivery destination by a predetermined deadline.
  • the second contract also includes a contract in which the third user manufactures a product from the material delivered by the second user and delivers it to the first user.
  • the second variable includes a variable indicating the purchase price of the product, a variable indicating the deadline for delivering the product, and a variable indicating the delivery destination of the product.
  • FIG. 4 is an explanatory diagram showing transaction data TA, which is a first example of transaction data in the present embodiment.
  • the transaction data TA corresponds to the first transaction data.
  • the transaction data TA is generated by, for example, the ledger server 10A.
  • the transaction data TA includes a "smart contract CA code", an "argument to be passed to the initialization function", a "signature 1", a “signature 2”, and a "transmission date and time”. Including.
  • the "smart contract CA code” is a variable used by the smart contract CA, and includes a variable unit indicating a variable stored in the storage unit 14. The variable part is shown by a broken line frame in FIG. The same expression will be used hereafter.
  • the variables used by the smart contract CA include the amount, material delivery destination, delivery date and material delivery destination signature.
  • the amount indicates the amount paid by Company A in the material contract.
  • the material delivery destination indicates the delivery destination of the material manufactured by Company B under the material contract.
  • the delivery date indicates the date when Company B delivers the material to the material delivery destination.
  • the material delivery destination signature indicates the signature that the material delivery destination should attach to the transaction data TA.
  • the "smart contract CA code” includes an initialization function, a payment function, and a signature setting function.
  • the initialization function is a special function executed by the execution unit 13 when the transaction data is stored in the distributed ledger.
  • the initialization function is a special function executed by the execution unit 13 when the transaction data is stored in the distributed ledger. The same applies thereafter.
  • the initialization function accepts the amount and delivery date as arguments. Further, when the initialization function is executed, the value is set in the variable indicating the material delivery destination, the variable indicating the amount of money, and the variable indicating the delivery date stored in the storage unit 14. Specifically, when the initialization function is executed, a predetermined value is set for each of the variable indicating the material delivery destination and the material delivery destination signature, the amount received as an argument is set for the variable indicating the amount, and the delivery date is set. Set the delivery date accepted as an argument in the indicated variable.
  • the function shown as the initialization function in FIG. 4 is regarded as a general function (that is, a function that is not an initialization function), and the same effect can be obtained even if the function is executed by the transaction data. The same is true for initialization functions contained in the code of other smart contracts.
  • the payment function is a function that executes a process of paying the amount of money related to the material contract from company A to company B, which is the contractor of the material contract, in order to fulfill the material contract.
  • the payment function executes the verification process of the material delivery destination signature, and if the verification is successful, executes the payment process. If the verification fails, error handling may be performed.
  • the material delivery destination signature stored in the storage unit 14 is set.
  • the signature setting function accepts a signature as an argument.
  • the signature setting function When the signature setting function is executed, the value is set in the variable indicating the material delivery destination signature stored in the storage unit 14. Specifically, when the initialization function is executed, the signature accepted as an argument is set in the variable indicating the material delivery destination signature.
  • the "argument to be passed to the initialization function" is an argument to be passed to the initialization function of the smart contract CA, and includes the delivery date (January 1, 2019) and the amount (5 million yen). The information shown as this argument is passed to the initialization function.
  • Signature 1 is the first of the two electronic signatures given to the transaction data TA.
  • Signature 1 includes the signature SA of Company A.
  • Signature 2 is the second of the two electronic signatures given to the transaction data TA.
  • Signature 2 includes the signature SB of Company B.
  • Send date and time indicates the date and time when the transaction data TA was transmitted. "October 01, 2018 12:00:00" is stored in the transmission date and time.
  • the initialization function is executed, and the amount and delivery date passed to the initialization function as arguments are the amount and delivery date of the storage unit 14, respectively. Is set in the variable indicating.
  • FIG. 5 is an explanatory diagram showing transaction data TB, which is a second example of transaction data in the present embodiment.
  • the transaction data TB is generated by, for example, the ledger server 10A.
  • the transaction data TB includes a "smart contract CB code", an "argument to be passed to the initialization function", a "signature 1", a “signature 2”, and a "transmission date and time”. Including.
  • Smart contract CB code includes a variable part and an initialization function.
  • the variables used by the smart contract CB include the amount, product delivery destination and delivery date.
  • the amount indicates the amount paid by Company A in the manufacturing consignment contract.
  • the product delivery destination indicates the delivery destination of the product manufactured by Company C under the manufacturing consignment contract.
  • the delivery date indicates the date when Company C delivers the product to the product delivery destination.
  • the initialization function accepts the amount, delivery date, product delivery destination, contract address, and material delivery destination as arguments.
  • the initialization function sets values in the variable indicating the amount of money, the variable indicating the delivery date, the variable indicating the product delivery destination, and the variable indicating the material delivery destination, which are stored in the storage unit 14. .. Specifically, when the initialization function is executed, the amount received as an argument is set in the variable indicating the amount, the delivery date accepted as an argument is set in the variable indicating the delivery date, and the variable indicating the product delivery destination is set. Set the product delivery destination accepted as an argument. When the initialization function is executed, the material delivery destination accepted as an argument is set in the variable indicating the material delivery destination of the smart contract specified from the argument.
  • the "argument to be passed to the initialization function" is an argument to be passed to the initialization function of the smart contract CB, and the delivery date (February 1, 2019), the amount (5 million yen), and the product delivery destination (identification of company A). Information), a contract address (address of smart contract CA), and a material delivery destination (identification information of company C).
  • the information shown as this argument is passed to the initialization function.
  • the identification information of company A set in the product delivery destination which is a variable, may be simply described as company A. The same applies to companies B and C. The same applies thereafter.
  • Signature 1 is the first of the two electronic signatures given to the transaction data TB.
  • Signature 1 includes the signature SA of Company A.
  • Signature 2 is the second of the two electronic signatures given to the transaction data TB.
  • Signature 2 includes the signature SC of Company C.
  • Send date and time indicates the date and time when the transaction data TB was transmitted. "November 01, 2018 12:00:00" is stored in the transmission date and time.
  • the initialization function is executed, and the delivery date, amount, and product delivery destination passed to the initialization function as arguments are stored in the storage unit, respectively. It is set in 14 variables indicating the delivery date, amount, and product delivery destination. Further, the material delivery destination of the smart contract CA is changed to company C based on the contract address passed to the initialization function as an argument and the material delivery destination.
  • FIG. 6 is an explanatory diagram showing transaction data TC, which is a third example of transaction data in the present embodiment.
  • the transaction data TC is transaction data for executing the signature setting function of the smart contract CA. Storing the transaction data TC in the distributed ledger is equivalent to sending an instruction to execute the signature setting function of the smart contract CA.
  • the transaction data TC corresponds to the second transaction data.
  • the transaction data TC includes an "executed function", an "argument to be passed to the signature setting function", a "signature”, and a "transmission date and time”.
  • “Function to be executed” indicates a function to be executed when the smart contract is stored in the distributed ledger.
  • the signature setting function of the smart contract CA is set as the function to be executed.
  • the "signature” is an electronic signature given to the transaction data TC.
  • the signature includes the signature SA of Company A.
  • Send date and time indicates the date and time when the transaction data TC was transmitted. "November 02, 2018, 12:00:00" is stored in the transmission date and time.
  • the signature of company C is set to the signature as an argument, and the signature setting function of the smart contract CA is executed. As a result, the material of the smart contract CA is executed. The delivery address signature is changed to the signature of company C.
  • FIG. 7 is an explanatory diagram showing transaction data TD, which is a fourth example of transaction data in the present embodiment.
  • the transaction data TD is a function for executing the payment function of the smart contract CA. Storing the transaction data TD in the distributed ledger is equivalent to sending an instruction to execute the payment function of the smart contract CA.
  • the transaction data TD corresponds to the third transaction data.
  • the transaction data TD includes a "function to be executed”, a "signature”, and a "transmission date and time”.
  • “Function to be executed” indicates a function to be executed when the smart contract is stored in the distributed ledger.
  • the payment function of the smart contract CA is set in the function to be executed.
  • the "signature” is an electronic signature given to the transaction data TD.
  • the signature includes the signature SA of Company A.
  • the payment function of the smart contract CA is executed, and as a result, the payment process of paying the amount of the material contract from the company A to the company C is executed. ..
  • 8 and 9 are sequence diagrams showing the processing of the contract management system 1 in the present embodiment. 8 and 9 show a series of processes related to the conclusion of a material contract, the conclusion of a manufacturing consignment contract, and the setting of an authorized person.
  • step S101 of FIG. 8 the processing unit 11 of the ledger server 10A acquires the code of the smart contract CA.
  • the code of the smart contract CA may be acquired by the ledger server 10A generating the code, or by receiving the code transmitted from the terminal 20A based on the operation by the person in charge of the company A. May be good.
  • step S102 the processing unit 11 of the ledger server 10A generates transaction data TA.
  • the generated transaction data TA includes the code of the smart contract CA acquired in step S101 (see FIG. 4).
  • step S103 the processing unit 11 of the ledger server 10A generates a signature for the transaction data TA generated in step S102, assigns it to the transaction data TA, and transmits the signed transaction data TA to the ledger server 10B.
  • step S104 the processing unit 11 of the ledger server 10B receives the transaction data TA transmitted in step S103, generates a signature for the received transaction data TA, assigns it to the transaction data TA, and assigns the signature to the transaction.
  • Data TA is transmitted to the ledger servers 10A and 10C, respectively.
  • all the ledger servers 10A and the like have transaction data TAs with signatures of the ledger servers 10A and 10B, respectively.
  • each of the ledger server 10A and the like stores the transaction data TA signed or transmitted in step S104 in the distributed ledger.
  • the transaction data TA may be stored in the distributed ledger on condition that consensus building is made based on the consensus algorithm.
  • steps S106 and S107 are realized by executing the initialization function of the smart contract CA based on the fact that each processing unit 11 such as the ledger server 10A stores the transaction data TA in the distributed ledger in step S105. ..
  • each processing unit 11 such as the ledger server 10A sets the variable indicating the amount of money stored in the storage unit 14 and the variable indicating the delivery date as the amount of money passed as an argument of the initialization function in the transaction data TA. Set the delivery date and so on.
  • each processing unit 11 such as the ledger server 10A sets predetermined values in the variables indicating the material delivery destination and the material delivery destination signature stored in the storage unit 14, respectively.
  • the predetermined value is a value indicating that the material delivery destination and the material delivery destination signature are undecided.
  • step S108 the processing unit 11 of the ledger server 10A acquires the code of the smart contract CB.
  • the code of the smart contract CB may be acquired by the ledger server 10A generating the code, or by receiving the code transmitted from the terminal 20A based on the operation by the person in charge of the company A. May be good.
  • step S109 the processing unit 11 of the ledger server 10A generates transaction data TB.
  • the generated transaction data TB includes the code of the smart contract CB acquired in step S108 (see FIG. 5).
  • step S110 the processing unit 11 of the ledger server 10A generates a signature for the transaction data TB generated in step S109, assigns it to the transaction data TB, and transmits the signed transaction data TB to the ledger server 10C.
  • step S111 the processing unit 11 of the ledger server 10C receives the transaction data TB transmitted in step S110, generates a signature for the received transaction data TB, assigns it to the transaction data TB, and assigns the signature to the transaction.
  • Data TB is transmitted to the ledger servers 10A and 10B, respectively.
  • all the ledger servers 10A and the like have transaction data TBs signed by the ledger servers 10A and 10C, respectively.
  • each of the ledger servers 10A and the like stores the transaction data TB signed or transmitted in step S111 in the distributed ledger.
  • the transaction data TB may be stored in the distributed ledger on condition that consensus building is made based on the consensus algorithm.
  • each processing unit 11 such as the ledger server 10A executing the initialization function of the smart contract CB based on storing the transaction data TB in the distributed ledger in step S112. ..
  • each processing unit 11 such as the ledger server 10A uses transaction data TB to initialize a variable indicating the amount of money stored in the storage unit 14, a variable indicating the delivery date, and a variable indicating the product delivery destination. Set the amount passed as an argument of, the delivery date, and the product delivery destination, respectively.
  • each processing unit 11 such as the ledger server 10A sets the identification information of company C in the variable indicating the material delivery destination of the smart contract CA stored in the storage unit 14.
  • step S121 the processing unit 11 of the ledger server 10C calculates the signature to be attached to the transaction data TA.
  • step S122 the processing unit 11 of the ledger server 10C generates transaction data TC.
  • the generated transaction data TC includes the signature calculated in step S121.
  • step S123 the processing unit 11 of the ledger server 10C generates a signature for the transaction data TC generated in step S122, assigns it to the transaction data TC, and transmits the signed transaction data TC to the ledger servers 10A and 10B. To do.
  • each of the ledger server 10A and the like stores the transaction data TC signed or transmitted in step S123 in the distributed ledger.
  • step S125 is realized by executing the signature setting function of the smart contract CA based on the fact that each processing unit 11 such as the ledger server 10A stores the transaction data TC in the distributed ledger in step S124.
  • each processing unit 11 such as the ledger server 10A sets the signature passed as an argument of the signature setting function in the transaction data TC to the material delivery destination signature stored in the storage unit 14.
  • step S126 the processing unit 11 of the ledger server 10A generates transaction data TD.
  • step S127 the processing unit 11 of the ledger server 10A generates a signature for the transaction data TD generated in step S126, assigns it to the transaction data TD, and transmits the signed transaction data TD to the ledger servers 10B and 10C. To do.
  • each of the ledger server 10A and the like stores the transaction data TD signed or transmitted in step S127 in the distributed ledger.
  • each processing unit 11 such as the ledger server 10A executing the payment function of the smart contract CA based on storing the transaction data TD in the distributed ledger in step S128.
  • each processing unit 11 such as the ledger server 10A executes a verification process of the material delivery destination signature stored in the storage unit 14.
  • each processing unit 11 such as the ledger server 10A executes the payment process when it is determined that the verification process of the material delivery destination signature in step S129 is successful.
  • the ledger server 10A (that is, company A) generates the code and transaction data of the smart contract related to the material contract and the manufacturing consignment contract, but instead, companies B and C, respectively. You may do so.
  • the contract management system 1 can appropriately manage the contract concluded between the company A and the company B, in which the authorized person who is recognized as valid is set. In this way, the contract management system 1 can suppress an increase in power consumption of the computer system that manages the contract while appropriately managing the contract related to the company A, the company B, and the company C.
  • the contract management system of this embodiment manages contracts even more appropriately when an authorized person who recognizes the material contract as valid is specified.
  • the above-mentioned authorized person who recognizes that the material contract is valid is called an owner, but the name is not limited to this.
  • the contract flow in this embodiment is the same as in embodiment 1 (see FIG. 1).
  • the configuration of the ledger server 10A and the like is the same as that of the first embodiment (see FIG. 3).
  • FIG. 10 is an explanatory diagram showing transaction data TA1 which is a first example of transaction data in the present embodiment.
  • the transaction data TA1 corresponds to the first transaction data.
  • the transaction data TA1 is generated by, for example, the ledger server 10A.
  • the transaction data TA1 has a "code of smart contract CA1", an "argument to be passed to the initialization function", a "signature 1", a “signature 2”, and a "transmission date and time”. Including.
  • the "smart contract CA1 code” includes a variable part, an initialization function, a payment function, and a signature setting function.
  • the variable part is a variable used by the smart contract CA1 and indicates a variable stored in the storage unit 14.
  • the variables used by the smart contract CA1 include the amount, material delivery destination, delivery date, material delivery destination signature and owner.
  • the amount, material delivery destination, delivery date, and material delivery destination signature are the same as those in the smart contract CA of the first embodiment (see FIG. 4).
  • the owner indicates the owner of the material contract.
  • the initialization function and the payment function are the same as those in the smart contract CA of the first embodiment (see FIG. 4).
  • the signature setting function accepts a signature as an argument. Further, when the signature setting function is executed, it determines whether or not the person who executed the signature setting function (also referred to as the executor) is the owner, and when it is determined that the executor is the owner, the signature setting function is stored. The signature accepted as an argument is set in the material delivery destination signature stored in the part 14. If it is determined that the executor is not the owner, a predetermined error processing may be performed.
  • the error processing includes, for example, displaying an error message indicating that the executor is not the owner on a display screen of the terminal 20A or the like, or outputting the error message by voice.
  • FIG. 11 is an explanatory diagram showing transaction data TB1 which is a second example of transaction data in the present embodiment.
  • the transaction data TB1 is generated by, for example, the ledger server 10A.
  • the transaction data TB1 has a "code of smart contract CB1", an "argument to be passed to the initialization function", a "signature 1", a “signature 2”, and a "transmission date and time”. Including.
  • Smart contract CB1 code includes a variable part and an initialization function.
  • the variables used by the smart contract CB1 are the same as those in the smart contract CB in the first embodiment.
  • the initialization function accepts the amount, delivery date, product delivery destination, contract address, and material delivery destination as arguments.
  • the variable indicating the amount of money, the variable indicating the delivery date, the variable indicating the product delivery destination, the variable indicating the material delivery destination, and the variable indicating the owner are stored in the storage unit 14. Set the value to. Specifically, when the initialization function is executed, the amount received as an argument is set in the variable indicating the amount, the delivery date accepted as an argument is set in the variable indicating the delivery date, and the variable indicating the product delivery destination is set. Set the amount accepted as an argument.
  • the material delivery destination accepted as an argument is set in the variable indicating the material delivery destination of the smart contract specified from the argument, and the owner of the smart contract specified from the argument. Set the material delivery destination accepted as an argument to the variable indicating.
  • FIG. 12 is a flow chart showing the processing of the ledger server in the present embodiment.
  • the flow chart shown in FIG. 12 shows a process executed as the process of step S125 of FIG. 9 of the first embodiment, that is, shows a modified example of the process of step S125.
  • each processing unit 11 such as the ledger server 10A executes the signature setting function of the smart contract CA1 based on the fact that the transaction data TC is stored in the distributed ledger in step S124. It is realized by doing.
  • each processing unit 11 such as the ledger server 10A determines whether or not the executor of the signature setting function is the owner. Since the executor of the signature setting function is the sender of the instruction for executing the signature setting function, that is, the sender of the transaction data TC (see FIG. 6), the sender of the communication packet including the transaction data TC or the transaction data TC. Can be identified from the signature. If it is determined that the executor is the owner (Yes in step S125A), the process proceeds to step S125B, and if not (No in step S125A), the process proceeds to step S125C.
  • each processing unit 11 such as the ledger server 10A sets the signature passed as the argument of the signature setting function in the transaction data TC to the material delivery destination signature stored in the storage unit 14.
  • step S125C each processing unit 11 such as the ledger server 10A executes error processing. Note that step S125C does not have to be performed.
  • the person who can set the material delivery destination signature by executing the signature setting function can be limited to the owner who is the authorized person who is determined as the person who recognizes the material contract as valid.
  • the signature of the owner who is the authorized person who recognizes the material contract as valid is stored in the transaction data corresponding to the manufacturing consignment contract from the beginning, so that the transaction data is transmitted and received the number of times. Contribute to reducing.
  • the transaction data TA including the smart contract CA corresponding to the material contract is used (see FIG. 4).
  • the signature setting function is not used, it does not have to be included in the smart contract CA.
  • FIG. 13 is an explanatory diagram showing transaction data TB2, which is an example of transaction data in the present embodiment.
  • the transaction data TB2 corresponds to the second transaction data.
  • the transaction data TB2 is generated by, for example, the ledger server 10A.
  • the transaction data TB2 includes "code of smart contract CB2", "argument to be passed to the initialization function", "signature 1", “signature 2”, and "transmission date and time”. Including.
  • Smart contract CB2 code includes a variable part and an initialization function.
  • the variables used by the smart contract CB2 are the same as those in the smart contract CB in the first embodiment.
  • the initialization function accepts the amount, delivery date, product delivery destination, contract address, material delivery destination, and material delivery destination signature as arguments.
  • the variable indicating the amount of money, the variable indicating the delivery date, the variable indicating the product delivery destination, the variable indicating the material delivery destination, and the material delivery destination signature are stored in the storage unit 14.
  • the material delivery destination of the smart contract specified from the argument is set in the variable indicating the material delivery destination of the smart contract, and the material of the smart contract specified from the argument is set.
  • the "argument to be passed to the initialization function" is an argument to be passed to the initialization function of the smart contract CB2, and the delivery date (February 1, 2019), the amount (5 million yen), and the product delivery destination (identification of company A). Information), a contract address (address of smart contract CA), a material delivery destination (identification information of company C), and a material delivery destination signature (signature SC of company C).
  • FIG. 14 is a sequence diagram showing the processing of the contract management system according to the present embodiment.
  • FIG. 14 shows a series of processes related to the conclusion of a material contract, the generation of a signature by an authorized person, and the setting of the conclusion of a manufacturing consignment contract.
  • step S101 to step S107 shown in FIG. 14 is the same as that in FIG.
  • step S107A the processing unit 11 of the ledger server 10C calculates the signature to be attached to the transaction data TA received in step S104, and transmits the calculated signature to the ledger server 10A.
  • step S108A the processing unit 11 of the ledger server 10A acquires the code of the smart contract CB2.
  • the code of the smart contract CB2 may be acquired by the ledger server 10A generating the code, or by receiving the code transmitted from the terminal 20A based on the operation by the person in charge of the company A. May be good.
  • step S109A the processing unit 11 of the ledger server 10A generates transaction data TB2.
  • the generated transaction data TB2 includes the code of the smart contract CB2 acquired in step S108A (see FIG. 13), and the signature to be attached to the transaction data TA received from the ledger server 10C in step S107A. It is set as an argument of the initialization function.
  • step S110 as in the case of the first embodiment, the processing unit 11 of the ledger server 10A generates a signature for the transaction data TB2 generated in step S109A, assigns the signature to the transaction data TB2, and transmits the signature to the ledger server 10C. To do.
  • step S111 as in the case of the first embodiment, the processing unit 11 of the ledger server 10C assigns a signature to the transaction data TB transmitted in step S110 and transmits the signature to the ledger servers 10A and 10B, respectively.
  • the processing unit 11 of the ledger server 10C assigns a signature to the transaction data TB transmitted in step S110 and transmits the signature to the ledger servers 10A and 10B, respectively.
  • all the ledger servers 10A and the like have transaction data TBs signed by the ledger servers 10A and 10C, respectively.
  • each of the ledger servers 10A and the like stores the transaction data TB2 signed or transmitted in step S111 in the distributed ledger.
  • steps S113 and S114A are realized by executing the initialization function of the smart contract CB2 based on the fact that each processing unit 11 such as the ledger server 10A stores the transaction data TB in the distributed ledger in step S112A. ..
  • each processing unit 11 such as the ledger server 10A initializes the variable indicating the amount of money stored in the storage unit 14, the variable indicating the delivery date, and the variable indicating the product delivery destination with the transaction data TB. Set the amount passed as the argument of the function, the delivery date, and the product delivery destination, respectively.
  • each processing unit 11 such as the ledger server 10A sets the signature of company C in the variable indicating the material delivery destination signature of the smart contract CA stored in the storage unit 14.
  • step S114A the same processing as steps S126 to S130 of the first embodiment is executed (not shown).
  • the contract management system 1 puts the signature of the owner who is the authority who recognizes the material contract as valid in the transaction data corresponding to the manufacturing consignment contract from the beginning, so that the transaction data can be obtained. It is possible to suppress an increase in power consumption of a computer system that manages contracts while reducing the number of transmissions and receptions.
  • the authorized person can be set to any person, but for example, when assuming a contract group in the product supply chain, the contractor of the contract downstream from the contract may be set to the authorized person. This is because the content of the upstream contract in the supply chain affects the content of the downstream contract. More specifically, the delivery date in the upstream contract in the supply chain affects the delivery date in the downstream contract, and the amount in the upstream contract in the supply chain affects the amount in the downstream contract. is there.
  • a material contract is made because the manufacturing consignment contract concluded between company A and company C is more downstream than the material contract concluded between company A and company B.
  • the authorized person who recognizes that is valid may be set as company C.
  • FIG. 15 is an explanatory diagram showing a modified example of the supply chain.
  • company A which is the seller of the product, has a material contract with each of company B and company F, which are material manufacturers.
  • the material delivery destination of company B is company D
  • the material delivery destination of company F is company G.
  • Company A has entered into a manufacturing consignment contract with the product manufacturer, Company P.
  • Company P has entered into parts supply contracts with companies D and G, which are contracts related to the supply of parts used in products.
  • Company P manufactures products from the parts delivered by companies D and G, and delivers them to company A.
  • the authority of the material contract concluded between the company A and the company B is the company D, which is the contractor of the parts supply contract or the manufacturing consignment contract, which is a contract downstream from the material contract. It may be set to company P. Similarly, the authority of the parts supply contract concluded between the D company and the P company may be set to the A company which is the contractor of the manufacturing consignment contract which is a contract downstream from the parts supply contract.
  • the authority of the material contract concluded between the company A and the company F is set to the company G or the company P which is the contractor of the parts supply contract or the manufacturing consignment contract which is a contract downstream from the material contract. You can do it.
  • the authority of the parts supply contract concluded between the G company and the P company may be set to the A company which is the contractor of the manufacturing consignment contract which is a contract downstream from the parts supply contract.
  • FIG. 16 is an explanatory diagram showing the data structure of the blockchain.
  • a blockchain is a chain of blocks, which is the recording unit.
  • Each block has a plurality of transaction data and a hash value of the immediately preceding block.
  • the block B2 contains the hash value of the previous block B1.
  • the hash value calculated from the plurality of transaction data included in the block B2 and the hash value of the block B1 is included in the block B3 as the hash value of the block B2.
  • FIG. 17 is an explanatory diagram showing a data structure of transaction data.
  • the transaction data shown in FIG. 17 includes a transaction body P1 and a digital signature P2.
  • the transaction body P1 is a data body included in the transaction data.
  • the electronic signature P2 is generated by signing the hash value of the transaction body P1 with the signature key of the creator of the transaction data, and more specifically, encrypting it with the private key of the creator. is there.
  • each component may be configured by dedicated hardware or may be realized by executing a software program suitable for each component.
  • Each component may be realized by a program execution unit such as a CPU or a processor reading and executing a software program recorded on a recording medium such as a hard disk or a semiconductor memory.
  • the software that realizes the content management system of the above embodiment is the following program.
  • this program is a control method executed by one of the plurality of devices in a contract management system including a plurality of devices having a distributed ledger in the computer, and is a control method executed by the first user and the first user.
  • the first transaction that includes the first variable that indicates the authorized person who has the authority to recognize the first contract with the user as valid and that has a predetermined value that indicates that the authorized person is undecided.
  • the data is acquired, the acquired first transaction data is stored in the distributed ledger, and the predetermined value included as the first variable in the first transaction data stored in the distributed ledger is read out to read the above-mentioned one.
  • the storage process of storing in the rewritable storage unit of the device is executed, the second transaction data including the change instruction for changing the first variable to the identification information of the third user is acquired, and the acquired second transaction data is used.
  • a change process for changing the first variable stored in the storage unit according to the change command is executed, and the first contract
  • the present invention can be used in a contract management system that manages contracts.

Landscapes

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

第一ユーザと第二ユーザとの第一契約を有効と認める権限を有する権限者を示す第一変数であって、権限者が未定であることを示す所定値が設定されている第一変数を含む第一トランザクションデータを分散台帳に格納し、上記所定値を装置の書き換え可能な記憶部に格納する格納処理を実行し、第一変数を第三ユーザの識別情報に変更する変更命令を含む第二トランザクションデータを取得し(S122)、第二トランザクションデータを分散台帳に格納し(S124)、記憶部に格納されている第一変数を変更命令に従って変更する変更処理を実行し(S125)、第一契約を履行する履行処理を実行する履行命令を含む第三トランザクションデータを取得し(S126)、第三トランザクションデータを分散台帳に格納し(S128)、記憶部に格納されている第一変数が所定値以外であると判定した場合に、履行命令に従って履行処理を実行する(S130)。

Description

制御方法、装置、および、プログラム
 本発明は、制御方法、装置、および、プログラムに関する。
 分散台帳を用いて契約に係る情報を管理する技術がある。分散台帳に格納された情報は、書き換えが実質的に不可能であるように管理される。
 分散台帳を用いたシステムにおいて複数の管理者が存在する状況下でも、運用ポリシーまたは運用のタイミングを揃える技術が開示されている。
国際公開第2019/021792号
 本発明は、契約を管理するコンピュータシステムの消費電力の増大を抑制する制御方法などを提供する。
 本発明の一態様に係る制御方法は、分散台帳を保有している複数の装置を備える契約管理システムにおいて、当該複数の装置のうちの一の装置が実行する制御方法であって、第一ユーザと第二ユーザとの第一契約を有効と認める権限を有する権限者を示す第一変数であって、前記権限者が未定であることを示す所定値が設定されている第一変数を含む第一トランザクションデータを取得し、取得した前記第一トランザクションデータを前記分散台帳に格納し、前記分散台帳に格納した前記第一トランザクションデータに前記第一変数として含まれている前記所定値を読み出して前記一の装置の書き換え可能な記憶部に格納する格納処理を実行し、前記第一変数を第三ユーザの識別情報に変更する変更命令を含む第二トランザクションデータを取得し、取得した前記第二トランザクションデータを前記分散台帳に格納し、前記第二トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数を前記変更命令に従って変更する変更処理を実行し、前記第一契約を履行する履行処理を実行する履行命令を含む第三トランザクションデータを取得し、取得した前記第三トランザクションデータを前記分散台帳に格納し、前記第三トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数が前記所定値以外であると判定した場合に、前記履行命令に従って前記履行処理を実行する制御方法である。
 なお、これらの包括的または具体的な態様は、システム、装置、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、装置、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
 本発明の制御方法は、契約を管理するコンピュータシステムの消費電力の増大を抑制することができる。
図1は、実施の形態1における契約の流れの一例を模式的に示す説明図である。 図2は、実施の形態1における契約管理システムの構成を模式的に示すブロック図である。 図3は、実施の形態1における台帳サーバの機能構成を示すブロック図である。 図4は、実施の形態1におけるトランザクションデータの第一例を示す説明図である。 図5は、実施の形態1におけるトランザクションデータの第二例を示す説明図である。 図6は、実施の形態1におけるトランザクションデータの第三例を示す説明図である。 図7は、実施の形態1におけるトランザクションデータの第四例を示す説明図である。 図8は、実施の形態1における契約管理システムの処理を示す第一のシーケンス図である。 図9は、実施の形態1における契約管理システムの処理を示す第二のシーケンス図である。 図10は、実施の形態2におけるトランザクションデータの第一例を示す説明図である。 図11は、実施の形態2におけるトランザクションデータの第二例を示す説明図である。 図12は、実施の形態2における台帳サーバの処理を示すフロー図である。 図13は、実施の形態3におけるトランザクションデータの例を示す説明図である。 図14は、実施の形態3における契約管理システムの処理を示すシーケンス図である。 図15は、サプライチェーンの変形例を示す説明図である。 図16は、ブロックチェーンのデータ構造を示す説明図である。 図17は、トランザクションデータのデータ構造を示す説明図である。
(本発明の基礎となった知見)
 本発明者は、「背景技術」の欄において記載した、契約に関する技術に関し、以下の問題が生じることを見出した。
 分散台帳を用いて契約に係る情報を管理する技術がある。分散台帳に格納された情報は、書き換えが実質的に不可能であるように管理される。また、分散台帳を用いて契約に係る処理を実行し、契約を管理する技術がある。このような技術は、例えばスマートコントラクトによって実現され得る。
 ところで、契約が締結された後に、締結されたその契約が有効と認められた場合に、その契約が履行されるという契約がある。上記契約は、締結された当初の状態のままでは履行されず、言い換えれば、締結された当初は無効の状態であるといえる。
 このような契約を分散台帳を用いて管理する場合、契約の内容が分散台帳に格納され、その後に、有効と認められたか否かを示す情報が分散台帳に格納されることが想定される。しかし、上記の通り分散台帳に格納された情報の書き換えが実質的に不可能であるように管理されているので、契約が有効と認められた時点では、契約に係る内容を変更することができない。
 そこで、締結された契約が有効と認められた場合にその契約が履行されるという契約を管理する場合には、契約が有効と認められた後に、有効と認められた契約であることを示す情報を追加した新たな契約の内容を分散台帳で管理する方法がある。
 仮に、新たな契約の内容を、人手により決定して分散台帳で管理するとすれば、人に情報を提示したり人から情報の入力を受けたりする処理が必要となり、上記処理に用いられるコンピュータの消費電力が増大するという問題がある。また、上記処理に必要なコンピュータリソース、例えば、情報を提示するための出力デバイス(表示装置またはスピーカなど)、または、情報の入力を受けるためのデバイス(タッチパネル、キーボード、マウスなど)を多く必要とするという問題もある。
 さらに、人が介在することになるので、人の手間がかかるという問題がある。また、人が、正しくない契約内容を生成して分散台帳に格納してしまうという問題も発生しうる。
 本発明は、契約を管理するコンピュータシステムの消費電力の増大を抑制する制御方法などを提供する。
 このような問題を解決するために、本発明の一態様に係る制御方法は、分散台帳を保有している複数の装置を備える契約管理システムにおいて、当該複数の装置のうちの一の装置が実行する制御方法であって、第一ユーザと第二ユーザとの第一契約を有効と認める権限を有する権限者を示す第一変数であって、前記権限者が未定であることを示す所定値が設定されている第一変数を含む第一トランザクションデータを取得し、取得した前記第一トランザクションデータを前記分散台帳に格納し、前記分散台帳に格納した前記第一トランザクションデータに前記第一変数として含まれている前記所定値を読み出して前記一の装置の書き換え可能な記憶部に格納する格納処理を実行し、前記第一変数を第三ユーザの識別情報に変更する変更命令を含む第二トランザクションデータを取得し、取得した前記第二トランザクションデータを前記分散台帳に格納し、前記第二トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数を前記変更命令に従って変更する変更処理を実行し、前記第一契約を履行する履行処理を実行する履行命令を含む第三トランザクションデータを取得し、取得した前記第三トランザクションデータを前記分散台帳に格納し、前記第三トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数が前記所定値以外であると判定した場合に、前記履行命令に従って前記履行処理を実行する制御方法である。
 上記態様によれば、第一契約の締結の時点で、権限者として未定である情報が第一契約に含まれる場合でも、第一契約に対応するトランザクションデータが分散台帳を用いて管理され、また、その後に設定される権限者が、情報の変更により適切に管理される。そして、第一契約の権限者が未定でないことを確認したうえで、履行処理が実行されるように管理される。未定である情報の変更の処理は、サーバのコンピュータ処理によってなされ、言い換えれば、人が介在することなく実行される。そのため、コンピュータの消費電力の増大を抑制し、または、コンピュータリソースの必要量を抑制できる。また、人が処理をする手間を低減することができる。このように、上記制御方法は、契約を管理するコンピュータシステムの消費電力の増大を抑制することができる。
 また、前記履行処理を実行する際には、前記第三トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数に前記権限者として前記第三ユーザの識別情報が設定されていると判定した場合に、前記履行命令に従って前記履行処理を実行してもよい。
 上記態様によれば、権限者として第三ユーザの識別情報が設定されていることを確認したうえで、履行処理が実行されるように適切に管理される。このように、上記制御方法は、三者が関係する契約を管理するコンピュータシステムの消費電力の増大を抑制することができる。
 また、前記第一変数は、前記第一トランザクションデータに付与すべき前記権限者の電子署名をさらに含み、前記履行処理を実行する際には、前記第三トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数に含まれる前記電子署名の検証が成功した場合に、前記履行命令に従って前記履行処理を実行してもよい。
 上記態様によれば、権限者の第一トランザクションデータに対する署名が付されていることから、権限者が確かに第一契約を参照して第一契約を有効と認めたことが確認可能となる。よって、上記制御方法は、権限者が契約を有効と認めたことを確認可能としながら、契約を管理するコンピュータシステムの消費電力の増大を抑制することができる。
 また、前記第一トランザクションデータは、前記第一変数と、前記第一変数を前記記憶部に格納する格納命令とを含む第一コントラクトコードを含み、前記格納処理は、前記第一トランザクションデータが前記分散台帳に格納されたことに基づいて、前記一の装置が備えるコントラクト実行部が前記第一コントラクトコードに含まれる前記格納命令を実行したことによって行われてもよい。
 上記態様によれば、第一トランザクションデータを記憶部に格納する処理が、第一トランザクションデータが分散台帳に格納されることに基づいてスマートコントラクトにより自動的に実行され、言い換えれば、人が介在することなく実行される。そのため、コンピュータの消費電力の増大をより一層抑制し、または、コンピュータリソースの必要量をより一層抑制できる。また、人が処理をする手間をより一層低減することができる。このように、上記制御方法は、契約を管理するコンピュータシステムの消費電力の増大をより一層抑制することができる。
 また、前記第一トランザクションデータは、前記第一変数と、前記第一変数を前記記憶部に格納する格納命令とを含む第一コントラクトコードを含み、前記格納処理は、前記第一トランザクションデータが前記分散台帳に格納されたことに基づいて、前記一の装置が備えるコントラクト実行部が前記第一コントラクトコードに含まれる前記格納命令を実行したことによって行われ、前記第一コントラクトコードは、前記記憶部に前記第一変数として格納される前記電子署名を設定する署名設定関数を含み、前記変更処理は、前記署名設定関数を実行させることによって、前記第一変数に前記権限者の電子署名を設定する命令を含む第四トランザクションデータを取得した場合に、取得した前記第四トランザクションデータが前記分散台帳に格納されたことに基づいて、前記コントラクト実行部が前記署名設定関数を実行したことで行われてもよい。
 上記態様によれば、第一コントラクトコードに含めて予め用意された署名設定関数を利用して権限者の署名を記憶部に格納する。第一コントラクトコードに含めて予め用意された署名設定関数を用いるので、人が処理をする手間をより一層低減し、コンピュータの消費電力の増大をより一層抑制し、または、コンピュータリソースの必要量をより一層抑制できる。
 また、前記第二トランザクションデータは、前記変更命令を含む第二コントラクトコードを含み、前記変更処理は、前記第二トランザクションデータが前記分散台帳に格納されたことに基づいて、前記一の装置が備えるコントラクト実行部により前記変更命令が実行されたことによって行われてもよい。
 上記態様によれば、第二情報を変更する処理が、第二トランザクションデータが分散台帳に格納されることに基づいてスマートコントラクトにより自動的に実行され、言い換えれば、人が介在することなく実行される。そのため、コンピュータの消費電力の増大をより一層抑制し、または、コンピュータリソースの必要量をより一層抑制できる。また、人が処理をする手間をより一層低減することができる。このように、上記制御方法は、契約を管理するコンピュータシステムの消費電力の増大をより一層抑制することができる。
 また、前記第一トランザクションデータは、前記第一ユーザの電子署名と、前記第二ユーザの電子署名とを含んでいて、前記第一トランザクションデータを前記分散台帳に格納する際には、前記第一トランザクションデータに含まれている前記第一ユーザの電子署名と、前記第二ユーザの電子署名との両方の検証が成功した場合に、前記第一トランザクションデータを前記分散台帳に格納してもよい。
 上記態様によれば、第一契約に相当する第一トランザクションデータに、第一契約を締結した第一ユーザおよび第二ユーザそれぞれの電子署名が含まれる。そのため、各電子署名を検証することで、第一ユーザおよび第二ユーザが第一契約を確かに締結したことを証明することができる。よって、上記制御方法は、契約をより一層適切に管理することができる。
 また、前記制御方法は、さらに、前記第一ユーザと前記第三ユーザとの第二契約に関する第二変数を含む第五トランザクションデータを取得し、取得した前記第五トランザクションデータを前記分散台帳に格納し、前記第二トランザクションデータは、前記第五トランザクションデータが前記分散台帳に格納されたことに基づいて提供された前記第二トランザクションデータであってもよい。
 上記態様によれば、第一契約の締結の時点より後に、第二契約の締結によって第三ユーザが決まった場合に、第五トランザクションデータが分散台帳に格納されたことに基づいて自動的に、権限者の変更のための第二トランザクションデータが分散台帳に格納され、権限者が変更される。よって、人が処理をする手間をより一層低減し、コンピュータの消費電力の増大をより一層抑制し、または、コンピュータリソースの必要量をより一層抑制できる。
 また、前記第一契約は、前記第一ユーザが前記第二ユーザから材料を購入し、購入した前記材料を、所定の期限までに、所定の納品先に配送する契約を含み、前記第二契約は、前記第三ユーザが、前記第二ユーザから納入された前記材料から製品を製造して前記第一ユーザに納品する契約を含み、前記第二変数は、前記製品の購入金額を示す変数と、前記製品を納品する期限を示す変数と、前記製品の納品先を示す変数とを含んでもよい。
 上記態様によれば、材料契約を有効と認める権限者が材料契約の締結の時点で未定である場合でも、その後に締結される製造委託契約によって特定された製造者を権限者とするように変更することにより、材料契約が適切に管理される。このように、上記制御方法は、第一ユーザと第二ユーザとの材料契約、および、材料契約の権限者を適切に管理することができる。
 また、本発明の一態様に係る装置は、分散台帳を保有している複数の装置を備える契約管理システムにおける、当該複数の装置のうちの一の装置であって、処理部と、前記分散台帳を記憶している台帳記憶部と、実行部と、書き換え可能な記憶部とを備え、前記処理部は、第一ユーザと第二ユーザとの第一契約を有効と認める権限を有する権限者を示す第一変数であって、前記権限者が未定であることを示す所定値が設定されている第一変数とを含む第一トランザクションデータを取得し、取得した前記第一トランザクションデータを前記分散台帳に格納し、前記実行部は、前記分散台帳に格納した前記第一トランザクションデータに前記第一変数として含まれている前記所定値を読み出して前記一の装置の書き換え可能な記憶部に格納する格納処理を実行し、前記処理部は、さらに、前記第一変数を第三ユーザの識別情報に変更する変更命令を含む第二トランザクションデータを取得し、取得した前記第二トランザクションデータを前記分散台帳に格納し、前記実行部は、さらに、前記第二トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数を前記変更命令に従って変更する変更処理を実行し、前記処理部は、さらに、前記第一契約を履行する履行処理を実行する履行命令を含む第三トランザクションデータを取得し、取得した前記第三トランザクションデータを前記分散台帳に格納し、前記実行部は、さらに、前記第三トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数が前記所定値以外であると判定した場合に、前記履行命令に従って前記履行処理を実行する装置である。
 上記態様により、上記制御方法と同様の効果を奏する。
 また、本発明の一態様に係るプログラムは、上記の制御方法をコンピュータに実行させるためのプログラムである。
 上記態様により、上記制御方法と同様の効果を奏する。
 なお、これらの包括的または具体的な態様は、システム、装置、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、装置、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。
 以下、実施の形態について、図面を参照しながら具体的に説明する。
 なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
 (実施の形態1)
 本実施の形態において、契約を管理するコンピュータシステムの消費電力の増大を抑制する契約管理システムおよびその制御方法などについて説明する。
 図1は、本実施の形態における契約の流れの一例を模式的に示す説明図である。
 具体的には、図1は、サプライチェーンを構成するA社、B社およびC社の三者が関係する契約と、その契約によってなされる物の納品とを模式的に示している。A社を第一ユーザともいい、B社を第二ユーザともいい、C社を第三ユーザともいう。
 まず、図1の(1)に示されるように、A社とB社との間で材料契約(第一契約に相当)が締結される。材料契約は、A社がB社から材料を購入し、B社がその材料を納品先(材料納品先ともいう)に納品することを定めた契約である。材料契約には、材料の納期、材料の購入の金額、および、材料納品先が含まれる。
 ここで、A社とB社との契約の締結の時点では、材料の購入の金額と、材料の納期とが決定しているが、材料納品先が未定である場合を想定する。また、将来に決定される材料納品先がA社とB社との契約を有効と認めた場合に、その契約が履行される場合を想定する。上記契約は、締結された当初の状態のままでは履行されず、言い換えれば、締結された当初は無効の状態であるといえる。なお、A社とB社との契約の締結の時点では、材料納品先と、上記契約を有効と認める権限を有する者(権限者ともいう)とが未定であるので、材料契約における材料納品先および権限者は、未定を示す情報が設定されている。
 材料契約の締結後に、図1の(2)に示されるように、A社とC社との間で製造委託契約(第二契約に相当)が締結される。製造委託契約は、C社が材料から製品を製造して、製造された製品をA社に納品することを定めた契約である。材料はB社から納品される。製造委託契約には、製品の納期、製品の購入の金額、および、製品の納品先(製品納品先ともいう)が含まれる。
 また、図1の(2)で製品を製造するのがC社に特定されたことに応じて、先に締結された材料契約における材料納品先および権限者がC社に設定される(図1の(3))。
 その後、権限者であるC社が、材料契約の内容を参照して問題ないことを確認し、材料契約を有効と認める(図1の(4))。
 材料契約が有効と認められたことに基づいて、A社が材料契約に係る材料の購入金額をB社に支払うとともに(図1の(5a))、B社が材料をC社に納品する(図1の(5b))ことで、材料契約が履行される。
 また、A社が製造委託契約に係る金額をC社に支払うとともに(図1の(6a))、C社が製品をA社に納品する(図1の(6b))ことで、製造委託契約が履行される。
 このような、契約と契約の履行とに係る処理を、分散台帳を用いて実行するには、材料契約の内容を定めた1つのスマートコントラクトCAと、製造委託契約の内容を定めた1つのスマートコントラクトCBとが用いられることが想定される。
 この場合、スマートコントラクトCAにおける材料納品先および権限者は、A社とB社との材料契約の締結時には未定と設定され、その後、A社とC社との製造委託契約の締結時にスマートコントラクトCBが実行する処理によって変更または設定されることが想定される。材料納品先および権限者の変更または設定を可能とするため、材料納品先および権限者は書き換え可能な記憶領域に保存される。
 このようにすることで、上記のコンピュータの消費電力の増大、または、デバイスを多く必要とするという問題を回避でき、また人が介在することに起因する問題を回避することができる。
 このような契約の形態を適切に管理する技術について以下で詳細に説明する。
 図2は、本実施の形態における契約管理システム1の構成を模式的に示すブロック図である。
 図2に示されるように、契約管理システム1は、台帳サーバ10A、10Bおよび10Cと、端末20A、20Bおよび20Cとを備える。
 台帳サーバ10A、10Bおよび10Cを「台帳サーバ10A等」ともいい、端末20A、20Bおよび20Cを「端末20A等」ともいう。
 台帳サーバ10Aと端末20AとはA社に属していて、台帳サーバ10Bと端末20BとはB社に属していて、台帳サーバ10Cと端末20CとはC社に属している。ここでは、契約管理システム1は、三者が関係する契約を管理する例を示すが、契約に関係する者の数は4以上であってもよい。
 契約管理システム1が備える各装置は、ネットワークNに直接的に又は間接的に接続されていて、ネットワークNを介して互いに通信可能である。
 ネットワークNは、どのような通信回線またはネットワークから構成されてもよく、例えば、インターネット、携帯電話のキャリアネットワーク、インターネットプロバイダのアクセスネットワーク、または公衆アクセスネットワークなどを含み得る。
 台帳サーバ10Aは、契約管理システム1において分散台帳を用いて契約を管理する複数の台帳サーバ10A等のうちの1つである。台帳サーバ10Aを装置ともいう。
 台帳サーバ10Aは、分散台帳を保有している。台帳サーバ10Aが保有している分散台帳には、トランザクションデータが格納される。分散台帳に格納されるトランザクションデータには、契約に関するスマートコントラクトに係るコントラクトコード(単にコードともいう)を含むトランザクションデータが含まれる。また、台帳サーバ10Aは、分散台帳が格納されている記憶領域とは別に、書き換え可能な記憶領域を有し、契約に関する変数を書き換え可能な記憶領域に格納している。
 台帳サーバ10Bおよび10Cは、それぞれ、台帳サーバ10Aと同じ機能を有する装置であり、台帳サーバ10Aとは独立に動作する。
 端末20Aは、A社に所属するユーザが使用する情報端末である。端末20Aは、ユーザによって操作され、例えば、スマートコントラクトのコードを生成したり、スマートコントラクトのコードを台帳サーバ10A等に配置したりするために用いられる。端末20Aは、例えばパーソナルコンピュータ、スマートフォンまたはタブレットなどである。
 端末20Bおよび20Cは、それぞれ、端末20Aと同じ機能を有し、B社およびC社に所属するユーザが使用する情報端末であり、端末20Aとは独立に動作する。
 なお、A社、B社およびC社には、それぞれ、1以上の端末が属していてもよい。
 なお、端末20Aが、台帳サーバ10Aの機能をさらに備えてもよい。その場合、端末20Aは、分散台帳を用いて契約を管理する装置に相当する。同様に、端末20Bが、台帳サーバ10Bの機能をさらに備えてもよい。その場合、端末20Bは、分散台帳を用いて契約を管理する装置に相当する。さらに、端末20Cが、台帳サーバ10Cの機能をさらに備えてもよい。その場合、端末20Cは、分散台帳を用いて契約を管理する装置に相当する。
 図3は、本実施の形態における台帳サーバ10Aの機能構成を示すブロック図である。
 図3に示されるように、台帳サーバ10Aは、処理部11と、台帳記憶部12と、実行部13と、記憶部14とを備える。
 処理部11は、トランザクションデータに関する処理を実行する機能部である。処理部11は、台帳サーバ10Aが備えるプロセッサ(例えばCPU(Central Processing Unit))がメモリを用いてプログラムを実行することで実現され得る。
 処理部11は、トランザクションデータを取得し、取得したトランザクションデータを分散台帳に格納する処理を実行する。また、処理部11は、トランザクションデータを生成し、生成したトランザクションデータについての電子署名(単に署名ともいう)を生成し、生成した署名を上記トランザクションデータに付与する処理を実行する。
 処理部11は、新しいトランザクションデータを分散台帳に格納するときには、分散台帳の種別に応じた方式で新しいトランザクションデータを台帳記憶部12に格納する。また、処理部11は、台帳サーバ10A等のうちの他の台帳サーバが備える台帳記憶部12と通信データを送受信し、他の台帳サーバが備える台帳記憶部12にも上記トランザクションデータを格納させる。例えば、処理部11は、分散台帳がブロックチェーンである場合には、新しいトランザクションデータを含むブロックを生成し、生成したブロックについて台帳サーバ10A等の間でコンセンサスアルゴリズムにより合意形成をしたうえで、上記ブロックを台帳記憶部12に格納する。
 具体的には、処理部11は、第一トランザクションデータを取得し、取得した第一トランザクションデータを分散台帳に格納する。第一トランザクションデータは、A社とB社との材料契約(第一契約)を有効と認める権限を有する権限者を示す変数(第一変数ともいう)であって、権限者が未定であることを示す所定値が設定されている変数を含んでいる。所定値は、第二変数に設定可能な数値の範囲内において、材料納品先を示すためには実際には使われない数値(例えばゼロ)または所定の予約値が用いられ得る。
 また、処理部11は、第二トランザクションデータを取得し、取得した第二トランザクションデータを分散台帳に格納する。第二トランザクションデータは、第一変数をC社の識別情報に変更する変更命令を含んでいる。なお、第二トランザクションデータは、A社とC社との第二契約に関する変数(第二変数ともいう)を含む第五トランザクションデータが分散台帳に格納されたことに基づいて提供された第二トランザクションデータであってもよい。
 また、処理部11は、第三トランザクションデータを取得し、取得した第三トランザクションデータを分散台帳に格納する。第三トランザクションデータは、材料契約を履行する履行処理を実行する履行命令を含んでいる。
 台帳記憶部12は、分散台帳を記憶している記憶部である。台帳記憶部12に格納されている分散台帳は、1以上のトランザクションデータを記憶しており、ハッシュ値などの特性を用いて改ざんが困難であるように管理されている(後述)。台帳記憶部12は、処理部11から提供されたトランザクションデータを分散台帳に格納する。分散台帳には、過去から現在までのトランザクションデータが格納されている。分散台帳に記録された情報の改ざんが困難であるという特性に基づいて、上記トランザクションデータが改ざんされないように管理されている。
 なお、分散台帳は、例えばブロックチェーンであり、この場合を例として説明するが、他の方式の分散台帳(例えば、IOTAまたはハッシュグラフ等)を採用することも可能である。なお、分散台帳は、新しいデータの格納の際にコンセンサスアルゴリズム(例えば、PBFT(Practical Byzantine Fault Tolerance)、PoW(Proof of Work)またはPoS(Proof of Stake))を実行するものであってもよいし、実行しないものであってもよい。コンセンサスアルゴリズムを実行しない分散台帳技術の一例としてHyperledger fabricがある。
 実行部13は、台帳記憶部12が記憶している分散台帳に格納されているトランザクションデータを参照して、処理を実行する機能部である。実行部13は、台帳サーバ10Aが備えるプロセッサ(例えばCPU)がメモリを用いてプログラムを実行することで実現され得る。ここでは、実行部13は、分散台帳に格納されているトランザクションデータに含まれているスマートコントラクトのコードに従って処理を実行するコントラクト実行部である場合を例として説明する。
 具体的には、実行部13は、第一トランザクションデータが分散台帳に格納された後に、分散台帳に格納した第一トランザクションデータに第一変数として含まれている所定値を読み出して記憶部14に格納する格納処理を実行する。
 格納処理は、例えば、第一トランザクションデータが分散台帳に格納されたことに基づいて、実行部13が第一コントラクトコードを実行したことによって行われる。なお、変更処理は、署名設定関数を実行させる命令を含む第四トランザクションデータを取得した場合に、取得した第四トランザクションデータが分散台帳に格納されたことに基づいて、実行部13が署名設定関数を実行したことで行われてもよい。この場合、第一コントラクトコードは、記憶部14に第一変数として格納される電子署名を設定する署名設定関数を含んでいる。
 また、実行部13は、第二トランザクションデータが分散台帳に格納された後に、記憶部14に格納されている第一変数を変更命令に従って変更する変更処理を実行する。
 変更処理は、例えば、第二トランザクションデータが分散台帳に格納されたことに基づいて、実行部13により変更命令が実行されたことによって行われるここで、第二トランザクションデータは、変更命令を含む第二コントラクトコードを含んでいる。
 また、実行部13は、第三トランザクションデータが分散台帳に格納された後に、記憶部14に格納されている第一変数が所定値以外であると判定した場合に、履行命令に従って履行処理を実行する。
 履行処理を実行する際には、第三トランザクションデータを分散台帳に格納した後に、記憶部14に格納されている第一変数の権限者として、第三ユーザの識別情報が設定されていると判定した場合に、履行命令に従って履行処理を実行するようにしてもよい。
 このとき、第三トランザクションデータを分散台帳に格納した後に、記憶部14に格納されている第一変数に含まれる電子署名の検証が成功した場合に、履行命令に従って履行処理を実行するようにしてもよい。ここで、第一変数は、第一トランザクションデータに付与すべき権限者の電子署名をさらに含んでいるとする。
 記憶部14は、変数を格納している記憶領域を有する記憶装置である。変数は、契約に関する情報を示す変数であり、具体的には、第一変数および第二変数を含む。記憶部14に格納されている変数は、実行部13により設定され、また、読み出される。記憶部14は、書き換え可能な記憶装置、例えば、RAM(Random Access Memory)などのメモリ、または、HDD(Hard Disk Drive)もしくはSSD(Solid State Drive)などのストレージにより実現される。
 なお、第一トランザクションデータには、複数の署名が付与されるマルチシグ技術が適用されてもよく、この場合を例として説明するが、第一トランザクションデータに単一の電子署名が付与されるだけでもよい。
 具体的には、第一トランザクションデータは、材料契約の締結者であるA社およびB社それぞれの電子署名を含んでいてもよい。その場合、処理部11が第一トランザクションデータを分散台帳に格納する際には、第一トランザクションデータに含まれているA社およびB社それぞれの電子署名の検証が成功した場合に、第一トランザクションデータを分散台帳に格納する。
 なお、第一契約および第二契約は、以下のようにも表現され得る。すなわち、第一契約は、第一ユーザが第二ユーザから材料を購入し、購入した材料を、所定の期限までに、所定の納品先に配送する契約を含む。また、第二契約は、第三ユーザが、第二ユーザから納入された材料から製品を製造して第一ユーザに納品する契約を含む。この場合、第二変数は、製品の購入金額を示す変数と、製品を納品する期限を示す変数と、製品の納品先を示す変数とを含む。
 以降において、トランザクションデータ、および、スマートコントラクトのコードについて説明する。
 図4は、本実施の形態におけるトランザクションデータの第一例であるトランザクションデータTAを示す説明図である。トランザクションデータTAは、第一トランザクションデータに相当する。トランザクションデータTAは、例えば、台帳サーバ10Aにより生成される。
 図4に示されるように、トランザクションデータTAは、「スマートコントラクトCAのコード」と、「初期化関数に渡す引数」と、「署名1」と、「署名2」と、「送信日時」とを含む。
 「スマートコントラクトCAのコード」は、スマートコントラクトCAが用いる変数であって、記憶部14に格納されている変数を示す変数部を含む。変数部は、図4において破線枠で示されている。以降でも同様の表現を用いる。スマートコントラクトCAが用いる変数は、金額、材料納品先、納期および材料納品先署名を含む。金額は、材料契約においてA社が支払う金額を示す。材料納品先は、材料契約によりB社が製造した材料の納品先を示す。納期は、B社が材料を材料納品先に納品する期日を示す。材料納品先署名は、材料納品先が当該トランザクションデータTAに対して付すべき署名を示す。
 また、「スマートコントラクトCAのコード」は、初期化関数と、支払関数と、署名設定関数とを含む。初期化関数は、当該トランザクションデータが分散台帳に格納されたときに実行部13によって実行される特別な関数である。初期化関数は、当該トランザクションデータが分散台帳に格納されたときに実行部13によって実行される特別な関数である。以降でも同様である。
 初期化関数は、引数として金額と納期とを受け付ける。また、初期化関数は、実行されると、記憶部14に格納されている、材料納品先を示す変数、金額を示す変数、および納期を示す変数に値を設定する。具体的には、初期化関数は、実行されると、材料納品先および材料納品先署名を示す変数にそれぞれ所定値を設定し、金額を示す変数に引数として受け付けた金額を設定し、納期を示す変数に引数として受け付けた納期を設定する。
 なお、図4に初期化関数として示した関数を、一般の関数(つまり、初期化関数でない関数)とし、当該トランザクションデータによってその関数を実行させるようにしても同様の効果を奏する。他のスマートコントラクトのコードに含まれる初期化関数についても同様である。
 支払関数は、材料契約を履行すべく、A社から、材料契約の締結者であるB社に、材料契約に係る金額を支払う処理を実行する関数である。支払関数は、実行されると、材料納品先署名の検証処理を実行し、その検証が成功した場合に支払処理を実行する。その検証が失敗した場合には、エラー処理を実行してもよい。
 署名設定関数は、実行されると、記憶部14に格納されている材料納品先署名を設定する。
 署名設定関数は、引数として署名を受け付ける。また、署名設定関数は、実行されると、記憶部14に格納されている、材料納品先署名を示す変数に値を設定する。具体的には、初期化関数は、実行されると、材料納品先署名を示す変数に、引数として受け付けた署名を設定する。
 「初期化関数に渡す引数」は、スマートコントラクトCAの初期化関数に渡す引数であり、納期(2019年1月1日)と金額(500万円)とを含む。この引数として示されている情報が、初期化関数に渡される。
 「署名1」は、トランザクションデータTAに付与されている2つの電子署名のうちの1つ目である。署名1には、A社の署名SAが含まれている。
 「署名2」は、トランザクションデータTAに付与されている2つの電子署名のうちの2つ目である。署名2には、B社の署名SBが含まれている。
 「送信日時」は、トランザクションデータTAが送信された日時を示す。送信日時には、「2018年10月01日 12時00分00秒」が格納されている。
 図4に示されるトランザクションデータTAが分散台帳に格納されると、初期化関数が実行されることで、引数として初期化関数に渡された金額および納期が、それぞれ、記憶部14の金額および納期を示す変数に設定される。
 図5は、本実施の形態におけるトランザクションデータの第二例であるトランザクションデータTBを示す説明図である。トランザクションデータTBは、例えば、台帳サーバ10Aにより生成される。
 図5に示されるように、トランザクションデータTBは、「スマートコントラクトCBのコード」と、「初期化関数に渡す引数」と、「署名1」と、「署名2」と、「送信日時」とを含む。
 「スマートコントラクトCBのコード」は、変数部と初期化関数とを含む。スマートコントラクトCBが用いる変数は、金額、製品納品先および納期を含む。金額は、製造委託契約においてA社が支払う金額を示す。製品納品先は、製造委託契約によりC社が製造した製品の納品先を示す。納期は、C社が製品を製品納品先に納品する期日を示す。
 初期化関数は、引数として、金額と、納期と、製品納品先と、コントラクトアドレスと、材料納品先とを受け付ける。また、初期化関数は、実行されると、記憶部14に格納されている、金額を示す変数、納期を示す変数、製品納品先を示す変数、および材料納品先を示す変数に値を設定する。具体的には、初期化関数は、実行されると、金額を示す変数に引数として受け付けた金額を設定し、納期を示す変数に引数として受け付けた納期を設定し、製品納品先を示す変数に引数として受け付けた製品納品先を設定する。また、初期化関数は、実行されると、引数から特定されるスマートコントラクトの材料納品先を示す変数に、引数として受け付けた材料納品先を設定する。
 「初期化関数に渡す引数」は、スマートコントラクトCBの初期化関数に渡す引数であり、納期(2019年2月1日)と、金額(500万円)と、製品納品先(A社の識別情報)と、コントラクトアドレス(スマートコントラクトCAのアドレス)と、材料納品先(C社の識別情報)とを含む。この引数として示されている情報が、初期化関数に渡される。なお、変数である製品納品先に設定されるA社の識別情報を、単にA社と記載することもある。B社およびC社についても同様である。以降でも同様である。
 「署名1」は、トランザクションデータTBに付与されている2つの電子署名のうちの1つ目である。署名1には、A社の署名SAが含まれている。
 「署名2」は、トランザクションデータTBに付与されている2つの電子署名のうちの2つ目である。署名2には、C社の署名SCが含まれている。
 「送信日時」は、トランザクションデータTBが送信された日時を示す。送信日時には、「2018年11月01日 12時00分00秒」が格納されている。
 図5に示されるトランザクションデータTBが分散台帳に格納されると、初期化関数が実行されることで、引数として初期化関数に渡された納期、金額、および製品納品先が、それぞれ、記憶部14の納期、金額、および製品納品先を示す変数に設定される。また、引数として初期化関数に渡されたコントラクトアドレスと材料納品先とに基づいて、スマートコントラクトCAの材料納品先がC社に変更される。
 図6は、本実施の形態におけるトランザクションデータの第三例であるトランザクションデータTCを示す説明図である。トランザクションデータTCは、スマートコントラクトCAの署名設定関数を実行させるためのトランザクションデータである。トランザクションデータTCを分散台帳に格納することは、スマートコントラクトCAの署名設定関数を実行させる命令を送信することに相当する。トランザクションデータTCは、第二トランザクションデータに相当する。
 図6に示されるように、トランザクションデータTCは、「実行される関数」と、「署名設定関数に渡す引数」と、「署名」と、「送信日時」とを含む。
 「実行される関数」は、当該スマートコントラクトが分散台帳に格納されることによって実行される関数を示す。図6では、実行される関数として、スマートコントラクトCAの署名設定関数が設定されている。
 「署名設定関数に渡す引数」は、当該スマートコントラクトCAによって実行される関数である署名設定関数に渡す引数を示す。署名設定関数に渡す引数には、材料納品先の署名(つまり、C社の署名)が設定されている。
 「署名」は、トランザクションデータTCに付与されている電子署名である。署名には、A社の署名SAが含まれている。
 「送信日時」は、トランザクションデータTCが送信された日時を示す。送信日時には、「2018年11月02日 12時00分00秒」が格納されている。
 図6に示されるトランザクションデータTCが分散台帳に格納されることで、引数である署名にC社の署名が設定されてスマートコントラクトCAの署名設定関数が実行され、その結果、スマートコントラクトCAの材料納品先署名がC社の署名に変更される。
 図7は、本実施の形態におけるトランザクションデータの第四例であるトランザクションデータTDを示す説明図である。トランザクションデータTDは、スマートコントラクトCAの支払関数を実行させるための関数である。トランザクションデータTDを分散台帳に格納することは、スマートコントラクトCAの支払関数を実行させる命令を送信することに相当する。トランザクションデータTDは、第三トランザクションデータに相当する。
 図7に示されるように、トランザクションデータTDは、「実行される関数」と、「署名」と、「送信日時」とを含む。
 「実行される関数」は、当該スマートコントラクトが分散台帳に格納されることによって実行される関数を示す。実行される関数には、スマートコントラクトCAの支払関数が設定されている。
 「署名」は、トランザクションデータTDに付与されている電子署名である。署名には、A社の署名SAが含まれている。
 「送信日時」は、トランザクションデータTCが送信された日時を示す。送信日時には、「2018年11月03日 12時00分00秒」が格納されている。
 図7に示されるトランザクションデータTDが分散台帳に格納されることで、スマートコントラクトCAの支払関数が実行され、その結果、材料契約に係る金額をA社からC社に支払う支払処理が実行される。
 図8および図9は、本実施の形態における契約管理システム1の処理を示すシーケンス図である。図8および図9には、材料契約の締結、製造委託契約の締結、および、権限者の設定に係る一連の処理が示されている。
 図8のステップS101において、台帳サーバ10Aの処理部11は、スマートコントラクトCAのコードを取得する。スマートコントラクトCAのコードの取得は、台帳サーバ10Aが当該コードを生成することによってなされてもよいし、A社の担当者による操作に基づいて端末20Aから送信されたコードを受信することによってなされてもよい。
 ステップS102において、台帳サーバ10Aの処理部11は、トランザクションデータTAを生成する。生成されるトランザクションデータTAには、ステップS101で取得したスマートコントラクトCAのコードが含まれている(図4参照)。
 ステップS103において、台帳サーバ10Aの処理部11は、ステップS102で生成したトランザクションデータTAについての署名を生成してトランザクションデータTAに付与し、署名を付与したトランザクションデータTAを台帳サーバ10Bに送信する。
 ステップS104において、台帳サーバ10Bの処理部11は、ステップS103で送信されたトランザクションデータTAを受信し、受信したトランザクションデータTAについての署名を生成してトランザクションデータTAに付与し、署名を付与したトランザクションデータTAを台帳サーバ10Aおよび10Cそれぞれに送信する。これにより、すべての台帳サーバ10A等が、台帳サーバ10Aおよび10Bそれぞれの署名を付与されたトランザクションデータTAを有する状態になる。
 ステップS105において、台帳サーバ10A等のそれぞれは、ステップS104で署名が付与され、または、送信されたトランザクションデータTAを分散台帳に格納する。トランザクションデータTAを分散台帳へ格納する際には、コンセンサスアルゴリズムに基づいて合意形成がなされたことを条件として、トランザクションデータTAを分散台帳へ格納するようにしてもよい。
 台帳サーバ10A等それぞれの処理部11が、ステップS105でトランザクションデータTAを分散台帳に格納したことに基づいてスマートコントラクトCAの初期化関数を実行することで、下記ステップS106およびステップS107が実現される。
 ステップS106において、台帳サーバ10A等それぞれの処理部11は、記憶部14に格納される金額を示す変数と、納期を示す変数とに、トランザクションデータTAで初期化関数の引数として渡された金額と納期とをそれぞれ設定する。
 ステップS107において、台帳サーバ10A等それぞれの処理部11は、記憶部14に格納される材料納品先および材料納品先署名を示す変数に、それぞれ所定値を設定する。所定値は、材料納品先および材料納品先署名それぞれが未定であることを示す値である。
 ステップS108において、台帳サーバ10Aの処理部11は、スマートコントラクトCBのコードを取得する。スマートコントラクトCBのコードの取得は、台帳サーバ10Aが当該コードを生成することによってなされてもよいし、A社の担当者による操作に基づいて端末20Aから送信されたコードを受信することによってなされてもよい。
 ステップS109において、台帳サーバ10Aの処理部11は、トランザクションデータTBを生成する。生成されるトランザクションデータTBには、ステップS108で取得したスマートコントラクトCBのコードが含まれている(図5参照)。
 ステップS110において、台帳サーバ10Aの処理部11は、ステップS109で生成したトランザクションデータTBについての署名を生成してトランザクションデータTBに付与し、署名を付与したトランザクションデータTBを台帳サーバ10Cに送信する。
 ステップS111において、台帳サーバ10Cの処理部11は、ステップS110で送信されたトランザクションデータTBを受信し、受信したトランザクションデータTBについての署名を生成してトランザクションデータTBに付与し、署名を付与したトランザクションデータTBを台帳サーバ10Aおよび10Bそれぞれに送信する。これにより、すべての台帳サーバ10A等が、台帳サーバ10Aおよび10Cそれぞれの署名を付与されたトランザクションデータTBを有する状態になる。
 ステップS112において、台帳サーバ10A等のそれぞれは、ステップS111で署名が付与され、または、送信されたトランザクションデータTBを分散台帳に格納する。トランザクションデータTBを分散台帳へ格納する際には、コンセンサスアルゴリズムに基づいて合意形成がなされたことを条件として、トランザクションデータTBを分散台帳へ格納するようにしてもよい。
 台帳サーバ10A等それぞれの処理部11が、ステップS112でトランザクションデータTBを分散台帳に格納したことに基づいてスマートコントラクトCBの初期化関数を実行することで、下記ステップS113およびステップS114が実現される。
 ステップS113において、台帳サーバ10A等それぞれの処理部11は、記憶部14に格納される金額を示す変数と、納期を示す変数と、製品納品先とを示す変数に、トランザクションデータTBで初期化関数の引数として渡された金額と納期と製品納品先とをそれぞれ設定する。
 ステップS114において、台帳サーバ10A等それぞれの処理部11は、記憶部14に格納される、スマートコントラクトCAの材料納品先を示す変数にC社の識別情報を設定する。
 図9に移り、ステップS121において、台帳サーバ10Cの処理部11は、トランザクションデータTAに付すべき署名を算出する。
 ステップS122において、台帳サーバ10Cの処理部11は、トランザクションデータTCを生成する。生成されるトランザクションデータTCには、ステップS121で算出された署名が含まれている。
 ステップS123において、台帳サーバ10Cの処理部11は、ステップS122で生成したトランザクションデータTCについての署名を生成してトランザクションデータTCに付与し、署名を付与したトランザクションデータTCを台帳サーバ10Aおよび10Bに送信する。
 ステップS124において、台帳サーバ10A等のそれぞれは、ステップS123で署名が付与され、または、送信されたトランザクションデータTCを分散台帳に格納する。
 台帳サーバ10A等それぞれの処理部11が、ステップS124でトランザクションデータTCを分散台帳に格納したことに基づいてスマートコントラクトCAの署名設定関数を実行することで、下記ステップS125が実現される。
 ステップS125において、台帳サーバ10A等それぞれの処理部11は、トランザクションデータTCで署名設定関数の引数として渡された署名を、記憶部14に格納される材料納品先署名に設定する。
 ステップS126において、台帳サーバ10Aの処理部11は、トランザクションデータTDを生成する。
 ステップS127において、台帳サーバ10Aの処理部11は、ステップS126で生成したトランザクションデータTDについての署名を生成してトランザクションデータTDに付与し、署名を付与したトランザクションデータTDを台帳サーバ10Bおよび10Cに送信する。
 ステップS128において、台帳サーバ10A等のそれぞれは、ステップS127で署名が付与され、または、送信されたトランザクションデータTDを分散台帳に格納する。
 台帳サーバ10A等それぞれの処理部11が、ステップS128でトランザクションデータTDを分散台帳に格納したことに基づいてスマートコントラクトCAの支払関数を実行することで、下記ステップS129およびS130が実現される。
 ステップS129において、台帳サーバ10A等それぞれの処理部11は、記憶部14に格納されている材料納品先署名の検証処理を実行する。
 ステップS130において、台帳サーバ10A等それぞれの処理部11は、ステップS129の材料納品先署名の検証処理が成功したと判定した場合に、支払処理を実行する。
 なお、ここでは、材料契約および製造委託契約に係るスマートコントラクトのコードおよびトランザクションデータの生成を台帳サーバ10A(つまりA社)が行うこととして説明したが、その代わりに、それぞれB社およびC社が行うようにしてもよい。
 以上の一連の処理により、契約管理システム1は、A社とB社とで締結される、有効と認める権限者が設定される契約を適切に管理することができる。このように、契約管理システム1は、A社、B社およびC社が関係する契約を適切に管理しながら、契約を管理するコンピュータシステムの消費電力の増大を抑制することができる。
 (実施の形態2)
 本実施の形態において、契約を管理するコンピュータシステムの消費電力の増大を抑制する契約管理システムおよびその制御方法などについて、実施の形態1とは異なる形態を説明する。
 本実施の形態の契約管理システムは、材料契約を有効と認める権限者が定められている場合に、契約をより一層適切に管理する。ここでは、材料契約を有効と認める上記権限者をオーナーと呼ぶことにするが、この呼び方に限定されない。
 本実施の形態における契約の流れについては、実施の形態1と同様である(図1参照)。また、台帳サーバ10A等の構成については、実施の形態1と同様である(図3参照)。
 図10は、本実施の形態におけるトランザクションデータの第一例であるトランザクションデータTA1を示す説明図である。トランザクションデータTA1は、第一トランザクションデータに相当する。トランザクションデータTA1は、例えば、台帳サーバ10Aにより生成される。
 図10に示されるように、トランザクションデータTA1は、「スマートコントラクトCA1のコード」と、「初期化関数に渡す引数」と、「署名1」と、「署名2」と、「送信日時」とを含む。
 「スマートコントラクトCA1のコード」は、変数部と、初期化関数と、支払関数と、署名設定関数とを含む。
 変数部は、スマートコントラクトCA1が用いる変数であって、記憶部14に格納されている変数を示す。スマートコントラクトCA1が用いる変数は、金額、材料納品先、納期、材料納品先署名およびオーナーを含む。金額、材料納品先、納期および材料納品先署名については、実施の形態1のスマートコントラクトCAにおけるものと同じである(図4参照)。オーナーは、材料契約のオーナーを示す。
 初期化関数と支払関数とについては、実施の形態1のスマートコントラクトCAにおけるものと同じである(図4参照)。
 署名設定関数は、引数として署名を受け付ける。また、署名設定関数は、実行されると、当該署名設定関数を実行した者(実行者ともいう)がオーナーであるか否かを判定し、実行者がオーナーであると判定した場合に、記憶部14に格納されている材料納品先署名に、引数として受け付けた署名を設定する。なお、実行者がオーナーでないと判定した場合には、所定のエラー処理を行ってもよい。エラー処理は、例えば、実行者がオーナーでないことを示すエラーメッセージを端末20A等の表示画面に表示する、または、上記エラーメッセージを音声で出力するなどの処理を含む。
 「初期化関数に渡す引数」と、「署名1」と、「署名2」と、「送信日時」とについては、実施の形態1のスマートコントラクトCAにおけるものと同じである(図4参照)。
 図11は、本実施の形態におけるトランザクションデータの第二例であるトランザクションデータTB1を示す説明図である。トランザクションデータTB1は、例えば、台帳サーバ10Aにより生成される。
 図11に示されるように、トランザクションデータTB1は、「スマートコントラクトCB1のコード」と、「初期化関数に渡す引数」と、「署名1」と、「署名2」と、「送信日時」とを含む。
 「スマートコントラクトCB1のコード」は、変数部と初期化関数とを含む。スマートコントラクトCB1が用いる変数は、実施の形態1におけるスマートコントラクトCBにおけるものと同じである。
 初期化関数は、引数として、金額と、納期と、製品納品先と、コントラクトアドレスと、材料納品先とを受け付ける。また、初期化関数は、実行されると、記憶部14に格納されている、金額を示す変数、納期を示す変数、製品納品先を示す変数、材料納品先を示す変数、およびオーナーを示す変数に値を設定する。具体的には、初期化関数は、実行されると、金額を示す変数に引数として受け付けた金額を設定し、納期を示す変数に引数として受け付けた納期を設定し、製品納品先を示す変数に引数として受け付けた金額を設定する。また、初期化関数は、実行されると、引数から特定されるスマートコントラクトの材料納品先を示す変数に、引数として受け付けた材料納品先を設定し、また、引数から特定されるスマートコントラクトのオーナーを示す変数に引数として受け付けた材料納品先を設定する。
 「初期化関数に渡す引数」と、「署名1」と、「署名2」と、「送信日時」とについては、実施の形態1のスマートコントラクトCBにおけるものと同じである(図5参照)。
 図12は、本実施の形態における台帳サーバの処理を示すフロー図である。図12に示されるフロー図は、実施の形態1の図9のステップS125の処理として実行される処理を示しており、つまり、ステップS125の処理の変形例を示している。なお、ステップS125は、図9における場合と同様に、台帳サーバ10A等それぞれの処理部11が、ステップS124でトランザクションデータTCを分散台帳に格納したことに基づいてスマートコントラクトCA1の署名設定関数を実行することで実現される。
 図12に示されるように、ステップS125Aにおいて、台帳サーバ10A等それぞれの処理部11は、署名設定関数の実行者がオーナーであるか否かを判定する。署名設定関数の実行者は、署名設定関数を実行させる命令の送信者、つまりトランザクションデータTC(図6参照)の送信者であるので、トランザクションデータTCを含む通信パケットの送信者またはトランザクションデータTCの署名から特定され得る。実行者がオーナーであると判定した場合(ステップS125AでYes)には、ステップS125Bに進み、そうでない場合(ステップS125AでNo)には、ステップS125Cに進む。
 ステップS125Bにおいて、台帳サーバ10A等それぞれの処理部11は、記憶部14に格納されている材料納品先署名に、トランザクションデータTCで署名設定関数の引数として渡された署名を設定する。
 ステップS125Cにおいて、台帳サーバ10A等それぞれの処理部11は、エラー処理を実行する。なお、ステップS125Cは、なされなくてもよい。
 図12に示される処理により、署名設定関数を実行することによって材料納品先署名を設定できる者を、材料契約を有効と認める者として定められている権限者であるオーナーに限定することができる。
 (実施の形態3)
 本実施の形態において、契約を管理するコンピュータシステムの消費電力の増大を抑制する契約管理システムおよびその制御方法などについて、実施の形態1および2とは異なる形態を説明する。
 本実施の形態の契約管理システムは、材料契約を有効と認める権限者であるオーナーの署名を、製造委託契約に対応するトランザクションデータに当初から格納しておくことで、トランザクションデータが送受信される回数を削減することに寄与する。
 本実施の形態では、実施の形態1と同様に、材料契約に相当するスマートコントラクトCAを含むトランザクションデータTAを用いる(図4参照)。ただし、署名設定関数は用いられないので、スマートコントラクトCAに含められていなくてもよい。
 図13は、本実施の形態におけるトランザクションデータの例であるトランザクションデータTB2を示す説明図である。トランザクションデータTB2は、第二トランザクションデータに相当する。トランザクションデータTB2は、例えば、台帳サーバ10Aにより生成される。
 図13に示されるように、トランザクションデータTB2は、「スマートコントラクトCB2のコード」と、「初期化関数に渡す引数」と、「署名1」と、「署名2」と、「送信日時」とを含む。
 「スマートコントラクトCB2のコード」は、変数部と初期化関数とを含む。スマートコントラクトCB2が用いる変数は、実施の形態1におけるスマートコントラクトCBにおけるものと同じである。
 初期化関数は、引数として、金額と、納期と、製品納品先と、コントラクトアドレスと、材料納品先と、材料納品先署名とを受け付ける。また、初期化関数は、実行されると、記憶部14に格納されている、金額を示す変数、納期を示す変数、製品納品先を示す変数、材料納品先を示す変数、および材料納品先署名を示す変数に値を設定する。具体的には、初期化関数は、実行されると、金額を示す変数に引数として受け付けた金額を設定し、納期を示す変数に引数として受け付けた納期を設定し、製品納品先を示す変数に引数として受け付けた金額を設定する。また、初期化関数は、実行されると、引数から特定されるスマートコントラクトの材料納品先を示す変数に、引数として受け付けた材料納品先を設定し、また、引数から特定されるスマートコントラクトの材料納品先署名を示す変数に、引数として受け付けた材料納品先署名を設定する。
 「初期化関数に渡す引数」は、スマートコントラクトCB2の初期化関数に渡す引数であり、納期(2019年2月1日)と、金額(500万円)と、製品納品先(A社の識別情報)と、コントラクトアドレス(スマートコントラクトCAのアドレス)と、材料納品先(C社の識別情報)と、材料納品先署名(C社の署名SC)とを含む。
 「署名1」と、「署名2」と、「送信日時」とについては、実施の形態1のスマートコントラクトCBにおけるものと同じである(図5参照)。
 図14は、本実施の形態における契約管理システムの処理を示すシーケンス図である。図14には、材料契約の締結、権限者による署名の生成、および、製造委託契約の締結の設定に係る一連の処理が示されている。
 図14に示されるステップS101からステップS107までの処理については、図8におけるものと同じである。
 ステップS107Aにおいて、台帳サーバ10Cの処理部11は、ステップS104で受信したトランザクションデータTAに付すべき署名を算出し、算出した署名を台帳サーバ10Aに送信する。
 ステップS108Aにおいて、台帳サーバ10Aの処理部11は、スマートコントラクトCB2のコードを取得する。スマートコントラクトCB2のコードの取得は、台帳サーバ10Aが当該コードを生成することによってなされてもよいし、A社の担当者による操作に基づいて端末20Aから送信されたコードを受信することによってなされてもよい。
 ステップS109Aにおいて、台帳サーバ10Aの処理部11は、トランザクションデータTB2を生成する。生成されるトランザクションデータTB2には、ステップS108Aで取得したスマートコントラクトCB2のコードが含まれていて(図13参照)、また、ステップS107Aで台帳サーバ10Cから受信した、トランザクションデータTAに付すべき署名が初期化関数の引数として設定されている。
 ステップS110において、実施の形態1における場合と同様に、台帳サーバ10Aの処理部11は、ステップS109Aで生成したトランザクションデータTB2についての署名を生成してトランザクションデータTB2に付与して台帳サーバ10Cに送信する。
 ステップS111において、実施の形態1における場合と同様に、台帳サーバ10Cの処理部11は、ステップS110で送信されたトランザクションデータTBについての署名を付与して台帳サーバ10Aおよび10Bそれぞれに送信する。これにより、すべての台帳サーバ10A等が、台帳サーバ10Aおよび10Cそれぞれの署名を付与されたトランザクションデータTBを有する状態になる。
 ステップS112Aにおいて、実施の形態1のステップS112と同様に、台帳サーバ10A等のそれぞれは、ステップS111で署名が付与され、または、送信されたトランザクションデータTB2を分散台帳に格納する。
 台帳サーバ10A等それぞれの処理部11が、ステップS112AでトランザクションデータTBを分散台帳に格納したことに基づいてスマートコントラクトCB2の初期化関数を実行することで、下記ステップS113およびステップS114Aが実現される。
 ステップS113において、台帳サーバ10A等それぞれの処理部11は、記憶部14に格納されている金額を示す変数と、納期を示す変数と、製品納品先とを示す変数に、トランザクションデータTBで初期化関数の引数として渡された金額と納期と製品納品先とをそれぞれ設定する。
 ステップS114Aにおいて、台帳サーバ10A等それぞれの処理部11は、記憶部14に格納されている、スマートコントラクトCAの材料納品先署名を示す変数にC社の署名を設定する。
 ステップS114Aが実行された後に実施の形態1のステップS126~S130と同じ処理が実行される(不図示)。
 図14に示される一連の処理により、契約管理システム1は、材料契約を有効と認める権限者であるオーナーの署名を製造委託契約に対応するトランザクションデータに当初から入れておくことで、トランザクションデータが送受信される回数を削減しながら、契約を管理するコンピュータシステムの消費電力の増大を抑制することができる。
 なお、権限者は任意の者に設定され得るが、例えば製品のサプライチェーンにおける契約群を想定する場合には、当該契約より下流の契約の締結者が権限者に設定されてもよい。サプライチェーンにおける上流の契約の内容が、下流の契約の内容に影響をおよぼすからである。より具体的には、サプライチェーンにおける上流の契約における納期が、下流の契約の納期に影響を及ぼしたり、サプライチェーンにおける上流の契約における金額が、下流の契約の金額に影響をおよぼしたりするからである。
 例えば、図1に示されるサプライチェーンでは、A社とB社とで締結される材料契約よりも、A社とC社とで締結される製造委託契約のほうが下流であるという理由で、材料契約を有効と認める権限者をC社と設定してもよい。
 より複雑なサプライチェーンを例として説明する。
 図15は、サプライチェーンの変形例を示す説明図である。
 図15に示されるサプライチェーンでは、製品の販売者であるA社は、材料メーカであるB社およびF社それぞれと材料契約を締結している。B社の材料納品先はD社であり、F社の材料納品先はG社である。
 一方、販売者であるA社は、製品メーカであるP社と製造委託契約を締結している。P社は、製品に使用する部品の供給に係る契約である部品供給契約をD社およびG社それぞれと締結している。P社は、D社およびG社から納品された部品から製品を製造し、A社に納品する。
 このようなサプライチェーンでは、例えば、A社とB社とで締結される材料契約の権限者が、その材料契約より下流の契約である部品供給契約または製造委託契約の締結者であるD社またはP社に設定されてよい。また、同様に、D社とP社とで締結される部品供給契約の権限者が、その部品供給契約より下流の契約である製造委託契約の締結者であるA社に設定されてよい。
 また、例えば、A社とF社とで締結される材料契約の権限者が、その材料契約より下流の契約である部品供給契約または製造委託契約の締結者であるG社またはP社に設定されてよい。また、同様に、G社とP社とで締結される部品供給契約の権限者が、その部品供給契約より下流の契約である製造委託契約の締結者であるA社に設定されてよい。
 (補足)
 上記各実施の形態、又は、変形例におけるブロックチェーンについて補足的に説明する。
 図16は、ブロックチェーンのデータ構造を示す説明図である。
 ブロックチェーンは、その記録単位であるブロックがチェーン(鎖)状に接続されたものである。それぞれのブロックは、複数のトランザクションデータと、直前のブロックのハッシュ値とを有している。具体的には、ブロックB2には、その前のブロックB1のハッシュ値が含まれている。そして、ブロックB2に含まれる複数のトランザクションデータと、ブロックB1のハッシュ値とから演算されたハッシュ値が、ブロックB2のハッシュ値として、ブロックB3に含められる。このように、前のブロックの内容をハッシュ値として含めながら、ブロックをチェーン状に接続することで、記録されたトランザクションデータの改ざんを有効に防止する。
 仮に過去のトランザクションデータが変更されると、ブロックのハッシュ値が変更前と異なる値になり、改ざんしたブロックを正しいものとみせかけるには、それ以降のブロックすべてを作り直さなければならず、この作業は現実的には非常に困難である。この性質を使用して、ブロックチェーンに改ざん困難性が担保されている。
 図17は、トランザクションデータのデータ構造を示す説明図である。
 図17に示されるトランザクションデータは、トランザクション本体P1と、電子署名P2とを含む。トランザクション本体P1は、当該トランザクションデータに含まれるデータ本体である。電子署名P2は、トランザクション本体P1のハッシュ値に対して、当該トランザクションデータの作成者の署名鍵で署名する、より具体的には、作成者の秘密鍵で暗号化することで生成されたものである。
 トランザクションデータは、電子署名P2を有するので、改ざんが実質的に不可能である。これにより、トランザクション本体の改ざんが防止される。
 なお、上記実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記実施の形態のコンテンツ管理システムなどを実現するソフトウェアは、次のようなプログラムである。
 すなわち、このプログラムは、コンピュータに、分散台帳を保有している複数の装置を備える契約管理システムにおいて、当該複数の装置のうちの一の装置が実行する制御方法であって、第一ユーザと第二ユーザとの第一契約を有効と認める権限を有する権限者を示す第一変数であって、前記権限者が未定であることを示す所定値が設定されている第一変数を含む第一トランザクションデータを取得し、取得した前記第一トランザクションデータを前記分散台帳に格納し、前記分散台帳に格納した前記第一トランザクションデータに前記第一変数として含まれている前記所定値を読み出して前記一の装置の書き換え可能な記憶部に格納する格納処理を実行し、前記第一変数を第三ユーザの識別情報に変更する変更命令を含む第二トランザクションデータを取得し、取得した前記第二トランザクションデータを前記分散台帳に格納し、前記第二トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数を前記変更命令に従って変更する変更処理を実行し、前記第一契約を履行する履行処理を実行する履行命令を含む第三トランザクションデータを取得し、取得した前記第三トランザクションデータを前記分散台帳に格納し、前記第三トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数が前記所定値以外であると判定した場合に、前記履行命令に従って前記履行処理を実行する制御方法を実行させるプログラムである。
 以上、一つまたは複数の態様に係る契約管理システムなどについて、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。
 本発明は、契約を管理する契約管理システムに利用可能である。
 1  契約管理システム
 10A、10B、10C  台帳サーバ
 11  処理部
 12  台帳記憶部
 13  実行部
 14  記憶部
 20A、20B、20C  端末
 B1、B2、B3  ブロック
 CA、CA1、CB、CB1、CB2  スマートコントラクト
 N  ネットワーク
 P1  トランザクション本体
 P2  電子署名
 TA、TA1、TB、TB1、TB2、TC、TD  トランザクションデータ

Claims (11)

  1.  分散台帳を保有している複数の装置を備える契約管理システムにおいて、当該複数の装置のうちの一の装置が実行する制御方法であって、
     第一ユーザと第二ユーザとの第一契約を有効と認める権限を有する権限者を示す第一変数であって、前記権限者が未定であることを示す所定値が設定されている第一変数を含む第一トランザクションデータを取得し、
     取得した前記第一トランザクションデータを前記分散台帳に格納し、
     前記分散台帳に格納した前記第一トランザクションデータに前記第一変数として含まれている前記所定値を読み出して前記一の装置の書き換え可能な記憶部に格納する格納処理を実行し、
     前記第一変数を第三ユーザの識別情報に変更する変更命令を含む第二トランザクションデータを取得し、
     取得した前記第二トランザクションデータを前記分散台帳に格納し、
     前記第二トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数を前記変更命令に従って変更する変更処理を実行し、
     前記第一契約を履行する履行処理を実行する履行命令を含む第三トランザクションデータを取得し、
     取得した前記第三トランザクションデータを前記分散台帳に格納し、
     前記第三トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数が前記所定値以外であると判定した場合に、前記履行命令に従って前記履行処理を実行する
     制御方法。
  2.  前記履行処理を実行する際には、
     前記第三トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数に前記権限者として前記第三ユーザの識別情報が設定されていると判定した場合に、前記履行命令に従って前記履行処理を実行する
     請求項1に記載の制御方法。
  3.  前記第一変数は、前記第一トランザクションデータに付与すべき前記権限者の電子署名をさらに含み、
     前記履行処理を実行する際には、
     前記第三トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数に含まれる前記電子署名の検証が成功した場合に、前記履行命令に従って前記履行処理を実行する
     請求項1または2に記載の制御方法。
  4.  前記第一トランザクションデータは、前記第一変数と、前記第一変数を前記記憶部に格納する格納命令とを含む第一コントラクトコードを含み、
     前記格納処理は、前記第一トランザクションデータが前記分散台帳に格納されたことに基づいて、前記一の装置が備えるコントラクト実行部が前記第一コントラクトコードに含まれる前記格納命令を実行したことによって行われる
     請求項1~3のいずれか1項に記載の制御方法。
  5.  前記第一トランザクションデータは、前記第一変数と、前記第一変数を前記記憶部に格納する格納命令とを含む第一コントラクトコードを含み、
     前記格納処理は、前記第一トランザクションデータが前記分散台帳に格納されたことに基づいて、前記一の装置が備えるコントラクト実行部が前記第一コントラクトコードに含まれる前記格納命令を実行したことによって行われ、
     前記第一コントラクトコードは、前記記憶部に前記第一変数として格納される前記電子署名を設定する署名設定関数を含み、
     前記変更処理は、
     前記署名設定関数を実行させることによって、前記第一変数に前記権限者の電子署名を設定する命令を含む第四トランザクションデータを取得した場合に、取得した前記第四トランザクションデータが前記分散台帳に格納されたことに基づいて、前記コントラクト実行部が前記署名設定関数を実行したことで行われる
     請求項3に記載の制御方法。
  6.  前記第二トランザクションデータは、前記変更命令を含む第二コントラクトコードを含み、
     前記変更処理は、前記第二トランザクションデータが前記分散台帳に格納されたことに基づいて、前記一の装置が備えるコントラクト実行部により前記変更命令が実行されたことによって行われる
     請求項1~5のいずれか1項に記載の制御方法。
  7.  前記第一トランザクションデータは、前記第一ユーザの電子署名と、前記第二ユーザの電子署名とを含んでいて、
     前記第一トランザクションデータを前記分散台帳に格納する際には、
     前記第一トランザクションデータに含まれている前記第一ユーザの電子署名と、前記第二ユーザの電子署名との両方の検証が成功した場合に、前記第一トランザクションデータを前記分散台帳に格納する
     請求項1~6のいずれか1項に記載の制御方法。
  8.  前記制御方法は、さらに、
     前記第一ユーザと前記第三ユーザとの第二契約に関する第二変数を含む第五トランザクションデータを取得し、
     取得した前記第五トランザクションデータを前記分散台帳に格納し、
     前記第二トランザクションデータは、前記第五トランザクションデータが前記分散台帳に格納されたことに基づいて提供された前記第二トランザクションデータである
     請求項1~7のいずれか1項に記載の制御方法。
  9.  前記第一契約は、前記第一ユーザが前記第二ユーザから材料を購入し、購入した前記材料を、所定の期限までに、所定の納品先に配送する契約を含み、
     前記第二契約は、前記第三ユーザが、前記第二ユーザから納入された前記材料から製品を製造して前記第一ユーザに納品する契約を含み、
     前記第二変数は、前記製品の購入金額を示す変数と、前記製品を納品する期限を示す変数と、前記製品の納品先を示す変数とを含む
     請求項8に記載の制御方法。
  10.  分散台帳を保有している複数の装置を備える契約管理システムにおける、当該複数の装置のうちの一の装置であって、
     処理部と、
     前記分散台帳を記憶している台帳記憶部と、
     実行部と、
     書き換え可能な記憶部とを備え、
     前記処理部は、
     第一ユーザと第二ユーザとの第一契約を有効と認める権限を有する権限者を示す第一変数であって、前記権限者が未定であることを示す所定値が設定されている第一変数とを含む第一トランザクションデータを取得し、取得した前記第一トランザクションデータを前記分散台帳に格納し、
     前記実行部は、
     前記分散台帳に格納した前記第一トランザクションデータに前記第一変数として含まれている前記所定値を読み出して前記一の装置の書き換え可能な記憶部に格納する格納処理を実行し、
     前記処理部は、さらに、
     前記第一変数を第三ユーザの識別情報に変更する変更命令を含む第二トランザクションデータを取得し、取得した前記第二トランザクションデータを前記分散台帳に格納し、
     前記実行部は、さらに、
     前記第二トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数を前記変更命令に従って変更する変更処理を実行し、
     前記処理部は、さらに、
     前記第一契約を履行する履行処理を実行する履行命令を含む第三トランザクションデータを取得し、取得した前記第三トランザクションデータを前記分散台帳に格納し、
     前記実行部は、さらに、
     前記第三トランザクションデータを前記分散台帳に格納した後に、前記記憶部に格納されている前記第一変数が前記所定値以外であると判定した場合に、前記履行命令に従って前記履行処理を実行する
     装置。
  11.  請求項1~9のいずれか1項に記載の制御方法をコンピュータに実行させるプログラム。
PCT/JP2020/046398 2019-12-19 2020-12-11 制御方法、装置、および、プログラム WO2021125107A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202080086752.8A CN114846497A (zh) 2019-12-19 2020-12-11 控制方法、装置以及程序
JP2021565560A JPWO2021125107A1 (ja) 2019-12-19 2020-12-11
US17/835,189 US20220300957A1 (en) 2019-12-19 2022-06-08 Control method, device, and recording medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962950505P 2019-12-19 2019-12-19
US62/950,505 2019-12-19

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/835,189 Continuation US20220300957A1 (en) 2019-12-19 2022-06-08 Control method, device, and recording medium

Publications (1)

Publication Number Publication Date
WO2021125107A1 true WO2021125107A1 (ja) 2021-06-24

Family

ID=76477526

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/046398 WO2021125107A1 (ja) 2019-12-19 2020-12-11 制御方法、装置、および、プログラム

Country Status (4)

Country Link
US (1) US20220300957A1 (ja)
JP (1) JPWO2021125107A1 (ja)
CN (1) CN114846497A (ja)
WO (1) WO2021125107A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023248344A1 (ja) * 2022-06-21 2023-12-28 富士通株式会社 対価分配プログラム、対価分配方法、対価分配装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018055203A (ja) * 2016-09-26 2018-04-05 Gmoインターネット株式会社 データ管理システム、情報処理装置、プログラム、データ管理方法、データ構造
US20180183600A1 (en) * 2016-12-28 2018-06-28 Mastercard International Incorporated Method and system for providing validated, auditable, and immutable inputs to a smart contract
JP2019153275A (ja) * 2018-03-02 2019-09-12 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 制御方法、コントローラ、データ構造及び電力取引システム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11699201B2 (en) * 2017-11-01 2023-07-11 Docusign, Inc. System and method for blockchain-based network transitioned by a legal contract
US10476847B1 (en) * 2017-12-08 2019-11-12 Symbiont.Io, Inc. Systems, methods, and devices for implementing a smart contract on a distributed ledger technology platform

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018055203A (ja) * 2016-09-26 2018-04-05 Gmoインターネット株式会社 データ管理システム、情報処理装置、プログラム、データ管理方法、データ構造
US20180183600A1 (en) * 2016-12-28 2018-06-28 Mastercard International Incorporated Method and system for providing validated, auditable, and immutable inputs to a smart contract
JP2019153275A (ja) * 2018-03-02 2019-09-12 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 制御方法、コントローラ、データ構造及び電力取引システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023248344A1 (ja) * 2022-06-21 2023-12-28 富士通株式会社 対価分配プログラム、対価分配方法、対価分配装置

Also Published As

Publication number Publication date
US20220300957A1 (en) 2022-09-22
JPWO2021125107A1 (ja) 2021-06-24
CN114846497A (zh) 2022-08-02

Similar Documents

Publication Publication Date Title
WO2020211462A1 (zh) 一种基于区块链的业务数据上链方法及其系统
CN110688425B (zh) 针对区块链的条件性延期事务的方法和系统
US11887115B2 (en) Systems and methods to validate transactions for inclusion in electronic blockchains
AU2018348324A1 (en) System and method for improving security of smart contract on blockchain
CN111936995A (zh) 海关清关数据的分布式存储
EP3799401B1 (en) Systems and methods for facilitating authentication of emails sent by 3rd parties
CN111989707A (zh) 管理基于区块链的海关清关服务的用户权限
CN111989663A (zh) 基于区块链的智能合约池
EP4141772A1 (en) Supplemental digital content access control using nonfungible tokens (nfts)
US20230120534A1 (en) Methods for Conditional Transaction Tokens, Secure Sharing of Token Assets, Wallet Spam Protection, and User Interfaces for Acceptance of Terms
CN114930330A (zh) 基于区块链的海关清关服务平台的用户管理
CN111936994A (zh) 用于海关清关的基于区块链的文档注册
CN115809909A (zh) 区块链网络拥塞自适应数字资产事件处置系统和方法
CN112074861A (zh) 针对时间敏感事件的基于区块链的消息服务
WO2021125107A1 (ja) 制御方法、装置、および、プログラム
CN110599176B (zh) 基于区块链的数据处理方法、装置、存储介质及节点设备
CN112400298B (zh) 验证交易系统和方法用于加至电子区块链
JP2023510320A (ja) 分散型台帳ネットワークにおけるコンテンツのセキュアなピアツーピア送信のためのシステムおよび方法
CN112074862A (zh) 基于消息反馈的存储管理
CN110599184A (zh) 用于网络服务账号交易的方法和装置、服务器和存储介质
WO2019084345A1 (en) MCART: DEMOCRATIZING INFLUENTIAL MARKETING ON A BLOCKCHAIN
AU2019101593A4 (en) System and method for improving security of smart contract on blockchain
WO2021125106A1 (ja) 制御方法、装置、および、プログラム
WO2021125108A1 (ja) 制御方法、装置、および、プログラム
WO2022118565A1 (ja) 制御方法、制御装置、およびプログラム

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: 20901832

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021565560

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 21/09/2022)

122 Ep: pct application non-entry in european phase

Ref document number: 20901832

Country of ref document: EP

Kind code of ref document: A1