Posted on

US-20160292672A1 Systems and methods of blockchain transaction recordation

Abstract

A computer system is provided that communicates with a distributed blockchain computing system that includes multiple computing nodes. The exchange stores an order book and a plurality of digital wallets associated with different clients. The computer system receives new data transaction requests that are added to the order book. A match is identified between data transaction requests and hashes associated with the digital wallets associated with the respective data transaction requests are generated. The counterparties receive the hashes of the other party along with information on the match and each party causes blockchain transactions to be added to the blockchain of the blockchain computing system. The computing system then monitors the blockchain to determine if both sides of the match has been added to the blockchain.

20160292672A1 PDF


United States Patent Application Publication 20160292672

Kind Code A1

Publication Date October 06, 2016

Inventor(s) FAY; Thomas et al.

SYSTEMS AND METHODS OF BLOCKCHAIN TRANSACTION RECORDATION

Abstract

A computer system is provided that communicates with a distributed blockchain computing system that includes multiple computing nodes. The exchange stores an order book and a plurality of digital wallets associated with different clients. The computer system receives new data transaction requests that are added to the order book. A match is identified between data transaction requests and hashes associated with the digital wallets associated with the respective data transaction requests are generated. The counterparties receive the hashes of the other party along with information on the match and each party causes blockchain transactions to be added to the blockchain of the blockchain computing system. The computing system then monitors the blockchain to determine if both sides of the match has been added to the blockchain.

Inventors:

FAY; Thomas (Succasunna, NJ), PANISCOTTI; Dominick (Totowa, NJ)

Applicant:

Nasdaq, Inc. (New York, NY)

Family ID:

57006280

Appl. No.:

15/086801

Filed:

March 31, 2016

Related U.S. Application Data

us-provisional-application US 62140802 20150331

Publication Classification

Int. Cl.:

G06Q20/36 (20060101); G06Q20/38 (20060101); G06Q20/40 (20060101); H04L12/26 (20060101)

U.S. Cl.:

CPC

G06Q20/363 (20130101); H04L43/08 (20130101); G06Q20/3829 (20130101); G06Q20/3827 (20130101); G06Q20/4014 (20130101); G06Q2220/00 (20130101)

Background/Summary

CROSS REFERENCE(S) TO RELATED APPLICATION(S) [0001] This application claims the benefit of U.S. Patent Application No. 62/140,802 filed Mar. 31, 2015, the entire contents of which are incorporated herein by reference.

TECHNICAL OVERVIEW
[0002] The technology herein relates to distributed transaction computer systems. More particularly, the technology herein relates to computer systems and processes that interface with a blockchain.
INTRODUCTION
[0003] Blockchain technology (sometimes simply referred to as blockchain) is a relatively new technology that has been used in digital currency implementations. It is described in a 2008 article by Satoshi Nakamoto, called “Bitcoin: A Peer-to-Peer Electronic Cash System,” the entire contents of which are hereby incorporated by reference. The blockchain is a data structure that stores a list of transactions and can be thought of as a distributed electronic ledger that records transactions between source identifier(s) and destination identifier(s). The transactions are bundled into blocks and every block (except for the first block) refers back to or is linked to a prior block in the chain. Computer nodes maintain the blockchain and cryptographically validate each new block and thus the transactions contained in the corresponding block. This validation process includes solving a computationally difficult problem that is also easy to verify and is sometimes called a “proof-of-work.”
[0004] The integrity (e.g., confidence that a previously recorded transaction has not been modified) of the entire blockchain is maintained because each block refers to or includes a cryptographic hash value of the prior block. Accordingly, once a block refers to a prior block, it becomes difficult to modify or tamper with the data (e.g., the transactions) contained therein. This is because even a small modification to the data will affect the hash value of the entire block. Each additional block increases the difficulty of tampering with the contents of an earlier block. Thus, even though the contents of a blockchain may be available for all to see, they become practically immutable.
[0005] The identifiers used for blockchain transactions are created through cryptography such as, for example, public key cryptography. For example, a user may create a destination identifier based on a private key. The relationship between the private key and the destination identifier can later be used to provide “proof” that the user is associated with the output from that created transaction. In other words, the user can now create another transaction to “spend” the contents of the prior transaction. Further, as the relationship between the destination identifier and the corresponding private key is only known by the user the user has some amount of anonymity as they can create many different destination identifiers (which are only linked through the private key). Accordingly, a user’s total association with multiple transactions included in the blockchain may be hidden from other users. While the details of a transaction may be publically available on the distributed ledger, the underlying participants to those transactions may be hidden because the identifiers are linked to private keys known only to the corresponding participants.
[0006] While blockchain technology has the potential to offer new benefits, it also poses problems for certain types of implementations. For example, a decentralized and anonymous transaction ledger can be problematic for certain types of environments that desire or require transparency and/or auditability for the transactions. There is thus a need in the art to address these and other problems.
SUMMARY
[0007] In certain example embodiments, a computer system communicates with a blockchain computer system (e.g., one or more nodes that store a distributed ledger). The computer system includes data storage (e.g., a memory), a transceiver that communicates with remote computing devices, and a processing system that includes a hardware processor. The data storage stores one or more (usually two) ordered lists of data transaction requests per type identifier. The data transaction requests are received (via the transceiver) from remote computing devices. The data storage also stores digital wallets that are each associated with a different client account. Each digital wallet includes or is linked to a corresponding private key and an identifier that has been generated using the private key. Generally, the identifiers may be used as blockchain addresses for sending and/or receiving transactions.
[0008] When a new data transaction request is received at the computer system from a remote computing devices, the request is added to an ordered list that corresponds to the request’s type identifier. The processing system is configured to execute a matching engine to identify matches between data transaction requests. In other words, the processing system identifies a match between a data transaction request stored in one of the ordered lists with another data transaction request (e.g., a newly received data transaction request). Once a match is identified, new identifiers are generated that are based on the data (e.g., the private key) of the digital wallets associated with the matched data transaction requests. The new identifiers are sent to the respective clients that then generate blockchain transactions using those identifiers. The computer system that identified the match then monitors the blockchain to determine when both blockchain transactions have been incorporated/included into the blockchain.
[0009] The features described herein may be combined to form additional embodiments and sub-elements of certain embodiments may form yet further embodiments. This summary is provided to introduce a selection of concepts that are further described below in the detailed description. This summary is intended neither to identify key features or essential features of the claimed subject matter, nor to be used to limit the scope of the claimed subject matter; rather, this summary is intended to provide an overview of the subject matter described in this document. Accordingly, it will be appreciated that the above-described features are merely examples, and that other features, aspects, and advantages of the subject matter described herein will become apparent from the following detailed description, figures, and claims.

Description

BRIEF DESCRIPTION OF THE DRAWINGS
[0010] These and other features and advantages will be better and more completely understood by referring to the following detailed description of example non-limiting illustrative embodiments in conjunction with the drawings of which:
[0011] FIG. 1 illustrates a non-limiting example function block diagram of a computer-implemented exchange system that interfaces with a blockchain according to certain example embodiments;
[0012] FIGS. 2A-2D is a series of flow charts of an example process that may be implemented using example blockchain based exchange techniques according to certain example embodiments
[0013] FIGS. 3A-3I is a series of illustrative diagrams that show processes that may be performed as part of a blockchain based exchange system;
[0014] FIG. 4 illustrates a process to performing transactions against a blockchain according to certain example embodiments; and
[0015] FIG. 5 is an example computer system according to certain example embodiments.
DETAILED DESCRIPTION
[0016] In the following description, for purposes of explanation and non-limitation, specific details are set forth, such as particular nodes, functional entities, techniques, protocols, etc. in order to provide an understanding of the described technology. It will be apparent to one skilled in the art that other embodiments may be practiced apart from the specific details described below. In other instances, detailed descriptions of well-known methods, devices, techniques, etc. are omitted so as not to obscure the description with unnecessary detail.
[0017] Sections are used in this Detailed Description solely in order to orient the reader as to the general subject matter of each section; as will be seen below, the description of many features spans multiple sections, and headings should not be read as affecting the meaning of the description included in any section.
Overview
[0018] In certain example embodiments, a computer system (i.e., an exchange computer system) stores two sorted lists of received electronic data messages that include data transaction requests (e.g. orders). When a match is identified between two (or more) orders, the exchange generates new blockchain identifiers to facilitate the blockchain transactions that will be generated. These identifiers are used by the respective clients associated with the matched orders to generate and submit blockchain transactions to a blockchain for verification thereon. Meanwhile the exchange monitors the blockchain to determine when both transactions have been verified by the blockchain (e.g., incorporated/included into one or more verified blocks of the blockchain).
[0019] FIG. 1 illustrates a non-limiting example function block diagram of an exchange computer system coupled via a network to a client system configured to create and place orders with the exchange. The exchange interacts with a blockchain. FIGS. 2A-2D an example process performed by an exchange computing system, client devices, trading parties, and a blockchain. FIGS. 3A-3I show another illustration of how client devices, exchange, and the blockchain perform the example processes described herein. FIG. 4 is another diagram that shows the example process discussed in connection with FIGS. 2A-3I. FIG. 5 shows an example hardware architecture used, in some embodiments, to implement the features shown in FIG. 1 through FIG. 4.
FIG. 1
[0020] By way of introduction, FIG. 1 shows a block diagram of an exchange computer system 100 that interfaces with a blockchain 116 and one or more user computing devices 120A and 120B via a network 110 (e.g., the Internet).
[0021] Exchange computer system 100 (which may also be termed an exchange computing system, computing system, or computer system) includes a hardware processor 102 (e.g., one or more CPUs) coupled to electronic data storage (e.g., volatile or non-volatile memory) that includes digital wallet 104 and order book 106. Digital wallet 104 and/or order book 106 may be data structures or other logical structures used to store associated data on common or dedicate electronic data storage (e.g., RAM, or a hard-drive). In certain example embodiments, dedicated hardware devices, such as a hardware security module (HSM), may be used to store information associated with digital wallet 104 or order book 106. In certain example embodiments, wallet memory may be stored on a dedicated storage hardware externally provided and in communication with exchange computer system 100.
[0022] Digital wallet 104 stores blockchain wallet information for users of user device 1 and user device 2 (and other clients or users that user the functionality provided by exchange computer system 100). A digital wallet is software and hardware, or specifically designed hardware, that stores information that allows an individual to make electronic commerce transactions that use, for example, a blockchain. The digital wallet can include or store a data structure that holds a private key (e.g., that is known to the holder of the wallet) and a series of identifiers (sometimes call wallet identifiers or walletIDs herein) that have been generated based on the private key. These identifiers are used to allow other users to “send” transactions, which are recorded on the blockchain, to that identifier. Software (e.g., a digital wallet application) associated with the stored information in the wallet may then be used to query the blockchain to determine what unspent transactions (e.g., those transaction outputs not used as input for another transaction) are associated with the identifiers that are in the wallet. Such software may then present a holistic view (e.g., via a graphical user interface) of what is “owned” by the holder of the wallet. For example, one hundred different blockchain transactions, which are each associated with 1 share of a company, may each be associated with different identifiers that have been generated using the same private key. While each transaction may appear (from the perspective of an outside third party) to be associated with a different identifier, the holder of the private key (and corresponding digital wallet) may be able to use the digital wallet to identify each the one-hundred separate transactions and belong in their wallet. The digital wallet may be programmed to provide a holistic view of all transactions that are associated with identifiers generated from the one or more private keys of a given digital wallet. Accordingly, in this example, a user may be presented with a view that they hold 100 shares of the company (as opposed to 100 separate transactions of 1 share). Thus, the identifiers that are used and/or included in the digital wallet 104 may provide blockchain transparency from the perspective of the user of the digital wallet.
[0023] In certain example embodiments, a digital wallet and its contents (e.g., private key and generated identifiers) are stored on a user controlled device 120A or 120B. In such an example, user devices 120A may transmit the identifiers and/or private key to the exchange computer system 100 for use thereby. Various elements of the digital wallet may thus be provided on the device of a user (e.g., that is owned by the user), the exchange computer system 100, or another third party system (e.g., a cloud based system that stores digital wallets and the information therein).
[0024] Wallet identifiers (and/or the private key of the wallet) that are stored in digital wallet 104 allow exchange computer system 100 to interact with blockchain 116 on behalf of the “owner” of the wallet. In certain example embodiments, the entity running the exchange computer system 100 may also store a digital wallet that includes a private key and wallet identifiers that allow customers to send payments to the exchange (e.g., transaction fees).
[0025] In certain example embodiments, the transactions on the blockchain 116 may include so-called “colored-coins.” Colored coins are added on top of a traditional blockchain transaction and are used to identify additional digital data, which may in turn be associated with a tradable asset (e.g., a digital representation thereof). The mapping between a colored coin and additional information regarding the tradable asset may be stored in database 118 of exchange computer system 100. Tradable assets can include securities or other types of tradable goods or financial products. In certain instances, tradable assets can also include digital (Bitcoin) and real currency (e.g., U.S. dollars).
[0026] Order book 106 stores electronic data messages that have been received from order submitting clients (such as clients controlling a remote computing device such as user device 1 or 2). In certain example embodiments, order book 106 stores a list of electronic data messages. In certain implementations, two separately ordered lists are stored and maintained per type identifier (e.g., per ticker symbol or other asset identifier). The two lists may correspond to the buy and sell or bid and ask “sides” of an order book for a ticker symbol. The messages may be sorted according to one or more of: price, size, order submitting entity, time, time in the order book, etc. In certain examples, an order book is divided into two sides (side x and side y, which may be buy and sell sides). As an example, in some embodiments, the order book 106 stores, for a given type identifier (e.g., “AAPL”), an ordered list of buy orders for that type identifier and an ordered list of sell orders for that type identifier, where the two ordered lists are ordered according to factors such as price, size, and/or time, etc. . . . . An electronic data message that includes a new data transaction request (also referred to as an order in this and other examples herein) is received by the exchange computer system 100 via network interface 108 from an order submitting client (e.g., user device 1 or user device 2). Upon reception of the message, the hardware processor 102 may attempt to match the order included in the newly received electronic data message to existing orders stored in the order book 106. Alternatively, or in addition (e.g., if no match is found), the received electronic data message and/or its order is stored to the order book 106 for matching against future incoming electronic data messages that include orders.
[0027] Once a potential match is identified by the exchange computer system 100, then the matched orders are “traded” and settled by using blockchain 116. Exchange computer system 100 monitors the blockchain 116 to confirm the trades have taken place and based on this monitoring further processing may be performed (e.g., satisfying regulatory requirements, auditing, logging, etc. . . . ).
[0028] Exchange computer system 100 may be coupled to (or include) database 118. Database 118 may hold account information, audit information, mappings between blockchain transactions, colored coin mappings (e.g., a list of asset or type identifiers and the asset or type that those identifiers correspond to), and other data. In certain example embodiments, each asset may have or correspond to a private key. The private key may control the new creation of “new” instances of the asset on the blockchain (just like the private key of a client controls the creation of new blockchain addresses based on that private key).
FIGS. 2A-2D
[0029] FIG. 2A shows a diagram of an example process that may be implemented according to certain example embodiments. FIG. 2A includes a user device for trading party A 120A (sometimes referred to as computing device A), a user device for trading party B (sometimes referred to as computing device B), a blockchain computer system 214 that stored a distributed ledger or blockchain (e.g., blockchain 116), and exchange computer system 100. Blockchain computer system 214 may be a public blockchain system that includes many different individual computer systems that are operated by different entities that maintain a single blockchain. Alternatively, blockchain computer system 214 may include one or more individual computer systems that are all operated by a single entity (e.g., a private or closed blockchain computer system). In certain examples, the entity that operates the exchange computer system 100 may also operate and maintain the blockchain computer system 214 (or a portion thereof) and the blockchain 116 that is maintained by those systems.
[0030] The blockchain computer system 214 includes multiple different computer nodes that each operate to “mine” and thereby validate transactions submitted to the blockchain 116. Generally, only one of the nodes needs to “receive” a transaction that has been submitted from a client. Once one node receives a transaction it may propagate the transaction to other nodes within the blockchain computer system 214.
[0031] Each transaction (or a block of transactions) is incorporated/included into the blockchain 116 via a proof-of-work mining process. The mining process may involve solving a computationally difficult problem that is also easy to verify. For example, each node may attempt to “mine” a solution to the hash of a block or a transaction. Hashes (also referred to herein as “hash functions,” “cryptographic hash functions,” and the like) include functions that map an initial input data set to an output data set. The output from a hash function may be referred to herein as a “hash identifier,” “hash value,” “hash data set,” or simply, a “hash”). Generally, the output values from a given hash function have the same fixed length. Generally, if the same hash function is used on the same input data it will result in the same output data value. With some hash functions (including those used in the context of blockchain techniques and/or the subject matter of this application) the input value is computationally difficult to determine when only the output value is known. In certain examples, the input value for the hash function is supplemented with some additional random data. For example, an input value of “blockchain” for a hash function may include addition random data such as three random characters. Accordingly, the data value that is hashed may be “blockchaina5h” instead of simply “blockchain.” The additional random data is sometimes called a “nonce.”
[0032] In order to validate a new block into the blockchain, the proof of work process (or hash operation process) that is performed may include finding an input hash value (i.e., the block) that results in an output hash value that meets a given condition. As the data related to the blockchain transactions in the block are fixed, miners (e.g., nodes on the blockchain) modify the nonce value that is included as part of the block being validated until the output value of the hash function meets the given condition. For example, a target output value may have 5 zeros as the first four numbers of the hash. This is a problem that may be computationally difficult to determine, yet relatively easy to verify. Each node that is part of the blockchain may also keep a copy or a portion of the blockchain 116 in storage (e.g., on disk or in RAM) that is local to the corresponding node.
[0033] Computing devices A and B (120A and 120B respectively) may include user systems (e.g., a user device such as smart phone, tablet, computer, or other computing device as described in connection with FIG. 5 or FIG. 1). In certain example embodiments, computing device A 120A and computing device B 120B may be a computer system that is controlled or operated by a traditional broker or other “middle-man.” In certain example embodiments, computing devices A and B may be used by a human end user (e.g., the entity or person that ultimately will “own” the asset in question or a person that is affiliated with the entity that will ultimately own the asset in question). Alternatively, and/or in addition, computing devices A and/or B may be included as part of the exchange computer system 100 and be part of a computer system that is operated by users, clients, customers, etc. . . . of the exchange computer system 100. For example, computing devices A and/or B may be hosted in the cloud or with the computing resources of exchange computer system 100). In other words, the processing resources that are used to carry out functionality that is described in connection with computing device A 120A and computing device B 120B may be remotely located from a computing device to which a user provides input this may be a “hosted” computing option.
[0034] At step 230, the trading party A’s computing device 120A sends a request (e.g., that is carried in an electronic data message) to the electronic exchange computing system 100 to create a new wallet for a corresponding trading party account. A trading party (as opposed to the device used by the trading party) can represent a user (e.g., a person), organization (e.g., a corporation), or other entity that is assigned an account (a trading party account) for electronically interacting with the electronic exchange computer system 100. In certain example embodiments, step 230 may be an internal API call within the exchange computer system 100 (e.g., that is triggered based on a request from a user device controlled by a user).
[0035] In response to reception of the wallet request, the exchange computer system 100 executes a process that includes creation or assignment of a digital wallet (wallet) 232 that is or will be used by the trading party to trade assets as described herein. As also discussed herein, the digital wallet usually does not “hold” assets, but rather includes unique identifier(s) and one or more private key(s) are used to identify which trading party owns or is associated with a particular transaction that is part of the blockchain 116 (e.g., a blockchain transaction). The unique identifiers in the blockchain transaction may be used to link, identify, represent, or otherwise indicate which asset record (e.g., stored separately from blockchain 116 that is stored on blockchain computer system 214) belongs “in” which digital wallet.
[0036] As a variation of what is described above, in some embodiments, instead of step 230 involving in the creation of a new digital wallet, step 230 may instead involve the registration of previously-created wallet with the electronic exchange computing system 100. In such an embodiment, computing device A may receive user input from the user that indicates, for example, a walletID (e.g., a bitcoin address), a corresponding public key, and/or a corresponding private key; and at step 230, this information (i.e., the walletID, public key, private key, or other information) is transmitted by computing device A to the electronic exchange computing system 100 for storage in the digital wallet database 104.
[0037] Once the digital wallet is created (or otherwise registered) at step 232, the wallet information (or confirmation in the case of registration) may be transmitted to computing device A 120A for storage therewith. For example, the private, public, and/or generated blockchain addresses maybe transmitted to computing device A 120A. This data may be used later to generate and submit a transaction to blockchain computer system 214 and blockchain 116. As with other transmissions, to/from computing device A and B, those transmissions or steps may be to/from an intermediary computer system (e.g., the is operated by a broker) or may be internal API transmissions that are part of exchange computer system 100.
[0038] At step 236, computer device A transmits an electronic data message to the exchange computing system 100. The electronic data message includes a data transaction request for the exchange computer system 100 to carry out one or more tasks based on the content of the electronic data message. In certain examples, the data transaction request may be or include an order to “buy” or “sell” certain assets.
[0039] In certain example embodiments, the exchange stores a list of asset or type identifiers in database 118 and each of these identifiers corresponds to one or more types of assets or “types” of transactions that may be subject to an electronic data transaction request and/or order contained therein. In certain instances, all newly received orders reference or indicate one of the stored asset types and may thus be associated with the colored coins as discussed herein. In certain example embodiments the asset identifier may be a ticker symbol. In other example embodiments, the asset identifier may be a globally unique identifier (GUID) that corresponds to a ticker symbol. The order may also include information that indicates the trading party (i.e., the trading party account on whose behalf the order is submitted); this information may be or include a reference to a particular digital wallet of the trading party (e.g., Joe’s wallet), and/or a specific walletID (e.g., a cryptographically generated identifier that is stored in the wallet). The order may also include the amount that is to be transacted, specific handling instructions for the order (e.g., a limit order, a market order, etc. . . . ), an amount of asset(s) the trading party wishes in return (this could include another type of asset, e.g., 10 shares of stock A for 10 shares of stock B, money such $10, an amount of crypto-currency, or other tradable items).
[0040] In step 238, the exchange computer system 100 performs a validation process on the order indicated in the received electronic data message. In some embodiments, this includes the exchange computer system 100 checking that the trading party for the order is associated with the items that the order is offering to trade. For example, if the order indicates that 100 shares of AAPL should be sold, then the exchange computing system 100 will query the blockchain system 214 to ensure that the trading party associated with the order owns (or has access to) 100 shares of AAPL. In other words, the exchange computer system 100 may automatically determine if there an unspent transaction (or multiple transactions) on the blockchain that the trading party (or its walletIDs) is associated with that meets or exceeds the 100 shares of AAPL. In connection with step 238, if this validation process fails (e.g., the trading party does not own 100 shares of AAPL), then the submitted order is rejected and a corresponding message is sent to computing device A 120A in step 240.
[0041] In certain example embodiments, the validation process of step 238 may alternatively or additionally include validations related to the particular asset. For example, the validation process may determine if the asset is one traded on the exchange computer system 100. The validation process may determine if the quantity or the price associated with the order or trade request is a valid value. In certain examples, the validations (e.g., the minimum/maximum price or quantity) may be based on the particular type of the asset which the order seeks to trade.
[0042] In step 242, if the order is valid, and as part of the order booking process, the exchange computer system 100 saves the newly submitted order to the order book 106. The exchange computer system 100 may then produce data associated with orders that are pending in the order book (see FIG. 3D). The exchange computer system 100 may also store the wallet information associated with the submitted order for later use by the exchange computer system 100. The wallet information may be stored as part of digital wallet 104 or in database 118 (e.g., that stores an express link between wallet information and data transactions requests).
[0043] In step 243, the exchange computer system 100 generates market data based on the order book (e.g., every time there is a change to the order book) and transmits the market data to computing device A 120A and/or other 3rd party computer systems. It will be appreciated that the market data feed may be a continuing process that is triggered whenever there is a change to the order book (e.g., a modification to an existing order, the addition of a new order, the match of two or more orders, etc.). Accordingly, new messages that are part of the market data feed may be generated and transmitted throughout the process of receiving, matching, or otherwise modifying orders that are present in the order book 104.
[0044] Turning to FIG. 2B, in step 244, a match process may be run against orders in the order book. The matching process identifies if there is a match between two or more orders in the order book. For example, a new received order “A” that is of size 10 may be matched against two contra-side orders that are each of size 5. In certain examples, each of the three parties to the identified trade may construct and submit a blockchain traction to the blockchain for validation thereon. In certain examples, the match process may be run each time a new order is received (either before or after the order is added to the order book). For example, a matching engine may be executed by hardware processor 102.
[0045] In step 246, should the newly received order (or a current order in the order book) be identified to match another order stored in the order book (e.g., based upon order handling and matching rules implemented by the exchange computer system 100 for the asset(s) being traded for), then the exchange computer system 100 notifies (in steps 248 and 249) each trading party (e.g., a computer device associated with users that corresponds to the trading parties) that a match has been identified and a trade will/is going to take place. This information may then cause (e.g., by using application software installed on the corresponding device) the client computer system (or other computer system) to generate and submit a blockchain transaction to the blockchain based on the received information. The notification includes details of the trade or transaction that is to be recorded (e.g., where one transaction represents a transaction from A to B, another transaction represents a transaction from B to A, and a trade is a collection or group of transactions, such as, B sends A quantity X of an asset and A sends B digital currency or another asset). In certain examples, the trade information includes an asset identifier and a quantity. The asset identifier and quantity may be included in the generated blockchain transaction. In certain example embodiments, the trade information may be associated with a unique identifier (a GUID) that is used to identify the trade that has been identified between A and B (e.g., a trade identifier). This information may be used by the exchange computer system 100 to subsequently correlate (e.g., as part of step 262) verified blockchain transactions to records stored by the exchange that the trade is pending or awaiting verification.
[0046] Then, the exchange computer system 100 applies a cryptographic hash to the wallet associated with trading party A (or to some data, such as the private key, contained within the wallet associated with trading party A), to generate wallet A hashed information. In step 251, the exchange computer system 100 transmits wallet A hashed information to computing device B 120B. Similarly, the exchange system 100 applies a cryptographic hash to the wallet associated with trading party B (or to some data contained within the wallet associated with trading party B), to generate wallet B hashed information. In step 250, the exchange computer system 100 transmits the wallet B hashed information to computing device A 120A. In certain examples, the hash that is used by the exchange computer system 100 may be based on information about the trade itself to verify that the parties exchange the agreed assets with each other. For example, the hash may be a function of data from wallet A and data from trade A.
[0047] In certain example embodiments, the electronic exchange computer system 100 transmits additional information to each of computing device A 120B and computing device B 120B that may include, for example, pending trade information regarding the trade agreed to by the trading parties. The information that is transmitted to computing device A 120B and computing device B 120B may then cause the corresponding computing device to generate and submit a blockchain transaction based on the received information.
[0048] In an alternative embodiment, the exchange computer system 100 communicates the hashed wallet information through an internal process such that when a transaction is submitted to the blockchain system 214 it is submitted from the exchange computer system 100 rather than, for example, computing device A 120A. In such an instance, the functional elements that are executed by computing device A 120A and computing device B 120B may be processed or executed by the exchange computer system 100 or another computer system that is operated by the entity operating the exchange computer system 100. For example, once a user has submitted an order from their corresponding device (or through the computer system of a broker), the exchange 100 may perform the subsequent steps related to completion of a trade and recordation in blockchain 116.
[0049] Should step 244, which includes the match process, fail to find a valid match for the order submitted by trading party 210, then the exchange computer system 100 may add the order to the order book 106 at step 252 and send an acknowledgement data message to computing device A 120A that the order is booked in the order book 106 of the exchange computer system 100 at step 254 where the process ends and the exchange computer system 100 may return to waiting for another order to be submitted (e.g., to step 236 or 238).
[0050] In certain examples, the exchange computer system 100 may also require a transaction fee. This fee may be generated as an additional blockchain transaction that is between trading party A or trading party B and an account that represents exchange computer system 100. In certain examples, this transaction may be completed and entered in the blockchain 116. For example, computing device A 120A may receive information (e.g., the public key of the digital wallet of exchange) from exchange computer system 100 to generate a blockchain transaction that will “transfer,” for example, Bitcoin or some other asset from the digital wallet of trading party A to the digital wallet of the exchange. This generated blockchain transaction may then be submitted from computing device A 120A. The transaction fee may vary based on the type of asset being traded. In certain examples, the exchange computing system may support order modification and cancellation.
[0051] Returning to FIG. 2B, once computing devices 120A and 120B receive the trade and/or wallet information in steps 248, 249, 250, and 251, both devices begin the process of transferring the agreed upon assets to each other.
[0052] In FIG. 2C and in step 256, computing device A 120A generates a blockchain transaction using the previously received trade and/or wallet information (e.g., that includes information of trading party B’s digital wallet) and transmits the generated blockchain transaction to blockchain computer system 214 at step 257. Similarly, computing device B 120B (the counter party) generates a blockchain transaction at step 258 and transmits the transaction to blockchain computer system 214 at step 259. For example, a transaction message is generated that specifies the transfer of assets (e.g., 100 shares of AAPL) from one trading party (e.g., A) to the hashed wallet information that is associated with the counter party (e.g., B). The counter-transaction (e.g., generated by computing device B 120AB) may specify the transfer of some other assets (e.g., USD, bitcoin, other asset types, etc. . . . ). The transaction and the counter-transaction make up the trade that was identified by the exchange computer system 100 in step 246.
[0053] In certain examples, the cryptographically hashed wallet information allows the trading parties to anonymously send the assets to each other by using the blockchain. Anonymity is maintained because the sending trading party will not be able to determine the receiving trading party because it is mathematically infeasible for a third party to determine the underlying wallet (e.g., the trading party) that the hashed wallet information is associated with. Instead, only the exchange computing system and the trading party (along with 3.sup.rd parties notified by either of these entities) will know who is associated with the hashed wallet information. Further, hashed wallet information may be generated for each new potential match. Thus, a wallet may be associated with many different blockchain transactions and/or hashes to make up the whole of what is “owned” by a given trading party. For example, the wallet associated with Trading Party A may have a different blockchain address generated for each of the identified matches. Only Trading Party A (and the exchange system and any party notified by the exchange system or trading party A) may have a complete view as to what transactions or assets are associated with the digital wallet of Trading Party A.
[0054] In certain example embodiments, the exchange computer system 100 may formulate and submit the transactions to the blockchain computer system 214 for inclusion into the maintained blockchain 116. In other words, the exchange computer system 100 may act on behalf of the trading parties to complete the trade and write the trade to the distributed ledger that is the blockchain 116. In certain example embodiments, a trading party (e.g., a user, a broker, etc.) provides input to a computing device (e.g., computing device A 120A) and a corresponding electronic data message is generated using a software application installed on that device. The generated electronic data message is then transmitted to, for example, exchange computer system 100. Similarly, a trading party that “receives” electronic data messages in fact receives such messages on a corresponding computing device that is being used by the trading party.
[0055] In step 260, the transactions submitted by computing device A 120A and computing device B 120B are “mined” by individual nodes that make up the blockchain computer system 214 to validate the submitted transactions and are eventually written to the blockchain 116 (e.g., the public or private ledger). Generally, once a blockchain transaction is submitted for verification it is received by one or more of the computer nodes (e.g., individual computers that may each correspond to the architecture shown in FIG. 5) within the blockchain computer system 214. Once received by a node, that node will propagate the blockchain transaction to other nodes within the blockchain computer system. Each node then performs a mining process on the transaction (or a group of transactions called “blocks”). The mining process is a process for solving a computationally difficult problem that is also easy to verify. In some embodiments, this includes solving a cryptographic hash algorithm or function. The solution to the problem is generally called a proof of work and is included with the transaction or block of transactions as a record that transaction has been “solved” or verified. Accordingly, once a new block for the submitted transactions is generated and verified into the blockchain it is part of the blockchain.
[0056] In step 262, the exchange computer system 100 monitors (e.g., continuously monitors) the blockchain of the blockchain computer system 214 for trades that are pending (e.g., marked as pending by the exchange computer system 100) and have been submitted to the trading parties for completion on the blockchain. For example, when a new block of the blockchain is completed (and thus published to all nodes of the blockchain system), the exchange computer system 100 determines if the earlier provided hashed wallet information, which may now be part of the new block of the blockchain is present therein. In certain example embodiments, the exchange computer system maintains a local copy of the blockchain in local memory for this process. For example, the exchange computer system 100 includes processing resources (e.g., CPUs, GPUs) that are used to “mine” blockchain transactions. Accordingly, one or more nodes of the exchange computer system may be included in the exchange computer system 100
[0057] In step 264, the exchange computer system 100 determines if both trading parties have exchanged the correct assets. In other words, the exchange computer system 100 determines if transactions exist in the blockchain 116 that show transactions that correspond the previously matched orders.
[0058] In conjunction with verifying the blockchain data (e.g., if an exchange has taken place), the exchange computer system 100 also updates a transaction log, appropriate ledgers, and creates new audit log entries in step 265. This information can then be used to produce Consolidated Audit Trail (CAT) information that may be stored in database 118.
[0059] In FIG. 2D and in step 266, if the exchange computer system 100 determines that either trading party has failed to transfer the agreed to assets in an agreed upon timeframe, the exchange computer system 100 may issue a data instruction to the blockchain that revokes any partial or failed transaction in step 270, which then returns the assets to their original owners. In certain example embodiments, this revocation process may be built into the submitted transactions (e.g., as a script that is part of the generated blockchain transactions) or may be another transaction that transfers an asset back to the original owner.
[0060] In certain example embodiments, the electronic exchange computer system 100 indicates the “broken” trade to each party and removes the pending trade from the order book (e.g., both orders may be placed back into the order book as normal). In certain examples, the time frame for completion of an order will be determined by the electronic exchange computer system 100 based on the type of asset or may be provided in the order handling instructions received from a trading party. For example, if the exchange computer system 100 has not verified a complete trade (e.g., one transaction from A to B and another from B to A), it may automatically generate a new blockchain transaction that revokes any portions of the trade. For example, if a transaction from A to B is included in the blockchain, but a transaction from B to A is not present, the exchange computer system may generate a counter blockchain transaction that returns the assets that were “transferred” as a result of the A to B transaction.
[0061] In step 272, if the correct assets have been exchanged, the electronic exchange computer system 100 removes the pending trades associated with this completed trade from the order book 106, marks the trade complete, produces market data indicated the trade (e.g., step 243), and/or reports clearing and settlement to the depository of the given asset(s). In certain example embodiments, the exchange computer system 100 may wait for a certain number of blocks to be subsequently generated after the block that includes the transactions. For example, the exchange may wait until the block with the transactions in questions are at least five levels deep in the blockchain. These subsequent blocks act to further verify transactions have been completed and cannot be tampered with (due to the verification of every block depending on the proof-of-work of the prior block).
[0062] As part of the blockchain process, a miner’s computer system may update its wallet with a mining fee associated with the transactions that have been mined for the blockchain. In certain examples, the blockchain system may be privately operated (e.g., by the operator of the exchange) and this fee may be a transaction fee charged by the exchange computing system 100 (as described above).
[0063] In steps 274 and 276, each trading party monitors the blockchain and updates the view that the respective wallets provide of the blockchain to indicate the assets now held by the corresponding trading party.
FIGS. 3A-3I
[0064] FIGS. 3A-3I is a series of illustrative diagrams that show processes that may be performed as part of a blockchain based exchange computer system according to certain example embodiments.
[0065] In FIG. 3A, exchange computer system 100 includes order book 104, which stores pending orders, and digital wallet storage 104 that is stored in volatile or non-volatile storage (e.g., RAM or on disk). A digital wallet 306 for client1 includes a wallet identifier 310. As described herein a digital wallet (e.g., 306 and 308) is a software program that can be installed on a client computer system operated by a (e.g., user device 120A), a broker computer system, the exchange computer system 100, or some other computer system that allow a client or trading party to interact with the contents of the wallet (e.g., wallet identifier 310 or a private key). Similarly, digital wallet 308 for client2 includes wallet identifier 312. Both wallet 306 and 308 contain assets that are associated with that wallet. As explained herein, the wallets do not actually “contain” the assets in question (e.g., like a physical wallet would contain a $10 bill), but rather hold a key that is used to show proof of ownership for a transaction that is part of the blockchain. The assets in question may be associated with particular transactions within the blockchain that are tracked and managed by exchange computing system 100.
[0066] In the following examples, digital wallets 306 and 308 are stored on client computer system (e.g. user device 120A or 120B, which may also correspond to a computer described in connection with FIG. 5). Accordingly, when a wallet sends or receives data messages (or client1 or client2 “send” or “receive”), the sending and receiving functions may be performed by a corresponding transceiver of the user computer system that is storing the digital wallet data and executing the digital wallet application program. However, as explained herein and in alternative embodiments, digital wallets may also be stored and executed on exchange computer system 100.
[0067] In FIG. 3B, wallet 306 sends an electronic data message to exchange computer system 100 with an instruction to sell 10 AAPL @ 100 EUR. Exchange computer system 100 responds to this message with a small transaction fee of 0.001 BTC, which the client computer system of client1 submits to the blockchain, thus transferring 0.001 BTC to the digital wallet of exchange computer system 100. Also included in the electronic data message transmitted exchange computer system 100 is wallet identifier 310. As explained herein wallet identifier 310 may include the private key or other identifier or data. For example, the wallet identifier 310 may be or have been generated based on the private key (e.g., generated as a result of an elliptical curve encryption algorithm) of client 1‘s digital wallet.
[0068] In certain examples, a view of a digital wallet is provided on a client computer system (e.g., a smart phone) and the digital wallet (e.g., that contains public/private keys, identifiers, etc. . . . ) is stored on exchange computing system 100. Thus, electronic data messages transmitted from a computing device of a trading party may simply provide an order to sell an amount of shares of stock A and the exchange computing system 100 (or another computing system) may determine the specific blockchain related elements that need to be generated and formatted in order for the order to be successfully placed according to the techniques described herein.
[0069] In FIG. 3C, the electronic data message sent from client1 (or the contents thereof) is stored to the exchange computer system 100. In particular, the order to sell 10 AAPL @ 100 EUR is added to the order book and the wallet identifier 310 is added to wallet management of the exchange 100.
[0070] In certain examples, the wallet storage of exchange 100 may be backed by hardware that is integrated with an enterprise hardware security module (HSM).
[0071] In FIG. 3D, data (e.g., market data) regarding orders or electronic messages that are in the order book 104 may be produced by exchange computing system 100 and delivered to remote computing clients via market data hub 314. In certain examples embodiments, a real-time feed such as TotalView-ITCH from Nasdaq may be used. Such a market data hub may facilitate ease of connectivity by a broader marketplace and provide a single version for the data that is being viewed by client. In certain examples, it may also be a data source for smart contracts.
[0072] In FIG. 3E, client2 transmits an electronic data message with an order (e.g., a data processing instruction) to buy 10 AAPL @ 100 EUR. This electronic data message also includes wallet identifier 312 of digital wallet 308 of client2. As with the prior order, exchange computer system 100 responds with a transaction fee of 0.001 BTC that is subsequently processed against the blockchain (thus transferring the 0.001 fee to digital wallet of exchange computer system 100).
[0073] In FIG. 3F, the wallet identifier for the digital wallet of client2 is added to the wallet storage 104 of exchange computer system 100 and the buy order included in the electronic data message submitted from client2 is added to the order book (or alternatively the matching engine of the exchange 100 attempts match the newly received order with any existing orders that are resting in the order book). The matching engine of the exchange computer system 100 then identifies trade opportunity 316. In response to identifying the trade opportunity, exchange computer system 100 hashes the clientIDs (e.g., a hash of all or some portion of wallet information associated with the respective clients) associated with the respective orders to create cryptographic hashes. These cryptographic hashes are then transmitted to the respective counterparty for the identified trade. Thus, the client computer system associated with client2 receives a hashed version of the client1 identifier and the client computer system associated with client1 receives a hashed version of the client2 identifier. In certain example embodiments, responsive to the identified trading opportunity, both orders are removed from the order book and placed into a pending transaction list (or marked pending in the order book).
[0074] Advantageously, the cryptographic hash of the client IDs allows each client to complete a transaction on the blockchain in an anonymous manner and also may prevent the respective counterparties from forming a direct bi-lateral exchange for future trades.
[0075] In certain example embodiments, the exchange computer system 100 is sent (e.g., in the form of an electronic data message) an agreed upon transaction fee from each client. The transaction fee may also be submitted to the blockchain (e.g., in the form of Bitcoin or another colored coin) so that the fee moves from each party’s digital wallet to the digital wallet of the exchange computer system 100 (or another digital wallet). This blockchain transaction may occur at the time an order is initially received from a client, at the time of the trade, or both. In certain example embodiments, transaction fees for clearing and settlement services may also be applied. In other words, a single “transaction” (e.g., as shown in FIGS. 3A-3I) may involve or include the generation of multiple separate blockchain transactions that are submitted to the blockchain for inclusion thereon.
[0076] In certain example embodiments, exchange computer system 100 may implement a multi-signature feature which would allow the exchange computer system 100 to “break the trade” should either party fail to deliver. In particular, a generated blockchain transaction may require two different keys to show “ownership” of the outputs for the transactions. For example, a transaction from A to B may require B’s key and the key of another third party (e.g., the exchange, the company associated with the underlying asset, or a regulatory authority) before B can “spend” or further transact the asset associated with the transaction. In certain example embodiments, a generated blockchain transaction may require a threshold number of keys from a total number of possible keys to unlock a blockchain transaction (e.g., to spend the outputs of that transaction). For example, 4 different keys may be used unlock a transaction and the transaction may be unlocked by 2 or more of the 4 required keys.
[0077] In certain example embodiments, the exchange computer system 100 may create and/or maintain an escrow digital wallet. In such an embodiment, client1 may use client2‘s wallet identifier (or a hashed version thereof) as well as the wallet ID associated with the exchange computer system 100 to create a multi-signature address (e.g., that references the escrow wallet). Conversely, client2 may use client1‘s wallet ID (or a hashed version thereof) as well as the wallet ID of the exchange to create a counter transaction. When both orders are submitted and transferred to the escrow wallet (e.g., by appropriately formulated blockchain transactions), another blockchain transaction may be used to “move” the assets from the escrow wallet to the counter party’s wallet. Should either fail, then the exchange computer system 100 can return the assets from the escrow wallet to the originating party by creating an appropriate blockchain transaction.
[0078] In FIG. 3G, after receiving the hashed clientIDs from exchange computer system 100, the client computing devices of client1 and client2 interface with blockchain 116. In certain example embodiments, the blockchain can be a privately managed blockchain (e.g., managed by the entity that is running exchange computing system 100) or may be a public blockchain (e.g., like that run for Bitcoin).
[0079] In any event, the computing devices of client1 and client2 send transactions to one or more nodes of the blockchain computer system 214 for processing (e.g., to be added to the blockchain 116). In certain examples, the transaction may be related to bitcoin amounts (e.g., in the case of a fee from a client to the exchange). In certain examples, what is known as a “colored-coin” is used to represent assets that are listed by exchange computing system 100. Exchange computer system 100 may store a mapping of hashed wallet keys (e.g., clientIDs) to corresponding transactions performed on the blockchain.
[0080] As indicated above, the transactions may be submitted to the blockchain 116 from exchange computer system 100 on behalf of computing devices from client1 and client 2. In other words, the clients may only be used for the initial order submission.
[0081] Transactions submitted to blockchain computer system 214 are “mined” by miners as described above (e.g., computing systems that perform cryptographic processes to verify the transaction) and the result of this mining is a new block that is linked into the blockchain. Once the new block that includes the submitted transaction has a “proof-of-work” determine it is then validated and considered part of the blockchain.
[0082] Turning to FIG. 3H, exchange computer system 100 identifies trades that have been included in the blockchain. This may be accomplished by identifying transactions that are part of the blockchain and associated with the previously generated hashed clientIDs. In certain examples, a notification agent (e.g., software running on the exchange computer system 100 or another piece of computing hardware) may be used to detect and report when such hashed identifiers are identified on the blockchain 116 and associated with certain transactions. Once a transaction is noticed as being in the blockchain 116 the exchange computer system 100 may trigger one or more processes. As discussed in connection with FIGS. 2A-2D, a report of settlement and/or record of the transactions may be forwarded to regulatory authorities or depositories. The exchange computer system 100 may remove the pending orders from the order book (or other memory) as the transaction is now recorded to the blockchain. Also, the exchange computer system 100 may disseminate data regarding the transaction(s) to market data hub 314. This data may also be used to drive existing back office systems (e.g., C&S, FINRA, etc.)
[0083] In certain example embodiments, access to the market data hub may adopt a market micropayment (e.g., of crypto-currency) structure. For example, customers may be charged a fee per query. In other examples, customers that ask for notification of market data (e.g., for a particular security) may be charged a fee when a notification stream is established. The fee may be per notification or another transaction model.
[0084] It will be appreciated that identifying that a transaction is in the blockchain 116 may include waiting until a certain number of blocks have been added to the blockchain 116. Such a process will ensure the transaction is irrevocable as it would not be possible (or at least technically infeasible) to modify a transaction included in a block that is at least several layers deep within the blockchain 116 because the cryptographic proof of work of each block depends on the cryptographic proof of work of the prior blocks. In certain example embodiments, a trade may be considered finalized or settled after a certain number of blocks have been added to the blockchain. For example, 6 blocks may be added to the block chain, with each new block increasing the validity of the transactions from the prior blocks.
[0085] Such a settlement and clearing process may take approximately 1 hour in certain instances. It will be appreciated, that this is faster than trade settlements in traditional electronic exchanges (e.g., 2 to 3 days). In certain example embodiments, the settlement and clearing process may be less than one hour depending on the implementation of the blockchain. For example, a blockchain that is maintained by a private distributed network may be able to process transactions more quickly due to decreased security concerns (e.g., there may be a relatively lower risk of double spending). Further, the type of implementation for the blockchain (e.g., the hashing process associated with proof of work) may vary and thus the corresponding time to verify a transaction may be adjusted.
[0086] While the transactions associated with asset transfers are being mined, fees that are charged by exchange computer system 100 may also be mined and incorporated into blocks of the blockchain (e.g., resulting in payment moving from the wallet of, for example, client1 to a wallet associated with exchange computer system 100).
[0087] In FIG. 3I, after a transaction(s) is recognized on the block chain, the corresponding contents of a wallet are updated. Here, 10 AAPL is “removed” from the wallet of client1 and 100 EUR is added. In contrast, 10 AAPL is added to the wallet of client2 and 100 EUR is removed. In other words, software that interfaces with the digital wallet storage may update a wallet view with the settled trade information.
[0088] In certain example embodiments, the need for RegSho practices may be obviated due to the elimination of naked short selling. In other words, clients would not be able to trade unless they could show they “owned” a particular security.
[0089] In certain examples embodiments, the colored coins could represent equities and be loaned or borrowed on the exchange. FIG. 3H shows an example of this where an order of “Lend 2 AAPL @ 7 USD for 3 d” is listed. Such an order may be matched against a corresponding “borrow” order and executed in manner similar to the trades described herein. 2 AAPL shares would move between the clients in exchange for 7USD by using the blockchain. Further, the blockchain transaction for this “trade” would have information encoded in the transaction itself that the 2 AAPL shares would revert to the original owner in 3 days (e.g., a condition that is incorporated into the script used to unlock the outputs for a given blockchain transaction). Such systems may eliminate short selling as the party borrowing the security would actually need to have that security in their wallet before use. In certain example embodiments, fee related transactions may be generated and submitted to the blockchain to effectuate such temporary transfers. In certain embodiments, this behavior can be affected through the use of a smart contract.
[0090] This technique may be used to finance positions and facilitate a create/redeem function. In general, create/redeem functions may involve the issuer of the asset. As such, the exchange computing system may verify that the trading party and issuer have the assets required for the conversion by querying or interrogating the blockchain. The wallets of the trading party and the issuer may then be involved in a transaction in the same way as described for the exchange of other assets.
FIG. 4
[0091] FIG. 4 illustrates a process to performing transactions against a blockchain according to certain example embodiments. In step 402, client computer system 1 401 (e.g., a computer being used by Alice) issues a data processing instruction that includes a sell order for 1 APPL @ $127. This order is for a trading account associated with Alice who has a digital wallet setup with exchange computer system (exchange) 100. Exchange 100 receives the order and produces order data responsive to that reception. The order data 402a may indicate a sell interest in AAPL. This information may be transmitted out to 3rd parties using a market data feed.
[0092] In step 404, client computer system 2 403 issues a data processing instruction that includes a buy order for 1 APPL @ $127. This order is from a trading account associated with Bob who also has a digital wallet setup with exchange computer system 100. Exchange 100 receives the order and produces order data in response. The order data 404a is then disseminated to external clients (or internal systems).
[0093] In step 405, a match is identified for the order in the order book (or the order book being matched against a newly received order). A matching process may be executed by a matching engine running on exchange 100 to identify the match in step 405.
[0094] In steps 406a and 406b, exchange 100 generates unique hashed wallet) Ds for each trading party (Alice and Bob) and sends the hashed walletID of the other trading party along with pending trade information to the indicated client computer systems (e.g., Alice’s system receives Bob’s information and Bob’s system receives Alice’s information).
[0095] In step 408, client computer system 401 generates a new blockchain transaction and uses an interface (e.g., a software application that is installed on client computer system 401) to generate and send a transaction to blockchain computer system 214. This generated blockchain transaction also includes a transaction fee (e.g., a mining fee) of 1000 Satoshi (e.g., a crypto-currency). The transaction includes reference to a colored coin that encapsulates 1 AAPL share (e.g., the colored coin includes an identifier for AAPL along with a quantity of 1). In certain example embodiments, the transaction is “sent” to the hashed walletID (or hashed ID of Bob’s digital wallet or the contents thereof).
[0096] In step 410, client computer system 2 403, like client1, generates a new blockchain transaction and uses an interface to blockchain computer system 214 to send the generated transaction that includes the 1000 Satoshi transaction fee. This transaction is to Alice’s digital wallet and includes a colored coin that encapsulates the $127 that is part of the identified trade. In certain example embodiments, the transaction is “sent” to the hashed walletID of Alice.
[0097] In step 412, the two transactions are mined by nodes of the blockchain computer system 214 and then added to the blockchain 116. As a result of the mining, exchange 100 collects a 2000 Satoshi transaction fee (e.g., because the mining was performed by computing nodes that are part of the exchange 100 that maintains the blockchain.
[0098] In step 414, exchange 100 produces market data that indicates the assets subject to the trade (1 APPL share and $127 USD) have been traded. Exchange 100 may also update the wallet contents of Alice and Bob to reflect the new ownership of the two elements.
FIG. 5
[0099] FIG. 5 is a block diagram of an exemplary computer system 500 according to certain example embodiments (e.g., an exchange computer system as described in FIGS. 1-4, a user or remote computing device as shown in FIG. 1 or FIGS. 3A-3I, a computing node that is part of a distributed computer system used to process and maintain a blockchain, one computer system out of multiple computer systems that make up an exchange computer system as described herein, etc. . . . ). Computer system 500 includes a processing system 502 with CPU 1, CPU 2, CPU 3, CPU 4, a system bus 504 that communicates with RAM 506, and storage 508. The storage 508 can be magnetic, flash based (e.g., for a mobile client device), solid state, or other storage technology. The system bus 504 communicates with user input adapter 510 (e.g., PS/2, USB interface, or the like) that allows users in input commands to computer system 500 via a user input device 512 (e.g., a keyboard, mouse, touch panel, or the like). The results of the processing may be displayed to a user on a display 516 (e.g., an LCD) via display interface 514 (e.g., a video card or the like).
[0100] The computer system 500 may also include a network interface 518 (e.g., a transceiver) to facilitate wired (e.g., Ethernet—802.3x) and/or wireless communication (WiFi/802.11x protocols, cellular technology, and the like) with external systems 522, databases 520, and other systems via network 524. Transceivers may comprise circuitry for a transmitter and a receiver. The transmitter and receiver may share a common housing and may share some or all of the circuitry in the housing to perform transmission and reception. In some embodiments, the transmitter and receiver of a transceiver may not share any common circuitry and/or may be in the same or separate housings.
[0101] External systems 522 may include other processing systems, systems that provide third party services, computing nodes such as miners for the blockchain, etc. External systems 522 may be client devices or server systems.
[0102] External systems 522 may also include network attached storage (NAS) to hold large amounts of data. External systems, along with the internal storage and memory, may form a storage system for storing and maintaining information (e.g., order book information, routing strategies, etc. . . . ). Such a system may communicate with users and/or other computer systems that process electronic order data messages. The database 520 may include relational, object orientated, or other types of databases for storing information (e.g., order book information for a financial instrument).
[0103] The computer system may be arranged, in various embodiments, in many different ways. As just one example, the computing system may be arranged such that processors include: a multi (or single)-core processor; a first network interface device (which implements, for example, WiFi, Bluetooth, NFC, etc. . . . ); a second network interface device that implements one or more cellular communication technologies (e.g., 3G, 4G LTE, CDMA, etc. . . . ); memory or storage devices (e.g., RAM, flash memory, or a hard disk). The processor, the first network interface device, the second network interface device, and the memory devices may be integrated as part of the same SOC (e.g., one integrated circuit chip or a “system-on-chip”). As another example, the computing system may be arranged such that: the processors include two, three, four, five, or more multi-core processors; the network interface devices include a first network interface device that implements Ethernet and a second network interface device that implements WiFi and/or Bluetooth; and the memory devices include a RAM and a flash memory or hard disk.
[0104] In other words, the processes, techniques, and the like, described herein (for client devices, server, exchange, and/or controller systems) may be implemented on a computer system. Such implementations may then configure or program the processing system to carry out aspects according to certain example embodiments. It will be appreciated that other architecture types may be used. For example, a single CPU may be used instead of multiple CPUS. Alternatively, a processing system may include multiple CPU “cores.” Further, the various elements shown in connection with FIG. 5 may be included into one cohesive physical structure (e.g., such as a tablet device). The components and functionality shown in FIGS. 1-4 may be implemented on or in conjunction with the example computer system shown in FIG. 5 (e.g., to thereby create a specific purpose machine).
[0105] As described herein when a software module or software process performs any action, the action is in actuality performed by underlying hardware elements according to the instructions that comprise the software module. In various embodiments, each or any combination of the engine computer system 100, user device(s) 120A and 120B, blockchain 116, digital wallet 104, order book 106, blockchain computer system 214, exchange 100, wallets 306 and 308, client computer systems 401 and 403, etc. . . . , each of which will be referred to individually for clarity as a “component” for the remainder of this paragraph, are implemented using an example of the computing system 500 of FIG. 5. In such embodiments, the following applies for each component: (a) the elements of the 500 computing system 500 shown in FIG. 5 (i.e., the one or more processors 502, one or more memory devices 506 or 508, one or more network interface devices 518, one or more display interfaces 514, and one or more user input adapters 510), or appropriate combinations or subsets of the foregoing) are configured to, adapted to, and/or programmed to implement each or any combination of the actions, activities, or features described herein as performed by the component and/or by any software modules described herein as included within the component; (b) alternatively or additionally, to the extent it is described herein that one or more software modules exist within the component, in some embodiments, such software modules (as well as any data described herein as handled and/or used by the software modules) are stored in the memory devices 506 and/or 508 (e.g., in various embodiments, in a volatile memory device such as a RAM, in an instruction register, and/or in a non-volatile memory device such as a flash memory or hard disk) and all actions described herein as performed by the software modules are performed by the processors 502 in conjunction with, as appropriate, the other elements in and/or connected to the computing system 500 (i.e., the network interface devices 518, display interfaces 514, user input adapters 510, and/or display device 516); (c) alternatively or additionally, to the extent it is described herein that the component processes and/or otherwise handles data, in some embodiments, such data is stored in the memory devices (e.g., in some embodiments, in a volatile memory device such as a RAM and/or in a non-volatile memory device such as a flash memory or hard disk) and/or is processed/handled by the processors 502 in conjunction, as appropriate, the other elements in and/or connected to the computing system 500 (e.g., the network interface devices 518, display interfaces 508, user input adapters 510, and/or display device 516); (d) alternatively or additionally, in some embodiments, memory devices store instructions that, when executed by the processors 502, cause the processors 502 to perform, in conjunction with, as appropriate, the other elements in and/or connected to the computing system 500, each or any combination of actions described herein as performed by the component and/or by any software modules described herein as included within the component.
Technical Advantages of Described Subject Matter
[0106] In certain example embodiments, the subject matter herein provides for improvements in verifying electronic transactions of a distributed database (e.g. a distributed ledger) in a distributed computer system environment (e.g., that includes multiple different computing nodes) or blockchain. The proof-of-work process performed by nodes of a blockchain computer system allow transactions to by cryptographically verified and become, essentially, immutable.
[0107] In certain example embodiments, a common computer system monitors how and when blockchain transactions are verified and/or incorporated in the blockchain. The monitoring process and how the transactions are generated allow the common computer system to determine when two separate transactions have been validated to thereby form a recorded exchange of transactions (e.g., one transaction from A to B and another from B to A). If one of the parties fails to submit a transaction or the submitted transaction fails, then common computer system may generate a new blockchain transaction that revokes the other one of the two transactions.
[0108] In certain example embodiments, a common computer system provides digital wallet information to the counter parties in an anonymous manner (e.g., the information regarding the respective parties is hashed).
[0109] The decentralized nature of the block chain can also be advantageous for certain applications, like a digital crypto-currency, as no one system or entity is the effective holder of what is “correct.” This eliminates or reduces reliance upon banks, governments, and other third parties and can result in lower transaction costs because these “middle-men” are cut out of the transaction process.
[0110] However, blockchain technology also poses problems for certain types of implementations. For example, the decentralized and anonymous nature of blockchain implementations may pose problems when used in an electronic exchange environment that trades public securities subject to regulatory requirements (such as, e.g., those imposed by the U.S. Securities and Exchange Commission (SEC) and/or analogous agencies in other jurisdictions). Such requirements relate to transparency and accountability on knowledge of who owns what with respect to traded securities or assets. Certain example embodiments described herein address such concerns while at the same time preserving the general anonymity and decentralized advantages of using blockchain technology. For example, embodiments described here monitor the blockchain to determine when the transactions of a trade have been properly submitted. Further, a centralized wallet information database is maintained that allows an exchange to determine what blockchain identifiers (e.g., addresses) are mapped to individual private keys of a digital wallet. In certain examples, a database of asset identifiers is also maintained so that an exchange computing system may determine which blockchain transactions are associated with which asset or security.
[0111] Another improvement that may be provided by certain example embodiments described herein relates to the speed at which transactions may be validated to settled. For example, an aspect of electronic exchange systems that may be hidden from ordinary users relates to the different entities and systems that interface with each other in order to facilitate electronic trading. A customer typically does not directly interact with the computerized exchange, but rather interacts with a broker who then interacts with the exchange on behalf of the customer. Once an order is matched and a trade occurs, other systems (perhaps controlled by entities that are separate from the exchange and/or the broker) may perform settlement and clearing or depository functions.
[0112] In such a traditional environment, an order submitting customer is required to “trust” that the various entities will perform their actions as required. For example, the customer would need to trust that an entity (depository and/or settlement functions) will properly record that the customer now “owns” 100 shares of “Company A” after completion of an electronic trade. Further, in such exchanges, while a trade match may be identified and processed relatively quickly (e.g., seconds or minutes), the settlement for that trade may take 2 to 3 days (or more).
[0113] Certain example embodiments described herein address the length of validation in an electronic exchange environment by integrating blockchain technology. The techniques described herein may be able to record and validate a trade within minutes or hours (e.g., depending on how the proof-of-work aspect is implemented for the blockchain). Furthermore, as shown herein, the blockchain and the exchange and continue to interface with existing recording system (e.g., depository systems). In certain instances, the process of verifying that both counter-party transactions have been recorded is improved and the speed at which a trade (e.g., client A->client B and client B->client A) is settled may also be increased.
Selected Terminology
[0114] Whenever it is described in this document that a given item is present in “some embodiments,” “various embodiments,” “certain embodiments,” “certain example embodiments, “some example embodiments,” “an exemplary embodiment,” or whenever any other similar language is used, it should be understood that the given item is present in at least one embodiment, though is not necessarily present in all embodiments. Consistent with the foregoing, whenever it is described in this document that an action “may,” “can,” or “could” be performed, that a feature, element, or component “may,” “can,” or “could” be included in or is applicable to a given context, that a given item “may,” “can,” or “could” possess a given attribute, or whenever any similar phrase involving the term “may,” “can,” or “could” is used, it should be understood that the given action, feature, element, component, attribute, etc. is present in at least one embodiment, though is not necessarily present in all embodiments. Terms and phrases used in this document, and variations thereof, unless otherwise expressly stated, should be construed as open-ended rather than limiting. As examples of the foregoing: “and/or” includes any and all combinations of one or more of the associated listed items (e.g., a and/or b means a, b, or a and b); the singular forms “a”, “an” and “the” should be read as meaning “at least one,” “one or more,” or the like; the term “example” is used provide examples of the subject under discussion, not an exhaustive or limiting list thereof; the terms “comprise” and “include” (and other conjugations and other variations thereof) specify the presence of the associated listed items but do not preclude the presence or addition of one or more other items; and if an item is described as “optional,” such description should not be understood to indicate that other items are also not optional.
[0115] As used herein, the term “non-transitory computer-readable storage medium” includes a register, a cache memory, a ROM, a semiconductor memory device (such as a D-RAM, S-RAM, or other RAM), a magnetic medium such as a flash memory, a hard disk, a magneto-optical medium, an optical medium such as a CD-ROM, a DVD, or Blu-Ray Disc, or other type of device for non-transitory electronic data storage. The term “non-transitory computer-readable storage medium” does not include a transitory, propagating electromagnetic signal.
Additional Applications of Described Subject Matter
[0116] Although process steps, algorithms or the like, including without limitation with reference to FIGS. 2A-4, may be described or claimed in a particular sequential order, such processes may be configured to work in different orders. In other words, any sequence or order of steps that may be explicitly described or claimed in this document does not necessarily indicate a requirement that the steps be performed in that order; rather, the steps of processes described herein may be performed in any order possible. Further, some steps may be performed simultaneously (or in parallel) despite being described or implied as occurring non-simultaneously (e.g., because one step is described after the other step). Moreover, the illustration of a process by its depiction in a drawing does not imply that the illustrated process is exclusive of other variations and modifications thereto, does not imply that the illustrated process or any of its steps are necessary, and does not imply that the illustrated process is preferred.
[0117] Although various embodiments have been shown and described in detail, the claims are not limited to any particular embodiment or example. None of the above description should be read as implying that any particular element, step, range, or function is essential. All structural and functional equivalents to the elements of the above-described preferred embodiment that are known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed. Moreover, it is not necessary for a device or method to address each and every problem sought to be solved by the present invention, for it to be encompassed by the invention. No embodiment, feature, component, or step in this specification is intended to be dedicated to the public.

Claims

19. (canceled)
10. A method of performed at a computer system that includes memory, a transceiver, and a processing system that includes at least one processor coupled to the electronic memory and the transceiver, the computer system configured to communicate with a distributed blockchain computer system that includes multiple computing nodes, each computing node storing a copy, or a portion thereof, of the blockchain of the distributed blockchain computer system, the method comprising: storing at least one ordered list of a plurality of data transaction requests that each include a type identifier and a quantity value; and storing a plurality of digital wallets that are respectively associated with different client entities, each of the plurality of digital wallets respectively linked to at least one corresponding private cryptographic key and at least one identifier that has been generated based on the at least one private cryptographic key; receiving, via the transceiver and from different remote computing devices, electronic data messages that each include data transaction requests; adding a received first data transaction request, which is associated with a first digital wallet, to the at least one ordered list; receiving a second data transaction request, which is associated with a second digital wallet; identifying a match between at least the stored first data transaction request and the received second data transaction request; generating a first hash identifier based on data included in the first digital wallet; generating a second hash identifier based on data included in the second digital wallet; generating a first blockchain transaction that is based on the first hash identifier and the second data transaction request and submitting, to at least one node of the distributed blockchain computing system, the generated first blockchain transaction for inclusion into the blockchain of the distributed blockchain computing system; generating a second blockchain transaction that is based on the second hash identifier and the first data transaction request and submitting, to at least one node of the distributed blockchain computing system, the generated second blockchain transaction for inclusion into the blockchain of the distributed blockchain computing system; monitoring the blockchain to verify that the first blockchain transaction and the second blockchain transaction have been included into the blockchain; and based on verification that the that the first blockchain transaction and the second blockchain transaction have been included into the blockchain, updating at least one record of a database that is external to the distributed blockchain computing system.
11. The method of claim 10, further comprising: performing, on at least one node of the distributed blockchain computer system, a proof-of-work process to cryptographically verify that the first blockchain transaction is valid.
12. (canceled)
13. The method of claim 10, wherein the blockchain of the distributed blockchain computer system is a closed blockchain.
14. (canceled)
15. The method of claim 10, wherein the first and second blockchain transactions are each generated to require at least two cryptographic keys to use the outputs of the respective blockchain transactions.
16. The method of claim 15, where one of the at least two cryptographic keys is a key that represents an operator of the computer system.
17. The method of claim 10, further comprising: storing a list of asset records that are each associated with a corresponding type identifier; wherein the monitoring of the blockchain includes determining if a data value that represents or is the type identifier is included in a validated blockchain transaction.
18. A non-transitory computer readable storage medium having stored thereon computer readable instructions for use with a computer system that includes at least one processor, a memory, and a transceiver, the memory configured to store a first and second list of data transaction requests as, respectively, a first plurality of data transaction requests for the first list and a second plurality of data transaction requests for the second list, each of the plurality of data transaction requests including a size value and a type identifier, the stored computer readable instructions comprising instructions that, when executed by the computer system, cause the computer system to: store a plurality of digital wallets that are respectively associated with different client entities, each of the plurality of digital wallets respectively linked to at least one corresponding private cryptographic key and at least one identifier that has been generated based on the at least one private cryptographic key; receive, via the transceiver and from different remote computing devices, electronic data messages that each include data transaction requests; add a received first data transaction request, which is associated with a first digital wallet, to the first list; receive a second data transaction request, which is associated with a second digital wallet; identify a match between at least the stored first data transaction request and the received second data transaction request; generate a first hash identifier based on data included in the first digital wallet; generate a second hash identifier based on data included in the second digital wallet; generate a first blockchain transaction that is based on the first hash identifier and the second data transaction request and submit, to at least one node of the distributed blockchain computing system, the generated first blockchain transaction for inclusion into the blockchain; generate a second blockchain transaction that is based on the second hash identifier and the first data transaction request and submit, to at least one node of the distributed blockchain computing system, the generated first blockchain transaction for inclusion into the blockchain; monitor the blockchain to verify that the first blockchain transaction and the second blockchain transaction have been included into the blockchain; and based on verification that the that the first blockchain transaction and the second blockchain transaction have been included into the blockchain, update at least one record of a database that is external to the distributed blockchain computing system.
19. (canceled)
20. (canceled)
21. The method of claim 11, further comprising: as part of the monitoring, reviewing blockchain transactions that are part of the blockchain to determine if the reviewed blockchain transactions include an identifier that corresponds to an identifier that is associated with one of the first and second data transaction requests.
22. The medium of claim 18, wherein the stored computer readable instructions comprise further instructions that, when executed by the computer system, cause the computer system to: as part of the monitoring, review blockchain transactions that are part of the blockchain to determine if the reviewed blockchain transactions include an identifier that corresponds to an identifier that is associated with one of the first and second data transaction requests.
23. A computing apparatus comprising: electronic data storage configured to: store at least one ordered list of a plurality of data transaction requests that each include a type identifier and a quantity value; store a plurality of digital wallets that are respectively associated with different client entities, each of the plurality of digital wallets respectively linked to at least one corresponding private cryptographic key and at least one identifier that has been generated based on the at least one private cryptographic key; a transceiver configured to electronically communicate with a distributed blockchain computer system that includes multiple computing nodes, each computing node storing a copy, or a portion thereof, of the blockchain of the distributed blockchain computer system a processing system that includes at least one hardware processor coupled to the electronic memory storage and the transceiver, the processing system configured to: receive, via the transceiver and from different remote computing devices, electronic data messages that each include data transaction requests; add a received first data transaction request, which is associated with a first digital wallet, to the at least one ordered list; receive a second data transaction request, which is associated with a second digital wallet; identify a match between at least the stored first data transaction request and the received second data transaction request; generate a first hash identifier based on data included in the first digital wallet; generate a second hash identifier based on data included in the second digital wallet; generate a first blockchain transaction that is based on the first hash identifier and the second data transaction request and submit, to at least one node of the distributed blockchain computing system, the generated first blockchain transaction for inclusion into the blockchain of the distributed blockchain computing system; generate a second blockchain transaction that is based on the second hash identifier and the first data transaction request and submit, to at least one node of the distributed blockchain computing system, the generated second blockchain transaction for inclusion into the blockchain of the distributed blockchain computing system; monitor the blockchain to verify that the first blockchain transaction and the second blockchain transaction have been included into the blockchain; and based on verification that the that the first blockchain transaction and the second blockchain transaction have been included into the blockchain, update at least one record of a database that is external to the distributed blockchain computing system.
24. The computing apparatus of claim 23, wherein the first and second blockchain transactions are each generated to require at least two cryptographic keys to use the outputs of the respective blockchain transactions.
25. The computing apparatus of claim 24, where one of the at least two cryptographic keys is a key that represents an operator of the computer system.
26. The computing apparatus of claim 23, wherein the processing system is further configured to: store a list of asset records that are each associated with a corresponding type identifier, wherein the monitoring of the blockchain includes determining if a data value that represents or is the type identifier is included in a validated blockchain transaction.
27. The computing apparatus of claim 23, wherein the blockchain of the distributed blockchain computer system is a closed blockchain.
28. The computing apparatus of claim 23, wherein the generated first blockchain transaction or the generated second blockchain transaction includes the type identifier of the at least one ordered list and a quantity value for an amount of the type identifier.

Posted on

US-20150262168A1 INSTANT EXCHANGE

Abstract

A system and method for transaction bitcoin is described. Bitcoin can be sent to an email address. No miner’s fee is paid by a host computer system. Hot wallet functionality is provided that transfers values of some Bitcoin addresses to a vault for purposes of security. A private key of a Bitcoin address of the vault is split and distributed to keep the vault secure. Instant exchange allows for merchants and customers to lock in a local currency price. A vault has multiple email addresses to authorize a transfer of bitcoin out of the vault. User can opt to have private keys stored in locations that are under their control. A tip button rewards content creators for their efforts. A bitcoin exchange allows for users to set prices that they are willing to sell or buy bitcoin and execute such trades.

20150262168A1 PDF


United States Patent Application Publication 20150262168

Kind Code A1

Publication Date September 17, 2015

Inventor(s) Armstrong; Brian D.

INSTANT EXCHANGE

Abstract

A system and method for transaction bitcoin is described. Bitcoin can be sent to an email address. No miner’s fee is paid by a host computer system. Hot wallet functionality is provided that transfers values of some Bitcoin addresses to a vault for purposes of security. A private key of a Bitcoin address of the vault is split and distributed to keep the vault secure. Instant exchange allows for merchants and customers to lock in a local currency price. A vault has multiple email addresses to authorize a transfer of bitcoin out of the vault. User can opt to have private keys stored in locations that are under their control. A tip button rewards content creators for their efforts. A bitcoin exchange allows for users to set prices that they are willing to sell or buy bitcoin and execute such trades.

Inventors:

Armstrong; Brian D. (Beaverton, OR)

Applicant:

Coinbase, Inc. (San Francisco, CA)

Family ID:

54069270

Assignee:

Coinbase, Inc. (San Francisco, CA)

Appl. No.:

14/660014

Filed:

March 17, 2015

Related U.S. Application Data

us-provisional-application US 61954434 20140317

us-provisional-application US 61990017 20140507

us-provisional-application US 62042676 20140827

us-provisional-application US 62056100 20140926

us-provisional-application US 62086669 20141202

us-provisional-application US 62099992 20150105

Publication Classification

Int. Cl.:

G06Q20/38 (20060101); G06Q20/06 (20060101); G06Q20/36 (20060101)

LOC Cl.:

G06Q; G06Q; G06Q

U.S. Cl.:

CPC

G06Q20/381 (20130101); G06Q20/36 (20130101); G06Q20/065 (20130101);

Background/Summary

CROSS-REFERENCE TO RELATED APPLICATIONS [0001] This patent application claims priority from U.S. Provisional Patent Application No. 61/954,434, filed on Mar. 17, 2014; U.S. Provisional Patent Application No. 61/990,017, filed on May 7, 2014; U.S. Provisional Patent Application No. 62/042,676, filed on Aug. 27, 2014; U.S. Provisional Patent Application No. 62/056,100, filed on Sep. 26, 2014; U.S. Provisional Patent Application No. 62/086,669, filed on Dec. 2, 2014 and U.S. Provisional Patent Application No. 62/099,992, filed on Jan. 5, 2015, each of which is incorporated herein by reference in its entirety.

BACKGROUND OF THE INVENTION
[0002] 1). Field of the Invention
[0003] This invention relates to a computer system and method for transacting bitcoin.
[0004] 2). Discussion of Related Art
[0005] The Bitcoin network is a peer-to-peer payment system having a plurality of nodes that are connected to one another. Bitcoin exchange computer systems allow for users to exchange local currency into or out of bitcoin. Users send payments by broadcasting digitally signed messages to the Bitcoin network. Users may, for example, send and receive payments using mobile applications on mobile devices, client software or a web browser.
[0006] Transactions do not explicitly identify the payor and payee by name or wallet. Instead, a bitcoin transaction transfers ownership to a new address, referred to as a “Bitcoin address”. The Bitcoin address is derived from the public portion of one or more cryptographic key pairs. The private portion of a key pair is not disclosed to the public. To send bitcoin sent to an address, a user broadcasts a payment message that is digitally signed with the associated private key.
[0007] Participants known as “miners” at miner computer systems verify and timestamp transactions into a shared public database called a “block chain”. The miners are rewarded with transaction fees and newly minted bitcoin for their effort. The miner computer systems are specialized computers that append blocks of transactions to the block chain. Solving a cryptographic puzzle required to append a block carries a reward plus fees included in transactions in the block.
[0008] Host computer systems reside at various nodes and may host accounts or “wallets” that allow users to make and accept payments using bitcoin. The wallet stores the public key of the Bitcoin address and its associated private key.
[0009] The transfer of bitcoin may be an onerous task if the entire public key of the Bitcoin address has to be copied and transmitted.
[0010] When a transaction is made between two wallets at the same or different host computer systems, the transaction is broadcast to the Bitcoin network for block chain verification. Such a block chain verification may take a long time to complete. Miner fees are also associated with such a transfer and have to be paid by a host computer system requesting the transfer.
[0011] It may be a security concern for users that their Bitcoin addresses may be stolen from their wallets. Existing systems do not provide a solution for maintaining security of Bitcoin addresses while still allowing the users to use Bitcoin addresses within their wallets for transacting with other users.
[0012] A merchant computer system often has an online store and a website. A customer at a customer computer system may use a browser to access the online store via the website. Items are displayed for purchase in a local currency. Exchange rate between bitcoin and local currency changes over short periods of time. The price in local currency may thus change between the time that the local currency is displayed to the customer and the time that the customer decides to make the purchase. As a result, the customer or the merchant may incur a loss in local currency. The customer or merchant may then be reluctant to purchase using bitcoin.
[0013] In order for a user to access their wallet, the user may log into their account through the website using a user name and password. If the user name and password become compromised then it may be possible for bitcoin to be stolen out of the wallet. Users may therefore be reluctant to store bitcoin in their wallets without any additional security features.
[0014] Bitcoin transacting requires the use of a public key and a private key. The private key is used to sign an authorization and the public key is used to verify the signature. Some users may require control over their private keys in order to ensure to such users that bitcoin transacting will not take place without their express authorization.
[0015] Content creators often put a lot of time and energy into their blog posts. These efforts are rarely rewarded because efficient technology does not exist for rewarding bloggers for their efforts.
SUMMARY OF THE INVENTION
[0016] The invention provides a host computer system for transacting bitcoin including a processor, a network interface device connected to the processor, a computer readable medium connected to the processor, a data store on the computer readable medium and a set of instructions on the computer readable medium that are executable by the processor. The set of instructions includes a wallet establishment module, a login module, a hosted email module and a wallet management. The wallet establishment module establishes a first wallet in the data store, stores login details for the first wallet and storing a value representative of an amount of bitcoin held by the first wallet. The login module receives login credentials over the network interface device for the first wallet from a first user device, verifies whether the login credentials match the login details for the first wallet, and if the login credentials match the login details then logs the first user device into the first wallet. The hosted email module, if the first user device is logged into the wallet, permits transmission of an email by a user of the first user device to an email address of a second user device. The wallet management module, in response to the transmission of the email, records a transfer in the first wallet for an amount of bitcoin from the first wallet to a second wallet identified by the email address.
[0017] The invention also provides a method of transacting bitcoin. A processor establishes a first wallet in a data store connected to the processor. The processor stores login details for the first wallet. The processor stores a value representative of an amount of bitcoin held by the first wallet. The processor receives login credentials for the first wallet from a first user device. The processor verifies whether the login credentials match the login details for the first wallet. The processor, if the login credentials match the login details then, logs the first user device into the first wallet. The processor, if the first user device is logged into the wallet, permits transmission of an email by a user to the first user device to an email address of a second user device and in response to the transmission of the email. The processor records a transfer in the first wallet for an amount of bitcoin from the first wallet to a second wallet identified by the email address.
[0018] The invention further provides a non-transitory computer-readable medium having stored thereon a set of instructions that are executable by a processor to carry out a method of transacting bitcoin. The processor establishes a first wallet in a data store connected to the processor. The processor stores login details for the first wallet. The processor stores a value representative of an amount of bitcoin held by the first wallet. The processor receives login credentials for the first wallet from a first user device. The processor verifies whether the login credentials match the login details for the first wallet. The processor, if the login credentials match the login details then, logs the first user device into the first wallet. The processor, if the first user device is logged into the wallet, permits transmission of an email by a user to the first user device to an email address of a second user device and in response to the transmission of the email. The processor records a transfer in the first wallet for an amount of bitcoin from the first wallet to a second wallet identified by the email address.
[0019] The invention further provides a first host computer system for transacting bitcoin including a processor at a first node of the Bitcoin network, a network interface device connected to the processor, a computer readable medium connected to the processor, a data store on the computer readable medium and a set of instructions on the computer readable medium that are executable by the processor. The set of instructions includes a wallet establishment module. The wallet establishment module establishes a first and second wallets in the data store and stores a value representative of an amount of bitcoin held by the first wallet. The wallet management module receives, over the network interface device, a first transfer instruction for an amount of bitcoin from the first wallet and an identifier of the second wallet, in response to the first transfer instruction, records a transfer in the first wallet for the amount of bitcoin in the first transfer instruction out of the first wallet and a transfer in the second wallet, identified by the identifier of the second wallet, for the amount of bitcoin in the first transfer instruction into the second wallet without paying a miner’s fee for the first transfer. In order to execute a subsequent on-block chain transaction, the wallet management module receives, over the network interface device, a second transfer instruction for an amount of bitcoin from the first wallet and a bitcoin address associated with a second node of the Bitcoin network, and in response to the second transfer instruction, records a transfer in the first wallet for the amount of bitcoin in the second transfer instruction out of the first wallet, broadcasts a message to the Bitcoin network, including to the second node, to record a transfer associated with the bitcoin address associated with the second node, for the amount of bitcoin in the second transfer instruction, and pays a miner’s fee for the second transfer.
[0020] The invention further provides a method of transacting bitcoin including. A processor of a first host computer system at a first node of the Bitcoin network establishes first and second wallets in a data store connected to the processor. The processor stores a value representative of an amount of bitcoin held by the first wallet. The processor receives a first transfer instruction for an amount of bitcoin from the first wallet and an identifier of the second wallet. The processor, in response to the first transfer instruction, records a transfer in the first wallet for the amount of bitcoin in the first transfer instruction out of the first wallet and a transfer in the second wallet, identified by the identifier of the second wallet, for the amount of bitcoin in the first transfer instruction into the second wallet without paying a miner’s fee for the first transfer. The processor receives a second transfer instruction for an amount of bitcoin from the first wallet and a bitcoin address associated with a second node of the bitcoin network. The processor, in response to the second transfer instruction records a transfer in the first wallet for the amount of bitcoin in the second transfer instruction out of the first wallet, broadcasts a message to the Bitcoin network, including to the second node, to record a transfer associated with the bitcoin address associated with the second node, for the amount of bitcoin in the second transfer instruction and pays a miner’s fee for the second transfer.
[0021] The invention further provides a non-transitory computer-readable medium having stored thereon a set of instructions that are executable by a processor of a first host computer system at a first node of the Bitcoin network to carry out a method of transacting bitcoin. The processor establishes first and second wallets in a data store connected to the processor. The processor stores a value representative of an amount of bitcoin held by the first wallet. The processor receives a first transfer instruction for an amount of bitcoin from the first wallet and an identifier of the second wallet. The processor, in response to the first transfer instruction, records a transfer in the first wallet for the amount of bitcoin in the first transfer instruction out of the first wallet and a transfer in the second wallet, identified by the identifier of the second wallet, for the amount of bitcoin in the first transfer instruction into the second wallet without paying a miner’s fee for the first transfer. The processor receives a second transfer instruction for an amount of bitcoin from the first wallet and a bitcoin address associated with a second node of the bitcoin network. The processor, in response to the second transfer instruction records a transfer in the first wallet for the amount of bitcoin in the second transfer instruction out of the first wallet, broadcasts a message to the Bitcoin network, including to the second node, to record a transfer associated with the bitcoin address associated with the second node, for the amount of bitcoin in the second transfer instruction and pays a miner’s fee for the second transfer.
[0022] The invention also provides a host computer system for transacting bitcoin including a processor, a computer readable medium connected to the processor, a local storage on the computer readable medium and a set of instructions on the computer readable medium that are executable by the processor. The set of instructions includes a register, a Bitcoin address and an associated private key and value stored in the register, a local controller, a splitter, an offline distribution module, at least one restoration interface, and an assembler. The local controller transfers a private key for a Bitcoin address of a vault, to a local storage connected to a processor and transfers the value of the Bitcoin address in the register to the vault. The splitter splits the private key of the Bitcoin address of the vault into a plurality of codes. The offline distribution module distributes the codes to remote distributed storage locations, removes the private key of the Bitcoin address of the vault from the local storage, and removes the value for the Bitcoin address of the register from the Bitcoin address of the register. The restoration interface receives at least some of the codes into which the private key for Bitcoin address of the vault has been split. The assembler assembles the codes that have been received into the private key of the Bitcoin address of the vault. The local controller restores the private key of the Bitcoin address of the vault from the local storage, and restores the value for the Bitcoin address in the register from the vault.
[0023] The invention further provides a method of transacting bitcoin. A processor transfers a private key of the Bitcoin address of a vault to a local storage connected to the processor. The processor splits the private key of the Bitcoin address of the vault into a plurality of codes. The processor distributes the codes to remote distributed storage locations. The processor transfers a value of a Bitcoin address in a register to the vault. The processor receives at least some of the codes into which the private key of the Bitcoin address of the vault has been split. The processor assembles the codes that have been received into the private key of the Bitcoin address of the vault. The processor restores the private key of the Bitcoin address of the vault to the vault. The processor restores the value of the Bitcoin address in the register from the vault.
[0024] The invention also provides a non-transitory computer-readable medium having stored thereon a set of instructions that are executable by a processor to carry out a method of transacting bitcoin. A processor transfers a private key of the Bitcoin address of a vault to a local storage connected to the processor. The processor splits the private key of the Bitcoin address of the vault into a plurality of codes. The processor distributes the codes to remote distributed storage locations. The processor transfers a value of a Bitcoin address in a register to the vault. The processor receives at least some of the codes into which the private key of the Bitcoin address of the vault has been split. The processor assembles the codes that have been received into the private key of the Bitcoin address of the vault. The processor restores the private key of the Bitcoin address of the vault to the vault. The processor restores the value of the Bitcoin address in the register from the vault.
[0025] The invention further provides a host computer system for transacting bitcoin including a processor, a network interface device connected to the processor, a computer readable medium connected to the processor, a local storage on the computer readable medium and a set of instructions on the computer readable medium that are executable by the processor. The set of instructions includes a wallet, a plurality of Bitcoin addresses stored in the wallet, a first vault, and a local controller. The local controller is executable for selecting a first transfer set of the Bitcoin addresses for cold storage in the first vault, transferring at least a portion of each of the Bitcoin addresses of the first transfer set to a first vault while keeping the portions a first transaction set in the register, and restoring at least the portion of the Bitcoin addresses of the first transfer set from the first vault to the wallet and a wallet management module transacting using the Bitcoin addresses of the first transacting set without permitting transacting with the Bitcoin addresses of the first transfer set due to the portions thereof being restored to the first vault, and transacting using the Bitcoin addresses of the first transfer set due to the portions thereof being restored from the first vault to the wallet.
[0026] The invention also provides a method of transacting bitcoin. A processor stores a plurality of Bitcoin addresses in a wallet. The processor selects a first transfer set of the Bitcoin addresses for cold storage in a first vault. The processor transfers at least a portion of each of the Bitcoin addresses of the first transfer set to the first vault while keeping the portions a first transaction set in the register. The processor transacts using the Bitcoin addresses of the first transacting set without permitting transacting with the Bitcoin addresses of the first transfer set due to the portions thereof being transferred to the first vault. The processor restores the portion of the Bitcoin addresses of the first transfer set from the first vault to the wallet. The processor transacts using the Bitcoin addresses of the first transfer set due to the portions thereof being restored from the first vault to the wallet.
[0027] The invention further provides a non-transitory computer-readable medium having stored thereon a set of instructions that are executable by a processor to carry out a method of transacting. A processor stores a plurality of Bitcoin addresses in a wallet. The processor selects a first transfer set of the Bitcoin addresses for cold storage in a first vault. The processor transfers at least a portion of each of the Bitcoin addresses of the first transfer set to the first vault while keeping the portions a first transaction set in the register. The processor transacts using the Bitcoin addresses of the first transacting set without permitting transacting with the Bitcoin addresses of the first transfer set due to the portions thereof being transferred to the first vault. The processor restores the portion of the Bitcoin addresses of the first transfer set from the first vault to the wallet. The processor transacts using the Bitcoin addresses of the first transfer set due to the portions thereof being restored from the first vault to the wallet.
[0028] The invention also provides a method of effecting payment including receiving, by a host computer system, a request for payment from a merchant computer system, including an amount in a currency, determining, by the host computer system, a first exchange rate, wherein the first exchange rate fluctuates and the first exchange rate is determined at a first moment in time, converting, by the host computer system, the amount in the currency to an amount in bitcoin using the first exchange rate at the first moment in time, receiving, by the host computer system, a send instruction from the customer computer system, wherein the send instruction is at a second moment in time later than the first moment in time and the exchange rate at the second moment in time is a second exchange rate that is different than the first exchange rate at the first moment in time, receiving, by the host computer system, payment in bitcoin from the customer in an amount that is based on the amount in bitcoin and transmitting, by the host computer system, in response to receiving the send instruction from the customer computer system, a payment instruction to pay currency to the merchant, wherein the currency paid to the merchant is for an amount that is at least in part based on the amount in the currency that is converted to bitcoin at the first moment in time even though the exchange rate is different at the second moment in time.
[0029] The invention further provides a host computer system for effecting payment including a processor, a computer readable medium connected to the processor and a set of instructions on the computer readable medium that are executable by the processor. The set of instructions includes an application programmable interface (API) receiving a request for payment from a merchant computer system, including an amount in a currency, a currency converter determining a first exchange rate, wherein the first exchange rate fluctuates and the first exchange rate is determined at a first moment in time, and converting, by the host computer system, the amount in the currency to an amount in bitcoin using the first exchange rate at the first moment in time, transaction processor receiving a send instruction from the customer computer system, wherein the send instruction is at a second moment in time later than the first moment in time and the exchange rate at the second moment in time is a second exchange rate that is different than the first exchange rate at the first moment in time, and receiving a payment in bitcoin from the customer in an amount that is based on the amount in bitcoin and a bank transfer module transmitting in response to receiving the send instruction from the customer computer system, a payment instruction to pay currency to the merchant, wherein the currency paid to the merchant is for an amount that is at least in part based on the amount in the currency that is converted to bitcoin at the first moment in time even though the exchange rate is different at the second moment in time.
[0030] The invention also provides a non-transitory computer-readable medium having stored thereon a set of instructions that are executable by a processor to carry out a method of transacting bitcoin including receiving, by a host computer system, a request for payment from a merchant computer system, including an amount in a currency, determining, by the host computer system, a first exchange rate, wherein the first exchange rate fluctuates and the first exchange rate is determined at a first moment in time, converting, by the host computer system, the amount in the currency to an amount in bitcoin using the first exchange rate at the first moment in time, receiving, by the host computer system, a send instruction from the customer computer system, wherein the send instruction is at a second moment in time later than the first moment in time and the exchange rate at the second moment in time is a second exchange rate that is different than the first exchange rate at the first moment in time, receiving, by the host computer system, payment in bitcoin from the customer in an amount that is based on the amount in bitcoin and transmitting, by the host computer system, in response to receiving the send instruction from the customer computer system, a payment instruction to pay currency to the merchant, wherein the currency paid to the merchant is for an amount that is at least in part based on the amount in the currency that is converted to bitcoin at the first moment in time even though the exchange rate is different at the second moment in time.
[0031] The invention further provides a method of managing bitcoin, including establishing, by a host computer system, a vault and storing first and second electronic communication addresses in relation to the vault, storing, by the host computer system, bitcoin in the vault, receiving, by the host computer system, a request to transfer an amount of the bitcoin out of the vault, transmitting, by the host computer system, in response to the request, first and second messages over a network to the first and second addresses, detecting, by the host computer system, whether first and second authorization instructions are received due to one or more users reacting to the first and second messages sent to the first and second addresses and transferring, by the host computer system, the amount of bitcoin out of the vault only if both the first and second authorization instructions are detected.
[0032] The invention also provides a non-transitory computer-readable medium having stored thereon a set of instructions which, when executed by a processor, executes a method including establishing, by a host computer system, a vault and storing first and second electronic communication addresses in relation to the vault, storing, by the host computer system, bitcoin in the vault, receiving, by the host computer system, a request to transfer an amount of the bitcoin out of the vault, transmitting, by the host computer system, in response to the request, first and second messages over a network to the first and second addresses, detecting, by the host computer system, whether first and second authorization instructions are received due to one or more users reacting to the first and second messages sent to the first and second addresses and transferring, by the host computer system, the amount of bitcoin out of the vault only if both the first and second authorization instructions are detected.
[0033] The invention further provides a bitcoin management system, including a processor, a computer-readable medium connected to the processor and a set of instructions on the computer readable medium that are executable by the processor. The set of instructions includes a vault establishment wizard establishing a vault and storing first and second electronic communication addresses in relation to the vault, transaction processor storing bitcoin in the vault and a vault management module receiving a request to transfer an amount of the bitcoin out of the vault, transmitting, in response to the request, first and second messages over a network to the first and second addresses, detecting whether first and second authorization instructions are received due to one or more users reacting to the first and second messages sent to the first and second addresses, and instructing the transaction processor to transfer the amount of bitcoin out of the vault only if both the first and second authorization instructions are detected.
[0034] The invention also provides a method of transacting bitcoin including storing, by a host computer system, a public key, receiving, by the host computer system, a request from a user computer system to transact using a bitcoin address, transmitting, by the host computer system, a verification script to the user computer system, the verification script including an authorization and a signature algorithm that is executable on the user computer system to sign the authorization with a private key to obtain a signed authorization that includes the signature and transmit the signed authorization to the host computer system, receiving, by the host computer system, the signed authorization including the signature from the user computer system, verifying, by the host computer system, the signature of the signed authorization received from the user computer system using a public key; and transacting, by the host computer system, with the bitcoin address, the transacting being permitted due to a successful verification of the signature but not upon an unsuccessful verification of the signature.
[0035] The invention further provides a host computer system including a processor, a set of data and instructions on the computer-readable medium that are executable by the processor that are executable by the processor, a public key, a transaction processor receiving a request from a user computer system to transact using a bitcoin address, a verification script that is transmitted to the user computer system, the verification script including an authorization and a signature algorithm that is executable on the user computer system to sign the authorization with a private key to obtain a signed authorization that includes the signature and transmit the signed authorization to the host computer system, the host computer system receiving the signed authorization including the signature from the user computer system, and a verification module verifying the signature of the signed authorization received from the user computer system using a public key, the transaction processor transacting with the bitcoin address, the transacting being permitted due to a successful verification of the signature but not upon an unsuccessful verification of the signature.
[0036] The invention also provides a host computer system including a processor, a network interface device connected to the processor, a computer readable medium connected to the processor and a set of instructions on the computer readable medium that are readable and executable by the processor. The set of instructions include an embedded code generator generating an embedded code for inclusion within a website of a partner computer system, the embedded code including a startup caller causing transmission of a startup call from the sender computer system to the host computer system, a startup call responder receiving the startup call from the sender computer system and transmitting, in response to the startup call, a tip button and a session script to the sender computer system, the session script being executable by the sender computer system to transmit a session call to the host computer system and a session responder transmitting, in response to the session call, at least one payment button and a payment script to the sender computer system, the payment button being selectable by the user of the sender computer system to execute the payment script, the payment script transmitting an instruction to a transaction processor to transfer funds from a sender account to a receiver account.
[0037] The invention further provides a method of transferring funds including generating, by a host computer system, an embedded code for inclusion within a website of a partner computer system, the embedded code including a startup caller causing transmission of a startup call from the sender computer system to the host computer system, receiving, by the host computer system, the startup call from the sender computer system, transmitting, by the host computer system in response to the startup call, a tip button and a session script to the sender computer system, the session script being executable by the sender computer system to transmit a session call to the host computer system and transmitting, by the host computer system in response to the session call, at least one payment selection and a payment script to the sender computer system, the payment selection being selectable by the user of the sender computer system to execute the payment script, the payment script transmitting an instruction to a transaction processor to transfer funds from a sender account to a receiver account.
[0038] The invention also provides a method of transacting bitcoin including executing, by a host computer system, a trading algorithm, including receiving sell offers for bitcoin from a sellers, receiving a buy offers for bitcoin from a buyers, creating respective matches wherein each match includes one of the buy offers and one of the sell offers, broadcasting each respective match over a multicast pipeline, receiving each respective match with a clearing module and clearing the respective match by updating an exchange database to reflect the respective match by transferring a representation of bitcoin from the seller to the buyer and transferring a representation of currency from the buyer to the seller.
[0039] The invention further provides a system for transacting bitcoin including an order gateway receiving sell offers for bitcoin from a sellers and receiving a buy offers for bitcoin from a buyers, a matching engine creating respective matches wherein each match includes one of the buy offers and one of the sell offers, a multicast pipeline, the matching engine broadcasting each respective match over the multicast pipeline, an exchange database; and a clearing module receiving each respective and clearing the respective match by updating the exchange database to reflect the respective match by transferring a representation of bitcoin from the seller to the buyer and transferring a representation of currency from the buyer to the seller, thereby executing a trading algorithm.

Description

BRIEF DESCRIPTION OF THE DRAWINGS
[0040] The invention is further described by way of example with reference to the accompanying drawings, wherein:
[0041] FIG. 1A is a block diagram of a network environment that includes the Bitcoin network and a number of systems forming part thereof or connected thereto;
[0042] FIG. 1B is a block diagram of a first host computer system and a first and second user devices connected thereto;
[0043] FIG. 2 is diagrammatic view of a first wallet that is held within a first host computer system in FIG. 1;
[0044] FIG. 3 is a view similar to FIG. 2, further illustrating a second wallet that has been established within the first host computer system;
[0045] FIG. 4 is a view of an email that is received by the second user device in FIG. 1;
[0046] FIG. 5 is a view of a browser displaying a user interface with fields for creating login details for the second wallet;
[0047] FIGS. 6 to 30 are views similar to FIG. 5 that step a user of the second user device through a wallet set up;
[0048] FIGS. 31 to 33 are views of the browser wherein the user interface discloses various tools that can be used by the user;
[0049] FIGS. 34 to 37 are views of the browser wherein the user interface is used by the user to purchase bitcoin from the first host computer system;
[0050] FIG. 38 is an email that is received by the second user device to confirm the purchase of the bitcoin from the first host computer system;
[0051] FIG. 39 is an email that is received by the second user device with a notification that bitcoin has been added to their wallet as part of a referral bonus system;
[0052] FIG. 40 is a view of the browser wherein the user interface displays “Limits and Verifications” associated with the second wallet;
[0053] FIG. 41 is a view similar to FIG. 3 displaying transfer of bitcoin from the second wallet to the first wallet;
[0054] FIGS. 42 and 43 are views of the browser when the user interface steps the user through the transfer of bitcoin from the second wallet to the first wallet;
[0055] FIG. 44 is a view of the browser wherein the user interface displays Bitcoin addresses associated with transactions that have been completed;
[0056] FIG. 45 is a view similar to FIG. 40 further showing the transfer of bitcoin from the second wallet to a third wallet that is connected to a second host computer system;
[0057] FIG. 46 is a block diagram illustrating splitting of a private key of a vault and offline distribution;
[0058] FIG. 47 is a block diagram illustrating removal of the private key of the vault;
[0059] FIG. 48 is a block diagram illustrating offline or “cold” storage of values of Bitcoin addresses of a wallet in the vault;
[0060] FIG. 49 is a block diagram illustrating isolation of the vault with its private key removed;
[0061] FIG. 50 is a block diagram illustrating how the private key of the vault and the value of the Bitcoin addresses are restored;
[0062] FIGS. 51a to 51d are block diagrams that illustrate how values of certain Bitcoin addresses in a wallet are removed and others are maintained;
[0063] FIG. 52 is a graph illustrating how the wallet is maintained within a range so that only a portion of the wallet is “hot” in the sense that a user of the wallet can use the “hot” portion for transacting with another user;
[0064] FIG. 53 is a block diagram that shows how an intermediate hot wallet is used to collect value from multiple wallets before transfer to a vault;
[0065] FIG. 54 is a block diagram of a network environment that includes a customer computer system and merchant computer system;
[0066] FIG. 55 is a block diagram illustrating functioning for purposes of locking an exchange rate in when processing a transaction made by the customer computer system on the merchant computer system in FIG. 54;
[0067] FIG. 56 is a flow chart illustrating the establishment of a personal vault;
[0068] FIG. 57 is a flow chart illustrating how bitcoin is transferred into and out of the vault;
[0069] FIG. 58 is a block diagram of the first host computer system illustrating components that are used for establishing the vault and transferring bitcoin into and out of the vault;
[0070] FIG. 59 is an email that is transmitted to verify a secondary email address;
[0071] FIG. 60 is a view of a browser wherein a user interface displays options for transferring bitcoin out of a vault;
[0072] FIGS. 61 and 62 are emails that are transmitted to primary and secondary email addresses to approve a withdrawal;
[0073] FIG. 63 is a view of the browser with the user interface displaying a transaction status window;
[0074] FIG. 64 is a block diagram illustrating the establishment of a user-controlled vault;
[0075] FIG. 65 is a block diagram illustrating the user of the user-controlled vault for authorizing a transaction;
[0076] FIG. 66 is a block diagram of an address generator that is used by the user-controlled vault;
[0077] FIG. 67 to FIG. 71 are a block diagrams illustrating the functioning of a tip button;
[0078] FIG. 72 is a block diagram of a system for transacting bitcoin according to an embodiment of the invention;
[0079] FIGS. 73a to 73f illustrate the use of the system of FIG. 72 for executing transfer-in, trading and withdrawal algorithms; and
[0080] FIG. 74 is a block diagram of a machine in the form of a computer system forming part of the network environment.
DETAILED DESCRIPTION OF THE INVENTION
[0081] FIG. 1A of the accompanying drawings illustrates a network environment 10, including the Bitcoin network 12, a first host computer system 14 within which the invention manifests itself, a second host computer system 16, first and second user devices 18 and 20 connected over the Internet 22 to the first host computer system 14, a third user device 24 connected to the second host computer system 16, a bitcoin exchange computer system 26 and a miner computer system 28.
[0082] The Bitcoin network 12 includes a host node 30 and a plurality of remote nodes 32A to D that are connected to one another. The first host computer system 14 is connected to the host node 30. The bitcoin exchange computer system 26 is connected to the remote node 32A. The second host computer system 16 is connected to the remote node 32B. The miner computer system 28 is connected to the remote node 32D or could reside on the same computer system.
[0083] The first host computer system 14 is used primarily for transacting bitcoin and, as shown in FIG. 1B, includes a website 34 having a user interface 36, a login module 38, a wallet establishment module 40, a plurality of wallets 42, a wallet management module 44 and a hosted email module 46. The login module 38 is connected to the website 34 and the hosted email module 46 is connected to the login module 38. The wallet establishment module 40 is connected to the wallets 42. The hosted email module 46 is connected via the wallet management module 44 to the wallets 42. As illustrated in the drawing, the first user device 18 is connected over the Internet 22 and the user interface 36 to the login module 38. As further illustrated in the drawing, the hosted email module 46 is connected over the Internet 22 to the second user device 20 and the second user device 20 is connected over the Internet 22 and the user interface 36 to the wallet establishment module 40.
[0084] As shown in FIG. 2, the first host computer system 14 already has one wallet (Wallet A) stored among the wallets 42 corresponding to the first user device 18. The first wallet (Wallet A) includes an email address (email address A) and login details for the wallet. The first wallet (Wallet A) also includes a number of Bitcoin addresses (Bitcoin address 1; Bitcoin address 2) that have been created due to respective transfers or purchases (Transfer 1; Transfer 2). The first Bitcoin address (Bitcoin address 1) is created due to a purchase (Transfer 1) from a master wallet of the first host computer system 14 (First Host) and is recorded for a value in an amount in bitcoin. The second Bitcoin address (Bitcoin address 2) is created due to a transfer (Transfer 2) from another location within the Bitcoin network 12 having a network address outside of the first host computer system 14 and is recorded for a particular amount in bitcoin. The first wallet (Wallet A) was originally established by the wallet establishment module 40 in FIG. 1B. The email address (email address A) and login details of the first wallet were also recorded by the wallet establishment module 40. The wallet establishment module 40 and wallet management module 44 were used to record the transfers and purchases (Transfer 1; Transfer 2), their Bitcoin addresses (Bitcoin address 1; Bitcoin address 2), their values and other details within the wallet.
[0085] A user of the first user device 18 in FIG. 1B may use a mobile application on the first user device 18 to communicate over the Internet 22 directly with the login module 38 or may use a browser on the first user device 18 to communicate via the Internet 22 and the website 34 with the login module 38. A browser application on the first user device 18 transmits a user interface request over the Internet 22 to the website 34. The website 34 responds to the user interface request by transmitting the user interface 36 over the Internet 22 to the first user device 18. The user interface 36 is then displayed on the first user device 18. The user interface 36 includes fields for entering login credentials, which are then transmitted from the first user device 18 over the Internet 22 to the login module 38. The login module 38 verifies whether the login credentials match the login details for the wallet (Wallet A). If the login credentials match the login details, then the login module 38 logs the first user device 18 into the wallet (Wallet A) in FIG. 2. If the login credentials do not match the login details, then the first user device 18 is not logged in to the wallet.
[0086] If the first user device 18 in FIG. 1B is logged in to the wallet, the login module 38 also provides access for the first user device 18 to the hosted email module 46 and transmission of an email by a user of the first user device 18 to an email address of the second user device 20. The user interface 36 provides a field for entering the email address of the second user device 20. The user interface 36 also includes a field for entering an amount in bitcoin (or an amount in local currency that is converted to bitcoin using an exchange rate) that is being transferred from the wallet (Wallet A) corresponding to the first user device 18 to a respective wallet among the wallets 42 corresponding to the second user device 20 that has not yet been established at this point in time. The user of the first user device 18 then uses the hosted email module 46 to send an email at 50 to the second user device 20. The hosted email module 46 simultaneously at 52 instructs the wallet establishment module 40 to establish a wallet corresponding to the email address within the wallets 42. The hosted email module 46 simultaneously instructs the wallet management module 44 to record the amount of bitcoin that is being transferred from the wallet (Wallet A) within the wallet corresponding to the email address.
[0087] FIG. 3 illustrates further activity within the wallets 42 due to the email represented by a third transfer (Transfer 3). When the user of the first wallet (Wallet A) transmits the email, the system uses an existing Bitcoin address (Bitcoin address 2) to which the outgoing transfer is charged. Associated with the transfer (Transfer 3) are the email address to which the email has been transmitted, the amount in bitcoin, a miner’s fee of zero bitcoin that is paid by the first host computer system 14 to any miner computer system such as the miner computer system 28 in FIG. 1A, and a host fee of zero bitcoin that are charged to the wallet (Wallet A) for the transfer. A second wallet (Wallet B) is established by the wallet establishment module 40 and the email address (email address B) of the second user device 20 is recorded as an identifier of the wallet (Wallet B). A Bitcoin address (Bitcoin address 3) is recorded within the second wallet (Wallet B) for the transfer (Transfer 3). Within the second wallet (Wallet B), the transfer (Transfer 3) has the Bitcoin address (Bitcoin address 3), the identifier of the wallet (Wallet A) from where the funds are transferred associated therewith, and the amount in bitcoin that has been transferred. The amount in bitcoin corresponding to the transfer (Transfer 3) of both wallets (Wallet A; Wallet B) is the same, consistent with double entry accounting principles. The second wallet (Wallet B) so far has no login details or any other user information and has not been accessed by a user of the second user device 20 at this point in time.
[0088] FIG. 4 illustrates the email when it is received at the second user device 20 in FIG. 1B. The email is received and viewed within an email application on the second user device 20. The email includes a link (“Click here to sign in and claim this amount”) that, when selected by the user of the second user device 20, transmits a user interface request from the browser on the second user device 20 over the Internet 22 to the website 34. The website 34 responds to the user interface request to transmit the user interface 36 over the Internet 22 to the second user device 20 for viewing within the browser.
[0089] FIG. 5 illustrates the user interface 36 as displayed on the second user device 20 in FIG. 1B. The user interface 36 includes a plurality of fields for the user of the second user device 20 to enter login details for the second wallet (Wallet B), including a password and a confirmation of the password. After the user has entered a password, the user can access their wallet by selecting the button “Access My Wallet”. The wallet establishment module 40 in FIG. 1B stores the login credentials in association with the second wallet (Wallet B). The login module 38 also logs the second user device 20 into the second wallet (Wallet B). If the user is logged out, the user can be provided with a login page where the user can enter login credentials that are compared with the login details in the second wallet (Wallet B) and then log into the second wallet (Wallet B) following a favorable match between the login credentials and the login details.
[0090] FIG. 6 shows a view that is displayed on the second user device 20 in FIG. 1B. The user is already logged into the wallet, as shown in the top right. The user can accept or decline an agreement. FIG. 7 displays the first page that is displayed to the user following acceptance of the agreement. The page shows the current balance corresponding to the amount of bitcoin at the Bitcoin address (Bitcoin address 4) in FIG. 3. The user can select various tools down the left margin, including sending or requesting bitcoin, buying or selling bitcoin, account settings and various merchant tools. FIG. 8 illustrates a view that is displayed to the user if the user selects the “Buy/Sell” link in FIG. 7. The user is prompted to add a bank account. FIGS. 9 through 15 step the user through the entry of bank account details and verification of the bank account. The user can also select a credit card as a backup payment. FIGS. 16 to 19 step the user through the entry of a credit card number and a billing address, and FIGS. 20 and 21 step the user through a verification process to verify that the user is in control of the credit card account. FIGS. 22 and 23 request additional information from the user. FIG. 23 also allows the user to verify a phone at a phone number and FIGS. 24 through 27 step the user through a process for verifying their phone and phone number. FIGS. 28 through 30 illustrate a process for verifying an identity of the user of the second user device 20. As illustrated in FIGS. 31 to 33, the top margin within the account settings allow for additional tools such as referrals (FIG. 31), viewing of Bitcoin addresses (FIG. 32), and integration with an application programmable interface (FIG. 33).
[0091] FIG. 34 illustrates a process that is initiated by the user to purchase bitcoin from a wallet of the first host computer system 14. In the present example, the user selects one (1) bitcoin (BTC) to purchase. FIGS. 35 and 36 step the user through the process of purchasing the bitcoin. Once the bitcoin is purchased, the user can select on “History” tab in the top margin to display a view as shown in FIG. 37 wherein the transaction is displayed and is marked as “PENDING”.
[0092] FIG. 38 shows an email that is transmitted by the hosted email module 46 in FIG. 1B to the second user device 20 to confirm the purchase of the bitcoin following selection of a “Confirm” button in FIG. 35. The email also has a link that, when selected by the user, opens the browser on the second user device 20 and allows the user to login to their wallet and view the transaction.
[0093] FIG. 39 shows an email that is transmitted by the hosted email module 46 in FIG. 1B to the second user device 20 with a notification that bitcoin has been added to their wallet as part of a referral bonus system.
[0094] FIG. 40 illustrates a view that is displayed when the user selects a “Limits and Verifications” tab in the top margin of the “Buy/Sell” page.
[0095] When the user selects the “Send/Request” link in the left margin in FIG. 40, the user is provided an option to send bitcoin from their wallet (Wallet B) in FIG. 3 to another wallet (e.g. the first wallet (Wallet A)) in FIG. 3.
[0096] FIG. 41 illustrates further transfers or purchases (Transfer 4; Transfer 5; Transfer 6). The fourth transfer (Transfer 4) represents the purchase of bitcoin from the first host computer system’s 14 master wallet.
[0097] The fifth transfer (Transfer 5) represents the transfer of bitcoin from the second wallet (Wallet B) to the first wallet (Wallet A). The second wallet (Wallet B) now has login details stored therein. If the second user device 20 in FIG. 1B has been logged out of the second wallet (Wallet B), then the second user device 20 is first directed to the login module 38 which receives login details for the second wallet (Wallet B) from the second user device 20, verifies whether the login credentials for the second wallet (Wallet B) match the login details for the second wallet (Wallet B). If the login details match the login credentials, then the login module 38 logs the second user device 20 into the second wallet (Wallet B).
[0098] The login module 38 then provides the second user device 20 with access to the hosted email module 46. The user of the second user device 20 then enters the email address (email address A) of the user of the first wallet (Wallet A) and an amount of bitcoin that the user of the second user device 20 wishes to transfer from the second wallet (Wallet B) to the first wallet (Wallet A). The user of the second user device 20 then uses the hosted email module 46 to send an email via the Internet 22 to the first user device 18. As soon as the email is sent, a transfer (Transfer 5) is recorded within the second wallet (Wallet B). Because one of the Bitcoin addresses (Bitcoin address 4) has funds associated therewith, it can be charged for the transfer (Transfer 4). Within the second wallet (Wallet B) the transfer (Transfer 4) has the email address (email address A) to which the email has been sent and the amount in bitcoin associated therewith.
[0099] As indicated, the miner’s fee that is paid by the first host computer system 14 and the host fee that is charged for the transfer are zero bitcoin because the first wallet (Wallet A) is stored within the wallets 42 of the first host computer system 14. The user of the first user device 18 receives the email indicating the transfer of bitcoin to their wallet (Wallet A). A Bitcoin address (Bitcoin address 5) is recorded within the first wallet (Wallet A) for the transfer (Transfer 5) together with the identifier of the second wallet (Wallet B) from which the transfer has been made and the amount in bitcoin. The amount in bitcoin corresponding to the transfer (Transfer 4) in the second wallet (Wallet B) is the same as the amount in bitcoin as in the first wallet (Wallet A).
[0100] As illustrated by the next transfer (Transfer 6), the user of the second wallet (Wallet B) can opt to send bitcoin to a Bitcoin address of the first wallet (Wallet A). The transfer (Transfer 6) is the same as the preceding transfer (Transfer 5) in all other respects.
[0101] FIG. 42 shows a view that is displayed to the user of the second user device 20 in FIG. 1B in order to make the transfer from their wallet (Wallet B) to the first wallet (Wallet A). The view includes a field for the user to enter the email address (email address A) and fields for entering either an amount in bitcoin (BTC) or an amount in a local currency (USD-United States Dollar). The exchange rate between bitcoin and the local currency is shown in the top left corner. The view also includes a button “Send Money” which, when selected by the user, initiates the transfer of bitcoin.
[0102] FIG. 43 is a view that is displayed to the user indicating transactions that have been initiated or completed. The purchase of bitcoin discussed with reference to FIGS. 35 to 37 is shown as “PENDING”. A block chain verification notice has to be broadcast by the miner computer system 28 and be received by the first host computer system 14 in FIG. 1A before a determination is made to change the marker “PENDING” to “COMPLETE”. The other transactions representing transfers between the first and second wallets (Wallet A and Wallet B) in FIG. 41 are shown as completed because they do not need block chain verification outside of the first host computer system 14. No block chain verification notice is thus required for these transactions to be marked “COMPLETE”. FIG. 44 shows a view that can be selected by the user by selecting a tab in the top margin wherein the user is shown the Bitcoin addresses associated with transactions that have been completed.
[0103] FIG. 45 illustrates a further transaction (Transfer 7) wherein bitcoin is transferred from the second wallet (Wallet B) to a third wallet (Wallet C) held by the second host computer system 16 in FIG. 1A. The user of the second user device 20 enters a bitcoin address (Bitcoin address 6) that is located in the third wallet (Wallet C) and an amount of bitcoin to be transferred to the third wallet (Wallet C). A transfer (Transfer 7) is recorded within the second wallet (Wallet B). Associated with the transfer (Transfer 7) are the Bitcoin address (Bitcoin address 6), the amount in bitcoin that is being transferred and a miner’s fee that is charged for the transfer and has to be paid by the first host computer system 14 to the miner computer system 28 in FIG. 1A. No fee is charged by the first host computer system 14 for a transfer to another Bitcoin address.
[0104] When the user of the second user device 20 in FIG. 1A completes the purchase, a transfer instruction is created and is broadcast via the host node 30 to all remote nodes 32A-D within the Bitcoin network 12. The transfer instruction thus traverses the first node and the second remote node 32B to reach the second host computer system 16. The second host computer system 16 and all other computer systems connected to the remote nodes 32A-D record the transfer (Transfer 7) with respect to the Bitcoin addresses (Bitcoin address 4; Bitcoin address 6). The transfer (Transfer 7) has associated therewith the amount in bitcoin.
[0105] The transfer instruction that results in the transfer (Transfer 5) thus results in no miner’s fee being charged to and paid by the first host computer system 14. No host fee is charged to the second wallet (Wallet B) because the transfer (Transfer 7) is made to another wallet (Wallet A) within the wallets 42 of the first host computer system 14. By contrast, the transfer instruction that results in the transfer (Transfer 7) representing the transfer to the Bitcoin address (Bitcoin address 6) in the third wallet (Wallet C) results in a miner’s fee that is paid by the first host computer system 14 to the miner computer system 28. The miner computer system 28 is responsible for verifying transfers of bitcoin over the Bitcoin network 12. In the present scenario, the miner computer system 28 verifies the transfer of bitcoin from the second wallet (Wallet B) to the third wallet (Wallet C).
[0106] Another transfer may comprise that bitcoin is sent to one of the nodes, e.g. node 32C. The node 32C could be a fourth user device which is owned by the recipient of the bitcoin transfer having its own bitcoin address.
[0107] FIG. 46 illustrates components that are used for cold storage of value of bitcoin, including a local storage 56, a local controller 58, a vault 64, a splitter 66, one or more encryption algorithms 68 and 70 and an offline distribution module 72.
[0108] The vault 64 has a Bitcoin address 80 with a private key 79. The private key 79 is, for purposes of illustration, shown as a nine digit sequence of characters that are provided to the splitter 66. For purposes of illustration, the splitter 66 splits the nine digits of the private key 79 into seven overlapping codes (Codes 1 to 7). The encryption algorithm 68 encrypts the first code (Code 1) into an encrypted code (Encrypted Code 1). In a similar manner, the second code (Code 2) is encrypted by an encryption algorithm (not shown) into an encrypted code (Encrypted Code 2). Each one of the seven codes is encrypted into a separate encrypted code. A separate key may be used for each one of seven codes. Alternatively, a separate encryption algorithm may be used for each one of the seven codes.
[0109] Once all the codes have been encrypted, the offline distribution module 72 transmits each one of the encrypted codes (Encrypted Code 1 to 7) to a separate location. The locations are remote locations that are geographically separated from one another. The offline distribution module 72 may also be used to print one or more of the encrypted codes for paper delivery to respective remote locations.
[0110] FIG. 47 illustrates functioning of the offline distribution module 72 following distribution of the encrypted codes in FIG. 46. The offline distribution module 72 removes the private keys 79 of the Bitcoin address 80 of the vault 64. The offline distribution module 72 also removes the private key 79 of the Bitcoin address 80 within the local storage 56.
[0111] As shown in FIG. 48, a local register 60 includes a plurality of wallets 42, one of which is shown. The wallet 42 has a plurality of Bitcoin addresses 74, 76 and 78 associated therewith. Each Bitcoin address 74, 76 and 78 has a respective value and a respective private key. The local controller 58 transfers the entire value of the Bitcoin addresses 76 and 78 into the vault 64. The value relating to the Bitcoin address 74 is not transferred into the vault 64. The local controller 58 calculates the total value of the Bitcoin addresses 76 and 78 that have been transferred into the vault 64 and records the total value in the local storage 56 in association with the Bitcoin address 80.
[0112] As shown in FIG. 49, following removal of the value of the Bitcoin addresses 76 and 78 within the wallet 42, the value of the Bitcoin addresses 76 and 78 are only held within the vault 64 and the local storage 56. The private key 79 is only held in a split and encrypted form at the distributed locations where the offline distribution module 72 in FIG. 46 has distributed them to. Unless access can be gained to the private key 79 that has now been split and distributed, it is not possible to access the value of the Bitcoin addresses 76 and 78. It is now possible for a user to which the wallet 42 is registered to use the Bitcoin address 74 for transacting with another user via the wallet management module 44 in FIG. 1B. The Bitcoin addresses 76 and 78 are not usable by the wallet management module 44 for purposes of transacting with another user at this time because their values, within the wallet 42, have been removed.
[0113] FIG. 50 shows how the private keys of the vault 64 and the Bitcoin addresses 76 and 78 that were removed in FIG. 46 are restored. Components that are provided for restoration include a plurality of restoration interfaces 82, 84 and 86, one or more decryption algorithms 88, 90 and 92 and an assembler 94. The holder of the first encrypted code (Encrypted Code 1) is called upon to enter the encrypted code into the restoration interface 82. The restoration interface 82 may for example be a web page with a field for entry of the first encrypted code. Alternatively, the restoration interface 82 may be an application programmable interface (API) and the first encrypted code can be entered into the API with or without human involvement.
[0114] In the given example, the second, third, fifth and sixth encrypted codes are not received at this time. The fourth and seventh encrypted codes are received through the restoration interfaces 84 and 86, similar to the first encrypted code.
[0115] The decryption algorithm 88 decrypts the first encrypted code (Encrypted Code 1) into the first code (Code 1). In the given example, the decryption algorithms 90 and 92 decrypt the fourth and seventh encrypted codes (Encrypted Code 4 and Encrypted Code 7) into the fourth and seventh codes (Code 4 and Code 7) respectively. In the given example, three codes are the minimum number of codes that are required in order to reassemble the private key 79. The minimum number of codes required for reassembly in FIG. 48 is thus less than the total number of codes into which the private key 79 has been split in FIG. 46. The assembler 94 assembles the private key 79 when the minimum number of codes has been received.
[0116] The private key 79 of the Bitcoin address 80 in the local storage 56 is used to access the vault 64. The local controller 58 then restores the private key 79 from the local storage into the vault for association with the Bitcoin address. The block chain will know whether the private key 79 that has been restored is the same private key 79 that was previously associated with the Bitcoin address. Only upon confirmation from the block chain will it be possible to transfer the value from the vault 64 to the local register 60.
[0117] The local controller 58 restores the respective value of the Bitcoin addresses 76 and 78 in the vault 64 to the Bitcoin addresses 76 and 78 in the wallet 42. Because the values have been restored to the Bitcoin addresses 76 and 78 in the wallet 42 they are usable for transacting with other users.
[0118] FIGS. 51a to 51d illustrate the use of a “hot” wallet in combination with “cold storage”. As shown in FIG. 51a, the wallet 42 has the Bitcoin addresses 74, 76, 78 and a further Bitcoin address 98, each having a respective value associated therewith. The local storage 56 has first, second and third Bitcoin addresses 80A to 80C for first, second and third vaults 64A to 64C, respectively. The Bitcoin addresses 76 and 78 form a first transfer set that is selected for cold storage. The Bitcoin addresses 74 and 98 form a first transacting set. The values of the Bitcoin addresses 76 and 78 of the first transfer set are transferred into the first vault 64A, as represented by “Value” in the first vault 64A.
[0119] The private key of the Bitcoin address 80A of the first vault 64A is then transferred into the local storage 56 and is stored in association with the first Bitcoin address 80A. As hereinbefore described with reference to FIG. 46, the private key of the Bitcoin address 80A in the local storage 56 is then split and distributed. As hereinbefore described with reference to FIGS. 47 and 48, the private keys of the Bitcoin address 80 and the value of the Bitcoin address 76 and 78 are then removed. It is then not possible for a user of the wallet 42 to use the Bitcoin address 76 and 78 for transacting with another user. The user can still transact with another user using the Bitcoin addresses 74 and 98 of the first transacting set because their values are still associated with them within the wallet 42.
[0120] FIG. 51b shows the Bitcoin addresses 76 and 78 within the wallet 42 with their values removed and the Bitcoin address 80A within the local storage 56 with its private key removed. The private key of the Bitcoin address 80B of second vault 64B is transferred into the local storage 56 and associated with the second Bitcoin address 80B within the local storage 56. The private key of the second Bitcoin address 80B in the local storage 56 is split and distributed and then removed from the local storage 56. The Bitcoin address 98 is selected as part of a second transfer set of one or more Bitcoin addresses. The value of the Bitcoin address 98 is transferred from the wallet 42 into the second vault 64B, as represented by “Value” in the second vault 64B. The value of the Bitcoin address 98 within the wallet 42 is thus removed. The user of the wallet 42 can now not use the Bitcoin address 98 for purposes of transacting with another user because the value of the Bitcoin address 98 has been removed from the wallet 42. The Bitcoin address 74 forms part of a second transacting set that may include one or more Bitcoin addresses that can be used for transacting with another user.
[0121] FIG. 51c shows the Bitcoin address 98 having its value removed and the second Bitcoin address 80B within the local storage 56 having its private key removed. At this stage it may be desirable to restore the values of the Bitcoin addresses 76 and 78. The private key of the first Bitcoin address 80A within the local storage 56 is restored to the vault 64 as hereinbefore described with reference to FIG. 50. The respective values of the Bitcoin addresses 76 and 78 are then restored from the vault 64A to the Bitcoin addresses 76 and 78 in the wallet 42. Because the values of the Bitcoin addresses 76 and 78 are restored within the wallet 42, the Bitcoin addresses 76 and 78 of the first transfer set can, at least for the time being, be used together with the second transacting set for transacting with another user.
[0122] The same Bitcoin addresses 74, 76, 78 and 98 that are shown in FIG. 51a are also shown in FIGS. 51b and 51c. It should be understood that the Bitcoin addresses may change between the figures. The system allows for the value that was previously associated with one Bitcoin address to be restored to another Bitcoin address if necessary.
[0123] As shown in FIG. 51d, the first vault 64A is discarded after the value therein is restored. The first Bitcoin address 80A within the local storage 56 and the first vault 64A will never be used again.
[0124] The Bitcoin address 78 is selected as a third transfer set. The private key of the Bitcoin address 80C of the third vault 64C is transferred into the local storage 56 and stored in association with a third Bitcoin address 80C. The value of the Bitcoin address 78 is transferred from the wallet 42 to the third vault 64C. The user of the wallet 42 can now not use the Bitcoin address 78 for transacting with another user. The Bitcoin address 76 forms part of a third transacting set that could include one or more Bitcoin addresses. The Bitcoin address 76 can be used by the user of the wallet 42 for transacting with another user because the value of the Bitcoin address 76 is associated therewith within the wallet 42. The second and third transacting sets can thus be used by the user for transacting with another user. The second and third transfer sets are unusable for transacting with another user because their private keys have been removed.
[0125] FIG. 52 illustrates how the local controller 58 (see FIGS. 46 to 50) maintains transaction sets of a wallet 42 within a target range 101. Should all the Bitcoin addresses of the wallet 42 have values associated therewith, the wallet 42 is said to be 100% hot and 0% cold. If all the Bitcoin addresses in a wallet 42 have their values removed, the wallet 42 is to be 0% hot and 100% cold. The target range 101 for the total bitcoin value within the wallet may for example be 5% to 10% hot. At 102, the values of the first transacting set are transferred from the wallet 42 as described with reference to FIG. 51a. At 104, the user transacts with some of the Bitcoin addresses and the total value within the wallet 42 of the Bitcoin addresses that are hot is reduced. At 106, the values of the second transfer set are removed from the wallet 42 as described with reference to FIG. 51b. At 108, the values of the first transfer set are restored as described with reference to FIG. 51c. At 110, the user transacts and gains further Bitcoin addresses for additional value within their wallet 42. At 112, values of the third transfer set are transferred out of the wallet 42 as described with reference to FIG. 51d. It can thus be seen that the local controller 58 in FIGS. 46 to 50 adjusts the total value of bitcoin that is not within the target range 101. The local controller 58 typically recalculates the hot/cold value ratio of each wallet on a daily basis and automatically adjusts the value to the target range 101.
[0126] FIG. 53 illustrates the use of an intermediate hot wallet 114 that is used to collect bitcoin values from a plurality of wallets 42A to C. The wallet 42A is that same as the wallet 42 as described above. The wallet 42B has bitcoin addresses 120, 122, 124 and 126 associated therewith. The wallet 42C has bitcoin addresses 128, 130, 132 and 134 associated therewith. Each wallet 42A, B or C is held within the target range 101 in FIG. 50. The values of the bitcoin addresses 76, 78, 120, 122, 128 and 130 are identified for transfer to the vault 64A and are first transferred or “swept” to the intermediate hot wallet 114 from where they are transferred to the vault 64A.
[0127] FIG. 54 illustrates a network environment 136 that, in addition to the first host computer system 14, includes a customer computer system 138 and a merchant computer system 140 that are connected to one another over the Internet 142. The merchant computer system 140 has an online store 144 and a website 146. The customer computer system 138 has a browser 148. A customer at the customer computer system 138 can use the browser 148 to access the website 136 over the Internet 142. The website 136 is then displayed on the browser 148. The website 136 allows for the customer to make purchase on the online store 144. The customer may, for example, purchase real goods, virtual goods or services from the online store 144.
[0128] The first host computer system 14 includes an application programmable interface (API) 150, a reference code generator 152, a transaction processor 154, a currency converter 156 and merchant, and customer and host wallets 158, 160 and 162. The wallets 158, 160 and 162 may be of the kind as hereinbefore described.
[0129] As shown in FIG. 55, the customer is shown a shopping cart with several payment options, including “Pay with Credit Card” and “Pay with bitcoin.” Prior to being displayed the shopping cart, the customer has traveled through the shopping flow of the merchant computer system 140, has selected one or more items to be purchased and has selected a shopping or checkout cart, which causes the display of the view shown in FIG. 55. When the user selects the button “Pay with bitcoin” the merchant computer system 140, at 166, transmits an API call to the first host computer system 14. The API call includes a request for payment. The request for payment includes an amount in a currency, in the present example $14.00, an order name (usually a number), order descriptions (usually items in the checkout cart in a single line-item entry separated by commas), and a success uniform resource locater (URL) if desired (a page to which the customer is redirected at checkout if the order completes).
[0130] When the first host computer system 14 receives the API call at 166, the reference code generator 152 generates a unique reference code for the specific order. The reference code is thus uniquely generated for each API call. The first host computer system 14 then stores the reference code in its database. At 168, the first host computer system 14 responds to the API call received at 166 to transmit the reference code to the merchant computer system 140. The merchant computer system 140 then receives the reference code as reference code 170. The merchant computer system 140 stores the reference code as reference code 172 within its accounting system 173 and associates the reference code 172 with the particular order shown in the shopping cart. The merchant computer system 140 also creates a URL 174. The reference code 170 is used as a reference code 176 within the URL 174 when the URL 174 is created.
[0131] The first host computer system 14 creates a URL 180 that includes a reference code 182. The reference code 182 and the reference code 176 are the same.
[0132] The merchant computer system 140 at 178 redirects the browser 148 (FIG. 54) using the URL 174. The browser is then redirected to the URL 180 of the first host computer system 14.
[0133] The URL 180 may, for example, be the URL of a landing page, iFrame or modal window 184. The landing page, iFrame or modal window 184 presents checkout options to the customer, including to pay with the customer wallet 160 if one exists, to pay with bitcoin using an external account, or to create a wallet at the first host computer system 14 for purposes of completing the purchase. In a different embodiment, instead of being automatically redirected by the merchant computer system 140 to the first computer system 14, the customer may be redirected to a different page at the merchant computer system 140, which will then contain a link for the customer to navigate to the landing page, iFrame or modal window 184.
[0134] When the browser 148 of the customer computer system 138 downloads the landing page, iFrame or modal window 184, the first host computer system 14 automatically generates a bitcoin address 186 specifically for the customer’s order within the merchant wallet 158.
[0135] The first host computer system 14 also creates a bitcoin price based on the price in local currency and displays the bitcoin price within the landing page/iFrame or modal window 184 within the browser 148. The graph illustrates a fluctuating bitcoin to dollar exchange rate. In the present example, the exchange rate at minute 0 is used at 190 to calculate the exchange rate. The local currency price in the present example is $14.00 which gives a bitcoin price of 0.02 BTC. The price of 0.02 BTC that is based on the exchange rate at minute 0 is maintained for a select period of time, in the present example 10 minutes, before it resets. The customer may not wish to immediately send the bitcoin, but may do so at any time before the price resets at minute 10 and the exchange rate remains locked in and the bitcoin price thus remains unchanged at 0.02 BTC during that time.
[0136] An option is displayed to the customer to send the bitcoin together with the price in bitcoin at minute 0. When the customer selects the option to send the bitcoin, the customer computer system 138 transmits a send instruction to the first host computer system 14. The first host computer system 14 receives and at 192 detects the send instruction. The customer may for example request to send bitcoin from the customer wallet 160 or via another path as hereinbefore described. The first host computer system 14 responds to the send instruction to transmit an order status message that includes the reference code for the transaction to the merchant computer system 140. The merchant computer system 140 receives the reference code as reference code 194. The merchant computer system 140 then matches the reference code 194 to the reference code 172 within its accounting system 173 and marks the transaction as complete.
[0137] In the present example, the send instruction is processed at minute 6. The exchange rate has in the present example changed between minute 0 and minute 6. Should the bitcoin price of 0.02 BTC be converted to local currency at this time it would result in a different price in local currency than the original transaction. The difference between the original price at minute 0 and minute 6 represents either a loss or a gain for the first host computer system 14. The loss and gain is used to calculate bitcoin replacement costs on a periodic basis.
[0138] In the present example the first computer system 14 responds to the send instruction received at 192 to transmit 0.02 BTC to the bitcoin address 186 associated with the merchant wallet 158. When the bitcoin reaches the bitcoin address 186, the first host computer system 14, at 196, immediately purchases the bitcoin from the merchant wallet 158, resulting in a transfer of the bitcoin from the merchant wallet 158 to the host wallet 162. The first host computer system 14 purchases the bitcoin at the exchange rate locked in at minute 0.
[0139] Periodically, for example daily, the first host computer system 14 calculates the total amount of bitcoin sold by the merchant wallet 158 that day at the locked in prices. The first host computer system 14 has a bank transfer module 200 that, at 202, transmits a payment instruction to a bank for the first host computer system 14. The bank for the first host computer system 14 communicates with a bank of the merchant computer system 140. Such communication, at 204, results in transfer of funds from a host bank account 206 to a merchant bank account 208.
[0140] In the present example, the customer uses their customer wallet 160 to transfer funds in the form of bitcoin from the customer wallet 160 to the merchant wallet 158 and the funds are then transferred in the form of bitcoin from the merchant wallet 158 to the host wallet 162. In another embodiment, the merchant wallet 158 can be bypassed such that the customer transfers funds in the form of bitcoin from the customer wallet 160 directly into the host wallet 162. In either embodiment the funds that are received by the host wallet 162 are used as a basis for calculating the amount of money in local currency that is transferred by the bank transfer module 200, minus a fee that is held back by the first host computer system 14 for purposes of processing the transaction.
[0141] Referring again to FIG. 54, the API 150 sends and receives API calls at 166, 168 and the order status message in response to the send instruction 192 in FIG. 55. The currency converter 156 is responsible for receiving and maintaining exchange rate for bitcoin to local currency and for calculating the bitcoin price based on the local currency price and the exchange rate at any particular moment in time. The transaction processor 154 is responsible for transferring funds in the form of bitcoin or local currency from one wallet or bank account to another.
[0142] In the embodiment above, the exchange rate is locked in when the customer accesses the landing page, iFrame or modal window 184 and is locked for ten minutes. In such an embodiment the merchants typically create a payment “button” or using the API, specifically the button API, of the first host computer system. Selection of the button by the customer results from the process described above wherein the customer is directed to the landing page, iFrame or modal window 184. Such a button does not need to look any different from the merchant’s standard “submit order” button and the button API is linked into the standard “submit order” button of the merchant computer system 140, which when clicked will direct the user directly to the landing page, iFrame or modal window 184. When the user hits the landing page the exchange rate is locked. The merchant “order” is thus not created–i.e., with locked in exchange rate–until the user clicks the payment button to land on our landing page.
[0143] Another embodiment is used in white-label solutions. In these instances, the user is not directed away from the merchant domain to a landing page such as the landing page, frame or modal window 184 to complete payment. Instead, the checkout information that would have otherwise shown on the landing page is displayed inside the merchant’s browser checkout tool. Such an embodiment may not allow “one-click” checkout for users who are already signed into their customer wallet 160; a user can only pay by QR code scan and/or manual entry of a bitcoin address. In order for this information to be incorporated into the merchant’s webpage, the merchant (1) creates a “button” when they post an item for sale to the website (the button includes the price in local currency, but not a bitcoin price and can be created at any time–e.g., weeks before a purchase); and (2) when the customer wishes to pay, e.g., by clicking on a “Place Order” button, the merchant computer system 140 sends an API call to the first host computer system 14 which responds by sending back a locked in exchange rate, which again is good for ten minutes. The merchant then displays the checkout information to the user–i.e., the proper bitcoin address and amount. This embodiment differs in that: (1) the “order” is created earlier in time, and the exchange rate follows on as a separate API call; and (2) the checkout information is hosted within the merchant’s domain.
[0144] FIG. 56 illustrates a method of managing bitcoin wherein a personal vault is created for a user. At 220, the user already has an account that the user can log into using a website. The account has a first email (electronic communication) address. The first email address may be john.smith@gmail.com. The account also has a phone number associated therewith and one or more wallets as herein before described. The website provides the user with a link to create a vault. At 222, the user is provided an option to create an individual vault or a group vault. In an individual vault the user will be required to respond to two emails in order to transfer bitcoin out of the vault. In a group vault multiple users are required to respond to emails in order for the user of the account represented at 220 to transfer the bitcoin out of the vault.
[0145] The user may, at 224, select an individual vault. At 226, an interface of the website is presented with a field for the user to enter a second email address. The second email address may for example be john.smith@hotmail.com. The user enters the second email address and selects a button to transmit the second email address from their device to the first host computer system 14. When the first host computer system 14 receives the second email address, the first host computer system 14, at 228, transmits a confirmation email with a confirmation link to the second email address. The purpose of the email that is transmitted at 228 is to confirm the second email address. At 230, the first host computer system 14 waits for the confirmation. The first host computer system 14 does not proceed to create a vault if the confirmation is not received. At 232, the user selects the confirmation link, which causes transmission of the confirmation from the device of the user to the first host computer system 14. When the first host computer system 14 receives the confirmation, the first host computer system 14 proceeds at 232 to register a vault within the same account shown at 220. The vault includes the first and second email addresses. The vault also includes the phone number of the account.
[0146] At 236, the first host computer system 14 updates the interface of the website to provide a summary. The summary indicates that, in order to transfer bitcoin out of the vault, emails will be sent to the first and second email addresses, and the summary includes the phone number associated with the vault and that the bitcoin will not be transferred out of the vault for a period of 48 hours. The interface also includes a “Finish” button. When the user selects the “Finish” button, the browser used by the user, at 238, lands in the vault. The vault looks like a wallet, but has a security feature that limits transfer of bitcoin out of the vault.
[0147] The user may, at 240, select a group vault. At 242, the first host computer system 14 provides the user with an option whether 2 out of 3 confirmations are required or 3 out of 5 confirmations are required. If the user selects that 2 out of 3 confirmations are required, then the user is required to enter two email addresses in addition to their own email address shown in the account at 220. If the user selects that 3 out of 5 confirmations are required, then the user is required to enter four email addresses in addition to their email address shown in the account at 220.
[0148] At 224, the interface of the website is updated to request the additional email addresses from the user. The interface typically includes fields for the user to enter the additional email addresses.
[0149] At 246, the first host computer system 14 makes a determination whether all the additional email addresses are associated with other accounts within the first host computer system 14. If all the additional email addresses are associated with other accounts, then the first host computer system 14 proceeds at 248 to update the account represented at 220 with a vault that includes the first email address, the additional email addresses and the phone number associated therewith.
[0150] If one or more of the additional email addresses are not associated with any accounts within the first host computer system 14, then the first host computer system 14, at 250, transmits an email to the additional email address that is not associated with an account to create an account. A user receiving the email transmitted at 250 can proceed at 252 to create an account with the second email address associated with the account. Only after all the additional email addresses are associated with accounts does the first host computer system 14, at 248, proceed to register a vault.
[0151] The first host computer system 14 then at 254 provides a summary through the interface of the website. The summary shows that in order to transfer bitcoin, emails will be sent to and confirmations will be required from the first email address and the minimum of the additional email addresses. The summary also includes the phone number associated with the vault and states the waiting period before the bitcoin is transferred. The website also includes a “Finish” button which, when selected by the user at 238, lands the browser used by the user in the vault.
[0152] FIG. 57 illustrates how bitcoin is transferred into and out of the vault. At 260, the user first transfers bitcoin into the vault. The user may transfer the bitcoin from one of their wallets associated with their account into the vault or may transfer the bitcoin into the vault from an external source. The bitcoin is then stored within the vault.
[0153] At 262, the user requests a transfer out of the vault using the website. The user includes the amount of bitcoin to be transferred, the reason for the transfer and selects a wallet to which the bitcoin is to be transferred. The user also includes a two-factor code which the user may obtain through a mobile application or via SMS communication with the first host computer system 14.
[0154] At 264, the first host computer system 14 determines whether the two-factor code is correct. If the two-factor code is incorrect, then the first host computer system 14, at 266, makes no change to the website interface.
[0155] If the determination is made at 264 that the two-factor code is correct, then the first host computer system 14 proceeds at 268 to transmit all emails. In the case of an individual vault, emails are sent to the first and second email addresses represented in the account at 234 in FIG. 56. In the case of a group vault, then emails are transmitted to the first email address and the additional email addresses represented in the account at 248 in FIG. 56. At 270, the first host computer system 14 updates the transaction list within the website to represent that approval is being awaited.
[0156] Each one of the emails has a respective link that can be selected by a recipient. At 272, a user receiving one of the emails reacts to the email by clicking on the link. Selection of the link causes an authorization instruction to be transmitted from a device of the respective user to the first host computer system 14. At 274, the first host computer system 14 detects the authorization instruction received in response to one of the emails that have been transmitted. Selection of the link on the email opens a browser on the recipient’s device and displays a message that the authorization has been successfully approved.
[0157] At 276, the recipient of a second one of the emails reacts to the email by clicking the link on the second email to send an authorization instruction. At 278, the first host computer system 14 detects the authorization instruction transmitted at 276 and displays a web page indicating that the authorization has been successfully approved.
[0158] When all the predetermined approvals have been received, the first host computer system 14 proceeds, at 280, to update the transaction list to indicate that clearance is being awaited. At 282, only if the minimum number of approvals are detected, the first host computer system 14 starts a countdown timer and sends an email to the user of the account informing the user that the bitcoin will be transferred after 48 hours. Block 284 represents the transmission of three email reminders to the user during the 48 hour waiting period. Each email includes the time remaining before the 48 hours will have elapsed and the amount of bitcoin that will be transferred out of the vault. Each email also includes a “Cancel” link. The user can select the “Cancel” link, which caused the transmission of a cancel instruction to the first host computer system 14. The cancel instruction will cancel the transfer of the bitcoin and therefore the request that was transmitted at 262.
[0159] At 286, the first host computer system 14 detects an end of the time period. The first host computer system 14 then transfers the amount of bitcoin out of the vault and in to the destination selected at 262. The first host computer system 14 also updates the transaction list on the website to indicate that the transaction has been cleared.
[0160] FIG. 58 illustrates components of the first host computer system 14 that are used for carrying out the method shown in FIGS. 56 and 57, including an account 290 of a user, a website 292, a vault establishment wizard 294, a vault management module 296 and the transaction processor 154 hereinbefore described. The vault establishment wizard 294 is programmed to execute the establishment of the vault as described with reference to FIG. 56. The vault management module 296 is programmed to manage the vault as described with reference to FIG. 57. A user accesses the website 292 and downloads an interface so as to interact via the website 292 with the vault establishment wizard 294 and the vault management module 296. The vault management module 296 provides instructions to the transaction processor 154 to transfer the bitcoin out of the vault.
[0161] FIG. 59 shows the email that is transmitted at 228 in FIG. 56. FIG. 60 shows an interface of the website 292 in FIG. 58 when the user requests a transfer out of a vault at 262 in FIG. 57. FIGS. 61 and 62 show the emails that are transmitted at 268 in FIG. 57. FIG. 63 shows the interface of the website after the minimum number of approvals are received and the countdown clock has been started at 282 in FIG. 57.
[0162] Email addresses are used in the exemplary embodiment for electronic communication via email. Another embodiment may make use of other electronic communication addresses such as text messages to phone numbers or messages through social networks. Such messages may include authorization links as described or authorization may be obtained otherwise such as sending a reply message and including “Y” or “Yes” in the reply message. A secondary electronic communication address may be an individual address or a group address.
[0163] FIG. 64 illustrates the establishment of a user-controlled vault. At 302, a user at the first user device 18 transmits a request for a user-controlled vault to the first host computer system 14. At 304, the first host computer system 14 responds to the request to initiate key generation.
[0164] At 306, the first host computer system 14 generates a seed for a master key. At 308, the first host computer system 14 uses the seed generated at 306 to generate a master key. The master key includes a public key for the master key and a private key for the master key. At 310, the first host computer system 14 stores the public key for the master key and, at 312, stores the private key for the master key. The combination of the keys stored at 310 and 312 form a master key set 314.
[0165] A generation script 316 initially resides on the first host computer system 14. At 318, the first host computer system 14 transmits the generation script 316 to the first user device 18. The first user device 18 receives the generation script 316, which is executable on the first user device 18.
[0166] At 320, the generation script 316 generates a seed for a shared key. The generation script 316 includes a key generation algorithm. At 321, the key generation algorithm uses the seed generated at 320 to generate a shared key. The shared key includes a public key and a private key.
[0167] The private key for the shared key is shown at 322. The generation script 316 also includes an interface with a field for a user to enter a password via a keyboard. At 324, the user enters the password into the interface. The generation script 316 also includes an encryption algorithm. At 326, the encryption algorithm generates an encrypted seed from the private key shown at 322 and the password entered at 324.
[0168] At 328 and 330, the key generation algorithm and encryption algorithm respectively send the public key of the shared key and the encrypted seed to the first host computer system 14. At 332, the first host computer system 14 stores the public key for the shared key and, at 334, stores the encrypted seed for the shared key. The public key stored at 332 and the encrypted seed 334 can be viewed as a shared key set 336. Additionally, the private key shown at 322 forms part of the shared key set 336. The private key shown at 322 is however never transmitted from the first user device 18 to the first host computer system 14.
[0169] At 338, the generation script 316 further generates a seed for a user key. At 340, the key generation algorithm uses the seed generated at 338 to generate a user key. The user key includes a public key for the user key and a private key for the user key. At 342, the key generation algorithm transmits only the public key for the user key to the first host computer system 14. At 344, the first host computer system 14 stores the public key for the user key.
[0170] At 346, the generation script 316 displays the private key for the user key to the user. The user can then store the private key manually on the first user device 18 or write it down for later use. The first user device 18 never transmits the private key displayed at 346 to the first host computer system 14. The combination of the public key for the user key stored at 344 and the private key for the user key displayed at 346 form a user key set 348.
[0171] FIG. 65 illustrates how the user-controlled vault is used by the user. At 360, the user of the first user device 18 creates and transmits a request to transact using bitcoin of the user-controlled vault. At 362, the request reaches the transaction processor 154 hereinbefore described. At 364, the first host computer system 14 creates an authorization for the transaction.
[0172] The master key set 312, shared key set 336 and user key set 334 are replicated from FIG. 64 and the same reference numerals apply. It should however be understood that these keys are stored or displayed in FIG. 64 and that the stored and displayed keys are not stored but only retrieved and used in FIG. 65.
[0173] At 366, the first host computer system 14 signs the authorization 364 with the private key for the master key. Such signature then allows for an authorization to transact at 368. As shown in 370, two out of three authorizations are required in order to transact and the authorization provided at 368 may form one of the two authorizations.
[0174] A verification script 372 initially resides on the first host computer system 14. At 373, the first host computer system 14 initiates key collection by transmitting the verification script 372 to the first user device 18. The verification script 372 is executable on the first user device 18. Both the generation script 316 in FIG. 64 and the verification script 372 in FIG. 65 may be in the form of JavaScript.TM. that is executable by a browser on the first user device 18.
[0175] The encrypted seed stored at 334 on the first host computer system 14 is transmitted together with the verification script 372 and is received at 374 by the first user device 18. The verification script 372 further includes an interface with a field for entering a password. At 376, the user enters the same password that the user entered at 324 in FIG. 64 into the field provided in the interface using a keyboard. The verification script 372 further includes a decryption algorithm. At 378, the decryption algorithm uses the encrypted seed and the password to decrypt the encrypted seed and obtain the private key. The encryption at 326 in FIG. 64 and decryption at 378 in FIG. 65 may follow the BIP38 protocol which is commonly understood by those skilled in the art of bitcoin encryption.
[0176] The authorization 364 is transmitted together with the verification script 372 to the first user device 18. The verification script 372 further has a signature algorithm. At 380, the signature algorithm signs the authorization with the private key. The signature algorithm then transmits the signed authorization (together with the signature) to the first host computer system 14.
[0177] The first host computer system 14 has a verification module. As will be commonly understood as those skilled in the art, a verification module is an algorithm that verifies a signature that was created with a private key using a public key. At 382, the verification module verifies the signature using the same public key stored at 332 for the shared key in the shared key set 336 that also includes the encrypted seed stored at 334. At 384, the verification module determines whether the signature is correct. If the signature is not correct, then the first computer system 14 returns to 374 where the encrypted key is received and the user enters a password. If, at 384, a determination is made that the signature is correct, then the first host computer system 14 proceeds to 386 to provide an authorization due to the signature being correct. The authorization at 386 may be one of the authorizations required at 370 in order to authorize the transaction.
[0178] The verification script 372 further includes an interface for entering the private key of the user key that was previously displayed at 346 to the user. At 390, the user enters the private key into the field provided therefor. At 392, a signature algorithm forming part of the verification script 372 signs the authorization with the private key that has been entered by the user. The signature algorithm then transmits the signed authorization (together with the signature) to the first host computer system 14. At 394, a verification module verifies the signature using the public key that was stored at 344. At 396, the verification module determines whether the signature is correct. If the signature is incorrect, then the first host computer system 14 instructs the verification script 372 to return to 390 where the user is again asked for the private key for the user key. If the signature is correct, then the first host computer system 14 proceeds to 398 to provide an authorization for the transaction due to the signature being correct. The authorization provided at 398 may be one of the authorizations required at 370.
[0179] What should be noted this time is that the password entered at 376 is never transmitted to the first host computer system 14. Similarly, the private key entered at 390 is never transmitted to the first host computer system 14. The user’s control over the password and private key effectively disallows the transaction from being processed outside of the user’s control.
[0180] After two out of the three authorizations have been received at 370, the first host computer system 14 proceeds at 400 to authorize the transaction with the transaction processor 154.
[0181] FIG. 66 illustrates an address generator 402 that is used to generate addresses such as the bitcoin address that are used for the transaction requested at 360 in FIG. 65. A master key seed 404, shared key seed 406 and user key seed 408 are generated. The master key seed 404 is used to generate a master public key 410 and a master private key 412. The shared key seed 406 is used to generate a shared public key 414 and a shared private key 416. The user key seed 408 is used to generate a user public key 418 and user private key 420.
[0182] Each one of the keys 410 to 420 may be used to generate child keys M/0, M/1 . . . The shared keys at each level may then be combined to generate an address. For example, the M/0 keys of the master public key 410, shared public key 414 and user public key 418 may be used to generate an address (Address 0). The M/0 level may for example be the public keys stored at 310, 332 and 334 in FIG. 64. The address (Address 0) may for example be the bitcoin address for the transaction. Similarly, the M/1 level keys of the master public key 410, shared public key 414 and user public key 418 may be used to generate another address (Address 1). The further addresses may be generated to create further bitcoin addresses of for other purposes.
[0183] FIG. 67 of the accompanying drawings illustrates the first host computer system 14, a partner computer system 422 and a receiver computer system 424. The receiver computer system 424 includes a receiver browser 426. The partner computer system 422 has a website, in the present example a blog with a blog post 428 that has a blog post URL 430. At 432, a user of the receiver computer system 424 uses the receiver browser 426 to create the blog post 428.
[0184] The first host computer system 14 has a wallet in the form of receiver account 434, an embedded code generator and a button ID generator 438. At 440, the user of the receiver computer system 424 creates the receiver account 434. The receiver account 434 has login details 442 and a receiver account identifier (ID) 444. At 446, the user of the receiver computer system 424 logs into the receiver account 434 and enters the blog post URL 430 through the user interface 36 (FIG. 1B). The blog post URL 430 is then stored in association with the particular receiver account 434 with the wallet management module 44 (FIG. 1B). At 448, the first host computer system 14 provides the blog post URL 430 to the embedded code generator and button ID generator 438. The embedded code generator 438 then generates an embedded code 450 and, at 452, transmits the embedded code 450 to the receiver browser 426. The embedded code 450 includes the blog post URL 430, receiver account ID 444 and a startup caller 454.
[0185] The blog post 428 on the partner computer system 422 has a frame for pasting the embedded code 450 due to prior agreement between operators of the first host computer system 14 and the partner computer system 422. At 456, the user of the receiver computer system 424 copies the embedded code 450 received at 452 and pastes the embedded code 450 into the frame of the blog post 428. The embedded code 450 is then embedded and forms part of the HyperText Markup Language (HTML) of the blog post 428.
[0186] A blog post 428 is used herein to describe the invention by way of example. It should however be understood that the invention may have broader application. A URL of a page may for example have a video, song or news article. Such a page will typically have a frame for pasting the embedded code 450. Alternatively, media content such as a video may not have a separate frame for pasting the embedded code. Instead, another manner of activating payment features of the invention may be provided, such as a separate URL link, voice activation, detection of human gestures of a user, etc.
[0187] The button ID generator (see 438) generates a unique button ID. At 458, the button ID generator stores the button ID as button ID 460 within a data store of the first host computer system 14. At 462, the button ID generator 438 stores the button ID 460 in association with the particular receiver account ID 444 and particular blog post URL 430. Multiple receiver accounts may exist within the first host computer system 14. In addition, a receiver account may have multiple blog post URL’s associated therewith. Each pair of a respective receiver account ID and respective blog post URL have a unique button ID.
[0188] FIG. 68 shows the first host computer system 14, the partner computer system 422 and a sender computer system 464. The sender computer system 464 has a sender browser (not shown). At 466, the sender browser downloads the blog post 428 from the partner computer system 422. The startup caller 454 is a script, e.g. JavaScript.RTM., that automatically executes on the sender computer system 464. At 470, the startup caller 454 retrieves all sender cookies 472 on the sender computer system 464. The startup caller 454, at 474, transmits a startup call to the first host computer system 14. The startup call includes the cookies 472, the blog post URL 430 and the receiver account ID 444.
[0189] The first host computer system 14 includes a startup call responder 476 that receives the startup call 474. The startup call responder 476, at 478, uses the blog post URL 430 and receiver account ID 444 received in the startup call 474 to identify the particular button ID 460.
[0190] The button ID 460 in storage may have bits 480 representing all payments made in association with the button ID 460. At 482, the startup call responder 476 retrieves the bits 480 associated with the button ID 460 from the data store.
[0191] At 483, the startup call responder 476 transmits a startup call response to the sender computer system 464. The startup call response transmitted at 483 is in response to the startup call received at 474. The startup call response includes a button 484, the bits 480, a session script 486 and the button ID 460. A display 490 of the sender computer system 464 displays the blog post 428. The embedded code 450 has added the button 484 and the bits 480 to the blog post 428. The button 484 is a two-dimensional button that is selectable by a user of the sender computer system 464. The session script 486 is associated with the button 484 so as to be executable when the user selects the button 484.
[0192] The embedded code 450, at 491, stores the button ID 460 within the sender cookies 472. The button ID 460 stored within the sender cookies 472 can now be used to identify the button ID 460 within the first host computer system 14.
[0193] In FIG. 69, the user has selected the button 484 which, at 492, initiates the session script 486. The session script 486, at 494, retrieves the sender cookies 472 and, at 496, makes a session call to the first host computer system 14. The session call 496 includes the cookies 472.
[0194] The first host computer system 14 includes a session responder 498 that receives the session call 496. At 500, the session responder 498 checks all data for the button ID 460 that has been received in the session call 496. The data associated with the button ID 460 may include a bitcoin address 502, although no bitcoin address may be included within the cookies 472 of the session call 496. At 504, the session responder 498 determines whether a bitcoin address was received in the cookies 472 of the session call 496. If no bitcoin address was received, the first host computer system 14 executes a bitcoin address generator 506. The bitcoin address generator 506 then generates a bitcoin address and, at 508, stores the bitcoin address in association with the button ID 460. The newly saved bitcoin address is represented as bitcoin address 510. At 512, the session responder 498 transmits the bitcoin address 510 that has been generated by the bitcoin address generator 506 to the sender computer system 464. At 514, the session script 486 stores the bitcoin address 510 in association with the button ID 460 within the sender cookies 472. Upon a browser refresh, the process started at 466 in FIG. 68 is restarted and all cookies are stored from earlier browser sessions are collected and transmitted by the startup caller 454.
[0195] At 516, the session responder 498 determines whether the sender computer system 464 is signed into a sender account. The determination is made based on whether a signed-in cookie is found among the cookies transmitted in the session call 496. If no signed-in cookie is found, then the session responder 498 proceeds to 518. At 518, the session responder 498 sends a sign-in panel 520, a sign-in script 522, a listen code 524, a third party payment script 526, and a pull code 528 to the sender computer system 464. The session script 486 creates an overlay window that includes the sign-in panel 520 with a sign-in button 530 having the sign-in script 522 associated therewith. The user can select the sign-in button 530 which, at 532, initiates the sign-in script 522. The sign-in script 522 creates and opens a further window (not shown) that allows the sender of the sender computer system 464 to enter login details 534 of a sender account 536. At 540, the sign-in script 522 signs the sender computer system 464 into the sender account 536 using the login details 534. The sign-in script 522, at 548, stores a signed-in cookie 549 within the sender cookies 472.The sign-in panel 520 further includes two payment selections, including a third party wallet button 544, and a Quick Response (QR) code 546. The third party payment script 526 is stored in association with the third party wallet button 544. The listen code 524 and pull code 528 are stored in an executable manner within the sender computer system 464. The session script 486 retrieves the bitcoin address 510 from the sender cookies 472 and displays the bitcoin address 510 within the sign-in panel 520.
[0196] As shown in FIG. 70, if the determination at 516 is made that the sender computer system 464 is signed-in to the sender account 436, or after the sender computer system 464 signs-in at 540 in FIG. 69, the session responder 498 proceeds to 550. At 550, the session responder 498 transmits a signed-in panel 552, the listen code 524, the third party payment script 526, the pull code 528 and a host account payment script 554 to the sender computer system 464. The signed-in panel 552 is the same as the sign-in panel 520 with the exception that it includes a host account button 556 instead of the sign-in button 530. The third party payment script 526 is stored in association with the third party wallet button 544. The host account payment script 554 is stored in association with host account button 556.
[0197] Selection by the user of the host account button 556 initiates at 560 the host account payment script 554. The host account payment script 554 transmits an instruction to the transaction processor 154 of the selection. At 561, the transaction processor 154 makes a payment out of the sender account 536 to the receiver account 434 as hereinbefore described without going through the bitcoin network or the block chain.
[0198] At 564, the transaction processor 154 updates the bits 480 by adding the bits of the present transaction to the bits 480 already stored within the data store. The bits 480 within the data store thus represent an ongoing tally of all payments made in association with the button ID 460. The bitcoin addresses 502 and 510 represent bitcoin addresses that are generated for different sender computer systems 464 using the same button ID 460.
[0199] After the host account payment script 554 transmits the instruction to the transaction processor 15, the host account payment script 554 initiates the pull code 528. The pull code 528, at 574, pulls the new bit count from the bits 480 in the storage of the first host computer system 14. At 566, the pull code 528 updates the bits 480 in the blog post 428 based on the bits that have been pulled by the pull code 528 in FIG. 70.
[0200] As shown in FIG. 71, the user selects the third party wallet button 544 which, at 560, causes execution of the third party payment script 526. The third party payment script 526 then transmits a transaction (of bitcoin to the bitcoin address 510) to a third party transaction processor 562. The third party transaction processor 562 is hosted by a host computer system other than the first host computer system 14. At 564, the third party transaction processor 562 broadcasts the transaction to the bitcoin network 12 and it is picked up by the blockchain.
[0201] The first host computer system 14 further includes a block chain checker 567 and a bit updater 568. The block chain checker 567, at 570, periodically checks the block chain. For purposes of this discussion, the block chain checker 567 checks the block chain to determine whether there are any new transactions for the bitcoin addresses 502 and 510 stored in association with the button ID 460. If the block chain checker 567 finds any further transactions, the block chain checker 567 notifies the bit updater 568. At 572, the bit updater 568 updates the bits 480 that are associated with the respective bitcoin address 502 or 510. The bits 480 are updated by adding bits for any new transactions that have been picked up by the block chain checker 567.
[0202] At 574, the bit updater 568 transmits a push update notification to the sender computer system 464. The listen code 524 receives the push update notification. Websocket technology may for example be used for the push update notification in order to open an interactive communication link. The listen code 524 is continuously active and therefore continuously listens for push update notifications. When the listen code 524 receives the push update notification, the listen code 524 initiates the pull code 528. The pull code 528, at 574, pulls the new bit count from the bits 480 in storage. At 566, the pull code 528 updates the bits 480 in the blog post 428 based on the bits that have been pulled by the pull code 528 in FIG. 70.
[0203] The QR code 546 may be scanned by an app on a mobile phone. The bitcoin address 510 is encoded in the QR code 546. The app can decode the QR code 546 to extract the bitcoin address 510 and transmit a transaction (of bitcoin to the bitcoin address 510) to a third party transaction processor such as the third party transaction processor 562.
[0204] The button 484 shown in FIG. 69 can be used as a Tip button. A user of the sender computer system 464 can use the button 484 to make a small discrete payment to the user of the receiver computer system 424. Such a payment may, for example, be as a reward for the content of the blog post 428.
[0205] FIG. 72 shows a system 600 for transacting bitcoin. An Internet interface 602 allows for user computers (user computers A to C) to connect to the system 600 over the Internet. Order gateways 604 are connected to the Internet interface 602 to receive buy and sell offers via the Internet interface 602 from the user computers A to C. A matching engine 606 is connected to the order gateways 604. The matching engine 606 can receive the buy and sell offers from the order gateways 604.
[0206] A feed generator 608 is connected to the Internet interface 602. The matching engine 606 provides an output to a multicast pipeline 610. The feed generator 608 is connected to the multicast pipeline 610. The feed generator 608 receives the buy and sell offers from the multicast pipeline 610 and displays any buy and sell offers via the Internet interface 602 to the user computers A to C. Users can thus view any buy and sell offers already in the system before making their own buy and sell offers.
[0207] The matching engine 606 can match buy and sell offers and broadcast the matches to the multicast pipeline 610. The feed generator 608 displays the matches via the Internet interface 602 to the user computers A to C.
[0208] An exchange database 612 includes records of bitcoin and currency held by users A to C corresponding to the user computers A to C. A clearing module 614 is connected to the multicast pipeline 610 and receives matches from the multicast pipeline 610. An exchange 616 is connected to the clearing module 614. The exchange 616 is also connected to the Internet interface 602. Users at the user computers A to C can provide instructions via the Internet interface 602 to the exchange 616 to transfer bitcoin or currency. The exchange 616 has a number of functions, including calculating total amounts of bitcoin and currency as represented in the exchange database 612, cross checking bitcoin and currency totals between the exchange database 612 and an exchange user 618, transferring bitcoin and currency between wallets A to C that correspond respectively to the users A to C in the exchange database 612, updating bitcoin and currency amounts of the users A to C in the exchange database 612, and may receive and execute instructions from the clearing module 614 to transfer bitcoin and currency between the users A to C in the exchange database 612.
[0209] The exchange is connected to a ledger 620. The ledger 620 hold records of wallets A to C and further functions to cross-check balances between the exchange database 612 and exchange user 618.
[0210] FIG. 73a shows the beginning of a transfer-in algorithm that is executed by the system 600. A user at user computer A has $10 of currency in the exchange database 612. For purposes of discussion, no other users have any bitcoin or currency. The exchange 616 calculates the total amount of currency and bitcoin within the exchange database 612 and records the total amount as $10 and 0 bitcoin. The exchange user 618 has $10, representing a previous transfer from wallet A to the exchange user 618.
[0211] At 1a, a user at user computer B requests a transfer via the Internet interface 602. The transfer may for example be to transfer $20 from wallet B to the exchange user 618. At 1b, the Internet interface 602 provides the transfer request to the exchange 616. At 2a, the exchange 616 sends a cross-check request to the ledger 620 and at 2b the ledger 620 cross checks the totals in the exchange database 612 and the exchange user 618 before proceeding with a transfer. In the present example, the exchange database 612 has $10 and 0 bitcoin and the exchange user 618 has $10 and 0 bitcoin. The totals therefore match. If either the currency or bitcoin totals do not match, the exchange 616 does not make any further transfers and provides an alert to an operator. The operator will then remedy any mismatches and then reactivate the exchange 616. Because the totals match, the exchange 616 proceeds with the transfer.
[0212] As shown in FIG. 73b, the exchange 616, at 3, transfers $20 from wallet B to the exchange user 618. The exchange user 618 calculates the total amount held by the exchange user 618 as $30, representing the $10 that was there before the transfer plus another $20 because of the transfer.
[0213] At 4a, the exchange 616 records $20 for user B in the exchange database 612. At 4b, the exchange 616 updates the totals and records a total amount of $30, representing the $10 held by user A and the $20 that has been added for user B.
[0214] FIG. 73c illustrates the totals in the exchange database 612 and the exchange user 618 after a further transfer wherein a user at the user computer C has requested a transfer of 5 bitcoin from wallet C to the exchange user 618. The exchange user 618 now holds 5 bitcoin and $30. User C, within the exchange database 612, now holds 5 bitcoin. The totals held with the exchange database 612 are $30 and 5 bitcoin. For purposes of discussion, this ends the transfer-in algorithm that was started in FIG. 73a.
[0215] FIG. 73d shows a trading algorithm that is carried out after the transfer-in algorithm if FIGS. 73a to 73c. At 5a, a user (buyer) at user computer A submits a buy offer of 2 bitcoin at $5 each ($10 total). As noted previously, all offers are transmitted via the Internet interface 602, one of the order gateways 604, the matching engine 606 and the multicast pipeline 610 to the feed generator 608 which displays the offers on the Internet interface 602. A user at user computer C can thus see the buy offer submitted by the user at user computer A. At 5b, the user (seller) at user computer C submits a sell offer for 2 bitcoin at $5 each to the Internet interface 602. At 5c, the buy and sell offers are submitted by the Internet interface 602 to one of the order gateways 604. At 5d, the order gateway 604 provides the buy and sell offers sequentially to the matching engine 606.
[0216] As mentioned, the user at user computer C can see the buy offer of the user at user computer A before submitting the sell offer. In another example, the user at user computer C can first submit the sell offer and the sell offer can be seen by the user at user computer A. The buy and sell offers will typically be received by the matching engine 606 at different times.
[0217] Multiple users may submit one or more buy and sell offers. The matching engine 606 attempts to match the buy and sell offers to one another. At 6, the matching engine 606 has matched the buy and sell offers received from users at the user computers A and C.
[0218] The matching engine 606 then provides a broadcast of the match over the multicast pipeline 610 discussed with reference to FIG. 72. At 7a, the feed generator 608 receives a multicast that includes the match. At 7b, the clearing module 614 receives the same multicast that includes the match. At 8, the feed generator 608 provides a feed to the Internet interface 602 that includes the match. As previously mentioned, the feed generator 608 also provides a feed of buy and sell offers to the Internet interface 602.
[0219] At 9a, the clearing module 614 updates user A within the exchange database 612 by adding 2 bitcoin and subtracting $10 from user A. At 9b, the clearing module 614 updates user C by subtracting 2 bitcoin from and adding $10 to user C. The clearing module 614 makes the updates directly to the exchange database 612.
[0220] There is no need for recalculating the totals within the exchange database 612 at this stage. The same amount of currency or bitcoin that has been subtracted from one user has been added to another user. The exchange database 612 thus still indicates totals of $30 and 5 bitcoin.
[0221] FIG. 73e shows a withdrawal algorithm that can be carried out after the trading algorithm in FIG. 73d. At 10a, a user at user computer C requests a withdrawal of, for example, $10. The request is received via the Internet interface 602 and is passed on to the exchange 616 at 10b.
[0222] At 11a, the exchange 616 sends a cross-check request to the ledger 620 and at 11b the ledger 620 cross checks the totals before proceeding. In the present example, the amount of bitcoin in the exchange user 618 and the total amount of bitcoin represented in the exchange database 612 are the same and the total currency amount in the exchange user 618 and in the exchange database 612 are the same. Should either of these two comparisons result in a mismatch, the exchange 616 will not make any withdrawal and create an alarm for an operator.
[0223] As shown in FIG. 73f, at 12, the exchange 616 transfers $10 from the exchange user 618 to the wallet C. The exchange user 618 now has $20, representing the $30 in FIG. 73e minus the $10 that has been transferred out. At 13a, the exchange 616 adds a representation for user C in the exchange database 612 showing a withdrawal of $10. At 13b, the exchange 616 updates the totals. Because user C has made a withdrawal of $10, the total currency amount within the exchange database 612 amounts to $20. The amount of bitcoin is still the same. The total amounts in the exchange user 618 and in the exchange database 612 are thus the same.
[0224] Other users may submit similar withdrawal requests. For example, a user at user computer A may request a withdrawal of 1 bitcoin. The exchange 616 then cross checks the total amounts, makes a transfer of 1 bitcoin from the exchange user 618 to wallet A and updates the exchange database 612 by deducting 1 bitcoin from user A and updates the total amount of bitcoin to 4 bitcoin.
[0225] FIG. 74 shows a diagrammatic representation of a machine in the exemplary form of a computer system 900 within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a network deployment, the machine may operate in the capacity of a server or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
[0226] The exemplary computer system 900 includes a processor 930 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), or both), a main memory 932 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), and a static memory 934 (e.g., flash memory, static random access memory (SRAM, etc.), which communicate with each other via a bus 936.
[0227] The computer system 900 may further include a video display 938 (e.g., a liquid crystal displays (LCD) or a cathode ray tube (CRT)). The computer system 900 also includes an alpha-numeric input device 940 (e.g., a keyboard), a cursor control device 942 (e.g., a mouse), a disk drive unit 944, a signal generation device 946 (e.g., a speaker), and a network interface device 948.
[0228] The disk drive unit 944 includes a machine-readable medium 950 on which is stored one or more sets of instructions 952 (e.g., software) embodying any one or more of the methodologies or functions described herein. The software may also reside, completely or at least partially, within the main memory 932 and/or within the processor 930 during execution thereof by the computer system 900, the memory 932 and the processor 930 also constituting machine readable media. The software may further be transmitted or received over a network 954 via the network interface device 948.
[0229] While certain exemplary embodiments have been described and shown in the accompanying drawings, it is to be understood that such embodiments are merely illustrative and not restrictive of the current invention, and that this invention is not restricted to the specific constructions and arrangements shown and described since modifications may occur to those ordinarily skilled in the art.

Claims

1-63. (canceled)
64. A method of effecting payment comprising: receiving, by a host computer system, a request for payment from a merchant computer system, including an amount in a currency; determining, by the host computer system, a first exchange rate, wherein the first exchange rate fluctuates and the first exchange rate is determined at a first moment in time; converting, by the host computer system, the amount in the currency to an amount in bitcoin using the first exchange rate at the first moment in time; receiving, by the host computer system, a send instruction from the customer computer system, wherein the send instruction is at a second moment in time later than the first moment in time and the exchange rate at the second moment in time is a second exchange rate that is different than the first exchange rate at the first moment in time; receiving, by the host computer system, payment in bitcoin from the customer in an amount that is based on the amount in bitcoin; and transmitting, by the host computer system, in response to receiving the send instruction from the customer computer system, a payment instruction to pay currency to the merchant, wherein the currency paid to the merchant is for an amount that is at least in part based on the amount in the currency that is converted to bitcoin at the first moment in time even though the exchange rate is different at the second moment in time.
65. The method of claim 64, further comprising: receiving, by the host computer system, an application programmable interface (API) call from the merchant computer system; generating, by the host computer system, a reference code in response to the API call, the reference code being uniquely generated for each API call; and transmitting, with the host computer system, a response message to the merchant computer system in response to the API call, the response message including the reference code.
66. The method of claim 65, further comprising: receiving, by the host computer system, the reference code from the merchant computer system; and displaying, by the host computer system, in response to receiving the reference code from the merchant computer system, and option to a customer at a customer computer system to transmit the send instruction, wherein selection of the option by the user causes transmission of the send instruction and reception of the send instruction by the host computer system.
67. The method of claim 66, further comprising: displaying the amount in bitcoin to the customer at the customer computer system together with the option to transmit the send instruction.
68. The method of claim 65, further comprising: transmitting, with the host computer system, in response to receiving the send instruction, an order status message to the merchant computer system, the order status message including the reference number.
69. The method of claim 64, further comprising: entering, by the host computer system, in response to receiving the bitcoin from the customer, the bitcoin in a merchant wallet.
70. The method of claim 69, further comprising: establishing, by the host computer system, a bitcoin address in the merchant wallet in response to receipt of the request for payment, the bitcoin being sent to the bitcoin address.
71. The method of claim 69, further comprising: purchasing, by the host computer system, the bitcoin from the merchant wallet, the purchase resulting in transfer of the bitcoin from the merchant wallet to a host wallet.
72. The method of claim 64, further comprising: receiving, by the host computer system, the bitcoin from the customer, the bitcoin received from the customer being transferred to a host wallet.
73. A host computer system for effecting payment comprising: a processor; a computer readable medium connected to the processor; a set of instructions on the computer readable medium that are executable by the processor, including: an application programmable interface (API) receiving a request for payment from a merchant computer system, including an amount in a currency; a currency converter determining a first exchange rate, wherein the first exchange rate fluctuates and the first exchange rate is determined at a first moment in time, and converting, by the host computer system, the amount in the currency to an amount in bitcoin using the first exchange rate at the first moment in time; transaction processor receiving a send instruction from the customer computer system, wherein the send instruction is at a second moment in time later than the first moment in time and the exchange rate at the second moment in time is a second exchange rate that is different than the first exchange rate at the first moment in time, and receiving a payment in bitcoin from the customer in an amount that is based on the amount in bitcoin; and a bank transfer module transmitting in response to receiving the send instruction from the customer computer system, a payment instruction to pay currency to the merchant, wherein the currency paid to the merchant is for an amount that is at least in part based on the amount in the currency that is converted to bitcoin at the first moment in time even though the exchange rate is different at the second moment in time.
74. The host computer system of claim 73, wherein the API receives an API call from the merchant computer system, the set of instruction further comprising: a reference code generator generating a reference code in response to the API call, the reference code being uniquely generated for each API call, and the API transmitting a response message to the merchant computer system in response to the API call, the response message including the reference code.
75. The host computer system of claim 74, wherein the set of instructions further comprises a display module receiving the reference code from the merchant computer system and displaying, in response to receiving the reference code from the merchant computer system, and option to a customer at a customer computer system to transmit the send instruction, wherein selection of the option by the user causes transmission of the send instruction and reception of the send instruction by the host computer system.
76. The host computer system of claim 75, wherein the display module displays the amount in bitcoin to the customer at the customer computer system together with the option to transmit the send instruction.
77. The host computer system of claim 74, wherein the API transmits, in response to receiving the send instruction, an order status message to the merchant computer system, the order status message including the reference number.
78. The host computer system of claim 73, further comprising: a merchant wallet, wherein the transaction processor enters, in response to receiving the bitcoin from the customer, the bitcoin in a merchant wallet. (Original) The host computer system of claim 78, wherein the transaction processor establishes a bitcoin address in the merchant wallet in response to receipt of the request for payment, the bitcoin being sent to the bitcoin address.
80. The host computer system of claim 78, further comprising: a host wallet, wherein the transaction processor purchases the bitcoin from the merchant wallet, the purchase resulting in transfer of the bitcoin from the merchant wallet to the host wallet.
81. The host computer system of claim 73, further comprising: a host wallet, wherein the transaction processor receives the bitcoin from the customer, the bitcoin received from the customer being transferred to the host wallet.
82. A non-transitory computer-readable medium having stored thereon a set of instructions that are executable by a processor to carry out a method of transacting bitcoin comprising: receiving, by a host computer system, a request for payment from a merchant computer system, including an amount in a currency; determining, by the host computer system, a first exchange rate, wherein the first exchange rate fluctuates and the first exchange rate is determined at a first moment in time; converting, by the host computer system, the amount in the currency to an amount in bitcoin using the first exchange rate at the first moment in time; receiving, by the host computer system, a send instruction from the customer computer system, wherein the send instruction is at a second moment in time later than the first moment in time and the exchange rate at the second moment in time is a second exchange rate that is different than the first exchange rate at the first moment in time; receiving, by the host computer system, payment in bitcoin from the customer in an amount that is based on the amount in bitcoin; and transmitting, by the host computer system, in response to receiving the send instruction from the customer computer system, a payment instruction to pay currency to the merchant, wherein the currency paid to the merchant is for an amount that is at least in part based on the amount in the currency that is converted to bitcoin at the first moment in time even though the exchange rate is different at the second moment in time.
83-141. (canceled)