Managing blockchain transactions
Through browser applications, the API is defined on the mobile computing device to communicate with digital asset holders and blockchain networks, which solves the problems of complexity of blockchain transaction processing and user interactions on mobile devices, and realizes efficient transaction processing and improve user experience.
Patent Information
- Application Number
- CN202380043916.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-05-11
- Filing Date
- 2023-05-12
- Publication Date
- 2025-01-07
AI Technical Summary
The prior art is difficult to effectively process blockchain transactions on mobile computing devices, and users need to frequently switch applications to complete transactions, which increases the number of user interactions and development complexity.
Through browser applications as intermediaries, the API is defined to communicate with digital asset holders and blockchain networks, and the authentication, submission and notification of transactions are realized, and the number of user interactions is reduced and development complexity is reduced.
It realizes the operation of completing blockchain transactions in the browser, reduces the number of user interactions and development complexity, and improves the efficiency and user experience of transactions.
Smart Images

Figure CN119278460A_ABST
Abstract
Description
Related Applications
[0001] This application is a continuation of and claims the benefit of U.S. Application No. 18 / 315,834, filed on May 11, 2023, which claims priority to U.S. Provisional Application No. 63 / 364,586, filed on May 12, 2022, and U.S. Provisional Application No. 63 / 366,177, filed on June 10, 2022, the disclosures of which are incorporated herein in their entirety. Background Art
[0002] A user may enable a third-party extension of a web browser, wherein the third-party extension is used to process blockchain transactions on web content rendered by the web browser. Native applications on the mobile computing device may be used to process blockchain transactions. Summary of the invention
[0003] The present disclosure relates to connecting an application (e.g., a browser application) with a digital asset holder to process blockchain transactions. For example, an application may act as an intermediary between a user's digital asset holder and web content that can create blockchain transactions. The application may define one or more application programming interfaces (APIs) configured to communicate with the user's digital asset holder to authenticate blockchain transactions and communicate with a blockchain network to submit blockchain transactions to the blockchain network. In some examples, the present disclosure relates to using blockchain data to customize a browser application, such as customizing browser settings and / or user interfaces of a browser application (e.g., setting a non-fungible token (NFT) as a profile image, setting an NFT as a background image, adjusting a color scheme or display aspect, shuffling a user's NFT as a background image or in an interface object, etc.).
[0004] In some examples, the present disclosure relates to an application (e.g., a browser application) for managing inter-ledger blockchain transactions. For example, an application may act as an intermediary for transactions involving different payment networks (e.g., inter-ledger payments on a blockchain network). For example, a buyer entity may have a first type of digital asset in its digital asset holder, but a seller entity may require a second type of digital asset. The application may facilitate the conversion of digital assets of the transaction amount from a first type to a second type (e.g., by communicating with a digital asset exchange), and after the conversion, may communicate with the blockchain network to submit transactions involving digital assets of the second type to the blockchain network. In some examples, the present disclosure relates to registering a default digital asset holder with an application (e.g., a browser application). For example, a transaction may be initiated on web content or using an application other than a digital asset holder, wherein in some examples, the application may communicate with the default digital asset holder to authenticate the transaction and submit the transaction to the blockchain network.
[0005] According to one aspect, a method includes: receiving, via an application programming interface of an application, an authenticated transaction request from a digital asset holder who manages a private key for accessing data on the blockchain network to add a transaction to a blockchain network; sending, by the application, the authenticated transaction request to the blockchain network; receiving, by the application, a transaction response from the blockchain network, the transaction response including a transaction identifier of the transaction added to the blockchain network; and sending, via the application programming interface of the application, a notification message to the digital asset holder, the notification message including the transaction identifier.
[0006] According to one aspect, a device includes: at least one processor; and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause one processor to: receive, via an application programming interface of a browser application, an authenticated transaction request to add a transaction to a blockchain network from a digital asset holder who manages a private key for accessing data on the blockchain network; send, by the browser application, the authenticated transaction request to the blockchain network; receive, by the browser application, a transaction response from the blockchain network, the transaction response including a transaction identifier of the transaction added to the blockchain network; and send, via the application programming interface of the browser application, a notification message to the digital asset holder, the notification message including the transaction identifier.
[0007] According to one aspect, a non-transitory computer-readable medium stores executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations including: rendering web content having a user-selectable option to create a transaction on a blockchain network; in response to receiving a selection of the user-selectable option, receiving, by a browser application, an authenticated transaction request to add a transaction to the blockchain network from a digital asset holder that manages a private key to access data on the blockchain network; sending, by the browser application, the authenticated transaction request to the blockchain network; receiving, by the browser application, a transaction response from the blockchain network, the transaction response including a transaction identifier of the transaction added to the blockchain network; and sending, by the browser application, a notification message to the digital asset holder, the notification message including the transaction identifier.
[0008] According to one aspect, a method includes obtaining, by a browser application, an identifier associated with a token stored on a blockchain network; retrieving, by the browser application, digital data for the token using the identifier; and customizing a user interface of the browser application using the digital data for the token.
[0009] According to one aspect, a device includes: at least one processor; and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to: connect a browser application to a digital asset holder that stores a private key for implementing transactions on a blockchain network, the digital asset holder identifying a token stored on the blockchain network; retrieve digital data of the token by the browser application; and customize a user interface of the browser application using the digital data of the token.
[0010] According to one aspect, a non-transitory computer-readable medium stores executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations, wherein the operations include: obtaining, by a browser application, an identifier associated with a token stored on a blockchain network; using, by the browser application, the identifier to retrieve digital data for the token; and customizing a user interface of the browser application using the digital data for the token.
[0011] According to one aspect, a method includes: receiving, by an application executable by a computing device, transaction information for completing a blockchain transaction with a requester, the transaction information specifying a first digital asset type and a transaction amount; providing an interface on the computing device, the interface for receiving a selection of a second digital asset type associated with a digital asset holder; sending, by the application, a conversion request to a digital asset exchange, the conversion request being configured to cause the digital asset exchange to convert a digital asset of a user of the transaction amount among the digital asset holders from the second digital asset type to the first digital asset type; and sending, by the application, a transaction request to a blockchain network to initiate completion of the blockchain transaction.
[0012] According to one aspect, a system includes: at least one processor; and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause one processor to: receive transaction information for completing a blockchain transaction with a requester, the transaction information specifying a first digital asset type, a transaction amount, and a shared address of a first digital asset holder associated with the requester; provide an interface on a computing device for receiving a selection of a second digital asset type associated with a second digital asset holder associated with a user of the computing device; send a conversion request to a digital asset exchange, the conversion request being configured to cause the digital asset exchange to convert a digital asset of a user of the transaction amount in the second digital asset holder from the second digital asset type to the first digital asset type; and send a transaction request to a blockchain network to associate the transaction amount with the first digital asset holder.
[0013] According to one aspect, a non-transitory computer-readable medium stores executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations, wherein the operations include: receiving, by a browser application executable by a computing device, transaction information for completing a blockchain transaction with a requesting party, the transaction information specifying a first digital asset type and a transaction amount; providing an interface on the computing device, the interface for receiving a selection of a second digital asset type associated with a digital asset holder; sending, by the browser application, a conversion request to a digital asset exchange, the conversion request being configured to cause the digital asset exchange to convert a digital asset of a user of the transaction amount among the digital asset holders from the second digital asset type to the first digital asset type; and sending, by the browser application, a transaction request to a blockchain network to initiate completion of the blockchain transaction.
[0014] According to one aspect, the method includes: detecting, by an operating system of a computing device, a blockchain transaction request from an application; determining, in response to the blockchain transaction request, whether a digital asset holder is registered as a default digital asset holder; in response to the digital asset holder being determined to be registered as a default digital asset holder, communicating an intent request from the application to the default digital asset holder to process the blockchain transaction; and communicating an intent response from the default digital asset holder to the application, the intent response identifying a result of the blockchain transaction.
[0015] According to one aspect, a system includes: at least one processor; and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to: detect a blockchain transaction request from an application or web content; determine, in response to the blockchain transaction request, whether a digital asset holder is registered as a default digital asset holder; in response to determining that the digital asset holder is not registered as a default digital asset holder, render an interface on a mobile computing device, the interface being configured to receive a user selection of the digital asset holder as a default digital asset holder; and in response to receiving the user selection of the digital asset holder, update a settings storage to identify the digital asset holder as a default digital asset holder.
[0016] According to one aspect, a non-transitory computer-readable medium stores executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations including: detecting, by an operating system of a computing device, a blockchain transaction request from an application; in response to the blockchain transaction request, determining whether a digital asset holder is registered as a default digital asset holder; in response to the digital asset holder not being determined to be registered as a default digital asset holder, rendering an interface on a display of the computing device, the interface being configured to receive a user selection of the digital asset holder as a default digital asset holder; and in response to the digital asset holder being determined to be registered as a default digital asset holder, communicating an intent request from the application to the default digital asset holder to add a blockchain transaction to a blockchain network.
[0017] According to one aspect, a method includes: detecting, by a device application programming interface, a blockchain transaction request from web content; determining, in response to the blockchain transaction request, whether a digital asset holder is registered as a default digital asset holder; and sending, from the device application programming interface to the default digital asset holder, an intent request to process a blockchain transaction in response to the digital asset holder being determined to be registered as a default digital asset holder.
[0018] According to one aspect, a system includes: at least one processor; and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to: detect, by a device application programming interface, a blockchain transaction request from web content; determine, in response to the blockchain transaction request, whether a digital asset holder is registered as a default digital asset holder; in response to the digital asset holder not being determined to be registered as a default digital asset holder, render an interface on a display of a computing device, the interface being configured to receive a user selection of the digital asset holder as a default digital asset holder; and in response to the digital asset holder being determined to be registered as a default digital asset holder, send, from the device application programming interface to the default digital asset holder, an intent request to process a blockchain transaction.
[0019] According to one aspect, a non-transitory computer-readable medium stores executable instructions that cause at least one processor to perform operations including: detecting, by a device application programming interface, a blockchain transaction request from web content; determining, in response to the blockchain transaction request, whether a digital asset holder is registered as a default digital asset holder; and sending, from the device application programming interface to the default digital asset holder, an intent request to process a blockchain transaction in response to the digital asset holder being determined to be registered as a default digital asset holder.
[0020] The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0021] Figure 1 Illustrated is a system for connecting applications with digital asset holders to process blockchain transactions according to one aspect.
[0022] Figure 2A Illustrated is a system for connecting a browser application with a digital asset holder who manages private keys used to effectuate transactions on a blockchain network, according to one aspect.
[0023] Figure 2B An example of a digital asset holder for effectuating transactions on a blockchain network is illustrated according to one aspect.
[0024] Figure 2C An example of an application programming interface at a browser application according to one aspect is illustrated.
[0025] Figure 2D An example of an application programming interface at a browser application according to another aspect is illustrated.
[0026] Figure 3 Illustrated is an example of connecting a browser application to an extension to process blockchain transactions according to one aspect.
[0027] Figure 4 Illustrated is an example of connecting a browser application to a native application to process blockchain transactions according to one aspect.
[0028] Figure 5 Illustrated is an example of connecting a browser application to a server application to process blockchain transactions according to one aspect.
[0029] Figure 6 Illustrated is an example of connecting a browser application to a native application with a custom browser tab to process blockchain transactions according to one aspect.
[0030] 7A to 7D Illustrated are example user interfaces for processing blockchain transactions using a browser application in accordance with various aspects.
[0031] FIG. 8A to FIG. 8F Illustrated are example user interfaces for processing blockchain transactions using a browser application in accordance with various aspects.
[0032] Fig. 9 Illustrated is a flow diagram depicting example operations for connecting an application with a digital asset holder to process blockchain transactions according to one aspect.
[0033] Fig. 10A Illustrated is a user interface of a browser application customized using digital data of tokens stored on a blockchain network according to one aspect.
[0034] Fig. 10B A system for customizing a user interface of a browser application using digital data of a token stored on a blockchain network is illustrated according to one aspect.
[0035] Fig.11 An example of a system with a browser application connected to a digital asset holder is illustrated according to one aspect.
[0036] Fig.12 An example of a browser application with a digital asset holder is illustrated.
[0037] Fig.13 An example of a browser application according to another aspect is illustrated.
[0038] Fig.14 Illustrated is an example of a browser application configured to customize a browser tab using tokens from a blockchain network according to one aspect.
[0039] Fig.15Illustrated is an example of a browser application configured to customize a user interface using tokens from a blockchain network, according to one aspect.
[0040] Fig.16 Illustrated is an example of a browser application configured to customize a user interface using tokens from a blockchain network, according to one aspect.
[0041] Fig.17 Illustrated is a browser application configured to customize a user interface using tokens from a blockchain network, according to one aspect.
[0042] Fig.18 is a flow diagram depicting example operations for customizing a browser tab using blockchain data according to one aspect.
[0043] Fig.19A A system for managing inter-ledger transactions involving one or more blockchain networks is illustrated, according to one aspect.
[0044] Fig.19B An example of a blockchain network according to one aspect is illustrated.
[0045] Fig.19C An example of a computing device displaying an interface for displaying a list of assets and / or receiving digital asset types is illustrated according to one aspect.
[0046] Fig.19D Another system for managing inter-ledger transactions involving multiple blockchain networks according to one aspect is illustrated.
[0047] Fig. 20 A system depicting a browser application with a user agent according to one aspect is illustrated.
[0048] Fig.21
[0013] An illustration depicts a system that depicts a browser application with a user agent and a digital asset holder according to another aspect.
[0049] Fig. 22 A system depicting an operating system with a user agent according to one aspect is illustrated.
[0050] Fig.23 is a flow diagram depicting example operations for managing inter-ledger transactions involving one or more blockchain networks according to one aspect.
[0051] Fig.24A
[0013] Illustrated is a system for registering digital asset holders as default digital asset holders and / or using default digital asset holders to facilitate transactions on a blockchain network, according to one aspect.
[0052] Fig. 24BIllustrated is an interface rendered by a system for receiving a user selection of a default digital asset holder according to one aspect.
[0053] Fig.24C An interface rendered by a system for prompting a user to install one or more digital asset holders is illustrated according to one aspect.
[0054] Fig.24D An interface rendered by a system for indicating and / or receiving a selection of a default digital asset holder is illustrated according to one aspect.
[0055] Fig.24E A settings interface according to another aspect is illustrated.
[0056] Fig.25
[0013] A system for registering a digital asset holder as a default digital asset holder and / or using a default digital asset holder to facilitate transactions on a blockchain network according to another aspect is illustrated.
[0057] Fig.26 An operating system for registering a digital asset holder as a default digital asset holder and / or using a default digital asset holder to facilitate transactions on a blockchain network according to another aspect is illustrated.
[0058] Fig. 27
[0013] A system for registering a digital asset holder as a default digital asset holder and / or using a default digital asset holder to facilitate transactions on a blockchain network according to another aspect is illustrated.
[0059] Fig.28 Illustrated is a flow diagram depicting example operations for registering a digital asset holder as a default digital asset holder and / or using a default digital asset holder to facilitate transactions on a blockchain network according to one aspect.
[0060] Fig.29 Illustrated is a flow diagram depicting example operations for registering a digital asset holder as a default digital asset holder and / or using a default digital asset holder to facilitate transactions on a blockchain network according to another aspect.
[0061] Fig.30 Illustrated is a flow diagram depicting example operations for registering a digital asset holder as a default digital asset holder and / or using a default digital asset holder to facilitate transactions on a blockchain network according to another aspect.
[0062] Fig.31 Examples of a computer device and a mobile computer device according to one aspect are shown. DETAILED DESCRIPTION
[0063] The present disclosure relates to connecting an application with a digital asset holder. The digital asset holder stores and manages the private keys of users that enable processing of blockchain transactions on a blockchain network. In some examples, the application is a first application, and the digital asset holder is a second application. In some examples, the application is a browser application. In some examples, the application is a browser engine. In some examples, the application is a non-browser application. In some examples, the application is an operating system. In some examples, the digital asset holder may be referred to as a crypto wallet. The digital asset holder may be an extension of a browser application, a native application, a server application, a web application, or generally any type of application that stores the private keys of users that implement blockchain transactions. In some examples, the digital asset holder is a third-party digital asset holder, for example, an application that is not developed or managed by the first application.
[0064] On some computing devices (e.g., laptops, desktops, etc.), executing blockchain transactions from web content is limited to available (enabled) extensions. For example, conventional browser applications may be limited to certain blockchain processing providers that provide web extensions. In other words, under conventional methods, there may be incompatibilities between the user's digital asset holder and the web content. However, the technology discussed herein provides a technical solution in which an application (e.g., a browser application) operates as an intermediary between the user's digital asset holder and the web content that can create blockchain transactions, and the intermediary can enable any digital asset holder (e.g., any third-party digital asset holder) to connect to the browser application to process blockchain transactions. Although some examples describe the use of a browser application as the first application, embodiments may also cover other types of applications such as non-browser-based applications and / or operating systems.
[0065] On some computing devices (e.g., smartphones, tablets, etc.), extensions of browser applications may be restricted or not allowed. Therefore, on such devices, users are directed from the browser to another application (e.g., an application based on a crypto wallet) to process blockchain transactions. In other words, the configuration of the user's device may force the user to switch applications (e.g., from a browser to an installed application) to process blockchain transactions. However, the technology discussed herein provides a technical solution that uses a browser application as an intermediary between web content and digital asset holders, where the user is not directed to another application to process blockchain transactions, thereby keeping the user within the application that provides the web content. This technical solution has the technical effect of reducing the number of times a user interacts with a computing device to process blockchain transactions. In some examples, the technology discussed herein provides a technical solution in which application developers do not have to develop code (e.g., low-level instructions) to communicate with a blockchain network to process blockchain transactions, where the browser application provides the functionality of communicating with the blockchain network and notifying the digital asset holder and the website of the results.
[0066] The browser application may define (e.g., natively or through a JavaScript library) one or more application programming interfaces (APIs) that connect the blockchain network to the user's digital asset holders so that the browser application can handle at least some of the operations used to complete transactions on the blockchain network. The user can use an application (e.g., a browser application, or a non-browser application capable of rendering web content) to view web content and create blockchain transactions on the blockchain network. In some examples, the web content may include one or more objects (e.g., JavaScript-exposed objects) for creating blockchain transactions on the blockchain network.
[0067] The browser application may define at least one first API that enables the browser application to communicate with the digital asset holder (e.g., when the web content calls an object exposed by JavaScript) to obtain information from the digital asset holder and / or notify the digital asset holder of information about blockchain transactions. For example, the first API can be a programming interface that allows the browser application and the digital asset holder to communicate with each other. In some examples, the browser application communicates with the digital asset holder to obtain a list of digital assets associated with the digital asset holder for blockchain transactions, and / or communicates with the digital asset holder to receive authenticated transaction requests from the digital asset holder. For example, the browser application may communicate with the digital asset holder via the first API so that the digital asset holder can retrieve the user's private key and authenticate the blockchain transaction request. The browser application receives an authenticated transaction request from the digital asset holder via the first API.
[0068] The browser application may define at least one second API that enables the browser application to communicate with the blockchain network. For example, the browser application may send an authenticated transaction request to the blockchain network via the second API, and the blockchain network submits the transaction to the blockchain network. After submitting the transaction to the blockchain network, the browser application receives a transaction response from the blockchain network via the second API, wherein the transaction response includes a transaction identifier of the transaction added to the blockchain network. In response to the transaction response, the browser application sends a notification message to the digital asset holder via the first API, wherein the notification includes the transaction identifier.
[0069] The present disclosure also relates to a browser application configured to: obtain an identifier associated with a token (e.g., a non-fungible token (NFT)) stored on a blockchain network; use the identifier to retrieve digital data of the token; and customize the user interface of the browser application using the digital data of the token. According to the technology discussed herein, a user can customize a browser application using one or more tokens stored on a blockchain. The technology discussed herein can provide the following technical benefits: enabling a browser application to retrieve the digital data of the token and render the digital data of the token in one or more sections of the browser application that are separate from displaying a web page.
[0070] A user may acquire a token (e.g., an NFT) (e.g., from an online marketplace, or minting a new NFT) and associate the NFT with a digital asset holder, such as an application (or program) that stores and manages a user's private key for authenticating transactions on one or more blockchain networks. Digital data may be codified (e.g., minted) on a blockchain network, thereby generating a unique token (e.g., the token) for representing ownership of a digital asset. Some categories of NFTs include artwork, collectibles, utility for games or applications, and early access to whitelists and NFT launches. A digital asset holder uses a private key to authenticate blockchain transactions involving tokens (e.g., transfers, sales, purchases of tokens). In some examples, because the blockchain network is public, it may be possible to access the token using one or more identifiers, such as a token identifier (e.g., an NFT identifier) that identifies the location of a specific token on a blockchain network, an address of a digital asset holder (e.g., a public / shared address), or a collection identifier that identifies a collection of tokens (e.g., created by a specific creator or multiple creators). Using the token identifier, the browser application can retrieve digital data associated with the token (e.g., image data, video data, and / or audio data), which may be stored on a blockchain network (associated with the corresponding token) or on a storage device separate from the blockchain.
[0071] The browser application may be customized based on the digital data and / or information associated with the digital data. Note that displaying the NFT may refer to displaying the digital data associated with the token that has been retrieved from the blockchain network or on a separate storage device. In some examples, the NFT may be displayed as a background image of a browser tab of the browser application. In some examples, the NFT may be displayed as a profile image in the user interface of the browser application.
[0072] In some examples, the browser application is connected to (or connectable to) a digital asset holder and displays one or more tokens associated with the digital asset holder as a background image of the browser tab. In some examples, when a new browser tab is launched, the browser application may display different tokens associated with the digital asset holder (e.g., the browser application may randomly or sequentially shuffle the user's NFTs each time the user launches a new browser tab). In some examples, the digital asset holder is a third-party digital asset holder, and the browser application may use Figures 1 to 9 In some examples, in response to the browser application connecting to the digital asset holder, the browser application obtains a token identifier (e.g., an NFT identifier, a shared (or public) address of the holder, a collection identifier, etc.). In some examples, the digital asset holder is associated with the browser application (e.g., the browser application includes a native or built-in digital asset holder), and the browser application can access the identifier from the browser's digital asset holder. In some examples, the browser application can render a user interface object that enables the user to enter the identifier.
[0073] In some examples, the browser application may render a user interface (UI) module on a portion of the user interface of the browser application. The user interface module may display one or more tokens associated with the identifier. In some examples, the UI module may shuffle / loop (e.g., sequentially display, randomly display) tokens associated with the identifier (e.g., any NFTs owned by the user). In some examples, a token identifier (including a token identifier that is a collection of NFTs) may be associated with a profile of the user, e.g., such that different user profiles used by the user are associated with different token identifiers of a wallet.
[0074] In some examples, the browser application obtains metadata about tokens owned by the user and / or associated with an identifier, generates recommendations based on the metadata, and renders information identifying the recommendation in a user interface of the browser application. The metadata may include information about the creator, product name, description, attribute level, statistics, when and / or where the token was created, NFT items related to the token, etc. The browser application may include a recommendation engine (or operate in conjunction with a recommendation engine) that can generate recommendations. In some examples, the recommendation may identify one or more NFTs (or NFT items) from the same creator and / or recommend NFTs (or NFT items) of similar size, price, etc. In some examples, the recommendation includes web content about the recommendation or a link to web content.
[0075] The present disclosure also relates to enabling an application (e.g., a browser application) to act as an intermediary for transactions involving different payment networks (e.g., inter-ledger payments). Each type of digital asset (e.g., each cryptocurrency) may represent a different payment network, and each type of digital asset may be stored on the same blockchain network or on a different blockchain network. For example, Ether is stored on the Ethereum blockchain, and Bitcoin is stored on the Bitcoin blockchain. In some examples, Ether and Bitcoin (e.g., Wrapped Bitcoin (WBTC)) are stored on the Ethereum blockchain. Without inter-ledger payments, a recipient (seller) may offer a commodity for a specified amount in Ether, but a sender (buyer) lacking this particular digital asset cannot complete the transaction.
[0076] Some conventional approaches provide large and complex protocols to submit transactions across different ledgers, but due to their complexity, these conventional approaches have not been widely adapted by computing devices (or their applications). Outside of the inter-ledger process, when a recipient requests a specific type of digital asset, if the user (e.g., the transmitter) does not currently have a digital asset of the type requested by the requester (e.g., by the recipient), the user can manually convert the digital asset. This manual conversion process may cause technical problems, including leaving the user out of the flow of the transaction, and potentially requiring the installation of yet another or possibly two additional digital asset exchange applications, which may increase the computing resources (e.g., memory, CPU) used to facilitate such transactions. Users may abandon transactions because of the extra effort. The lack of a simplified protocol may lead to a lack of adoption by the recipient (e.g., computing device, application, etc.) and / or an increase in transaction abandonment.
[0077] The technology discussed herein provides a technical solution, i.e., using an application (e.g., a browser application) to manage the coordination between digital asset holders (e.g., crypto wallets), blockchain networks, and digital asset exchanges (e.g., decentralized or centralized exchanges) to solve the technical problem of inter-ledger (user-to-user payment). Further, the technology discussed herein provides a technical solution, i.e., providing a simplified (and in some examples, platform-independent) protocol for connecting a receiver (seller) and a transmitter (e.g., buyer) via a digital asset holder and a digital asset exchange. Such a technical solution has the following technical benefits: allowing a receiver and a transmitter to exchange information (blockchain transactions), regardless of the format in which the receiver provides the information and the seller receives the information.
[0078] A digital asset exchange may be an application (executed by a computing device remote from the sender and / or receiver) that can perform one or more inter-ledger conversion operations to convert one digital asset type (e.g., Ether) to another digital asset type (e.g., Bitcoin). In some examples, a digital asset exchange includes a decentralized exchange (DEX). A DEX is an application executed on one or more blockchain networks, where the code is embodied as a smart contract on the blockchain network. For example, in the case of converting 100 Bitcoins to Ether, the DEX will take out 100 Bitcoins from the user's digital asset holder on the Bitcoin ledger and put the corresponding Ether on the user's digital asset holder on the Ethereum ledger. Uniswap® is an example of a DEX. In some examples, a DEX converts tokens on the same blockchain network. For example, a DEX may be executed as a smart contract on the Ethereum blockchain, and may convert Ether on the Ethereum blockchain to Wrapped Bitcoin (WBTC) on the Ethereum blockchain. In other words, a blockchain network (e.g., Ethereum) may have multiple ledgers (e.g., Ether, Wrapped Bitcoin). In some examples, a digital asset exchange includes a centralized asset exchange (e.g., Binance®) that can convert tokens on different blockchains.
[0079] The technology discussed herein provides an application (e.g., a browser application) that defines a protocol for receiving blockchain transaction information from a requester (e.g., a recipient) (e.g., a website, an application, etc.) and communicating with one or more digital asset exchanges, which can provide a technical benefit of reducing the amount of computer complexity (thereby reducing the amount of computing resources) for implementing inter-ledger transactions involving different digital asset types (e.g., different ledgers). Further, the technology discussed herein can operate behind the scenes, requiring minimal input from the sender, and not interrupting the transaction flow of the sender (thereby avoiding the need to install one or more additional applications).
[0080] The application (e.g., a browser application) is configured to implement a user agent natively or through a JavaScript or HTML library to receive transaction information (e.g., the type of digital asset requested by the recipient, the transaction amount, the recipient's shared address) from the recipient (e.g., the recipient's website, application). For example, in response to a user (transmitter) selecting a specific item to purchase, the application may receive transaction information. In one example, the blockchain transaction information may specify Ether as the requested digital asset type, the transaction amount (e.g., 0.01 ETH), and the recipient's shared address corresponding to the digital asset holder belonging to the recipient.
[0081] In response to the blockchain transaction information, the application may render an interface (e.g., a UI prompt) that prompts the user to select a digital asset type. In some examples, the application may communicate with the user's digital asset holder to obtain an asset list, wherein the asset list identifies digital assets belonging to the user (transmitter) and associated with the user's asset holder. In some examples, the application defines a native (or built-in) digital asset holder (e.g., a program that receives transaction information and is included as part of or associated with the application). In some examples, the application is a browser application, and the digital asset holder is a program that is part of or associated with the browser application. In some examples, the user's digital asset holder is a third-party digital asset holder, and the application may select a digital asset type based on a reference. Figures 1 to 9 Any of the discussed technologies may be used to connect to a third-party digital asset holder. In one example, an interface may display information indicating that a user has Bitcoin and Dogecoin.
[0082] In some examples, the application may communicate with one or more digital asset exchanges to obtain exchange rate information, and the application may display the exchange rate information in the interface. For example, the exchange rate information may provide an exchange rate for converting Bitcoin to Ethereum for a transaction amount and an exchange rate for converting Dogecoin to Ethereum for a transaction amount.
[0083] In response to receiving a selection of a particular digital asset type (e.g., a user selects Bitcoin), the application may communicate with one or more digital asset exchanges to convert the transaction amount from one type of digital asset (held by the user) to the type requested by the recipient. In some examples, the application may send a conversion request to the digital asset exchange, wherein the conversion request causes the digital asset exchange to convert the user's digital assets of the transaction amount in the user's digital asset holders from one type of asset to the requested digital asset. The application may then communicate with the blockchain network to transmit the transaction amount (now of the type requested by the recipient) to the recipient's digital asset holder (as identified by the recipient's shared address). For example, the application may send a transaction to the blockchain network (with a Bitcoin ledger) to transfer the transaction amount from the user's digital asset holder to the recipient's digital asset holder. In other words, the application transparently determines and executes a swap sequence for completing the exchange of currencies and trading in the requested currency type to the user.
[0084] In some examples, the application may select a specific digital asset exchange among multiple digital asset exchanges. For example, the application may evaluate multiple digital asset exchanges and select an exchange that provides the best exchange rate and / or the lowest transaction fee. In some examples, the application may use multiple digital asset exchanges to perform a conversion of one digital asset type to another digital asset type. For example, if the sender uses a niche currency A and the receiver uses a niche currency B, the application may not be able to select a digital asset exchange that converts (e.g., directly) niche currency A to niche currency B. However, the application may select a first digital asset exchange that converts niche currency A to a popular bridge currency (e.g., ETH), and selects a second digital asset exchange that converts the bridge currency to niche currency B. These and other features will be further explained with reference to the accompanying drawings.
[0085] The present disclosure also relates to registering a digital asset holder as a default digital asset holder and / or using a default digital asset holder to facilitate transactions on a blockchain network according to another aspect. For example, the present disclosure may provide a technical solution that enables blockchain transactions to be initiated from web content or applications other than digital asset holders. In some computing environments (e.g., mobile environments), blockchain transactions can only be processed using digital asset holders (e.g., native applications installed on a user's device). According to some conventional approaches, a user may have to start and use a digital asset holder on the user's device to initiate a blockchain transaction. However, according to the technology discussed herein, a transaction may be initiated on web content or using an application other than a digital asset holder, where, in some examples, the application may communicate with the default digital asset holder to authenticate the transaction and submit the transaction to the blockchain network.
[0086] When a user creates a transaction, if the digital asset holder is not registered as a default digital asset holder, the operating system may cause an interface to be displayed for selecting a specific digital asset holder from the digital asset holders installed on the user's device. In some examples, when a user creates a transaction, if the digital asset holder is not registered as a default digital asset holder and the digital asset holder is not installed on the user's device, the operating system may cause an interface to be displayed for prompting the user to install the specific digital asset holder. In some examples, the user may select a specific digital asset holder as the default digital asset holder from a settings interface (e.g., an OS settings interface).
[0087] If the digital asset holder is registered as the default digital asset holder, the application (initiating the transaction) may pass an intent request to the default digital asset holder (via an inter-process (IPC) link), wherein the intent request causes the default digital asset holder to perform one or more actions. In response to the execution of the action, the default asset holder may send an intent response to the application (via an IPC link), wherein the intent response may indicate the result of the action. In some examples, the intent request is a request for a list of assets, which causes the default digital asset holder to generate the list of assets and return the list of assets via an intent response. In some examples, the intent request is a transaction creation request, which causes the default digital asset holder to authenticate the transaction and communicate with the blockchain network to add the transaction to the blockchain network. The intent response may include the result of the transaction being added to the blockchain network.
[0088] In some examples, the operating system includes a device application programming interface (API). When a user creates a transaction on a web content, the device API may create an intent request and transmit the intent request to the default digital asset holder (via an IPC link). In response to the execution of an action by the default digital asset holder, the device API may receive an intent response. The device API may send a notification to the website and / or underlying application of the web content (prompting the transaction), wherein the notification may indicate the result of the transaction. In some examples, the use of the device API may achieve the following technical benefits: facilitating transactions from web content on a blockchain network with little (or no) browser participation. In some examples, instead of using the device API (or in addition to the device API), the browser application may use any of the described technologies related to connecting the browser application to a third-party digital asset holder to connect to the default digital asset holder to facilitate processing transactions on the blockchain network. These and other features are further described with reference to the following figures.
[0089] Figure 1A system 100 with an application 106 is illustrated according to one aspect, the application being connected to one or more digital asset holders 102 for processing transactions 112 on a blockchain network 110. In some examples, the application 106 includes a browser application. In some examples, the application 106 includes a non-browser based application. In some examples, the application 106 includes an operating system. In some examples, the digital asset holder 102 is referred to as a crypto wallet. The digital asset holder 102 may be implemented as an extension of a browser application, a native application, a server application, a web application, or any application that generally stores a private key 104. For example, the digital asset holder 102 stores a private key 104 for enabling the processing of transactions 112 on the blockchain network 110. In some examples, the digital asset holder 102 is a third-party application (e.g., a third-party digital asset holder), e.g., an application that is not developed or managed by the application 106.
[0090] In some examples, the application 106 may connect with any digital asset holder 102 (e.g., any third-party digital asset holder) so that the application 106 performs at least one of the operations to process the transaction 112 on the blockchain network 110. For example, the application 106 may connect to a digital asset holder 102 implemented by an extension of a browser application, a native application, a server application, and / or a web application. In some examples, the application 106 operates as an intermediary between the web content 108 used to create the transaction 112 and the digital asset holder 102. In some examples, the application 106 operates as an intermediary between the digital asset holder 102 and the blockchain network 110. The application 106 may render one or more user interface (UI) objects that enable a user to select a specific digital asset holder 102 to be used for the transaction 112 and / or a specific digital asset associated with the digital asset holder 102 to be used for the transaction 112. In some examples, the application 106 may render a user interface object (UI object) that notifies the user of the result of the transaction 112. A UI object is an object that is configured to be selectable by a user and to perform an action upon selection.
[0091] Because at least some of the operations for processing transactions 112 on web content 108 are performed by application 106, the complexity of implementing transactions 112 for web content 108 may be reduced. In addition, the techniques discussed herein may enable application 106 to connect to any digital asset holder 102 (e.g., any third-party digital asset holder) in a manner that increases the speed at which transactions 112 may be added to blockchain network 110 and / or reduces the amount of computing resources used to complete transactions 112 (e.g., switching user interfaces between multiple applications may be avoided and / or launching another application to complete transaction 112 may be avoided).
[0092] Blockchain network 110 may represent any type of distributed database shared between computer nodes of a computer network. In some examples, blockchain network 110 includes a distributed ledger or distributed ledger technology (DLT). A distributed ledger is a consensus of replicated, shared, and synchronized digital data stored across computer nodes. In some examples, blockchain network 110 is a public ledger. In some examples, blockchain network 110 is a private ledger. In some examples, blockchain network 110 is a combination of a public ledger and a private ledger. In some examples, blockchain network 110 is a digital distributed, decentralized ledger that exists across multiple nodes in a peer-to-peer (P2P) network, where each node is represented by one or more computing devices.
[0093] The blockchain network 110 may store digital data as a plurality of linked blocks (e.g., a chain of blocks), where one block is linked to a previous block using cryptography. In some examples, the digital data includes cryptocurrency. In some examples, the digital data includes a fungible token. A fungible token is a representation of an interchangeable asset on the blockchain network 110. In some examples, the digital data includes a non-fungible token (e.g., an NFT). A non-fungible token is a representation of a non-interchangeable asset (e.g., a unique asset) on the blockchain network 110.
[0094] In some examples, the blockchain network 110 may process the transaction 112 and record the transaction as part of a block in the blockchain. Each block includes data (e.g., transaction data) and a hash value, which is the result of a cryptographic operation performed on the data of the block. In some examples, the block includes a nonce (e.g., an integer), which is a number randomly generated when the block is created. In some examples, linking a new block to an existing block includes: identifying a hash value of a previous block within the new block. In some examples, adding the transaction 112 to the blockchain network 110 includes: adding transaction information about the transaction 112 to an already existing block of the blockchain network 110. In some examples, adding the transaction 112 to the blockchain network 110 includes: creating a new block; adding the transaction information about the transaction 112 to the new block; generating a hash value using one or more cryptographic operations input with the transaction information; and / or linking the new block to the previous block by including the hash value of the previous block in the new block.
[0095] The digital asset holder 102 can be any type of program that stores and manages a user's private key 104, which is used by the digital asset holder 102 to authenticate transactions 112 on the blockchain network 110. In some examples, the private key 104 includes a password (e.g., a series of characters). In some examples, the private key 104 includes one or more passphrases. In some examples, the private key 104 includes a list of dictionary words (e.g., an unencrypted form of the private key 104). Without the private key 104, transactions 112 cannot be added to the blockchain network 110. For example, if a user wishes to record a transaction involving the user's digital assets (e.g., cryptocurrency, NFT) stored on the blockchain network 110, the transaction must be authenticated (e.g., signed by the digital asset holder 102) before the transaction 112 is added to the blockchain network 110.
[0096] The digital asset holder 102 may be stored on a computing device associated with the user. In some examples, the private key 104 is stored in a memory device on the user's computer. In some examples, the digital asset holder 102 is stored on one or more server computers. In some examples, the digital asset holder 102 is a native application installed on the operating system of the user's computing device. In some examples, the digital asset holder 102 is a program as part of a larger application. In some examples, the digital asset holder 102 is a native (e.g., built-in) digital asset holder as part of a native application that can be executed by a computing device. In some examples, the digital asset holder 102 is an extension (e.g., a web extension) of a browser application. In some examples, the digital asset holder 102 is a web application that is at least partially executed by one or more server computers and can be accessed via a browser application on the user's computing device. In some examples, the digital asset holder 102 is a server application executed on one or more server computers. In some examples, the digital asset holder 102 is called a cloud application.
[0097] The digital asset holder 102 may be associated with a shared address (e.g., a shared / public wallet address) that represents the location of one or more digital assets associated with the user and stored on the blockchain network 110 (or multiple blockchain networks 110). The digital asset holder 102 may not actually store the digital assets (e.g., the digital assets are stored on the blockchain network 110), but the digital asset holder 102 stores the private key 104 and the shared address of the location of the digital assets. In addition, the digital asset holder 102 includes functionality to authenticate (e.g., sign) the transaction 112. In some examples, the digital asset holder 102 may authenticate the transaction by executing a smart contract and / or performing a cryptographic operation using the private key 104.
[0098] To create a transaction 112 from the web content 108, in some conventional approaches, the digital asset holder may communicate with the blockchain network 110 to submit (e.g., add) the transaction 112 to the blockchain network 110. In some conventional approaches, only the digital asset holder can complete the transaction 112. However, according to the techniques discussed herein, the application 106 may operate as an intermediary between the digital asset holder 102 and the web content 108, wherein the application 106 performs at least a portion of the operations to complete the transaction 112 on the blockchain network 110.
[0099] The web content 108 may be displayed on a computing device of a user. The web content 108 may be rendered from a browser application, a native application with a web view controller, and / or a browser tab rendered within a native application (e.g., a custom browser tab). In some examples, the web content 108 may include one or more objects (e.g., JavaScript exposed objects) for creating a blockchain transaction on the blockchain network 110.
[0100] Application 106 may include a browser application executable by a computing device. In some examples, the browser application is a web browser (e.g., a browser engine or search engine) executable on an operating system of a computing device. The web browser may be configured to render a browser tab for searching and displaying web content. In some examples, the browser application is an operating system (or a portion of an operating system) executable by a computing device. In some examples, application 106 is a non-browser application, e.g., an application that does not render a browser tab.
[0101] Application 106 may include one or more interfaces that enable application 106 and digital asset holder 102 to communicate with each other when creating transaction 112 on web content 108. In some examples, web content 108 is rendered by application 106. In some examples, web content 108 is rendered by native application using web view controller or custom browser tab. If application 106 is a browser application, the browser application can render web content 108 (e.g., in a browser tab). In some examples, web content 108 is rendered by the web view controller of the native application (e.g., displaying and controlling web content without leaving the native application). In some examples, web content 108 is provided in a browser tab (e.g., a custom browser tab) within the native application. In some examples, web content 108 is rendered by a web application (or a server or cloud-based application).
[0102] In some examples, the interface defines an inter-process communication protocol that enables information to be transmitted between the application 106 and the digital asset holder 102. In some examples, the interface allows the browser application and the digital asset holder 102 (e.g., an extension of the browser application, native application, server application, etc.) to communicate with each other. In some examples, the interface includes an application programming interface (API). In some examples, the API includes a callback API. In some examples, the application 106 includes a library (e.g., a JavaScript library) that defines one or more APIs for communicating between the application 106 and the digital asset holder 102. In some examples, the application 106 natively defines one or more APIs for communicating with the application 106 and the digital asset holder 102.
[0103] In response to generating a request to create a transaction on the blockchain network 110 through a user's interaction with an exposed object on the web content 108, in some examples, the application 106 may receive a request (e.g., a callback) or receive multiple requests (at separate times) such as a first request and / or a second request. Receipt or detection of the first request or the second request may cause the application 106 to communicate with the digital asset holder 102 to receive and / or send information. In some examples, the first request is a request to obtain a list of digital assets (e.g., cryptocurrencies, NFTs, etc.) associated with a particular digital asset holder 102. In some examples, the second request is a request to obtain an authenticated transaction for one or more particular digital assets.
[0104] In response to the first request, the application 106 may communicate with the digital asset holder 102 to obtain a list of digital assets, for example, which digital assets are owned by the user. In some examples, the application 106 may send a digital asset request to the digital asset holder 102, and in response to the digital asset request, the digital asset holder 102 may use the shared address of the specific digital asset holder 102 to obtain a list of digital assets (e.g., by communicating with the blockchain network 110). The application 106 may receive a digital asset response from the digital asset holder 102, wherein the digital asset response includes a list of digital assets.
[0105] In response to the second request, the application 106 may communicate with the digital asset holder 102 to obtain an authorized transaction request from the digital asset holder 102. In some examples, the second request is related to a transaction request to create a transaction 112 on the blockchain network 110 using a specific digital asset from the list of digital assets. The transaction request may include details about the transaction, such as the digital asset type, amount, sender, receiver, time information, etc. The application 106 may send the transaction request to the digital asset holder 102 so that the digital asset holder 102 can retrieve the private key 104 and use the private key 104 to authenticate the transaction request. The application 106 may receive the authenticated transaction request from the digital asset holder 102.
[0106] The application 106 may then communicate with the blockchain network 110 to add the transaction 112 subject to the authenticated transaction request to the blockchain network. For example, the application 106 may define one or more interfaces to enable the application 106 to communicate with the blockchain network 110. In some examples, the application 106 may send the authenticated transaction request to the blockchain network 110, and the blockchain network 110 may add the transaction 112 subject to the authenticated transaction request to the blockchain network 110. The application 106 may receive a transaction response from the blockchain network 110 indicating whether the transaction 112 has been successfully added to the blockchain network 110. In some examples, the transaction response includes a transaction identifier that uniquely identifies the transaction 112. The application 106 may send a notification to the digital asset holder 102 indicating that the transaction 112 has been successfully added to the blockchain network 110. In some examples, the application 106 may send a notification to the website or platform hosting the web content 108 indicating that the transaction was successful.
[0107] FIG. 2A to FIG. 2D A system 200 is illustrated having a browser application 206a configured to connect to one or more digital asset holders 202 to process transactions 212a on a blockchain network 210. In some examples, the browser application 206a may connect (at a particular time) with a single digital asset holder 202 to process one or more transactions 212a on a web content 208. In some examples, the browser application 206a may connect (e.g., simultaneously or at different times) with multiple digital asset holders 202 to process one or more transactions 212a on a web content 208.
[0108] System 200 may be Figure 1 An example of system 100 may include reference Figure 1The browser application 206a is configured to connect to a digital asset holder 202 storing a private key 204 to enable a transaction 212 to be added on a blockchain network 210 for a digital asset associated with (or to be associated with) a user of a computing device 226. In some examples, the digital asset holder 202 is a third-party digital asset holder. A third-party digital asset holder is an application that is not owned and / or governed by the browser application 206a. In some examples, the browser application 206a may connect to any third-party digital asset holder to assist in processing transactions 212 on the blockchain network 210.
[0109] Computing device 226 can be any type of computing device including one or more processors 228, one or more memory devices 230, a display 234, and an operating system 232, which is configured to execute (or assist in executing) one or more applications, including browser application 206a and digital asset holder 202. In some examples, computing device 226 is a laptop computer. In some examples, computing device 226 is a desktop computer. In some examples, computing device 226 is a tablet computer. In some examples, computing device 226 is a smartphone. In some examples, computing device 226 is a wearable device. In some examples, display 234 is a display of computing device 226. In some examples, display 234 may also include one or more external monitors connected to computing device 226.
[0110] Operating system 232 is system software that manages computer hardware, software resources and provides general services for computing programs. In some examples, operating system 232 is an operating system designed for a larger display 234 (such as a laptop or desktop) (e.g., sometimes referred to as a desktop operating system). In some examples, operating system 232 is an operating system for a smaller display 234 (such as a tablet or smartphone) (e.g., sometimes referred to as a mobile operating system).
[0111] The processor 228 may be formed in a substrate that is configured to execute one or more machine-executable instructions or one or more pieces of software, firmware, or a combination thereof. The processor 228 may be semiconductor-based—that is, the processor may include semiconductor material that can execute digital logic. The memory device 230 may include a main memory that stores information in a format that can be read and / or executed by the processor 228. The memory device 230 may store an operating system 232, a digital asset holder 202, and a browser application 206a that, when executed by the processor 228, perform certain operations discussed herein.
[0112] Although the browser application 206a is depicted as operating as an intermediary between the web content 208 and the digital asset holder 202, it is noted that in some examples, the application may be an operating system or a non-browser application, for example, an application that does not render a browser tab for rendering and / or searching for content on the Internet. The browser application 206a may be a web browser (e.g., a browser engine or a search engine) configured to access information on the Internet. In some examples, the browser application 206a is an application separate from the operating system 232, wherein the browser application 206a may be installed on the operating system 232 (and may be executed by the operating system). In some examples, the browser application 206a is the operating system 232 (or is included as part of the operating system 232). The browser application 206a may launch one or more browser tabs in the context of one or more browser windows on the display 234 of the computing device 226. In some examples, the browser application 206a may launch one or more browser tabs without reference to a browser window.
[0113] The browser application 206a may connect to the digital asset holder 202 to process a transaction 212a on the web content 208, wherein the digital asset holder 202 is configured to store a private key 204 of a user for implementing the transaction 212 on the blockchain network 210. The transaction 212a may be referred to as a blockchain transaction that records digital information on the blockchain network 210. The transaction 212a may involve obtaining a commodity (e.g., goods, services, and / or digital rights) using the user's digital data (e.g., digital assets) stored on the blockchain network 210. In some examples, the web content 208 may allow the user to obtain the commodity using a cryptocurrency and / or NFT owned by the user and stored on the blockchain network 210. For example, an application or website may allow the user to purchase content using a digital asset (such as a cryptocurrency or NFT) stored on the blockchain network 210.
[0114] The web content 208 may include information from the World Wide Web. In some examples, the web content 208 includes a web page or a collection of web pages (e.g., a web page is a hypertext document on the Internet). The web content 208 may include one or more objects 236 that allow transactions 212a to be created on the blockchain network 210. In some examples, the object 236 is a blockchain computer object. In some examples, the object 236 is an object exposed by JavaScript. In some examples, the object 236 is an object exposed by an API. If the blockchain network 210 is Ethereum, the object 236 is an Ethereum object (e.g., window.etherum) used to create transactions on the Ethereum blockchain. In some examples, the object 236 is a type specific to the blockchain network. In some examples, the web content 208 may include a first object (e.g., object 236) for creating a transaction on a first blockchain network and a second object (e.g., object 236) for creating a transaction on a second blockchain network, where the second blockchain network is different from the first blockchain network. In some examples, the first object and the second object refer to different callbacks or requests related to a specific transaction 212a when selected (e.g., called, initiated).
[0115] When the web content 208 is rendered on the display 234, the object 236 is not implemented or realized, but, as discussed further below, the browser application 206a is configured to implement the object 236 to communicate with the blockchain network 210 (e.g., by using the API 240). In some examples, the object 236 embedded in the web content 208 causes a blockchain process to be initiated when selected (e.g., invoked, initiated, etc.).
[0116] Web content 208 can be rendered on display 234 of computing device 226 according to one or more different ways. Web content 208 can be displayed in the user interface of browser application 206a. For example, a user can use browser application 206a to render web content 208 in a browser tab. Web content 208 can be displayed in the user interface of a non-browser application (e.g., a mobile app installed on a smartphone). For example, a user may be using a native application installed on computing device 226, and web content 208 can be displayed from the native application using a web view controller and / or a browser tab. The web view controller and / or the browser tab can be associated with browser application 206a. In some examples, web content 208 can be displayed in the user interface of a web application that can be executed at least in part by browser application 206a.
[0117] The browser application 206a may connect with any digital asset holder 202 (e.g., any third-party digital asset holder) for a transaction 212a initiated from the web content 208, causing the browser application 206a to perform at least one of the operations to enable the transaction 212a to be added to the blockchain network 210. In some examples, the browser application 206a operates as an intermediary between the web content 208 and the digital asset holder 202 for creating the transaction 212. In some examples, the browser application 206a operates as an intermediary between the digital asset holder 202 and the blockchain network 210.
[0118] The digital asset holder 202 can be any type of program that stores and manages a user's private key 204, which is used by the digital asset holder 202 to authenticate the transaction 212 before adding it to the blockchain network 210. In some examples, the private key 204 includes a password (e.g., a series of characters). In some examples, the private key 204 includes one or more passphrases. In some examples, the private key 204 includes a list of dictionary words (e.g., an unencrypted form of the private key 204). Without the private key 204, the transaction 212a cannot be added to the blockchain network 210. For example, if a user wishes to record a transaction 212a involving a user's digital asset (e.g., cryptocurrency, NFT) stored on the blockchain network 210, the transaction must be authenticated by the digital asset holder 202 (e.g., signed by the digital asset holder) before the transaction 212a is added to the blockchain network 210. The digital asset holder 202 can be stored on the computing device 226 (e.g., stored in the memory device 230). In some examples, the digital asset holder 202 is stored on one or more server computers 216 , and the digital asset holder 202 is accessible by a computing device 226 over a network 250 .
[0119] In some examples, such as Figure 2BAs shown, digital asset holder 202 is an extension 202a of browser application 206a. For example, digital asset holder 202 (e.g., digital asset holder) can be implemented by extension 202a, and browser application 206a can be connected to extension 202a to facilitate processing transaction 212a on web content 208. In some examples, web content 208 is rendered by browser application 206a. In some examples, extension 202a is called web extension or browser extension. Extension 202a (if enabled) adds features or functions to browser application 206a. In some examples, extension 202a can be based on HTML, CSS and / or JavaScript. In some examples, extension 202a is a third-party extension not owned by browser application 206a (e.g., extension 202a is developed by an entity separate from the entity that develops browser application 206a).
[0120] In some examples, the digital asset holder 202 is a native application 202b. For example, the digital asset holder 202 can be implemented by the native application 202b, and the browser application 206a can be connected to the native application 202b to facilitate processing transactions 212a on the web content 208. In some examples, the web content 208 is rendered by the web view controller of the native application 202b. In some examples, the web content 208 is rendered within a browser tab. In some examples, the web content 208 is rendered within a custom browser tab.
[0121] A custom browser tab is a browser tab (associated with browser application 206a), but rendered within the context of a native application (e.g., native application 202b). For example, if a native application incorporates a custom browser tab, then when a link to web content 208 is selected, the web content 208 is rendered in a custom browser tab within the native application (e.g., not rendering a separate browser tab on top of the native app's UI). The custom browser tab may include one or more selectable items associated with actions of the browser application 206a (e.g., navigation controls) and one or more selectable items associated with actions of the underlying native application (e.g., sharing a message on a messaging platform).
[0122] In some examples, a custom browser tab includes customized display properties of a user interface of the custom browser tab (e.g., setting a color for the background of a navigation panel and / or a toolbar). For example, items of a navigation panel (e.g., with forward and / or back navigation controls) and a toolbar are typically standard across browser tabs rendered for non-customized browser tabs. However, an application developer may change one or more aspects of a navigation panel and / or toolbar to customize a tab so that it corresponds to an underlying native application.
[0123] In some examples, the native application 202b is a non-browser application. The native application 202b can display web content 208 via a web view controller or a browser tab. The native application 202b is a software program developed for use on a specific platform or device or for a specific operating system. In some examples, the native application 202b is installed on the operating system 232 of the computing device 226.
[0124] In some examples, the native application 202b is a native mobile application configured to be executed on a mobile operating system of a computing device 226 (such as a smart phone or tablet computer). In some examples, the native mobile application may include an Android application, a mobile iOS application, and / or a mobile Windows application. In some examples, the native application 202b is an application configured to be executed on a desktop operating system of a computing device 226 (such as a laptop or desktop computer). In some examples, the native application 202b may include a Linux-based application (e.g., a Linux application in a virtualized environment). In some examples, the native application 202b is a software program developed for multiple platforms or devices. In some examples, the native application 202b is a software program developed for use on a mobile platform and / or configured to be executed on a desktop computer or laptop computer.
[0125] In some examples, the digital asset holder 202 is a server application 202c. For example, the digital asset holder 202 may be implemented by the server application 202c, and the browser application 206a may be connected to the server application 202c to facilitate processing transactions 212a on the web content 208. In some examples, the web content 208 is rendered by the browser application 206a. In some examples, the server application 202c is an application executed on one or more server computers (e.g., server computer 216). In some examples, the server application 202c is called a cloud application. In some examples, the server application 202c is a web application. In some examples, the server application 202c may be an application stored on a remote server (e.g., server computer 216) and delivered via a network 250 by the browser application 206a (e.g., a browser tab). In some examples, the server application 202c includes a progressive web application that can be (at least partially) stored on a computing device 226 and used offline.
[0126] Regardless of the underlying implementation of the digital asset holder 202, the digital asset holder 202 stores and manages the private key 204, and the digital asset holder 202 is associated with a shared address 205 (e.g., a shared / public wallet address). The shared address 205 may represent the location of one or more digital assets associated with the user and stored on the blockchain network 210. In some examples, the digital asset holder 202 stores asset information 207 about the digital assets (such as a list of digital assets (e.g., a list of cryptocurrencies and NFTs associated with the user)) and information about each digital asset (e.g., a description of the NFT, the amount of the cryptocurrency, the type, etc.). The digital asset holder 202 may not actually store the digital assets (e.g., the digital assets are stored on the blockchain network 210), but the digital asset holder 202 stores the private key 204 and the shared address 205 of the location of the digital asset. In addition, the digital asset holder 202 includes functionality to authenticate (e.g., sign) the transaction 212. In some examples, digital asset holder 202 may authenticate a transaction by executing a smart contract and / or performing cryptographic operations using private key 204 .
[0127] The browser application 206a may define one or more APIs 238 that enable the browser application 206a to communicate with the digital asset holder 202 (e.g., when the web content 208 calls the object 236) to obtain information from the digital asset holder 202 and / or notify the digital asset holder of information about the transaction 212a. The API 238 may be a programming interface that allows the browser application 206a and the digital asset holder 202 to communicate with each other.
[0128] The browser application 206a may define one or more APIs 240 that enable the browser application 206a to communicate with the blockchain network 210. For example, the API 240 may be a programming interface that allows the browser application 206a and the blockchain network 210 to communicate with each other (e.g., to facilitate adding a transaction 212a on the blockchain network 210 and to receive notification that the transaction 212a has been successfully added).
[0129] In some examples, such as Figure 2C As shown, browser application 206a includes a JavaScript library 260 configured to implement API 238 and API 240. In some examples, such as Figure 2D As shown, browser application 206 a defines native API 262 , where native API 262 includes API 238 and API 240 .
[0130] Return to reference Figure 2A , the browser application 206a may detect whether the web content 208 has selected (or initialized or called) the object 236. In some examples, the user selecting a particular UI item on the web content 208 may cause the web content 208 to select the object 236. In some examples, the object 236 is associated with a transaction request to obtain a list of assets (e.g., query an account). In some examples, in response to the web content 208 selecting the object 236, the browser application 206a may send an asset request 242 to the digital asset holder 202 via the API 238. The asset request 242 may be a request for a list of assets associated with the digital asset holder 202. Then, the browser application 206a may receive an asset list 244 identifying the digital assets associated with the digital asset holder 202 via the API 238. The asset list 244 may identify one or more types of cryptocurrencies, and in some examples, the amount of the corresponding cryptocurrencies. In some examples, the browser application 206a may render a UI object that provides the asset list 244.
[0131] In some examples, object 236 is associated with creating a transaction 212a (e.g., a transmission transaction) using digital data stored on blockchain network 210. In response to web content 208 selecting object 236, browser application 206a may send transaction request 248 to digital asset holder 202 via API 238. Transaction request 248 may include details about transaction 212a to be created on blockchain network 210, such as a transmission party (e.g., shared address 205), a receiving party (e.g., a shared address of the receiving party), an amount, type of digital assets, etc. In some examples, transaction request 248 transmitted to digital asset holder 202 (or received by digital asset holder) is referred to as a request to authenticate transaction 212a (e.g., an authentication request). In response to transaction request 248, digital asset holder 202 may authenticate transaction request 248 using private key 204. For example, digital asset holder 202 may use private key 204 to perform a smart contract or cryptographic operation to authenticate (or sign) transaction request 248. In response, the browser application 206a may receive an authenticated transaction request 246 via the API 238 .
[0132] The browser application 206a may send the authenticated transaction request 246 to the node gateway 214 of the blockchain network 210 via the API 240, and the blockchain network 210 adds the transaction 212a to the blockchain network 210. In some examples, the node gateway 214 is a network node that connects two networks with different transmission protocols. The node gateway 214 may serve as an entry and exit point for information sent to / from the blockchain network 210. In some examples, the node gateway 214 may perform one or more operations on the authenticated transaction request 246. In some examples, the authenticated transaction request 246 includes authentication information indicating that the transaction is authenticated (e.g., signed). The node gateway 214 may determine whether the authentication is valid (e.g., not tampered with). In some examples, the node gateway 214 may determine that the authenticated transaction request 246 includes multiple elements, such as a source address, a target address, a digital asset type, an amount, etc.
[0133] After submitting the transaction 212a to the blockchain network 210, the browser application 206a receives a transaction response 222 from the blockchain network 210 via the API 240, wherein the transaction response 222 includes a transaction identifier 224 of the transaction 212a added to the blockchain network 210. In some examples, the authenticated transaction request 246 and the transaction response 222 are communicated between the browser application 206a and the blockchain network 210 using a JavaScript Object Notation (JSON) message 221. In response to the transaction response 222, the browser application 206a sends a notification 252 to the digital asset holder 202 via the API 238, wherein the notification 252 includes the transaction identifier 224.
[0134] Server computer 216 can be a computing device in the form of a variety of different devices (e.g., a standard server, a group of such servers, or a rack server system). In some examples, server computer 216 can be a single system that shares components such as a processor and memory. In some examples, server computer 216 can be multiple systems that do not share a processor and memory. Network 250 may include the Internet and / or other types of data networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, a satellite network, or other types of data networks. Network 250 may also include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to receive and / or send data within network 250. Network 250 may further include any number of hardwired and / or wireless connections.
[0135] The server computer 216 may include one or more processors, an operating system (not shown), and one or more memory devices formed in a substrate. The memory devices may represent any kind (or multiple kinds) of memory (e.g., RAM, flash memory, cache, disk, tape, etc.). In some examples (not shown), the memory devices may include external storage devices, such as memory that is physically remote from the server computer 216 but accessible to the server computer. The server computer 216 may include one or more modules or engines that represent specially programmed software.
[0136] Figure 3 A system 300 is illustrated having a browser application 306a connected to an extension 302a of the browser application 306a to process blockchain transactions on web content 308. In some examples, the web content 308 is rendered by the browser application 306a. The system 300 may be Figure 1 The system 100 and / or FIG. 2A to FIG. 2D The present invention is an example of a system 200 of the present invention and may include any of the details discussed with reference to those figures.
[0137] The browser application 306a can be executed by the computing device 326. In some examples, the browser application 306a is a web browser (e.g., a browser engine or search engine) installed on the operating system of the computing device 326. In some examples, the browser application 306a is the operating system of the computing device 326 (or forms part of the operating system). In some examples, the computing device 326 is a computer operating in a non-mobile environment (e.g., a laptop computer, a desktop computer, etc.). The browser application 306a can connect to any third-party digital asset holder, which is represented as an extension 302a. The extension 302a is a web extension of the browser application 306a. In some examples, the extension 302a is not owned or developed by the browser application 306a (e.g., a third-party digital asset holder). The extension 302a (if enabled) adds features or functionality to the browser application 306a. In some examples, the extension 302a can be based on HTML, CSS, and / or JavaScript. As Figure 3 As shown, the browser application 306a may define one or more APIs 338, which are used to implement communication between the browser application 306a and the extension 302a. The browser application 306a may define one or more APIs 340, which are used to implement communication between the browser application 306a and the blockchain network 310.
[0138] Extension 302a may include an extension background page 370 that stores a private key 304 for authenticating transactions to be added to blockchain network 310. In some examples, extension background page 370 is an HTML page. In some examples, extension background page 370 is a container (e.g., an HTML-based container). Extension background page 370 includes background scripts, e.g., instructions for managing one or more computer tasks associated with the added / enabled web functionality (e.g., retrieving private key 304 and authenticating blockchain transactions using private key 304).
[0139] Extension 302a can inject content script 372 into extension 302a. In some examples, content script 372 is a computer file. In some examples, content script 372 is a computer file that is executed in the context of a web page (as distinct from a background script of extension background page 370 that is part of extension 302a). Content script 372 defines one or more callback APIs that allow extension 302a to communicate with browser application 306a.
[0140] The browser application 306a defines one or more APIs 338 that enable the browser application 206a to communicate with the extension 302a (e.g., when the web content 308 calls an object to create a transaction on the blockchain network 310) to obtain information from the extension 302a and / or notify the extension of information about blockchain transactions. The API 338 can be a programming interface that allows the browser application 306a and the extension 302a to communicate with each other.
[0141] The browser application 306a may define one or more APIs 340 that enable the browser application 306a to communicate with the blockchain network 310. For example, the API 340 may be a programming interface that allows the browser application 306a and the blockchain network 310 to communicate with each other (e.g., to facilitate adding blockchain transactions on the blockchain network 310 and to receive notifications that blockchain transactions have been successfully added). In some examples, the browser application 306a includes a JavaScript library configured to implement the API 338 and the API 340. In some examples, the browser application 306a defines a native API, where the native API includes the API 338 and the API 340.
[0142] The browser application 306a may detect whether the web content 308 has selected (or initialized or called) an object for processing blockchain transactions. In some examples, a user selecting a particular UI item on the web content 308 may cause the web content to select an object. In some examples, the object is associated with a transaction request to obtain a list of assets (e.g., to query an account). In some examples, in response to the web content 308 selecting the object, the browser application 306a may send an asset request to the extension 302a via the API 338, and then receive an asset list identifying digital assets associated with the extension 302a via the API 338. In some examples, in response to receiving the asset request, the extension background page 370 obtains asset information about the user's digital assets stored on the blockchain network 310 (e.g., FIG. 2A to FIG. 2D The asset list may identify one or more types of cryptocurrencies, and in some examples, the amounts of the corresponding cryptocurrencies. In some examples, the browser application 306a may render a UI object that provides a list of assets.
[0143] In some examples, the object is related to creating a blockchain transaction (e.g., a transfer transaction) using digital data stored on the blockchain network 310. In response to the web content 308 selecting an object for creating a blockchain transaction, the browser application 306a may send a transaction request to the extension 302a via the API 338. The transaction request may include details about the blockchain transaction to be created on the blockchain network 310, such as the transferor, the recipient, the amount, type of digital assets, etc. In response to the transaction request, the extension background page 370 may authenticate the transaction request using the private key 304. For example, the extension background page 370 may perform a smart contract or cryptographic operation using the private key 304 to authenticate (or sign) the transaction request. In response, the browser application 306a may receive the authenticated transaction request via the API 338.
[0144] The browser application 306a may send the authenticated transaction request to the node gateway of the blockchain network 310 via the API 340, and the blockchain network 310 adds the blockchain transaction to the blockchain network 310. After submitting the blockchain transaction to the blockchain network 310, the browser application 306a receives a transaction response from the blockchain network 310 via the API 340, wherein the transaction response includes a transaction identifier of the blockchain transaction added to the blockchain network 310. In some examples, the authenticated transaction request and the transaction response are communicated between the browser application 306a and the blockchain network 310 using JSON messages. In response to the transaction response, the browser application 306a sends a notification to the extension 302a via the API 338, wherein the notification includes the transaction identifier. The extension background page 370 may update the user's asset information with the newly added blockchain transaction. In some examples, the browser application 306a also sends a notification to the website of the web content (e.g., via the API 338), wherein the notification indicates that the blockchain transaction has been successfully added to the blockchain network 310.
[0145] Figure 4 A system 400 is illustrated having a browser application 406a connected to a native application 402b to process blockchain transactions on web content 408. In some examples, the web content 408 is rendered by a web view controller of the native application 402b. In some examples, the web content 408 is rendered by the browser application 406a. The system 400 may be Figure 1 The system 100 and / or FIG. 2A to FIG. 2D The present invention is an example of a system 200 of the present invention and may include any of the details discussed with reference to those figures.
[0146] The browser application 406a can be executed by the mobile computing device 426. In some examples, the mobile computing device 426 includes a smartphone. In some examples, the mobile computing device 426 includes a tablet computer. In some examples, the browser application 406a is a web browser (e.g., a browser engine or search engine) installed on the mobile operating system of the computing device 326. The browser application 406a can connect to any third-party digital asset holder, which is represented as a native application 402b.
[0147] Native application 402b is a native mobile application configured to execute on a mobile operating system of mobile computing device 426. In some examples, native application 402b may include an Android application, a mobile iOS application, and / or a mobile Windows application. Native application 402b may be referred to as a crypto wallet. Native application 402b may store a private key 404 for authenticating blockchain transactions on blockchain network 410. In some examples, native application 402b may use a web view controller or a browser tab to render web content.
[0148] The browser application 406a defines one or more APIs 438 that enable the browser application 406a to communicate with the native application 402b (e.g., when the web content 408 calls an object to create a transaction on the blockchain network 410) to obtain information from the native application 402b and / or notify the native application of information about blockchain transactions. The API 438 can be a programming interface that allows the browser application 406a and the native application 402b to communicate with each other.
[0149] The browser application 406a may define one or more APIs 440 that enable the browser application 406a to communicate with the blockchain network 410. For example, the API 440 may be a programming interface that allows the browser application 406a and the blockchain network 410 to communicate with each other (e.g., to facilitate adding blockchain transactions on the blockchain network 410 and to receive notification that the blockchain transactions have been successfully added). In some examples, the browser application 406a includes a JavaScript library configured to implement the API 438 and the API 440. In some examples, the browser application 406a defines a native API, where the native API includes the API 438 and the API 440.
[0150] The browser application 406a may detect whether the web content 408 has selected (or initialized or called) an object for processing blockchain transactions. In some examples, a user selecting a particular UI item on the web content 408 may cause the web content 408 to select an object. In some examples, the object is associated with a transaction request to obtain a list of assets (e.g., to query an account). In some examples, in response to the web content 408 selecting the object, the browser application 406a may send an asset request to the native application 402b via the API 438, and then receive an asset list identifying digital assets associated with the native application 402b via the API 438. In some examples, in response to receiving the asset request, the native application 402b obtains asset information about the user's digital assets stored on the blockchain network 410 (e.g., FIG. 2A to FIG. 2D The asset list may identify one or more types of cryptocurrencies, and in some examples, the amounts of the corresponding cryptocurrencies. In some examples, the browser application 406a may render a UI object that provides a list of assets.
[0151] In some examples, the object is related to creating a blockchain transaction (e.g., a transfer transaction) using digital data stored on the blockchain network 410. In response to the web content 408 selecting an object for creating a blockchain transaction, the browser application 406a can send a transaction request to the native application 402b via the API 438. The transaction request may include details about the blockchain transaction to be created on the blockchain network 410, such as the transferor, the recipient, the amount, type of digital assets, etc. In response to the transaction request, the native application 402b can authenticate the transaction request using the private key 404. For example, the native application 402b can use the private key 404 to perform a smart contract or cryptographic operation to authenticate (or sign) the transaction request. In response, the browser application 406a can receive the authenticated transaction request via the API 438.
[0152] The browser application 406a may send the authenticated transaction request to the node gateway of the blockchain network 410 via the API 440, and the blockchain network 410 adds the blockchain transaction to the blockchain network 410. After submitting the blockchain transaction to the blockchain network 410, the browser application 406a receives a transaction response from the blockchain network 410 via the API 440, wherein the transaction response includes a transaction identifier of the blockchain transaction added to the blockchain network 410. In some examples, the authenticated transaction request and the transaction response are communicated between the browser application 406a and the blockchain network 410 using JSON messages. In response to the transaction response, the browser application 406a sends a notification to the native application 402b via the API 438, wherein the notification includes the transaction identifier. The native application 402b may update the user's asset information with the newly added blockchain transaction. In some examples, the browser application 406a also sends a notification to the website of the web content 408 (e.g., via the API 438), wherein the notification indicates that the blockchain transaction has been successfully added to the blockchain network 410.
[0153] Figure 5 A system 500 is illustrated having a browser application 506a connected to a server application 502c to process blockchain transactions on web content 508. In some examples, web content 508 is rendered by browser application 506a. System 500 may be Figure 1 The system 100 and / or FIG. 2A to FIG. 2D The present invention is an example of a system 200 of the present invention and may include any of the details discussed with reference to those figures.
[0154] The browser application 506a can be executed by the computing device 526. In some examples, the computing device 526 includes a laptop computer. In some examples, the computing device 526 includes a desktop computer. However, the computing device 526 can be any type of computing device, such as a smartphone, a tablet computer, or a wearable device. The browser application 506a can connect to any third-party digital asset holder, which is represented as a server application 502c. The server application 502c can be an application executed on one or more server computers. In some examples, the server application 502c is a cloud application. In some examples, the server application 502c is a web application. The server application 502c can be a server computer stored on a remote server (e.g., FIG. 2A to FIG. 2D The server application 502c is an application program that is hosted on a server computer 216 of the server and delivered over a network via a browser application 506a (e.g., a browser tab). In some examples, the server application 502c is a progressive web application that can be stored (at least partially) on the computing device 526 and used offline.
[0155] The browser application 506a defines one or more APIs 538 that enable the browser application 506a to communicate with the server application 502c (e.g., when the web content 508 calls an object to create a transaction on the blockchain network 510) to obtain information from the server application 502c and / or notify the server application of information about the blockchain transaction. The API 538 can be a programming interface that allows the browser application 506a and the server application 502c to communicate with each other.
[0156] The browser application 506a may define one or more APIs 540 that enable the browser application 506a to communicate with the blockchain network 510. For example, the API 540 may be a programming interface that allows the browser application 506a and the blockchain network 510 to communicate with each other (e.g., to facilitate adding blockchain transactions on the blockchain network 510 and to receive notifications that blockchain transactions have been successfully added). In some examples, the browser application 506a includes a JavaScript library configured to implement the API 538 and the API 540. In some examples, the browser application 506a defines a native API, where the native API includes the API 538 and the API 540.
[0157] The browser application 506a may detect whether the web content 508 has selected (or initialized or called) an object for processing blockchain transactions. In some examples, a user selecting a particular UI item on the web content 508 may cause the web content 508 to select an object. In some examples, the object is associated with a transaction request to obtain a list of assets (e.g., to query an account). In some examples, in response to the web content 508 selecting the object, the browser application 506a may send an asset request to the server application 502c via the API 538, and then receive an asset list identifying digital assets associated with the server application 502c via the API 538. In some examples, in response to receiving the asset request, the server application 502c obtains asset information about the user's digital assets stored on the blockchain network 510 (e.g., FIG. 2A to FIG. 2D The asset list may identify one or more types of cryptocurrencies, and in some examples, the amounts of the corresponding cryptocurrencies. In some examples, the browser application 506a may render a UI object that provides a list of assets.
[0158] In some examples, the object is related to creating a blockchain transaction (e.g., a transfer transaction) using digital data stored on the blockchain network 510. In response to the web content 508 selecting an object for creating a blockchain transaction, the browser application 506a can send a transaction request to the server application 502c via the API 538. The transaction request can include details about the blockchain transaction to be created on the blockchain network 510, such as the transferor, the recipient, the amount, type of digital assets, etc. In response to the transaction request, the server application 502c can authenticate the transaction request using the private key 504. For example, the server application 502c can perform a smart contract or cryptographic operation using the private key 504 to authenticate (or sign) the transaction request. In response, the browser application 506a can receive the authenticated transaction request via the API 538.
[0159] The browser application 506a may send the authenticated transaction request to the node gateway of the blockchain network 510 via the API 540, and the blockchain network 510 adds the blockchain transaction to the blockchain network 510. After submitting the blockchain transaction to the blockchain network 510, the browser application 506a receives a transaction response from the blockchain network 510 via the API 540, wherein the transaction response includes a transaction identifier of the blockchain transaction added to the blockchain network 510. In some examples, the authenticated transaction request and the transaction response are communicated between the browser application 506a and the blockchain network 510 using JSON messages. In response to the transaction response, the browser application 506a sends a notification to the server application 502c via the API 538, wherein the notification includes the transaction identifier. The server application 502c may update the user's asset information with the newly added blockchain transaction. In some examples, the browser application 506a also sends a notification to the website of the web content 508 (e.g., via the API 538), wherein the notification indicates that the blockchain transaction has been successfully added to the blockchain network 510.
[0160] Figure 6 A system 600 is illustrated having a browser application 506a connected to a native application 602b to process blockchain transactions on web content 608 rendered by a browser tab 666. In some examples, the browser tab 666 is a custom browser tab displayed by the native application 602b. The system 600 may be Figure 1 The system 100 and / or FIG. 2A to FIG. 2D The present invention is an example of a system 200 of the present invention and may include any of the details discussed with reference to those figures.
[0161] A custom browser tab is a browser tab associated with a browser application 606a, but rendered within the context of a native application 602b. For example, a native application 602b may display application content within the UI of the native application 602b, where the application content may include a link to web content 608. When the link to the web content 608 is selected, the web content 608 may be rendered in a browser tab 666 (e.g., a custom browser tab) within the native application 602b. In contrast, with a non-customized tab, when a link to the web content 608 is selected, a separate browser tab is rendered on top of the UI of the native application.
[0162] The browser application 606a can be executed by the mobile computing device 626. In some examples, the mobile computing device 626 includes a smartphone. In some examples, the mobile computing device 626 includes a tablet computer. In some examples, the browser application 606a is a web browser (e.g., a browser engine or a search engine) installed on a mobile operating system of the mobile computing device 626.
[0163] The browser tab 666 may include one or more selectable items associated with the action of the browser application 606a and one or more selectable items associated with the action of the underlying native application 602b. For example, if the native application 602b is a social media application, a link to the article may be displayed in a message shown on the user's timeline. If the user selects a link to the article, the browser tab 666 is displayed within the context of the social media application, where the browser tab 666 displays the article. The browser tab 666 may include selectable items associated with the action of the browser application 606a (e.g., controls on a navigation bar and / or toolbar). However, the browser tab 666 may include one or more selectable items associated with an action taken using a social media application (e.g., sharing an article on a platform) (e.g., a customized activity button or control). Although the above examples use social media applications, the underlying native application 602b may cover a wide variety of applications, including video sharing applications (and other types of applications).
[0164] In some examples, the browser tab 666 includes customized display properties of the UI of the browser tab 666 (e.g., setting a color (e.g., tint) for the background of a navigation panel and / or toolbar section). For example, the items of a navigation panel (e.g., with forward and / or back navigation controls) and a toolbar are typically standard across browser tabs rendered for non-customized browser tabs. However, an application developer may change one or more aspects of the navigation panel and / or toolbar to customize the tab so that it corresponds to an underlying native application 602b.
[0165] In some examples, the native application 602b includes or is associated with a digital asset holder, for example, to store and manage a private key 604 used to authenticate (e.g., sign) a blockchain transaction. In some examples, the native application 602b includes a built-in (e.g., native) digital asset holder. In other words, the native application 602b may include a subroutine that manages the private key 604 and can use the private key 604 to authenticate a blockchain transaction. In some examples, the browser tab 666 may include an object (e.g., object 236) that enables the creation of a blockchain transaction. In some examples, the browser tab 666 itself exposes an object that enables the creation of a blockchain transaction.
[0166] The browser application 606a defines one or more APIs 638 that enable the browser application 606a to communicate with the native application 602b (e.g., when the browser tab 666 calls an object to create a transaction on the blockchain network 610) to obtain information from the native application 602b and / or notify the native application of information about blockchain transactions. The API 638 can be a programming interface that allows the browser application 606a and the native application 602b to communicate with each other.
[0167] The browser application 606a may define one or more APIs 640 that enable the browser application 606a to communicate with the blockchain network 610. For example, the API 640 may be a programming interface that allows the browser application 406a and the blockchain network 610 to communicate with each other (e.g., to facilitate adding blockchain transactions on the blockchain network 610 and to receive notification that the blockchain transactions have been successfully added). In some examples, the browser application 606a includes a JavaScript library configured to implement the API 638 and the API 640. In some examples, the browser application 606a defines a native API, where the native API includes the API 638 and the API 640.
[0168] The browser application 606a can detect whether the browser tab 666 (e.g., a custom browser tab) has selected (or initialized or called) an object for processing blockchain transactions. In some examples, a user selecting a particular UI item on the browser tab 666 can cause the browser tab 666 to select the object. In some examples, the object is associated with a transaction request to obtain a list of assets (e.g., to query an account). In some examples, in response to the browser tab 666 selecting the object, the browser application 606a can send an asset request to the native application 602b via the API 638, and then receive an asset list identifying digital assets associated with the native application 602b via the API 638. In some examples, in response to receiving the asset request, the native application 602b obtains asset information about the user's digital assets stored on the blockchain network 610 (e.g., FIG. 2A to FIG. 2D The asset list may identify one or more types of cryptocurrencies, and in some examples, the amounts of the corresponding cryptocurrencies. In some examples, the browser application 606a may render a UI object that provides a list of assets.
[0169] In some examples, the object is related to creating a blockchain transaction (e.g., a transfer transaction) using digital data stored on the blockchain network 610. In response to the browser tab 666 selecting an object for creating a blockchain transaction, the browser application 606a may send a transaction request to the native application 602b via the API 638. The transaction request may include details about the blockchain transaction to be created on the blockchain network 610, such as the transferor, the recipient, the amount, type of digital assets, etc. In response to the transaction request, the native application 602b may authenticate the transaction request using the private key 604. For example, the native application 602b may perform a smart contract or cryptographic operation using the private key 404 to authenticate (or sign) the transaction request. In response, the browser application 606a may receive the authenticated transaction request via the API 638.
[0170] The browser application 606a may send the authenticated transaction request to the node gateway of the blockchain network 610 via the API 640, and the blockchain network 610 adds the blockchain transaction to the blockchain network 610. After submitting the blockchain transaction to the blockchain network 610, the browser application 606a receives a transaction response from the blockchain network 610 via the API 640, wherein the transaction response includes a transaction identifier of the blockchain transaction added to the blockchain network 610. In some examples, the authenticated transaction request and the transaction response are communicated between the browser application 606a and the blockchain network 610 using JSON messages. In response to the transaction response, the browser application 606a sends a notification to the native application 602b via the API 638, wherein the notification includes the transaction identifier. The native application 602b may update the user's asset information with the newly added blockchain transaction. In some examples, the browser application 606a also sends a notification to the website of the web content 608 (e.g., via the API 638), wherein the notification indicates that the blockchain transaction has been successfully added to the blockchain network 610.
[0171] FIG. 7A to FIG. 7D Illustrated are example user interfaces for connecting a browser application to an application that includes a private key for implementing a blockchain transaction in accordance with various aspects. FIG. 7A to FIG. 7D The user interface may be displayed according to any of the systems discussed with reference to the previous figures.
[0172] refer to Fig. 7A , web content 708 may be displayed on a computing device. Web content 708 may be displayed from an application executing on a computing device. In some examples, web content 708 may be displayed via a browser application. In some examples, web content 708 is displayed via a browser tab. In some examples, web content 708 is displayed via a native application. In some examples, web content 708 includes a user selectable item 711 to create a transaction on a blockchain network.
[0173] In response to selection of user selectable item 711, reference Figure 7B , the application (e.g., a browser application or a non-browser application) may render a UI object 707 that allows a user to connect a particular digital asset holder to the browser application. In some examples, the browser application may detect web content 708 and select (e.g., retrieve, initialize, etc.) an object to create a blockchain transaction, such as when a user selects Fig. 7AWhen the user can select item 711. In some examples, the browser application renders UI object 707. UI object 707 can identify one or more digital asset holders to be selected. In some examples, UI object 707 can display a connection control 713 for permitting the browser application to connect to a specific digital asset holder (e.g., digital asset holder A). In some examples, UI object 707 can display a connection control 715 for selecting other digital asset holders not identified on UI object 707. For example, selection of connection control 715 can render additional UI objects for selecting other digital asset holders.
[0174] In response to selection of the connection control 713, reference Figure 7C , the browser application may render a UI object 717 that displays an asset list 744 associated with the selected digital asset holder. In some examples, the asset list 744 may identify the user's digital assets associated with the selected digital asset holder stored on the blockchain network (e.g., digital asset A, digital asset B, digital asset C, etc.). For example, the asset list 744 may identify the type of cryptocurrency managed by the selected digital asset holder.
[0175] For example, the browser application may send an asset request to the digital asset holder via the first API, and then receive an asset list identifying digital assets associated with the selected digital asset holder via the first API. In some examples, in response to receiving the asset request, the digital asset holder obtains asset information about the user's digital assets stored on the blockchain network (e.g., FIG. 2A to FIG. 2D The asset list 744 may identify one or more types of cryptocurrencies, and in some examples, the amounts of the corresponding cryptocurrencies. In some examples, the browser application may render a UI object 717 that provides the asset list 744.
[0176] In some examples, in response to the selection of a particular digital asset (e.g., digital asset A), the browser application may continue to process the blockchain transaction so that the blockchain transaction is submitted to the blockchain network. For example, the browser application may send a transaction request to the digital asset holder via the first API. The transaction request may include details about the blockchain transaction to be created on the blockchain network, such as the sender, the receiver, the amount, the type of digital asset, etc. In response to the transaction request, the digital asset holder may authenticate the transaction request using a private key. For example, the digital asset holder may use a private key to perform a smart contract or cryptographic operation to authenticate (or sign) the transaction request. In response, the browser application may receive an authenticated transaction request via the first API.
[0177] The browser application may send the authenticated transaction request to the node gateway of the blockchain network via the second API, and the blockchain network adds the blockchain transaction to the blockchain network. After submitting the blockchain transaction to the blockchain network, the browser application receives a transaction response from the blockchain network via the second API, wherein the transaction response includes a transaction identifier of the blockchain transaction added to the blockchain network. In response to the transaction response, the browser application sends a notification to the digital asset holder via the first API, wherein the notification includes the transaction identifier. The crypto wallet may update the user's asset information with the newly added blockchain transaction. In some examples, the browser application also sends a notification to the website of the web content, wherein the notification indicates that the blockchain transaction has been successfully added to the blockchain network. In some examples, reference Fig.7D , the browser application renders a UI object 719 indicating that the transaction is complete.
[0178] FIG. 8A to FIG. 8F An example user interface for connecting a browser application to an application that includes a private key for implementing a blockchain transaction is illustrated in accordance with various aspects. In some examples, FIG. 8A to FIG. 8F The user interface is related to processing crypto payments for subscription access rights. FIG. 8A to FIG. 8F The user interface may be displayed according to any of the systems discussed with reference to the previous figures.
[0179] In some examples, digital asset holders are implemented by a server application. For example, a server application may manage access to online content (e.g., web content) via subscriptions. In some examples, a server application may include a digital asset holder that identifies one or more tokens (e.g., creator tokens) stored on a blockchain network. In some examples, subscription access rights (e.g., digital rights) may be granted to a particular user in exchange for one or more tokens. In some examples, the tokens are NFTs.
[0180] refer to Fig. 8A , displaying a portion of web content (e.g., an article from a website (xyz.com)). In some examples, the browser application can render a portion of the web content (e.g., when a user selects a link to the article). Upon further selection of the article, reference Figure 8B , the browser application may render a UI object that allows the user to subscribe using a browser account (e.g., option 1, option 2), and / or because the user is already a subscriber, may provide a selectable item 813 for obtaining access to details of the article. In response to selection of selectable item 813, reference is made to Figure 8C, the browser application may render a UI object for authenticating subscription access using one or more accounts (e.g., browser accounts, social media accounts, etc.). The UI object may also provide a selectable item 815 for obtaining access to the article using a digital asset holder. In response to selecting selectable item 815, reference Fig.8D , the browser application can render a UI object that allows the browser application to connect with a specific digital asset holder. Fig.8D The UI object may include a selectable item 817 that enables a user to select a particular digital asset holder (eg, digital asset holder #1).
[0181] In response to selecting selectable item 817, the browser application may connect to the selected digital asset holder to use the token (e.g., NFT) to obtain access to web content (e.g., article). In some examples, the browser application may render a UI object 819 that notifies the user that the browser application is connecting to the digital asset holder while adding the transaction to the blockchain network.
[0182] In some examples, in response to selection of selectable item 817, the browser application transmits a transaction request (e.g., FIG. 2A to FIG. 2D The server application receives the transaction request, retrieves the user's private key, and authenticates the transaction request. The browser application receives the authenticated transaction request (e.g., FIG. 2A to FIG. 2D The browser application then communicates with the blockchain network via one or more second APIs to send the authenticated transaction request and receive a transaction response (e.g., FIG. 2A to FIG. 2D The browser application transmits a notification to the server application via the first API (e.g., FIG. 2A to FIG. 2D In some examples, reference Figure 8F , the browser application renders a UI object 821, which indicates that the content is unlocked based on a token payment.
[0183] Fig. 9 900 is a flowchart depicting example operations of connecting an application with a digital asset holder to process blockchain transactions according to one aspect. In some examples, the application includes a browser application. In some examples, the application includes a non-browser based application. In some examples, the digital asset holder includes an extension of the browser application. In some examples, the digital asset holder includes a native application. In some examples, the digital asset holder includes a server application.
[0184] Although flowchart 900 is about Figure 1Although the flowchart 900 is explained with reference to the system 100 of FIG. 1 , it can be applied to any of the embodiments discussed herein. Fig. 9 Flowchart 900 illustrates the operation in sequential order, but it should be understood that this is merely an example and may include additional or alternative operations. Further, Fig. 9 The operations and related operations may be performed in an order different from that shown, or in a parallel or overlapping manner.
[0185] Operation 902 includes receiving, via an application programming interface of application 106, from a digital asset holder 102 that manages a private key for accessing data on blockchain network 110, an authenticated transaction request to add transaction 112 to the blockchain network. In some examples, the application is a browser application. In some examples, digital asset holder 102 is an extension of the browser application. In some examples, digital asset holder 102 is a native application. In some examples, digital asset holder 102 is a server application. In some examples, application 106 and digital asset holder 102 communicate with each other via at least one first application programming interface.
[0186] Operation 904 includes sending, by application 106, an authenticated transaction request to blockchain network 110. In some examples, the authenticated transaction request is sent to blockchain network 110 via at least one second application programming interface that defines an interface between application 106 and blockchain network 110. Application 106 and blockchain network 110 may communicate with each other via JSON messages. Operation 906 includes receiving, by application 106, a transaction response from blockchain network 110, the transaction response including a transaction identifier of transaction 112 added to blockchain network 110. For example, application 106 may receive a result that the transaction was added to blockchain network 110. Operation 908 includes sending a notification message to digital asset holder 102 via an application programming interface of application 106, the notification message including the transaction identifier. In some examples, the notification message is sent to a website that provides web content (e.g., receiving a transferred digital asset).
[0187] In some examples, the operations include: rendering web content having a user-selectable option to create a transaction on a blockchain network. In some examples, the operations include: in response to selecting the user-selectable option, sending a request (e.g., an authentication request) to authenticate the transaction using a private key. In some examples, the request to authenticate the transaction is FIG. 2A to FIG. 2DThe operation may include receiving an authenticated transaction request in response to a request to authenticate a transaction using a private key. In some examples, the operation includes sending an asset request to a digital asset holder and receiving an asset list from the digital asset holder in response to selecting an optional item, wherein the asset list may identify one or more digital assets stored on a blockchain network. In some examples, the operation includes obtaining a first application programming interface and a second application programming interface from a storage device associated with the application.
[0188] According to some aspects, the method (e.g., operation) may include one or more of the following features (or any combination thereof). The method includes: rendering, by an application, web content having a user selectable option to create a transaction on a blockchain network; and in response to receiving a selection of the user selectable option, sending a request to a digital asset holder to authenticate the transaction. The method may include: rendering, by an application, web content having a user selectable option to create a transaction on a blockchain network; in response to receiving a selection of the user selectable option, sending an asset request to a digital asset holder; and receiving an asset list from the digital asset holder, the asset list identifying one or more digital assets stored on the blockchain network. The method may include: rendering, by an application, a user selectable option to connect to a digital asset holder who manages a private key for accessing data on the blockchain network. The application programming interface is a first application programming interface, wherein the authenticated transaction request is sent to the blockchain network via a second application programming interface, the second application programming interface being configured to enable communication between the application and the blockchain network. The method may include: obtaining the first application programming interface and the second application programming interface from a storage device associated with the application. The method may include: sending a JavaScript object notation message to a node gateway of a blockchain network, the JavaScript object notation message including an authenticated transaction request. The application may include a browser application. The digital asset holder may include an extension of the browser application. The digital asset holder may include a native application. The digital asset holder may include a server application.
[0189] According to one aspect, a device includes: at least one processor; and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause one processor to: receive, via an application programming interface of a browser application, an authenticated transaction request to add a transaction to a blockchain network from a digital asset holder who manages a private key for accessing data on the blockchain network; send, by the browser application, the authenticated transaction request to the blockchain network; receive, by the browser application, a transaction response from the blockchain network, the transaction response including a transaction identifier of the transaction added to the blockchain network; and send, via the application programming interface of the browser application, a notification message to the digital asset holder, the notification message including the transaction identifier.
[0190] According to some aspects, the apparatus may include one or more of the following features (or any combination thereof). The executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to: render web content by a browser application, the web content having a user selectable option for creating a transaction on a blockchain network; and in response to receiving a selection of the user selectable option, send a request to a digital asset holder to authenticate the transaction, wherein the digital asset holder is configured to authenticate the transaction using a private key. The executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to: render a user selectable option by a browser application, the user selectable option for connecting to a digital asset holder that manages a private key for accessing data on the blockchain network. The application programming interface is a first application programming interface, wherein the authenticated transaction request is sent to the blockchain network via a second application programming interface, the second application programming interface being configured to enable communication between the browser application and the blockchain network, wherein the executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to: obtain the first application programming interface and the second application programming interface from a storage device associated with the browser application.
[0191] According to one aspect, a non-transitory computer-readable medium stores executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations including: rendering web content having a user-selectable option to create a transaction on a blockchain network; in response to receiving a selection of the user-selectable option, receiving, by a browser application, an authenticated transaction request to add a transaction to the blockchain network from a digital asset holder that manages a private key to access data on the blockchain network; sending, by the browser application, the authenticated transaction request to the blockchain network; receiving, by the browser application, a transaction response from the blockchain network, the transaction response including a transaction identifier of the transaction added to the blockchain network; and sending, by the browser application, a notification message to the digital asset holder, the notification message including the transaction identifier.
[0192] According to some aspects, the operation may include one or more of the following features (or any combination thereof). The operation may include: sending an asset request to a digital asset holder by a browser application; receiving an asset list from a digital asset holder by the browser application, the asset list identifying a plurality of digital assets stored on a blockchain network; displaying a user interface object, the user interface object including a plurality of digital assets; and in response to a selection of one of the plurality of digital assets, sending a request to the digital asset holder to authenticate a transaction. The operation may include: rendering a user selectable item by the browser application, the user selectable item being used to connect to a digital asset holder that manages a private key for accessing data on the blockchain network. The operation may include: communicating between the browser application and the digital asset holder via a first application programming interface; and communicating between the browser application and the blockchain network via a second application programming interface. The operation may include: obtaining a first application programming interface and a second application programming interface from a storage device associated with the browser application.
[0193] Fig. 10A and Fig. 10B A system 1000 is illustrated for customizing a user interface 1058 of a browser application 1006a using digital data 1056 of a token 1054 stored on a blockchain network 1010 according to one aspect. The system 1000 may be a reference Figures 1 to 9The system 1000 may be an example of a system discussed herein, and may include any of the details discussed herein. In some examples, a user may use the browser application 1006a to customize one or more aspects of a browser tab 1060 using digital data 1056. In some examples, the system 1000 may customize (e.g., change) browser settings of the browser application 1006a based on one or more tokens 1054 stored on the blockchain network 1010 and associated with the user. In some examples, connecting a digital rights holder to the browser application 1006a may cause one or more browser settings of the browser application 1006a to be adjusted.
[0194] The computing device 1026 executes the browser application 1006a. The computing device 1026 can be any type of computing device that includes one or more processors (e.g., FIG. 2A to FIG. 2D processor 228), one or more memory devices (e.g., FIG. 2A to FIG. 2D Memory device 230), a display (e.g., FIG. 2A to FIG. 2D 234) and an operating system (e.g., FIG. 2A to FIG. 2D 232 of the operating system). In some examples, computing device 1026 is a laptop computer. In some examples, computing device 1026 is a desktop computer. In some examples, computing device 1026 is a tablet computer. In some examples, computing device 1026 is a smartphone. In some examples, computing device 1026 is a wearable device.
[0195] The browser application 1006a may be a web browser configured to access information on the Internet. In some examples, the browser application 1006a is an application separate from the operating system of the computing device 1026, where the browser application 1006a may be installed on (and executed by) the operating system. In some examples, the browser application 1006a is (or is included as part of) the operating system of the device. The browser application 1006a may launch one or more browser tabs in the context of one or more browser windows on the display of the computing device 1026. In some examples, the browser application 1006a may launch one or more browser tabs without reference to a browser window.
[0196] Token 1054 may include a non-fungible token (NFT). Token 1054 may be a record (e.g., a document with a hash value) stored on blockchain network 1010. In some examples, token 1054 stored on blockchain network 1010 includes information about token 1054. The token may include a file name, a title, the current owner of the token, and / or its transaction activity history. In some examples, token 1054 includes digital data 1056. In some examples, token 1054 does not include digital data 1056. In some examples, token 1054 includes a storage location 1065 that identifies the location of digital data 1056. In some examples, storage location 1065 is a web resource (e.g., a uniform resource locator (URL)) pointing to the location of digital data 1056. In some examples, storage location 1065 includes a hash value pointing to a file system or another blockchain transaction. Digital data 1056 may represent underlying image, audio, and / or video data (e.g., JPEG, GIF, MP4 files, etc.) uniquely identified by token 1054. Some of the categories for token 1054 include art, collectibles, utility for games or apps, and early access for whitelisting and launch.
[0197] A user may acquire a token 1054 (e.g., from an online marketplace or minting new tokens 1054) and "store" the token 1054 in a digital asset holder, such as an application (or program) that stores and manages the user's private key used to authenticate transactions on the blockchain network 1010. In some examples, the digital asset holder may refer to a crypto wallet. Figures 1 to 9 Examples of digital asset holders are described (e.g., digital asset holder 102, digital asset holder 202, extension 302a, native application 402b, server application 502c, etc.), and the digital asset holder may include any of the details discussed with reference to those figures.
[0198] Digital data 1056 may be codified (e.g., minted) on blockchain network 1010, resulting in a unique token (e.g., token 1054) for representing ownership of a digital asset. Some categories of tokens 1054 (e.g., NFTs) include artwork, collectibles, utility for games or applications, and early access to whitelists and launches. Digital asset holders use private keys to authenticate blockchain transactions (e.g., transfers, sales, purchases of tokens 1054) involving tokens 1054. In some examples, because blockchain network 1010 is public, tokens 1054 are accessible using identifiers 1052, such as token locations 1063 (e.g., NFT identifiers) that identify the location of a particular token 1054 on blockchain network 1010 and / or holder addresses 1061 (e.g., public addresses, wallet addresses) of digital asset holders. In some examples, identifier 1052 includes a storage location 1065 pointing to the location of digital data 1056 of token 1054. In some examples, a particular token 1054 (or multiple tokens 1054) may be identified by a set identifier that identifies a set of tokens 1054 (e.g., created by a particular creator or multiple creators).
[0199] refer to Fig. 10A , the digital data 1056 may be displayed as a background image of a browser tab 1060 of the browser application 1006a. For example, a user may adjust the browser settings 1055 to change one or more display aspects of the browser application 1006a and / or the browser tab 1060. In some examples, the browser settings 1055 may enable the user to select a particular token 1054, one or more tokens 1054 associated with the user's digital asset holders, or one or more tokens 1054 associated with a collection so that the digital data 1056 of the token 1054 is displayed as the background image of the browser tab 1060.
[0200] The browser tab 1060 may render a new tab page in response to a user opening a new browser tab. The user opening a new browser tab may be interpreted by the browser application 1006a as a request to render a browser tab. The new tab page may be customized using the digital data 1056 of one or more tokens 1054 stored on the blockchain network 1010. For example, the digital data 1056 of the token 1054 may be displayed as a background image for the new tab page. In some examples, a portion of the user interface 1058 of the browser tab 1060 may use the digital data 1056 as a background image. In some examples, the browser tab 1060 includes a portion 1051 having a search entry field 1053 for searching web content on the Internet. In some examples, portion 1051 includes the digital data 1056 of the token 1054, wherein the search entry field 1053 is in the foreground and the digital data 1056 is in the background. In some examples, each time a user launches a new browser tab 1060 , the browser tab 1060 displays digital data 1056 for a different token 1054 .
[0201] The browser application 1006a may include or may be connected to the user's digital asset holder, where the user's digital asset holder identifies one or more tokens 1054. The browser tab 1060 may display digital data 1056 of the token 1054 identified by the user's digital asset holder as a background image. In some examples, each time the user launches a new browser tab 1060, a different token 1054 is selected to be used as the background image (e.g., randomly playing the user's NFTs "stored" in the user's digital asset holder).
[0202] In some examples, the digital data 1056 of the token 1054 is displayed in the browser tab 1060 as a profile image 1066. The user may have an account associated with the browser application 1006a, and the user may select a particular image to be used as the profile image 1066. The profile image 1066 is displayed in an area of the browser tab 1060. The user may adjust the browser settings 1055 to identify a particular token 1054 to be used as the profile image 1066. The account associated with the browser application 1006a may be associated with other services (such as an email application, a video conferencing application, a storage application). When the account is identified on those other services, a profile image 1066 with the digital data 1056 of the token 1054 may also be displayed.
[0203] In some examples, the new tab page rendered by the browser tab 1060 includes one or more UI modules 1070. The UI module 1070 can be a variety of UI objects displayed on the new tab page, which can include controls or links to applications, web content, or application content from a specific application. In some examples, the UI module 1070 can provide content from the underlying web application. For example, the weather module can provide information about the weather, the video sharing module can provide a selection of videos, the social media module can provide information from the user's timeline, etc. In some examples, at least one of the UI modules 1070 is configured to display digital data 1056 of one or more tokens 1054. In some examples, the UI module 1070 is configured to shuffle (e.g., sequentially or randomly display) a user's NFTs (e.g., NFTs identified in the user's digital asset holders, NFTs associated with a specific digital asset holder, or a portion of a collection of NFTs, etc.). For example, if the user's digital asset holder identifies a first token and a second token, the UI module 1070 may display the digital data 1056 of the first token for a first predetermined period of time and the digital data 1056 of the second token for a second predetermined period of time. In some examples, the UI module 1070 may display the digital data 1056 of multiple tokens 1054 simultaneously.
[0204] In some examples, the browser application 1006a may customize the color scheme of the user interface 1058 of the browser application 1006a based on the color scheme associated with the digital data 1056 of the token 1054. For example, a user may select a particular token 1054 from a list of tokens 1054 associated with, for example, an identifier 1052 (such as a digital asset holder of the user). The browser application 1006a may change the color scheme (or hue) of one or more portions of the browser tab 1060 to correspond to the color scheme of the selected token 1054. The portions of the browser tab 1060 may include a navigation panel (e.g., with browser navigation controls such as forward or back), a toolbar with controls for actions of the browser application 1106a (or controls of a native application), a menu, menu items, and / or an address bar identifying a URL of a website. In some examples, the browser application 1006a may customize the theme (e.g., border and / or background) of the user interface 1058 to correspond to the theme (e.g., color scheme) associated with the digital data 1056 of the token 1054.
[0205] The browser application 1006a may obtain an identifier 1052 associated with a token 1054 stored on the blockchain network 1010. In some examples, the identifier 1052 identifies the location of one or more tokens 1054 on the blockchain network 1010 and / or the storage device 1016 and / or digital data 1056 of the one or more tokens 1054. In some examples, the identifier 1052 includes one or more addresses on the blockchain network 1010. In some examples, the identifier 1052 includes one or more web resources (e.g., URLs). In some examples, the identifier 1052 includes a hash value. In some examples, the browser application 1006a stores the identifier 1052, and the browser application 1006a retrieves the identifier 1052 from the memory device. In some examples, the browser application 1006a may obtain the identifier 1052 in response to the browser application 1006a connecting to a digital asset holder. In some examples, the digital asset holder is a third-party digital asset holder, and the browser application 1006a may use Figures 1 to 9 1052. In some examples, the browser application 1006a includes a digital asset holder (e.g., a native or built-in digital asset holder), and the browser application 1006a can obtain the identifier 1052 from the digital asset holder. In some examples, the browser tab 1060 can render a UI object that enables a user to enter the identifier 1052. In some examples, the browser application 1006a can obtain the identifier 1052 from web content and / or application content displayed on the computing device 1026. In some examples, the browser application 1006a can obtain the identifier 1052 in response to a user selection.
[0206] In some examples, the identifier 1052 includes a holder address 1061. The holder address 1061 may be a shared (or public) address associated with the digital asset holder. In some examples, the holder address 1061 may be referred to as a wallet address. In some examples, the public address identifies a location 1045 on the blockchain network 1010 where a token 1054 associated with the digital asset holder is stored. In some examples, the identifier 1052 includes a token location 1063 that identifies the location of a specific token 1054 on the blockchain network 1010. In some examples, the identifier 1052 includes a storage location 1065 that identifies the location of the digital data 1056 of the token 1054. In some examples, the storage location 1065 includes a resource locator. In some examples, the storage location 1065 includes a uniform resource locator (URL). In some examples, the storage location 1065 is a hash value.
[0207] The digital data 1056 of the token 1054 may be stored in a location on the blockchain network 1010 that is separate from the token 1054. In some examples, the digital data 1056 is stored on one or more storage devices 1016. The token 1054 on the blockchain network 1010 may store a storage location 1065 that points to the location of the digital data 1056 on the storage device 1016. In some examples, the storage device 1016 includes a server computer. In some examples, the storage device 1016 includes a file system. In some examples, the storage device 1016 includes another blockchain network. In some examples, the token 1054 stores the digital data 1056.
[0208] The browser application 1006a may use the holder address 1061, the token location 1063, and / or the storage location 1065 to obtain the digital data 1056. In some examples, the browser application 1006a may use the holder address 1061 to query the blockchain network 1010 to identify whether the digital asset holder is associated with any token 1054. The holder address 1061 may be the address of the digital asset holder of the user. In some examples, the holder address 1061 may be the address of the digital asset holder of an entity other than the user. The holder address 1061 may point to the location 1045 where the token 1054 of the digital asset holder is stored. If the digital data 1056 is stored in the token 1054, the browser application 1006a may retrieve the digital data 1056 from the blockchain network 1010. If the digital data 1056 is stored in the storage device 1016, the browser application 1006a may retrieve the storage location 1065 from any token 1054 associated with the digital asset holder. The browser application 1006a may use the storage location 1065 (eg, URL, hash value) to retrieve the digital data 1056 from the storage device 1016 .
[0209] In some examples, the browser application 1006a may use the token location 1063 to query the blockchain network 1010 to obtain the digital data 1056. The token location 1063 may represent the address of a specific token 1054 stored on the blockchain network 1010. If the digital data 1056 is stored in the token 1054, the browser application 1006a may retrieve the digital data 1056 from the blockchain network 1010. If the digital data 1056 is stored on the storage device 1016, the browser application 1006a may query the blockchain network 1010 to retrieve the storage location 1065, and use the storage location 1065 to retrieve the digital data 1056.
[0210] In some examples, browser application 1006a can use storage location 1065 to retrieve digital data 1056. For example, storage location 1065 can be an address or locator pointing to the location of digital data 1056 on storage device 1016, and browser application 1006a can use storage location 1065 to retrieve digital data 1056.
[0211] Fig.11 An example of a system 1100 having a browser application 1106a connected to a digital asset holder 1102 is illustrated according to one aspect. The system 1100 may be Fig. 10A and Fig. 10B System 1000 and / or reference Figures 1 to 9 Examples of any of the systems discussed herein and may include any of the details discussed with reference to those figures. In some examples, the browser application 1106a may be connected to the digital asset holder 1102, wherein a browser tab of the browser application 1106a (e.g., Fig. 10A and Fig. 10B One or more aspects of the browser tab 1060 of the present invention are based on a token associated with the digital asset holder 1102 (e.g., Fig. 10A and Fig. 10B In some examples, the digital asset holder 1102 is a third-party digital asset holder, and the browser application 1106a can be customized according to the reference Figures 1 to 9 Any of the described technologies connects to digital asset holder 1102.
[0212] The digital asset holder 1102 includes a private key 1104 used by the digital asset holder 1102 to authenticate transactions on the blockchain network. Figures 1 to 9 Examples of digital asset holders 1102 are described (e.g., digital asset holders 102, digital asset holders 202, extensions 302a, native applications 402b, server applications 502c, etc.), and digital asset holders 1102 may include any of the details discussed with reference to those figures.
[0213] In some examples, in response to the browser application 1106a connecting to the digital asset holder 1102, the browser application 1106a may obtain the identifier 1152 from the digital asset holder 1102. In some examples, the browser application 1106a may obtain the identifier 1152 via one or more application programming interfaces (e.g., FIG. 2A to FIG. 2DThe browser application 1106a and the digital asset holder 1102 may receive an identifier 1152 by using one or more application programming interfaces (APIs) that enable the browser application 1106a and the digital asset holder 1102 to communicate. In some examples, the identifier 1152 may include a holder address 1161 (e.g., a shared / public address of the digital asset holder 1102). In some examples, the identifier 1152 may include one or more token locations 1163 of tokens associated with the digital asset holder 1102. In some examples, the identifier 1152 may include one or more storage locations 1165 that specify the location of digital data for the corresponding token. In some examples, the digital asset holder 1102 stores the holder address 1161, any token locations 1163 of tokens associated with the digital asset holder 1102, and / or the storage locations 1165 of any tokens associated with the digital asset holder 1102. In some examples, the digital asset holder 1102 does not store the storage locations 1165.
[0214] In some examples, the browser application 1106a may receive an identifier 1152 from the digital asset holder 1102 and use the identifier 1152 to retrieve the digital data of the corresponding token identified by the digital asset holder 1102. In some examples, the digital data is displayed in the browser tab as a background image in response to opening a new browser tab. The user opening a new browser tab may be interpreted by the browser application 1106a as a request to render the browser tab. In some examples, the digital data is displayed in the browser tab as a profile image. In some examples, if the digital asset holder 1102 is associated with multiple tokens, the browser application 1106a may switch to a different token (when another browser tab is opened). In some examples, the user may set browser settings (e.g., Fig. 10A and Fig. 10B The browser application may render a UI object on the device's display that displays digital data for each token associated with the digital asset holder 1102 and permits the user to select one of the tokens to use as a background image and / or profile image.
[0215] In some examples, a user may set a browser setting to shuffle tokens for use as background images (and / or picture images). For example, the digital asset holder 1102 may identify a first token, a second token, and a third token. In some examples, when a first browser tab is launched, the first browser tab may display the digital data of the first token as a background image. When a second browser tab is launched, the second browser tab may display the digital data of the second token as a background image. When a third browser tab is launched, the third browser tab may display the digital data of the third token as a background image.
[0216] In some examples, when a fourth browser tab is launched, the fourth browser tab may display the digital data of the first token as a background image, and the random play continues. In some examples, the browser application 1106a may randomly select one of the tokens to use as the background image. In some examples, if the user acquires a new token in the digital asset holder 1102 (e.g., creates or purchases a new token), the browser application 1106a may automatically add the digital data of the new token to the sequence of tokens displayed as the background image of the browser tab. Regarding the profile image, in some examples, the browser application 1106a may automatically switch to a different token after a predetermined period of time (e.g., automatically switch the profile image after 10 days, 20 days, etc.).
[0217] Fig.12 An example of a browser application 1206a with a digital asset holder 1202 is illustrated. In some examples, the digital asset holder 1202 is a program managed or developed by an entity that develops the browser application 1206a. Figures 1 to 9 Examples of digital asset holders 1202 are described (e.g., digital asset holders 102, digital asset holders 202, extensions 302a, native applications 402b, server applications 502c, etc.), and digital asset holders 1202 may include any of the details discussed with reference to those figures. In some examples, digital asset holders 1202 are native or built-in digital asset holders 1202. Digital asset holders 1202 include private keys 1204 for authenticating transactions on a blockchain network. Browser applications 1206a may be described with reference to Figures 1 to 11 The invention may operate in any of the systems discussed and may include any of the details discussed with reference to those figures.
[0218] The browser application 1206a can access the digital asset holder 1202, wherein a browser tab of the browser application 1206a (e.g., Fig. 10A and Fig. 10BOne or more aspects of the browser tab 1060 of the present invention are based on a token associated with the digital asset holder 1202 (e.g., Fig. 10A and Fig. 10B In some examples, the browser application 1206a may not have to establish a connection (e.g., an API connection) with the digital asset holder 1202 because the digital asset holder 1202 is included as part of the browser application 1206a. In some examples, the browser application 1206a may retrieve a portion of all of the information from the digital asset holder 1202. In some examples, the browser application 1206a may obtain an identifier 1252 from the digital asset holder 1202. In some examples, the identifier 1252 is stored in a memory device associated with the browser application 1206a. In some examples, the identifier 1252 may include a holder address 1261 (e.g., a shared / public address of the digital asset holder 1202). In some examples, the identifier 1252 may include one or more token locations 1263 of a token associated with the digital asset holder 1202. In some examples, the identifier 1252 may include one or more storage locations 1265 that identify the location of the digital data of the corresponding token.
[0219] In some examples, the browser application 1206a may obtain an identifier 1252 from the digital asset holder 1202 and use the identifier 1252 to retrieve the digital data of the corresponding token identified by the digital asset holder 1202. In some examples, the digital data is displayed in the browser tab as a background image in response to opening a new browser tab. The user opening a new browser tab may be interpreted by the browser application 1206a as a request to render the browser tab. In some examples, the digital data is displayed in the browser tab as a profile image. In some examples, if the digital asset holder 1202 is associated with multiple tokens, the browser application 1206a may switch to a different token (when another browser tab is opened). In some examples, the user may set browser settings (e.g., Fig. 10A and Fig. 10B The browser application may render a UI object that displays digital data for each token associated with the digital asset holder 1202 and permits the user to select one of the tokens to use as a background image and / or profile image.
[0220] In some examples, a user may set a browser setting to randomly play tokens for use as background images (and / or picture images). For example, the digital asset holder 1202 may identify a first token, a second token, and a third token. In some examples, when a first browser tab is launched, the first browser tab may display the digital data of the first token as a background image. When a second browser tab is launched, the second browser tab may display the digital data of the second token as a background image. When a third browser tab is launched, the third browser tab may display the digital data of the third token as a background image. In some examples, when a fourth browser tab is launched, the fourth browser tab may display the digital data of the first token as a background image. In some examples, the browser application 1206a may randomly select one of the tokens to use as a background image. With respect to the profile image, in some examples, the browser application 1206a may automatically switch to a different token after a predetermined period of time (e.g., automatically switch profile images after 10 days, 20 days, etc.).
[0221] Fig.13 An example of a browser application 1306a according to another aspect is illustrated. The browser application 1306a may render a UI object 1364 in a user interface 1358 of the browser application 1306a, wherein the UI object 1364 enables a user to enter an identifier 1352. In some examples, the identifier 1352 includes a holder address (e.g., a public address of a digital asset holder). For example, a user may enter a shared (e.g., publicly available) address of a digital asset holder. In some examples, the digital asset holder is owned by a user of the browser application 1306a. In some examples, in some examples, the shared address is associated with a digital asset holder who is not a user (e.g., a shared address for other people). In some examples, the identifier 1352 may include a token location of a token stored on a blockchain network. In some examples, a user may enter a token location of a token owned by a user. In some examples, a user may enter any token location (of a token not owned by a user). In some examples, the identifier 1352 includes a storage location that specifies the location of the digital data of the corresponding token. In some examples, a user may enter a storage location of a token owned by the user. In some examples, a user may enter any storage location (of a token not owned by the user). In some examples, identifier 1352 includes a collection identifier that identifies a location of a token and / or digital data of a token associated with a particular collection of a creator, multiple creators, and / or a portion of an NFT project.
[0222] Fig.14An example of a browser application 1406a configured to customize a browser tab 1460 using tokens from a blockchain network is illustrated according to one aspect. For example, when a new browser tab 1460 is opened, the browser application 1406a may select a different token to use as a background image 1468. A user opening a new browser tab may be interpreted by the browser application 1406a as a request to render a browser tab 1460. For example, at a first time, the browser application 1406a may render a browser tab 1460-1, where digital data 1456-1 of a first token is displayed as a background image 1468 for the browser tab 1460-1. At a second time, the browser application 1406a may render a browser tab 1460-2, where digital data 1456-2 of a second token is displayed as a background image 1468 for the browser tab 1460-2. At a third time, the browser application 1406a may render a browser tab 1460-3 in which the digital data 1456-3 of the third token is displayed as a background image 1468 of the browser tab 1460-3.
[0223] Fig.15 An example of a browser application 1506a configured to customize a user interface 1558 (e.g., a browser tab) using tokens from a blockchain network is illustrated according to one aspect. The browser application 1506a can render the digital data 1556 of the token as a profile image 1566, which is displayed on the user interface 1558 of the browser application 1506a. The user can adjust browser settings (e.g., Fig. 10A and Fig. 10B The browser settings 1055 of the example embodiment of the present invention are used to identify a specific token to be used as a profile image 1066. The account associated with the browser application 1506a can be associated with other services (such as email applications, video conferencing applications, storage applications). When the account is identified on those other services, the profile image 1566 with the digital data 1556 of the token can also be displayed.
[0224] Fig.16An example of a browser application 1606a configured to customize a user interface 1658 using tokens from a blockchain network according to one aspect is illustrated. In some examples, the user interface 1658 displays a UI module 1670. In some examples, a browser tab displays the UI module 1670. In some examples, the browser tab renders a new browser page, and the new browser page includes the UI module 1670. In some examples, the new browser page also includes an entry bar for entering a term to be searched on the Internet. In some examples, the UI module 1670 is a computer object rendered on the user interface 1658, wherein the computer object may include an input control, an information container, and / or a container. The UI module 1670 may display digital data of one or more tokens. Parameters on how and / or when to display tokens may be customizable by the user via one or more browser settings.
[0225] In some examples, UI module 1670 is configured to shuffle (e.g., sequentially display) tokens from, for example, any digital asset holder connected to (or as part of) browser application 1606a. In some examples, browser application 1606a may receive an identifier (e.g., a holder address, a token location, a storage location, a collector identifier) and then display digital data from those tokens associated with that identifier in UI module 1670. In some examples, a user may adjust browser settings (e.g., Fig. 10A and Fig. 10B In some examples, the user can adjust the browser setting (e.g., Fig. 10A and Fig. 10B The browser setting 1055) is used to add a second UI module related to the tokens associated with the second digital asset holder or the second collection identifier, and the second UI module can display the digital data of each token (e.g., sequentially or simultaneously).
[0226] In some examples, if the user's digital asset holder identifies a first token, a second token, and a third token, UI module 1670 may display digital data 1656-1 for the first token for a first predetermined time period (e.g., five seconds, 30 seconds, one minute, etc.), digital data 1656-2 for the second token for a second predetermined time period, and digital data 1656-3 for the third token for a third predetermined time period. In some examples, the duration of display of a particular token may be adjustable by the user via browser settings. In some examples, UI module 1070 may display digital data 1656-1, digital data 1656-2, and digital data 1656-3 in UI module 1670 simultaneously.
[0227] Fig.17 Illustrated is a browser application 1706a configured to customize a user interface 1758 using tokens from a blockchain network, according to one aspect. In some examples, the browser application 1706a includes (or is in communication with) a recommendation engine 1774. The recommendation engine 1774 is configured to generate recommendations 1776 for a user using metadata 1772 associated with one or more tokens. In some examples, the recommendation engine 1774 executes on one or more server computers, and the browser application 1706a communicates with the recommendation engine 1774 over a network to receive the recommendations 1776. In some examples, the recommendation engine 1774 is a browser application that is configured to customize a user interface 1758 using tokens from a blockchain network, according to one aspect ... Fig. 10A and Fig. 10B Part of a browser application 1706a executed on the computing device 1026).
[0228] The recommendation engine 1774 can obtain metadata 1772 about one or more tokens stored on the blockchain network. In some examples, a user is provided with one or more controls to enable (or disable) the recommendation engine 1774 to obtain metadata 1772 about tokens stored on the blockchain network. In some examples, the recommendation engine 1774 obtains metadata 1772 about tokens identified by digital asset holders connected to the browser application 1706a (or as part of the browser application).
[0229] Metadata 1772 may include information about the token. In some examples, metadata 1772 includes information about the creator, product name, description, attribute levels, statistics, time and / or location of creation of the token, and / or NFT items associated with the token, etc. In some examples, metadata 1772 is stored on a blockchain network (e.g., Fig. 10A and Fig. 10BThe recommendation engine 1774 may query the blockchain network to obtain the metadata 1772. In some examples, the metadata 1772 is stored on a storage device (e.g., a server, a file system, another blockchain network) (e.g., storage device 1016). The recommendation engine 1774 may query the storage device to obtain the metadata 1772. In some examples, the metadata 1772 is included as digital data (e.g., Fig. 10A and Fig. 10B In some examples, metadata 1772 is not included as part of the digital data. In some examples, metadata 1772 is stored in two or more locations or systems (e.g., a blockchain network, a server, a file system, and / or another blockchain network) with different communication protocols, and recommendation engine 1774 may obtain a portion of metadata 1772 from one location and a portion of metadata 1772 from another location.
[0230] The recommendation engine 1774 generates a recommendation 1776 based on the metadata 1772 and renders information identifying the recommendation 1776 in the user interface 1758 of the browser application 1706a. In some examples, the recommendation 1776 includes web content or links to web content related to the recommendation 1776. In some examples, the recommendation 1776 includes content identified as similar (or topically related) to the metadata 1772. In some examples, the recommendation 1776 may identify one or more tokens (e.g., NFTs) and / or NFT items from the same creator, and / or recommend NFTs and / or NFT items of similar size, price, etc.
[0231] In some examples, the recommendation engine 1774 includes one or more predictive models that can predict a similarity value between one or more tokens whose digital data is rendered by the browser application 1706a and web content indexed by the search engine of the browser application 1706a and searchable by the search engine. In some examples, the predictive model includes a neural network. If the similarity value is equal to or greater than a threshold, the recommendation engine 1774 can identify the web content 1778 as a recommendation 1776. In some examples, the recommendation 1776 can be displayed in a browser tab of the browser application 1706a. In some examples, the recommendation 1776 can be displayed in a UI module (e.g., Fig. 10A and Fig. 10B The UI module 1070 is displayed.
[0232] Fig.18 1800 is a flowchart depicting example operations for customizing a browser tab using blockchain data according to one aspect. Fig. 10A and Fig. 10B Although the flowchart 1800 is explained with reference to the system 1000 of FIG. 1 , the flowchart 1800 may be applicable to any of the embodiments discussed herein. Fig.18 Flowchart 1800 illustrates the operation in sequential order, but it should be understood that this is merely an example and may include additional or alternative operations. Further, Fig.18 The operations and related operations may be performed in an order different from that shown, or in a parallel or overlapping manner.
[0233] Operation 1802 includes obtaining, by the browser application 1006a, an identifier 1052 associated with a token 1054 stored on the blockchain network 1010. In some examples, the browser application 1006a obtains an identifier 1052 associated with a token 1054 stored on the blockchain network 1010 from a digital asset holder (e.g., Fig.11 Digital asset holders 1102, Fig.12 The digital asset holder 1202) obtains the identifier 1052. In some examples, the browser application 1006a is configured to use Figures 1 to 9 106a. In some examples, when the browser application 1006a connects to the digital asset holder, the browser application 1006a obtains the identifier 1052. In some examples, the browser application 1006a obtains the identifier 1052 from the user via a UI object rendered by the browser application 1006a. In some examples, the browser application 1006a obtains (or selects from) the identifier 1052 from the web content rendered by the browser application 1006a. In some examples, the identifier 1052 includes a holder address 1061, a token location 1063, a storage location 1065, and / or a collection identifier identifying a collection of tokens stored on the blockchain network 1010.
[0234] Operation 1804 includes: using the identifier 1052 to retrieve, by the browser application 1006a, digital data 1056 of the token 1054. The browser application 1006a may use the holder address 1061, the token location 1063, and / or the storage location 1065 to obtain the digital data 1056. In some examples, the browser application 1006a may use the holder address 1061 to query the blockchain network 1010 to identify whether the digital asset holder is associated with any token 1054. The holder address 1061 may be the address of the digital asset holder of the user. In some examples, the holder address 1061 may be the address of the digital asset holder of an entity other than the user. The holder address 1061 may point to the location 1045 where the token 1054 of the digital asset holder is stored. If the digital data 1056 is stored in the token 1054, the browser application 1006a may retrieve the digital data 1056 from the blockchain network 1010. If the digital data 1056 is stored in the storage device 1016, the browser application 1006a can retrieve the storage location 1065 from any token 1054 associated with the digital asset holder. The browser application 1006a can use the storage location 1065 (e.g., URL, hash value) to retrieve the digital data 1056 from the storage device 1016.
[0235] In some examples, the browser application 1006a may use the token location 1063 to query the blockchain network 1010 to obtain the digital data 1056. The token location 1063 may represent the address of a specific token 1054 stored on the blockchain network 1010. If the digital data 1056 is stored in the token 1054, the browser application 1006a may retrieve the digital data 1056 from the blockchain network 1010. If the digital data 1056 is stored on the storage device 1016, the browser application 1006a may query the blockchain network 1010 to retrieve the storage location 1065, and use the storage location 1065 to retrieve the digital data 1056.
[0236] In some examples, browser application 1006a can use storage location 1065 to retrieve digital data 1056. For example, storage location 1065 can be an address or locator pointing to the location of digital data 1056 on storage device 1016, and browser application 1006a can use storage location 1065 to retrieve digital data 1056.
[0237] Operation 1806 includes using the digital data 1056 of the token 1054 to customize the user interface 1058 of the browser application 1006a. In some examples, operation 1806 includes updating the browser settings 1055 of the browser application 1006a so that the display aspects of the user interface 1058 of the browser application 1006a are changed. In some examples, operation 1806 includes rendering the digital data 1056 of the token 1054 in the user interface 1058 of the browser application 1006a as a background image. In some examples, operation 1806 includes rendering the digital data 1056 in the user interface 1058 of the browser application 1006a as a profile image 1066 of the user. In some examples, reference Fig.17 , the operations include: obtaining metadata 1772 about the token; generating a recommendation 1776 based on the metadata 1772; and rendering information identifying the recommendation 1776 in a user interface of the browser application 1706a. In some examples, reference Fig. 10A and Fig. 10B , the operation includes: identifying multiple tokens 1054 stored on the blockchain network 1010 based on the identifier 1052; and rendering a UI module 1070 in the user interface 1058 of the browser application 1006a, the UI module displaying digital data 1056 associated with each token in the multiple tokens 1054 for a predetermined time period.
[0238] According to some aspects, the method (e.g., operation) may include one or more of the following features (or any combination thereof). Customizing the user interface of the browser application includes: updating browser settings of the browser application so that display aspects of the user interface of the browser application are changed. Customizing the user interface of the browser application includes: rendering the digital data of the token as a background image in the user interface of the browser application. Customizing the user interface of the browser application includes: rendering the digital data as a profile image of the user in the user interface of the browser application. The token is a first token and the digital data is a first digital data, and the method includes: receiving a request to render a first browser tab of the browser application; rendering the first browser tab having a background image including the first digital data associated with the first token; receiving a request to render a second browser tab of the browser application; and rendering the second browser tab having a background image including the second digital data associated with the second token. The method may include: obtaining metadata about the token; generating a recommendation based on the metadata; and rendering information identifying the recommendation in the user interface of the browser application. The method may include: identifying a plurality of tokens stored on a blockchain network based on an identifier; and rendering a user interface module in a user interface of a browser application, the user interface module displaying digital data associated with a token in the plurality of tokens for a predetermined time period. The identifier includes a shared address of a digital asset holder. The method may include: receiving an identifier from a digital asset holder storing a private key for authenticating transactions on the blockchain network. The identifier is received via an application programming interface of the browser application. The method may include: rendering a user interface object for receiving the identifier.
[0239] According to one aspect, a device includes: at least one processor; and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to: connect a browser application to a digital asset holder that stores a private key for implementing transactions on a blockchain network, the digital asset holder identifying a token stored on the blockchain network; retrieve digital data of the token by the browser application; and customize a user interface of the browser application using the digital data of the token.
[0240] According to some aspects, the device may include one or more features (or any combination thereof). The executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to perform the following: update browser settings of the browser application so that the display aspects of the user interface of the browser application are changed. The executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to perform the following: render the digital data of the token in the user interface of the browser application as a background image. The executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to perform the following: render the digital data in the user interface of the browser application as a profile image of the user. The token is a first token and the digital data is a first digital data, and the digital asset holder identifies a second token stored on a blockchain network, wherein the executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to perform the following: receive a request to render a first browser tab of the browser application; render the first browser tab, the first browser tab having a background image including the first digital data associated with the first token; receive a request to render a second browser tab of the browser application; and render the second browser tab, the second browser tab having a background image including the second digital data associated with the second token. The executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to: obtain metadata about a token; generate a recommendation based on the metadata, the recommendation including web content; and render information identifying the web content in a user interface of a browser application. The token is a first token, and the digital asset holder identifies a second token, wherein the executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to: render a user interface module in the user interface of the browser application, the user interface module displaying digital data associated with the first token for a first predetermined time period, and displaying digital data associated with the second token for a second predetermined time period. The digital asset holder is a third-party digital asset holder.
[0241] According to one aspect, a non-transitory computer-readable medium stores executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations, wherein the operations include: obtaining, by a browser application, an identifier associated with a token stored on a blockchain network; using, by the browser application, the identifier to retrieve digital data for the token; and customizing a user interface of the browser application using the digital data for the token.
[0242] According to some aspects, the operation may include one or more of the following features (or any combination thereof). The operation may include: updating browser settings of the browser application so that display aspects of the user interface of the browser application are changed. The operation may include: rendering the digital data of the token as a background image in the user interface of the browser application. The operation may include: rendering the digital data as a profile image of the user in the user interface of the browser application. The token is a first token and the digital data is a first digital data, wherein the operation further includes: receiving a request to render a first browser tab of the browser application; rendering the first browser tab having a background image including the first digital data associated with the first token; receiving a request to render a second browser tab of the browser application; and rendering the second browser tab having a background image including the second digital data associated with the second token. The operation may include: obtaining metadata about the token; generating a recommendation based on the metadata; and rendering information identifying the recommendation in the user interface of the browser application. The operation may include: identifying a plurality of tokens stored on a blockchain network based on an identifier; and rendering a user interface module in the user interface of the browser application, the user interface module displaying digital data associated with a token in the plurality of tokens for a predetermined period of time. The identifier includes a shared address of a digital asset holder. The operation may include receiving an identifier from a digital asset holder that stores a private key for authenticating transactions on a blockchain network. The digital asset holder includes an extension of a browser application, a native application, or a server application. The operation may include rendering a user interface object for receiving the identifier.
[0243] 19A to 19D A system 1900 for managing inter-ledger transactions involving one or more blockchain networks 1910 is illustrated according to one aspect. In some examples, the system 1900 includes a single blockchain network 1910. In some examples, the system 1900 includes two or more blockchain networks 1910. The system 1900 can enable inter-ledger transfers of digital assets from a user 1901 to a requester 1990. An inter-ledger transfer can refer to a transfer of a digital asset from one type of ledger (e.g., Ether) to another type of ledger (e.g., Bitcoin), which can be performed on the same blockchain network 1910 or different blockchain networks 1910. The system 1900 includes a user agent 1980 executable by a computing device 1926, the user agent configured to act as an intermediary for inter-ledger transactions involving one or more blockchain networks 1910 (e.g., blockchain network 1910-1 or blockchain network 1910-2, or blockchain network 1910-1 and blockchain network 1910-2). The system 1900 can be a reference Figures 1 to 18Examples of systems are described, and may include any of the details discussed with reference to those figures.
[0244] Each type of digital asset may represent a different payment network, and each type of digital asset may be stored on the same blockchain network 1910 or on different blockchain networks 1910. Digital assets may include homogenous tokens (e.g., cryptocurrencies) stored on blockchain network 1910. Blockchain network 1910-1 and blockchain network 1910-2 may represent different blockchain networks. Blockchain network 1910-1 may store tokens from one or more public ledgers. Blockchain network 1910-2 may store tokens from one or more public ledgers. Fig.19A As shown, digital asset A may be stored on blockchain network 1910-1, and digital asset B may be stored on blockchain network 1910-2. In some examples, such as Fig.19B As shown, both digital asset A and digital asset B are stored in different ledgers on blockchain network 1910-1, or digital asset A and digital asset B are stored in different ledgers on blockchain network 1910-2. In some examples, digital asset A may represent one type of homogenous token (e.g., Ether), and digital asset B may represent another type of homogenous token (e.g., Bitcoin). Although Ether and Bitcoin are used as examples of different digital asset types for ease of explanation, digital assets may represent any type of digital asset that can be stored as a homogenous token on blockchain network 1910.
[0245] The computing device 1926 can be any type of computing device that includes one or more processors (e.g., FIG. 2A to FIG. 2D processor 228), one or more memory devices (e.g., FIG. 2A to FIG. 2D 230), a display 1934, and an operating system (e.g., FIG. 2A to FIG. 2D 232). In some examples, computing device 1926 is a laptop computer. In some examples, computing device 1926 is a desktop computer. In some examples, computing device 1926 is a tablet computer. In some examples, computing device 1926 is a smartphone. In some examples, computing device 1926 is a wearable device.
[0246] The user agent 1980 may be stored on (and executed on) a computing device 1926 associated with the user 1901. In some examples, the user agent 1980 is part of (or integrated into) a browser application. In some examples, the browser application may be configured to perform any (or part of) the operations explained with reference to the user agent 1980. The browser application may be a web browser configured to access information on the Internet. In some examples, the browser application is an application separate from the operating system of the computing device 1926, wherein the browser application may be installed on (and executable by) the operating system. In some examples, the browser application is the operating system of the device (or is included as part of the operating system of the device). The browser application may launch one or more browser tabs in the context of one or more browser windows on the display of the computing device 1926. In some examples, the browser application may launch one or more browser tabs without reference to the browser window. In some examples, the user agent 1980 is a web application or an extension of the browser application. In some examples, the user agent 1980 is part of (or integrated into) a non-browser application (such as a native application) installed on the operating system of the device. In some examples, user agent 1980 is part of (or integrated into) the operating system of computing device 1926 .
[0247] The user agent 1980 may implement an inter-ledger transaction for transferring a digital asset from the user 1901 to the requester 1990 in a manner that may reduce the computer complexity (thereby reducing the amount of computing resources) used to implement the inter-ledger transaction involving different ledgers of one or more blockchain networks 1910. For example, to implement the inter-ledger transaction, the user agent 1980 may define one or more operations and / or protocols for communicating with the requester 1990, the digital asset holder 1902a associated with the user 1901, one or more digital asset exchanges 1982, and one or more blockchain networks 1910. Further, some (or all) of the operations of the user agent 1980 may be operated in one or more background operations, requiring minimal input from the user 1901, and without interrupting the transaction flow of the user 1901 sender (thereby avoiding the need to install one or more additional applications).
[0248] User agent 1980 may receive transaction information 1975 for completing a blockchain transaction with requestor 1990. Requestor 1990 may include or be associated with website 1992 and / or application 1994. In some examples, website 1992 and / or application 1994 include executable code that enables communication with user agent 1980.
[0249] In some examples, user agent 1980 may receive transaction information 1975 from website 1992 (e.g., a web server hosting website 1992). For example, user 1901 may use an application (e.g., a browser application, a native application) to render web content, where the web content includes website 1992. In some examples, website 1992 may include a user-selectable element to obtain a product. In some examples, in response to receiving a selection of the user-selectable element, user agent 1980 is configured to receive transaction information 1975. In some examples, user agent 1980 receives transaction information 1975 via an application programming interface (API) that enables user agent 1980 and website 1992 to communicate with each other. If user agent 1980 is incorporated into a browser application, the browser application and website 1992 may communicate with each other via one or more APIs defined at the browser application and / or website 1992. If the user agent 1980 is incorporated into the operating system of the computing device 1926 , the operating system and the website 1992 may communicate with each other via one or more APIs defined at the operating system and / or the website 1992 .
[0250] In some examples, the user agent 1980 may receive transaction information 1975 from the application 1994. In some examples, the application 1994 is an application executed on the computing device 1926. The application 1994 may display content including user-selectable items to obtain a product, and in response to receiving a selection of the user-selectable items, the user agent 1980 is configured to receive transaction information 1975. In some examples, the user agent 1980 receives the transaction information 1975 from the application 1994 via one or more APIs defined at the user agent 1980 and / or the application 1994, the one or more APIs being used to enable the user agent 1980 and the application 1994 to communicate with each other. In some examples, the user agent 1980 receives the transaction information 1975 from the application 1994 via an inter-process communication (IPC) protocol that enables the user agent 1980 and the application 1994 to communicate with each other using an operating system.
[0251] The user agent 1980 may receive transaction information 1975 via a unified protocol that reduces the complexity of facilitating inter-ledger transactions involving one or more blockchain networks 1910. In some examples, the unified protocol is platform specific. For example, with respect to a mobile platform, the user agent 1980 may receive transaction information 1975 via one or more APIs defined on the operating system of the mobile device (e.g., Android / iOS APIs). In some examples, with respect to a web platform, the user agent 1980 may receive transaction information 1975 via one or more JavaScript APIs. In some examples, the unified protocol is platform independent, where the same protocol is universal across web and mobile platforms.
[0252] Transaction information 1975 may include a digital asset type 1909a, a transaction amount 1977, and / or a shared address 1905b of a digital asset holder 1902b associated with requestor 1990. In some examples, shared address 1905b is an identifier (e.g., a public identifier) of digital asset holder 1902b of requestor 1990. Digital asset type 1909a includes information indicating the type of digital asset requested by requestor 1990. Fig.19A In the example of , digital asset type 1909a is digital asset B (e.g., Ether). In this example, for the product selected by user 1901, requester 1990 is requesting to receive digital asset B for transaction amount 1977 in shared address 1905b.
[0253] In response to receiving transaction information 1975, referring to Fig.19C , user agent 1980 may cause interface 1936 to be provided (e.g., rendered) on display 1934 of computing device 1926. Interface 1936 may display an asset list 1944 that identifies digital assets (and types of digital assets) associated with digital asset holder 1902a of user 1901.
[0254] Digital asset holder 1902a can be a reference Figures 1 to 18 In some examples, digital asset holder 1902a is a native (or built-in) asset holder that is part of a browser application that also stores user agent 1980. In some examples, digital asset holder 1902a is a third-party digital asset holder, and user agent 1980 can use reference Figures 1 to 9Any of the techniques described herein communicate with a third-party digital asset holder. Digital asset holder 1902a may be an application or program that stores a private key 1904 used to effectuate transactions on blockchain network 1910. In addition, digital asset holder 1902a includes a shared address 1905a that may identify the location of an account on blockchain network 1910. In some examples, digital asset holder 1902a may access or include asset information 1907 about a user's digital assets stored on blockchain network 1910. For example, digital asset holder 1902a may identify one or more types of digital assets owned by user 1901 and stored on blockchain network 1910. Fig.19A In the example of , digital asset holder 1902a is associated with digital asset A (e.g., Bitcoin), which is stored on blockchain network 1910-1 or blockchain network 1910-2.
[0255] The user agent 1980 may communicate with the digital asset holder 1902a to obtain information related to the digital assets owned by the user 1901. In some examples, where the digital asset holder 1902a is implemented as a native (or built-in) digital asset holder, the user agent 1980 may obtain the asset list 1944 from the asset information 1907 in the digital asset holder 1902a, and then render the asset list 1944 in the interface 1936. In some examples, where the digital asset holder 1902a is implemented as a third-party digital asset holder, the user agent 1980 may communicate with the digital asset holder 1902a via one or more APIs (e.g., API 238) to obtain the asset list 1944, and then render the asset list 1944 in the interface 1936.
[0256] refer to Fig.19C, interface 1936 may also display exchange rate information 1979 regarding an exchange rate for converting one or more of the digital assets owned by user 1901 into a digital asset type 1909a requested by requestor 1990. For example, user 1901 owns digital asset A stored on blockchain network 1910-1 (or blockchain network 1910-2), but requestor 1990 has requested to receive digital asset B. Exchange rate information 1979 may indicate an exchange rate for converting digital asset A into digital asset B using a particular digital asset exchange 1982. In some examples, exchange rate information 1979 may indicate exchange rates for converting digital asset A into digital asset B for a plurality of digital asset exchanges 1982. In some examples, exchange rate information 1979 may include any transaction fees associated with converting digital asset A into digital asset B. In some examples, exchange rate information 1979 may identify a particular digital asset exchange 1982, and in some examples, may identify information (including a selectable web link) about a particular digital asset exchange 1982. Note that user 1901 may also own other digital assets, where exchange rate information 1979 may provide an exchange rate for converting the other digital assets into the requested digital asset.
[0257] To obtain the exchange rate information 1979, the user agent 1980 may communicate with one or more digital asset exchanges 1982. The digital asset exchange 1982 may be an application that may perform one or more inter-ledger conversion operations 1984 to convert one type of digital asset (e.g., Ether) to another type of digital asset (e.g., Bitcoin). In some examples, the digital asset exchange 1982 is executed on the blockchain network 1910. In some examples, the digital asset exchange 1982 is not executed on the blockchain network 1910 (e.g., but is executed on a server computer that does not use blockchain technology).
[0258] In some examples, the digital asset exchange 1982 is an application executed on one or more blockchain networks 1910, which may include blockchain network 1910-1, blockchain network 1910-2, or a different blockchain network 1910. In some examples, if digital asset A and digital asset B are stored on blockchain network 1910-1, the digital asset exchange 1982 may be executed as a smart contract on blockchain network 1910-1 to convert digital asset A into digital asset B (or vice versa). In some examples, the digital asset exchange 1982 includes a decentralized exchange (DEX). A DEX is an application executed on one or more blockchain networks 1910, where the code is embodied as a smart contract on blockchain network 1910. In some examples, using smart contracts on blockchain network 1910, DEX enables peer-to-peer transactions to be conducted securely online without an intermediary (e.g., a central authority). As part of the smart contract, the DEX calculates an exchange rate based on the liquidity pool size and converts the provided cryptocurrency into the requested cryptocurrency. For example, in the case of converting 100 Bitcoins to Ether, DEX will take out 100 Bitcoins from the user's digital asset holder 1902a on the Bitcoin ledger and put the corresponding Ethereum on the user's digital asset holder 1902a on the Ethereum ledger.
[0259] In some examples, digital asset exchange 1982 includes a centralized exchange that converts tokens across different blockchain networks 1910. For example, digital asset A may be stored on blockchain network 1910-1 and digital asset B may be stored on blockchain network 1910-2, where the centralized exchange may communicate with blockchain network 1910-1 and blockchain network 1910-2 to convert the user's digital assets across different blockchain networks 1910.
[0260] The user agent 1980 may obtain asset information 1907 (e.g., type / amount of each digital asset) from the digital asset holder 1902a, obtain the digital asset type 1909a identified in the transaction information 1975, and in some examples, obtain the transaction amount 1977, and may query one or more digital asset exchanges 1982 to obtain exchange rate information 1979. In some examples, the user agent 1980 may communicate with the digital asset exchange 1982 using one or more APIs defined at the user agent 1980. In some examples, the user agent 1980 may send and receive JSON messages to communicate with the blockchain network 1910 executing the digital asset exchange 1982 to receive the exchange rate information 1979.
[0261] In some examples, the user agent 1980 includes an exchange selector 1986. The exchange selector 1986 may select a digital asset exchange 1982 from a plurality of digital asset exchanges 1982 based on exchange rate information 1979 associated with a corresponding digital asset exchange 1982 in the plurality of digital asset exchanges 1982. For example, the exchange rate information 1979 may indicate an exchange rate for converting digital asset A to digital asset B. In some examples, the exchange selector 1986 may select a particular digital asset exchange 1982 for converting one type of digital asset to another type of digital asset based on selection criteria, which may include selecting a digital asset exchange 1982 with the best conversion rate, the lowest transaction fee, and / or a combination of both. In some examples, the conversion rate of the selected digital asset exchange 1982 may be provided for the corresponding digital asset type in the asset list 1944.
[0262] After the user reviews the asset list 1944 and the exchange rate information 1979, the user agent 1980 may receive a selection of a digital asset type 1909b via the interface 1936. 19A to 19D In the example of , the user has selected digital asset A, which is stored on blockchain network 1910-1.
[0263] In some examples, instead of providing an interface 1936 to enable user 1901 to select a particular digital asset to convert to the requested digital asset, user agent 1980 may automatically select a particular digital asset type based on the user's stored preferences. For example, user agent 1980 may store one or more user preferences, such as a preferred digital asset type to use when transaction information 1975 indicates a certain digital asset type.
[0264] In response to obtaining digital asset type 1909b, user agent 1980 may communicate with digital asset exchange 1982 to enable digital asset exchange 1982 to perform an inter-ledger conversion operation 1984 to convert the user's digital assets from digital asset type 1909b (e.g., digital asset A) to digital asset type 1909a (e.g., digital asset B).
[0265] User agent 1980 may send conversion request 1971 to digital asset exchange 1982, wherein conversion request 1971 is configured to cause digital asset exchange 1982 to convert the digital asset of the user of transaction amount 1977 in digital asset holder 1902a from digital asset type 1909b (e.g., digital asset A) to digital asset type 1909a (e.g., digital asset B). Conversion request 1971 may identify shared address 1905a of digital asset holder 1902a, transaction amount 1977, digital asset type 1909a, and digital asset type 1909b.
[0266] If digital asset A and digital asset B are stored in different ledgers on the same blockchain network 1910-1 (such as Fig.19B ), digital asset exchange 1982 may communicate with blockchain network 1910-1 (or blockchain network 1910-2) to record a transaction to subtract transaction amount 1977 from the user's digital assets (e.g., associated with digital asset holder 1902a), and record a transaction associated with digital asset holder 1902b to add transaction amount 1977. In some examples, if digital asset A and digital asset B are stored on different blockchain networks (e.g., Fig.19A ), the digital asset exchange 1982 may communicate with the blockchain network 1910-1 to record a transaction for subtracting the transaction amount 1977 from the digital assets of the user stored on the blockchain network 1910-1, and may communicate with the blockchain network 1910-2 to record a transaction for adding the transaction amount 1977 to the blockchain network 1910-2. In response to the digital asset exchange 1982 performing the inter-ledger conversion operation 1984, the user agent 1980 may receive a conversion response 1973. The conversion response 1973 may include the result of the conversion and one or more transaction identifiers.
[0267] In some examples, before sending the conversion request 1971 to the digital asset exchange 1982, the user agent 1980 communicates with the digital asset holder 1902a to authenticate the conversion request 1971 using the private key 1904, and then sends the authenticated conversion request 1971 to the digital asset exchange 1982. For example, the digital asset holder 1902a may use the private key 1904 to perform a smart contract or cryptographic operation to authenticate (or sign) the conversion request 1971. In some examples, the user agent 1980 communicates with the digital asset holder 1902a via one or more APIs (e.g., FIG. 2A to FIG. 2DThe user agent 1980 sends a conversion request 1971 to the digital asset holder 1902a using the API 238 of the present invention and receives the authenticated conversion request 1971. In some examples, the user agent 1980 sends a conversion response 1973 to the digital asset holder 1902a. In some examples, the conversion request 1971 and the conversion response 1973 are communicated between the user agent 1980 and the digital asset exchange 1982 using JavaScript Object Notation (JSON) messages 1988.
[0268] In some examples, in response to conversion response 1973, digital asset holder 1902a may update asset information 1907 to indicate that user 1901 has digital asset B (with at least transaction amount 1977) that has been converted from digital asset A. In response to conversion response 1973, user agent 1980 may communicate with blockchain network 1910 (e.g., blockchain network 1910-1 or blockchain network 1910-2, whichever blockchain stores digital asset B) to transfer digital asset B for transaction amount 1977 from digital asset holder 1902a (associated with user 1901) to digital asset holder 1902b (associated with requester 1990). In some examples, user agent 1980 may communicate with blockchain network 1910 by sending and receiving messages 1921. In some examples, message 1921 includes a JSON message. In some examples, user agent 1980 may communicate with blockchain network 1910 via one or more APIs (e.g., FIG. 2A to FIG. 2D API 240) communicates with blockchain network 1910.
[0269] User agent 1980 may send transaction request 1946 to blockchain network 1910-2. Fig.19A The user agent 1980 is illustrated as sending a transaction request 1946 to the blockchain network 1910-2, but it is noted that the user agent 1980 may send the transaction request 1946 to the blockchain network 1910-1 (thus, in some examples, the blockchain network 1910-1 and the blockchain network 1910-2 can be used interchangeably). If digital asset A and digital asset B are stored on the blockchain network 1910-1, the user agent 1980 sends the transaction request 1946 to the blockchain network 1910-1. If digital asset A is stored on the blockchain network 1910-1 and digital asset B is stored on the blockchain network 1910-2, the user agent 1980 sends the transaction request 1946 to the blockchain network 1910-2.
[0270] The user agent 1980 may send the transaction request 1946 to a node gateway (e.g., FIG. 2A to FIG. 2DNode gateway 214). Transaction request 1946 may cause blockchain network 1910-2 to transfer transaction amount 1977 from digital asset holder 1902a to digital asset holder 1902b. In some examples, transaction request 1946 is configured to cause blockchain network 1910-2 to add at least one transaction to blockchain network 1910-2 that transfers transaction amount 1977 from user 1901 to requestor 1990. In some examples, blockchain network 1910-2 adds a transaction associated with digital asset holder 1902a to blockchain network 1910-2 that subtracts transaction amount 1977 from the user's digital asset B. In some examples, blockchain network 1910-2 adds a transaction associated with digital asset holder 1902b to blockchain network 1910-2 that adds transaction amount 1977 to requestor's digital asset B.
[0271] Transaction request 1946 may include details about the transaction to be created on blockchain network 1910-2. Transaction request 1946 may include shared address 1905a (e.g., sender), shared address 1905b (e.g., receiver), and transaction amount 1977. In some examples, transaction request 1946 includes information identifying the type of digital asset (e.g., digital asset B).
[0272] In some examples, transaction request 1946 may include authentication information indicating that the transaction is authenticated (e.g., signed). For example, before sending transaction request 1946 to blockchain network 1910-2, user agent 1980 may communicate with digital asset holder 1902a to cause digital asset holder 1902a to authenticate transaction request 1946 using private key 1904. In some examples, user agent 1980 may communicate with digital asset holder 1902a via one or more APIs (e.g., FIG. 2A to FIG. 2D The user agent 1980 may communicate with the digital asset holder 1902a using the API 238 of the blockchain network 1910-2. For example, the digital asset holder 1902a may use the private key 1904 to perform a smart contract or cryptographic operation to authenticate (or sign) the transaction request 1946. The digital asset holder 1902a may return an authenticated transaction request 1946, and the user agent 1980 may send the authenticated transaction request 1946 to the blockchain network 1910-2.
[0273] After submitting the transaction to blockchain network 1910-2, user agent 1980 may receive a transaction response 1922 from blockchain network 1910-2. Transaction response 1922 may include a transaction identifier associated with digital asset holder 1902a that is added to blockchain network 1910-2. In some examples, transaction request 1946 and transaction response 1922 are communicated between user agent 1980 and blockchain network 1910-2 using message 1921 (e.g., a JSON message). In some examples, transaction request 1946 and transaction response 1922 are respectively FIG. 2A to FIG. 2D In some examples, in response to transaction response 1922, user agent 1980 may send a notification (e.g., FIG. 2A to FIG. 2D In some examples, user agent 1980 may send a notification to a website 1992 or application 1994 associated with requestor 1990.
[0274] In some examples, user agent 1980 may determine to use multiple digital asset exchanges 1982 to implement the conversion of one type of digital asset to another type of digital asset. For example, if digital asset A and digital asset B are not popular (e.g., widely used) cryptocurrencies, user agent 1980 may not be able to find a single digital asset exchange 1982 to perform the conversion from digital asset A to digital asset B. In some examples, such as Fig.19D As shown, user agent 1980 may use two or more digital asset exchanges 1982 to perform a conversion of transaction amount 1977 from digital asset A to digital asset B.
[0275] The user agent 1980 may determine that a single digital asset exchange 1982 is not capable of converting digital asset A into digital asset B. In some examples, the user agent 1980 may store information about digital asset exchanges 1982, such as a list of digital asset exchanges 1982 and their ability to convert one type of digital asset into another type of digital asset. In some examples, the user agent 1980 may communicate with the digital asset exchange 1982 to obtain information about the ability of the digital asset exchange to convert one type of digital asset into another type of digital asset.
[0276] The user agent 1980 may select two or more digital asset exchanges 1982 using one or more intermediate digital currencies (e.g., digital asset C) to perform the conversion from digital asset A to digital asset B. In some examples, the user agent 1980 may identify an exchange sequence (e.g., an inter-ledger operation sequence) that identifies the order in which two or more inter-ledger conversion operations 1984 involving one or more intermediate digital assets (e.g., digital asset C) are to be performed.
[0277] like Fig.19D As shown, user agent 1980 may select digital asset exchange 1982-1 to perform inter-ledger conversion operation 1984-1 to convert transaction amount 1977 from digital asset A to digital asset C. In addition, user agent 1980 may select digital asset exchange 1982-2 to perform inter-ledger conversion operation 1984-2 to convert transaction amount 1977 from digital asset C to digital asset B. Digital asset exchange 1982-1 and digital asset exchange 1982-2 may be separate applications (e.g., decentralized applications or centralized applications). In some examples, digital asset exchange 1982-1 and digital asset exchange 1982-2 may be separate decentralized exchanges (e.g., DEX). In some examples, digital asset exchange 1982-1 is a decentralized exchange (e.g., converting tokens on the same blockchain network 1910), and digital asset exchange 1982-2 is a centralized exchange (e.g., converting tokens across different blockchain networks 1910), or vice versa. In some examples, digital asset exchange 1982-1 and digital asset exchange 1982-2 are separate centralized exchanges. Fig.19D As shown, in some examples, digital asset A may be stored on blockchain network 1910-1, digital asset B may be stored on blockchain network 1910-2, and digital asset C may be stored on blockchain network 1910-3. However, it should be noted that digital asset A, digital asset B, and digital asset C may be stored on one or more blockchain networks 1910. In some examples, digital asset A, digital asset B, and digital asset C may be stored on blockchain network 1910-1. In some examples, digital asset A and digital asset B may be stored on blockchain network 1910-1, and digital asset C may be stored on blockchain network 1910-2 or blockchain network 1910-3.
[0278] The user agent 1980 may send a conversion request 1971 (e.g., a first conversion request) to the digital asset exchange 1982-1. The conversion request 1971 is configured to cause the digital asset exchange 1982-1 to convert the digital asset of the user of the transaction amount 1977 from digital asset A to digital asset C. The user agent 1980 may send a conversion request 1971 (e.g., a second conversion request) to the digital asset exchange 1982-2. The conversion request 1971 is configured to cause the digital asset exchange 1982-2 to convert the digital asset of the user of the transaction amount 1977 from digital asset C to digital asset B. The user agent 1980 may communicate with the digital asset holder 1902a to update the asset information 1907 (e.g., from digital asset A to digital asset C and then to digital asset B) and obtain any required authentication using the user's private key 1904.
[0279] Fig. 20 The system 2000 depicts a browser application 2006a with a user agent 2080 according to one aspect. For example, the computing device 2026 can execute the browser application 2006a, wherein the user agent 2080 is included within the browser application 2006a. The system 2000 can be an example of the system 1900 and can include reference FIG. 19A to FIG. 19D In some examples, system 2000 may be a reference to Figures 1 to 18 In some examples, the browser application 2006a is an example of any one or more of the systems discussed in the present disclosure and may include any of the details discussed with reference to those figures. FIG. 2A to FIG. 2D The browser application 206a may be executed with reference to any of the details discussed with reference to those figures. 19A to 19D Any of the functionality described in the user agent 1980. In some examples, the digital asset holder 2002a is a third-party digital asset holder.
[0280] The browser application 2006a may receive a request for completing a transaction with a requesting party (eg, 19A to 19D 1990) of the requesting party) of the blockchain transaction (e.g. 19A to 19D Transaction information 1975 of the browser application 2006a. In some examples, the browser application 2006a receives the transaction information from web content (e.g., a web page) hosted on a web server. The browser application 2006a may receive the transaction information via a unified protocol that reduces the complexity of facilitating inter-ledger transactions involving one or more blockchain networks. In some examples, the browser application 2006a may receive the transaction information via one or more JavaScript APIs.
[0281] In response to receiving the transaction information, browser application 2006a may cause interface 2036 to be provided (e.g., rendered) on display 2034 of computing device 2026. In some examples, interface 2036 includes a UI prompt rendered by browser application 2006a in a browser tab. Interface 2036 may display an asset list that identifies digital assets (and types of digital assets) associated with the user's digital asset holder 2002a.
[0282] Digital asset holder 2002a can be a reference Figures 1 to 18 In some examples, digital asset holder 2002a is a third-party digital asset holder, and browser application 2006a may use reference Figures 1 to 9 The browser application 2006a may communicate with the third-party digital asset holder using any of the techniques described in the foregoing. The digital asset holder 2002a may be an application or program that stores a private key 2004 for implementing transactions on the blockchain network. In addition, the digital asset holder 2002a includes a shared address 2005a that may identify the location of an account on the blockchain network. The browser application 2006a may communicate with the digital asset holder 2002a via one or more APIs (e.g., API 238) to obtain a list of assets, and then render the list of assets in the interface 2036. In addition, the interface 2036 may also display exchange rate information about the exchange rate for converting one or more digital assets in the digital assets owned by the user into the type of digital asset requested by the requesting party. In order to obtain the exchange rate information, the browser application 2006a may communicate with one or more digital asset exchanges.
[0283] After the user reviews the asset list and exchange rate information, the browser application 2006a may receive a selection of a digital asset type via interface 2036. In response to obtaining the digital asset type via interface 2036, the browser application 2006a may communicate with the digital asset exchange to enable the digital asset exchange to perform an inter-ledger conversion operation to convert the user's digital asset from one digital asset type to the digital asset type requested by the requester. The browser application 2006a may communicate with the blockchain network to initiate a transfer of the user's digital asset to the requester.
[0284] Fig.21 The diagram depicts a system 2100 that depicts a browser application 2106a having a user agent 2180 and a digital asset holder 2102a according to another aspect. In some examples, the digital asset holder 2102a is a native (or built-in) program included within (or associated with) the browser application 2106a. The system 2100 may be an example of the system 1900 and may include reference 19A to 19DIn some examples, system 2100 may be a reference to Figures 1 to 18 Examples of any one or more of the systems discussed herein and may include any of the details discussed with reference to those figures. In some examples, the browser application 2106a is FIG. 2A to FIG. 2D The browser application 2106a may be executed with reference to any of the details discussed with reference to those figures. 19A to 19D Any functionality described in User Agent 1980.
[0285] The browser application 2106a may receive information for completing a transaction with a requesting party (e.g., 19A to 19D 1990) of the requesting party) of the blockchain transaction (e.g. 19A to 19D Transaction information 1975 of the browser application 2106a). In some examples, the browser application 2106a receives the transaction information from web content (e.g., a web page) hosted on a web server. The browser application 2106a can receive the transaction information via a unified protocol that reduces the complexity of facilitating inter-ledger transactions involving one or more blockchain networks. In some examples, the browser application 2106a can receive the transaction information via one or more JavaScript APIs.
[0286] In response to receiving the transaction information, the browser application 2106a may cause an interface 2136 to be provided (e.g., rendered) on a display 2134 of the computing device 2126. In some examples, the interface 2136 includes a UI prompt rendered by the browser application 2106a. In some examples, the interface 2136 is rendered by a browser tab. The interface 2236 may display an asset list that identifies the digital assets (and types of digital assets) associated with the user's digital asset holder 2102a. The digital asset holder 2102a includes a private key 2104 and a shared address 2105a. In some examples, the browser application 2106a may communicate with the digital asset holder 2102a without using an API. In addition, the interface 2136 may also display exchange rate information about the exchange rate for converting one or more digital assets in the digital assets owned by the user into the digital asset type requested by the requesting party. In order to obtain the exchange rate information, the browser application 2106a may communicate with one or more digital asset exchanges.
[0287] After the user reviews the asset list and exchange rate information, the browser application 2106a may receive a selection of a digital asset type via interface 2136. In response to obtaining the digital asset type via interface 2136, the browser application 2106a may communicate with the digital asset exchange to cause the digital asset exchange to perform an inter-ledger conversion operation to convert the user's digital asset from one digital asset type to the digital asset type requested by the requester. The browser application 2106a may communicate with the blockchain network to initiate a transfer of the user's digital asset to the requester.
[0288] Fig. 22 The system 2200 depicts an operating system 2232 with a user agent 2280 according to one aspect. For example, the computing device 2226 includes the operating system 2232, wherein the user agent 2280 is included within (or as part of) the operating system 2232. The system 2200 may be an example of the system 1900 and may include reference 19A to 19D In some examples, system 2200 may be a reference to Figures 1 to 18 The operating system 2232 may execute reference to any one or more of the systems discussed herein and may include any of the details discussed with reference to those figures. 19A to 19D Any of the functionality described in the user agent 1980. In some examples, the digital asset holder 2202a is a third-party digital asset holder or a native (built-in) digital asset holder.
[0289] The operating system 2232 is system software that manages computer hardware and software resources and provides general services for computing programs. In some examples, the operating system 2232 is an operating system designed for a larger display 234 (such as a laptop or desktop) (e.g., sometimes referred to as a desktop operating system). In some examples, the operating system 2232 is an operating system for a smaller display 234 (such as a tablet or smartphone) (e.g., sometimes referred to as a mobile operating system).
[0290] The operating system 2232 may receive a request for completing the transaction with the requesting party (e.g., 19A to 19D 1990) of the requesting party) of the blockchain transaction (e.g. 19A to 19D In some examples, the operating system 2232 may receive the transaction information from one or more APIs defined on the operating system 2232. The operating system 2232 may receive the transaction information from web content (e.g., a web page) hosted on a web server or an application executed on the operating system 2232.
[0291] In response to receiving the transaction information, operating system 2232 may cause interface 2236 to be provided (e.g., rendered) on display 2234 of computing device 2226. In some examples, interface 2236 includes a UI prompt rendered by an operating system component. Interface 2236 may display an asset list that identifies digital assets (and types of digital assets) associated with the user's digital asset holder 2202a.
[0292] Digital asset holder 2202a can be a reference Figures 1 to 18 In some examples, the digital asset holder 2202a is a third-party digital asset holder, and the operating system 2232 may use the reference Figures 1 to 9 The operating system 2232 may communicate with the digital asset holder 2202a to obtain a list of assets, and then render the list of assets in the interface 2236. In addition, the interface 2236 may also display information about the exchange rate for converting one or more digital assets owned by the user into a digital asset type requested by the requesting party. In order to obtain the exchange rate information, the browser application 2206a may communicate with one or more digital asset exchanges.
[0293] After the user reviews the asset list and exchange rate information, the operating system 2232 may receive a selection of a digital asset type via the interface 2236. In response to obtaining the digital asset type via the interface 2236, the operating system 2232 may communicate with the digital asset exchange to cause the digital asset exchange to perform an inter-ledger conversion operation to convert the user's digital asset from one digital asset type to the digital asset type requested by the requester. The operating system 2232 may communicate with the blockchain network to initiate a transfer of the user's digital asset to the requester.
[0294] Fig.23 2300 is a flowchart depicting example operations for managing an inter-ledger transaction involving one or more blockchain networks according to one aspect. For example, flowchart 2300 may implement an inter-ledger transfer of a digital asset from a user to a requesting party. In some examples, the flowchart may be executed by a user agent (e.g., 19A to 19DThe user agent may be incorporated into a browser application. In some examples, the user agent may be incorporated into a non-browser application. In some examples, the user agent may be incorporated into an operating system of a computing device, where the operating system may be a mobile platform or a desktop platform. The user agent may act as an intermediary for transactions involving one or more blockchain networks.
[0295] Although flowchart 2300 is about 19A to 19D 1900, but the flowchart 2300 can be applied to any of the embodiments discussed herein. Fig.23 Flowchart 2300 illustrates the operation in sequential order, but it should be understood that this is merely an example and may include additional or alternative operations. Further, Fig.23 The operations and related operations may be performed in an order different from that shown, or in a parallel or overlapping manner.
[0296] Operation 2302 includes receiving, by an application executable by computing device 1926, transaction information 1975 for completing a blockchain transaction with requestor 1990, wherein transaction information 1975 specifies a first digital asset type (e.g., digital asset type 1909a) and a transaction amount 1977, and the first type of digital asset (e.g., digital asset A) is stored on a first blockchain network (e.g., blockchain network 1910-1). The application includes a user agent 1980 configured to receive transaction information 1975. In some examples, the application is a browser application. In some examples, the application is a non-browser application. In some examples, the application is an operating system.
[0297] Operation 2304 includes providing, on computing device 1926, an interface 1936 for receiving a selection of a second digital asset type (e.g., digital asset type 1909b) associated with digital asset holder 1902a, wherein the second type of digital asset (e.g., digital asset B) is stored on a first blockchain network (e.g., blockchain network 1910-1) or a second blockchain network (e.g., blockchain network 1910-2). In some examples, digital asset A and digital asset B are stored on a single blockchain network 1910. In some examples, digital asset A and digital asset B are stored on different blockchain networks 1910. User agent 1980 may provide interface 1936. In some examples, interface 1936 includes a UI prompt. In some examples, user agent 1980 may obtain asset list 1944 associated with digital asset holder 1902a, wherein interface 1936 displays asset list 1944, and asset list 1944 identifies one or more types of digital assets associated with digital asset holder 1902a, including a second type of digital asset (e.g., digital asset A). In some examples, user agent 1980 receives conversion rate information 1979 from digital asset exchange 1982, wherein interface 1936 displays conversion rate information 1979. Conversion rate information 1979 includes information indicating an conversion rate for converting a user's digital asset of transaction amount 1977 from a second digital asset type (e.g., digital asset A) to a first digital asset type (e.g., digital asset B) using digital asset exchange 1982. In some examples, user agent 1980 may select digital asset exchange 1982 from multiple digital asset exchanges 1982 based on conversion rate information 1979 associated with a corresponding digital asset exchange 1982 in the multiple digital asset exchanges 1982.
[0298] Operation 2306 includes: sending, by the application, a conversion request 1971 to a digital asset exchange 1982, wherein the conversion request 1971 is configured to cause the digital asset exchange 1982 to convert the digital asset of the user of the transaction amount 1977 in the digital asset holder 1902a from the second digital asset type (e.g., digital asset A) to the first digital asset type (e.g., digital asset B). In some examples, the digital asset exchange 1982 includes a decentralized application executed on the blockchain network 1910 (e.g., converting tokens on the same blockchain network 1910). In some examples, the digital asset exchange 1982 includes a centralized application (e.g., converting tokens on different blockchain networks 1910). Operation 2308 includes: sending, by the application, a transaction request 1946 to initiate completion of a blockchain transaction to the first blockchain network (e.g., blockchain network 1910-2) or the second blockchain network (e.g., blockchain network 1910-1).
[0299] In some examples, user agent 1980 determines to use digital asset exchange 1982-1 and digital asset exchange 1982-2 to convert the digital asset of the user of transaction amount 1977 from the second digital asset type (e.g., digital asset A) to the first digital asset type (e.g., digital asset B). In some examples, user agent 1980 may send a first conversion request (e.g., conversion request 1971) to digital asset exchange 1982-1, wherein the first conversion request is configured to cause digital asset exchange 1982-1 to convert the digital asset of the user of transaction amount 1977 from the second digital asset type (e.g., digital asset A) to the third digital asset type (e.g., digital asset C). In some examples, digital asset A, digital asset B, and digital asset C are stored on the same blockchain network 1910. In some examples, digital asset A, digital asset B, and digital asset C are stored on two or more different blockchain networks 1910. User agent 1980 may send a second conversion request (e.g., conversion request 1971) to digital asset exchange 1982-2 (or digital asset exchange 1982-1), wherein the second conversion request is configured to cause digital asset exchange 1982-2 (or digital asset exchange 1982-1) to convert the user's digital assets of transaction amount 1977 from a third digital asset type (e.g., digital asset C) to a first digital asset type (e.g., digital asset B).
[0300] According to some aspects, the method (e.g., operation) may include one or more of the following features (or any combination thereof). The method may include: obtaining an asset list associated with a digital asset holder, wherein an interface displays the asset list, the asset list identifying one or more digital asset types associated with the digital asset holder, including a second digital asset type. The method may include: receiving exchange rate information from a digital asset exchange, wherein the interface displays the exchange rate information, the exchange rate information including information indicating an exchange rate for converting a user's digital asset of a transaction amount from a second digital asset type to a first digital asset type using a digital asset exchange. The method may include: selecting a digital asset exchange from a plurality of digital asset exchanges based on the exchange rate information associated with a corresponding digital asset exchange in a plurality of digital asset exchanges. The digital asset exchange is a first digital asset exchange, wherein the method includes: determining to use the first digital asset exchange and the second digital asset exchange to convert the user's digital asset of the transaction amount from a second digital asset type to a first digital asset type. The method further includes: sending a first conversion request to a first digital asset exchange, the first conversion request being configured to cause the first digital asset exchange to convert the digital assets of the user of the transaction amount from the second digital asset type to the third digital asset type; and sending a second conversion request to a second digital asset exchange, the second conversion request being configured to cause the first digital asset exchange to convert the digital assets of the user of the transaction amount from the third digital asset type to the first digital asset type. The application includes a browser application, and the browser application receives transaction information from a website. The digital asset holder is the first digital asset holder, the transaction information includes a shared address of the second digital asset holder, and the second digital asset holder is associated with the requesting party. The transaction request is configured to cause the digital assets of the user of the transaction amount to be associated with the second digital asset holder on the blockchain network.
[0301] According to one aspect, a system includes: at least one processor; and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause one processor to: receive transaction information for completing a blockchain transaction with a requester, the transaction information specifying a first digital asset type, a transaction amount, and a shared address of a first digital asset holder associated with the requester; provide an interface on a computing device for receiving a selection of a second digital asset type associated with a second digital asset holder associated with a user of the computing device; send a conversion request to a digital asset exchange, the conversion request being configured to cause the digital asset exchange to convert a digital asset of a user of the transaction amount in the second digital asset holder from the second digital asset type to the first digital asset type; and send a transaction request to a blockchain network to associate the transaction amount with the first digital asset holder.
[0302] According to some aspects, the system may include one or more of the following features (or any combination thereof). The executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to perform the following: obtain an asset list associated with a second digital asset holder, the asset list identifying one or more digital asset types associated with the second digital asset holder, including the second digital asset type. The executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to perform the following: send an authentication request to a third-party digital asset holder via an application programming interface (API), the authentication request being a request to authenticate a transaction request using a private key stored by the third-party digital asset holder. The executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to perform the following: receive exchange rate information from a digital asset exchange, wherein the interface displays the exchange rate information, the exchange rate information including information indicating the exchange rate for converting a user's digital asset of a transaction amount from a second digital asset type to a first digital asset type using a digital asset exchange. The executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to perform the following: select a digital asset exchange from a plurality of digital asset exchanges based on the exchange rate information associated with a corresponding digital asset exchange in a plurality of digital asset exchanges. The digital asset exchange is a first digital asset exchange, wherein the executable instructions include instructions that, when executed by at least one processor, cause the at least one processor to perform the following: determine to use the first digital asset exchange and the second digital asset exchange to convert the digital assets of the user of the transaction amount from the second digital asset type to the first digital asset type; send a first conversion request to the first digital asset exchange, the first conversion request being configured to cause the first digital asset exchange to convert the digital assets of the user of the transaction amount from the second digital asset type to the third digital asset type; and send a second conversion request to the second digital asset exchange, the second conversion request being configured to cause the first digital asset exchange to convert the digital assets of the user of the transaction amount from the third digital asset type to the first digital asset type.
[0303] According to one aspect, a non-transitory computer-readable medium stores executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations, wherein the operations include: receiving, by a browser application executable by a computing device, transaction information for completing a blockchain transaction with a requesting party, the transaction information specifying a first digital asset type and a transaction amount; providing an interface on the computing device, the interface for receiving a selection of a second digital asset type associated with a digital asset holder; sending, by the browser application, a conversion request to a digital asset exchange, the conversion request being configured to cause the digital asset exchange to convert a digital asset of a user of the transaction amount among the digital asset holders from the second digital asset type to the first digital asset type; and sending, by the browser application, a transaction request to a blockchain network to initiate completion of the blockchain transaction.
[0304] According to some aspects, the operation may include one or more of the following features (or any combination thereof). The operation may include: obtaining a list of assets associated with a digital asset holder, wherein the interface displays the list of assets, the list of assets identifying one or more digital asset types associated with the digital asset holder, including the second digital asset type. The operation may include: receiving conversion rate information from a digital asset exchange, wherein the interface displays the conversion rate information, the conversion rate information including information indicating the conversion rate for converting a digital asset of a user of a transaction amount from a second digital asset type to a first digital asset type using the digital asset exchange. The operation may include: selecting a digital asset exchange from a plurality of digital asset exchanges based on the conversion rate information associated with a corresponding digital asset exchange in the plurality of digital asset exchanges. The digital asset exchange is a first digital asset exchange, wherein the operation may include: determining to use the first digital asset exchange and the second digital asset exchange to convert the digital assets of the user of the transaction amount from the second digital asset type to the first digital asset type; sending a first conversion request to the first digital asset exchange, the first conversion request being configured to cause the first digital asset exchange to convert the digital assets of the user of the transaction amount from the second digital asset type to the third digital asset type; and sending a second conversion request to the second digital asset exchange, the second conversion request being configured to cause the first digital asset exchange to convert the digital assets of the user of the transaction amount from the third digital asset type to the first digital asset type.
[0305] FIG. 24A to FIG. 24E A system 2400 is illustrated for registering a digital asset holder 2402 as a default digital asset holder 2402-1 and / or using the default digital asset holder 2402-1 to facilitate a transaction 2412 on a blockchain network 2410. The system 2400 may be a reference Figures 1 to 23Examples of any of the systems described may include any of the details discussed with reference to those figures.
[0306] System 2400 provides a technical solution that enables blockchain transactions (e.g., transactions 2412) to be initiated from applications 2406 other than digital asset holders 2402. In some computing environments (e.g., mobile environments), blockchain transactions can only be processed using digital asset holders (e.g., native applications installed on a user's device). For example, in some mobile environments, browser application extensions may be restricted or not allowed, so digital asset holders implemented as extensions cannot process blockchain transactions. According to some conventional approaches, a user may have to launch and use a digital asset holder on the user's device to initiate a blockchain transaction. However, according to the techniques discussed herein, transactions 2412 may be initiated using applications 2406 other than digital asset holders 2402, wherein, in some examples, applications 2406 may communicate directly with default digital asset holders 2402-1 to authenticate transactions 2412 and submit transactions to blockchain network 2410.
[0307] System 2400 includes a computing device 2426 having an operating system 2432 configured to execute applications including digital asset holder 2402 and application 2406. Operating system 2432 is system software that manages computer hardware, software resources and provides general services for computing programs. In some examples, operating system 2432 is an operating system for a smaller display 2434 (such as a tablet or smartphone) (e.g., sometimes referred to as a mobile operating system). As further described below, operating system 2432 can register a specific digital asset holder 2402 as a default digital asset holder 2402-1, and enable information to be passed between application 2406 and default digital asset holder 2402-1 (e.g., intent request 2481, intent response 2483) to add transaction 2412 to blockchain network 2410.
[0308] The identification of a particular digital asset holder 2402 as the default digital asset holder 2402-1 may be stored as a setting (e.g., an operating system (OS) setting) in a setting storage 2455 of a computing device 2426. The setting storage 2455 may be a memory device associated with the operating system 2432. The setting storage 2455 may store other OS settings. One or more digital asset holders 2402 may be downloaded and installed on the operating system 2432 of the computing device 2426. In some examples, the computing device 2426 is a mobile computing device (e.g., a smartphone, a tablet, etc.), and the digital asset holder 2402 is a native application (e.g., an iOS application, an Android application, a Linux application, etc.) that can be downloaded from a digital media store and installed on the operating system 2432.
[0309] According to the techniques discussed herein, a user may register one of the digital asset holders 2402 as a default digital asset holder 2402-1, and the operating system 2432 may enable information (e.g., intent request 2481, intent response 2483) to be passed between the default digital asset holder 2402-1 and the application 2406 (other than the digital asset holder 2402) to enable the addition of a transaction 2412 to the blockchain network 2410. For example, using the techniques discussed herein, the application 2406 (other than the digital asset holder 2402) may access the wallet identity and create a transaction 2412 by communicating directly with the default digital asset holder 2402-1. In some examples, the default digital asset holder 2402-1 is automatically used for subsequent transactions 2412. In some examples, the default digital asset holder 2402-1 is used for subsequent transactions 2412 initiated from the application 2406, the web content 2408, and / or any other application on the computing device 2426. In some examples, more than one default digital asset holder 2402-1 may be selected for future transactions 2412 (e.g., using one particular default digital asset holder 2402-1 for transactions 2412 originating from a first application, another default digital asset holder 2402-1 for transactions 2412 originating from a second application, and so on).
[0310] A user may use application 2406 to initiate a transaction 2412, and in response to registering one of the digital asset holders 2402 as the default digital asset holder 2402-1, application 2406 and default digital asset holder 2402-1 may communicate with each other (e.g., direct communication) via intent request 2481 and / or intent response 2483.
[0311] Intent request 2481 may be a messaging object used to request an action from another application (e.g., default digital asset holder 2402-1). In some examples, intent request 2481 may specify any activity that may be performed by digital asset holder 2402. In some examples, intent request 2481 is an asset list of digital assets associated with default digital asset holder 2402-1 (e.g., FIG. 2A to FIG. 2D In some examples, the intent request 2481 is a transaction creation request to create a transaction 2412 to be submitted to the blockchain network 2410. In some examples, the intent request 2481 may include transaction details, such as the type of digital asset, the amount, the sender, the receiver, and / or time information. In some examples, after the activity is completed, the default digital asset holder 2402-1 may send an intent response 2483 to the application 2406, wherein the intent response 2483 includes the result of the activity performed by the default digital asset holder 2402-1.
[0312] Intent request 2481 may be a request to obtain a list of assets. In response to receiving intent request 2481, default digital asset holder 2402-1 may generate a list of assets and send intent response 2483 to application 2406, where intent response 2483 includes the list of assets. In some examples, application 2406 may display the list of assets.
[0313] Intent request 2481 may be a request to create transaction 2412. In response to receiving intent request 2481, default digital asset holder 2402-1 may authenticate transaction 2412 using private key 2404. In addition, default digital asset holder 2402-1 may communicate with blockchain network 2410 to add transaction 2412 to blockchain network 2410. In some examples, default digital asset holder 2402-1 may send intent response 2483, wherein intent response 2483 includes the result of transaction 2412 being added to blockchain network 2410. In some examples, default digital asset holder 2402-1 may send authenticated transaction 2412 to application 2406 via intent response 2483, and application 2406 may communicate with blockchain network 2410 to add transaction 2412 to blockchain network 2410.
[0314] The operating system 2432 may define a protocol that allows intent requests 2481 and intent responses 2483 to be passed between the application 2406 and the default digital asset holder 2402-1. In some examples, the protocol is an inter-process communication (IPC) communication link. An IPC communication link may be a method that allows processes (e.g., applications) to transmit messages and data to each other. An IPC communication link may be defined at the operating system level. In some examples, the application 2406 and / or the default digital asset holder 2402-1 may define one or more APIs that enable the application 2406 and the default digital asset holder 2402-1 to communicate with each other.
[0315] In some examples, application 2406 is a native application other than digital asset holder 2402 (e.g., application 2406 does not store private key 2404 for authenticating transaction 2412 to be added to blockchain network 2410). In some examples, application 2406 is a non-browser application. In some examples, application 2406 is a browser application. In some examples, application 2406 and default digital asset holder 2402-1 can communicate with each other to add transaction 2412 to blockchain network 2410 without using a browser application as an intermediary (e.g., without any browser involvement).
[0316] The operating system 2432 includes or defines a registration engine 2467 configured to register the digital asset holder 2402 as the default digital asset holder 2402-1. The registration engine 2467 can be a component of the operating system 2432. The registration engine 2467 can be a portion of the operating system 2432 configured to manage the registration of the digital asset holder 2402 as the default digital asset holder 2402-1 and other functions discussed with reference to the registration engine 2467. In some examples, the registration of the digital asset holder 2402 as the default digital asset holder 2402-1 includes updating a setting (e.g., an OS setting) in the setting storage 2455, wherein the setting identifies the specific digital asset holder 2402 as the default digital asset holder 2402-1.
[0317] In some examples, registration engine 2467 may detect blockchain transaction request 2411 generated on computing device 2426, and in response to blockchain transaction request 2411, registration engine 2467 may determine whether digital asset holder 2402 is registered as default digital asset holder 2402-1.
[0318] In some examples, the blockchain transaction request 2411 is an intent request 2481 generated by the application 2406. For example, the application 2406 displays application content that includes controls (e.g., UI elements, selectable items, etc.) to enable a user to initiate a transaction 2412. In response to the user selection, the application 2406 may generate an intent request 2481, which may be detected by the registration engine 2467. In some examples, the registration engine 2467 may monitor the IPC communication link, and if the intent request 2481 is directed to the digital asset holder 2402, the registration engine 2467 may intercept the intent request 2481 to determine whether the default digital asset holder 2402-1 has been identified in the settings storage 2455. If the digital asset holder 2402 is registered as the default digital asset holder 2402, the operating system 2432 may pass the intent request 2481 to the default digital asset holder 2402-1 to perform the specified action.
[0319] In some examples, blockchain transaction request 2411 is a request generated in response to an interaction with web content 2408. For example, registration engine 2467 may detect blockchain transaction request 2411 from web content 2408 displayed on display 2434 of computing device 2426. In some examples, application 2406 displays web content 2408. Web content 2408 may be displayed via a web view controller of application 2406. In some examples, web content 2408 is displayed by a browser tab. In some examples, a user may select a link to web content 2408 while using application 2406, which may be rendered and displayed by a browser tab associated with the browser application.
[0320] The web content 2408 may include one or more objects 2436 that allow transactions 2412 to be created on the blockchain network 2410. When the object 2436 is called, the registration engine 2467 may intercept the blockchain transaction request 2411 to determine whether the default digital asset holder 2402-1 has been identified in the settings storage 2455. In some examples, the object 2436 is a blockchain computer object. In some examples, the object 2436 is an object exposed by JavaScript. In some examples, the object 2436 is an object exposed by the API. If the blockchain network 2410 is Ethereum, the object 2436 is an Ethereum object (e.g., window.etherum) used to create transactions on the Ethereum blockchain. In some examples, the object 2436 is a type specific to the blockchain network. In some examples, the web content 2408 may include a first object (e.g., object 2436) for creating transactions on a first blockchain network and a second object (e.g., object 2436) for creating transactions on a second blockchain network, where the second blockchain network is different from the first blockchain network. In some examples, the first object and the second object, when selected (eg, invoked, initiated), refer to different callbacks or requests related to a particular transaction 2412 .
[0321] To determine whether a digital asset holder 2402 is registered as a default digital asset holder 2402-1, the registration engine 2467 may determine whether a particular digital asset holder 2402 is identified as a default digital asset holder 2402-1 in the settings storage 2455. The settings storage 2455 may store information about the digital asset holder 2402 registered as the default digital asset holder 2402-1 (e.g., the name of the crypto wallet, an application identifier, etc.). In some examples, the settings storage 2455 may identify any digital asset holder 2402 installed on the operating system 2432, and the settings storage 2455 may include information (e.g., a flag, an indicator, etc.) that identifies one of the digital asset holders 2402 as the default digital asset holder 2402-1. In some examples, the registration engine 2467 may query the settings storage 2455 to determine whether the digital asset holder 2402 is registered as the default digital asset holder 2402-1.
[0322] refer to Fig. 24B, if the digital asset holder 2402 is not registered as the default digital asset holder 2402-1, the registration engine 2467 may render the interface 2451 on the display 2434 of the computing device 2426. The interface 2451 may be configured to receive a user selection of the digital asset holder 2402 as the default digital asset holder 2402-1. In some examples, the registration engine 2467 may render the interface 2451 when the registration engine 2467 determines that at least one digital asset holder 2402 is installed on the computing device 2426 but the default digital asset holder 2402-1 has not been identified in the settings storage 2455. In some examples, the registration engine 2467 may render the interface 2451 when the registration engine 2467 determines that two or more digital asset holders 2402 are installed on the computing device 2426 but the default digital asset holder 2402-1 has not been identified in the settings storage 2455.
[0323] Interface 2451 may display information identifying one or more digital asset holders 2402 associated with computing device 2426 (e.g., installed on computing device 2426). Fig. 24B As shown, interface 2451 may display information identifying digital asset holder 2402a and digital asset holder 2402b. Digital asset holder 2402a and digital asset holder 2402b may be separate native applications installed on computing device 2426. Interface 2451 may allow a user to select one of digital asset holder 2402a or digital asset holder 2402b as the default digital asset holder 2402-1.
[0324] In some examples, if only one digital asset holder 2402 is installed on the computing device 2426 but a default digital asset holder 2402-1 has not been identified in the settings storage 2455, the registration engine 2467 may automatically select the only digital asset holder 2402 as the default digital asset holder 2402-1, wherein the registration engine 2467 does not render the interface 2451. Instead, the operating system 2432 may pass an intent request 2481 to the default digital asset holder 2402-1 to initiate an action at the default digital asset holder 2402-1. The action may be any action that can be performed by the digital asset holder 2402. In some examples, the action includes: generating an asset list (e.g., FIG. 2A to FIG. 2D2406) and returns the list of assets to the application 2406. In some examples, the action includes: authenticating the transaction 2412 using the private key 2404 and returning the authenticated transaction 2412 to the application 2406, wherein the application 2406 communicates with the blockchain network 2410 to add the transaction 2412 to the blockchain network 2410. In some examples, the action includes: authenticating the transaction 2412, communicating with the blockchain network 2410 to add the transaction 2412 to the blockchain network 2410, and returning the result of the transaction 2412 to the application 2406.
[0325] In response to receiving a user selection of a default digital asset holder 2402-1 via the interface 2451, the registration engine 2467 may update the settings store 2455 to indicate the user's selection as the default digital asset holder 2402-1. For example, if the user selects digital asset holder 2402a on the interface 2451, the registration engine 2467 updates the settings store 2455 to indicate that the default digital asset holder 2402-1 is digital asset holder 2402a. In some examples, the default digital asset holder 2402-1 identified in the settings store 2455 is used for future (subsequent) transactions 2412 initiated from the application 2406, web content 2408, and / or any other application executable by the operating system 2432. In some examples, the default digital asset holder 2402-1 is used for the current transaction 2412 but not for subsequent transactions 2412. In some examples, multiple default digital asset holders 2402-1 may be identified, for example, one default digital asset holder 2402-1 for transactions 2412 originating from an application 2406, another default digital asset holder 2402-1 for transactions 2412 originating from another application 2406, and in some examples, yet another default digital asset holder 2402-1 for transactions originating from web content 2408.
[0326] In some examples, the selected default digital asset holder 2402-1 is used for the current transaction 2412, wherein the interface 2451 is rendered again when a subsequent transaction 2412 is initiated. In some examples, the selected default digital asset holder 2402-1 is used for the current transaction and future (subsequent) transactions, wherein the interface 2451 is not rendered again when a subsequent transaction 2412 is initiated (e.g., from the application 2406, the web content 2408, and / or any other application of the computing device 2426). In some examples, the interface 2451 includes a selectable control 2499 that enables the user to select whether the default digital asset holder 2402-1 is used for the current transaction 2412 (e.g., "this time") or for the current transaction and future transactions (e.g., "always"). In other words, the selectable control 2499 may permit the user to select a particular digital asset holder 2402 as the default digital asset holder 2402-1 for a one-time transaction (e.g., temporarily) or for all transactions (e.g., permanently). In some examples, if the temporary option is selected, the settings storage 2455 is not updated to identify the default digital asset holder 2402-1. In some examples, if the temporary option is selected, the settings storage 2455 is updated to identify the default digital asset holder 2402-1, and after the transaction 2412 is completed, the settings in the settings storage 2455 are reset to a state that does not indicate the default digital asset holder 2402-1. If the permanent option is selected, the settings in the settings storage 2455 are updated to identify the selected digital asset holder 2402.
[0327] refer to Fig.24C , if the digital asset holder 2402 is not registered as the default digital asset holder 2402-1, the registration engine 2467 may render the interface 2431 on the display 2434 of the computing device 2426. In some examples, when the digital asset holder 2402 is not registered as the default digital asset holder 2402-1 and no digital asset holder 2402 is installed on the operating system 2432, the registration engine 2467 renders the interface 2431. The interface 2431 may include information to prompt the user to install a specific digital asset holder 2402. The interface 2431 may identify one or more digital asset holders 2402 for potential installation. The interface 2431 may identify the digital asset holder 2402c and the digital asset holder 2402d. The digital asset holder 2402c and the digital asset holder 2402d are native applications that are not installed on the computing device 2426.
[0328] In some examples, interface 2431 may include an installation link 2449 that, when selected, causes initiation of installation of a particular digital asset holder 2402 on computing device 2426. In some examples, when installation link 2449 is selected, a digital media store application (e.g., Play Store, Apple Store, etc.) is launched and an installation page corresponding to digital asset holder 2402 is displayed, where a user can download and install digital asset holder 2402 from the installation page. Fig.24C As shown, interface 2431 may include an installation link 2449 associated with digital asset holder 2402c, which, when selected, facilitates the installation of digital asset holder 2402c. Interface 2431 may include an installation link 2449 associated with digital asset holder 2402d, which, when selected, facilitates the installation of digital asset holder 2402d.
[0329] As indicated above, the registration engine 2467 may detect the blockchain transaction request 2411 generated on the computing device 2426, and in response to the blockchain transaction request 2411, the registration engine 2467 may determine whether the digital asset holder 2402 is registered as the default digital asset holder 2402-1. If the digital asset holder 2402 is not registered as the default digital asset holder 2402-1, the registration engine 2467 may cause an interface (e.g., interface 2451, interface 2431) to be rendered, which is used to allow the user to register the digital asset holder 2402 as the default digital asset holder 2402-1.
[0330] In some examples, referring to FIG. Fig.24E , the user may use the computing device 2426 to render the OS settings interface 2457 (e.g., Fig.24D and Fig.24E ), and the user may select a specific digital asset holder 2402 from a list of available digital asset holders 2402 (e.g., digital asset holder 2402a, digital asset holder 2402b) to use as the default digital asset holder 2402-1. The list may include any digital asset holder 2402 installed on the operating system 2432 of the computing device 2426. Fig.24D As shown, the user has selected digital asset holder 2402a as the default digital asset holder 2402-1, where the OS settings interface 2457 displays an indicator 2495 that visually identifies digital asset holder 2402a as the default digital asset holder 2402-1. Indicator 2495 can be a computer icon, a symbol, and / or a specific text appearance (font color, highlighting, italics, etc., or some combination of these), etc. In some examples, reference Fig.24E , the operating system 2432 (e.g., the registration engine 2467) may receive a change to the default digital asset holder 2402-1 that switches the default digital asset holder 2402-1 from the digital asset holder 2402a to the digital asset holder 2402b via the OS settings interface 2457. The registration engine 2467 may update the settings in the settings storage 2455 and update the indicator 2495 to visually identify the digital asset holder 2402b as the default digital asset holder 2402-1.
[0331] Fig.25 A system 2500 is illustrated for registering a digital asset holder 2502 as a default digital asset holder 2502-1 and using the default digital asset holder 2502-1 to facilitate a transaction 2512 on a blockchain network 2510. The system 2500 may be FIG. 24A to FIG. 24E 2400 and may include any of the details discussed with reference to those figures. For example, system 2500 may be based on reference FIG. 24A to FIG. 25 E to register the default digital asset holder 2502-1. In addition, the system 2500 may be a reference Figures 1 to 23 Examples of any of the systems described may include any of the details discussed with reference to those figures.
[0332] System 2500 includes a computing device 2526 having an operating system 2532. Operating system 2532 defines a device application programming interface (API) 2540 that is configured to exchange information (e.g., intent request 2581, intent response 2583) between default digital asset holder 2502-1 and web content 2508 (and in some examples, application 2506). Device API 2540 can be an API defined at the operating system level of computing device 2526. FIG. 24A to FIG. 24E In the system 2400, the application 2406 generates the intent request 2481 (and receives the intent response 2583). In other words, the application 2406 and the default digital asset holder 2402-1 communicate directly with each other. Fig.25In the system 2500 of the present invention, the device API 2540 detects the generation of a transaction 2512 from the web content 2508 and communicates directly with the default digital asset holder 2502-1. For example, the device API 2540 generates an intent request 2581 (and receives an intent response 2583), and the device API 2540 notifies the website and / or application 2506 of the web content 2508 of the result via notification 2597. The system 2500 may have the following technical benefits: transactions 2512 from web content 2508 are facilitated on the blockchain network 2510 with little (or no) browser involvement. For example, although a browser application may be used to render the web content 2508 (in some examples), the browser application is not used as an intermediary to process the transaction 2512. Instead, the device API 2540 is used as an intermediary between the web content 2508 and the default digital asset holder 2502-1.
[0333] In further detail, the user can use application 2506 to render web content 2508. Application 2506 can be a native application installed on operating system 2532, and application 2506 can display a link to web content 2508. In some examples, application 2506 is a non-browser application. In some examples, application 2506 is a browser application. The user can select a link to web content 2508, which causes the web content to be displayed (e.g., a web view controller of application 2506, a browser tab of a browser application, a custom browser tab of a browser application, etc.).
[0334] Web content 2508 may include one or more objects 2536. In some examples, object 2536 is a blockchain computer object. In some examples, object 2536 is an object exposed by JavaScript. In some examples, object 2536 is an object exposed by an API. If blockchain network 2510 is Ethereum, object 2536 is an Ethereum object (e.g., window.etherum) used to create a transaction on the Ethereum blockchain. In some examples, object 2536 is a type specific to the blockchain network. In some examples, web content 2508 may include a first object (e.g., object 2536) for creating a transaction on a first blockchain network and a second object (e.g., object 2536) for creating a transaction on a second blockchain network, where the second blockchain network is different from the first blockchain network. In some examples, the first object and the second object refer to different callbacks or requests related to a particular transaction 2512 when selected (e.g., called, initiated).
[0335] The user may select a particular control on the web content 2508, which causes the object 2536 to be invoked. When the object 2536 is invoked (e.g., selected, initiated, etc.), the device API 2540 detects the blockchain transaction request 2511. In some examples, when the object 2536 is invoked, a method is called, and the called method can be considered as the blockchain transaction request 2511. In response to the blockchain transaction request 2511, the device API 2540 generates an intent request 2581, which is sent to the default digital asset holder 2502-1.
[0336] Intent request 2581 may be a messaging object used to request an action from another application (e.g., default digital asset holder 2502-1). As indicated above, device API 2540 generates intent request 2581. In some examples, intent request 2581 may specify any activity that may be performed by digital asset holder 2502. In some examples, intent request 2581 is an asset list (e.g., FIG. 2A to FIG. 2D The intent request 2581 may indicate an activity to be performed by the default digital asset holder 2502-1 and information required by the digital asset holder 2502-1 to perform the activity. In some examples, after the activity is completed, the default digital asset holder 2502-1 may send an intent response 2583 to the device API 2540, wherein the intent response 2583 includes the result of the activity performed by the default digital asset holder 2502-1. The device API 2540 is configured to send a notification 2597 to the website and / or application 2506 of the web content 2508, wherein the notification 2597 may include information from the intent response 2583.
[0337] Intent request 2581 may be a request to obtain a list of assets. In response to receiving intent request 2581, default digital asset holder 2502-1 may generate a list of assets and send intent response 2583 to application 2506, wherein intent response 2583 includes the list of assets. In some examples, device API 2540 may send notification 2597 to a website of web content 2508 and / or application 2506, wherein notification 2597 includes the list of assets, which is displayed on a display of the device.
[0338] The intent request 2581 may be a request to create a transaction 2512. In response to receiving the intent request 2581, the default digital asset holder 2502-1 may authenticate the transaction 2512 using the private key 2504. In addition, the default digital asset holder 2502-1 may communicate with the blockchain network 2510 to add the transaction 2512 to the blockchain network 2510. In some examples, the default digital asset holder 2502-1 may send an intent response 2583, wherein the intent response 2583 includes the result of the transaction 2512 being added to the blockchain network 2510. In response to the intent response 2583, the device API 2540 may send a notification 2597 to the website and / or application 2506 of the web content 2508, wherein the notification 2597 includes the result of the transaction 2512 being added to the blockchain network 2510. In some examples, the default digital asset holder 2502-1 may send the authenticated transaction 2512 to the device API 2540 via the intent response 2583, and the device API 2540 communicates with the blockchain network 2510 to add the transaction 2512 to the blockchain network 2510. The device API 2540 may then send a notification 2597 to the website and / or application 2506 of the web content 2508, where the notification 2597 includes the result of the transaction 2512 being added to the blockchain network 2510.
[0339] The operating system 2532 may define a protocol that allows intent requests 2581 and intent responses 2583 to be passed between the device API 2540 and the default digital asset holder 2502-1. In some examples, the protocol is an inter-process communication (IPC) communication link. An IPC communication link may be a method that allows processes (e.g., applications) to transmit messages and data to each other. An IPC communication link may be defined at the operating system level. In some examples, the default digital asset holder 2502-1 may define one or more APIs that enable the device API 2540 and the default digital asset holder 2502-1 to communicate with each other.
[0340] In some examples, application 2506 is a native application other than digital asset holder 2502 (e.g., application 2506 does not store private key 2504 for authenticating transaction 2512 to be added to blockchain network 2510). In some examples, application 2506 is a non-browser application. In some examples, application 2506 is a browser application. In some examples, web content 2508 and / or application 2506 and default digital asset holder 2502-1 can communicate with each other via device API 2540 to add transaction 2512 to blockchain network 2510 without using a browser application as an intermediary (e.g., without any browser involvement).
[0341] In addition, FIG. 24A to FIG. 24E Similar to the system 2400 of FIG. 25, the identification of a particular digital asset holder 2502 as the default digital asset holder 2502-1 can be stored as a setting (e.g., an operating system (OS) setting) in a setting storage 2555 of a computing device 2526. The setting storage 2555 can be a memory device associated with the operating system 2532. The setting storage 2555 can store other OS settings. One or more digital asset holders 2502 can be downloaded and installed on the operating system 2532 of the computing device 2526. In some examples, the computing device 2526 is a mobile computing device (e.g., a smartphone, a tablet, etc.), and the digital asset holder 2502 is a native application (e.g., an iOS application, an Android application, a Linux application, etc.) that can be downloaded from a digital media store and installed on the operating system 2532.
[0342] According to the techniques discussed herein, a user may register one of the digital asset holders 2502 as a default digital asset holder 2502-1, and the operating system 2532 may enable information (e.g., intent request 2581, intent response 2583) to be passed between the default digital asset holder 2502-1 and the device API 2540 for a transaction 2512 initiated on the web content 2508 to enable the transaction 2512 to be added to the blockchain network 2510.
[0343] By default, digital asset holder 2502-1 can FIG. 24A to FIG. 24E The system 2400 may be registered by any of the techniques described in the techniques. For example, the operating system 2532 may execute reference FIG. 24A to FIG. 24E The operating system 2532 may include any of the functionality described in the registration engine 2467, the operating system 2432, and / or the computing device 2426. For example, the operating system 2532 is configured to register the digital asset holder 2502 as the default digital asset holder 2502-1. In some examples, the registration of the digital asset holder 2502 as the default digital asset holder 2502-1 includes updating a setting in the setting storage 2555 (e.g., an OS setting), wherein the setting identifies the specific digital asset holder 2502 as the default digital asset holder 2502-1. The operating system 2532 may detect the blockchain transaction request 2511, and in response to the detection of the blockchain transaction request 2511, may query the setting storage 2555 and render Fig. 24B Interface 2451 or Fig.24C In some examples, the operating system 2532 may render Fig.24D and Fig.24E OS settings interface 2457 to select or change the default digital asset holder 2502-1.
[0344] Fig.26 An example of an operating system 2632 is illustrated that is configured to enable information (e.g., intent request, intent response) to be passed between processes (e.g., applications, APIs) to facilitate the process of adding transactions to a blockchain network. In some examples, the operating system 2632 is FIG. 24A to FIG. 24E 2432 and may include any of the details discussed with reference to those figures. In some examples, the operating system 2632 is Fig.25 2532 and may include any of the details discussed with reference to those figures. However, it should be noted that the operating system 2632 may be an example of any of the systems discussed herein and may include any of the details discussed with reference to any of the figures.
[0345] The operating system 2632 includes a settings storage 2655 and a registration engine 2667. The settings storage 2655 can store settings related to the default digital asset holder 2602-1. The registration engine 2667 can manage the registration of the default digital asset holder 2602-1. In some examples, the operating system 2632 includes a device API 2640. In some examples, the operating system 2632 does not include a device API 2640.
[0346] Operating system 2632 may include a software container 2644 configured to launch and execute applications, including one or more digital asset holders 2602 and application 2606. One of digital asset holders 2602 is identified as default digital asset holder 2602-1 in setting storage 2655. Digital asset holder 2602 may be a native application installed on operating system 2632. Application 2606 is a native application installed on operating system 2632. Application 2606 is not digital asset holder 2602, for example, it does not store a private key of a user for authenticating blockchain transactions. In some examples, application 2606 is a non-browser application. In some examples, application 2606 is a browser application. In some examples, instead of using software container 2644, operating system 2632 defines a virtual machine configured to launch and execute an application. The registration engine 2667 and in some examples the device API 2640 are configured to communicate with applications executing in their containers 2644 via an inter-process communication (IPC) link 2693 - 1 .
[0347] The software container 2644 includes a container 2644a configured to start and execute the digital asset holder 2602 and a container 2644b configured to start and execute the application 2606. In some examples, the digital asset holder 2602 executed in the container 2644a is registered as the default digital asset holder 2602-1. The software container 2644 can be an instance of another operating system. In some examples, the software container 2644a (or virtual machine) shares the OS kernel 2613 with the operating system 2632. In some examples, the software container 2644b (or virtual machine) shares the OS kernel 2613 with the operating system 2632. In some examples, the software container 2644a and the software container 2644b share the same OS kernel 2613. In some examples, the software container 2644a, the software container 2644b and the operating system 2632 do not share the OS kernel 2613 with each other. The OS kernel 2613 is the main interface between the hardware and the process of the computing device. The OS kernel 2613 is the initial program loaded into memory before the boot loader. The OS kernel 2613 may operate on device firmware 2615, which operates on hardware firmware 2617. The software container 2644 (or virtual machine) may be a runtime platform that includes software dependencies required for applications it launches and executes, such as a specific version of a programming language runtime and other software libraries that assist in executing applications.
[0348] In some examples, the operating system 2632 defines an IPC link 2693-2 between a container 2644a executing a digital asset holder 2602 and a container 2644b executing an application 2606. In some examples, an intent request may be sent from container 2644b to container 2644a via an IPC link 2693-2, and an intent request may be sent from container 2644a to container 2644b via an IPC link 2693-2. In some examples, the application 2606 generates an intent request, and the digital asset holder 2602 generates an intent request. In some examples, the registration engine 2667 detects the intent request (and in some examples, the intent response) via an IPC link 2693-1. In some examples, the device API 2640 detects a blockchain transaction request from an object exposed by an API called on the web content, and communicates with the digital asset holder 2602 and the application 2606 via an IPC link 2693-1. In some examples, the device API 2640 generates an intent request.
[0349] Fig. 27A system 2700 is illustrated for registering a digital asset holder 2702 as a default digital asset holder 2702-1 and completing a transaction 2712 on a blockchain network 2710 using the default digital asset holder 2702-1. The system 2700 may be an example of any of the systems discussed herein and may include any of the details discussed with reference to any of the figures in the accompanying drawings. In some examples, instead of using a device API (such as reference Fig.25 2706a as an intermediary between web content 2708 and default digital asset holder 2702-1. In some examples, default digital asset holder 2702-1 is a third-party digital asset holder that is not owned or governed by browser application 2706a. In some examples, system 2700 may include any of the techniques for connecting third-party digital asset holders to browser application 2706a, such as those described in reference to Figures 1 to 9 discussed.
[0350] The system 2700 includes a computing device 2726 having an operating system 2732. The operating system 2732 includes a settings storage 2755 that stores settings (e.g., OS settings) related to the default digital asset holder 2702-1. The operating system 2732 includes a registration engine 2767 that is configured to manage the registration of the digital asset holder 2702 as the default digital asset holder 2702-1. The operating system 2732 can execute a browser application 2706a that is configured to generate and render a browser tab. The digital asset holder 2702 can be a native application installed on the operating system 2732.
[0351] Web content 2708 can be displayed on display 2734 of computing device 2726. In some examples, web content 2708 is rendered and displayed by browser application 2706a. In some examples, web content 2708 is rendered and displayed by a browser tab. In some examples, web content 2708 is displayed by another native application (e.g., not the digital asset holder) via a web view controller. A user can use application 2706a to render web content 2708.
[0352] Web content 2708 may include one or more objects 2736. In some examples, object 2736 is a blockchain computer object. In some examples, object 2736 is an object exposed by JavaScript. In some examples, object 2736 is an object exposed by an API. If blockchain network 2710 is Ethereum, object 2736 is an Ethereum object (e.g., window.etherum) used to create a transaction on the Ethereum blockchain. In some examples, object 2736 is a type specific to the blockchain network. In some examples, web content 2708 may include a first object (e.g., object 2736) for creating a transaction on a first blockchain network and a second object (e.g., object 2736) for creating a transaction on a second blockchain network, where the second blockchain network is different from the first blockchain network. In some examples, the first object and the second object refer to different callbacks or requests related to a particular transaction 2712 when selected (e.g., called, initiated).
[0353] The user may select a particular control on the web content 2708, which causes the object 2736 to be invoked. When the object 2736 is invoked (e.g., selected, initiated, etc.), the browser application 2706a detects the blockchain transaction request 2711. In some examples, when the object 2736 is invoked, a method is called, and the called method may be considered as the blockchain transaction request 2711. In response to the blockchain transaction request 2711, when the digital asset holder 2702 is registered as the default digital asset holder 2702-1, the browser application 2706a connects to the default digital asset holder 2702-1 to facilitate adding the transaction 2712 to the blockchain network 2710. For example, the browser application 2706a may Figures 1 to 9 Any of the techniques described in to connect to the default digital asset holder 2702-1.
[0354] In addition, FIG. 24A to FIG. 25 E, the identification of a particular digital asset holder 2702 as a default digital asset holder 2702-1 may be stored as a setting (e.g., an operating system (OS) setting) in a setting storage 2755 of a computing device 2726. The setting storage 2755 may be a memory device associated with an operating system 2732. The setting storage 2755 may store other OS settings. One or more digital asset holders 2702 may be downloaded and installed on an operating system 2732 of a computing device 2726. In some examples, the computing device 2726 is a mobile computing device (e.g., a smartphone, a tablet, etc.), and the digital asset holder 2702 is a native application (e.g., an iOS application, an Android application, a Linux application, etc.) that may be downloaded from a digital media store and installed on the operating system 2732.
[0355] According to the technology discussed herein, a user may register one of the digital asset holders 2702 as a default digital asset holder 2702-1. The default digital asset holder 2702-1 may register a digital asset holder 2702-1 according to the technology discussed herein. FIG. 24A to FIG. 24E The registration engine 2767 may register the digital asset holder 2702 using any of the techniques described in the system 2400. For example, the registration engine 2767 is configured to register the digital asset holder 2702 as the default digital asset holder 2702-1. In some examples, the registration of the digital asset holder 2702 as the default digital asset holder 2702-1 includes updating a setting (e.g., an OS setting) in the setting storage 2755, wherein the setting identifies the specific digital asset holder 2702 as the default digital asset holder 2702-1. In some examples, the registration engine 2767 may detect the blockchain transaction request 2711, and in response to the detection of the blockchain transaction request 2711, may query the setting storage 2755 and render Fig. 24B Interface 2451 or Fig.24C In some examples, the registration engine 2767 may render Fig.24D and Fig.24E OS settings interface 2457 to select or change the default digital asset holder 2702-1.
[0356] In response to object 2736 being retrieved, when the default digital asset holder 2702-1 is identified in the settings storage 2755, the browser application 2706a may connect to the default digital asset holder 2702-1 to process the transaction 2712. In some examples, the browser application 2706a communicates with the default digital asset holder 2702-1 to obtain the authenticated transaction 2712. For example, the browser application 2706a may send a transaction request to the default digital asset holder 2702-1, where the default digital asset holder 2702-1 authenticates the transaction 2712 using the private key 2704. The authenticated transaction 2712 is returned to the browser application 2706a, and the browser application 2706a communicates with the blockchain network 2710 to add the transaction 2712 to the blockchain network 2710. The browser application 2706a then notifies the website and / or application of the result.
[0357] Fig.282800 is a flowchart depicting example operations for registering a digital asset holder as a default digital asset holder and / or using a default digital asset holder to process transactions on a blockchain network according to one aspect. The operations may be performed by an operating system of a mobile computing device (such as a smartphone or laptop). In some examples, the operating system is a mobile operating system configured to execute on a smaller display screen. In some examples, the digital asset holder is a native application installed / installable on the operating system. A user may use the application to create a blockchain transaction, and the application may communicate (e.g., directly communicate) with the native application using intents (e.g., intent requests, intent responses) to process blockchain transactions on the blockchain network. Although the operations are about FIG. 24A to FIG. 25 Although the system 2400 of E is described herein, the operations may be performed by any of the systems discussed herein. Fig.28 Flowchart 2800 illustrates the operation in sequential order, but it should be understood that this is merely an example and may include additional or alternative operations. Further, Fig.28 The operations and related operations may be performed in an order different from that shown, or in a parallel or overlapping manner.
[0358] Operation 2802 includes detecting, by an operating system 2432 of a mobile computing device (e.g., computing device 2426), a blockchain transaction request 2411 from a native application (e.g., application 2406). In some examples, blockchain request 2411 is an intent request 2481.
[0359] Operation 2804 includes determining whether digital asset holder 2402 is registered as default digital asset holder 2402-1 in response to blockchain transaction request 2411. In some examples, to determine whether default digital asset holder 2402-1 has been registered, setting storage 2455 may be queried to determine whether (and which) digital asset holder 2402 has been identified as default digital asset holder 2402-1.
[0360] Operation 2806 includes: in response to the digital asset holder 2402 being determined to be registered as the default digital asset holder 2402-1, communicating from the native application to the default digital asset holder 2402-1 an intent request 2481 to process a blockchain transaction (e.g., transaction 2412). Operation 2808 includes: communicating from the default digital asset holder 2402-1 to the native application an intent response 2483, the intent response 2483 identifying the result of the blockchain transaction. The intent request 2481 is configured to cause the default digital asset holder 2402-1 to authenticate the blockchain transaction and communicate with the blockchain network 2410 to add the blockchain transaction to the blockchain network 2410. In some examples, the intent request 2481 is communicated via an inter-process communication link defined on the operating system 2432 of the mobile computing device (e.g., Fig.26 IPC link 2693-2) passed.
[0361] In some examples, the operations include: in response to the digital asset holder 2402 not being determined to be registered as the default digital asset holder 2402-1, rendering an interface 2451 on the display 2434 of the mobile computing device, the interface being configured to receive a user selection of the digital asset holder 2402 as the default digital asset holder 2402-1. In some examples, in response to receiving a user selection of the digital asset holder 2402 as the default digital asset holder 2402-1, the operations include: updating a settings store 2455 that identifies the digital asset holder 2402 as the default digital asset holder 2402-1. In some examples, in response to the digital asset holder 2402 not being determined to be registered as the default digital asset holder 2402-1, the operations include: rendering an interface 2431 on the display 2434 of the mobile computing device, the interface 2431 being configured to prompt a user to install a specific digital asset holder 2402.
[0362] In some examples, the operations include: rendering an operating system settings interface 2457 on a display 2434 of the mobile computing device, the operating system settings interface 2457 identifying the first digital asset holder 2402a and the second digital asset holder 2402b, the operating system settings interface 2457 displaying an indicator 2495 that visually identifies the first digital asset holder 2402a as the default digital asset holder 2402-1. In some examples, the operations include: receiving a change to the default digital asset holder 2402-1 via the operating system settings interface 2457, the change switching the default digital asset holder 2402-1 from the first digital asset holder 2402a to the second digital asset holder 2402b; and updating the indicator 2495 to visually identify the second digital asset holder 2402b as the default digital asset holder 2402-1.
[0363] In some aspects, the technology described herein relates to a method that further includes: in response to a digital asset holder not being determined to be registered as a default digital asset holder, rendering an interface on a display of a computing device, the interface configured to receive a user selection of the digital asset holder as a default digital asset holder.
[0364] In some aspects, the technology described herein rela...
Claims
1. A method comprising: receiving, via an application programming interface of the application, from a digital asset holder that manages a private key used to access data on the blockchain network, an authenticated transaction request to add a transaction to the blockchain network; The application sends the authenticated transaction request to the blockchain network; receiving, by the application, a transaction response from the blockchain network, the transaction response comprising a transaction identifier of the transaction added to the blockchain network; as well as A notification message is sent to the digital asset holder via the application programming interface of the application, wherein the notification message includes the transaction identifier.
2. The method of claim 1, further comprising: rendering, by the application, web content having user-selectable options for initiating the transaction on the blockchain network; as well as In response to receiving a selection of the user-selectable item, a request is sent to the digital asset holder to authenticate the transaction.
3. The method according to claim 1 or 2, further comprising: rendering, by the application, web content having user-selectable options for initiating the transaction on the blockchain network; In response to receiving a selection of the user-selectable item, sending an asset request to the digital asset holder; as well as An asset list is received from the digital asset holder, the asset list identifying one or more digital assets stored on the blockchain network.
4. The method according to any one of claims 1 to 3, further comprising: A user selectable option is rendered by the application, the user selectable option being used to connect to the digital asset holder that manages the private key used to access the data on the blockchain network.
5. The method of any one of claims 1 to 4, wherein the application programming interface is a first application programming interface, wherein the authenticated transaction request is sent to the blockchain network via a second application programming interface, and the second application programming interface is configured to enable communication between the application and the blockchain network.
6. The method of claim 5, further comprising: The first application programming interface and the second application programming interface are obtained from a storage device associated with the application.
7. The method according to any one of claims 1 to 6, further comprising: Sending a JavaScript object notation message to a node gateway of the blockchain network, wherein the JavaScript object notation message includes the authenticated transaction request.
8. The method of any one of claims 1 to 7, wherein the application comprises a browser application configured to render a browser tab on a display of a computing device.
9. The method of claim 8, wherein the digital asset holder comprises an extension of the browser application, the extension being an extension not owned or governed by the browser application.
10. The method of any one of claims 1 to 9, wherein the digital asset holder comprises a native application, the native application being an application installed on an operating system of a computing device, the native application being a computer program separate from the application.
11. The method of any one of claims 1 to 9, wherein the application is executable by a computing device and the digital asset holder comprises a server application executable by a server computer remote from the computing device.
12. A device comprising: at least one processor; as well as a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to: receiving, via an application programming interface of the browser application, from a digital asset holder that manages a private key used to access data on the blockchain network, an authenticated transaction request to add a transaction to the blockchain network; Sending, by the browser application, the authenticated transaction request to the blockchain network; receiving, by the browser application, a transaction response from the blockchain network, the transaction response comprising a transaction identifier of the transaction added to the blockchain network; as well as A notification message is sent to the digital asset holder via the application programming interface of the browser application, wherein the notification message includes the transaction identifier.
13. The apparatus of claim 12, wherein the executable instructions include instructions that, when executed by the at least one processor, cause the at least one processor to: rendering, by the browser application, web content having user-selectable options for initiating the transaction on the blockchain network; and In response to receiving a selection of the user-selectable item, a request is sent to the digital asset holder to authenticate the transaction, wherein the digital asset holder is configured to authenticate the transaction using the private key.
14. The apparatus of claim 12 or 13, wherein the executable instructions include instructions that, when executed by the at least one processor, cause the at least one processor to: A user selectable option is rendered by the browser application, the user selectable option being used to connect to the digital asset holder who manages the private key used to access the data on the blockchain network.
15. The apparatus of any one of claims 12 to 14, wherein the application programming interface is a first application programming interface, wherein the authenticated transaction request is sent to the blockchain network via a second application programming interface, the second application programming interface being configured to enable communication between the browser application and the blockchain network, wherein the executable instructions include instructions that, when executed by the at least one processor, cause the at least one processor to: The first application programming interface and the second application programming interface are obtained from a storage device associated with the browser application.
16. A non-transitory computer-readable medium storing executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations comprising: Rendering web content having user-selectable options for creating a transaction on a blockchain network; In response to receiving a selection of the user-selectable item, receiving, by the browser application, from a digital asset holder that manages a private key used to access data on the blockchain network, an authenticated transaction request to add the transaction to the blockchain network; Sending, by the browser application, the authenticated transaction request to the blockchain network; receiving, by the browser application, a transaction response from the blockchain network, the transaction response comprising a transaction identifier of the transaction added to the blockchain network; as well as The browser application sends a notification message to the digital asset holder, where the notification message includes the transaction identifier.
17. The non-transitory computer readable medium of claim 16, wherein the operations further comprise: The browser application sends an asset request to the digital asset holder; Receiving, by the browser application, an asset list from the digital asset holder, the asset list identifying a plurality of digital assets stored on the blockchain network; displaying a user interface object, the user interface object including the plurality of digital assets; as well as In response to selection of a digital asset from the plurality of digital assets, a request is sent to the digital asset holder to authenticate the transaction.
18. The non-transitory computer readable medium of claim 16 or 17, wherein the operations further comprise: A user selectable option is rendered by the browser application, the user selectable option being used to connect to the digital asset holder who manages the private key used to access the data on the blockchain network.
19. The non-transitory computer readable medium of any one of claims 16 to 18, wherein the operations further comprise: Communicating between the browser application and the digital asset holder via a first application programming interface; as well as Communication is performed between the browser application and the blockchain network via a second application programming interface.
20. The non-transitory computer readable medium of claim 19, wherein the operations further comprise: The first application programming interface and the second application programming interface are obtained from a storage device associated with the browser application.
21. A method comprising: Obtaining, by the browser application, an identifier associated with a token stored on a blockchain network; using the identifier, by the browser application, to retrieve digital data of the token; as well as The digital data of the token is used to customize a user interface of the browser application.
22. A method comprising: Receiving, by an application executable by a computing device, transaction information for completing a blockchain transaction with a requesting party, the transaction information specifying a first digital asset type and a transaction amount; providing an interface on the computing device for receiving a selection of a second digital asset type associated with the digital asset holder; The application sends a conversion request to the digital asset exchange, wherein the conversion request is configured to cause the digital asset exchange to convert the digital asset of the user of the transaction amount among the digital asset holders from the second digital asset type to the first digital asset type; as well as The application sends a transaction request to the blockchain network to initiate completion of the blockchain transaction.
23. A method comprising: Detecting, by an operating system of a computing device, a blockchain transaction request from an application; In response to the blockchain transaction request, determining whether the digital asset holder is registered as a default digital asset holder; In response to the digital asset holder being determined to be registered as the default digital asset holder, communicating an intent request to process a blockchain transaction from the application to the default digital asset holder; as well as An intent response is communicated from the default digital asset holder to the application, the intent response identifying an outcome of the blockchain transaction.
24. A computing system comprising: at least one processor; as well as A memory storing instructions which, when executed by the computing system, perform the method of any one of claims 21 to 23.