| CPC G06Q 20/3674 (2013.01) [G06Q 20/401 (2013.01); H04L 9/3236 (2013.01); H04L 9/3247 (2013.01); G06Q 2220/00 (2013.01); H04L 9/50 (2022.05)] | 13 Claims |

|
1. A method of authenticating a user of a blockchain, the user having a hierarchical deterministic private key generation wallet, organized in a hierarchical tree structure of nodes, with branches between the nodes, wherein each node has a corresponding index identifying the node, the method comprising:
determining, by the user, a particular identifier that uniquely identifies a particular smart contract of a plurality of smart contracts deployed on the blockchain to which the user can submit a transaction;
determining a specific private key to the particular smart contract by (1) identifying, among all paths within the hierarchical tree structure, a particular path between a master private key of the user at a root node of the hierarchical tree structure and the specific private key specific to the particular smart contract at a particular leaf node of the hierarchical tree structure, the determined particular path traversing a plurality of particular nodes within the hierarchical tree structure, wherein the particular path is defined by a sequence of indices, an index or indices of at least one of the particular nodes are identical to the particular identifier, and (2) calculating the specific private key using the sequence of indices defining the particular path to the particular leaf node corresponding to the particular smart contract;
generating, by the user, the transaction, which includes an issuing account address of the user, signing the transaction using the specific private key, and transmitting the transaction to the particular smart contract; and
verifying, by the particular smart contract, after reception of the transaction, a validity of the signature and further verifying that the transaction was actually issued by the issuing account address by obtaining an account address by hashing a public key corresponding to the determined specific private key, and comparing the issuing account address included in the transaction to the obtained account address.
|