System and method for composite-key based blockchain device control
10693637 ยท 2020-06-23
Inventors
Cpc classification
H04L2209/56
ELECTRICITY
H04L9/0861
ELECTRICITY
H04L9/3239
ELECTRICITY
G06Q20/38215
PHYSICS
International classification
H04L9/08
ELECTRICITY
H04L9/32
ELECTRICITY
Abstract
System and method for composite-key based blockchain device control, where the composite-key is created from control codes and a unique identification key. The control codes are used to control the blockchain device. The system uses the controlling system that can create controlling data. The system uses controlling data to control blockchain devices. The controlling data is used in conjunction with data in the blockchain. The system has methods for integrating with smart contracts to make execution of blockchain device depend on the smart contract. The system can be used for controlling financial activity, movement activity, asset activity, device activity, game activity. The system has methods for coupling controlling system with blockchain devices. The system has mechanisms to make blockchain device execution depend on the signature.
Claims
1. A method of controlling a blockchain device by a controlling system comprising: creating an at least one composite-key a unique identification key, wherein at least one control code is merged with the unique identification key to create the composite-key; processing the composite-key to create a redeem-script, and a blockchain address; wherein the redeem-script is capable of verifying a hash of the composite-key; receiving the at least one control code to create at least one part of a controlling-data; sending the at least one part of the controlling-data through a communication system; wherein the controlling-data is defined as the redeem-script, the blockchain address, the at least one control code, a metadata, and the unique identification key.
2. The method of claim 1, wherein coupling is established between the controlling system and the blockchain device by having an at least one common changing variable between the controlling system and the blockchain device.
3. The method of claim 1, wherein an at least one smart contract is used with the redeem-script to make the execution of the redeem-script depend on the smart contract and a smart contract input.
4. The method of claim 1, wherein the at least one part of the controlling-data is kept in a storage system wherein the storage system is selected from a group consisting of a hard disk, a storage area network, files, servers, network file systems, distributed file systems, interplanetary file systems, databases, ROMs, flash memory, and virtual machines.
5. The method of claim 1, wherein a blockchain transaction is performed.
6. The method of claim 1, wherein a computing system uses part of the controlling-data to control the blockchain device.
7. The method of claim 1, wherein at least one part of the control code is hashed at least one time before merging with the unique identification key.
8. The method of claim 3, wherein the smart contract verifies at least one signature to perform the blockchain transaction.
9. The method of claim 1, wherein at least one part of the control code is created by stringifying at least one javascript object notation data.
10. The method of claim 1, wherein the redeem-script to verify the composite-key is embedded in the blockchain address of the blockchain.
11. A method of executing a blockchain device, wherein the blockchain device is identified by an at least one unique identification key, the blockchain device using at least one part of controlling-data, wherein the controlling-data is defined as a redeem-script, a blockchain address, a set of control codes, a metadata, and a unique identification key; wherein the redeem-script depends on a redeem-script input and the at least one composite-key; the blockchain device: performing at least one blockchain transaction; building at least one composite-key using data from accessories; verifying at least one rebuilt composite-key; receiving at least one part of controlling-data from the communication system; wherein the blockchain device that can additionally perform at least one operation wherein the operation is selected from a group of operations selected the group consisting of: verifying the correctness of composite-key, performing at least one blockchain transaction, and verifying at least one past blockchain transaction.
12. The method of claim 11, wherein the blockchain device takes at least one smart contract input along with the at least one composite-key.
13. The method of claim 11, wherein a block chain activity is triggered based on the value in blockchain-address.
14. The method of claim 11, wherein a block chain activity is triggered based on the state of a blockchain address wherein state is selected from a group of states consisting of, the state of blockchain address not having any record in the blockchain, the state of blockchain address having zero value, the state of blockchain address having some value, the state of blockchain address after blockchain transacting some value, the state of blockchain address after an at least one past blockchain transaction.
15. The method of claim 13, wherein an activity type is selected from a group of activity types consisting of a financial activity, an asset activity, a device activity, a movement activity, a game activity wherein the performed activity is selected from a group of activities consisting of activity to lock, unlock, start, stop, create, delete, update, remove, empty, add, transfer, and issue.
16. A communication system connecting a controlling-system to at least one blockchain device comprising: at least one composite-key and a unique identification key; wherein at least one control code is merged into the unique identification key to create the at least one composite-key; the at least one composite-key processed to create a redeem-script, and a blockchain address; wherein the redeem-script is capable of verifying a hash of the composite-key; the controlling-system sending an at least one part of a controlling-data to execute the at least one blockchain device; wherein the controlling-data is defined as the redeem-script, the blockchain address, the control codes, a metadata, and the unique-identification key.
17. A controlling system of a blockchain device implementing the method of one of claim 1 to claim 10.
18. An execution system of a blockchain device, implementing the method of one of claim 11 to claim 15.
19. A non-transitory machine-readable storage medium having instructions embodied thereon, the instructions being executable to cause one or more processors to perform the steps of the computer-implemented method comprising of hardware, software, storage, electronic devices, implementing methods described in claim 1.
20. A non-transitory machine-readable storage medium having instructions embodied thereon, the instructions being executable to cause one or more processors to perform the steps of the computer-implemented method comprising of hardware, software, storage, electronic devices, implementing methods described in claim 11.
Description
A BRIEF DESCRIPTION OF DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
DESCRIPTION
(24) This disclosure is an improvement for existing methods of using redeem-script in blockchain systems, wherein the improvement is the introduction of control-codes with unique identification-key for each blockchain-device activity. Thus resulting in the ability to control the plurality of blockchain-devices easily.
(25) The systems and methods described help blockchain devices to be controlled using simple techniques, which otherwise would require complex custom-scripts. Thus resulting in many new types of usages of the blockchain.
(26) The systems and methods in the disclosures are classified as controlling system, communication system, and blockchain device.
(27) The architecture of these systems and methods is shown in
(28) There are certain terms and phrases used in this disclosure to help describe the systems and methods. They are explained below.
Terms and Phrases Used
(29) Controlling system: It is a hardware and software used to create controlling-data. It is also referred to as controlling-system or controlling system.
(30) Controlling-data: This represents the collection of data comprising of control-codes, redeem-script, blockchain address, metadata. It is also referred to as controlling-data or controlling data.
(31) Custom-contract: It is contract using bitcoin opcodes trying to provide custom functionality. This takes custom-input as input.
(32) Custom-input: It is a contract input for custom-contract.
(33) Smart contract: This refers to custom-contract in bitcoin context. It is used to provide custom features, not available in standard-scripts.
(34) Smart contract input: This is input to smart contract. It also refers to custom-input.
(35) Unique identification key (UID-key): This is a unique identification key, created to identify each activity of blockchain device.
(36) Redeem-script: This is the script used for processing P2SH-address redemption. It is referred to as redeemScript or redeem-script in some places.
(37) Control code: It is a code that represents some controlling instruction on blockchain-device. It is also referred to as control-code or Control-code in some places.
(38) Composite-key: It is a constructed data by merging control-codes into UID-key. It is also referred to as composite-key.
(39) Rebuilt-Composite-key: It is a composite-key built by blockchain-device. This is also referred to as rebuilt-composite-key.
(40) Composite-key-redeem-script: This is the redeem-script that is used to redeem composite-key. It is also referred to as composite-key-redeem-script.
(41) Redeem-script-input: This is the input to redeem-script. It is also referred to as redeem-script-input.
(42) Metadata: It is the helper data that is created by controlling-system for blockchain-device, to assist in organizing inputs at blockchain-device. Metadata here refers to both composite-key-metadata and control-code-metadata.
(43) Composite-key-metadata: This is the metadata corresponding to the composite-key organization. This is also referred to as composite-key-metadata.
(44) Control-code-metadata: This is the metadata corresponding to the control-code organization. This is also referred to as control-code-metadata.
(45) Contract-input-metadata: This is the metadata describing the contract-input.
(46) Blockchain device: This is the device connected to the blockchain, that performs blockchain operation, based on data in blockchain address. This is also referred to as Blockchain-device or blockchain-device in some places.
(47) Blockchain accessories: These are devices connected to blockchain-device.
(48) Blockchain address: The blockchain address here refers to the P2SH address in the bitcoin context unless mentioned otherwise. This is also referred to as blockchain-address, blockchain address in some places.
(49) Standard-scripts: These are bitcoin scripts that are recognized as safe, and normally used by the majority of bitcoin users.
(50) Custom-scripts: These are bitcoin scripts, that are not considered as standard scripts by the community of bitcoin users.
(51) Transaction output: This refers to input/output data of blockchain transaction when referred in the context of bitcoin.
(52) P2SH address: This is the blockchain address (bitcoin address) created from redeem-script using the P2SH method.
(53) UID-key: It refers to Unique identification key, created for each blockchain-device activity. It is also referred to as Uidkey in some places.
(54) Keypair: Public key, the Private key generated from Elliptic Curve Digital Signature Algorithm(ECDSA).
(55) QR-code: These are the two-dimensional barcode, used for communicating data through printed labels, cards, papers, mobile apps.
(56) Communication system: This is the communication link between controlling-system and blockchain-device. This is also referred to as communication-system.
(57) Device-blockchain-service: This is the service to integrate blockchain-device with controlling-system and accessories. It is also referred to as device-blockchain-service.
(58) Controlling-blockchain-service: This is the service to provide blockchain-device controlling service. It is also referred to as controlling-blockchain-service.
(59) In the examples provided in disclosure, javascript library of bitcoin that comes with bitcoinjs-lib version 2.3 is used to demonstrate the functionality. The working feasibility is tested in debug environment. The screenshots and examples are provided.
(60) The said examples are provided to demonstrate certain features, in certain ways. These should not be considered as a limitation of usage of disclosed methods in other environments or in other forms of usage.
(61) Index of Disclosed Methods and Systems
(62) 1.0 Architecture of solution
(63) 2.0 Controlling system
(64) Controlling system input processing Step creating UID-key for blockchain-device Step creating the buffer of control-codes from control-codes Step creating composite-key from control-codes Step creating redeem-script from composite-key Step creating P2SH address from redeem-script The controlling-data for blockchain-device The controlling-data for blockchain-device accessories The control-code normalization Storing blockchain-device controlling-data for future use Providing controlling-data as a service. Activation based on value, state of blockchain address. Using one or more smart contracts Using smart contract with signature verification in redeem-script Controlling various type of blockchain devices Coupling controlling system logic with blockchain-device
3.0 Communication system Connecting multiple accessories connected to blockchain-device Sending part of controlling-data in a different channel Receiving and transforming controlling-data Sending controlling-data to blockchain-devices
4.0 The Blockchain-device Blockchain-device reading and initializing Blockchain-device configuring Blockchain-device input Blockchain-device listening and performing an operation Blockchain-device performing activity Blockchain-device taking input from accessories Blockchain-device rebuilding composite-key (rebuilt-composite-key) Blockchain-device using rebuilt-composite-key as redeem-script-input The blockchain-device verifying correctness of rebuilt-composite-key Blockchain-device checking past transaction using rebuilt-composite-key Blockchain-device data normalization Blockchain-device configured for multiple activities Blockchain-device activation based on value, state of blockchain address Blockchain-device accepting one or more smart contracts inputs Blockchain-device using a signature in smart contract input Various type of Blockchain-devices Coupled blockchain-device
5.0 Computer program product for controlling blockchain-device
6.0 Blockchain-service for controlling blockchain-device
7.0 USE CASES USE CASE: Device execution by a user at specific GPS location USE CASE: Drone unlocking at specified GPS location USE CASE: Money transfer/Coupon transfer USE CASE: Document signing with multiple conditions
(65) 1USE CASE: Multi-user validation
(66) 1.0 Architecture of Solution
(67)
(68) The UID-key along with control-codes are processed to create one or more set of controlling-data which comprises composite-key, redeem-script, P2SH address, composite-key-metadata, control-code-metadata. These are explained in
(69) The one or more set of controlling-data created, is made available to communication-system A102. Some of the controlling-data may be stored in database or server A103. The communication system will make available controlling-data in different channels of communication to blockchain-devices. Some part of these data may also be made available to accessories connected to blockchain-devices. This is further shown in
(70) The blockchain-device A105 is connected to one or more channels of communication-system to receive one or more set of controlling-data, control-codes. The blockchain-device has the necessary software, interfaces to interact with accessories. It also has software to interact with blockchain. The architecture of communication-system connecting to blockchain-device is shown in
(71) 2.0 Controlling System
(72) Controlling System Input Processing
(73) The controlling system A101 may take one or more control-codes as input, to control one or more blockchain-devices. This data can be in any data format like integer, string, array, JSON etc. This data can also be loaded from files, servers, databases, entered through terminals. It may be related to some data the user of blockchain-device is aware or may be related to some data of accessories connected to blockchain-device. The control-codes are converted to buffer of control-codes for further processing. The javascript example to process control-codes is shown in
(74) Step Creating UID-Key for Blockchain-Device
(75) In the controlling system, the UID-key is created. It is generally a unique random key, which identifies a blockchain-device activity. In some other type of design, the UID-key may be provided from blockchain-device to the controlling system.
(76) In the example,
(77) This UID-key is converted into a buffer for further processing. In this example the UID-key created is already in buffer format. So no transformation is seen for UID-key A301 in the example shown in
(78) Step Creating the Buffer of Control-Codes from Control-Codes
(79) The control-codes can be in any format like string, integer, array, JSON etc. These are converted into buffer format. After conversion, the control-codes may be concatenated to create another buffer of control-codes. The metadata for control-codes is accordingly created or updated.
(80) One or more control-codes in JSON format may be converted into the buffer by first stringifying the JSON data and then converting to buffer format. In the example the order of JSON format data is expected to be same always. In the other embodiments, if order is likely to change, the JSON data can be converted into a array of name, value pair before using. The metadata for control-code is created or updated accordingly.
(81) In the example in
(82) The metadata created for the example for Userjson can be seen in
(83) In the example in
(84) In other embodiments, other methods of converting data to buffer formats may be used.
(85) In other embodiments, other methods of conversion of digital data may be needed to convert them to buffer format.
(86) In other embodiments, some JSON data may be hashed one or more times and used in the creation of the buffer for control-codes.
(87) In other embodiments, some control-codes may be hashed one or more times and used in the creation of the buffer for control-codes.
(88) In the example in
(89) In other embodiments, the complete stringified data of JSON control-code or complete control-code data may be hashed one or more times and used in the creation of buffer of control-codes.
(90) Step Creating Composite-Key from Control-Codes
(91) The flowchart corresponding to above process of conversion is shown in
(92) For each of the control-code A501, specific encoding or hashing is done as needed. Once the encoding or hashing is done, it is converted into the buffer of control-code A502. It also creates control-code-metadata A503. The example of metadata is seen in
(93) The buffer of that control-code A502 is merged into the buffer of UID-key at any position between 0 and end of UID-key. One or more buffers of control-codes A502 can be merged into UID-key. It is also possible to hash each of the control-code buffers and create another buffer of hashed control-codes before merging into UID-key. These merging functions are done in A504. The output of the block A504 after merging is composite-key A506. Details about merging are updated in composite-key-metadata A505. The example of this is shown in
(94) The composite-key-metadata A505 contains information about the type of hashing done to control-code buffers and where it is merged into the UID-key etc.
(95) In the example considered to demonstrate this feature in
(96) In
(97) The corresponding metadata updated for this operation is seen in
(98) Step Creating Redeem-Script from Composite-Key
(99) In
(100) In the bitcoin context, the composite-key-redeem-script will consist of opcode to hash, hash of composite-key, opcode the check hash, wherein the opcode to hash and the hashing algorithm used for hashing composite-key need to be same.
(101) The example of composite-key-redeem-script is shown in
(102) Where the composite-key is got from line B405 after processing various control-codes and UID-key.
(103) The javascript example to create redeemScript using bitcoinjs-lib is shown below:
(104) TABLE-US-00002 var compositeKeyHash = bitcoin.crypto.hash160(compositekey); var redeemScript = bitcoin.script.compile([bitcoin.opcodes.OP_HASH160, compositeKeyHash, bitcoin.opcodes.OP_EQUAL])
(105) The composite-key-redeem-script has the hash of compositekey and also opcodes(script) to verify the correctness of input to redeem-script.
(106) The composite-key-redeem-script is used as redeem-script in P2SH address creation in A704.
(107) In the example, embodiment bitcoin opcodes are used to demonstrate redeem-script creation. The opcode to hash is OP_HASH160, the function to create hash of composite-key is bitcoin.crypto.hash160( ), opcode the check hash is OP_EQUAL.
(108) In other embodiments, alternate opcodes may be used to create redeem-script.
(109) In other embodiments, alternate blockchain opcodes may be used to create redeem-script.
(110) In other embodiments, it is possible to add composite-key hash checking as part of other smart contracts.
(111) Step Creating P2SH Address from Redeem-Script
(112) The standard P2SH method to create the P2SH address in bitcoin consists of inserting redeem-script hash in scriptPubKey. Then encoding the scriptPubKey to create address of desired blockchain network. The scriptPubKey for the standard P2SH method is shown in
(113) The javascript example using bitcoinjs-lib libraries to create P2SH address in bitcoin testnet is shown below:
(114) TABLE-US-00003 var scriptPubKey = bitcoin.script.scriptHashOutput(bitcoin.crypto.hash160(redeemScript)) var address = bitcoin.address.fromOutputScript(scriptPubKey, bitcoin.networks.testnet)
(115) In the example embodiment bitcoin opcodes and bitcoinjs-lib libraries are used to demonstrate P2SH address creation from redeem-script.
(116) In other embodiments alternate blockchain opcodes, alternate libraries may be used to create the P2SH address.
(117) It may be seen that P2SH address is encoded into the P2SH address of testnet bitcoin network.
(118) However, in other embodiments, different encoding schemes may be used to create address of other networks.
(119) The Controlling-Data for Blockchain-Device
(120) The controlling-data comprises metadata, redeem-script, P2SH address, UID-key, composite-key, control-codes.
(121) In situations where the smart contract is used the controlling-data may comprise of metadata, redeem-script, P2SH address, UID-key, composite-key, contract-input, control-codes.
(122) This controlling-data is made available to blockchain-device through one or more communication channels of communication-system, like printed cards, plastic cards, electronic cards, email, internet, wifi, NFC, Bluetooth, SMS, mobile apps, electronic gadgets, IoT devices, client-server link, server-mobile link, device-device link, sharing of files, sharing of storage media, sharing of files on networks, sharing of data in the cloud etc.
(123) The controlling-data may be stored on servers, virtual machines, files, databases etc. This data may be stored for sending to blockchain-device after some transformations.
(124) The Controlling-Data for Blockchain-Device Accessories
(125) The one or more blockchain-devices may need to get one or more parts of controlling-data from one or more accessories connected to blockchain-device. These blockchain device accessories may be users, valves, switches, mobiles, GPS devices, computers etc. The blockchain-device accessories may be connected to communication-system through different communication channels from printed cards, plastic cards, electronic cards, email, internet, wifi, NFC, Bluetooth, SMS, mobile apps, electronic gadgets, IoT devices, client-server link, server-mobile link, device-device link, sharing of files, sharing of storage media, sharing of files on networks, sharing of data in the cloud etc.
(126) The controlling-data may reach these blockchain device accessories through their communication channels.
(127) The controlling-system may dispatch controlling-data to respective accessories using their corresponding channels.
(128) The Control-Code Normalization
(129) One or more control-codes may depend on variable data. Such control-codes need to be normalized before being used.
(130) Consider an example, where the different discount percentage is to be issued for different price ranges.
(131) Say discount for price ranges are 10% for 1000$-10000$ (range-a) 15% for 100$-1000$ (range-b)
(132) Then by normalization
(133) The users in range 1000$-10000$ will use code RA.
(134) The users in range 100$-1000$ will use code RB.
(135) The codes RA, RB will be used to create composite-key to implement the discount feature.
(136) The process of converting variable data to make them useful with the disclosed system is called normalization.
(137) Storing Blockchain-Device Controlling-Data for Future Use.
(138) In many applications like banks, financial institutions, the controlling-data need to be created for future use by clients, devices, systems, services etc.
(139) In such situations, the controlling-data or part of controlling-data is stored on the local server, cloud server, remote server, central server, hard disks, tapes, files, network storages etc.
(140) In many applications like drone control, locking control, the blockchain-device controlling-data has to be supplied to blockchain-device manufacturers to integrate.
(141) Then controlling-data may need to be supplied to the device manufacturers.
(142) In such situations the controlling-data or part of controlling-data is stored on the local server, cloud server, remote server, central server, hard disks, tapes, files, network storages and supplied.
(143) Providing Controlling-Data as a Service.
(144) Providing controlling-data for various industries can be given as a service, wherein, each user of service will provide control-codes and get the controlling-data.
(145) The controlling-data may be then applied to blockchain-devices. The controlling-data may be collected from the services as JSON files, XML files etc.
(146) Such services may be useful for blockchain-device manufacturers.
(147) Activation based on Value, State of Blockchain Address.
(148) The controlling-data associated with blockchain address can be activated as and when a blockchain value is deposited into blockchain address.
(149) There may be applications where a activity is triggered when a particular amount is found in blockchain address. These are triggers based on the value of blockchain address.
(150) A blockchain device activity may be triggered based on the certain state of blockchain address.
(151) The state of blockchain address could be one of the following state of blockchain address not having any record in the blockchain state of blockchain address having zero value state of blockchain address having some value state of blockchain address after transacting some value state of blockchain address after at least one past transacting
Using One or More Smart Contracts
(152) Any smart contract (custom-contract) that can work with a smart contract input (custom-input) can be integrated with disclosed methods. This can be done by adding an opcode to verify the output of composite-key-redeem-script and then concatenating the smart contract to redeem-script (composite-key-redeem-script).
(153) An example is shown how to integrate other smart contracts into the disclosed method.
(154) In
(155) Assume a smart contract (custom-contract) needs smart contract input (custom-input).
(156) Then in line C203, the composite-key-redeem-script is concatenated to opcode to verify the output of composite-key-redeem-script execution, followed by that <custom-contract> is concatenated.
(157) In
(158) Then custom-contract is created to take input Pin1, <Pin2>.sub.hash (C312,C313, C314), where Pin1=1234, and <Pin2>.sub.hash=<mypassword12>.sub.hash
(159) The custom-contract is shown in C312.
(160) In C316, C317, the composite-key-redeem-script is shown as [bitcoin.opcodes.OP_HASH160, compositeKeyHash, bitcoin.opcodes.OP_EQUAL]
(161) In C317, the opcode to verify the output of composite-key-redeem-script is shown as [bitcoin.opcodes.OP VERIFY]
(162) In C315, The custom contract added thereon to redeem-script is shown.
(163) In the current embodiment bitcoin opcodes are used to demonstrate the feature, however, in other embodiments, other blockchain opcodes can be used to achieve the same functionality.
(164) In the current embodiment, one set of opcodes are used to demonstrate. However different set of opcodes can be used to achieve similar functionality
Example
(165) In bitcoin system, the below opcodes [bitcoin.opcodes.OP_EQUAL].concat([bitcoin.opcodes.OP_VERIFY]
(166) can be replaced with [bitcoin.opcodes.OP_EQUALVERIFY]
(167) The output of example used for custom-contract with disclosed methods is shown in
(168) The executed blockchain transaction output for example in debug environment is shown in
(169) In the example embodiment, one smart contract is used along with disclosed method, however, in other embodiments, one or more smart contracts can be used with disclosed methods.
(170) Using Smart Contract with Signature Verification in Redeem-Script
(171) Consider a situation of using disclosed methods, by a valid user more than one times for the same blockchain address. After the first transaction execution, the transaction output data available in public records of blockchain will have inputs given for transaction.
(172) Due to this any user can attack the address and withdraw funds from the blockchain address next time. This can be overcome by building in dependency of signature verification in redeem-script. Then the user who wants to redeem may need to provide signature each time to redeem from the blockchain address. This will prevent an attack on blockchain address.
(173) This is achieved by using method Using one or more smart contracts as shown in
(174) requiring <custom-input> of <sig> <pubKey>
(175) where <pubKey> owner has to sign for the transaction.
(176) <sig> is the signature of <pubKey> owner.
(177) In the above method, the <custom-contract> will verify the signature and also the hash of the public-key of the redeeming user.
(178) The example provided in
(179) Controlling Various Type of Blockchain Devices
(180) The blockchain-devices could be any electronic device connected to moving object, financial transaction, device management, license management, usage management, industrial processes, drones, valves, switches etc, having the ability to interact with blockchain.
(181) The type of blockchain-devices may be broadly classified based on the type of activity consisting of activities like financial activity, asset activity, device activity, movement activity, game activity. The performed activity may be to lock, unlock, start, stop, create, delete, update, remove, empty, add, transfer, issue depending on the type of activity.
(182) For controlling these devices, the design of control-codes, custom-contracts has to be done and used as described in this disclosure.
(183) The type of control-codes for each type of blockchain-device activity may vary. There may need to normalize certain control-codes. The designer of the solution in each domain has to take into account these factors.
(184) Appropriate communication channels need to be established with blockchain-devices or its accessories, doing appropriate transformation for each of the channels.
(185) Coupling Controlling System Logic with Blockchain-Device
(186) There are applications where the blockchain-device need to transact with controlling-system multiple times using same UID-key.
(187) Then a relation is established between the two to use a common variable, in composite-key. The common variable is changed each time before using. This results in new blockchain address each time.
(188) The value of the common variable may be obtained by programming logic or using some common data or sharing the common data in a different channel like email or SMS etc.
(189) This is called coupling blockchain-device with controlling-system.
(190) This will facilitate the same UID-key to be used multiple times, without compromising on the security of blockchain-addresses.
(191) Consider an example, wherein a supplier wants bill payment to happen to each bill separately through blockchain using one UID-key for each customer.
(192) The supplier would create unique bill no for each bill.
(193) The customer would want to pay bills separately for each bill, using same UID-key.
(194) In this example, the customer will create composite-key made from <billno>.sub.hashhash and a PIN. So each time, the bill will be paid to a unique address generated using <billno>.sub.hashhash and a PIN.
(195) After the bill is paid, the customer would inform the supplier to withdraw using the given PIN. This is an arrangement between supplier and customer, wherein they are supposed to keep UID-key and PIN secret.
(196) The supplier would withdraw using a PIN, and <billno>.sub.hashhash which he would have.
(197) This is a simple example to demonstrate coupling for multiple transactions between two users.
(198) In an ideal solution, there should be a condition for redeeming user to provide a signature in order to withdraw. This can be done using the disclosed method using smart contract with signature verification, in this disclosure.
(199) 3.0 Communication System
(200) The communication system is a mechanism to connect the controlling-data created by controlling-system to blockchain-device. This may include the operators of controlling-system and also the accessories connected to blockchain-device.
(201) In
(202) The blockchain-device controlling-data may comprise, metadata, redeem-script, P2SH address, UID-key, composite-key, control-codes. The metadata here represents both composite-key-metadata, control-code-metadata.
(203) In situation of using smart contracts, the blockchain-device controlling-data may comprise, metadata, redeem-script, P2SH address, UID-key, composite-key, control-codes, contract-input. The metadata here represents composite-key-metadata, control-code-metadata, contract-input-metadata.
(204) The composite-key may be created by merging one or buffer of control-codes to UID-key.
(205) The redeem-script may be created from composite-key. In other embodiments, redeem-script might be created by concatenating one or more custom-contracts, with appropriate result verification scripts in between.
(206) The redeem-script, the P2SH address is created by controlling-system using methods described in the disclosure.
(207) The communication-system A902 may collect the controlling-data A901 in any of the communication mediums like wired, wireless, electronic cards, printed cards etc. One or more parts of controlling-data, control-codes may be made available through different communication channels like SMS, email to users A903, A904.
(208) The blockchain-device may need to get that control-code from the accessories connected to blockchain-device.
(209) Some of the data needed by blockchain-device may need to be got from contextual information. The contextual information may be got from other external devices, sensors, electronic gadgets, mobile, the computer connected to blockchain-device. Appropriate normalization of data may need to be done for the data collected before using.
(210) Some information which needs to be got from users like date of birth, date of joining, first 4 digits of social security number. These may not be sent through communication-system.
(211) Some of the user information may be biometric or biometric mapped user information. In such situations, mapped user information is used.
(212) In some embodiments, at least one part of composite-key or at least one part of control-codes may be made available to blockchain-device in different communication channels.
(213) Such information which needs to be got from external gadgets also need not be sent through communication-system. These are programmed in blockchain-device software to be obtained from accessories.
(214) The information that the blockchain-device programmer's needs, for programming the device is got from metadata provided with controlling-data.
(215) The communication system may send these data through channels like printed cards, plastic cards, electronic cards, email, internet, wifi, NFC, BluetoothBluetooth, SMS, mobile apps, electronic gadgets, IoT devices, client-server link, server-mobile link, device-device link, sharing of files, sharing of storage media, sharing of files on networks, sharing of data in the cloud etc.
(216) The communication system may provide at least one part of controlling-data to blockchain-device through a different channel.
(217) Some of the channels may be secure channels, some may be legitimate channels.
(218) Appropriate transformation needs to be done to send/receive through these channels.
Example
(219) QR-code transformation may be needed for scanning and sending data through QR-code devices.
(220) Email transformation may be needed for data to be sent through the email system.
(221) File transfer transformation may be needed if data is to be sent through file transfer mechanisms.
(222) Connecting Multiple Accessories Connected to Blockchain-Device
(223) The blockchain-device may need input from one or more accessories connected to blockchain-device. In such cases, the communication-system may need to provide communication channels to each of the accessories.
(224) Each of the channels may need a mechanism to read the data, transform the data. The communication system to provide appropriate digital transformations to make the data consumable from accessories.
(225) Sending Part of Controlling-Data in a Different Channel
(226) Some part of the blockchain-device controlling-data needs to be sent through the different channel to provide scope for different usage scenarios and also provide for secure usage.
(227) In the example provided in
(228) This is an example of sending by the different channel. This is also the example of the computing system using part of controlling-data to control blockchain-device.
(229) In other embodiments, the control-codes can be sent through different channels like email etc.
(230) In other embodiments, other parts of blockchain-device controlling-data can be sent through different channels.
(231) Receiving and Transforming Controlling-Data
(232) In some big installations like banks, controlling-data may be received on servers, tapes, hard disks etc. This will then be processed for consumption by various blockchain-devices held by different users, different systems in their respective formats.
(233) Example: One blockchain-device may need data in QR-code format, another may need data in email format etc.
(234) The data collected by the server is converted to formats needed by the respective blockchain-device user.
(235) Sending Controlling-Data to Blockchain-Devices
(236) The blockchain devices may scan barcodes, QR-codes etc, to initialize. The communication system to provide controlling-data in a consumable format for consumption by blockchain-devices.
(237) In some blockchain-device usages, the controlling-data may be loaded from tapes, servers, files etc. Then the blockchain-device may be initialized and configured using loaded data. In such scenarios, the communication system may provide controlling-data in the format required by servers, tapes etc.
(238) 4.0 the Blockchain-Device
(239) The blockchain-device is a device connected to the blockchain, through the electronic network. The electronic network may be wired network or wireless network.
(240) The blockchain-device goes through a process of initializing, configuring, listening, taking input, performing the operation, then performing the activity.
(241) During initializing phase, the blockchain-device is initialized with a UID-key and followed by that configuring is done, to make it listen to accessories.
(242) Once the blockchain-device starts listening, it gets input from these accessories. Which is then processed to perform blockchain operations.
(243) Blockchain operation is an operation done by blockchain-device based on blockchain information. This will trigger blockchain activity.
(244) Blockchain activity is any blockchain device activity triggered after performing a blockchain operation.
(245) Blockchain operations are normally, verification of correctness of data obtained, do at least one successful transaction, verify of at least one past transaction.
(246) These are discussed in subsequent sections.
(247) Blockchain-Device Reading and Initializing
(248) The blockchain-device may read one or more set of controlling-data provided to it through the scanner, barcode reader, QR-code reader, files, servers, databases etc.
(249) The blockchain-device may initialize itself or may get initialized by the external system. Each activity of blockchain-device is initialized with the corresponding UID-key provided to it. The associated redeem-script, partial control-codes, partial composite-key is applied to the processing unit of blockchain-device.
(250) The blockchain-device with its associated accessories may be listening to inputs from users, other devices, terminals.
(251) The blockchain-device may also have a display unit to display transaction status, amount of value transacted, the status of verification of rebuilt composite-key at blockchain-device.
(252) Blockchain-Device Configuring
(253) The blockchain-device B100 gets information from communication-system B101, using various channels of communication-system. The blockchain device manufacturer, using the metadata will create software for blockchain-device to make it operate using blockchain and data from accessories which may consist of user information and contextual information.
(254) The process of making controlling-data usable by blockchain-device, by identifying which data has to be collected from which devices, which has to be collected from users, which communication channel to use is called configuring B102.
(255) Once the blockchain-device is configured for its activity, it will be listening to collect information as needed from users or other devices. This is used to verify or perform the transaction.
(256) The blockchain-device may be configured to take one or more different UID-keys. It may take fixed UID-key or dynamic UID-key. If it is fixed, it may be stored in the permanent storage on the device or permanent storage connected to the device. If the blockchain-device is configured to take dynamic UID-keys, then the blockchain-device may get the UID-key from scanner, QR-codes, email, client-server connection etc. For each of the UID-key, the blockchain-device may get some accompanying controlling-data.
(257) The process of blockchain-device listening B103, processing operation B105, interacting B106 is shown in
(258) Blockchain-Device Input
(259) The blockchain-device may also be connected to different other accessories like electronic devices, terminals that provide information about the environment, operation, logistics, situation, contexts. This information is collectively identified as contextual information A906.
(260) The blockchain-device may also get user-id, password, date of birth, place of birth etc from the user. This information is collectively identified as user information A904, A903. This may also have some contextual information.
(261) Blockchain-Device Listening and Performing the Operation
(262) The blockchain-device may listen B103 to the user or contextual information B104 as configured B102. Once the blockchain-device gets the user or contextual information, it may process B105 the data to check for correctness of data by building rebuilt-composite-key. This is done as shown in
(263) In
(264) If the user and contextual data are correct, the operation may need user confirmation B205. After the user gives confirmation, the operation of performing transaction is done B206.
(265) The other operation that could be done is to check any past transaction for the blockchain address B207.
(266) Based on the output of above operations, the blockchain-device activity B107 is triggered.
(267) Blockchain-Device Performing Activity
(268) The blockchain-device once configured with UID-key, metadata, controlling-data B201, it will listen and take inputs from accessories B203 like users, devices, terminals and build the rebuilt-composite-key B202 as per instruction in metadata and test if it is correct B204. One of the ways to test is to build the P2SH address using rebuilt-composite-key to see if it matches given the P2SH address.
(269) The blockchain-device may prompt the user or other devices for further instruction before execution B205. The blockchain-device may execute the transaction B206 and on the success of the transaction, the blockchain-device may perform blockchain-device activity B107.
(270) In other embodiments, the blockchain-device may check if a transaction has happened in the past on the said P2SH address and decide to perform the blockchain-device activity.
(271) The blockchain-device activity performed may be to lock, unlock, start, stop, create, delete, update, remove, empty, add, transfer, issue etc depending on the type of activity.
(272) The type of activity may be like financial activity, device activity, movement activity, asset activity, game activity etc.
(273) Some of the data obtained from accessories may need to be normalized before usage.
(274) Blockchain-Device Taking Input from Accessories
(275) The blockchain-device A905 may need to get input from accessories like users (A904, A903), contexts devices (A906). It is possible each of the users might have received one or more control-codes through different channels like SMS, email etc.
(276) These inputs are provided to blockchain-device in the interface provided to users and other devices. These interfaces may be mobile apps, web terminals, application programming interfaces etc.
(277) Blockchain-Device Rebuilding Composite-Key (Rebuilt-Composite-Key)
(278) The block B202 in
(279) Based on the metadata, the processing of data from accessories (user and context inputs) is done.
(280) For the example considered, the metadata is shown in
(281) The composite-key-metadata A606 gives details about composite-key (ie) the UID-key length is 66, it has 3 parts, part1 starts at 0 and ends at 10, part2 starts at 10 and ends at 20, part3 starts at 20 till the end of UID-key. The sequence of how this data has to be arranged is shown as Sequence array having part1, Userjson, pin, part3, company.
(282) The control-code-metadata for Userjson is A602. It tells how Userjson is to be processed. It tells stringify function has to be used, it mentions Buffer function has to be used, the various fields of JSON data are indicated as fields array containing names Login and Password. In the transformation field, the first field indicates no transformation, the second field indicates transformation (hash160 has to be done twice and converted to hex).
(283) Once the user input, the contextual input is processed as per the metadata, the output is created. This is shown in
(284) The inputs taken are PIN=1234, Company=ABC. The Userjson being a JSON data, the password field is processed with hash160 twice and converted to hex. This is shown in
(285) The buffer of control-code is merged into the buffer of UID-key at positions as mentioned in metadata A606.
(286) Once all the merging of control-codes is done as required by metadata with UID-key, rebuilt-composite-key B202 is ready.
(287) Blockchain-Device Using Rebuilt-Composite-Key as Redeem-Script-Input
(288) The rebuilt-composite-key A801 is used as redeem-script-input A802 for transaction processing while redeeming from the P2SH address.
(289) The redeem-script-input will be used to submit the transaction to miners to process. The miner would then validate redeem-script-input and redeem-script to confirm success or failure of the transaction.
(290) An example is shown using redeem-script-input in a debug environment in
(291) The input for this transaction is generated in
(292) In the example, B701 Input script has redeem-script-input and also redeem-script.
(293) In the example provided, it can be seen in
(294) The Output script, in B702 has the hash of redeem-script, which will be used to check if the provided redeem-script is correct. It also later executes the script taking redeem-script-input. If all goes well, the result will be a success. This is shown in B703.
(295) The Blockchain-Device Verifying Correctness of Rebuilt-Composite-Key
(296) The method to verify if the rebuilt-composite-key is correct is done by building P2SH address using rebuilt-composite-key. The rebuilt-composite-key would have been built by taking inputs from accessories and then computing as per metadata instruction.
(297) If the P2SH address created matches the blockchain address provided, it can be inferred that the rebuilt-composite-key is correct.
(298) If the rebuilt-composite-key is correct, then it can be inferred from the data provided by accessories and data with blockchain-device is correct.
(299) Below is the javascript example to build P2SH address using rebuilt-composite-key:
(300) TABLE-US-00004 var compositeKeyHash = bitcoin.crypto.hash160(rebuilt-composite-key); var redeemScript = bitcoin.script.compile([bitcoin.opcodes.OP_HASH160, compositeKeyHash, bitcoin.opcodes.OP_EQUAL]) var scriptPubKey = bitcoin.script.scriptHashOutput(bitcoin.crypto.hash160(redeemScript)) var address = bitcoin.address.fromOutputScript(scriptPubKey, bitcoin.networks.testnet)
(301) This verification will help in prompting user for confirmation before execution of transaction in blockchain.
(302) This verification also helps in checking the past transaction of the blockchain-address when the matching happened.
(303) Blockchain-Device Checking Past Transaction Using Rebuilt-Composite-Key
(304) Some applications may be designed wherein past transaction of a P2SH address may be an indicator to allow performing of a current activity. In such a situation, once the rebuilt-composite-key is built is confirmed to be correct, the blockchain-device may check if a past transaction has happened for that blockchain address. Then it may decide to perform the blockchain-device activity.
(305) Blockchain-Device Data Normalization
(306) One or more control-codes that the blockchain-device uses may be a variable. In that situation, it needs to be normalized to make it useful.
(307) Consider a situation, the blockchain-device inputs need to be mapped to ranges 0-500, 500-1000, 1000-1500, 1500-2000.
(308) These may be called range-1, range-2, range-3, range-4.
(309) Assume a data 512 has to be mapped.
(310) Then by normalization, 512 will be mapped to range-2.
(311) The range-2 tag can be used to represent 512 while processing the variable in composite-key.
(312) Blockchain-Device Configured for Multiple Activities
(313) A blockchain-device may be configured for multiple activities, with each activity represented by the different address, different control-code, different metadata. The blockchain-device will be listening for inputs corresponding to each of the addresses. Then after processing inputs for each of the blockchain address, corresponding activity for that blockchain address may be performed.
(314) Each of the blockchain address may be derived from same UID-key or different UID-keys.
(315) When a blockchain-device is associated with multiple addresses, it may so happen, some of the addresses may be activated, some may not be activated etc. Accordingly, activities associated with these addresses will vary.
(316) Blockchain-Device Activation Based on Value, State of Blockchain Address
(317) The controlling-data associated with blockchain device will get activated as and when a blockchain value is deposited into blockchain address.
(318) This will make the blockchain-device execution dependent on spending that value in blockchain address, to successfully do the transaction.
(319) Some blockchain device activities may be triggered based on blockchain value(like bitcoin value) in the blockchain address.
(320) Some blockchain device activities may be triggered based on the certain state of blockchain address.
(321) State Trigger:
(322) The various states of blockchain address that could trigger the blockchain device activity are the following state of blockchain address not having any record in the blockchain state of blockchain address having zero value state of blockchain address having some value state of blockchain address after transacting some value state of blockchain address after at least one past transacting
State Trigger Example
(323) Consider a situation where a blockchain address is given to a blockchain-device. The blockchain-device finds there is no entry in blockchain for that address. This shows that the controlling-system has not activated the blockchain address. This indicates that blockchain-device is yet to get activated (the state is blockchain address not having any record in blockchain).
(324) In the above example, the operation corresponding to state blockchain address not having any record in blockchain is triggered by the blockchain address.
(325) Value Trigger:
(326) A blockchain activity may depend on certain value to be found in blockchain address. In such situations, only when the value is found the activity gets triggered.
Value Trigger Example
(327) Consider a situation, where a financial transaction should happen only if a particular amount is found in the blockchain-address. In this application when a required blockchain value is deposited into the blockchain address, the financial transaction gets triggered.
(328) In the above example, the operation is triggered based on the value of blockchain address.
(329) Blockchain-Device Accepting One or More Smart Contract Inputs
(330) Any smart contract (custom-contract) that is known to work and is integrated with disclosed method of controlling blockchain device, such systems may need to take <custom-input> needed by <custom-contract> for redeeming the smart contract.
(331) This can be done by providing <custom-input> after the composite-key for redeem-script-input.
(332) This is shown in example
(333) This can be seen in
(334) The content of line C407 is shown below 6784025dbd1b04f5c708e9f7775649ff89ec03dfef34bfad94b8f41c0e450f37b9fff5
(335) The combined input (<custom-input> and composite-key) can be seen in line C409 in
(336) The <custom-input> can be seen in
(337) The result true C503, in
(338) In the example above, one smart contract input is used along with disclosed method, however, in other embodiments, many smart contract inputs can be used.
(339) Blockchain-Device Using the Signature in Smart Contract Input.
(340) Consider a situation of using disclosed methods, wherein a valid user wants to use same P2SH address more than one time. After the first transaction execution, the transaction output data available in public records of blockchain will have inputs given for transaction. This will create vulnerability to attack blockchain address.
(341) To overcome this the blockchain-device could share a public-key part of random Key Pair created by Elliptic Curve Digital Signature Algorithm, with the controlling-system. Which would then be used to create a dependency of signature of public-key owner to spend value in blockchain address by controlling-system. This dependency of signature will prevent an attack on blockchain address.
(342) In that situation, the owner of the public-key may need to sign the request to redeem. This ownership will be verified by the miners while validating redeem-script and redeem-script-input.
(343) If the signature verification <custom-contract> is
(344) OP_DUP OP_HASH160 <pubKeyHash>OP_EQUALVERIFY OP_CHECKSIG
(345) The corresponding <custom-input> will be <sig><pubKey>
(346) where <pubKey> owner has to sign for the transaction.
(347) Then the redeem-script-input using smart contract input will be <sig><pubKey><composite-key>
(348) The above is similar to the combined input (<custom-input> and composite-key) that can be seen in line C409 in
(349) Various Type of Blockchain-Devices
(350) The blockchain-devices could be any electronic device connected to moving object, financial transaction, device management, license management, usage management, industrial processes, drones, valves, switches etc, having the ability to interact with blockchain.
(351) The type of blockchain-devices may be broadly classified based on the type of activity from a list of activities like financial activity, asset activity, device activity, movement activity, game activity. The performed activity may be to lock, unlock, start, stop, create, delete, update, remove, empty, add, transfer, issue depending on the type of activity.
(352) Coupled Blockchain-Device
(353) In applications where the blockchain-device need to use same UID-key multiple times with another user (controlling-system), a relation is established between the two to use a common variable, in composite-key. The common variable is changed each time before using. This results in new blockchain address each time.
(354) The value of the common variable may be obtained by programming logic or using some common data or sharing the common data in the different channel like email or SMS etc.
(355) This is called coupling blockchain-device with controlling-system.
(356) This will facilitate the same UID-key to be used multiple times, without compromising on the security of blockchain-addresses.
(357) 5.0 Computer Program Product for Controlling Blockchain-Device
(358) A computer program product, namely a computing system B809 consisting of software connected to the computer-readable (storage) medium which is non-transitory namely blockchain, consisting of processors, memory, hard disk, the network wherein one or more methods of processing controlling-system B801 to control one or more computing devices called blockchain-devices B807. One or more control-codes may be taken from terminals B804. One or more parts of controlling-data being stored in servers and databases B803, one or more parts given to other accessories B806 connected to blockchain-device. One or more parts of controlling-data sent through communication channels of communication-system B802 to blockchain device B807. The execution of blockchain device to depend on data in blockchain address.
(359) A computer program product, namely a computing system B810 consisting of software connected to the computer-readable (storage) medium which is non-transitory namely blockchain B808 and running on blockchain-devices B807 that can configure themselves or get configured by external devices, or other computing systems B805. The blockchain devices to get contextual information from accessories B806. One or more systems to process and check if the data received from accessories against the data of blockchain address. The blockchain-device may prompt the user and perform the transaction. The blockchain-device may perform an action (activity) based on the success of the transaction. The blockchain-device may perform an activity based on correctness of data entered. The blockchain-device may perform an action(activity) based on at least one past successful transaction.
(360) The one or more computing systems comprising of controlling-systems, communication-systems, blockchain-devices running on systems having software connected to the computer-readable (storage) medium which is non-transitory namely blockchain with processors, memories, hard disks, networks.
(361) The one or more computing systems of blockchain running on one or more nodes of computer-readable (storage) medium which is non-transitory namely blockchain, they being connected through wired or wireless networks.
(362) 6.0 Blockchain-Service for Controlling Blockchain-Device
(363) A controlling-blockchain-service B903 to provide controlling-data for various type of control-codes that can be taken from terminals B904, that can be used to control blockchain-devices B907, that can happen through communication-systems that are connecting blockchain-devices.
(364) The controlling-blockchain-service B903 being provided by one or more computing systems connected to the controlling system running methods or processes of creating controlling-data.
(365) The blockchain-device B907 connected to device-blockchain-service B905 getting one or more set of data from accessories B906 connected to blockchain-device through communication-system B902.
(366) The device-blockchain-service to provide one or more computing services to blockchain-device which has one or more methods or processes needed by the blockchain-device and accessories.
(367) 7.0 Use Cases
(368) Use Case: Device Execution by a User at Specific GPS Location
(369) Assume a blockchain-device connected to blockchain has to be executable, based on a PIN and a specific GPS location. The control-codes specific to GPS and PIN is processed using disclosed methods to create blockchain address. The blockchain address is activated. The blockchain-device is provided with controlling-data.
(370) The PIN is sent in the different channel to blockchain-device, say by SMS to the user. The blockchain-device is capable of getting GPS as contextual information.
(371) The blockchain-device will take the PIN from user and contextual-input from GPS location. Then perform the transaction using GPS and PIN. If the PIN or GPS is wrong, the composite-key will be wrong and the transaction will fail.
(372) This will ensure the device execution happens only in specific GPS location and in the presence of the user with the PIN.
(373) Use Case: Drone Unlocking at Specified GPS Location
(374) Assume a drone is programmed to unlock a consignment at a specific location. Using disclosed methods, the location to unlock is secretly programmed inside blockchain address. Then blockchain address is activated.
(375) The drone blockchain-device will keep getting GPS context information and feeding it to blockchain-device for performing the transaction. As soon as it reaches specified location, the transaction will be successful, using location GPS data. Then the drone may unlock consignment.
(376) If the drone reaches the wrong location, the GPS data won't match the required GPS coordinates, so transaction won't be successful and hence the drone may not unlock the consignment in the wrong location.
(377) Use Case: Money Transfer/Coupon Transfer.
(378) Assume a money transfer coupon has to be issued, which should be encashable by any coupon encashing device.
(379) Using disclosed methods a control-code is created, which may be an OTP. Using the control-code, blockchain address and controlling-data are created. The OTP is sent to the user by SMS. The coupon controlling-data may be printed as a QR-code. The blockchain-address is activated.
(380) For redeeming, the coupon holder will then submit the coupon for a coupon encashing device. The coupon encashing device would scan the QR-code, then it may prompt the user for OTP. Once the user provides the OTP, the coupon encashing device could perform the transaction and encash the coupon.
(381) Use Case: Document Signing with Multiple Conditions.
(382) Assume an authority needs to get a record of the document being signed in a specific place, by a specific person.
(383) The person is identified by OTP sent to his mobile phone. The said document is identified by its hash. The said place is identified by its GPS coordinates.
(384) Upon identifying the above items by authority, the below string is created <OTP-person-1><GPS-loc><doc-hash><UID-key>
(385) Using disclosed methods blockchain address and controlling-data is created. The blockchain address is activated. The user's mobile app acts as a blockchain-device. It will obtain some of the controlling data.
(386) The UID-key is assigned to mobile app of the user. This is done by scanning a QR-code of controlling-data. The mobile app will get SMS with OTP. The GPS location is taken automatically by mobile. The document hash is verified with provided hash.
(387) The user will then confirm in the mobile app of the agreement. The transaction is performed in the blockchain. This ensures the document is signed under provided conditions.
(388) Use Case: Multi-User Validation.
(389) Assume a service needs approval from 3 users.
(390) Using disclosed method multi-user, the name-code pair is created in JSON format.
(391) This JSON data is converted to blockchain address and activated using disclosed methods.
(392) Each user is sent their respective codes through SMS. Each user will provide the code received. The service validator has a blockchain-device in the web application, which accepts code each of the users has received.
(393) Once all the users have provided codes the web application performs the transaction, to redeem value in blockchain address. This will validate all users having received the validation-code and approved. If a user does not want to approve, he will not give the code. This will ensure multi-user approval.
(394) In the disclosure, the examples and descriptions involving the bitcoin system are provided as an example in the foregoing. However, embodiments of the present disclosure are not limited to bitcoin. The embodiments of the present disclosure are employed for explaining certain concepts. Modifications to embodiments of the disclosure are possible without departing from the scope of the disclosure as defined by the accompanying claims. Expressions such as including, comprising, incorporating, consisting of, have, is used to describe and claim the present disclosure are intended to be construed in a non-exclusive manner, namely allowing for items, components or elements not explicitly described also to be present. Reference to the singular is also to be construed to relate to the plural.