The disclosed teachings relate generally to leveraging a blockchain network to facilitate the global remittance of funds. Participants in the blockchain include finance institutions, currency exchange service providers and an innovative mobile money gateway for mobile money transfers.
Remittance solutions are a vital component of the financial infrastructure in developing countries. Many people in these countries depend upon family members and friends in the west to send money home to make ends meet. There are several issues with current global remittance solutions, including high fees, slow transaction times, security, and accessibility. While partnerships between providers, such as Viber, Western Union, WeChat, enable mobile apps to play a larger role in this space, they do not address the issues of high costs, security and some forms of accessibility. For example, current providers offer a mobile app that is associated with a bank account; however, most of the population of sub-Saharan Africa (SSA) is unbanked. In fact, more citizens in SSA own mobile devices than bank accounts. The number of unique subscribers is expected to reach approximately 500 million by the year 2020. Mobility is driving innovation and digital and financial inclusion in SSA. For example, m-Pesa is a popular mobile money solution in Kenya.
Current systems do not address the issues associated with an end-to-end global remittance solution.
These and other drawbacks exist.
Accordingly, one aspect of the invention is to address one or more of the drawbacks set forth above. According to an embodiment of the present invention, a system for implementing a blockchain-based mobile money gateway for facilitating secure blockchain-based funds transfer comprises: a blockchain mobile money gateway that receives, from a mobile device, a transfer request from a requester to transfer funds to a recipient and responsive to the transfer request, executing a first smart contract to verify the requester's financial information and confirm the requester's funds availability at a finance processing server; and a blockchain network that facilitates communication with the blockchain mobile money gateway and the finance processing server and a currency exchange server; wherein upon verification of the requester's financial information and confirmation of funds availability, invoking execution of a second smart contract to initiate a transfer of funds at the currency exchange server; and wherein upon an exchange of funds in a target currency, invoking execution of a third smart contract on the blockchain mobile money gateway to receive the funds via the blockchain network.
According to another embodiment of the present invention, a computer implemented method implements a blockchain-based mobile money gateway for facilitating secure blockchain-based funds transfer. The method comprises the steps of: receiving, from a mobile device, a transfer request from a requester to transfer funds to a recipient and responsive to the transfer request; executing, via a blockchain mobile money gateway, a first smart contract to verify the requester's financial information and confirm the requester's funds availability at a finance processing server, wherein a blockchain network that facilitates communication with the blockchain mobile money gateway and the finance processing server and a currency exchange server; upon verification of the requester's financial information and confirmation of funds availability, invoking execution of a second smart contract to initiate a transfer of funds at the currency exchange server; and upon an exchange of funds in a target currency, invoking execution of a third smart contract on the blockchain mobile money gateway to receive the funds via the blockchain network.
According to another embodiment of the present invention, a computer-readable medium comprising instructions which, when executed by a computer, cause the computer to carry out steps of: receiving, from a mobile device, a transfer request from a requester to transfer funds to a recipient and responsive to the transfer request; executing, via a blockchain mobile money gateway, a first smart contract to verify the requester's financial information and confirm the requester's funds availability at a finance processing server, wherein a blockchain network that facilitates communication with the blockchain mobile money gateway and the finance processing server and a currency exchange server; upon verification of the requester's financial information and confirmation of funds availability, invoking execution of a second smart contract to initiate a transfer of funds at the currency exchange server; and upon an exchange of funds in a target currency, invoking execution of a third smart contract on the blockchain mobile money gateway to receive the funds via the blockchain network.
The computer implemented system, method and medium described herein provide unique advantages to entities, organizations, merchants and other users (e.g., consumers, etc.), according to various embodiments of the invention. According to an embodiment of the present invention, Blockchain technology may be leveraged to reduce the global remittance transaction fees. Distributed ledger technology (DLT) can reform and transform the delivery of public and private services in many fields of endeavor, including finance. It is a technology-focused method for storing, recording and transferring digital assets. It is also the foundation technology for cryptocurrency, and has the advantages of security and efficiency. The innovative mobile money gateway provides reduction in fees, increased security and further offer the accessibility convenience provided by mobile money. These and other advantages will be described more fully in the following detailed description.
In order to facilitate a fuller understanding of the present inventions, reference is now made to the appended drawings. These drawings should not be construed as limiting the present inventions, but are intended to be exemplary only.
The following description is intended to convey an understanding of the present invention by providing specific embodiments and details. It is understood, however, that the present invention is not limited to these specific embodiments and details, which are exemplary only. It is further understood that one possessing ordinary skill in the art, in light of known systems and methods, would appreciate the use of the invention for its intended purposes and benefits in any number of alternative embodiments, depending upon specific design and other needs.
According to an embodiment of the present invention, Blockchain refers to a ledger of facts, replicated across several computers assembled in a peer-to-peer network. Facts can be anything from a monetary transaction to content signature. Members of the network may or may not be anonymous entities called nodes. Communication inside the network takes advantage of cryptography to securely identify the sender and receiver. When a node wants to add a fact to the ledger, a consensus forms in the network to determine where this fact should appear in the ledger; this consensus is called a block.
According to an embodiment of the present invention, Smart Contract enables the exchange of money, property, shares, or anything of value in a transparent, conflict-free way while avoiding the services of a middleman. It may be executed as part of processing a transaction in a blockchain network. A smart contract may also be denoted chaincode.
Consumer Account generally refers to an account owned by a consumer and used by a money service business (MSB) for money processing. It may or may not be a financial account.
Finance Transaction Account generally refers to a financial account owned by a consumer from which funds may be used to transmit to a currency exchange for global remittance.
Currency Exchange (FX) Account generally refers to a financial account that temporarily holds funds transferred into, and out of, a currency exchanged. It may be used to temporarily hold funds processed by the FX.
Remittance Account generally refers to a financial holding account that is part of the blockchain mobile money gateway. It may be used to temporarily hold funds processed by and transferred from the currency exchange before pushing to the mobile money account of a recipient, and vice versa.
Money Services Business (MSB) may represent an entity doing business in one or more of the following capacities: 1) currency dealer or exchanger; 2) check casher; 3) issuer of traveler's checks, money orders or stored value; 4) seller or redeemer of traveler's checks, money orders or stored value; 5) money transmitter; or 6) a postal service. It is not a bank or other entity registered with, and regulated and examined by a country's financial regulators.
Mobile Network Operator (MNO) may represent a wireless service provider, wireless carrier or other provider that provides wireless services to customers. The provider may also own or control infrastructure needed to sell and provide such services.
According to an embodiment of the present invention, the system 100 may represent a network data processing system with a network of computers in which the illustrative embodiments may be implemented. The system 100 includes a consumer 102 with a smart phone 104. The consumer represents a person, a software program, a virtual program or any other entity that has possession of, can emulate, or other otherwise issue commands to execute an electronic program on the smart phone 104. This may include a remittance app executing on the smart phone 104. The system 100 may include a blockchain mobile money gateway 106 which accepts and processes commands from the mobile app executing on the smart phone 104. The blockchain mobile money gateway 106 typically includes one or more processors and may include a mainframe computer, a workstation, a desktop computer, a computer system in a computer rack, and the like.
A server-side remittance app executing on the blockchain mobile money gateway 106 may invoke the execution of a smart contract in response to a request to transfer funds to a recipient in another country. The smart contract execution leverages the blockchain network 110 to invoke a smart contract executing on the finance processing server 108 to verify the requester's finance information and confirm it has funds for the transfer. Once the finance processing server 108 verifies the request and confirms availability of funds, it may invoke the execution of a smart contract on the currency exchange server 112 via the blockchain network 110. This enables the currency exchange server 112 to initiate, via the blockchain network 110, the transfer of consumer 102 (sender) funds from the finance processing server 108 to the currency exchange server 112. When the funds are received by the currency exchange server 112, it may exchange the sender funds for the receiver funds in the targeted currency and further invoke a smart contract executing on the blockchain mobile money gateway 106 to transfer the receiver funds from the currency exchange server 112 to the blockchain mobile money gateway 106 via the blockchain network 110. The blockchain mobile money gateway 106 may receive the funds via the blockchain network 110 and then initiate a transfer to push the receiver funds to the mobile money account of the recipient.
According to another embodiment of the present invention, the blockchain mobile money gateway 106 may request the consumer 102 account verification and availability of funds outside of the blockchain network 110. Once the handshaking for consumer 102 verification and funds availability between the finance processing server 108 and the blockchain mobile money gateway 106 completes, then the blockchain mobile money gateway 106 may invoke a smart contract to execute, via the blockchain network 110 the transfer of funds from the finance processing server 108 to the currency exchange server 112. Other variations and embodiments will be apparent to persons having skill in the relevant art.
The receiving device 210 communicates the request to the execution module 212 via the communication module 204. The execution module 212 may include one or more computational engines, which may be one or more processors of a general-purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, implement the features specified in the flowchart and/or block diagram block or blocks or descriptions herein.
The communication module 204 may be configured to transmit data between modules, engines, databases, memories, and other components of the blockchain mobile money gateway 106 for use in performing the features discussed herein. The communication module 204 may include one or more communication types and utilize various communication methods for communications within a computing device. For example, the communication module may be include a bus, contact pin connectors, wires, etc. In some embodiments, the communication module 204 may also be configured to communicate between internal components of the blockchain mobile money gateway 106 and external components of the blockchain mobile money gateway 106, such as externally connected databases, display devices, input devices, etc.
The blockchain mobile money gateway 106 may include an account database 206. The account database 206 may be configured to store a plurality of consumer 102 account profiles 208 using a suitable data storage format and schema. The account database 206 may be a relational database that utilizes structured query language for the storage, identification, modifying, updating, accessing, etc. of structured data sets stored therein. Each consumer 102 account profile 208 may be a structured data set configured to store data related to a transaction account. Each consumer 102 account profile 208 may include at least a primary account number, an account balance, a postal mailing address, an email address, an international mobile telephone number, an account balance, sender country, sender currency, receiver currency, receiver currency, timestamp, date or any additional information that may be used for know-your-customer (KYC) and anti-money laundering (AML) regulations. In some instances, the consumer 102 account profile 208 may also include additional identification information, such as an identification value to be used in allocation requests and other data exchanges. The consumer account profiles 208 may also include additional information suitable for consumer service programs, consumer and vendor optimizations, and regulations, such as product data, offer data, loyalty data, reward data, usage data, currency-exchange data, mobile money data, fraud scoring, validity of funds, and transaction/account controls. The consumer account profile 208 may also include additional information suitable for performing the functions discussed herein, such as communication details for transmitting smart contract requests and transactions to the consumer 102, the finance processing server 108 or the currency exchange server 112 through the blockchain network 110.
Depending upon the request, the execution module 212 may then query the account database 206 to determine the existence of a consumer 102 account profile 208, which is stored in the memory 218 of the blockchain mobile money gateway 106. The memory 218 may be configured to store data for use by the blockchain mobile money gateway 106 in performing the functions discussed herein. The memory 218 may be configured to store data using suitable data formatting methods and schema and may be any suitable type of memory, such as read-only memory, random access memory, etc. The memory 218 may include, for example, currency and geographic location associations, international telephone number and mobile network operator (MNO) associations, encryption keys and algorithms, communication protocols and standards, data formatting standards and protocols, program code for execution modules and application programs of the processing device, and other data that may be suitable for use by the blockchain mobile money gateway 106 in performance of the functions disclosed herein as will be apparent to persons having skill in the relevant art.
If a consumer account profile 208 does not exist, then the execution module 212 may proceed to create the consumer account profile 208. Those who are skilled in the art will understand the various embodiments needed for consumer account profile 208 creation. Once the execution module 212 verifies a valid consumer account profile 208, it may proceed to invoke a smart contract2 represented by 314 to execute on the relevant finance processing server 108 via the blockchain network 110. This may be done by the execution module 212 issuing the smart contract execution request to the communication module 204 and on to the transmitting device 216 and the finance processing server 108 through the blockchain network 110.
The transmitting device 216 may be configured to transmit data over one or more networks via one or more network protocols. In some embodiments, the transmitting device 216 may be configured to transmit data to consumers 102, computing devices, finance processing servers 108, blockchain networks 110, and other entities via alternative networks such as the Internet. In some embodiments, the transmitting device 216 may include multiple devices, such as different transmitting devices for transmitting data over different networks. The transmitting device 216 may electronically transmit data signals that have data superimposed that may be parsed by a receiving computing device. In some instances, the transmitting device 218 may include one or more modules for superimposing, encoding, and otherwise formatting data into data signals suitable for transmission.
The transmitting device may be configured to electronically transmit data signals to blockchain networks 110 or computing nodes associated herewith, which may be superimposed with blockchain transactions as records of mobile money currency exchange for posting to a corresponding blockchain. In some embodiments, the transmitting device 216 may be further configured to electronically transmit data signals to computing devices associated with a consumer 102.
The execution module 212 may also include a smart contract1 represented by 214. The smart contract may represent a computer program product, as previously described, that is executed by participants (nodes) in the blockchain. The smart contract1 represented by 214 may be invoked when the currency exchange server 112 completes a currency exchange. The receiving device 210 may receive the request via the blockchain network 110 and communicate it to the execution module 212 via the communication module 204. The smart contract1 represented by 214 may complete by depositing the receiver funds into the MSB account 224. The MSB account 224 information may be stored in account database 206. The account database 206 may be configured to store a plurality of MSB account 224 profiles using a suitable data storage format and schema. The account database 206 may be a relational database that utilizes structured query language for the storage, identification, modifying, updating, accessing, etc. of structured data sets stored therein. Each MSB account 224 profile may be a structured data set configured to store data related to a transaction account. Each MSB account 224 profile may include at least the recipient's name, international mobile telephone number, amount of funds to be received, MNO, receiver currency, receiver country, sender's name and contact information, timestamp, date, and any additional information that may be required for know-your-customer (KYC) and anti-money laundering (AML) regulations. In some instances, the MSB account 224 profile may also include additional identification information, such as an identification value to be used in allocation requests and other data exchanges. The MSB account 224 profile may also include additional information suitable for consumer 102 and receiver service programs, consumer 102, receiver and vendor optimizations, and regulations, such as product data, offer data, loyalty data, reward data, usage data, currency-exchange data, mobile money data, fraud scoring, validity of funds, and transaction/account controls. The MSB account 224 profile may also include additional information suitable for performing the functions discussed herein, such as communication details for transmitting smart contract requests and transactions to the recipient, the finance processing server 108 or the currency exchange server 112 through the blockchain network 110.
Once the smart contract1214 completes, the execution module 212 may execute the MNO mobile money 220 program to push the funds to the intended receiver's mobile money account.
The MNO mobile money program 220 may represent a server-based computer program, as discussed above. The MNO mobile money program 220 may access the MNO profiles 222 via the communication module 204. The account database 206 may be configured to store a plurality of MNO profiles 222 using a suitable data storage format and schema. The account database 206 may be a relational database that utilizes structured query language for the storage, identification, modifying, updating, accessing, etc. of structured data sets stored therein. Each MNO profile 222 may be a structured data set configured to store data related to a MNO. Each MNO profile 222 may include at least the name of the MNO operator, country or countries of operation, MNO-specific information for pushing and pulling data from mobile money accounts, MNO customer account information and regulations, MNO fees, MNO API information, required KYC and AML information for regulations, and other relevant information. The MNO profile 222 may also include additional information suitable for performing the functions discussed herein, such as communication details for pushing and pulling receiver funds, communicating with the currency exchange server 112 or the blockchain network 110.
The invocation request may be received by the finance processing server 108 through the receiving device 310. This receiving device 310 may include components, and functions, such as receiving device 210. The device may communicate the request to the execution module 312 via the communication module 304. Execution module 312 may include components, and functions, such as execution module 212. The communication module 304 may be configured to transmit data between modules, engines, databases, memories, and other components of the finance processing server 108 for use in performing the functions discussions herein. The communication module 304 may include one or more communication types and utilize various communication methods for communications within a computing device. For example, the communication module may include a bus, contact pin connectors, wires, etc. According to an embodiment of the present invention, the communication module 304 may also be configured to communicate between internal components of the finance processing server 108 and external components of the finance processing server 108, such as externally connected databases, display devices, input devices, etc.
The finance processing server 108 may include an account database 306. The account database 306 may be configured to store a plurality of finance transaction account profiles 308 using a suitable data storage format and schema. For example, the account database 306 may be a relational database that utilizes structured query language for the storage, identification, modifying, updating, accessing, etc. of structured data sets stored therein. Each finance transaction account profile 308 may be a structured data set configured to store data related to a transaction account. Each finance transaction account profile 308 may include at least a primary account number, an account balance, a postal mailing address, an email address, an international mobile telephone number, an account balance, country, currency, timestamp, date or any additional information that may be required for know-your-customer (KYC) and anti-money laundering (AML) regulations. In some instances, the finance transaction account profile 308 may also include additional identification information, such as an identification value to be used in allocation requests and other data exchanges. The finance transaction account profile 308 may also include additional information suitable for consumer 102 service programs, consumer 102 and vendor optimizations, and regulations, such as product data, offer data, loyalty data, reward data, usage data, currency-exchange data, mobile money data, fraud scoring, validity of funds, and transaction/account controls. The finance transaction account profile 308 may also include additional information suitable for performing the functions discussed herein, such as communication details for transmitting smart contract requests and transactions to the consumer 102, the blockchain mobile money gateway 106 or the currency exchange server 112 through the blockchain network 110.
Depending upon the request, the execution module 312 may then query the account database 306 to determine the existence of a finance transaction account profile 308 for the consumer 102. The account database 306 may contain a plurality of finance transaction account profiles 308. The finance transaction account profile 308 may be stored in the memory 318 of the finance processing server 108. The memory 318 may include components, and functions, like memory 218, as discussed above. Once the execution module 312 verifies a valid finance transaction account profile 308 for the consumer 102, and the amount of funds requested are available for transfer, then it may trigger a request through the communication module 304 and on to the transmitting device 316 to the currency exchange server 112 through the blockchain network 110. The transmitting device 316 may include components, and functions, like transmitting device 216, as discussed above.
The currency exchange server 112 may include an account database 406. The account database 406 may be configured to store a plurality of currency exchange (FX) account profiles 408 using a suitable data storage format and schema. The account database 406 may be a relational database that utilizes structured query language for the storage, identification, modifying, updating, accessing, etc. of structured data sets stored therein. Each FX account profile 408 may be a structured data set configured to store data related to a transaction account. Each FX account profile 408 may include at least a primary account number, an account balance, a postal mailing address, an email address, an international mobile telephone number, an account balance, sender country, sender currency, receiver currency, receiver currency, timestamp, date or any additional information that may be required for know-your-customer (KYC) and anti-money laundering (AML) regulations. In some instances, the FX account profile 408 may also include additional identification information, such as an identification value to be used in allocation requests and other data exchanges. The FX account profile 408 may also include additional information suitable for consumer 102 service programs, consumer 102 and vendor optimizations, and regulations, such as product data, offer data, loyalty data, reward data, usage data, currency-exchange data, mobile money data, fraud scoring, validity of funds, and transaction/account controls. The FX account profile 208 may also include additional information suitable for performing the functions discussed herein, such as communication details for transmitting smart contract requests and transactions to the consumer 102, the finance processing server 108 or the blockchain mobile money gateway 106 through the blockchain network 110.
Depending upon the request, the execution module 412 may then query the account database 406 to determine the existence of an FX account profile 408 for the consumer 102. The account database 406 may contain a plurality of FX account profiles 408. The FX account profile 408 may be stored in the memory 418 of the currency exchange server 112. The memory 418 may include components, and functions, like memory 218, as described above. The execution module 412 may invoke the smart contract3 represented by 414 to exchange the currency. Upon completion, it may trigger a request through the communication module 404 and the transmitting device 416 to the blockchain mobile money gateway 106 through the blockchain network 110. The transmitting device 416 may include components, and functions, like transmitting device 216, as discussed above.
According to an embodiment of the present invention, a smart contract may execute on all nodes in the blockchain. There are specific code components in the smart contract to determine which of the nodes executing the smart contract are to handle the funds (e.g., exchange currency, transfer exchanged currency to blockchain mobile money gateway, etc.). The specifics of this determination are described in further detail in U.S. Provisional Application 62/670,563, filed May 11, 2018, the contents of which are incorporated by reference herein in its entirety.
An embodiment of the present invention is directed to a Blockchain Remittance Transaction Processing System and Process. The blockchain remittance transaction processing system and process are illustrated in
As shown in
Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a feature, structure, or characteristic described about the embodiment is included in at least one embodiment. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment, but mean “one or more but not all embodiments” unless expressly specified otherwise. The terms “including,” “comprising,” “having,” and variations thereof mean “including but not limited to” unless expressly specified otherwise. An enumerated listing of items does not imply that any or all the items are mutually exclusive and/or mutually inclusive, unless expressly specified otherwise. The terms “a,” “an,” and “the” also refer to “one or more” unless expressly specified otherwise.
Furthermore, the described features, advantages, and characteristics of the embodiments may be combined in any suitable manner. One skilled in the relevant art will recognize that the embodiments may be practiced without one or more of the specific features or advantages of an embodiment. In other instances, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments.
The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, to perform aspects of the present invention.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general-purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
Many of the functional units described in this specification have been labelled as modules, to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.
Modules may also be implemented in software for execution by various types of processors. An identified module of program instructions may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.
Furthermore, the described features, structures, or characteristics of the embodiments may be combined in any suitable manner. In the following description, numerous specific details are provided, such as examples of programming, software modules, user selections, network transactions, database queries, database structures, hardware modules, hardware circuits, hardware chips, etc., to provide a thorough understanding of embodiments. One skilled in the relevant art will recognize, however, that embodiments may be practiced without one or more of the specific details, or with other methods, components, materials, and so forth. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of an embodiment.
This application claims priority to U.S. Provisional Application 62/597,341, filed Dec. 11, 2017, the contents of which are incorporated herein in its entirety.
Number | Date | Country | |
---|---|---|---|
62597341 | Dec 2017 | US |