WO2017187397A1 - Operating system for blockchain iot devices - Google Patents

Operating system for blockchain iot devices Download PDF

Info

Publication number
WO2017187397A1
WO2017187397A1 PCT/IB2017/052465 IB2017052465W WO2017187397A1 WO 2017187397 A1 WO2017187397 A1 WO 2017187397A1 IB 2017052465 W IB2017052465 W IB 2017052465W WO 2017187397 A1 WO2017187397 A1 WO 2017187397A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
blockchain
control component
instructions
transaction
Prior art date
Application number
PCT/IB2017/052465
Other languages
French (fr)
Inventor
Craig Steven WRIGHT
Stephane SAVANAH
Original Assignee
nChain Holdings Limited
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
Priority to CN201780022289.9A priority Critical patent/CN109089427A/en
Priority to AU2017257449A priority patent/AU2017257449B2/en
Application filed by nChain Holdings Limited filed Critical nChain Holdings Limited
Priority to BR112018071802-5A priority patent/BR112018071802A2/en
Priority to CN202410177661.5A priority patent/CN118041632A/en
Priority to GB1806518.5A priority patent/GB2564199B/en
Priority to EP17721470.7A priority patent/EP3449449A1/en
Priority to SG11201809117QA priority patent/SG11201809117QA/en
Priority to CA3019276A priority patent/CA3019276A1/en
Priority to JP2018552719A priority patent/JP7048511B2/en
Priority to EP22206759.7A priority patent/EP4184410A1/en
Priority to EA201892133A priority patent/EA201892133A1/en
Priority to US16/097,497 priority patent/US11128607B2/en
Priority to KR1020187034205A priority patent/KR102373685B1/en
Publication of WO2017187397A1 publication Critical patent/WO2017187397A1/en
Priority to ZA2018/07090A priority patent/ZA201807090B/en
Priority to US17/381,880 priority patent/US20220021662A1/en
Priority to JP2022048598A priority patent/JP7364724B2/en
Priority to JP2023173391A priority patent/JP2023175927A/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • 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/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/308Payment architectures, schemes or protocols characterised by the use of specific devices or networks using the Internet of Things
    • 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/3827Use of message hashing
    • 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/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • AHUMAN NECESSITIES
    • A01AGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTING; TRAPPING; FISHING
    • A01KANIMAL HUSBANDRY; AVICULTURE; APICULTURE; PISCICULTURE; FISHING; REARING OR BREEDING ANIMALS, NOT OTHERWISE PROVIDED FOR; NEW BREEDS OF ANIMALS
    • A01K5/00Feeding devices for stock or game ; Feeding wagons; Feeding stacks
    • A01K5/02Automatic devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/305Authentication, i.e. establishing the identity or authorisation of security principals by remotely controlling device operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • 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/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • 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/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3678Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes e-cash details, e.g. blinded, divisible or detecting double spending
    • 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/3821Electronic credentials
    • 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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/03Protecting confidentiality, e.g. by encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/70Services for machine-to-machine communication [M2M] or machine type communication [MTC]
    • 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
    • G06Q2220/00Business processing using cryptography
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16YINFORMATION AND COMMUNICATION TECHNOLOGY SPECIALLY ADAPTED FOR THE INTERNET OF THINGS [IoT]
    • G16Y10/00Economic sectors
    • G16Y10/35Utilities, e.g. electricity, gas or water
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless
    • H04L2209/805Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks

Definitions

  • This invention relates generally to distributed ledger (blockchain) technology.
  • This may be any blockchain-related technology, including (but not limited to) the Bitcoin
  • the invention may be suited for controlling an IoT device.
  • 'blockchain' to include all forms of electronic, computer- based, distributed ledgers. These include consensus-based blockchain and transaction- chain technologies, permissioned and un-permissioned ledgers, shared ledgers, side chains and alt chains, and variations thereof.
  • the most widely known application of blockchain technology is the Bitcoin ledger, although other blockchain implementations have been proposed and developed. While Bitcoin may be referred to herein for the purpose of convenience and illustration, it should be noted that the invention is not limited to use with the Bitcoin blockchain and alternative blockchain implementations and protocols fall within the scope of the present invention.
  • the term "user” may refer herein to a human or a processor-based resource.
  • a blockchain is a peer-to-peer, electronic ledger which is implemented as a computer- based decentralised, distributed system made up of blocks which in turn are made up of transactions.
  • Each transaction is a data structure that encodes the transfer of control of a digital asset between participants in the blockchain system, and includes at least one input and at least one output.
  • Each block contains a hash of the previous block to that blocks become chained together to create a permanent, unalterable record of all transactions which have been written to the blockchain since its inception.
  • Transactions contain small programs known as scripts embedded into their inputs and outputs, which specify how and by whom the outputs of the transactions can be accessed. On the Bitcoin platform, these scripts are written using a stack-based scripting language.
  • Such systems can include control units and control systems for automating and controlling processes and/or directing the behaviour of devices.
  • IOT devices may include IOT devices.
  • IOT devices are embedded with electronic circuits, software, sensors, and networking capabilities etc. to enable them to communicate with other devices and systems, often via wireless means, and to perform desired tasks. In some cases, they may be extremely small and contain only limited processing and memory capacity. This poses a problem if the software required for the device's task is large and complex. Furthermore, as the software and hardware needed to provide the IoT
  • ADPT washing machine device managed by a contract and communicating, via a blockchain, with a retailer to purchase supplies upon satisfying the condition of "running low on detergent”.
  • Such an operating system would provide dynamic functionality for the device, rather than static functionality.
  • it would be a significant technical advantage if one could alter the configuration, set-up and functionality of the device(s) in a simple, efficient and dynamic manner.
  • Such a technical solution is not address in the prior art such as ADEPT.
  • a further advantage over known prior art would be the capability of enabling a simple, secure and robust control functionality including the possibility of processing payments for services provided by the device.
  • the present invention addresses these goals, and others, by interfacing IOTs to a Blockchain protocol such as, for example, the Bitcoin protocol.
  • the invention may provide a computer-implemented system and method. It may be described as a control method because it controls, directs and/or influences the activities of one or more devices.
  • the invention may be described as an operating system. It may be software-implemented. It may comprise an operating system for coordinating, controlling and/or influencing the activities of at least one device.
  • the operating system may be generic in the sense that it is independent of the device which it controls.
  • the invention may be implemented using a blockchain platform with which the operating system (“control component") is arranged to interact.
  • the blockchain may be the Bitcoin blockchain.
  • the device is an Internet of Things (IOT) device.
  • IOT Internet of Things
  • the invention may provide a computer-implemented control system for controlling a device.
  • the system may comprise:
  • a device configured for wireless communication with a network and having an IP address and a public-private key cryptographic key pair associated with the device; a software-implemented control component arranged to monitor the state of a blockchain network and/or transmit blockchain Transactions to the blockchain network; and/or
  • control component a set of instructions arranged for execution by the control component to control the functionality of the device.
  • the control component may be arranged to access the set of instructions from a stored location which is separate to the device i.e. "off device".
  • the control component may be arranged to receive an input signal from an input source.
  • the input source may be:
  • the computer-based agent or resource may be substantially as described below.
  • the set of instructions may be stored in a Distributed Hash Table (DHT) and accessed for download and installation by the control component from the DHT.
  • DHT Distributed Hash Table
  • An advantage of this is that it provides the ability to change the instructions (and thus the functionality of the device).
  • the location of the DHT may be indicated or provided using metadata provided within a blockchain transaction.
  • An advantage of this is that the location of the instructions is recorded immutably within the blockchain. A permanent and tamper-proof record is therefore provided, and the location can be verified by any party with access to the blockchain. Thus, security and verification are enhanced.
  • the set of instructions may be accessed by the control component using a look-up key which is related to a cryptographic key pair.
  • the control component may be provided on or in the device. It may be provided in an off- device location and arranged for wireless communication with the device.
  • the control component may be arranged to:
  • the control component may be arranged to influence or control the activities of the device(s) based upon detection of a valid blockchain transaction.
  • the invention may provide a system and/or method substantially as described below.
  • the invention may provide a computer-implemented control method arranged to control a device, or a plurality of devices.
  • the method may comprise the steps:
  • a device configured for (wireless) communication with a network and having an IP address and a public -private key cryptographic key pair associated with the device; providing a software-implemented control component arranged to monitor the state of a blockchain network and/or transmit blockchain Transactions to the blockchain network;
  • control component providing a set of instructions arranged for execution by the control component to control the functionality of the device.
  • the control component may be arranged to access the set of instructions from a stored location which is separate to the device.
  • the control component may be arranged to receive an input signal from an input source, wherein the input source may be:
  • the set of instructions may be stored in a Distributed Hash Table (DHT) and accessed for download and installation by the control component from the DHT.
  • DHT Distributed Hash Table
  • the location of the DHT may be indicated or provided using metadata provided within a blockchain transaction.
  • the set of instructions may be accessed by the control component using a look-up key which is related to a cryptographic key pair.
  • the control component may be provided on or in the device. It may be provided in an off-device location and arranged for wireless communication with the device.
  • the control component may be arranged to:
  • Figure 2 illustrates a truth table for the control system of figure 1
  • Figure 3 illustrates the steps in the processing of the unlocking transaction for the example of figure 1 ;
  • Figures 4 to 8 illustrate a technique which can be used to share a secret and generate a public or private key.
  • Figures 9 to 11 show aspects of an implementation wherein the locking script of a blockchain transaction is used to implement the functionality of a logic gate.
  • Figure 9 shows an overview of a technique in which two Boolean inputs A and B are evaluated within the locking script of a first transaction to produce a Boolean output X.
  • Figure 10 shows an overview of a technique for implementing a logic gate using first and second blockchain transactions.
  • Figure 11 illustrates a process in which the locking script of a blockchain transaction is used to implement the functionality of a logic gate.
  • the present invention provides the following advantages, amongst others:
  • DHT Distributed Hash Table
  • a Blockchain IOT Device is a computing Agent that is set up to execute predetermined instructions which are stored securely off-BID and accessed via cryptographic keys.
  • 'off-BID' we mean that the instructions are not provided within the BID itself, but are stored elsewhere and accessed as and when required. These instructions are selected and arranged to perform a chosen task or plurality of tasks. When executed, the instructions can control and influence the behaviour of the IOT device.
  • the BID resides on the IOT itself, meaning that the BID is installed in memory provided in or on the ITO device. However, in other embodiments the BID may reside off-device and have internet connectivity to the device.
  • the IOT device has its own cryptographic key (as well as an IP address) so it can securely communicate and interact with other devices or DHTs, etc. Its 'operating system' is a simple, generic system with some embedded functionality for (at least, but not limited to):
  • the BID's incoming and outgoing communications are encrypted using a security mechanism as described below, which enables keys to be created using shared secrets. This allows:
  • the invention therefore provides a generic operating system which is usable in any IOT device.
  • the device itself is not programmed - all programs are stored separately and loaded into the device at set-up time (or, in some embodiments, at execution time).
  • the following illustrative example relates to the use of an embodiment of the invention for the control of an Auto-feeder IOT device. It is provided for illustrative purposes only, as an example of how one implementation of the invention may be used.
  • system 100 comprises first and second client devices, respectively enumerated as 102a and 102b, and a BID control system 104 which is operative to receive inputs from the first 102a and second 102b client devices and to transmit information to first 102a and second 102b client devices.
  • first and second client devices 102a, 102b are radio frequency identification devices (RFIDs) which are detectable by BID control system 104.
  • Control system 104 is operative to use a blockchain and is operative to transmit outputs to a blockchain.
  • control system 104 works using an example of Carol's two dogs, named Archimedes (A) and Bertrand (B), who are left alone all day in the back yard and they are both friendly to each other provided they do not eat at the same time, which for some reason causes them to become aggressive and fight each other.
  • a and B both have identifying RFID collars i.e. first RFID collar 102a and second RFID collar 102b, which are detectable by an Internet Of Things (IOT) device 101.
  • IOT device is an auto- feeder which dispenses specified quantities of food for consumption by one of the dogs, i.e. the BID control system 104 controls the operation of the IOT feeding device.
  • the BID 104 is a software resource or component which is provided on the IOT auto-feeder and interfaces with the feeder to control its functions.
  • the BID begins its life by downloading and installing its instructions from the DHT. It does not need to do this again until those instructions are modified. This might be, for example, when the BID needs to be upgraded or when the BID's behaviour is to be completely modified e.g its instruction set might be modified to detect three or more RFID signal.
  • the Control Agent uses the values transmitted by the BID to create a blockchain transaction, and also shares new secrets with the BID after each iteration as explained below.
  • the functionality of the BID control system 104 is implemented using a blockchain transaction which is locked using the locking script:
  • OP_HASH160 ⁇ unlocking script hash> OP_EQUAL Transactions are created to provide (via metadata linking to a distributed hash table (DHT)) a set of instructions to control the IOT auto-feeder device and may include instructions to a computing resource established in accordance with what is described below.
  • the metadata can include a pointer or reference to a location where the instructions can be accessed, rather than storing the instructions within the transaction itself. Thus, the instructions may be held Off-block' .
  • the Blockchain provides not only a mechanism for controlling activities but also to record information about events that have taken place e.g. it provides the ability to count the number of feedings, what time they occurred, which dog ate, whether maximum food allocation has been dispensed, etc.. It also provides cryptographic security.
  • a or B When A or B are at the feeder an RFID signal is transmitted to the auto-feeder' s control system 104, from the respective client device, i.e. first RFID collar 102a or second RFID collar 102b, to unlock that dog's secure current puzzle solution (which is securely replaced with a new puzzle solution after each iteration).
  • a random number is instead transmitted from the respective RFID collar to the feeder.
  • a dog being 'at the feeder' means its RFID collar is within detectable range of the feeder. If this is the case, the relevant puzzle is unlocked for transmission. If not, the default is a random number.
  • a puzzle solution is data which, when hashed, results in a value that provides a match when compared with the stored value within a (bitcoin) script. That is, the process is: a secret value (the 'solution') is hashed and stored within a locking script for later comparison. To unlock the locking script the secret is presented to the script via an unlocking (redeem). The presented value is hashed and then compared with the stored hash. If the comparison determines that they are equal then the result of the comparison is 'TRUE' .
  • the stored value is the DOUBLE -hash of the secret, and the value presented is a SINGLE-hash of the secret. This enables any length of secret to be reduced to a standard manageable size for input to the script (i.e. always 160 bits long).
  • the Auto-feeder BID executes its instructions which were retrieved from a DHT using a look-up key that is related to the BID's key/pair.
  • the Control Agent manages the data flow to/from the BID (i.e. data relating to the RFID signals, not related to the BID's instruction set).
  • the Auto-feeder BID monitors its own state. It stores two secret values (S I and S2) received from the separate Control Agent 103.
  • the Control Agent 103 can be a suitably programmed computing resource arranged to oversee the feeding process.
  • the secret values S I and S2 are used conditionally when the dogs' RFID collars are detected within range.
  • the signal includes:
  • the Autofeeder checks for a valid transaction on the network (which may or may not yet be published on a Block, but which must be a valid transaction). This transaction is created and broadcast by the Control Agent. It is valid if the embedded XOR test has passed. If not passed, then it will be invalid and will not be propagated beyond the first hop on the network. Thus it will not be detected by the
  • the BID is on the first hop and therefore the transaction is detected, part of the BID's function (as for any other node) is to validate the transaction. So it will be able to detect if the transaction is valid before it takes it consequent action.
  • the valid transaction also guarantees that the required information has been stored and recorded on the blockchain i.e. regarding the feeding event.
  • the BID performs its conditioned instruction - in this case, it dispenses some food
  • Metadatal Contains a reference to codified instructions stored in a DHT.
  • Agent's programming may be hard coded or it too may retrieve its own instructions from a DHT.
  • the codified instructions may be stored and accessed in accordance with the procedure set out below for referencing a contract from a blockchain transaction using metadata.
  • Carol's public key may be securely held or recreatable using the process set out below.
  • the following script will be required:
  • Control system 104 is operative to hash the presented puzzle- A solution and compare it with a stored version of puzzle-A (in which the version is a hash of the solution) that is retrieved from storage in step S300.
  • the top of stack is then swapped with the second item on the stack which is puzzle-B solution in a step S302.
  • This is hashed and compared with a stored version of puzzle-B which is retrieved from storage, again pushing 1 or 0 onto the top of the stack in a similar vein to the outcome from S300.
  • the stored version of puzzle-B may be stored in storage local to the control system 104 or on any other suitable storage medium.
  • step S304 OP_NUMEQUAL then returns 1 if the numbers are equal, 0 otherwise, which is the exact reverse of the XOR truth table.
  • step S306 OP_NOT then flips the top item on the stack to produce the required XOR result.
  • step S308 OP_VERIFY then checks if the item on the top of the stack is 1 and if not, i.e. if the XOR operation has failed, the transaction is immediately marked as invalid as more than a single input from the first and second client devices has returned a matching puzzle solution. The result of this is that no food is dispensed from the IOT dispenser as more than a single dog is at the IOT dispenser. That is to say, the output of the control system 104 is controlled by the execution of the underlying Bitcoin transaction.
  • control system 104 hashes the unlocking script to compare the hash with the hash of the unlocking script using OP_EQUAL. Following this, the unlocking script is then executed.
  • Sig-Carol Puzzle-ES-solution ⁇ Puzzle-A> The top stack item is hashed Puzzle-A-Solution-hashed OP_EQUAL OP_SWAP
  • Sig-Carol TRUE OP_VERIFY The top stack item is flipped (from
  • a key may be securely held or recreated. Particularly, in the case of a private key which may be used to derive a public key, the private key may be stored in parts.
  • the user i.e. Alice or Bob
  • a service provider may keep a second part
  • a third part may be kept at a remote secure site.
  • the private key may be reconstituted using any two of the three parts, or, more generally, the private key may be reconstituted using any m of n parts.
  • the private key can be reconstituted then it can be used to recreate a public key at the point of use and then the private key and the public key can be discarded again after use.
  • Splitting private keys may be achieved using Shamir's Secret Sharing Scheme.
  • Private key-public key pairs may be deterministically derived from a master key using the following method. This method enables secret values to be shared by participants without ever transmitting them.
  • the system may generate a public key for a participant using a method of sub-key generation as now described.
  • Figure 4 illustrates a system 1 that includes a first node 3 which is in communication with a second node 7 over a communications network 5.
  • the first node 3 has an associated first processing device 23 and the second node 5 has an associated second processing device 27.
  • the first and second nodes 3, 7 may include an electronic device, such as a computer, phone, tablet computer, mobile communication device, computer server etc.
  • the first node 3 may be a client (user) device and the second node 7 may be a server.
  • the server may be a digital wallet provider's server.
  • the first node 3 is associated with a first asymmetric cryptography pair having a first node master private key (Vic) and a first node master public key (Pic).
  • the second node (7) is associated with a second asymmetric cryptography pair having a second node master private key (Vis) and a second node master public key (Pis).
  • the first and second nodes are each in possession of respective public -private key pairs.
  • the first and second asymmetric cryptography pairs for the respective first and second nodes 3, 7 may be generated during a registration process, such as registration for a wallet.
  • the public key for each node may be shared publicly, such as over communications network 5.
  • CS common secret
  • the method 300 performed by the first node 3 includes determining 330 a first node second private key (V 2 c) based on at least the first node master private key (Vic) and a Generator Value (GV).
  • the Generator Value may be based on a message (M) that is a shared between the first and second nodes, which may include sharing the message over the communications network 5 as described in further detail below.
  • the method 300 also includes determining 370 a second node second public key (P 2 s) based on at least the second node master public key (Pis) and the Generator Value (GV).
  • the method 300 includes determining 380 the common secret (CS) based on the first node second private key (V 2 c) and the second node second public key (P 2 s).
  • the same common secret (CS) can also be determined at the second node 7 by method 400.
  • the method 400 includes determining 430 a first node second public key (P2c) based on the first node master public key (Pic) and the Generator Value (GV).
  • the method 400 further include determining 470 a second node second private key (V 2 s) based on the second node master private key (Vis) and the Generator Value (GV).
  • the method 400 includes determining 480 the common secret (CS) based on the second node second private key (V 2 s) and the first node second public key (P 2 c).
  • the communications network 5 may include a local area network, a wide area network, cellular networks, radio communication network, the internet, etc.
  • These networks where data may be transmitted via communications medium such as electrical wire, fibre optic, or wirelessly may be susceptible to eavesdropping, such as by an eavesdropper 11.
  • the method 300, 400 may allow the first node 3 and second node 7 to both independently determine a common secret without transmitting the common secret over the
  • the common secret may be determined securely and independently by each node without having to transmit a private key over a potentially unsecure communications network 5.
  • the common secret may be used as a secret key (or as the basis of a secret key).
  • the methods 300, 400 may include additional steps. See Figure 8.
  • the method 300 may include, at the first node 3, generating a signed message (SMI) based on the message (M) and the first node second private key (V 2 c).
  • the method 300 further includes sending 360 the first signed message (SMI), over the communications network, to the second node 7.
  • the second node 7 may perform the steps of receiving 440 the first signed message (SMI).
  • the method 400 also includes the step of validating 450 the first signed message (SM2) with the first node second public key (P 2 c) and authenticating 460 the first node 3 based on the result of validating the first signed message (SMI).
  • this allows the second node 7 to authenticate that the purported first node (where the first signed message was generated) is the first node 3.
  • This is based on the assumption that only the first node 3 has access to the first node master private key (Vic) and therefore only the first node 3 can determine the first node second private key (V 2 c) for generating the first signed message (SMI).
  • a second signed message (SM2) can be generated at the second node 7 and sent to the first node 3 such that the first node 3 can authenticate the second node 7, such as in a peer-to-peer scenario. Sharing the message (M) between the first and second nodes may be achieved in a variety of ways.
  • the message may be generated at the first node 3 which is then sent, over the communications network 5, the second node 7.
  • the message may be generated at the second node 7 and then sent, over the communications network 5, to the second node 7.
  • the message (M) may be public and therefore may be transmitted over an unsecure network 5.
  • One or more messages (M) may be stored in a data store 13, 17, 19. The skilled person will realise that sharing of the message can be achieved in a variety of ways.
  • a record to allow recreation of the common secret (CS) may be kept without the record by itself having to be stored privately or transmitted securely.
  • method 100 is performed by the first node 3 and method 200 is performed by the second node 7.
  • This includes establishing the first and second asymmetric cryptography pairs for the respective first and second nodes 3, 7.
  • the asymmetric cryptography pairs include associated private and public keys, such as those used in public -key encryption.
  • the asymmetric cryptography pairs are generated using Elliptic Curve Cryptography (ECC) and properties of elliptic curve operations.
  • ECC Elliptic Curve Cryptography
  • G base point
  • the common ECC system may be based on secp256Kl which is an ECC system used by Bitcoin.
  • the base point (G) may be selected, randomly generated, or assigned.
  • the method 100 includes settling 110 on the common ECC system and base point (G). This may include receiving the common ECC system and base point from the second node 7, or a third node 9.
  • a user interface 15 may be associated with the first node 3, whereby a user may selectively provide the common ECC system and/or base point (G).
  • one or both of the common ECC system and/or base point (G) may be randomly selected by the first node 3.
  • the first node 3 may send, over the communications network 5, a notice indicative of using the common ECC system with a base point (G) to the second node 7.
  • the second node 7 may settle 210 by sending a notice indicative of an acknowledgment to using the common ECC system and base point (G).
  • the method 100 also includes the first node 3 generating 120 a first asymmetric cryptography pair that includes the first node master private key (Vic) and the first node master public key (Pic). This includes generating the first master private key (Vic) based, at least in part, on a random integer in an allowable range specified in the common ECC system. This also includes determining the first node master public key (Pic) based on elliptic curve point multiplication of the first node master private key (Pic) and the base point (G) according to the formula:
  • the first asymmetric cryptography pair includes:
  • Vic The first node master private key that is kept secret by the first node.
  • the first node master public key that is made publicly known.
  • the first node 3 may store the first node master private key (Vic) and the first node master public key (Pic) in a first data store 13 associated with the first node 3.
  • the first node master private key (Vic) may be stored in a secure portion of the first data store 13 to ensure the key remains private.
  • the method 100 further includes sending 130 the first node master public key (Pic), over the communications network 5, to the second node 7, as shown in figure 6.
  • the second node 7 may, on receiving 220 the first node master public key (Pic), store 230 the first node master public key (Pic) in a second data store 17 associated with the second node 7.
  • the method 200 of the second 7 includes generating 240 a second asymmetric cryptography pair that includes the second node master private key (Vis) and the second node master public key (Pis).
  • the second node master private key (Vis) is also a random integer within the allowable range.
  • the second node master public key (Pis) is determined by the following formula:
  • the second asymmetric cryptography pair includes:
  • Pis The second node master public key that is made publicly known.
  • the second node 7 may store the second asymmetric cryptography pair in the second data store 17.
  • the method 200 further includes sending 250 the second node master public key (Pis) to the first node 3.
  • the first node 3 may receive 140 and stores 150 the second node master public key (Pis).
  • the respective public master keys may be received and stored at a third data store 19 associated with the third node 9 (such as a trusted third party). This may include a third party that acts as a public directory, such as a certification authority.
  • the first node master public key (Pic) may requested and received by the second node 7 only when determining the common secret (CS) is required (and vice versa).
  • the registration steps may only need to occur once as an initial setup.
  • the common secret (CS) may be used for a particular session, time, transaction, or other purpose between the first node 3 and the second node 7 and it may not be desirable, or secure, to use the same common secret (CS). Thus the common secret (CS) may be changed between different sessions, time, transactions, etc.
  • the method 300 performed by the first node 3 includes generating 310 a message (M).
  • the message (M) may be random, pseudo random, or user defined.
  • the message (M) is based on Unix time and a nonce (and arbitrary value).
  • the message (M) may be provided as:
  • the message (M) is arbitrary. However it is to be appreciated that the message (M) may have selective values (such as Unix Time, etc) that may be useful in some applications.
  • the method 300 includes sending 315 the message (M), over the communications network 3, to the second node 7.
  • the message (M) may be sent over an unsecure network as the message (M) does not include information on the private keys.
  • the method 300 further includes the step of determining 320 a Generator Value (GV) based on the message (M). In this example, this includes determining a cryptographic hash of the message.
  • a cryptographic hash algorithm includes SHA-256 to create a 256-bit Generator Value (GV). That is:
  • hash algorithms may be used. This may include other has algorithms in the Secure Hash Algorithm (SHA) family. Some particular examples include instances in the SHA-3 subset, including SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE 128, SHAKE256. Other hash algorithms may include those in the RACE Integrity Primitives Evaluation Message Digest (RIPEMD) family. A particular example may include RIPEMD-160. Other hash functions may include families based on Zemor-Tillich hash function and knapsack-based hash functions. Determining a first node second private key 330
  • SHA Secure Hash Algorithm
  • RIPEMD RACE Integrity Primitives Evaluation Message Digest
  • hash functions may include families based on Zemor-Tillich hash function and knapsack-based hash functions. Determining a first node second private key 330
  • the method 300 then includes the step 330 of determining 330 the first node second private key (V 2 c) based on the second node master private key (Vic) and the Generator Value (GV). This can be based on a scalar addition of the first node master private key (Vic) and the Generator Value (GV) according to the following formula:
  • V 2C Vic + GV (Equation 5)
  • first node second private key (V 2 c) is not a random value but is instead deterministically derived from the first node master private key.
  • the corresponding public key in the cryptographic pair, namely the first node second public key (P 2 c) has the following relationship:
  • Equation 7 (Vic + GV) x G (Equation 7) where the ' + ' operator refers to elliptic curve point addition. Noting that elliptic curve cryptography algebra is distributive, Equation 7 may be expressed as:
  • Equation 1 may be substituted into Equation 7 to provide:
  • Pic Pic + SHA-256(M) x G (Equation 9.2)
  • first node second public key (Pic) can be derivable given knowledge of the first node master public key (Pic) and the message (M).
  • the second node 7 may have such knowledge to independently determine the first node second public key (Pic) as will be discussed in further detail below with respect to the method 400.
  • the method 300 further includes generating 350 a first signed message (SMI) based on the message (M) and the determined first node second private key (V 2 c).
  • Generating a signed message includes applying a digital signature algorithm to digitally sign the message (M). In one example, this includes applying the first node second private key (V 2 c) to the message in an Elliptic Curve Digital Signature Algorithm (ECDSA) to obtain the first signed message (SMI).
  • ECDSA Elliptic Curve Digital Signature Algorithm
  • Examples of ECDSA include those based on ECC systems with secp256kl, secp256rl, secp384rl, se3cp521rl.
  • the first signed message (SMI) can be verified with the corresponding first node second public key (P 2 c) at the second node 7. This verification of the first signed message (SMI) may be used by the second node 7 to authenticate the first node 3, which will be discussed in the method 400 below.
  • the first node 3 may then determine 370 a second node second public key (P 2 s).
  • the second node second public key (P 2 s) may be based at least on the second node master public key (Pis) and the Generator Value (GV).
  • the public key is determined 370' as the private key with elliptic curve point multiplication with the base point (G)
  • the second node second public key (P 2 s) can be expressed, in a fashion similar to Equation 6, as:
  • Equation 10.2 The mathematical proof for Equation 10.2 is the same as described above for deriving Equation 9.1 for the first node second public key (Pic). It is to be appreciated that the first node 3 can determine 370 the second node second public key independently of the second node 7.
  • the first node 3 may then determine 380 the common secret (CS) based on the determined first node second private key (V 2 c) and the determined second node second public key (P2s).
  • the common secret (CS) may be determined by the first node 3 by the following formula:
  • the method 400 includes receiving 410 the message (M), over the communications network 5, from the first node 3. This may include the message (M) sent by the first node 3 at step 315.
  • the second node 7 determines 420 a Generator Value (GV) based on the message (M).
  • the step of determining 420 the Generator Value (GV) by the second node 7 is similar to the step 320 performed by the first node described above. In this example, the second node 7 performs this determining step 420 independent of the first node 3.
  • the next step includes determining 430 a first node second public key (P 2 c) based on the first node master public key (Pic) and the Generator Value (GV).
  • the public key is determined 430' as the private key with elliptic curve point multiplication with the base point (G)
  • the first node second public key (P 2 c) can be expressed, in a fashion similar to Equation 9, as:
  • Equations 12.1 and 12.2 The mathematical proof for Equations 12.1 and 12.2 is the same as those discussed above for Equations 10.1 and 10.2.
  • the second node 7 authenticating the first node 3 The method 400 may include steps performed by the second node 7 to authenticate that the alleged first node 3, is the first node 3. As discussed previously, this includes receiving 440 the first signed message (SMI) from the first node 3. The second node 7 may then validate 450 the signature on the first signed message (SMI) with the first node second public key (P 2 c) that was determined at step 430.
  • SMSI signed message
  • P 2 c public key
  • Verifying the digital signature may be done in accordance with an Elliptic Curve Digital Signature Algorithm (ECDSA) as discussed above.
  • EDSA Elliptic Curve Digital Signature Algorithm
  • the first signed message (SMI) that was signed with the first node second private key (V 2 c) should only be correctly verified with the corresponding first node second public key (P 2 c), since V 2 c and P 2 c form a cryptographic pair. Since these keys are deterministic on the first node master private key (Vic) and the first node master public key (Pic) that were generated at registration of the first node 3, verifying first signed message (SMI) can be used as a basis of authenticating that an alleged first node sending the first signed message (SMI) is the same first node 3 during registration.
  • the second node 7 may further perform the step of authenticating (460) the first node 3 based on the result of validating (450) the first signed message.
  • the second node 7 determining the common secret
  • the method 400 may further include the second node 7 determining 470 a second node second private key (V 2 s) based on the second node master private key (Vis) and the Generator Value (GV). Similar to step 330 performed by the first node 3, the second node second private key (V 2 s) can be based on a scalar addition of the second node master private key (Vis) and the Generator Value (GV)according to the following formulas:
  • V 2S Vis + GV (Equation 13.1)
  • V 2S Vis + SHA-256(M) (Equation 13.2)
  • the second node 7 may then, independent of the first node 3, determine 480 the common secret (CS) based on the second node second private key (V 2 s) and the first node second public key (P 2 c) based on the following formula:
  • the common secret (CS) determined by the first node 3 is the same as the common secret (CS) determined at the second node 7.
  • Equation 11 and Equation 14 provide the same common secret (CS) will now be described.
  • Equation 10.1 can be substituted into Equation 11 as follows:
  • Equation 14 Equation 14
  • Equation 15 Equation 15 and Equation 16 are equivalent, since:
  • the common secret (CS) may now be used as a secret key, or as the basis of a secret key in a symmetric-key algorithm for secure communication between the first node 3 and second node 7.
  • the common secret (CS) may be in the form of an elliptic curve point (xs, ys). This may be converted into a standard key format using standard publicly known operations agreed by the nodes 3, 7. For example, the xs value may be a 256-bit integer that could be used as a key for AES 2 56 encryption. It could also be converted into a 160-bit integer using RIPEMD160 for any applications requiring this length key.
  • the common secret (CS) may be determined as required. Importantly, the first node 3 does not need to store the common secret (CS) as this can be re-determined based on the message (M). In some examples, the message(s) (M) used may be stored in data store 13, 17, 19 (or other data store) without the same level of security as required for the master private keys. In some examples, the message (M) may be publicly available.
  • the common secret (CS) could be stored in the first data store (X) associated with the first node provided the common secret (CS) is kept as secure as the first node master private key (Vic).
  • this technique can be used to determine multiple common secrets that may correspond to multiple secure secret keys based on a single master key cryptography pair.
  • a series of successive Generator Values may be determined, where each successive GV may be determined based on the preceding Generator Value (GV). For example, instead of repeating steps 310 to 370 and 410 to 470 to generate successive single-purpose keys, by prior agreement between the nodes, the previously used Generator Value (GV) can be rehashed repeatedly by both parties to establish a hierarchy of
  • the Generator Value based on the hash of a message (M), can be a next generation message ( ⁇ ') for the next generation of Generator Value (GV). Doing this allows successive generations of shared secrets to be calculated without the need for further protocol-establishment transmissions, in particular transmission of multiple messages for each generation of common secrets.
  • the next generation common secret (CS') can be computed as follows.
  • both the first node 3 and the second node 7 independently determine the next generation of the Generator Value (GV). This is similar to steps 320 and 420 but adapted with the following formulas:
  • the first node 3 may then determine the next generation of the second node second public key (P2s') and the first node second private key (V 2 c') similar to steps 370 and 330 described above, but adapted with the following formulas:
  • V 2C ' Vic + GV (Equation 20.2)
  • the second node 7 may then determine the next generation of the first node second public key (P 2 c') and the second node second private key (V 2 s') similar to steps 430 and 470 described above, but adapted with the following formulas:
  • V 2S ' Vis + GV (Equation 21.2)
  • the first node 3 and the second node 7 may then each determine the next generation common secret (CS').
  • the first node 3 determines the next generation common secret (CS') with the formula:
  • the second node 7 determines the next generation common secret (CS') with the formula:
  • Tree structure of keys As well as a chain (linear) hierarchy as described above, a hierarchy in the form of a tree structure can be created.
  • a variety of keys for different purposes such as authentication keys, encryption keys, signing keys, payment keys, etc. may be determined whereby these keys are all linked to a single securely maintained master key.
  • Fig. 12 shows a tree structure 901 with a variety of different keys. Each of these can be used to create a shared secret with another party.
  • Tree branching can be accomplished in several ways, three of which are described below.
  • each new 'link' (Public/Private key pair) is created by adding a multiply rehashed Message to the original master key. For example, (showing only the private key of the first node 3 for clarity):
  • V 2C Vic + SHA-256(M) (Equation 24)
  • V 2C ' Vic + SHA-256(SHA-256(M)) (Equation 25)
  • V 2C " Vic + SHA-256(SHA-256(SHA-256(M))) (Equation 26)
  • any key can be used as a sub-master key.
  • V 2 c' can be used as a sub-master key (V 3 c) by adding the hash to it as is done for the regular master key:
  • V 3C V 2C ' + SHA-256(M) (Equation 27)
  • the sub-master key (V 3 c) may itself have a next generation key (V 3 c'), for example:
  • V 3C ' V 2C ' + SHA-256(SHA-256(M)) (Equation 28) This provides a tree structure 903 using the master key spawning method as shown in Fig. 13.
  • all the nodes in the tree (public/private key pairs) are generated as a chain (or in any other way) and the logical relationships between the nodes in the tree is maintained by a table in which each node in the tree is simply associated with its parent node in the tree using a pointer.
  • the pointer may be used to determine the relevant public/private key pairs for determining the common secret key (CS) for the session.
  • New private/public key pairs can be generated by introducing a new message at any point in the chain or tree.
  • the message itself may be arbitrary or may carry some meaning or function (e.g. it might be related to a 'real' bank account number, etc). It may be desirable that such new messages for forming the new private/public key pairs are securely retained. Codification Scheme
  • the metadata of the transaction may be used to access instructions stored in an off-block document. This document might be referred to as a 'contract' .
  • the metadata which is used to reference the contract can be formatted in a variety of ways. However, a suitable codification scheme is described here.
  • a contract is transferable if the rights it defines are conferred upon the holder or owner of the contract.
  • An example of a non-transferable contract is one in which the participants are named - that is, where the rights are conferred upon a specific named entity rather than the holder of the contract. Only transferable contracts are discussed in this codification scheme.
  • a token represents a specific contract that details or defines rights conferred by a contract.
  • the token is a representation of the contract in the form of a bitcoin transaction.
  • This codification method uses metadata comprising three parameters or data items. This data may be indicative of: i) an amount of shares available under the contract
  • a quantity of transfer units to be transferred from a sender to at least one recipient (this may be referred to herein as 'ShareVal'); and iii) a factor for calculating a value for the quantity of transfer units (this may be referred to herein as a 'pegging rate').
  • codification scheme An advantage of this codification scheme is that it can be used to encapsulate or represent contracts as tokens on a blockchain using only the three parameters described above. In effect, the contract can be specified using a minimum of these three data items.
  • this codification scheme can be used for any type of transferable contract, common algorithms can be devised and applied. Further detail of these metadata items is provided as follows.
  • a divisible token is one in which the value on a transaction output may be subdivided into smaller amounts allocated across multiple tokens (i.e. allocated across multiple transactions).
  • the archetype is tokenised fiat currency.
  • Divisible contracts are defined as those that specify a non-zero PeggingRate.
  • the tokenised value transferred in the transaction output is tied to the underlying bitcoin (BTC) value via the PeggingRate. That is, the contract specifies the holder's rights in terms of a pegging-rate. For non-divisible tokens there is no PeggingRate and the contract specifies the holder's rights in terms of a fixed value (e.g. like a bearer bond: 'this contract is redeemable for exactly $1000' or a voucher 'this contract is redeemable for one haircut'). For non-divisible contracts the underlying transaction BTC value is irrelevant to the contract value.
  • BTC bitcoin
  • Underlying BTC value refers to the bitcoin amount (BTC) attached to the transaction output.
  • BTC bitcoin amount
  • every transaction output must have non-zero BTC amount to be considered valid.
  • the BTC amount must be greater than a set minimum (known as 'dust') which, at the time of writing, is currently set to 546 satoshis.
  • 1 bitcoin is defined as being equal to 100 million satoshis.
  • the actual underlying BTC amount is arbitrary: the true value lies in the contract specification. In theory every token could be carried by dust.
  • the underlying BTC value does have a meaning: it bears a relationship to the contract value via a PeggingRate.
  • the PeggingRate is itself arbitrary and is chosen so as to keep the underlying BTC amount small.
  • the reason for using a PeggingRate rather than simply underlying every token transaction with dust is because the protocol of the present invention facilitates divisibility: when a token is split into several transaction outputs of smaller amounts it is not necessary to adjust the original contract. Rather, the contract value of each subdivided token is simply calculated based on the PeggingRate and the subdivided amount of underlying BTC value.
  • a limited token is one in which a total issuance value is fixed (or 'limited') by a fixed nonzero number of shares as defined by a quantity called NumShares. Therefore, no further shares may be issued under a limited contract.
  • a contract for part ownership of a race horse is limited to 100% of the race horse (e.g. 100 shares at 1% each or 10 shares at 10% each, etc.).
  • An unlimited contract implies that the issuer is able to underwrite further issuances of shares, for example by adding the required amount of fiat currency into their Reserve Account.
  • the archetypical example is a currency reserve (analogous to a gold reserve) such that the total value held in the reserve bank account matches the total value in promissory notes in existence (i.e. unredeemed tokens).
  • This concept extends beyond currency reserves to include stock inventory.
  • the original token could be subdivided and each subdivided token would be redeemable for a number of t-shirts according to the transaction output's underlying BTC value as defined by the PeggingRate.
  • PeggingRates only apply to divisible contracts, wherein the value of a share (represented by a quantity called ShareVal) is pegged to the underlying BTC amount. For example, the contract might specify that the issuer promises to redeem the token at a rate of $10,000 for every underlying 1 BTC.
  • a value of 0 for the PeggingRate indicates that the contract is non-divisible (i.e. can only be transferred whole, like a bearer bond).
  • the PeggingRate is set to 0 (meaning non- divisible token) the underlying BTC value is not relevant to the contract value and can be set at any amount. Normally in this case it is desirable to keep the underlying BTC amount as small as possible (i.e. set to dust) to minimise operating costs.
  • NumShares is the total (fixed) number of shares available under the (Limited) contract. For limited contracts NumShares must be a whole number greater than zero. For unlimited contracts NumShares is not fixed as more shares can be issued at any time (provided they are underwritten), which is denoted by setting the value to 0.
  • a share is defined as the unit of transfer and the ShareVal is the value of that unit.
  • the unit of transfer may be set to 1 cent. Or, for example, it may be set to 50 cents, in which case transfers may only be executed in 'lots' of 50 cents.
  • NumShares x ShareVal Totallssuance.
  • a value of 0 for Totallssuance implies it is an unlimited contract.
  • An example of an unlimited contract is fiat currency (so Totallssuance is set to 0);
  • the circulation is defined as the total value of unspent tokens (i.e. as determined by transactions in UTXO - unspent transaction output).
  • the present invention can utilise a suitably arranged computing resource (herein "agent") to perform automated aspects of a desired process.
  • agent a suitably arranged computing resource
  • An example of a suitable and preferable agent is provided below, although other implementations may be used.
  • the agent may operate in conjunction with the blockchain, using it as the non-erasable tape in the implementation of a Turing machine.
  • This agent runs in parallel with the blockchain network, overseeing and handling the execution of a (looping) process.
  • the looping process is designed to perform a given task such as, for example, the automation of a process or control of a device or system.
  • This parallel resource monitors the state of the blockchain and can cause transactions to be written to the blockchain. In one sense, it utilises the Blockchain as a non-erasable tape of the Turing Machine, with the following definitions and features:
  • Blockchain represents a cell on the tape. This cell can contain symbols from a finite alphabet.
  • the tape head can read information from the blocks that have already been written onto the Blockchain.
  • the tape head can write new blocks, containing many transactions, to the end of the Blockchain. However, they cannot write onto blocks that already exist. As such, the Blockchain tape is non-erasable.
  • Metadata for each transaction can be stored as part of a multi- signature pay-to- script-hash (P2SH) transaction.
  • P2SH multi- signature pay-to- script-hash
  • An important function of the agent is to act as an automated entity that monitors the current state of the Blockchain. It can also receive a signal or input from any off-block source. Depending on the Blockchain state and/or a received input, the agent may perform certain actions. The agent decides which action(s) are to be performed. These may or may not involve actions in the 'real world' (i.e. off block) and/or actions on the Blockchain (such as creating and broadcasting new transactions). The action that the agent takes may be triggered by the Blockchain state. The agent may also decide on the next set of
  • the agent's action(s) run in parallel and simultaneously to the Blockchain (eg Bitcoin) network. In a sense, this extends the function of blockchain (eg Bitcoin) script.
  • This continuous monitoring implements the 'loop' control-flow constructs making the combined agent and Blockchain system Turing Complete.
  • the Turing Machine includes two stacks:
  • Control stack This is represented by the agent function. This stores information relating to the repeat control-flow function.
  • control stack The separation of the control stack from the data stack provides the advantage of preventing infinite loops from occurring within the Bitcoin core, mitigating denial-of- service attacks.
  • the agent manages and runs subroutines that are able to loop via any type of loop construct (e.g. FOR-NEXT; REPEAT UNTIL; etc).
  • An illustrative embodiment described herein includes a process using one example of the 'repeat' construct.
  • the user may specify the index (z) and the limit (J). These represent the current iteration number (typically counted starting from 0) and the total number of iterations of the repeat loop respectively.
  • the action may be any action on or off the blockchain
  • a cryptographic hash of this subroutine is computed. This can be stored in the Blockchain as part of a transaction. Since the hash is unique to each code, it will enable verification of which code has been used
  • the body of the loop includes a code block.
  • Each code block contains a "If condition then action” (ICTA) statement. This monitors the current state of the Blockchain for transactions matching the:
  • Stop condition i.e. last iteration of the loop.
  • the ICTA statement enables the agent to decide on the next transaction to make, based on the current state of the blockchain. Making the next transaction involves broadcasting the transaction onto the Bitcoin network, and writing the new transaction onto the Blockchain. This acts as a record that this iteration has been executed. Once the transaction has been written onto the Blockchain, the Manager will subsequently find that the previous iteration has been executed and written onto the Blockchain, and will execute the next iteration. The latter continues until the repeat loop exits when the index (i) reaches the limit (J) specified in the code block.
  • each transaction is saved in the blockchain in a way that can be reused.
  • each signature in a transaction is appended with a SIGHASH flag. This flag can take on different values, each indicating whether other parts of the transaction can be amended without involvement of the owner of this signature.
  • a reusable transaction has the SIGHASH flag 'SigHash_AnyoneCanPay' in one of the transaction inputs. This permits anyone to contribute to the inputs of the transaction. This parameter enables the agent' s ICTA function to be executed and repeated multiple times and with different inputs. Use of the function can be restricted to authorised parties - for example, via copyright of the reusable transaction.
  • the 'If condition' section of the ICTA code block can monitor any type of condition. This is similar to other programming languages (e.g. C, C++, Java) and not limited to information stored on the Blockchain. For example, it could monitor the date and time (i.e. when a certain date and time are reached) or monitor the weather (i.e. when the
  • action' section of the ICTA code block can execute a number of actions.
  • the invention is not limited with regard to the number or type of actions that can be taken.
  • the action is not limited to a transaction on the Blockchain, although a transaction containing metadata related to the action may be written on the Blockchain.
  • the metadata can be of any form. However, in one embodiment, the metadata may store a hyperlink to a file containing more data or instructions relating to the action.
  • the metadata may store both a hyperlink to a hash table containing more data or instructions relating to the action along with a hash of the action that acts as the look-up key for the hash table.
  • the agent' s control stack can be implemented in a number of ways that are specific to the needs of each user. For example, the repeat loop of the control stack can be based on any Turing Complete language. One possible choice of language is the Forth style stack-based language. An advantage of using this language is that it keeps the control stack consistent in programming style with the Bitcoin scripts which are already known and in wide usage.
  • the Bitcoin script contains commands, also called op codes, which enable users to move data onto an alternative stack, known as the 'alt stack' .
  • the op codes are:
  • the alt stack is used for configuring bitcoin scripts to solve small computation tasks and returning the results in the computation.
  • the agent also manages a registry of all the codes that it owns and runs.
  • This registry is structured like a lookup table or dictionary that maps a specific key to a specific value.
  • the key and value pair is represented by the hash of the code block (Hi) and the IPv6 address of where the code is stored respectively.
  • Hi hash of the code block
  • IPv6 address of where the code is stored respectively.
  • the lookup table is used to retrieve the associated value (this is the location where the code is stored) and retrieves the source code accordingly.
  • the implementation of the code registry can vary.
  • Information required to respawn the agent's loop at a particular iteration is stored as metadata in the transaction recorded on the Blockchain.
  • a transaction on the blockchain stores or provides access to information about a given iteration of the loop which is being executed on the agent.
  • This information can include the values of any variables associated with the loop, such as index i, and any other necessary information such as values for parameters used in the code block or location- related data specifying where further required information can be accessed.
  • the metadata itself is stored as part of a multi- signature pay-to- script-hash script (P2SH) in the transaction.
  • P2SH multi- signature pay-to- script-hash script
  • the agent could respawn the repeat loop code block at each iteration.
  • the code block might be hard-coded into the agent itself, or could be stored in a private or publicly available file, or stored as an entry on a private or public hash table file, or a combination of the above.
  • the code block could be static with hard-coded variables or could be static but contain parameter(s) that can be populated.
  • the parameters could be single values of any data format, or could be small chunks of code, or be combinations of the above.
  • the parameters could be populated by retrieving them directly from metadata in a transaction (e.g. bitcoin transaction) or from an external source such as an internal database or a private/public file or hash table or any combination of the above. Pointers to the external source of parameter values might be stored in metadata in a transaction.
  • the code registry is a hash table whereby the hash values act as look-up keys for the table and are stored in metadata on transactions.
  • the agent monitors the Blockchain for transactions that contain hashes of the code block that matches entries in the code registry.
  • the agent finds a transaction that contains the corresponding hash (Hi).
  • the agent reads the 'Metadata-CodeHash', gets the CodeHash field to get Hi and uses it to retrieve the code (Ci). If RIPEMD-160(SHA256(Ci)) equals Hi, the code has not been changed and it is safe to proceed to the next step.
  • the agent reads the 'Metadata-CodeHash' which stores the index /, and respawns the code at the z* iteration. In other words, the loop is 'reloaded' at the appropriate iteration

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • General Health & Medical Sciences (AREA)
  • Development Economics (AREA)
  • Health & Medical Sciences (AREA)
  • Educational Administration (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Game Theory and Decision Science (AREA)
  • Bioethics (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Power Engineering (AREA)
  • Environmental Sciences (AREA)
  • Birds (AREA)
  • Animal Husbandry (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Medical Informatics (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

The invention provides a generic operating system for coordinating, controlling and/or influencing the activities of a device. The invention is implemented using a blockchain platform with which the operating system is arranged to interact. The blockchain may be the Bitcoin blockchain. In a preferred embodiment, the device is an Internet of Things (IOT) device. The invention provides a computer-implemented control system and corresponding method for controlling a device, the system comprising a device configured for wireless communication with a network and having an IP address and a public-private key cryptographic key pair associated with the device; a software-implemented control component arranged to monitor the state of a blockchain network and/or transmit blockchain Transactions to the blockchain network; and a set of instructions arranged for execution by the control component to control the functionality of the device. The control component is arranged to access the set of instructions from a stored location which is separate to the device. The instructions may be stored in a Distributed Hash Table (DHT) and accessed for download and installation by the control component from the DHT as and when needed. The location of the DHT and/or instructions may be indicated or provided using metadata provided within a blockchain transaction. The set of instructions may be accessed by the control component using a look-up key which is related to a cryptographic key pair. The control component is provided on or in the device, or in other embodiments can be provided in an off-device location and arranged for wireless communication with the device.

Description

Operating System for Blockchain IQT devices
This invention relates generally to distributed ledger (blockchain) technology. This may be any blockchain-related technology, including (but not limited to) the Bitcoin
Blockchain. Aspects of the invention relate also to the Internet of Things (IoT). The invention may be suited for controlling an IoT device.
In this document we use the term 'blockchain' to include all forms of electronic, computer- based, distributed ledgers. These include consensus-based blockchain and transaction- chain technologies, permissioned and un-permissioned ledgers, shared ledgers, side chains and alt chains, and variations thereof. The most widely known application of blockchain technology is the Bitcoin ledger, although other blockchain implementations have been proposed and developed. While Bitcoin may be referred to herein for the purpose of convenience and illustration, it should be noted that the invention is not limited to use with the Bitcoin blockchain and alternative blockchain implementations and protocols fall within the scope of the present invention. The term "user" may refer herein to a human or a processor-based resource.
A blockchain is a peer-to-peer, electronic ledger which is implemented as a computer- based decentralised, distributed system made up of blocks which in turn are made up of transactions. Each transaction is a data structure that encodes the transfer of control of a digital asset between participants in the blockchain system, and includes at least one input and at least one output. Each block contains a hash of the previous block to that blocks become chained together to create a permanent, unalterable record of all transactions which have been written to the blockchain since its inception. Transactions contain small programs known as scripts embedded into their inputs and outputs, which specify how and by whom the outputs of the transactions can be accessed. On the Bitcoin platform, these scripts are written using a stack-based scripting language. In order for a transaction to be written to the blockchain, it must be 'validated'. Network nodes (miners) perform work to ensure that each transaction is valid, with invalid transactions being rejected by the network. Software clients installed on the nodes perform this validation work on an unspent transaction (UTXO) by executing its locking and unlocking scripts. If execution of the locking and unlocking scripts evaluates to TRUE, the transaction is valid. Many of the commands in the scripting language return Boolean values (e.g. OP-EQUAL) which enables conditionality to be built into blockchain transactions.
Blockchain technology is most widely known for the use of cryptocurrency
implementation. However, in more recent times, digital entrepreneurs have begun exploring both the use of the cryptographic security system Bitcoin is based on, and the data that can be stored on the Blockchain, to implement new systems. The present invention relates to one such new and inventive use of blockchain technology.
In particular, it relates to the use of a blockchain to implement simple yet effective and powerful mechanisms for the creating a wide and varied range of computer-implemented systems. Such systems can include control units and control systems for automating and controlling processes and/or directing the behaviour of devices.
Such devices may include IOT devices. IOT devices are embedded with electronic circuits, software, sensors, and networking capabilities etc. to enable them to communicate with other devices and systems, often via wireless means, and to perform desired tasks. In some cases, they may be extremely small and contain only limited processing and memory capacity. This poses a problem if the software required for the device's task is large and complex. Furthermore, as the software and hardware needed to provide the IoT
connectivity and intelligence is provided on or in the device itself, its installation, maintenance and upgrade etc become more difficult and expensive. Further still, the excitement in recent years over the IOT's potential has been tempered with concerns regarding security.
Prior art disclosure "ADEPT: An IoT Practitioner Perspective" of January 2015 discloses an approach to integrating blockchain technology with IoT devices. At the time of filing,
Figure imgf000005_0001
This disclosure
(hereafter "ADEPT"') describes a washing machine device managed by a contract and communicating, via a blockchain, with a retailer to purchase supplies upon satisfying the condition of "running low on detergent".
However, while ADEPT discloses how an IoT system could operate against the
blockchain, there is no address of the problem of how such a system could be arranged, configured or technically influenced using the blockchain. In other words, while ADEPT explains how software on the IoT could interact autonomously with the blockchain, there is no discussion or disclosure of how one could get the software onto the device in the first instance or, moreover, how one could then change the behaviour of that device during use/operation/deployment.
Thus, it would be an advantage to have an operating system that is generic (i.e. non device specific) yet small enough to be loaded into any device while retaining strong
cybersecurity. Preferably, such an operating system would provide dynamic functionality for the device, rather than static functionality. In other words, it would be a significant technical advantage if one could alter the configuration, set-up and functionality of the device(s) in a simple, efficient and dynamic manner. Such a technical solution is not address in the prior art such as ADEPT. A further advantage over known prior art would be the capability of enabling a simple, secure and robust control functionality including the possibility of processing payments for services provided by the device. The present invention addresses these goals, and others, by interfacing IOTs to a Blockchain protocol such as, for example, the Bitcoin protocol.
Thus, in accordance with the present invention there is provided a system and method as defined in the appended claims.
The invention may provide a computer-implemented system and method. It may be described as a control method because it controls, directs and/or influences the activities of one or more devices. The invention may be described as an operating system. It may be software-implemented. It may comprise an operating system for coordinating, controlling and/or influencing the activities of at least one device. The operating system may be generic in the sense that it is independent of the device which it controls. The invention may be implemented using a blockchain platform with which the operating system ("control component") is arranged to interact. The blockchain may be the Bitcoin blockchain. In a preferred embodiment, the device is an Internet of Things (IOT) device.
The invention may provide a computer-implemented control system for controlling a device. The system may comprise:
a device configured for wireless communication with a network and having an IP address and a public-private key cryptographic key pair associated with the device; a software-implemented control component arranged to monitor the state of a blockchain network and/or transmit blockchain Transactions to the blockchain network; and/or
a set of instructions arranged for execution by the control component to control the functionality of the device.
The control component may be arranged to access the set of instructions from a stored location which is separate to the device i.e. "off device".
The control component may be arranged to receive an input signal from an input source. The input source may be:
a further device; and/or
a computer-based resource or agent. The computer-based agent or resource may be substantially as described below.
The set of instructions may be stored in a Distributed Hash Table (DHT) and accessed for download and installation by the control component from the DHT. An advantage of this is that it provides the ability to change the instructions (and thus the functionality of the device). The location of the DHT may be indicated or provided using metadata provided within a blockchain transaction. An advantage of this is that the location of the instructions is recorded immutably within the blockchain. A permanent and tamper-proof record is therefore provided, and the location can be verified by any party with access to the blockchain. Thus, security and verification are enhanced.
The set of instructions may be accessed by the control component using a look-up key which is related to a cryptographic key pair. The control component may be provided on or in the device. It may be provided in an off- device location and arranged for wireless communication with the device.
The control component may be arranged to:
Perform cryptographic calculations;
Access its associated private/public key pair;
have an associated Bitcoin or other blockchain-related address;
operate the device via an API;
perform secret sharing protocol operations. This may be in accordance with a secret sharing protocol substantially as described below.
The control component may be arranged to influence or control the activities of the device(s) based upon detection of a valid blockchain transaction.
The invention may provide a system and/or method substantially as described below.
The invention may provide a computer-implemented control method arranged to control a device, or a plurality of devices. The method may comprise the steps:
providing a device configured for (wireless) communication with a network and having an IP address and a public -private key cryptographic key pair associated with the device; providing a software-implemented control component arranged to monitor the state of a blockchain network and/or transmit blockchain Transactions to the blockchain network;
providing a set of instructions arranged for execution by the control component to control the functionality of the device.
The control component may be arranged to access the set of instructions from a stored location which is separate to the device. The control component may be arranged to receive an input signal from an input source, wherein the input source may be:
a further device; and/or
a computer-based resource or agent.
The set of instructions may be stored in a Distributed Hash Table (DHT) and accessed for download and installation by the control component from the DHT.
The location of the DHT may be indicated or provided using metadata provided within a blockchain transaction. The set of instructions may be accessed by the control component using a look-up key which is related to a cryptographic key pair. The control component may be provided on or in the device. It may be provided in an off-device location and arranged for wireless communication with the device.
The control component may be arranged to:
Perform cryptographic calculations;
Access its associated private/public key pair;
have an associated Bitcoin or other blockchain-related address;
operate the device via an API;
perform secret sharing protocol operations. The control component may be arranged to influence or control the activities of the device based upon detection of a valid blockchain transaction. Any feature described in relation to one embodiment or aspect of the invention may also apply to any other feature or embodiment of the invention. For example, any feature mentioned in relation to the system may apply to the method and vice versa. These and other aspects of the present invention will be apparent from and elucidated with reference to, the embodiment described herein. An embodiment of the present invention will now be described, by way of example only, and with reference to the accompany drawings, in which: Figure 1 illustrates a system configured in accordance with an embodiment of the invention and in relation to an illustrative use case;
Figure 2 illustrates a truth table for the control system of figure 1; Figure 3 illustrates the steps in the processing of the unlocking transaction for the example of figure 1 ; and
Figures 4 to 8 illustrate a technique which can be used to share a secret and generate a public or private key.
Figures 9 to 11 show aspects of an implementation wherein the locking script of a blockchain transaction is used to implement the functionality of a logic gate.
Figure 9 shows an overview of a technique in which two Boolean inputs A and B are evaluated within the locking script of a first transaction to produce a Boolean output X.
Figure 10 shows an overview of a technique for implementing a logic gate using first and second blockchain transactions. Figure 11 illustrates a process in which the locking script of a blockchain transaction is used to implement the functionality of a logic gate. The present invention provides the following advantages, amongst others:
• It provides an Operating System which is purposefully 'thin' (small size in respect of memory and/or processing requirements) and which can, therefore, be implemented on any IOT device
· It can be easily 'upgraded' as device- specific functionality is not hard-coded into the device, but rather loaded in from a secure repository such as a Distributed Hash Table (DHT); this is a significant technical improvement over the prior art, which does not facilitate dynamic configuration;
• It can be controlled and managed by autonomous computing Agents (either than software which is resident on the IOT device or external thereto)
• As it interfaces with the Blockchain e.g. Bitcoin platform this enables the
integration of payment processing functionality
• It provides robust security based on blockchain cryptography such as the bitcoin ECC.
A Blockchain IOT Device (BID) is a computing Agent that is set up to execute predetermined instructions which are stored securely off-BID and accessed via cryptographic keys. By 'off-BID' we mean that the instructions are not provided within the BID itself, but are stored elsewhere and accessed as and when required. These instructions are selected and arranged to perform a chosen task or plurality of tasks. When executed, the instructions can control and influence the behaviour of the IOT device. In a preferred embodiment the BID resides on the IOT itself, meaning that the BID is installed in memory provided in or on the ITO device. However, in other embodiments the BID may reside off-device and have internet connectivity to the device.
The IOT device has its own cryptographic key (as well as an IP address) so it can securely communicate and interact with other devices or DHTs, etc. Its 'operating system' is a simple, generic system with some embedded functionality for (at least, but not limited to):
• cryptographic calculations
· retrieving instructions from an external source (such as a DHT)
• performing simple actions such as toggling switches (i.e. as on the physical IOT device) Thus, neither the IOT device nor its associated BID contain their own built-in instructions and neither 'knows' what it does or how to do it. The BID only contains a mechanism for securely retrieving instructions from elsewhere. A BID can only perform a set of simple actions (the following are illustrative only and not limiting):
• Access to its own master private and public key pair; it also has its own (derivable) BTC address.
• Ability to send data to an IP address or receive data from an IP address
• Secret Sharing protocol calculations (as described below) - in a preferred
embodiment these may be embedded in machine code
• Look up and interpret Blockchain events
• Operate and control the physical device it is attached to (via a standard API that is essentially just a set of switches)
The BID's incoming and outgoing communications are encrypted using a security mechanism as described below, which enables keys to be created using shared secrets. This allows:
(i) greater security from 'hacking'
(ii) simple universal software upgrade protocols
(iii) device agnosticism
The invention, therefore provides a generic operating system which is usable in any IOT device. The device itself is not programmed - all programs are stored separately and loaded into the device at set-up time (or, in some embodiments, at execution time).
Example Use of the Invention
The following illustrative example relates to the use of an embodiment of the invention for the control of an Auto-feeder IOT device. It is provided for illustrative purposes only, as an example of how one implementation of the invention may be used.
Turning to Figure 1, system 100 comprises first and second client devices, respectively enumerated as 102a and 102b, and a BID control system 104 which is operative to receive inputs from the first 102a and second 102b client devices and to transmit information to first 102a and second 102b client devices. In this example use case, first and second client devices 102a, 102b are radio frequency identification devices (RFIDs) which are detectable by BID control system 104. Control system 104 is operative to use a blockchain and is operative to transmit outputs to a blockchain.
We will describe how control system 104 works using an example of Carol's two dogs, named Archimedes (A) and Bertrand (B), who are left alone all day in the back yard and they are both friendly to each other provided they do not eat at the same time, which for some reason causes them to become aggressive and fight each other. A and B both have identifying RFID collars i.e. first RFID collar 102a and second RFID collar 102b, which are detectable by an Internet Of Things (IOT) device 101. This IOT device is an auto- feeder which dispenses specified quantities of food for consumption by one of the dogs, i.e. the BID control system 104 controls the operation of the IOT feeding device.
In this example, the BID 104 is a software resource or component which is provided on the IOT auto-feeder and interfaces with the feeder to control its functions.
The BID begins its life by downloading and installing its instructions from the DHT. It does not need to do this again until those instructions are modified. This might be, for example, when the BID needs to be upgraded or when the BID's behaviour is to be completely modified e.g its instruction set might be modified to detect three or more RFID signal. The Control Agent uses the values transmitted by the BID to create a blockchain transaction, and also shares new secrets with the BID after each iteration as explained below.
The functionality of the BID control system 104 is implemented using a blockchain transaction which is locked using the locking script:
OP_HASH160 <unlocking script hash> OP_EQUAL Transactions are created to provide (via metadata linking to a distributed hash table (DHT)) a set of instructions to control the IOT auto-feeder device and may include instructions to a computing resource established in accordance with what is described below. The metadata can include a pointer or reference to a location where the instructions can be accessed, rather than storing the instructions within the transaction itself. Thus, the instructions may be held Off-block' .
The Blockchain provides not only a mechanism for controlling activities but also to record information about events that have taken place e.g. it provides the ability to count the number of feedings, what time they occurred, which dog ate, whether maximum food allocation has been dispensed, etc.. It also provides cryptographic security.
An important function of the transaction is to ensure that food is dispensed only if one dog is present at the feeder at the same time. Therefore, some conditionality needs to be built into the transaction's script. This is achieved with an XOR function as per the truth table illustrated in Figure 2 and with reference to figures 9 to 11:
• if neither A nor B are at the feeder, do not dispense food
• if A is at the feeder but not B, dispense food;
· if B is at the feeder but not A, dispense food;
• if both A and B are at the feeder, do not dispense food.
When A or B are at the feeder an RFID signal is transmitted to the auto-feeder' s control system 104, from the respective client device, i.e. first RFID collar 102a or second RFID collar 102b, to unlock that dog's secure current puzzle solution (which is securely replaced with a new puzzle solution after each iteration). If A or B are not at the feeder, a random number is instead transmitted from the respective RFID collar to the feeder. In other words, a dog being 'at the feeder' means its RFID collar is within detectable range of the feeder. If this is the case, the relevant puzzle is unlocked for transmission. If not, the default is a random number. As is known in the art, a puzzle solution is data which, when hashed, results in a value that provides a match when compared with the stored value within a (bitcoin) script. That is, the process is: a secret value (the 'solution') is hashed and stored within a locking script for later comparison. To unlock the locking script the secret is presented to the script via an unlocking (redeem). The presented value is hashed and then compared with the stored hash. If the comparison determines that they are equal then the result of the comparison is 'TRUE' . In practice, the stored value is the DOUBLE -hash of the secret, and the value presented is a SINGLE-hash of the secret. This enables any length of secret to be reduced to a standard manageable size for input to the script (i.e. always 160 bits long).
The Auto-feeder BID executes its instructions which were retrieved from a DHT using a look-up key that is related to the BID's key/pair. The Control Agent manages the data flow to/from the BID (i.e. data relating to the RFID signals, not related to the BID's instruction set). Thus, the Auto-feeder BID monitors its own state. It stores two secret values (S I and S2) received from the separate Control Agent 103. The Control Agent 103 can be a suitably programmed computing resource arranged to oversee the feeding process. The secret values S I and S2 are used conditionally when the dogs' RFID collars are detected within range. Based on its instructions as retrieved from the appropriate DHT, on detection of an RFID within range (along with other conditions related to the time of day; number of previous feedings; other restrictions; etc.) it sends a signal to a Generic Agent acting as its Control Agent (see below). The signal includes:
• S I (= Puzzle- A-Solution) if Archimedes' RFID is detected else Random Number
• S2 (= Puzzle-B- Solution) if Bertrand's RFID is detected else Random Number The Auto-Feeder BID then:
• The Autofeeder checks for a valid transaction on the network (which may or may not yet be published on a Block, but which must be a valid transaction). This transaction is created and broadcast by the Control Agent. It is valid if the embedded XOR test has passed. If not passed, then it will be invalid and will not be propagated beyond the first hop on the network. Thus it will not be detected by the
BID. Or, if the BID is on the first hop and therefore the transaction is detected, part of the BID's function (as for any other node) is to validate the transaction. So it will be able to detect if the transaction is valid before it takes it consequent action. The valid transaction also guarantees that the required information has been stored and recorded on the blockchain i.e. regarding the feeding event.
• If the above answer is TRUE then the BID performs its conditioned instruction - in this case, it dispenses some food
• Receives a transmission from the Control Agent 103 enabling it to share two
secrets (S 1 and S2, as per below) and internally updates these secret values ready for next iteration. The locking script for the Bitcoin transaction is given by:
OP_HASH160 <Puzzle-A> OP_EQUAL OP_SWAP
OP_HASH160 <Puzzle-B> OP_EQUAL
OP_NUMEQUAL OP_NOT OP_VERIFY
OP_l metadatal PubK-Carol OP_2 OP_CHECKMULTSIG
Where:
Puzzle-A is the equivalent result of OP_HASH160(Puzzle- A- Solution)
Puzzle-B is the equivalent result of OP_HASH160(Puzzle-B- Solution)
Metadatal Contains a reference to codified instructions stored in a DHT.
PubK-Carol is Carol's public key
Note that the Agent's programming may be hard coded or it too may retrieve its own instructions from a DHT.
The codified instructions may be stored and accessed in accordance with the procedure set out below for referencing a contract from a blockchain transaction using metadata.
Carol's public key may be securely held or recreatable using the process set out below. In order to unlock the illustrative blockchain transaction shown above, the following script will be required:
Sig-Carol Puzzle-B-solution Puzzle-A- Solution <unlocking script> We refer to Figure 3 for an illustration of the following steps. Control system 104 is operative to hash the presented puzzle- A solution and compare it with a stored version of puzzle-A (in which the version is a hash of the solution) that is retrieved from storage in step S300. The stored version of puzzle-A may be stored in storage local to the control system 104 or on any other suitable storage medium. If they are equal then the top of stack = 1 and if they are different the top of stack = 0.
The top of stack is then swapped with the second item on the stack which is puzzle-B solution in a step S302. This is hashed and compared with a stored version of puzzle-B which is retrieved from storage, again pushing 1 or 0 onto the top of the stack in a similar vein to the outcome from S300. The stored version of puzzle-B may be stored in storage local to the control system 104 or on any other suitable storage medium.
At this point the top two stack items are each either 0 or 1. In step S304 OP_NUMEQUAL then returns 1 if the numbers are equal, 0 otherwise, which is the exact reverse of the XOR truth table.
In step S306, OP_NOT then flips the top item on the stack to produce the required XOR result. In step S308, OP_VERIFY then checks if the item on the top of the stack is 1 and if not, i.e. if the XOR operation has failed, the transaction is immediately marked as invalid as more than a single input from the first and second client devices has returned a matching puzzle solution. The result of this is that no food is dispensed from the IOT dispenser as more than a single dog is at the IOT dispenser. That is to say, the output of the control system 104 is controlled by the execution of the underlying Bitcoin transaction.
If OP_VERIFY returns 1 then the processing in control system 104 returns to the multi-sig part of the script where the presence of the signature of Carole is checked in step S310. The stack operations performed by control system 104 in analysing the unlocking script are shown below. Firstly, control system 104 hashes the unlocking script to compare the hash with the hash of the unlocking script using OP_EQUAL. Following this, the unlocking script is then executed.
Stack Script Description
Empty Sig-Carol Puzzle-ES-solution
Puzzle-A-Solution
OP_HASH160 <Puzzle-A>
OP_EQUAL OP_SWAP
OP_HASH160 <Puzzle-B>
OP_EQUAL
OP_NUM EQUAL OP_NOT OP_VERIFY
OP_l metadatal PubK-Carol OP_2
OP CHECKMULTSIG
Sig-Carol Puzzle-ES-solution OP_HASH160 <Puzzle-A> data added to the stack
Puzzle-A-Solution OP_EQUAL OP_SWAP
OP_HASH160 <Puzzle-B>
OP_EQUAL
OP_NUM EQUAL OP_NOT OP_VERIFY
OP_l metadatal PubK-Carol OP_2
OP CHECKMULTSIG
Sig-Carol Puzzle-ES-solution <Puzzle-A> The top stack item is hashed Puzzle-A-Solution-hashed OP_EQUAL OP_SWAP
OP_HASH160 <Puzzle-B>
OP_EQUAL
OP_NUM EQUAL OP_NOT OP_VERIFY
OP_l metadatal PubK-Carol OP_2
OP CHECKMULTSIG
Sig-Carol Puzzle-ES-solution OP_EQUAL OP_SWAP The given hash (puzzle-A) is pushed Puzzle-A-Solution-hashed <Puzzle-A> OP_HASH160 <Puzzle-B> to the top of the stack
OP_EQUAL
OP_NUMEQUAL OP_NOT OP_VERIFY
OP_l metadatal PubK-Carol OP_2
OP CHECKMULTSIG
Sig-Carol Puzzle-ES-solution FALSE OP_SWAP The top two items are compared and
OP_HASH160 <Puzzle-B> the result (FALSE) pushed to the top OP_EQUAL of the stack
OP_NUMEQUAL OP_NOT OP_VERIFY
OP_l metadatal PubK-Carol OP_2
OP CHECKMULTSIG
Sig-Carol FALSE Puzzle-ES-solution OP_HASH160 <Puzzle-B> The two top stack items are swapped
OP_EQUAL
OP_NUMEQUAL OP_NOT OP_VERIFY
OP_l metadatal PubK-Carol OP_2
OP CHECKMULTSIG
Sig-Carol FALSE <Puzzle-B> The top stack item is hashed
Puzzle- B-solution-hashed OP_EQUAL
OP_NUMEQUAL OP_NOT OP_VERIFY
OP_l metadatal PubK-Carol OP_2
OP CHECKMULTSIG
Sig-Carol FALSE OP_EQUAL The given hash (puzzle-B) is pushed to
Puzzle-ES-solution-hashed <Puzzle-ES> OP_NUMEQUAL OP_NOT OP_VERIFY the top of the stack
OP_l metadatal PubK-Carol OP_2
OP CHECKMULTSIG
Sig-Carol FALSE TRUE OP_NUMEQUAL OP_NOT OP_ VERIFY The top two items are compared and
OP_l metadatal PubK-Carol OP_2 the result (TRUE) pushed to the top of OP CHECKMULTSIG the stack
Sig-Carol FALSE OP_NOT OP_VERIFY The top two numbers (0 or 1) are
OP 1 metadatal PubK-Carol OP 2 compared and the result (FALSE) OP_CHECKMULTSIG pushed to the top of the stack
Sig-Carol TRUE OP_VERIFY The top stack item is flipped (from
OP_l metadatal PubK-Carol OP_2 FALSE=0 to TRUE=1)
OP_CHECKMULTSIG
Sig-Carol OP_l metadatal PubK-Carol OP_2 Top stack item is verified. As it is
OP_CHECKMULTSIG TRUE, the transaction is not (yet) marked invalid and the script continues
TRUE Empty Multi-sig is checked and passes.
Creating a Key Using a Shared Secret
A key may be securely held or recreated. Particularly, in the case of a private key which may be used to derive a public key, the private key may be stored in parts.
The user, i.e. Alice or Bob, may keep one part of their private key, a service provider may keep a second part and a third part may be kept at a remote secure site. The private key may be reconstituted using any two of the three parts, or, more generally, the private key may be reconstituted using any m of n parts.
If the private key can be reconstituted then it can be used to recreate a public key at the point of use and then the private key and the public key can be discarded again after use.
Splitting private keys may be achieved using Shamir's Secret Sharing Scheme. Private key-public key pairs may be deterministically derived from a master key using the following method. This method enables secret values to be shared by participants without ever transmitting them.
The system may generate a public key for a participant using a method of sub-key generation as now described.
Figure 4 illustrates a system 1 that includes a first node 3 which is in communication with a second node 7 over a communications network 5. The first node 3 has an associated first processing device 23 and the second node 5 has an associated second processing device 27. The first and second nodes 3, 7 may include an electronic device, such as a computer, phone, tablet computer, mobile communication device, computer server etc. In one example, the first node 3 may be a client (user) device and the second node 7 may be a server. The server may be a digital wallet provider's server.
The first node 3 is associated with a first asymmetric cryptography pair having a first node master private key (Vic) and a first node master public key (Pic). The second node (7) is associated with a second asymmetric cryptography pair having a second node master private key (Vis) and a second node master public key (Pis). In other words, the first and second nodes are each in possession of respective public -private key pairs. The first and second asymmetric cryptography pairs for the respective first and second nodes 3, 7 may be generated during a registration process, such as registration for a wallet. The public key for each node may be shared publicly, such as over communications network 5. To determine a common secret (CS) at both the first node 3 and second node 7, the nodes 3, 7 perform steps of respective methods 300, 400 without communicating private keys over the communications network 5.
The method 300 performed by the first node 3 includes determining 330 a first node second private key (V2c) based on at least the first node master private key (Vic) and a Generator Value (GV). The Generator Value may be based on a message (M) that is a shared between the first and second nodes, which may include sharing the message over the communications network 5 as described in further detail below. The method 300 also includes determining 370 a second node second public key (P2s) based on at least the second node master public key (Pis) and the Generator Value (GV). The method 300 includes determining 380 the common secret (CS) based on the first node second private key (V2c) and the second node second public key (P2s).
Importantly, the same common secret (CS) can also be determined at the second node 7 by method 400. The method 400 includes determining 430 a first node second public key (P2c) based on the first node master public key (Pic) and the Generator Value (GV). The method 400 further include determining 470 a second node second private key (V2s) based on the second node master private key (Vis) and the Generator Value (GV). The method 400 includes determining 480 the common secret (CS) based on the second node second private key (V2s) and the first node second public key (P2c). The communications network 5 may include a local area network, a wide area network, cellular networks, radio communication network, the internet, etc. These networks, where data may be transmitted via communications medium such as electrical wire, fibre optic, or wirelessly may be susceptible to eavesdropping, such as by an eavesdropper 11. The method 300, 400 may allow the first node 3 and second node 7 to both independently determine a common secret without transmitting the common secret over the
communications network 5.
Thus one advantage is that the common secret (CS) may be determined securely and independently by each node without having to transmit a private key over a potentially unsecure communications network 5. In turn, the common secret may be used as a secret key (or as the basis of a secret key).
The methods 300, 400 may include additional steps. See Figure 8. The method 300 may include, at the first node 3, generating a signed message (SMI) based on the message (M) and the first node second private key (V2c). The method 300 further includes sending 360 the first signed message (SMI), over the communications network, to the second node 7. In turn, the second node 7 may perform the steps of receiving 440 the first signed message (SMI). The method 400 also includes the step of validating 450 the first signed message (SM2) with the first node second public key (P2c) and authenticating 460 the first node 3 based on the result of validating the first signed message (SMI). Advantageously, this allows the second node 7 to authenticate that the purported first node (where the first signed message was generated) is the first node 3. This is based on the assumption that only the first node 3 has access to the first node master private key (Vic) and therefore only the first node 3 can determine the first node second private key (V2c) for generating the first signed message (SMI). It is to be appreciated that similarly, a second signed message (SM2) can be generated at the second node 7 and sent to the first node 3 such that the first node 3 can authenticate the second node 7, such as in a peer-to-peer scenario. Sharing the message (M) between the first and second nodes may be achieved in a variety of ways. In one example, the message may be generated at the first node 3 which is then sent, over the communications network 5, the second node 7. Alternatively, the message may be generated at the second node 7 and then sent, over the communications network 5, to the second node 7. In some examples, the message (M) may be public and therefore may be transmitted over an unsecure network 5. One or more messages (M) may be stored in a data store 13, 17, 19. The skilled person will realise that sharing of the message can be achieved in a variety of ways.
Advantageously, a record to allow recreation of the common secret (CS) may be kept without the record by itself having to be stored privately or transmitted securely.
Method of registration 100, 200
An example of a method of registration 100, 200 will be described with reference to Figure 6, where method 100 is performed by the first node 3 and method 200 is performed by the second node 7. This includes establishing the first and second asymmetric cryptography pairs for the respective first and second nodes 3, 7. The asymmetric cryptography pairs include associated private and public keys, such as those used in public -key encryption. In this example, the asymmetric cryptography pairs are generated using Elliptic Curve Cryptography (ECC) and properties of elliptic curve operations. In the method 100, 200, this includes the first and second nodes agreeing 110, 210 on a common ECC system and using a base point (G). (Note: the base point could be referred to as a Common Generator, but the term 'base point' is used to avoid confusion with the Generator Value GV). In one example, the common ECC system may be based on secp256Kl which is an ECC system used by Bitcoin. The base point (G) may be selected, randomly generated, or assigned. Turning now to the first node 3, the method 100 includes settling 110 on the common ECC system and base point (G). This may include receiving the common ECC system and base point from the second node 7, or a third node 9. Alternatively, a user interface 15 may be associated with the first node 3, whereby a user may selectively provide the common ECC system and/or base point (G). In yet another alternative one or both of the common ECC system and/or base point (G) may be randomly selected by the first node 3. The first node 3 may send, over the communications network 5, a notice indicative of using the common ECC system with a base point (G) to the second node 7. In turn, the second node 7 may settle 210 by sending a notice indicative of an acknowledgment to using the common ECC system and base point (G).
The method 100 also includes the first node 3 generating 120 a first asymmetric cryptography pair that includes the first node master private key (Vic) and the first node master public key (Pic). This includes generating the first master private key (Vic) based, at least in part, on a random integer in an allowable range specified in the common ECC system. This also includes determining the first node master public key (Pic) based on elliptic curve point multiplication of the first node master private key (Pic) and the base point (G) according to the formula:
Pic = Vic x G (Equation 1)
Thus the first asymmetric cryptography pair includes:
Vic : The first node master private key that is kept secret by the first node.
Pic: The first node master public key that is made publicly known. The first node 3 may store the first node master private key (Vic) and the first node master public key (Pic) in a first data store 13 associated with the first node 3. For security, the first node master private key (Vic) may be stored in a secure portion of the first data store 13 to ensure the key remains private. The method 100 further includes sending 130 the first node master public key (Pic), over the communications network 5, to the second node 7, as shown in figure 6. The second node 7 may, on receiving 220 the first node master public key (Pic), store 230 the first node master public key (Pic) in a second data store 17 associated with the second node 7.
Similar to the first node 3, the method 200 of the second 7 includes generating 240 a second asymmetric cryptography pair that includes the second node master private key (Vis) and the second node master public key (Pis). The second node master private key (Vis) is also a random integer within the allowable range. In turn, the second node master public key (Pis) is determined by the following formula:
Pis = Vis x G (Equation 2)
Thus the second asymmetric cryptography pair includes:
Vis : The second node master private key that is kept secret by the second node. Pis: The second node master public key that is made publicly known. The second node 7 may store the second asymmetric cryptography pair in the second data store 17. The method 200 further includes sending 250 the second node master public key (Pis) to the first node 3. In turn, the first node 3 may receive 140 and stores 150 the second node master public key (Pis). It is to be appreciated that in some alternatives, the respective public master keys may be received and stored at a third data store 19 associated with the third node 9 (such as a trusted third party). This may include a third party that acts as a public directory, such as a certification authority. Thus in some examples, the first node master public key (Pic) may requested and received by the second node 7 only when determining the common secret (CS) is required (and vice versa).
The registration steps may only need to occur once as an initial setup.
Session initiation and determining the common secret by the first node 3
An example of determining a common secret (CS) will now be described with reference to Figure 7. The common secret (CS) may be used for a particular session, time, transaction, or other purpose between the first node 3 and the second node 7 and it may not be desirable, or secure, to use the same common secret (CS). Thus the common secret (CS) may be changed between different sessions, time, transactions, etc.
The following is provided for illustration of the secure transmission technique which has been described above.
Generating a message (M) 310
In this example, the method 300 performed by the first node 3 includes generating 310 a message (M). The message (M) may be random, pseudo random, or user defined. In one example, the message (M) is based on Unix time and a nonce (and arbitrary value). For example, the message (M) may be provided as:
Message (M) = UnixTime + nonce (Equation 3)
In some examples, the message (M) is arbitrary. However it is to be appreciated that the message (M) may have selective values (such as Unix Time, etc) that may be useful in some applications.
The method 300 includes sending 315 the message (M), over the communications network 3, to the second node 7. The message (M) may be sent over an unsecure network as the message (M) does not include information on the private keys.
Determining a Generator Value ( GV) 320
The method 300 further includes the step of determining 320 a Generator Value (GV) based on the message (M). In this example, this includes determining a cryptographic hash of the message. An example of a cryptographic hash algorithm includes SHA-256 to create a 256-bit Generator Value (GV). That is:
GV = SHA-256(M) (Equation 4)
It is to be appreciated that other hash algorithms may be used. This may include other has algorithms in the Secure Hash Algorithm (SHA) family. Some particular examples include instances in the SHA-3 subset, including SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE 128, SHAKE256. Other hash algorithms may include those in the RACE Integrity Primitives Evaluation Message Digest (RIPEMD) family. A particular example may include RIPEMD-160. Other hash functions may include families based on Zemor-Tillich hash function and knapsack-based hash functions. Determining a first node second private key 330
The method 300 then includes the step 330 of determining 330 the first node second private key (V2c) based on the second node master private key (Vic) and the Generator Value (GV). This can be based on a scalar addition of the first node master private key (Vic) and the Generator Value (GV) according to the following formula:
V2C = Vic + GV (Equation 5)
Thus the first node second private key (V2c) is not a random value but is instead deterministically derived from the first node master private key. The corresponding public key in the cryptographic pair, namely the first node second public key (P2c), has the following relationship:
P2C = V2c x G (Equation 6)
Substitution of V2c from Equation 5 into Equation 6 provides:
Pic = (Vic + GV) x G (Equation 7) where the ' + ' operator refers to elliptic curve point addition. Noting that elliptic curve cryptography algebra is distributive, Equation 7 may be expressed as:
Pic = Vic x G + GV x G (Equation 8)
Finally, Equation 1 may be substituted into Equation 7 to provide:
Pic = Pic + GV x G (Equation 9.1)
Pic = Pic + SHA-256(M) x G (Equation 9.2)
Thus the corresponding first node second public key (Pic) can be derivable given knowledge of the first node master public key (Pic) and the message (M). The second node 7 may have such knowledge to independently determine the first node second public key (Pic) as will be discussed in further detail below with respect to the method 400. Generate a first signed message ( SMI ) based on the message and the first node second private key 350
The method 300 further includes generating 350 a first signed message (SMI) based on the message (M) and the determined first node second private key (V2c). Generating a signed message includes applying a digital signature algorithm to digitally sign the message (M). In one example, this includes applying the first node second private key (V2c) to the message in an Elliptic Curve Digital Signature Algorithm (ECDSA) to obtain the first signed message (SMI). Examples of ECDSA include those based on ECC systems with secp256kl, secp256rl, secp384rl, se3cp521rl.
The first signed message (SMI) can be verified with the corresponding first node second public key (P2c) at the second node 7. This verification of the first signed message (SMI) may be used by the second node 7 to authenticate the first node 3, which will be discussed in the method 400 below.
Determine a second node second public key 370'
The first node 3 may then determine 370 a second node second public key (P2s). As discussed above, the second node second public key (P2s) may be based at least on the second node master public key (Pis) and the Generator Value (GV). In this example, since the public key is determined 370' as the private key with elliptic curve point multiplication with the base point (G), the second node second public key (P2s) can be expressed, in a fashion similar to Equation 6, as:
Pis = Vis x G (Equation 10.1)
Pis = Pis + GV x G (Equation 10.2)
The mathematical proof for Equation 10.2 is the same as described above for deriving Equation 9.1 for the first node second public key (Pic). It is to be appreciated that the first node 3 can determine 370 the second node second public key independently of the second node 7.
Determine the common secret 380 at the first node 3 The first node 3 may then determine 380 the common secret (CS) based on the determined first node second private key (V2c) and the determined second node second public key (P2s). The common secret (CS) may be determined by the first node 3 by the following formula:
S = V2C x Pis (Equation 11)
Method 400 performed at the second node 7
The corresponding method 400 performed at the second node 7 will now be described. It is to be appreciated that some of these steps are similar to those discussed above that were performed by the first node 3.
The method 400 includes receiving 410 the message (M), over the communications network 5, from the first node 3. This may include the message (M) sent by the first node 3 at step 315. The second node 7 then determines 420 a Generator Value (GV) based on the message (M). The step of determining 420 the Generator Value (GV) by the second node 7 is similar to the step 320 performed by the first node described above. In this example, the second node 7 performs this determining step 420 independent of the first node 3. The next step includes determining 430 a first node second public key (P2c) based on the first node master public key (Pic) and the Generator Value (GV). In this example, since the public key is determined 430' as the private key with elliptic curve point multiplication with the base point (G), the first node second public key (P2c) can be expressed, in a fashion similar to Equation 9, as:
P2C = V2C x G (Equation 12.1)
P2c = Pic + GV x G (Equation 12.2)
The mathematical proof for Equations 12.1 and 12.2 is the same as those discussed above for Equations 10.1 and 10.2.
The second node 7 authenticating the first node 3 The method 400 may include steps performed by the second node 7 to authenticate that the alleged first node 3, is the first node 3. As discussed previously, this includes receiving 440 the first signed message (SMI) from the first node 3. The second node 7 may then validate 450 the signature on the first signed message (SMI) with the first node second public key (P2c) that was determined at step 430.
Verifying the digital signature may be done in accordance with an Elliptic Curve Digital Signature Algorithm (ECDSA) as discussed above. Importantly, the first signed message (SMI) that was signed with the first node second private key (V2c) should only be correctly verified with the corresponding first node second public key (P2c), since V2c and P2c form a cryptographic pair. Since these keys are deterministic on the first node master private key (Vic) and the first node master public key (Pic) that were generated at registration of the first node 3, verifying first signed message (SMI) can be used as a basis of authenticating that an alleged first node sending the first signed message (SMI) is the same first node 3 during registration. Thus the second node 7 may further perform the step of authenticating (460) the first node 3 based on the result of validating (450) the first signed message.
The second node 7 determining the common secret
The method 400 may further include the second node 7 determining 470 a second node second private key (V2s) based on the second node master private key (Vis) and the Generator Value (GV). Similar to step 330 performed by the first node 3, the second node second private key (V2s) can be based on a scalar addition of the second node master private key (Vis) and the Generator Value (GV)according to the following formulas:
V2S = Vis + GV (Equation 13.1)
V2S = Vis + SHA-256(M) (Equation 13.2)
The second node 7 may then, independent of the first node 3, determine 480 the common secret (CS) based on the second node second private key (V2s) and the first node second public key (P2c) based on the following formula:
S = V2s x P2c (Equation 14) Proof of the common secret ( CS) determined by the first node 3 and second node 7
The common secret (CS) determined by the first node 3 is the same as the common secret (CS) determined at the second node 7. Mathematical proof that Equation 11 and Equation 14 provide the same common secret (CS) will now be described.
Turning to the common secret (CS) determined by the first node 3, Equation 10.1 can be substituted into Equation 11 as follows:
S = V2c x P2S (Equation 11)
S = V2c x (V2S x G)
S = (V2C x V2S) x G (Equation 15)
Turning to the common secret (CS) determined by the second node 7, Equation 12.1 can be substituted into Equation 14 as follows:
S = V2s x P2c (Equation 14) S = V2S x (V2c x G)
S = (V2s x V2c) x G (Equation 16)
Since ECC algebra is commutative, Equation 15 and Equation 16 are equivalent, since:
S = (V2C x V2S) x G = (V2S x V2C) x G (Equation 17)
The common secret ( CS) and secret key
The common secret (CS) may now be used as a secret key, or as the basis of a secret key in a symmetric-key algorithm for secure communication between the first node 3 and second node 7.
The common secret (CS) may be in the form of an elliptic curve point (xs, ys). This may be converted into a standard key format using standard publicly known operations agreed by the nodes 3, 7. For example, the xs value may be a 256-bit integer that could be used as a key for AES256 encryption. It could also be converted into a 160-bit integer using RIPEMD160 for any applications requiring this length key. The common secret (CS) may be determined as required. Importantly, the first node 3 does not need to store the common secret (CS) as this can be re-determined based on the message (M). In some examples, the message(s) (M) used may be stored in data store 13, 17, 19 (or other data store) without the same level of security as required for the master private keys. In some examples, the message (M) may be publicly available.
However depending on some application, the common secret (CS) could be stored in the first data store (X) associated with the first node provided the common secret (CS) is kept as secure as the first node master private key (Vic). Advantageously, this technique can be used to determine multiple common secrets that may correspond to multiple secure secret keys based on a single master key cryptography pair.
Hierarchy of Generator Values (keys)
For example, a series of successive Generator Values (GVs) may be determined, where each successive GV may be determined based on the preceding Generator Value (GV). For example, instead of repeating steps 310 to 370 and 410 to 470 to generate successive single-purpose keys, by prior agreement between the nodes, the previously used Generator Value (GV) can be rehashed repeatedly by both parties to establish a hierarchy of
Generator Values. In effect, the Generator Value, based on the hash of a message (M), can be a next generation message (Μ') for the next generation of Generator Value (GV). Doing this allows successive generations of shared secrets to be calculated without the need for further protocol-establishment transmissions, in particular transmission of multiple messages for each generation of common secrets. The next generation common secret (CS') can be computed as follows.
Firstly, both the first node 3 and the second node 7 independently determine the next generation of the Generator Value (GV). This is similar to steps 320 and 420 but adapted with the following formulas:
M' = SHA-256(M) (Equation 18)
GV = SHA-256(M') (Equation 19.1)
GV = SHA-256(SHA-256(M)) (Equation 19.2) The first node 3 may then determine the next generation of the second node second public key (P2s') and the first node second private key (V2c') similar to steps 370 and 330 described above, but adapted with the following formulas:
P2S' = Pis + GV x G (Equation 20.1)
V2C' = Vic + GV (Equation 20.2)
The second node 7 may then determine the next generation of the first node second public key (P2c') and the second node second private key (V2s') similar to steps 430 and 470 described above, but adapted with the following formulas:
Pic' = Pic + GV x G (Equation 21.1)
V2S' = Vis + GV (Equation 21.2)
The first node 3 and the second node 7 may then each determine the next generation common secret (CS'). In particular, the first node 3 determines the next generation common secret (CS') with the formula:
CS' = V2C' x Pis' (Equation 22)
The second node 7 determines the next generation common secret (CS') with the formula:
CS' = Vis' x Pic' (Equation 23)
Further generations (CS", CS' ", etc.) can be calculated in the same way to create a chain hierarchy. This technique requires that both the first node 3 and the second node 7 keep track of the original Message (M) or the originally calculated Generator Value (GV), and to which node it relates. As this is publicly known information there are no security issues regarding the retention of this information. Accordingly, this information might be kept on 'hash tables' (linking hash values to public keys) and distributed freely across the network 5 (for example using Torrent). Furthermore, if any individual common secret (CS) in the hierarchy is ever compromised, this does not affect the security of any other common secrets in the hierarchy provided the private keys Vic, Vis remain secure.
Tree structure of keys As well as a chain (linear) hierarchy as described above, a hierarchy in the form of a tree structure can be created. With a tree structure, a variety of keys for different purposes such as authentication keys, encryption keys, signing keys, payment keys, etc. may be determined whereby these keys are all linked to a single securely maintained master key. This is best illustrated in Fig. 12 that shows a tree structure 901 with a variety of different keys. Each of these can be used to create a shared secret with another party. Tree branching can be accomplished in several ways, three of which are described below.
(i) Master key spawning
In the chain hierarchy, each new 'link' (Public/Private key pair) is created by adding a multiply rehashed Message to the original master key. For example, (showing only the private key of the first node 3 for clarity):
V2C = Vic + SHA-256(M) (Equation 24)
V2C' = Vic + SHA-256(SHA-256(M)) (Equation 25) V2C" = Vic + SHA-256(SHA-256(SHA-256(M))) (Equation 26)
... and so on.
To create a branch, any key can be used as a sub-master key. For example V2c' can be used as a sub-master key (V3c) by adding the hash to it as is done for the regular master key:
V3C = V2C' + SHA-256(M) (Equation 27)
The sub-master key (V3c) may itself have a next generation key (V3c'), for example:
V3C' = V2C' + SHA-256(SHA-256(M)) (Equation 28) This provides a tree structure 903 using the master key spawning method as shown in Fig. 13.
(ii) Logical Association
In this method all the nodes in the tree (public/private key pairs) are generated as a chain (or in any other way) and the logical relationships between the nodes in the tree is maintained by a table in which each node in the tree is simply associated with its parent node in the tree using a pointer. Thus the pointer may be used to determine the relevant public/private key pairs for determining the common secret key (CS) for the session.
(Hi) Message Multiplicity
New private/public key pairs can be generated by introducing a new message at any point in the chain or tree. The message itself may be arbitrary or may carry some meaning or function (e.g. it might be related to a 'real' bank account number, etc). It may be desirable that such new messages for forming the new private/public key pairs are securely retained. Codification Scheme
The metadata of the transaction may be used to access instructions stored in an off-block document. This document might be referred to as a 'contract' . The metadata which is used to reference the contract can be formatted in a variety of ways. However, a suitable codification scheme is described here.
A contract is transferable if the rights it defines are conferred upon the holder or owner of the contract. An example of a non-transferable contract is one in which the participants are named - that is, where the rights are conferred upon a specific named entity rather than the holder of the contract. Only transferable contracts are discussed in this codification scheme.
A token represents a specific contract that details or defines rights conferred by a contract. In accordance with the present invention, the token is a representation of the contract in the form of a bitcoin transaction.
This codification method uses metadata comprising three parameters or data items. This data may be indicative of: i) an amount of shares available under the contract
(this may be referred to herein as 'NumShares');
ii) a quantity of transfer units to be transferred from a sender to at least one recipient (this may be referred to herein as 'ShareVal'); and iii) a factor for calculating a value for the quantity of transfer units (this may be referred to herein as a 'pegging rate').
An advantage of this codification scheme is that it can be used to encapsulate or represent contracts as tokens on a blockchain using only the three parameters described above. In effect, the contract can be specified using a minimum of these three data items. As this codification scheme can be used for any type of transferable contract, common algorithms can be devised and applied. Further detail of these metadata items is provided as follows. A divisible token is one in which the value on a transaction output may be subdivided into smaller amounts allocated across multiple tokens (i.e. allocated across multiple transactions). The archetype is tokenised fiat currency. Divisible contracts are defined as those that specify a non-zero PeggingRate. For divisible contracts the tokenised value transferred in the transaction output is tied to the underlying bitcoin (BTC) value via the PeggingRate. That is, the contract specifies the holder's rights in terms of a pegging-rate. For non-divisible tokens there is no PeggingRate and the contract specifies the holder's rights in terms of a fixed value (e.g. like a bearer bond: 'this contract is redeemable for exactly $1000' or a voucher 'this contract is redeemable for one haircut'). For non-divisible contracts the underlying transaction BTC value is irrelevant to the contract value.
The phrase "Underlying BTC value" refers to the bitcoin amount (BTC) attached to the transaction output. In the Bitcoin protocol every transaction output must have non-zero BTC amount to be considered valid. In fact, the BTC amount must be greater than a set minimum (known as 'dust') which, at the time of writing, is currently set to 546 satoshis. 1 bitcoin is defined as being equal to 100 million satoshis. As the bitcoin transactions are here used only as a means of facilitating an exchange of ownership, the actual underlying BTC amount is arbitrary: the true value lies in the contract specification. In theory every token could be carried by dust. In accordance with the present codification scheme, specifically for divisible tokens, the underlying BTC value does have a meaning: it bears a relationship to the contract value via a PeggingRate. The PeggingRate is itself arbitrary and is chosen so as to keep the underlying BTC amount small. The reason for using a PeggingRate rather than simply underlying every token transaction with dust is because the protocol of the present invention facilitates divisibility: when a token is split into several transaction outputs of smaller amounts it is not necessary to adjust the original contract. Rather, the contract value of each subdivided token is simply calculated based on the PeggingRate and the subdivided amount of underlying BTC value.
A limited token is one in which a total issuance value is fixed (or 'limited') by a fixed nonzero number of shares as defined by a quantity called NumShares. Therefore, no further shares may be issued under a limited contract. For example a contract for part ownership of a race horse is limited to 100% of the race horse (e.g. 100 shares at 1% each or 10 shares at 10% each, etc.). An unlimited contract implies that the issuer is able to underwrite further issuances of shares, for example by adding the required amount of fiat currency into their Reserve Account. NumShares must be explicitly stated on all contracts. Limited contracts must have NumShares > 0; unlimited contracts are denoted by setting NumShares = 0.
The archetypical example is a currency reserve (analogous to a gold reserve) such that the total value held in the reserve bank account matches the total value in promissory notes in existence (i.e. unredeemed tokens). This concept extends beyond currency reserves to include stock inventory. For example, an issuer of licensed printed t-shirt tokens may start with an inventory of 10,000 T-shirts in stock and may issue a divisible token to represent those 10,000 t-shirts (where, say, each share = 1 t-shirt). The original token could be subdivided and each subdivided token would be redeemable for a number of t-shirts according to the transaction output's underlying BTC value as defined by the PeggingRate. If demand increases, however, the issuer may decide to issue further shares (i.e. increase the number of shares in circulation by (say) another 10,000). In such cases it is incumbent on the issuer to deposit a further 10,000 t-shirts into his reserve account (i.e. stock warehouse) in order to underwrite the further issuance. Thus, the total number of t-shirts in stock (where stock acts as 'reserve account') at any one time = the total number of unredeemed shares. PeggingRates only apply to divisible contracts, wherein the value of a share (represented by a quantity called ShareVal) is pegged to the underlying BTC amount. For example, the contract might specify that the issuer promises to redeem the token at a rate of $10,000 for every underlying 1 BTC. That would mean (for example) that a transaction with a tokenised underlying output value of 15,400 satoshis would be redeemable for $1.54. A value of 0 for the PeggingRate indicates that the contract is non-divisible (i.e. can only be transferred whole, like a bearer bond). When the PeggingRate is set to 0 (meaning non- divisible token) the underlying BTC value is not relevant to the contract value and can be set at any amount. Normally in this case it is desirable to keep the underlying BTC amount as small as possible (i.e. set to dust) to minimise operating costs.
NumShares is the total (fixed) number of shares available under the (Limited) contract. For limited contracts NumShares must be a whole number greater than zero. For unlimited contracts NumShares is not fixed as more shares can be issued at any time (provided they are underwritten), which is denoted by setting the value to 0.
A share is defined as the unit of transfer and the ShareVal is the value of that unit. For example, for fiat currency, the unit of transfer may be set to 1 cent. Or, for example, it may be set to 50 cents, in which case transfers may only be executed in 'lots' of 50 cents. ShareVal may also be expressed as a percentage: for example if a breeder wants to sell a racehorse in 10 equal shares then the ShareVal = 10%. ShareVal must be > 0 and must be defined on the contract.
Totallssuance represents the total value of shares issued. This value only relates to limited contracts as for unlimited contracts the issuance is not fixed and more shares may be issued. If the shares are expressed as a percentage then the Totallssuance = 100% by definition.
For limited contracts NumShares, ShareVal, and Totallssuance are related in the following way:
NumShares x ShareVal = Totallssuance. A value of 0 for Totallssuance implies it is an unlimited contract. An example of an unlimited contract is fiat currency (so Totallssuance is set to 0); examples of limited contracts are: (i) limited edition commemorative coins (1000 minted, where 1 share = 1 coin): Totallssuance = 1000 x 1 = 1000 coins; and (ii) seats at a ticketed venue, where Totallssuance = total number of seats available.
The circulation is defined as the total value of unspent tokens (i.e. as determined by transactions in UTXO - unspent transaction output). The full set of all unspent transactions is kept in a list available to all bitcoin nodes. For example, if an issuer initially issues $10,000 as fiat currency type tokens and over time $5500 worth of tokens are redeemed, then the circulation = $4500 (being the value of unredeemed tokens). This value should reconcile to the balance in the associated reserve account.
An Illustrative Example of A Computing Resource ('Agent') Suitable for Use with embodiments of the invention
The present invention can utilise a suitably arranged computing resource (herein "agent") to perform automated aspects of a desired process. An example of a suitable and preferable agent is provided below, although other implementations may be used.
The agent may operate in conjunction with the blockchain, using it as the non-erasable tape in the implementation of a Turing machine. This agent runs in parallel with the blockchain network, overseeing and handling the execution of a (looping) process. The looping process is designed to perform a given task such as, for example, the automation of a process or control of a device or system. This parallel resource monitors the state of the blockchain and can cause transactions to be written to the blockchain. In one sense, it utilises the Blockchain as a non-erasable tape of the Turing Machine, with the following definitions and features:
1. the Blockchain acts as the tape of the Turing Machine. Each transaction in the
Blockchain represents a cell on the tape. This cell can contain symbols from a finite alphabet.
2. The tape head can read information from the blocks that have already been written onto the Blockchain. The tape head can write new blocks, containing many transactions, to the end of the Blockchain. However, they cannot write onto blocks that already exist. As such, the Blockchain tape is non-erasable.
Metadata for each transaction can be stored as part of a multi- signature pay-to- script-hash (P2SH) transaction.
An important function of the agent is to act as an automated entity that monitors the current state of the Blockchain. It can also receive a signal or input from any off-block source. Depending on the Blockchain state and/or a received input, the agent may perform certain actions. The agent decides which action(s) are to be performed. These may or may not involve actions in the 'real world' (i.e. off block) and/or actions on the Blockchain (such as creating and broadcasting new transactions). The action that the agent takes may be triggered by the Blockchain state. The agent may also decide on the next set of
transactions to be broadcast to the Bitcoin network, and subsequently written to the Blockchain.
The agent's action(s) run in parallel and simultaneously to the Blockchain (eg Bitcoin) network. In a sense, this extends the function of blockchain (eg Bitcoin) script. This continuous monitoring implements the 'loop' control-flow constructs making the combined agent and Blockchain system Turing Complete.
The Turing Machine includes two stacks:
• Data stack: This is represented by the Blockchain as described above.
• Control stack: This is represented by the agent function. This stores information relating to the repeat control-flow function.
The separation of the control stack from the data stack provides the advantage of preventing infinite loops from occurring within the Bitcoin core, mitigating denial-of- service attacks.
The agent manages and runs subroutines that are able to loop via any type of loop construct (e.g. FOR-NEXT; REPEAT UNTIL; etc). An illustrative embodiment described herein includes a process using one example of the 'repeat' construct. The user may specify the index (z) and the limit (J). These represent the current iteration number (typically counted starting from 0) and the total number of iterations of the repeat loop respectively.
For each iteration:
1. The Index increments by 1. For the exit condition, the iterations will stop when the index reaches the limit
2. A code block containing an "if condition then action" (ICTA) statement is
executed; the action may be any action on or off the blockchain;
3. A cryptographic hash of this subroutine is computed. This can be stored in the Blockchain as part of a transaction. Since the hash is unique to each code, it will enable verification of which code has been used
The body of the loop includes a code block. Each code block contains a "If condition then action" (ICTA) statement. This monitors the current state of the Blockchain for transactions matching the:
• Start or triggering condition (e.g when a particular date is reached).
• Repeat condition (i.e. a metadata or hash associated with the previous iteration).
• Stop condition (i.e. last iteration of the loop). The ICTA statement enables the agent to decide on the next transaction to make, based on the current state of the blockchain. Making the next transaction involves broadcasting the transaction onto the Bitcoin network, and writing the new transaction onto the Blockchain. This acts as a record that this iteration has been executed. Once the transaction has been written onto the Blockchain, the Manager will subsequently find that the previous iteration has been executed and written onto the Blockchain, and will execute the next iteration. The latter continues until the repeat loop exits when the index (i) reaches the limit (J) specified in the code block.
Each transaction is saved in the blockchain in a way that can be reused. In a Bitcoin implementation, each signature in a transaction is appended with a SIGHASH flag. This flag can take on different values, each indicating whether other parts of the transaction can be amended without involvement of the owner of this signature. A reusable transaction has the SIGHASH flag 'SigHash_AnyoneCanPay' in one of the transaction inputs. This permits anyone to contribute to the inputs of the transaction. This parameter enables the agent' s ICTA function to be executed and repeated multiple times and with different inputs. Use of the function can be restricted to authorised parties - for example, via copyright of the reusable transaction.
The 'If condition' section of the ICTA code block can monitor any type of condition. This is similar to other programming languages (e.g. C, C++, Java) and not limited to information stored on the Blockchain. For example, it could monitor the date and time (i.e. when a certain date and time are reached) or monitor the weather (i.e. when the
temperature is below 10 °C and it is raining), monitor the conditions of a contract or a trust (i.e. when company A buys company B).
The 'Then action' section of the ICTA code block can execute a number of actions. The invention is not limited with regard to the number or type of actions that can be taken. The action is not limited to a transaction on the Blockchain, although a transaction containing metadata related to the action may be written on the Blockchain.
The metadata can be of any form. However, in one embodiment, the metadata may store a hyperlink to a file containing more data or instructions relating to the action. The metadata may store both a hyperlink to a hash table containing more data or instructions relating to the action along with a hash of the action that acts as the look-up key for the hash table. The agent' s control stack can be implemented in a number of ways that are specific to the needs of each user. For example, the repeat loop of the control stack can be based on any Turing Complete language. One possible choice of language is the Forth style stack-based language. An advantage of using this language is that it keeps the control stack consistent in programming style with the Bitcoin scripts which are already known and in wide usage.
Using the Bitcoin Script's Alternate Stack as a Data Storage Space The Bitcoin script contains commands, also called op codes, which enable users to move data onto an alternative stack, known as the 'alt stack' .
The op codes are:
88 OP_TOALTSTACK - which moves data from the top of the main stack onto the top of the alt stack.
* OP_FROMALTSTACK - which moves data from the top of the alt stack to the top of the main stack. This enables data from intermediate steps of calculations to be stored in the alt stack, similar to the 'memory' function which allows data to be stored on the calculator. In one embodiment, the alt stack is used for configuring bitcoin scripts to solve small computation tasks and returning the results in the computation. Using a Code Register to Manage the Agent
The agent also manages a registry of all the codes that it owns and runs. This registry is structured like a lookup table or dictionary that maps a specific key to a specific value. The key and value pair is represented by the hash of the code block (Hi) and the IPv6 address of where the code is stored respectively. To retrieve the code block using the key Hi, the lookup table is used to retrieve the associated value (this is the location where the code is stored) and retrieves the source code accordingly. The implementation of the code registry can vary.
Transaction Metadata of the Agent's Code, and Re-Spawning of the Loop
Information required to respawn the agent's loop at a particular iteration is stored as metadata in the transaction recorded on the Blockchain.
In this way, a transaction on the blockchain stores or provides access to information about a given iteration of the loop which is being executed on the agent. This information can include the values of any variables associated with the loop, such as index i, and any other necessary information such as values for parameters used in the code block or location- related data specifying where further required information can be accessed. The metadata itself is stored as part of a multi- signature pay-to- script-hash script (P2SH) in the transaction. The metadata recorded with the transaction also gives the ability to record an audit trail of how the code has been executed in the past.
There are several ways in which the agent could respawn the repeat loop code block at each iteration. The code block might be hard-coded into the agent itself, or could be stored in a private or publicly available file, or stored as an entry on a private or public hash table file, or a combination of the above. The code block could be static with hard-coded variables or could be static but contain parameter(s) that can be populated. The parameters could be single values of any data format, or could be small chunks of code, or be combinations of the above. The parameters could be populated by retrieving them directly from metadata in a transaction (e.g. bitcoin transaction) or from an external source such as an internal database or a private/public file or hash table or any combination of the above. Pointers to the external source of parameter values might be stored in metadata in a transaction.
The following steps provide one example of how the agent can respawn a repeat loop code block at the z'th iteration. In this example, the code registry is a hash table whereby the hash values act as look-up keys for the table and are stored in metadata on transactions.
1. The agent monitors the Blockchain for transactions that contain hashes of the code block that matches entries in the code registry.
2. The agent finds a transaction that contains the corresponding hash (Hi).
3. The agent reads the 'Metadata-CodeHash', gets the CodeHash field to get Hi and uses it to retrieve the code (Ci). If RIPEMD-160(SHA256(Ci)) equals Hi, the code has not been changed and it is safe to proceed to the next step.
4. The agent reads the 'Metadata-CodeHash' which stores the index /, and respawns the code at the z* iteration. In other words, the loop is 'reloaded' at the appropriate iteration
5. The signature of the User is included in the P2SH command to verify the origin of the metadata. 6. The agent reads the 'Metadata-OutputHash' and 'Metadata-OutputPointer' to retrieve the output of the previous steps, if these data are required for this iteration of the loop. It should be noted that the above-mentioned embodiments illustrate rather than limit the invention, and that those skilled in the art will be capable of designing many alternative embodiments without departing from the scope of the invention as defined by the appended claims. In the claims, any reference signs placed in parentheses shall not be construed as limiting the claims. The word "comprising" and "comprises", and the like, does not exclude the presence of elements or steps other than those listed in any claim or the specification as a whole. In the present specification, "comprises" means "includes or consists of and "comprising" means "including or consisting of. The singular reference of an element does not exclude the plural reference of such elements and vice-versa. The invention may be implemented by means of hardware comprising several distinct elements, and by means of a suitably programmed computer. In a device claim enumerating several means, several of these means may be embodied by one and the same item of hardware. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.

Claims

CLAIMS:
1. A computer- implemented control system for controlling a device, the system
comprising:
a device configured for communication with a network and having an IP address and a public -private key cryptographic key pair associated with the device;
a software-implemented control component arranged to monitor the state of a blockchain network and/or transmit blockchain Transactions to the blockchain network; wherein the control component is arranged to access the set of instructions from a stored location which is separate to the device; and
a set of instructions arranged for execution by the control component to control the functionality of the device; wherein the set of instructions is stored in a Distributed Hash Table (DHT) and accessed for download and installation by the control component from the DHT, and the location of the DHT is indicated or provided using metadata provided within a blockchain transaction.
2. A system according to claim 1 wherein the control component is arranged to receive an input signal from an input source, and wherein the input source is:
a further device; and/or
a computer-based resource or agent.
3. A system according to claim 1 or 2 wherein the set of instructions is accessed by the control component using a look-up key which is related to a cryptographic key pair.
4. A system according to any preceding claim wherein the control component is provided on or in the device.
5. A system according to any preceding claim wherein the control component is provided in an off-device location and arranged for wireless communication with the device.
6. A system according to any preceding claim wherein the control component is arranged Perform cryptographic calculations;
Access its associated private/public key pair;
have an associated Bitcoin or other blockchain-related address;
operate the device via an API;
perform secret sharing protocol operations.
7. A system according to any preceding claim wherein the control component is arranged to influence or control the activities of the device based upon detection of a valid blockchain transaction.
8. A computer- implemented control method for controlling a device, the method
comprising the steps:
providing a device configured for wireless communication with a network and having an IP address and a public -private key cryptographic key pair associated with the device;
providing a software-implemented control component arranged to monitor the state of a blockchain network and/or transmit blockchain Transactions to the blockchain network;
providing a set of instructions arranged for execution by the control component to control the functionality of the device;
wherein:
i) the control component is arranged to access the set of instructions from a stored location which is separate to the device;
ii) the set of instructions is stored in a Distributed Hash Table (DHT) and accessed for download and installation by the control component from the DHT; and
iii) the location of the DHT is indicated or provided using metadata provided within a blockchain transaction.
9. A method according to claim 8 wherein the control component is arranged to receive an input signal from an input source, and wherein the input source is:
a further device; and/or
a computer-based resource or agent.
10. A method according to claim 9 wherein the set of instructions is accessed by the control component using a look-up key which is related to a cryptographic key pair.
11. A method according to any of claims 8 to 10, wherein the control component is provided on or in the device.
12. A method according to claims 18 to 11 wherein the control component is provided in an off-device location and arranged for wireless communication with the device.
13. A method according to any of claims 8 to 12, wherein the control component is arranged to:
Perform cryptographic calculations;
Access its associated private/public key pair;
have an associated Bitcoin or other blockchain-related address;
operate the device via an API;
perform secret sharing protocol operations.
14. A method according to any of claims 8 to 13, wherein the control component is arranged to influence or control the activities of the device based upon detection of a valid blockchain transaction.
PCT/IB2017/052465 2016-04-29 2017-04-28 Operating system for blockchain iot devices WO2017187397A1 (en)

Priority Applications (17)

Application Number Priority Date Filing Date Title
KR1020187034205A KR102373685B1 (en) 2016-04-29 2017-04-28 Operating system for blockchain IOT devices
CA3019276A CA3019276A1 (en) 2016-04-29 2017-04-28 Operating system for blockchain iot devices
BR112018071802-5A BR112018071802A2 (en) 2016-04-29 2017-04-28 computer-implemented system and method for controlling a device
CN202410177661.5A CN118041632A (en) 2016-04-29 2017-04-28 Operating system of block chain internet of things equipment
GB1806518.5A GB2564199B (en) 2016-04-29 2017-04-28 Operating system for blockchain IOT devices
EP17721470.7A EP3449449A1 (en) 2016-04-29 2017-04-28 Operating system for blockchain iot devices
SG11201809117QA SG11201809117QA (en) 2016-04-29 2017-04-28 Operating system for blockchain iot devices
CN201780022289.9A CN109089427A (en) 2016-04-29 2017-04-28 Operating system of block chain Internet of things equipment
JP2018552719A JP7048511B2 (en) 2016-04-29 2017-04-28 Operating system for blockchain IoT appliances
EA201892133A EA201892133A1 (en) 2016-04-29 2017-04-28 OPERATING SYSTEM FOR DEVICES OF THE INTERNET THING IN A BLOCKBOARD
EP22206759.7A EP4184410A1 (en) 2016-04-29 2017-04-28 Operating system for blockchain iot devices
US16/097,497 US11128607B2 (en) 2016-04-29 2017-04-28 Operating system for blockchain IoT devices
AU2017257449A AU2017257449B2 (en) 2016-04-29 2017-04-28 Operating system for blockchain IOT devices
ZA2018/07090A ZA201807090B (en) 2016-04-29 2018-10-24 Operating system for blockchain iot devices
US17/381,880 US20220021662A1 (en) 2016-04-29 2021-07-21 Operating system for blockchain iot devices
JP2022048598A JP7364724B2 (en) 2016-04-29 2022-03-24 Operating system for blockchain IoT devices
JP2023173391A JP2023175927A (en) 2016-04-29 2023-10-05 OPERATING SYSTEM FOR BLOCKCHAIN IoT DEVICE

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB1607476.7A GB201607476D0 (en) 2016-04-29 2016-04-29 Operating system for blockchain IOT devices
GB1607476.7 2016-04-29

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US16/097,497 A-371-Of-International US11128607B2 (en) 2016-04-29 2017-04-28 Operating system for blockchain IoT devices
US17/381,880 Continuation US20220021662A1 (en) 2016-04-29 2021-07-21 Operating system for blockchain iot devices

Publications (1)

Publication Number Publication Date
WO2017187397A1 true WO2017187397A1 (en) 2017-11-02

Family

ID=56234103

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2017/052465 WO2017187397A1 (en) 2016-04-29 2017-04-28 Operating system for blockchain iot devices

Country Status (13)

Country Link
US (2) US11128607B2 (en)
EP (2) EP4184410A1 (en)
JP (3) JP7048511B2 (en)
KR (1) KR102373685B1 (en)
CN (2) CN118041632A (en)
AU (1) AU2017257449B2 (en)
BR (1) BR112018071802A2 (en)
CA (1) CA3019276A1 (en)
EA (1) EA201892133A1 (en)
GB (2) GB201607476D0 (en)
SG (2) SG10202010719PA (en)
WO (1) WO2017187397A1 (en)
ZA (1) ZA201807090B (en)

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108377272A (en) * 2018-05-09 2018-08-07 深圳市有方科技股份有限公司 A kind of method and system of management internet-of-things terminal
CN109302431A (en) * 2018-12-14 2019-02-01 广州大学 A kind of Internet of Things vast resources and the credible management system of data safety
WO2019148248A1 (en) * 2018-02-02 2019-08-08 Varughese Ian Arvind Personal record repository arrangement and method for incentivised data analytics
EP3528112A1 (en) 2018-02-19 2019-08-21 Deutsche Telekom AG Management ecosystem of superdistributed hashes
WO2019162753A1 (en) * 2018-02-23 2019-08-29 Land Layby Technologies Limited Asset transaction system and method
WO2019180733A1 (en) * 2018-03-23 2019-09-26 Ramesh Belavadi Nagarajaswamy System and method for composite-key based blockchain device control
WO2019185042A1 (en) * 2018-03-29 2019-10-03 AnApp Technologies Limited System and method for operating a blockchain network
WO2019217323A1 (en) * 2018-05-06 2019-11-14 Strong Force TX Portfolio 2018, LLC Methods and systems for improving machines and systems that automate execution of distributed ledger and other transactions in spot and forward markets for energy, compute, storage and other resources
WO2019213700A1 (en) * 2018-05-07 2019-11-14 Dream Channel Pty. Ltd. Films on a blockchain
WO2019226042A1 (en) * 2018-05-24 2019-11-28 Soft Space Sdn Bhd Method for processing a secure financial transaction using a commercial off-the-shelf or an internet of things device
US10505718B1 (en) 2018-06-08 2019-12-10 Cisco Technology, Inc. Systems, devices, and techniques for registering user equipment (UE) in wireless networks using a native blockchain platform
WO2019245833A1 (en) * 2018-06-19 2019-12-26 Cannagri Blockchain, Inc A method, apparatus and system for production management
WO2020023550A1 (en) * 2018-07-24 2020-01-30 Vmware, Inc Internet of things blockchain auditing
EP3257002B1 (en) * 2016-02-23 2020-03-11 Nchain Holdings Limited Agent-based turing complete transactions integrating feedback within a blockchain system
US10642643B2 (en) 2017-02-28 2020-05-05 Alibaba Group Holding Limited Method and apparatus for writing service data into block chain and method for determining service subset
US10673618B2 (en) 2018-06-08 2020-06-02 Cisco Technology, Inc. Provisioning network resources in a wireless network using a native blockchain platform
US10693716B2 (en) 2018-05-29 2020-06-23 At&T Mobility Ii Llc Blockchain based device management
KR20200080441A (en) * 2018-12-26 2020-07-07 서강대학교산학협력단 Distributed device authentication protocol in internet of things blockchain environment
US10740754B2 (en) 2018-06-04 2020-08-11 Noah Rafalko Telecommunication system and method for settling session transactions
WO2020168389A1 (en) * 2019-02-21 2020-08-27 Commonwealth Scientific And Industrial Research Organisation Energized identity powered blockchain
CN111602372A (en) * 2018-01-22 2020-08-28 西门子股份公司 Method and control system for controlling and/or monitoring a device
WO2020222701A1 (en) * 2019-05-02 2020-11-05 Singapore Airlines Limited Method, transaction management device and computer-readable media for facilitating concurrent transactions
US10868876B2 (en) 2018-08-10 2020-12-15 Cisco Technology, Inc. Authenticated service discovery using a secure ledger
WO2021030638A1 (en) * 2019-08-13 2021-02-18 Realtime Applications, Inc. Blockchain communication architecture
US10972463B2 (en) 2018-06-06 2021-04-06 Cisco Technology, Inc. Blockchain-based NB-IoT devices
JP2021511595A (en) * 2018-01-17 2021-05-06 メディチ・ベンチャーズ,インコーポレーテッド Multi-authorization system that uses M out of N keys to generate transaction addresses
JP2021513300A (en) * 2018-04-16 2021-05-20 ビーシー ディベロップメント ラボズ ゲーエムベーハー Trustless stateless incentive remote node network with minimal validation client
US11044104B2 (en) 2018-09-05 2021-06-22 International Business Machines Corporation Data certification as a service powered by permissioned blockchain network
US20220052909A1 (en) * 2020-08-17 2022-02-17 Nokia Solutions And Networks Oy Blockchain-based network device management methods and devices
US11263641B2 (en) 2018-03-08 2022-03-01 International Business Machines Corporation Cognitive operational vehicle blockchain for privileges, licensing, evaluation, authorization, and training
US11288052B2 (en) 2019-11-21 2022-03-29 General Electric Company Devices, systems, and methods for providing on-demand engine software using a distributed ledger
US11316668B2 (en) 2018-11-16 2022-04-26 Safetech Bv Methods and systems for cryptographic private key management for secure multiparty storage and transfer of information
US11410174B2 (en) 2018-08-07 2022-08-09 International Business Machines Corporation Custom blockchain for IoT devices
US11494836B2 (en) 2018-05-06 2022-11-08 Strong Force TX Portfolio 2018, LLC System and method that varies the terms and conditions of a subsidized loan
US11544782B2 (en) 2018-05-06 2023-01-03 Strong Force TX Portfolio 2018, LLC System and method of a smart contract and distributed ledger platform with blockchain custody service
US11546173B2 (en) 2018-01-26 2023-01-03 Vechain Global Technology Sarl Methods, application server, IoT device and media for implementing IoT services
US11550299B2 (en) 2020-02-03 2023-01-10 Strong Force TX Portfolio 2018, LLC Automated robotic process selection and configuration
US11652634B2 (en) 2017-11-02 2023-05-16 Nchain Licensing Ag Computer-implemented systems and methods for linking a blockchain to a digital twin
US11982993B2 (en) 2020-02-03 2024-05-14 Strong Force TX Portfolio 2018, LLC AI solution selection for an automated robotic process

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4235552A3 (en) 2016-02-23 2023-09-13 nChain Licensing AG Methods and systems for efficient transfer of entities on a peer-to-peer distributed ledger using the blockchain
SG10202011641RA (en) 2016-02-23 2021-01-28 Nchain Holdings Ltd Tokenisation method and system for implementing exchanges on a blockchain
EP3420669B1 (en) 2016-02-23 2021-03-24 Nchain Holdings Limited Cryptographic method and system for secure extraction of data from a blockchain
KR20180115293A (en) 2016-02-23 2018-10-22 엔체인 홀딩스 리미티드 Method and system for secure transmission of objects on a block chain
US11126976B2 (en) 2016-02-23 2021-09-21 nChain Holdings Limited Method and system for efficient transfer of cryptocurrency associated with a payroll on a blockchain that leads to an automated payroll method and system based on smart contracts
SG10202011640TA (en) 2016-02-23 2021-01-28 Nchain Holdings Ltd System and method for controlling asset-related actions via a blockchain
KR20180116278A (en) 2016-02-23 2018-10-24 엔체인 홀딩스 리미티드 Common information secrets for secure information exchange and hierarchical and deterministic cryptographic keys
CA3013182A1 (en) 2016-02-23 2017-08-31 nChain Holdings Limited Universal tokenisation system for blockchain-based cryptocurrencies
US11410145B2 (en) 2016-02-23 2022-08-09 nChain Holdings Limited Blockchain-implemented method for control and distribution of digital content
AU2017223129A1 (en) * 2016-02-23 2018-07-12 nChain Holdings Limited Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
US11120437B2 (en) 2016-02-23 2021-09-14 nChain Holdings Limited Registry and automated management method for blockchain-enforced smart contracts
EP4167165A1 (en) 2016-02-23 2023-04-19 nChain Licensing AG Blockchain-based exchange with tokenisation
CN108780548B (en) 2016-02-23 2022-08-05 区块链控股有限公司 Using elliptic curve cryptography for personal device security to share secrets
MX2018010056A (en) 2016-02-23 2019-01-21 Nchain Holdings Ltd A method and system for securing computer software using a distributed hash table and a blockchain.
JP6533771B2 (en) * 2016-11-15 2019-06-19 富士通株式会社 Communication method, apparatus and program
GB201705621D0 (en) * 2017-04-07 2017-05-24 Nchain Holdings Ltd Computer-implemented system and method
GB201707788D0 (en) * 2017-05-15 2017-06-28 Nchain Holdings Ltd Computer-implemented system and method
US10140392B1 (en) 2017-06-29 2018-11-27 Best Apps, Llc Computer aided systems and methods for creating custom products
US10819696B2 (en) * 2017-07-13 2020-10-27 Microsoft Technology Licensing, Llc Key attestation statement generation providing device anonymity
US20170357678A1 (en) * 2017-07-31 2017-12-14 Qiang Wang Internet Map Macro Marker Management Theory and Control System
US11256799B2 (en) * 2017-08-29 2022-02-22 Seagate Technology Llc Device lifecycle distributed ledger
US10878248B2 (en) 2017-10-26 2020-12-29 Seagate Technology Llc Media authentication using distributed ledger
US10567168B2 (en) 2017-11-16 2020-02-18 International Business Machines Corporation Blockchain transaction privacy enhancement through broadcast encryption
WO2019111506A1 (en) * 2017-12-04 2019-06-13 ソニー株式会社 Information processing device, information processing method, and program
US11995648B2 (en) * 2018-03-23 2024-05-28 Nchain Licensing Ag Computer-implemented system and method for enabling zero-knowledge proof
US11475398B2 (en) * 2018-05-30 2022-10-18 Ncr Corporation Product traceability processing
US10826762B2 (en) * 2018-08-06 2020-11-03 Cisco Technology, Inc. Configuring resource-constrained devices in a network
JP7206698B2 (en) * 2018-08-28 2023-01-18 セイコーエプソン株式会社 Providing device, processing system and communication method
US11750395B2 (en) * 2018-09-03 2023-09-05 Icncast Co., Ltd System and method for blockchain-based multi-factor security authentication between mobile terminal and IoT device
CN112232817A (en) * 2018-10-25 2021-01-15 创新先进技术有限公司 Transaction processing method and device based on block chain and electronic equipment
US11308194B2 (en) 2018-10-31 2022-04-19 Seagate Technology Llc Monitoring device components using distributed ledger
US10867081B2 (en) 2018-11-21 2020-12-15 Best Apps, Llc Computer aided systems and methods for creating custom products
KR101997673B1 (en) * 2018-12-06 2019-07-08 주식회사 푸시풀시스템 Digital electronic device based on dual block chain comprising virtual blockchain
US11133983B2 (en) * 2018-12-14 2021-09-28 T-Mobile Usa, Inc. Provisioning edge devices in a mobile carrier network as compute nodes in a blockchain network
US11068316B2 (en) 2018-12-24 2021-07-20 LiquidApps Ltd Systems and method for managing memory resources used by smart contracts of a blockchain
US10402823B1 (en) * 2018-12-30 2019-09-03 Alexander Vladimirovich Vlasov System for exchanging private keys for mutual settlements between users of a cryptocurrency outside blockchains
TWI701618B (en) * 2019-01-09 2020-08-11 台灣海耶克股份有限公司 Method of allocating resources by task hierarchy
CN110011823B (en) * 2019-01-18 2020-10-30 创新先进技术有限公司 Remote management implementation method and device for Internet of things equipment
US11411739B2 (en) * 2019-02-07 2022-08-09 Internatiional Business Machines Corporation Smart device to impose trust at the edge of a blockchain
US11038857B1 (en) * 2019-02-14 2021-06-15 Sprint Communications Company L.P. Data messaging service with distributed ledger control
KR102519186B1 (en) * 2019-02-18 2023-04-06 아주대학교산학협력단 Blockchain Network Node and Method for Processing Transaction
KR20200106603A (en) 2019-03-05 2020-09-15 정상국 Block chain based distributed storage method
CN110011972B (en) * 2019-03-05 2023-03-31 未鲲(上海)科技服务有限公司 Block chain-based dynamic password request and response method and device
KR20200106604A (en) 2019-03-05 2020-09-15 정상국 Representative selection method in block chain based consensus algorithm
KR20200106605A (en) 2019-03-05 2020-09-15 정상국 Double cross consensus method in block chain based consensus algorithm
US11228443B2 (en) * 2019-03-25 2022-01-18 Micron Technology, Inc. Using memory as a block in a block chain
US11228446B2 (en) 2019-05-10 2022-01-18 Advanced New Technologies Co., Ltd. Blockchain-based reconciliation method and apparatus and electronic device
US11423016B2 (en) * 2019-06-26 2022-08-23 Indian Institute Of Technology Bombay Method for scaling computation in blockchain by delaying transaction execution
KR102152537B1 (en) * 2019-10-10 2020-09-07 (주) 모로보기 Blockchain network for internet of things device
US11489676B2 (en) 2019-10-24 2022-11-01 Hewlett Packard Enterprise Development Lp Blockchain internet-of-things system and related method
CA3098936A1 (en) * 2019-11-13 2020-02-20 Alipay (Hangzhou) Information Technology Co., Ltd. Dynamic blockchain data storage based on error correction code
CN110990896B (en) * 2019-12-03 2023-01-06 成都卫士通信息产业股份有限公司 Digital signature device, method, storage medium and equipment based on SM2 white box
US11770257B1 (en) * 2020-02-07 2023-09-26 Research Blocks Technologies, Inc. Blockchain incorporated system for verifying ingredients in agricultural products and byproducts
US11514203B2 (en) 2020-05-18 2022-11-29 Best Apps, Llc Computer aided systems and methods for creating custom products
CN111552215B (en) * 2020-05-22 2022-02-11 中国联合网络通信集团有限公司 Internet of things equipment safety protection method and system
CN111628998B (en) * 2020-05-26 2022-03-01 中国联合网络通信集团有限公司 Dust attack prevention method
CN112118124B (en) * 2020-08-03 2022-05-03 西安电子科技大学 Block chain construction method, system, storage medium, computer equipment and application
JP6935662B1 (en) * 2020-08-19 2021-09-15 株式会社chaintope A system that proves that the record has not changed
EP3968188A1 (en) * 2020-09-10 2022-03-16 Siemens Mobility AG Method for reliably switching a system on or off
CN112689016B (en) * 2020-12-25 2022-06-28 杭州复杂美科技有限公司 Intelligent device control method, device and storage medium
CN112819467B (en) * 2021-02-23 2024-09-06 中国信息通信研究院 Privacy transaction method, device and system
KR20220141493A (en) 2021-04-13 2022-10-20 주식회사 노틸러스 Apparatus of processing linked data
US11463130B1 (en) * 2021-10-13 2022-10-04 Roku, Inc. Proving physical possession of internet-of-things (IoT) devices
US11924351B1 (en) 2023-02-09 2024-03-05 Hong Kong Applied Science and Technology Research Institute Company Limited Optimizing data transactions and verification on a blockchain network

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015144971A1 (en) * 2014-03-27 2015-10-01 Nokia Technologies Oy Method and apparatus for automatic inter-device authorisation
US20150379510A1 (en) * 2012-07-10 2015-12-31 Stanley Benjamin Smith Method and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain.
US20160098723A1 (en) * 2014-10-01 2016-04-07 The Filing Cabinet, LLC System and method for block-chain verification of goods

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4153653B2 (en) * 2000-10-31 2008-09-24 株式会社東芝 Microprocessor and data protection method
JP2005512170A (en) * 2001-11-12 2005-04-28 ネットワーク リサーチ ラブ リミテッド Information protection method and apparatus against unauthorized use
US6868804B1 (en) 2003-11-20 2005-03-22 Growsafe Systems Ltd. Animal management system
US20060069800A1 (en) * 2004-09-03 2006-03-30 Microsoft Corporation System and method for erasure coding of streaming media
CN101449274B (en) * 2006-05-18 2010-10-06 松下电器产业株式会社 Electronic device and method for content reproduction control, and integrated circuit
CN101490687B (en) * 2006-07-07 2012-04-18 桑迪士克股份有限公司 Control system and method using identity objects
KR100875931B1 (en) * 2006-12-05 2008-12-26 한국전자통신연구원 Integrated IP packet support security device and method
US10621809B2 (en) 2012-01-19 2020-04-14 Christopher M. Smolen Digital currency enabled vending machine
KR101451280B1 (en) * 2012-10-16 2014-10-16 케이티하이텔 주식회사 Distributed database management system and method
US9596305B2 (en) * 2013-04-06 2017-03-14 Citrix Systems, Inc. Systems and methods for distributed hash table contract renewal
US9595034B2 (en) 2013-10-25 2017-03-14 Stellenbosch University System and method for monitoring third party access to a restricted item
CN103795785B (en) 2014-01-16 2019-01-08 加一联创电子科技有限公司 Internet of Things network control method and terminal
CN104869129B (en) 2014-02-20 2018-12-07 中国移动通信集团公司 A kind of application management method, equipment and system
JP6488691B2 (en) * 2014-03-03 2019-03-27 株式会社バッファロー Wireless relay device, control system and computer program
US20160335628A1 (en) * 2014-05-15 2016-11-17 Adam Mark Weigold System and method for digital currency storage, payment and credit
US20160162897A1 (en) * 2014-12-03 2016-06-09 The Filing Cabinet, LLC System and method for user authentication using crypto-currency transactions as access tokens
US9967333B2 (en) 2015-03-02 2018-05-08 Dell Products Lp Deferred configuration or instruction execution using a secure distributed transaction ledger
US10158480B1 (en) * 2015-03-16 2018-12-18 Winklevoss Ip, Llc Autonomous devices
GB2531828A (en) 2015-03-24 2016-05-04 Intelligent Energy Ltd An energy resource network
US20160299918A1 (en) 2015-04-07 2016-10-13 Dell Software, Inc. Device Control Using a Secure Decentralized Transactional Ledger
US9735958B2 (en) 2015-05-19 2017-08-15 Coinbase, Inc. Key ceremony of a security system forming part of a host computer for cryptographic transactions
US20170178127A1 (en) * 2015-12-18 2017-06-22 International Business Machines Corporation Proxy system mediated legacy transactions using multi-tenant transaction database
US10520670B2 (en) * 2017-11-28 2019-12-31 Sterlite Technologies Limited Few mode optical fiber

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150379510A1 (en) * 2012-07-10 2015-12-31 Stanley Benjamin Smith Method and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain.
WO2015144971A1 (en) * 2014-03-27 2015-10-01 Nokia Technologies Oy Method and apparatus for automatic inter-device authorisation
US20160098723A1 (en) * 2014-10-01 2016-04-07 The Filing Cabinet, LLC System and method for block-chain verification of goods

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"Mastering bitcoin : [unlocking digital cryptocurrencies]", 20 December 2014, O'REILLY MEDIA, Beijing Cambridge Farnham Köln Sebastopol Tokyo, ISBN: 978-1-4493-7404-4, article ANDREAS M. ANTONOPOULOS: "Mastering Bitcoin - Unlocking Digital Cryptocurrencies", XP055306939 *
MICHAEL CROSBY ET AL: "BlockChain Technology Beyond Bitcoin", 16 October 2015 (2015-10-16), XP055363520, Retrieved from the Internet <URL:http://scet.berkeley.edu/wp-content/uploads/BlockchainPaper.pdf> [retrieved on 20170410] *
PASQUALE FORTE ET AL: "Beyond Bitcoin - Part I: A critical look at blockchain-based systems", INTERNATIONAL ASSOCIATION FOR CRYPTOLOGIC RESEARCH,, vol. 20151202:213043, 1 December 2015 (2015-12-01), pages 1 - 34, XP061019757 *
SANJAY PANIKKAR: "ADEPT: An IoT Practitioner Perspective DRAFT COPY FOR ADVANCE REVIEW II. Key Objectives for Proof of Concept", 7 January 2015 (2015-01-07), XP055282419, Retrieved from the Internet <URL:https://ia802601.us.archive.org/4/items/pdfy-esMcC00dKmdo53-_/IBM ADEPT Practictioner Perspective - Pre Publication Draft - 7 Jan 2015.pdf> [retrieved on 20160621] *

Cited By (129)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3257002B1 (en) * 2016-02-23 2020-03-11 Nchain Holdings Limited Agent-based turing complete transactions integrating feedback within a blockchain system
US10664305B1 (en) 2017-02-28 2020-05-26 Alibaba Group Holding Limited Method and apparatus for writing service data into block chain and method for determining service subset
US10642643B2 (en) 2017-02-28 2020-05-05 Alibaba Group Holding Limited Method and apparatus for writing service data into block chain and method for determining service subset
US12010233B2 (en) 2017-11-02 2024-06-11 Nchain Licensing Ag Computer-implemented systems and methods for combining blockchain technology with digital twins
US12081671B2 (en) 2017-11-02 2024-09-03 Nchain Licensing Ag Computer-implemented systems and methods for linking a blockchain to a digital twin
US11652634B2 (en) 2017-11-02 2023-05-16 Nchain Licensing Ag Computer-implemented systems and methods for linking a blockchain to a digital twin
US11722302B2 (en) 2017-11-02 2023-08-08 Nchain Licensing Ag Computer-implemented systems and methods for combining blockchain technology with digital twins
JP7269944B2 (en) 2018-01-17 2023-05-09 ティーゼロ・アイピー,エルエルシー A multi-authorization system that uses M out of N keys to generate transaction addresses
JP2021511595A (en) * 2018-01-17 2021-05-06 メディチ・ベンチャーズ,インコーポレーテッド Multi-authorization system that uses M out of N keys to generate transaction addresses
CN111602372A (en) * 2018-01-22 2020-08-28 西门子股份公司 Method and control system for controlling and/or monitoring a device
US11362914B2 (en) 2018-01-22 2022-06-14 Siemens Aktiengesellschaft Method and control system for controlling and/or monitoring devices
CN111602372B (en) * 2018-01-22 2022-12-09 西门子股份公司 Method and control system for controlling and/or monitoring a device
US11546173B2 (en) 2018-01-26 2023-01-03 Vechain Global Technology Sarl Methods, application server, IoT device and media for implementing IoT services
WO2019148248A1 (en) * 2018-02-02 2019-08-08 Varughese Ian Arvind Personal record repository arrangement and method for incentivised data analytics
EP3528112A1 (en) 2018-02-19 2019-08-21 Deutsche Telekom AG Management ecosystem of superdistributed hashes
WO2019162753A1 (en) * 2018-02-23 2019-08-29 Land Layby Technologies Limited Asset transaction system and method
US11263641B2 (en) 2018-03-08 2022-03-01 International Business Machines Corporation Cognitive operational vehicle blockchain for privileges, licensing, evaluation, authorization, and training
GB2582078A (en) * 2018-03-23 2020-09-09 Nagarajaswamy Ramesh Belavadi System and method for composite-key based blockchain device control
CN111433797B (en) * 2018-03-23 2023-03-28 贝勒瓦底·纳加拉贾斯瓦米·拉梅什 Block chain equipment control system and method based on composite key
WO2019180733A1 (en) * 2018-03-23 2019-09-26 Ramesh Belavadi Nagarajaswamy System and method for composite-key based blockchain device control
CN111433797A (en) * 2018-03-23 2020-07-17 贝勒瓦底·纳加拉贾斯瓦米·拉梅什 Block chain equipment control system and method based on composite key
WO2019185042A1 (en) * 2018-03-29 2019-10-03 AnApp Technologies Limited System and method for operating a blockchain network
JP2021513300A (en) * 2018-04-16 2021-05-20 ビーシー ディベロップメント ラボズ ゲーエムベーハー Trustless stateless incentive remote node network with minimal validation client
US11281658B2 (en) 2018-04-16 2022-03-22 Bc Development Labs Gmbh Trustless stateless incentivized remote node network using minimal verification clients
US11727319B2 (en) 2018-05-06 2023-08-15 Strong Force TX Portfolio 2018, LLC Systems and methods for improving resource utilization for a fleet of machines
US11645724B2 (en) 2018-05-06 2023-05-09 Strong Force TX Portfolio 2018, LLC Systems and methods for crowdsourcing information on loan collateral
US12067630B2 (en) 2018-05-06 2024-08-20 Strong Force TX Portfolio 2018, LLC Adaptive intelligence and shared infrastructure lending transaction enablement platform responsive to crowd sourced information
US12033092B2 (en) 2018-05-06 2024-07-09 Strong Force TX Portfolio 2018, LLC Systems and methods for arbitrage based machine resource acquisition
WO2019217323A1 (en) * 2018-05-06 2019-11-14 Strong Force TX Portfolio 2018, LLC Methods and systems for improving machines and systems that automate execution of distributed ledger and other transactions in spot and forward markets for energy, compute, storage and other resources
US11928747B2 (en) 2018-05-06 2024-03-12 Strong Force TX Portfolio 2018, LLC System and method of an automated agent to automatically implement loan activities based on loan status
US11829907B2 (en) 2018-05-06 2023-11-28 Strong Force TX Portfolio 2018, LLC Systems and methods for aggregating transactions and optimization data related to energy and energy credits
US11829906B2 (en) 2018-05-06 2023-11-28 Strong Force TX Portfolio 2018, LLC System and method for adjusting a facility configuration based on detected conditions
US11823098B2 (en) 2018-05-06 2023-11-21 Strong Force TX Portfolio 2018, LLC Transaction-enabled systems and methods to utilize a transaction location in implementing a transaction request
US11816604B2 (en) 2018-05-06 2023-11-14 Strong Force TX Portfolio 2018, LLC Systems and methods for forward market price prediction and sale of energy storage capacity
US11810027B2 (en) 2018-05-06 2023-11-07 Strong Force TX Portfolio 2018, LLC Systems and methods for enabling machine resource transactions
US11790286B2 (en) 2018-05-06 2023-10-17 Strong Force TX Portfolio 2018, LLC Systems and methods for fleet forward energy and energy credits purchase
US11790288B2 (en) 2018-05-06 2023-10-17 Strong Force TX Portfolio 2018, LLC Systems and methods for machine forward energy transactions optimization
US11790287B2 (en) 2018-05-06 2023-10-17 Strong Force TX Portfolio 2018, LLC Systems and methods for machine forward energy and energy storage transactions
US11776069B2 (en) 2018-05-06 2023-10-03 Strong Force TX Portfolio 2018, LLC Systems and methods using IoT input to validate a loan guarantee
US11216750B2 (en) 2018-05-06 2022-01-04 Strong Force TX Portfolio 2018, LLC Transaction-enabled methods for providing provable access to a distributed ledger with a tokenized instruction set
US11769217B2 (en) 2018-05-06 2023-09-26 Strong Force TX Portfolio 2018, LLC Systems, methods and apparatus for automatic entity classification based on social media data
US11763213B2 (en) 2018-05-06 2023-09-19 Strong Force TX Portfolio 2018, LLC Systems and methods for forward market price prediction and sale of energy credits
US11763214B2 (en) 2018-05-06 2023-09-19 Strong Force TX Portfolio 2018, LLC Systems and methods for machine forward energy and energy credit purchase
US11748673B2 (en) 2018-05-06 2023-09-05 Strong Force TX Portfolio 2018, LLC Facility level transaction-enabling systems and methods for provisioning and resource allocation
US11748822B2 (en) 2018-05-06 2023-09-05 Strong Force TX Portfolio 2018, LLC Systems and methods for automatically restructuring debt
US11741402B2 (en) 2018-05-06 2023-08-29 Strong Force TX Portfolio 2018, LLC Systems and methods for forward market purchase of machine resources
US11741552B2 (en) 2018-05-06 2023-08-29 Strong Force TX Portfolio 2018, LLC Systems and methods for automatic classification of loan collection actions
US11488059B2 (en) 2018-05-06 2022-11-01 Strong Force TX Portfolio 2018, LLC Transaction-enabled systems for providing provable access to a distributed ledger with a tokenized instruction set
US11494836B2 (en) 2018-05-06 2022-11-08 Strong Force TX Portfolio 2018, LLC System and method that varies the terms and conditions of a subsidized loan
US11494694B2 (en) 2018-05-06 2022-11-08 Strong Force TX Portfolio 2018, LLC Transaction-enabled systems and methods for creating an aggregate stack of intellectual property
US11501367B2 (en) 2018-05-06 2022-11-15 Strong Force TX Portfolio 2018, LLC System and method of an automated agent to automatically implement loan activities based on loan status
US11741401B2 (en) 2018-05-06 2023-08-29 Strong Force TX Portfolio 2018, LLC Systems and methods for enabling machine resource transactions for a fleet of machines
US11514518B2 (en) 2018-05-06 2022-11-29 Strong Force TX Portfolio 2018, LLC System and method of an automated agent to automatically implement loan activities
US11741553B2 (en) 2018-05-06 2023-08-29 Strong Force TX Portfolio 2018, LLC Systems and methods for automatic classification of loan refinancing interactions and outcomes
US11538124B2 (en) 2018-05-06 2022-12-27 Strong Force TX Portfolio 2018, LLC Transaction-enabled systems and methods for smart contracts
US11544782B2 (en) 2018-05-06 2023-01-03 Strong Force TX Portfolio 2018, LLC System and method of a smart contract and distributed ledger platform with blockchain custody service
US11734619B2 (en) 2018-05-06 2023-08-22 Strong Force TX Portfolio 2018, LLC Transaction-enabled systems and methods for predicting a forward market price utilizing external data sources and resource utilization requirements
US11544622B2 (en) 2018-05-06 2023-01-03 Strong Force TX Portfolio 2018, LLC Transaction-enabling systems and methods for customer notification regarding facility provisioning and allocation of resources
US11734774B2 (en) 2018-05-06 2023-08-22 Strong Force TX Portfolio 2018, LLC Systems and methods for crowdsourcing data collection for condition classification of bond entities
US11734620B2 (en) 2018-05-06 2023-08-22 Strong Force TX Portfolio 2018, LLC Transaction-enabled systems and methods for identifying and acquiring machine resources on a forward resource market
US11727506B2 (en) 2018-05-06 2023-08-15 Strong Force TX Portfolio 2018, LLC Systems and methods for automated loan management based on crowdsourced entity information
US11580448B2 (en) 2018-05-06 2023-02-14 Strong Force TX Portfolio 2018, LLC Transaction-enabled systems and methods for royalty apportionment and stacking
US11727320B2 (en) 2018-05-06 2023-08-15 Strong Force TX Portfolio 2018, LLC Transaction-enabled methods for providing provable access to a distributed ledger with a tokenized instruction set
US11727505B2 (en) 2018-05-06 2023-08-15 Strong Force TX Portfolio 2018, LLC Systems, methods, and apparatus for consolidating a set of loans
US11586994B2 (en) 2018-05-06 2023-02-21 Strong Force TX Portfolio 2018, LLC Transaction-enabled systems and methods for providing provable access to a distributed ledger with serverless code logic
US11599941B2 (en) 2018-05-06 2023-03-07 Strong Force TX Portfolio 2018, LLC System and method of a smart contract that automatically restructures debt loan
US11599940B2 (en) 2018-05-06 2023-03-07 Strong Force TX Portfolio 2018, LLC System and method of automated debt management with machine learning
US11605125B2 (en) 2018-05-06 2023-03-14 Strong Force TX Portfolio 2018, LLC System and method of varied terms and conditions of a subsidized loan
US11605127B2 (en) 2018-05-06 2023-03-14 Strong Force TX Portfolio 2018, LLC Systems and methods for automatic consideration of jurisdiction in loan related actions
US11605124B2 (en) 2018-05-06 2023-03-14 Strong Force TX Portfolio 2018, LLC Systems and methods of smart contract and distributed ledger platform with blockchain authenticity verification
US11610261B2 (en) 2018-05-06 2023-03-21 Strong Force TX Portfolio 2018, LLC System that varies the terms and conditions of a subsidized loan
US11609788B2 (en) 2018-05-06 2023-03-21 Strong Force TX Portfolio 2018, LLC Systems and methods related to resource distribution for a fleet of machines
US11727504B2 (en) 2018-05-06 2023-08-15 Strong Force TX Portfolio 2018, LLC System and method for automated blockchain custody service for managing a set of custodial assets with block chain authenticity verification
US11620702B2 (en) 2018-05-06 2023-04-04 Strong Force TX Portfolio 2018, LLC Systems and methods for crowdsourcing information on a guarantor for a loan
US11625792B2 (en) 2018-05-06 2023-04-11 Strong Force TX Portfolio 2018, LLC System and method for automated blockchain custody service for managing a set of custodial assets
US11631145B2 (en) 2018-05-06 2023-04-18 Strong Force TX Portfolio 2018, LLC Systems and methods for automatic loan classification
US11636555B2 (en) 2018-05-06 2023-04-25 Strong Force TX Portfolio 2018, LLC Systems and methods for crowdsourcing condition of guarantor
US11720978B2 (en) 2018-05-06 2023-08-08 Strong Force TX Portfolio 2018, LLC Systems and methods for crowdsourcing a condition of collateral
US11715164B2 (en) 2018-05-06 2023-08-01 Strong Force TX Portfolio 2018, LLC Robotic process automation system for negotiation
US11715163B2 (en) 2018-05-06 2023-08-01 Strong Force TX Portfolio 2018, LLC Systems and methods for using social network data to validate a loan guarantee
US11657339B2 (en) 2018-05-06 2023-05-23 Strong Force TX Portfolio 2018, LLC Transaction-enabled methods for providing provable access to a distributed ledger with a tokenized instruction set for a semiconductor fabrication process
US11657461B2 (en) 2018-05-06 2023-05-23 Strong Force TX Portfolio 2018, LLC System and method of initiating a collateral action based on a smart lending contract
US11657340B2 (en) 2018-05-06 2023-05-23 Strong Force TX Portfolio 2018, LLC Transaction-enabled methods for providing provable access to a distributed ledger with a tokenized instruction set for a biological production process
US11669914B2 (en) 2018-05-06 2023-06-06 Strong Force TX Portfolio 2018, LLC Adaptive intelligence and shared infrastructure lending transaction enablement platform responsive to crowd sourced information
US11676219B2 (en) 2018-05-06 2023-06-13 Strong Force TX Portfolio 2018, LLC Systems and methods for leveraging internet of things data to validate an entity
US11681958B2 (en) 2018-05-06 2023-06-20 Strong Force TX Portfolio 2018, LLC Forward market renewable energy credit prediction from human behavioral data
US11688023B2 (en) 2018-05-06 2023-06-27 Strong Force TX Portfolio 2018, LLC System and method of event processing with machine learning
US11687846B2 (en) 2018-05-06 2023-06-27 Strong Force TX Portfolio 2018, LLC Forward market renewable energy credit prediction from automated agent behavioral data
US11710084B2 (en) 2018-05-06 2023-07-25 Strong Force TX Portfolio 2018, LLC Transaction-enabled systems and methods for resource acquisition for a fleet of machines
WO2019213700A1 (en) * 2018-05-07 2019-11-14 Dream Channel Pty. Ltd. Films on a blockchain
CN108377272B (en) * 2018-05-09 2021-02-02 深圳市有方科技股份有限公司 Method and system for managing terminal of Internet of things
CN108377272A (en) * 2018-05-09 2018-08-07 深圳市有方科技股份有限公司 A kind of method and system of management internet-of-things terminal
GB2587746B (en) * 2018-05-24 2023-01-11 Yew Chong Leong Christopher Method for processing a secure financial transaction using a commercial off-the-shelf or an internet of things device
GB2587746A (en) * 2018-05-24 2021-04-07 Soft Space Sdn Bhd Method for processing a secure financial transaction using a commercial off-the-shelf or an internet of things device
JP2021519471A (en) * 2018-05-24 2021-08-10 レオン, クリストファー ユー チョンLEONG, Christopher Yew Chong How to process secure financial transactions using commercial off-the-shelf or Internet of Things devices
WO2019226042A1 (en) * 2018-05-24 2019-11-28 Soft Space Sdn Bhd Method for processing a secure financial transaction using a commercial off-the-shelf or an internet of things device
US10693716B2 (en) 2018-05-29 2020-06-23 At&T Mobility Ii Llc Blockchain based device management
US10740754B2 (en) 2018-06-04 2020-08-11 Noah Rafalko Telecommunication system and method for settling session transactions
US11727400B2 (en) 2018-06-04 2023-08-15 Noah Rafalko Telecommunication system and method for settling session transactions
US11127003B2 (en) 2018-06-04 2021-09-21 Noah Rafalko Telecommunication system and method for settling session transactions
US10972463B2 (en) 2018-06-06 2021-04-06 Cisco Technology, Inc. Blockchain-based NB-IoT devices
US10505718B1 (en) 2018-06-08 2019-12-10 Cisco Technology, Inc. Systems, devices, and techniques for registering user equipment (UE) in wireless networks using a native blockchain platform
US10673618B2 (en) 2018-06-08 2020-06-02 Cisco Technology, Inc. Provisioning network resources in a wireless network using a native blockchain platform
US10754847B2 (en) 2018-06-19 2020-08-25 Cannagri Blockchain, Inc. Method, apparatus and system for production management
WO2019245833A1 (en) * 2018-06-19 2019-12-26 Cannagri Blockchain, Inc A method, apparatus and system for production management
US10887082B2 (en) 2018-07-24 2021-01-05 Vmware, Inc. Internet of things blockchain auditing
WO2020023550A1 (en) * 2018-07-24 2020-01-30 Vmware, Inc Internet of things blockchain auditing
US11502823B2 (en) 2018-07-24 2022-11-15 Vamware, Inc. Internet of Things blockchain auditing
US11410174B2 (en) 2018-08-07 2022-08-09 International Business Machines Corporation Custom blockchain for IoT devices
US10868876B2 (en) 2018-08-10 2020-12-15 Cisco Technology, Inc. Authenticated service discovery using a secure ledger
US11044104B2 (en) 2018-09-05 2021-06-22 International Business Machines Corporation Data certification as a service powered by permissioned blockchain network
US11316668B2 (en) 2018-11-16 2022-04-26 Safetech Bv Methods and systems for cryptographic private key management for secure multiparty storage and transfer of information
CN109302431A (en) * 2018-12-14 2019-02-01 广州大学 A kind of Internet of Things vast resources and the credible management system of data safety
CN109302431B (en) * 2018-12-14 2021-03-09 广州大学 Internet of things mass resource and data security credible management system
KR20200080441A (en) * 2018-12-26 2020-07-07 서강대학교산학협력단 Distributed device authentication protocol in internet of things blockchain environment
KR102177794B1 (en) * 2018-12-26 2020-11-12 서강대학교 산학협력단 Distributed device authentication protocol in internet of things blockchain environment
WO2020168389A1 (en) * 2019-02-21 2020-08-27 Commonwealth Scientific And Industrial Research Organisation Energized identity powered blockchain
WO2020222701A1 (en) * 2019-05-02 2020-11-05 Singapore Airlines Limited Method, transaction management device and computer-readable media for facilitating concurrent transactions
US12093946B2 (en) 2019-05-02 2024-09-17 Singapore Airlines Limited Method, transaction management device and computer-readable media for facilitating concurrent transactions
WO2021030638A1 (en) * 2019-08-13 2021-02-18 Realtime Applications, Inc. Blockchain communication architecture
US11907695B2 (en) 2019-11-21 2024-02-20 General Electric Company Devices, systems, and methods for providing on-demand engine software using a distributed ledger
US11288052B2 (en) 2019-11-21 2022-03-29 General Electric Company Devices, systems, and methods for providing on-demand engine software using a distributed ledger
US11567478B2 (en) 2020-02-03 2023-01-31 Strong Force TX Portfolio 2018, LLC Selection and configuration of an automated robotic process
US11982993B2 (en) 2020-02-03 2024-05-14 Strong Force TX Portfolio 2018, LLC AI solution selection for an automated robotic process
US11586178B2 (en) 2020-02-03 2023-02-21 Strong Force TX Portfolio 2018, LLC AI solution selection for an automated robotic process
US11550299B2 (en) 2020-02-03 2023-01-10 Strong Force TX Portfolio 2018, LLC Automated robotic process selection and configuration
US11586177B2 (en) 2020-02-03 2023-02-21 Strong Force TX Portfolio 2018, LLC Robotic process selection and configuration
US20220052909A1 (en) * 2020-08-17 2022-02-17 Nokia Solutions And Networks Oy Blockchain-based network device management methods and devices
US12052133B2 (en) * 2020-08-17 2024-07-30 Nokia Solutions And Networks Oy Blockchain-based network device management methods and devices

Also Published As

Publication number Publication date
JP2019515373A (en) 2019-06-06
GB2564199A (en) 2019-01-09
US20220021662A1 (en) 2022-01-20
JP7048511B2 (en) 2022-04-05
GB201806518D0 (en) 2018-06-06
AU2017257449A1 (en) 2018-11-01
CN118041632A (en) 2024-05-14
JP2023175927A (en) 2023-12-12
BR112018071802A2 (en) 2019-02-19
ZA201807090B (en) 2022-10-26
GB2564199B (en) 2022-02-23
SG11201809117QA (en) 2018-11-29
CA3019276A1 (en) 2017-11-02
CN109089427A (en) 2018-12-25
KR102373685B1 (en) 2022-03-14
GB201607476D0 (en) 2016-06-15
AU2017257449B2 (en) 2023-01-19
JP2022075949A (en) 2022-05-18
US11128607B2 (en) 2021-09-21
EA201892133A1 (en) 2019-04-30
KR20190004309A (en) 2019-01-11
EP4184410A1 (en) 2023-05-24
EP3449449A1 (en) 2019-03-06
US20190158470A1 (en) 2019-05-23
SG10202010719PA (en) 2020-11-27
JP7364724B2 (en) 2023-10-18

Similar Documents

Publication Publication Date Title
US20220021662A1 (en) Operating system for blockchain iot devices
US11900364B2 (en) Implementing logic gate functionality using a blockchain
US20190149337A1 (en) Implementing logic gate functionality using a blockchain
AU2017222469A1 (en) System and method for controlling asset-related actions via a blockchain

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 201806518

Country of ref document: GB

Kind code of ref document: A

Free format text: PCT FILING DATE = 20170428

WWE Wipo information: entry into national phase

Ref document number: 1806518.5

Country of ref document: GB

ENP Entry into the national phase

Ref document number: 3019276

Country of ref document: CA

ENP Entry into the national phase

Ref document number: 2018552719

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 201892133

Country of ref document: EA

NENP Non-entry into the national phase

Ref country code: DE

REG Reference to national code

Ref country code: BR

Ref legal event code: B01A

Ref document number: 112018071802

Country of ref document: BR

ENP Entry into the national phase

Ref document number: 2017257449

Country of ref document: AU

Date of ref document: 20170428

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 20187034205

Country of ref document: KR

Kind code of ref document: A

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

Ref document number: 17721470

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2017721470

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2017721470

Country of ref document: EP

Effective date: 20181129

ENP Entry into the national phase

Ref document number: 112018071802

Country of ref document: BR

Kind code of ref document: A2

Effective date: 20181023