IP Library › Granted Patent US 11,861,606
Granted Patent B2
US 11,861,606 · App. 17/571,303 · Granted Jan 2, 2024

Blockchain system for confidential and anonymous smart contracts

Inventors: Shashank Agrawal (Mountain View, CA); Karl Benedikt Bünz (Palo Alto, CA); Mahdi Zamani (Palo Alto, CA); Dan Boneh (Stanford, CA)
Assignees: Visa International Service Association; THE BOARD OF TRUSTEES OF THE LELAND STANFORD JUNIOR UNIVERSITY
G06Q20/383G06Q20/0658G06Q20/3678H04L9/008H04L9/0637H04L9/3218H04L9/3239H04L9/50H04L2209/56
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,861,606
App. No.
17/571,303
Granted
Jan 2, 2024
Kind
B2
Abstract

Blockchain-based, smart contract platforms have great promise to remove trust and add transparency to distributed applications. However, this benefit often comes at the cost of greatly reduced privacy. Techniques for implementing a privacy-preserving smart contract is described. The system can keep accounts private while not losing functionality and with only a limited performance overhead. This is achieved by building a confidential and anonymous token on top of a cryptocurrency. Multiple complex applications can also be built using the smart contract system.

Claims (34)

1. A method comprising:

generating, by a platform smart contract interface executed on a user computing device, a transaction request to conduct a transaction between a first account and a second account, the transaction request including: (i) a first public key associated with the first account, a first operand ciphertext generated by encrypting a negative of a first amount using the first public key, (ii) a second public key associated with the second account, a second operand ciphertext generated by encrypting a positive of the first amount using the second public key, (iii) a third public key associated with a third account, a third operand ciphertext generated by encrypting a second amount using the third public key, (iv) a smart contract address associated with an application smart contract, and (v) a signature generated based on the smart contract address;

transmitting the transaction request to a computing device, and wherein the computing device thereafter

locks at least the first, second, and third accounts to the application smart contract, in response to receiving the transaction request;

executes the application smart contract to perform the transaction between the first account and the second account, the transaction causing a first balance associated with the first account to be decremented by the first amount and a second balance associated with the second account to be incremented by the first amount, and a third balance associated with the third account to be updated by the second amount that is different than the first amount;

unlocks at least the first, second, and third accounts from the application smart contract; and

responsive to unlocking of at least the first, second, and third accounts by the application smart contract, updates: (1) a first ciphertext representing the first balance of the first account by adding the first operand ciphertext to the first ciphertext, (2) a second ciphertext representing the second balance of the second account by adding the second operand ciphertext to the second ciphertext, and (3) a third ciphertext representing the third balance of the third account by adding the third operand ciphertext to the third ciphertext.

2. The method of claim 1 , further comprising:

generating, by the platform smart contract interface executed on the user computing device, the signature based on a counter associated with the user computing device.

3. The method of claim 1 , wherein locking at least the first, second, and third accounts to the application smart contract, executing the application smart contract to perform the transaction between the first account and the second account, and unlocking at least the first, second, and third accounts from the application smart contract is performed by a platform smart contract of a blockchain network executed on the computing device.

4. The method of claim 1 , wherein the transaction request is received during a particular epoch, and wherein locking of the first account occurs in a subsequent epoch after the particular epoch, each epoch corresponding to a predetermined number of blocks in a blockchain of a blockchain network.

5. The method of claim 1 , wherein the first amount corresponds to an amount associated with the transaction request and the second amount is a zero amount.

6. The method of claim 1 , wherein while the first account is locked to the application smart contract, only the application smart contract is permitted to unlock the first account.

7. The method of claim 1 , wherein the signature is generated based on an epoch base derived from hashing a predetermined string and an epoch number of an epoch during which the transaction is initiated.

8. The method of claim 7 , wherein the epoch corresponds to a predetermined number of blocks in a blockchain of a blockchain network.

9. The method of claim 1 , wherein the first account and the second account participate in the transaction and the third account does not participate in the transaction associated with the transaction request.

10. A computing system comprising:

a processor; and

a memory storing executable instructions, which when executed by the processor, causes the computing system to:

generate a transaction request to conduct a transaction between a first account and a second account, the transaction request including: (i) a first public key associated with the first account, a first operand ciphertext generated by encrypting a negative of a first amount using the first public key, (ii) a second public key associated with the second account, a second operand ciphertext generated by encrypting a positive of the first amount using the second public key, (iii) a third public key associated with a third account, a third operand ciphertext generated by encrypting a second amount using the third public key, (iv) a smart contract address associated with an application smart contract, and (v) a signature generated based on the smart contract address; and

transmit the transaction request to a computing device, wherein the computing device thereafter:

locks at least the first, second, and third accounts to the application smart contract, in response to receiving the transaction request;

executes the application smart contract to perform the transaction between the first account and the second account, the transaction causing a first balance associated with the first account to be decremented by the first amount and a second balance associated with the second account to be incremented by the first amount, and a third balance associated with the third account to be updated by the second amount that is different than the first amount;

unlocks at least the first, second, and third accounts from the application smart contract; and

responsive to unlocking of at least the first, second, and third accounts by the application smart contract, updates: (1) a first ciphertext representing the first balance of the first account by adding the first operand ciphertext to the first ciphertext, (2) a second ciphertext representing the second balance of the second account by adding the second operand ciphertext to the second ciphertext, and (3) a third ciphertext representing the third balance of the third account by adding the third operand ciphertext to the third ciphertext.

11. The computing system of claim 10 , wherein the signature is computed based on a counter.

12. The computing system of claim 10 , wherein the transaction request is received during a particular epoch, and wherein locking of the first account occurs in a subsequent epoch after the particular epoch, each epoch corresponding to a predetermined number of blocks in a blockchain of a blockchain network.

13. The computing system of claim 10 , wherein while the first account is locked to the application smart contract, only the application smart contract is permitted to unlock the first account.

14. The computing system of claim 10 , wherein the transaction decrements the first amount from the first balance, wherein the transaction is stored as a pending transfer transaction of the first account during a particular epoch, and wherein rollover of the pending transfer transaction of the first account occurs in a subsequent epoch after the particular epoch, each epoch corresponding to a predetermined number of blocks in a blockchain of a blockchain network.

15. The computing system of claim 14 , wherein the rollover of the pending transfer transaction is performed in response to receiving a subsequent transaction involving the first account.

16. The computing system of claim 10 , wherein the first amount corresponds to an amount associated with the transaction request and the second amount is a zero amount.

17. The computing system of claim 10 , wherein the signature is generated based on an epoch base derived from hashing a predetermined string and an epoch number of an epoch during which the transaction is initiated, and wherein the epoch corresponds to a predetermined number of blocks in a blockchain of a blockchain network.

18. The computing system of claim 10 , wherein the application smart contract is one of a sealed-bid auction smart contract, a payment channel smart contract, a stake voting smart contract, or a proof-of-stake smart contract.

19. The computing system of claim 10 , wherein the application smart contract is written in a cryptocurrency platform programming language.

Continuity (3)
Continuation 16206661 · Nov 30, 2018
Provisional Application 62593154 · Nov 30, 2017
Related Publication 20220129884A1 · Apr 28, 2022