IP Library Granted Patent US 10,050,779
Granted Patent B2
US 10,050,779 · App. 15/838,003 · Granted Aug 14, 2018

Checkout and payment

Inventors: Andrew E. Alness (Santa Cruz, CA); James Bradley Hudon (San Francisco, CA)
Assignee: Coinbase, Inc.
H04L9/0819G06Q20/065G06Q20/3823
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 10,050,779
App. No.
15/838,003
Granted
Aug 14, 2018
Kind
B2
Abstract

A key ceremony application creates bundles for custodians encrypted with their passphrases. Each bundle includes master key share. The master key shares are combined to store an operational master key. The operational master key is used for private key encryption during a checkout process. The operational private key is used for private key decryption for transaction signing in a payment process. The bundles further include TLS keys for authenticated requests to create an API key for a web application to communicate with a service and to unfreeze the system after it has been frozen by an administrator.

Claims (69)

1. A host computer system executing on a set of host computer devices communicably coupled over a bitcoin network to a customer computer system executing on one or more of a set of customer computer devices, the host computer system comprising:

a web application that receives, prior to receiving a request for payment, a request for a first address, and requests the first address from a service executing on the set of host computer devices;

a checkout module that receives the request for the first address, generates the first address and the private key in response to the request for the first address, encrypts the private key to generate an encrypted private key, stores the first address and the encrypted private key, and provides the first address to the web application, wherein the web application: receives the first address from the service, transmits the first address to the customer computer system, receives a request for payment to a bitcoin address, the request for payment including an amount of bitcoin to be paid, generates an unsigned transaction in response to receiving the request for payment, the unsigned transaction including the amount of bitcoin to be paid in the request for payment, and requests a signing of the unsigned transaction to create a signed transaction; and

a payment module that receives the request for signing the transaction from the checkout module, determines the first address corresponding to the bitcoin address in the unsigned transaction, determines the private key stored in association with the first address, signs the transaction with the private key to create the signed transaction, and provides the signed transaction to the web application, the web application receiving the signed transaction and broadcasting the signed transaction over the bitcoin network;

wherein the web application, the checkout module, and the payment module are executed by one or more of the set of host computer devices.

2. The host computer system of claim 1 , further comprising:

a master key loader that stores an operational master key in memory of the service, wherein the checkout module encrypts the private key with the operational master key to generate an encrypted private key that is stored, and decrypts the encrypted private key with the operational master key to generate a decrypted private key for signing the transaction, wherein the master key loader is executed by one or more of the set of host computer devices.

3. The host computer system of claim 2 , further comprising:

a key ceremony application, executed by one or more of the set of host computer devices, that creates a for-distribution master key, stores the for-distribution master key in the memory, splits the for-distribution master key into N shares, distribute the N shares among N custodians, and clears the for-distribution master key from the memory; and

wherein the master key loader receives at least M of the N shares, where M is equal to or less than N, and derives the operational master key from the M shares before storing the operational master key in the memory.

4. The host computer system of claim 1 , further comprising a freeze flag logic, executed by one or more of the set of host computer devices, that detects a freeze flag on-state, disallows signing of the transaction in response to detecting the freeze flag on-state, detects a freeze flag off-state, and allows signing of the transaction in response to detecting the freeze flag off-state.

5. The host computer system of claim 4 , wherein the freeze flag logic receives at least a plurality of authenticated requests to unfreeze transaction signing, and allows signing of the transactions upon a determination by the service that the plurality of authenticated requests is at least equal to a predetermined number.

6. A method of transacting bitcoin comprising:

receiving, by a web application executed by one or more of a set of web application devices, prior to receiving a request for payment, a request for address;

requesting, by the web application, an address from a service;

receiving, by a service executed by one or more of a set of host computer devices, the request for address;

generating, by the service, an address and a private key in response to the request for address;

storing, by the service, the address and the private key in association with one another;

providing, by the service, the address to the web application;

receiving, by the web application, the address from the service;

transmitting, by the web application, the address to a customer computer system;

receiving, by the web application, a request for payment to a bitcoin address, the request for payment including an amount of bitcoin to be paid;

generating, by the web application, an unsigned transaction in response to receiving the request for payment, the unsigned transaction including the amount of bitcoin to be paid in the request for payment;

requesting, by the web application, a signing of the unsigned transaction to create a signed transaction;

receiving, by the service, the request for signing the transaction;

determining, by the service, the address corresponding to the bitcoin address in the unsigned transaction;

determining, by the service, the private key stored in association with the address;

signing, by the service, the transaction with the private key to create the signed transaction;

providing, by the service, the signed transaction to the web application;

receiving, by the web application, the signed transaction; and

broadcasting, by the web application, the signed transaction over the bitcoin network.

7. The method of claim 6 , further comprising:

storing, by a master key loader executed by one or more of the set of host computer devices, an operational master key in memory of a service; and

encrypting, by the service, the private key with the operational master key to generate an encrypted private key that is stored; and

decrypting, by the service, the encrypted private key with the operational master key to generate a decrypted private key for signing the transaction.

8. The method of claim 7 , further comprising:

creating, by a key ceremony application service executed by one or more of the set of host computer devices, a for-distribution master key;

storing, by the key ceremony application, the for-distribution master key in the memory;

splitting, by the key ceremony application, the for-distribution master key into N shares;

distributing, by the key ceremony application, the N shares among N custodians;

clearing, by the key ceremony application, the for-distribution master key from the memory;

receiving, by the key ceremony application, at least M of the N shares, where M is equal to or less than N; and

deriving, by the key ceremony application, the operational master key from the M shares before storing the operational master key in the memory.

9. The method of claim 6 , further comprising:

detecting, by the service, a freeze flag on-state;

disallowing, by the service, signing of the transaction in response to detecting the freeze flag on-state;

detecting, by the service, a freeze flag off-state; and

allowing, by the service, signing of the transaction in response to detecting the freeze flag off-state.

10. The method of claim 9 , further comprising:

receiving, by the service, at least a plurality of authenticated requests to unfreeze transaction signing, the service allowing signing of the transactions upon a determination by the service that the plurality of authenticated requests is at least equal to a predetermined number.

11. A non-transitory computer-readable medium having stored thereon a set of instructions that, when executed by a processor of a computer carries out a method of transacting bitcoin comprising:

receiving by a web application executed by one or more of a set of host computer devices, prior to receiving a request for payment, a request for a first address;

requesting, by the web application, the first address from a service;

receiving, by a service executed by one or more of the set of host computer devices, the request for the first address;

generating, by the service, the first address and a private key in response to the request for the first address;

storing, by the service, the address and the private key;

providing, by the service, the first address to the web application;

receiving, by the web application, the first address from the service;

transmitting, by the web application, the first address to the customer computer system;

receiving, by the web application, a request for payment to a bitcoin address, the request for payment including an amount of bitcoin to be paid;

generating, by the web application, an unsigned transaction in response to receiving the request for payment, the unsigned transaction including the amount of bitcoin to be paid in the request for payment;

requesting, by the web application, a signing of the unsigned transaction to create a signed transaction;

receiving, by the service, the request for signing the transaction;

determining, by the service, the first address corresponding to the bitcoin address in the unsigned transaction;

determining, by the service, the private key stored in association with the first address;

signing, by the service, the transaction with the private key to create the signed transaction;

providing, by the service, the signed transaction to the web service;

receiving, by the web application, the signed transaction; and

broadcasting, by the web application, the signed transaction over a bitcoin network.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2018
From: ALNESS, ANDREW E.; HUDON, JAMES BRADLEY
To: COINBASE, INC.
Reel/Frame 045018/0576 →
Continuity (3)
Division 15647889 · Jul 12, 2017
Division 14716100 · May 19, 2015
Related Publication 20180102898A1 · Apr 12, 2018
Cited By (92)
US 12,197,696 US 12,198,130 US 12,205,121 US 12,206,674 US 12,206,790 US 12,217,224 US 12,217,248 US 12,217,254 US 12,223,091 US 12,229,384 US 12,229,385 US 12,231,573 US 12,231,574 US 12,238,051 US 12,238,112 US 12,238,222 US 12,244,688 US 12,248,539 US 12,248,611 US 12,254,452 US 12,255,988 US 12,256,023 US 12,271,466 US 12,273,460 US 12,278,806 US 12,294,661 US 12,299,657 US 12,299,691 US 12,301,660 US 12,314,379 US 12,314,435 US 12,316,740 US 12,321,490 US 12,321,930 US 12,328,339 US 12,328,382 US 12,333,047 US 12,333,551 US 12,335,364 US 12,346,416 US 12,348,648 US 12,354,090 US 12,354,111 US 12,367,468 US 12,373,884 US 12,375,257 US 12,380,182 US 12,380,433 US 12,395,318 US 12,406,237 US 12,432,070 US 12,445,287 US 12,450,613 US 12,462,248 US 12,469,015 US 12,469,025 US 12,470,369 US 12,470,371 US 12,493,716 US 12,493,874 US 12,499,424 US 12,500,740 US 12,505,180 US 12,505,435 US 12,511,647 US 12,511,649 US 12,518,256 US 12,526,132 US 12,530,205 US 12,530,680 US 12,531,743 US 12,536,599 US 12,554,881 US 12,561,668 US 12,562,892 US 12,562,907 US 12,591,864 US 12,602,682 US 12,609,815 US 12,619,993 US 12,647,255 US 12,652,164 US 12,664,302 US 12,675,604 US 12,681,619 US 12,695,598 US 12,695,635 US 12,699,499 US 12,699,805 US 12,699,974 US 12,711,473 US 12,711,492