# US 10,871,948 B1 · Smart contract blockchain abstraction API

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

- Number: US 10,871,948 B1
- Document ID: US10871948B1
- Status: Granted
- Kind: B1
- Application number: 15/610,311
- Filed: 2017-05-31
- Granted: 2020-12-22
- Earliest claimed: 2017-03-30
- Assignees: Wells Fargo Bank, N.A.
- Applicants: Wells Fargo Bank, N.A.
- Inventors: Michael D. Dowling
- Web page: https://patentgrep.com/patent/US10871948B1

## CPC

- G06F 8/311: {Functional or applicative languages; Rewrite languages}
- G06F 21/64: Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F 21/604: {Tools and structures for managing or administering access control systems}
- G06Q 20/02: involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
- G06Q 20/223: {based on the use of peer-to-peer networks}
- G06Q 20/405: {Establishing or using transaction specific rules}
- H04L 9/3239: {involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD}
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- H04L 63/12: {Applying verification of the received information (cryptographic mechanisms or cryptographic arrangements for data integrity or data verification H04L9/32)}
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06Q 2220/00: Business processing using cryptography
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- 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

A system, method, and apparatus for creating and managing smart contracts on a blockchain is provided. A method includes receiving smart contract code; detecting a code language of the smart contract code; determining an optimal blockchain platform to deploy the smart contract onto; compiling the smart contract code so as to generate smart contract byte code and metadata; storing the smart contract byte code and the metadata; deploying the smart contract byte code to the optimal blockchain platform; receiving an address of the smart contract deployed to the optimal blockchain platform; assigning a name to the address; and storing the assigned name and the address in a smart contract naming directory; wherein a smart contract computing system is configured to identify the address of the deployed smart contract in response to receiving the name from a user.

## Claims

### Claim 1

A method, comprising:
receiving, by a smart contract computing system, smart contract code, the smart contract code defining terms of a smart contract;
detecting, by the computing system, a code language of the smart contract code, wherein each of a plurality of code languages is associated with at least one of a plurality of blockchain platforms;
determining, by the computing system, based at least partially on the code language of the smart contract code, an optimal blockchain platform to deploy the smart contract onto, the optimal blockchain platform being one of the plurality of blockchain platforms associated with the detected code language, the smart contract code capable of being deployed onto two or more blockchain platforms;
compiling, by the computing system, the smart contract code based on the determination of the optimal blockchain platform so as to generate smart contract byte code and metadata;
storing, by the computing system, the smart contract byte code and the metadata;
deploying, by the computing system, the smart contract byte code to the optimal blockchain platform;
receiving, by the computing system, from the optimal blockchain platform, an address of the smart contract deployed to the optimal blockchain platform;
assigning, by the computing system, a name to the address; and
storing, by the computing system, the assigned name and the address in a smart contract naming directory;
wherein the smart contract computing system is configured to identify the address of the deployed smart contract in response to receiving the name from a user.

### Claim 2 (depends on 1)

The method of claim 1, wherein deploying the smart contract byte code to the optimal blockchain platform comprises:
receiving, by the computing system, an instruction to deploy the smart contract code;
identifying, by the computing system, the stored metadata associated with the smart contract code;
verifying, by the computing system, with the stored metadata, whether the instruction to deploy the smart contract code meets requirements, defined in the metadata, for deploying the smart contract code; and
in response to verifying that the instruction to deploy the smart contract code meets the requirements, deploying, by the computing system, the smart contract byte code to the optimal blockchain platform.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
receiving from the user, by the computing system, the assigned name of the smart contract;
receiving from the user, by the computing system, an instruction to execute an operation defined in the smart contract code;
identifying, by the computing system, the stored metadata associated with the smart contract code;
verifying, by the computing system, via the stored metadata that the operation is defined in the smart contract code;
identifying, by the computing system, the address of the smart contract deployed to the optimal blockchain platform, via the assigned name;
verifying, by the computing system, that the smart contract is running on a blockchain of the optimal blockchain platform;
executing, by the computing system, the operation; and
returning, by the computing system, a result of the executed operation to the user.

### Claim 4 (depends on 3)

The method of claim 3, further comprising:
determining, by the computing system, whether the operation will require a change to the deployed smart contract byte code on the blockchain of the optimal blockchain platform;
after executing the operation, and in response to determining that the operation will require the change to the deployed byte code, monitoring, by the computing system, the blockchain for a confirmation or an error of the operation;
in response to receiving a confirmation or an error of the operation, updating, by the computing system, the stored metadata with a status of the operation; and
returning, by the computing system, the status of the operation to the user.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
making public, by the computing system, names of a plurality of operations defined in the smart contract; and
keeping private, by the computing system, the smart contract code and the smart contract byte code.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
receiving from the user, by the computing system, the assigned name of the smart contract;
receiving, by the computing system, modifying smart contract code, the modifying smart contract code including modifications to the terms of the smart contract;
compiling, by the computing system, the modifying smart contract code based on the optimal blockchain platform so as to generate modifying smart contract byte code and modifying metadata;
storing, by the computing system, the modifying smart contract byte code and the modifying metadata;
identifying, by the computing system, the address of the smart contract deployed to the optimal blockchain platform, via the assigned name;
verifying, by the computing system, that the smart contract is running on a blockchain of the optimal blockchain platform;
deploying, by the computing system, the modifying smart contract byte code to the optimal blockchain platform so as to modify the terms of the smart contract; and
in response to deploying the modifying smart contract byte code, updating, by the computing system, the metadata to include the modifying metadata.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
prior to deploying the smart contract byte code to the optimal blockchain platform, reviewing, by the computing system, the smart contract byte code for security weaknesses.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
providing by the computing system, a plurality of blockchain operations to the user, wherein the plurality of blockchain operations are defined by the optimal blockchain platform.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
receiving, by the computing system, an instruction to execute one of the plurality of blockchain operations;
translating, by the computing system, the instruction to be compatible with the optimal blockchain platform; and
executing, by the computing system, the blockchain operation.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
receiving, by the computing system, an owner address from the user, wherein the owner address is an address the user intends as an owner of the smart contract once the smart contract is deployed; and
after deploying the smart contract byte code to the optimal blockchain platform, assigning, by the computing system, the owner address as the owner of the deployed smart contract.

### Claim 11 (depends on 10)

The method of claim 10, wherein determining the optimal blockchain platform comprises:
determining, by the computing system, that more than one of the plurality of blockchain platforms is a potential optimal blockchain platform to deploy the smart contract onto solely based on the code language of the smart contract code; and
in response to determining that more than one of the plurality of blockchain platforms is a potential optimal blockchain platform based on the code language, determining, by the computing system, the optimal blockchain platform based at least partially on the code language of the smart contract code and a structure of the owner address.

### Claim 12 (depends on 1)

The method of claim 1, wherein determining the optimal blockchain platform comprises:
determining, by the computing system, that more than one of the plurality of blockchain platforms is a potential optimal blockchain platform to deploy the smart contract onto solely based on the code language of the smart contract code; and
in response to determining that more than one of the plurality of blockchain platforms is a potential optimal blockchain platform based on the code language, determining, by the computing system, the optimal blockchain platform based at least partially on the code language and a cost of deploying the smart contract to each of the plurality of blockchain platforms.

### Claim 13 (depends on 1)

The method of claim 1, wherein the address is an original address and the method further comprises:
monitoring, by the computing system, the original address of the smart contract deployed to the optimal blockchain platform;
receiving, by the computing system, an indication from the optimal blockchain platform that the smart contract deployed to the optimal blockchain platform has been assigned a new address;
assigning, by the computing system, the name to the new address; and
updating, by the computing system, the naming directory to replace the original address with the new address; and
wherein, after the naming directory is updated to replace the original address with the new address, the smart contract computing system is configured to identify the new address of the deployed smart contract, instead of the original address, in response to receiving the name from the user.

### Claim 14

A method, comprising:
receiving, by a smart contract computing system, smart contract code, the smart contract code defining terms of a smart contract;
receiving from a user, by the computing system, a call name for the smart contract;
detecting, by the computing system, a code language of the smart contract code, wherein each of a plurality of code languages is associated with at least one of a plurality of blockchain platforms;
determining, by the computing system, based at least partially on the code language of the smart contract code, an optimal blockchain platform to deploy the smart contract onto, the optimal blockchain platform being one of the plurality of blockchain platforms associated with the detected code language, the smart contract code capable of being deployed onto two or more blockchain platforms;
compiling, by the computing system, the smart contract code based on the determination of the optimal blockchain platform so as to generate smart contract byte code and metadata;
storing, by the computing system, the smart contract byte code and the metadata, including associating the smart contract byte code and the metadata with the call name;
receiving from the user, by the computing system, an instruction to deploy the smart contract known by the call name;
identifying, by the computing system, the stored smart contract byte code associated with the call name;
deploying, by the computing system, the smart contract byte code to the optimal blockchain platform;
receiving, by the computing system, from the optimal blockchain platform, an address of the smart contract deployed to the optimal blockchain platform;
assigning, by the computing system, a name to the address; and
storing, by the computing system, the assigned name and the address in a smart contract naming directory;
wherein the smart contract computing system is configured to identify the address of the deployed smart contract in response to receiving the assigned name from the user.

### Claim 15 (depends on 14)

The method of claim 14, further comprising:
receiving from the user, by the computing system, the assigned name of the smart contract;
receiving from the user, by the computing system, an instruction to execute an operation defined in the smart contract code;
identifying, by the computing system, the stored metadata associated with the smart contract code;
verifying, by the computing system, via the stored metadata that the operation is defined in the smart contract code;
identifying, by the computing system, the address of the smart contract deployed to the optimal blockchain platform, via the assigned name;
verifying, by the computing system, that the smart contract is running on a blockchain of the optimal blockchain platform;
executing, by the computing system, the operation; and
returning, by the computing system, a result of the executed operation to the user.

### Claim 16 (depends on 14)

The method of claim 14, further comprising:
providing, by the computing system, a plurality of blockchain operations to the user, wherein the plurality of blockchain operations are defined by the optimal blockchain platform;
receiving, by the computing system, an instruction to execute one of the plurality of blockchain operations;
translating, by the computing system, the instruction to be compatible with the optimal blockchain platform; and
executing, by the computing system, the blockchain operation.

### Claim 17 (depends on 14)

The method of claim 14, further comprising:
receiving, by the computing system, an owner address from the user, wherein the owner address is an address the user intends as an owner of the smart contract once the smart contract is deployed; and
wherein determining the optimal blockchain platform comprises:
determining, by the computing system, that more than one of the plurality of blockchain platforms is a potential optimal blockchain platform to deploy the smart contract onto solely based on the code language of the smart contract code; and
in response to determining that more than one of the plurality of blockchain platforms is a potential optimal blockchain platform based on the code language, determining, by the computing system, the optimal blockchain platform based at least partially on the code language of the smart contract code and a structure of the owner address.

### Claim 18 (depends on 14)

The method of claim 14, wherein determining the optimal blockchain platform comprises:
determining, by the computing system, that more than one of the plurality of blockchain platforms is a potential optimal blockchain platform to deploy the smart contract onto solely based on the code language of the smart contract code; and
in response to determining that more than one of the plurality of blockchain platforms is a potential optimal blockchain platform based on the code language, determining, by the computing system, the optimal blockchain platform based at least partially on the code language and a cost of deploying the smart contract to each of the plurality of blockchain platforms.

### Claim 19 (depends on 14)

The method of claim 14, wherein the address is an original address and the method further comprises:
monitoring, by the computing system, the original address of the smart contract deployed to the optimal blockchain platform;
receiving, by the computing system, an indication from the optimal blockchain platform that the smart contract deployed to the optimal blockchain platform has been assigned a new address;
assigning, by the computing system, the name to the new address; and
updating, by the computing system, the naming directory to replace the original address with the new address; and
wherein, after the naming directory is updated to replace the original address with the new address, the smart contract computing system is configured to identify the new address of the deployed smart contract, instead of the original address, in response to receiving the name from the user.

### Claim 20

A system, comprising a processor coupled to a non-transitory storage medium including instructions stored thereon that, when executed by the processor, cause the system to:
receive smart contract code, the smart contract code defining terms of a smart contract;
detect a code language of the smart contract code, wherein each of a plurality of code languages is associated with at least one of a plurality of blockchain platforms;
determine based at least partially on the code language of the smart contract code, an optimal blockchain platform to deploy the smart contract onto, the optimal blockchain platform being one of the plurality of blockchain platforms associated with the detected code language the smart contract code capable of being deployed onto two or more blockchain platforms;
compile the smart contract code based on the determination of the optimal blockchain platform so as to generate smart contract byte code and metadata;
store the smart contract byte code and the metadata;
deploy the smart contract byte code to the optimal blockchain platform;
receive an address from the optimal blockchain platform of the smart contract deployed to the optimal blockchain platform;
assign a name to the address; and
store the assigned name and the address in a smart contract naming directory;
wherein the system is configured to identify the address of the deployed smart contract in response to receiving the name from a user.

### Claim 21 (depends on 20)

The system of claim 20, wherein the instructions further cause the system to deploy the smart contract byte code to the optimal blockchain platform by:
receiving an instruction to deploy the smart contract code;
identifying the stored metadata associated with the smart contract code;
verifying, with the stored metadata, whether the instruction to deploy the smart contract code meets requirements, defined in the metadata, for deploying the smart contract code; and
in response to verifying that the instruction to deploy the smart contract code meets the requirements, deploying, the smart contract byte code to the optimal blockchain platform.

### Claim 22 (depends on 20)

The system of claim 20, wherein the instructions further cause the system to:
receive from the user the assigned name of the smart contract;
receive from the user an instruction to execute an operation defined in the smart contract code;
identify the stored metadata associated with the smart contract code;
verify via the stored metadata that the operation is defined in the smart contract code;
identify the address of the smart contract deployed to the optimal blockchain platform, via the assigned name;
verify that the smart contract is running on a blockchain of the optimal blockchain platform;
execute the operation; and
return a result of the executed operation to the user.

### Claim 23 (depends on 20)

The system of claim 20, wherein the instructions further cause the system to:
receive, from the user, the assigned name of the smart contract;
receive modifying smart contract code, the modifying smart contract code including modifications to the terms of the smart contract;
compile the modifying smart contract code based on the optimal blockchain platform so as to generate modifying smart contract byte code and modifying metadata;
store the modifying smart contract byte code and the modifying metadata;
identify the smart contract deployed to the optimal blockchain platform, via the assigned name;
verify that the smart contract is running on a blockchain of the optimal blockchain platform;
deploy the modifying smart contract byte code to the optimal blockchain platform so as to modify the terms of the smart contract; and
in response to deploying the modifying smart contract byte code, update the metadata to include the modifying metadata.

### Claim 24 (depends on 20)

The system of claim 20, wherein the instructions further cause the system to:
provide a plurality of blockchain operations to the user;
receive an instruction to execute one of the plurality of blockchain operations;
translate the instruction to be compatible with the optimal blockchain platform; and
execute the blockchain operation.

### Claim 25 (depends on 20)

The system of claim 20, wherein the instructions further cause the system to:
receive an owner address from the user, wherein the owner address is an address the user intends as an owner of the smart contract once the smart contract is deployed; and
determine the optimal blockchain platform by:
determining that more than one of a plurality of blockchain platforms is a potential optimal blockchain platform to deploy the smart contract onto solely based on the code language of the smart contract code; and
in response to determining that more than one of the plurality of blockchain platforms is a potential optimal blockchain platform based on the code language, determining the optimal blockchain platform based at least partially on the code language of the smart contract code and a structure of the owner address.

### Claim 26 (depends on 20)

The system of claim 20, wherein the instructions cause the system to determine the optimal blockchain platform by:
determining that more than one of the plurality of blockchain platforms is a potential optimal blockchain platform to deploy the smart contract onto solely based on the code language of the smart contract code; and
in response to determining that more than one of the plurality of blockchain platforms is the potential optimal blockchain platform based on the code language alone, determine the optimal blockchain platform based at least partially on the code language and a cost of deploying the smart contract to each of the plurality of blockchain platforms.

### Claim 27 (depends on 20)

The system of claim 20, wherein the address is an original address, and wherein the instructions further cause the system to:
monitor the original address of the smart contract deployed to the optimal blockchain platform;
receive an indication from the optimal blockchain platform that the smart contract deployed to the optimal blockchain platform has been assigned a new address;
assign the name to the new address; and
update the naming directory to replace the original address with the new address; and
wherein, after the naming directory is updated to replace the original address with the new address, the system is configured to identify the new address of the deployed smart contract, instead of the original address, in response to receiving the name from the user.

### Claim 28 (depends on 20)

The system of claim 20, the system further comprising a test network configured to test the smart contract byte code prior to the smart contract byte code being deployed to the optimal blockchain platform by the computing system, the test determining whether the smart contract byte code will deploy correctly to the optimal blockchain platform.

### Claim 29 (depends on 20)

The system of claim 20, wherein the instructions further include a plurality of instances of an application programming interface (API);
wherein each instance of the API, when executed by the processor, causes the system to separately perform, for a plurality of sets of smart contract code, steps of receiving smart contract code, detecting a code language, determining an optimal blockchain platform, compiling the smart contract code, storing the smart contract byte code and the metadata, deploying the smart contract byte code, receiving an address of the smart contract, assigning a name to the address, and storing the associated name and the address; and
wherein each instance of the API is configured to be executed simultaneous to the remaining plurality of API instances.

### Claim 30 (depends on 29)

The system of claim 29, wherein while a given API instance is causing the system to perform the step of compiling the smart contract code, the given API instance causes the system to not perform any other step.
