IP Library › Granted Patent US 11,257,077
Granted Patent B2
US 11,257,077 · App. 16/206,661 · Granted Feb 22, 2022

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/3239H04L2209/38H04L2209/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,257,077
App. No.
16/206,661
Granted
Feb 22, 2022
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 (40)

1. A method comprising:

storing, by a computing device, a set of entries representing a state of a platform smart contract in a blockchain network, the set of entries including at least:

a first entry comprising a first public key associated with a first account, and a first ciphertext representing a first balance of the first account;

a second entry comprising a second public key associated with a second account, and a second ciphertext representing a second balance of the second account; and

a third entry comprising a third public key associated with a third account, and a third ciphertext representing a third balance of the third account;

locking, by the platform smart contract executing on the computing device, at least the first, second, and third accounts to an application smart contract, wherein the first account is locked in response to receiving a lock request from a user device associated with the first account, the lock request including the first public key, a smart contract address associated with the application smart contract, and a signature generated based on the smart contract address;

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

unlocking, by the application smart contract executing on the computing device, at least the first, second, and third accounts from the application smart contract; and in response to the unlocking of at least the first, second, and third accounts by the application smart contract, the computing device is further programmed for:

updating the first ciphertext by adding a first operand ciphertext to the first ciphertext, the first operand ciphertext being generated by encrypting a negative of the first amount using the first public key;

updating the second ciphertext by adding a second operand ciphertext to the second ciphertext, the second operand ciphertext being generated by encrypting a positive of the first amount using the second public key; and

updating the third ciphertext by adding a third operand ciphertext to the third ciphertext, the third operand ciphertext being generated by encrypting the second amount using the third public key associated with the third account.

2. The method of claim 1 , wherein the lock 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 the blockchain network.

3. 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.

4. The method of claim 1 , 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 to 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 the blockchain network.

5. The method of claim 4 , wherein the rollover of the pending transfer transaction is performed in response to receiving a subsequent transaction involving the first account.

6. The method of claim 1 , wherein transaction data of the transaction in the blockchain network includes a signature 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, wherein each epoch corresponds to a predetermined number of blocks in a blockchain of the blockchain network.

7. The method of claim 1 , 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.

8. The method of claim 1 , wherein the platform smart contract and the application smart contract are written in a cryptocurrency platform programming language.

9. A computing system comprising:

a processor; and

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

storing a set of entries representing a state of a platform smart contract in a blockchain network, the set of entries including at least:

a first entry comprising a first public key associated with a first account, and a first ciphertext representing a first balance of the first account;

a second entry comprising a second public key associated with a second account, and a second ciphertext representing a second balance of the second account; and

a third entry comprising a third public key associated with a third account, and a third ciphertext representing a third balance of the third account;

locking, by the platform smart contract, at least the first, second, and third accounts to an application smart contract, wherein the first account is locked in response to receiving a lock request from a user device associated with the first account, the lock request including the first public key, a smart contract address associated with the application smart contract, and a signature generated based on the smart contract address;

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

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

in response to the unlocking of at least the first, second, and third accounts by the application smart contract, the computing system is further programmed for:

updating the first ciphertext by adding a first operand ciphertext to the first ciphertext, the first operand ciphertext being generated by encrypting a negative of the first amount using the first public key;

updating the second ciphertext by adding a second operand ciphertext to the second ciphertext, the second operand ciphertext being generated by encrypting a positive of the first amount using the second public key; and

updating the third ciphertext by adding a third operand ciphertext to the third ciphertext, the third operand ciphertext being generated by encrypting the second amount using the third public key associated with the third account.

10. The computing system of claim 9 , wherein the lock 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 the blockchain network.

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

12. The computing system of claim 9 , 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 the blockchain network.

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

14. The computing system of claim 12 , wherein transaction data of the transaction includes a signature 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, wherein each epoch corresponds to a predetermined number of blocks in a blockchain of the blockchain network.

15. The computing system of claim 9 , 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.

16. The computing system of claim 9 , wherein the platform smart contract and the application smart contract are written in a cryptocurrency platform programming language.

17. The method of claim 1 , wherein the second amount is a zero amount.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2020
From: BÜNZ, KARL BENEDIKT
To: VISA INTERNATIONAL SERVICE ASSOCIATION
Reel/Frame 052975/0498 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 5, 2020
From: BONEH, DAN
To: THE BOARD OF TRUSTEES OF THE LELAND STANFORD JUNIOR UNIVERSITY
Reel/Frame 052568/0283 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 11, 2019
From: AGRAWAL, SHASHANK; ZAMANI, MAHDI
To: VISA INTERNATIONAL SERVICE ASSOCIATION
Reel/Frame 050971/0481 →
Continuity (2)
Provisional Application 62593154 · Nov 30, 2017
Related Publication 20190164153A1 · May 30, 2019
Cited By (1)
US 12,407,536