Blockchain system for confidential and anonymous smart contracts
AssigneesVisa International Service Association, The Board of Trustees of the Leland Stanford Junior University
InventorsShashank Agrawal, Karl Benedikt Bünz, Mahdi Zamani, Dan Boneh
Life of this patent
Estimating the term…
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.
Claims20
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;
- executing, by the computing device, the application smart contract to perform one or more transactions causing the first balance to be decremented by a first amount and the second balance to be incremented by a second 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;
- updating, by the computing device, 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;
- and
- updating, by the computing device, the second ciphertext by adding a second operand ciphertext to the second ciphertext, the second operand ciphertext being generated by encrypting the second amount using the second public key.
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;
- executing the application smart contract to perform one or more transactions causing the first balance to be decremented by a first amount and the second balance to be incremented by a second amount;
- unlocking, by the application smart contract, at least the first, second, and third accounts from the application smart contract;
- 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;
- and
- updating the second ciphertext by adding a second operand ciphertext to the second ciphertext, the second operand ciphertext being generated by encrypting the second amount using the second public key.
Dependencies are inferred from the claim text.