# US 2021/0279656 A1 · Workflow management via block chains

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2021/0279656 A1
- Document ID: US20210279656A1
- Status: Published application
- Kind: A1
- Application number: 17/316,820
- Filed: 2021-05-11
- Published: 2021-09-09
- Earliest claimed: 2017-08-02
- Assignees: Intuit Inc.
- Applicants: Intuit Inc.
- Inventors: Glenn C. SCOTT
- Web page: https://patentgrep.com/patent/US20210279656A1

## CPC

- G06Q 10/0633: Workflow analysis
- G06Q 10/1053: Employment or hiring
- H04L 9/0643: {Hash functions, e.g. MD5, SHA, HMAC or f9 MAC}
- H04L 9/3239: {involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD}
- G06Q 2220/00: Business processing using cryptography
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- H04L 2209/56: Financial cryptography, e.g. electronic payment or e-cash
- G06Q: INFORMATION 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
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Techniques are disclosed for managing workflows using block chains. An entire workflow may be stored as a finite state machine on a block chain. Each data block of the block chain may correspond to a state and related operation of a workflow. Each data block of the block chain may be used as an input to a subsequent state of the workflow. Thus, any input may be used to compute the workflow even if the input is not designed to be used by a workflow. Nested block chains, each corresponding to a different workflow or different part of a workflow may be used to increase performance of computing the workflows.

## Claims

### Claim 1

A computer-implemented method for managing workflows comprising:
obtaining, by a processor, a workflow specification, the workflow specification comprising one or more states and one or more operations, each operation of the one or more operations corresponding to at least one of the one or more states, wherein a given output for each given state of the one or more states depends on the given state and a given input;
generating, by the processor, a block chain for the workflow specification, wherein the block chain comprises an electronic data structure in which blocks are cryptographically linked; and
for a respective state of the one or more states in the workflow specification:
identifying, by the processor, an operation of the one or more operations corresponding to the respective state of the workflow;
receiving, by the processor, an attestation that a separate workflow corresponding to a separate block chain was completed successfully;
providing, by the processor, as an input to the operation, the attestation that the separate workflow corresponding to the separate block chain was completed successfully;
determining, by the processor, an output for the respective state, wherein the output comprises an attestation that the operation was completed successfully;
appending, by the processor, a respective data block to the block chain, the respective data block including a reference to the separate block chain, wherein the respective data block comprises the output for the respective state; and
transitioning, by the processor, from the respective state to a next state of the one or more states in the workflow specification.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the respective data block appended to the block chain includes a reference to a universally unique identifier (UUID) of the separate block chain.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, further comprising:
obtaining, by the processor, a given workflow specification associated with the separate block chain, the given workflow specification associated with the separate block chain containing one or more operations for the given workflow specification associated with the separate block chain; and
performing, by the processor, an operation corresponding to each of the one or more operations for the given workflow specification associated with the separate block chain.

### Claim 4 (depends on 3)

The computer-implemented method of claim 3, wherein the respective data block includes each operation of the one or more operations for the workflow specification associated with the separate block chain.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein a cryptographic hash creates a link between each data block and a preceding data block.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, further comprising authenticating, by the processor, the block chain by verifying links between data blocks in the block chain.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein an input to each of the one or more operations includes at least an attestation to an occurrence of a state corresponding to a preceding operation.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, further comprising:
computing, by the processor, a hash of the workflow specification and data related to the workflow specification; and
assigning, by the processor, the hash as an identifier of the block chain.

### Claim 9

A system for managing workflows, comprising:
one or more processors; and
a memory comprising instructions that, when executed by the one or more processors, cause the system to:
obtain a workflow specification, the workflow specification comprising one or more states and one or more operations, each operation of the one or more operations corresponding to at least one of the one or more states, wherein a given output for each given state of the one or more states depends on the given state and a given input;
generate a block chain for the workflow specification comprising at least a first data block, wherein the block chain comprises an electronic data structure in which blocks are cryptographically linked;
store the workflow specification in the first data block; and
for a respective state of the one or more states in the workflow specification:
identify an operation of the one or more operations corresponding to the respective state of the workflow;
receive an attestation that a separate workflow corresponding to a separate block chain was completed successfully;
provide as an input to the operation, the attestation that the separate workflow corresponding to the separate block chain was completed successfully;
determine an output for the respective state, wherein the output comprises an attestation that the operation was completed successfully;
append a respective data block to the block chain, the respective data block including a reference to the separate block chain, wherein the respective data block comprises the output for the respective state; and
transition from the respective state to a next state of the one or more states in the workflow specification.

### Claim 10 (depends on 9)

The system of claim 9, wherein the respective data block appended to the block chain includes a reference to a universally unique identifier (UUID) of the separate block chain.

### Claim 11 (depends on 10)

The system of claim 10, wherein the instructions, when executed by the one or more processors, further cause the system to:
obtain a given workflow specification associated with the separate block chain, the given workflow specification associated with the separate block chain containing one or more operations for the given workflow specification associated with the separate block chain; and
perform an operation corresponding to each of the one or more operations for the given workflow specification associated with the separate block chain.

### Claim 12 (depends on 11)

The system of claim 11, wherein the respective data block includes each operation of the one or more operations for the workflow specification associated with the separate block chain.

### Claim 13 (depends on 10)

The system of claim 10, wherein a cryptographic hash creates a link between each data block and a preceding data block.

### Claim 14 (depends on 13)

The system of claim 13, wherein the instructions, when executed by the one or more processors, further cause the system to authenticate the block chain by verifying links between data blocks in the block chain.

### Claim 15 (depends on 10)

The system of claim 10, wherein an input to each of the one or more operations includes at least an attestation to an occurrence of a state corresponding to a preceding operation.

### Claim 16 (depends on 10)

The system of claim 10, wherein the instructions, when executed by the one or more processors, further cause the system to:
compute a hash of the workflow specification and data related to the workflow specification; and
assign the hash as an identifier of the block chain.

### Claim 18 (depends on 17)

The computer-implemented method of claim 17, wherein the respective data block appended to the block chain includes a reference to a universally unique identifier (UUID) of the separate block chain.

### Claim 19 (depends on 18)

The computer-implemented method of claim 18, further comprising:
obtaining, by the processor, a given workflow specification associated with the separate block chain, the given workflow specification associated with the separate block chain containing one or more operations for the given workflow specification associated with the separate block chain; and
performing, by the processor, an operation corresponding to each of the one or more operations for the given workflow specification associated with the separate block chain.

### Claim 20 (depends on 19)

The computer-implemented method of claim 19, wherein the respective data block includes each operation of the one or more operations for the workflow specification associated with the separate block chain.

### Claim 97

A computer-implemented method for managing workflows comprising:
obtaining, by a processor, a workflow specification, the workflow specification comprising one or more states and one or more operations, each operation of the one or more operations corresponding to at least one of the one or more states, wherein a given output for each given state of the one or more states depends on the given state and a given input;
generating, by the processor, a block chain for the workflow specification comprising at least a first data block, wherein the block chain comprises an electronic data structure in which blocks are cryptographically linked;
storing, by the processor, the workflow specification in the first data block; and
for a respective state of the one or more states in the workflow specification:
identifying, by the processor, an operation of the one or more operations corresponding to the respective state of the workflow;
receiving, by the processor, an attestation that a separate workflow corresponding to a separate block chain was completed successfully;
providing, by the processor, as an input to the operation, the attestation that the separate workflow corresponding to the separate block chain was completed successfully;
determining, by the processor, an output for the respective state, wherein the output comprises an attestation that the operation was completed successfully;
appending, by the processor, a respective data block to the block chain, the respective data block including a reference to the separate block chain, wherein the respective data block comprises the output for the respective state; and
transitioning, by the processor, from the respective state to a next state of the one or more states in the workflow specification.
