Blockchain transaction implementation

The browser application intermediates between digital asset holders and web content to streamline blockchain transactions, addressing compatibility issues and reducing user interaction and computing resource usage, thereby enhancing transaction efficiency and inter-ledger settlements.

JP7897335B2Active Publication Date: 2026-07-29GOOGLE LLC
View PDF 5 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
GOOGLE LLC
Filing Date
2023-05-12
Publication Date
2026-07-29

AI Technical Summary

Technical Problem

Existing technologies face challenges in efficiently processing blockchain transactions across different digital asset holders and web content, particularly on mobile devices, due to compatibility issues and the need for multiple application switches, which increases user interaction and computing resource usage.

Method used

A browser application acts as an intermediary between digital asset holders and web content, facilitating blockchain transactions by defining APIs to communicate with digital asset holders and blockchain networks, enabling seamless transaction processing without requiring additional applications and reducing user interaction.

Benefits of technology

This solution allows any digital asset holder to connect with the browser application, reducing the number of interactions needed for blockchain transactions, minimizing computing resource usage, and enabling efficient inter-ledger settlements through simplified protocols.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007897335000001
    Figure 0007897335000001
  • Figure 0007897335000002
    Figure 0007897335000002
  • Figure 0007897335000003
    Figure 0007897335000003
Patent Text Reader

Abstract

According to one aspect, the method includes receiving, from a digital asset holder that manages a private key for accessing data of a blockchain network, an authenticated transaction request for adding a transaction to the blockchain network, via an application programming interface of an application; sending, by the application, the authenticated transaction request to the blockchain network; receiving, by the application, a transaction response from the blockchain network that includes a transaction identifier of the transaction added to the blockchain network; and sending, via the application programming interface of the application, a notification message that includes the transaction identifier to the digital asset holder.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Related Applications This application is a continuation of and claims the benefit of U.S. patent application Ser. No. 18 / 315,834, filed May 11, 2023, which claims the priority of U.S. Provisional Patent Application No. 63 / 364,586, filed May 12, 2022, and U.S. Provisional Application No. 63 / 366,177, filed Jun. 10, 2022. The disclosures of these are incorporated herein by reference in their entireties.

Background Art

[0002] A user may enable third - party extensions to a web browser, and the third - party extensions are used to process blockchain transactions in web content rendered by the web browser. Native applications on a mobile computing device may be used to process blockchain transactions.

Summary of the Invention

[0003] This disclosure relates to connecting an application (e.g., a browser application) with a digital asset holder to process blockchain transactions. For example, the 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) (APIs) configured to communicate with the user's digital asset holder to authenticate blockchain transactions and to communicate with the blockchain network to commit blockchain transactions to the blockchain network. In some examples, this disclosure relates to customizing a browser application with blockchain data, such as customizing browser settings and / or the user interface of a browser application (e.g., setting a non-fungible token (NFT) as a profile picture, setting an NFT as a background image, adjusting the color scheme or display manner, swapping it via the user's NFT as a background image, or swapping it within an interface object).

[0004] In some examples, this disclosure relates to an application (e.g., a browser application) for managing inter-ledger blockchain transactions. For example, the application may act as an intermediary for transactions involving different settlement networks (e.g., inter-ledger settlement on a blockchain network). For example, a buyer entity may have a first type of digital asset in a digital asset holder, while a seller entity may require a second type of digital asset. The application can facilitate the conversion of the transaction amount of the digital asset from the first type to the second type (e.g., by communicating with a digital asset exchange), and after the conversion, can communicate with the blockchain network to commit the transaction on the second type of digital asset to the blockchain network. In some examples, this disclosure relates to registering a default digital asset holder in an application (e.g., a browser application). For example, a transaction may be initiated on web content or in an application other than a digital asset holder, and in some examples, the application can communicate with the default digital asset holder to authenticate and commit the transaction to the blockchain network.

[0005] According to one embodiment, the method includes receiving an authenticated transaction request from a digital asset holder managing a private key for accessing data on the blockchain network via the application's application programming interface to add a transaction to the blockchain network; the application sending the authenticated transaction request to the blockchain network; the application receiving a transaction response from the blockchain network containing a transaction identifier for the transaction added to the blockchain network; and sending a notification message containing the transaction identifier to the digital asset holder via the application's application programming interface.

[0006] According to one embodiment, the device includes at least one processor and a non-temporary computer-readable medium for storing executable instructions, wherein when an executable instruction is executed by at least one processor, the device causes at least one processor to receive an authenticated transaction request for adding a transaction to the blockchain network from a digital asset holder managing a private key for accessing data on the blockchain network via an application programming interface of a browser application, causes the browser application to send the authenticated transaction request to the blockchain network, causes the browser application to receive a transaction response from the blockchain network including a transaction identifier for the transaction added to the blockchain network, and causes the browser application to send a notification message including the transaction identifier to the digital asset holder via an application programming interface of the browser application.

[0007] According to one embodiment, a non-temporary computer-readable medium, when executed by at least one processor, stores executable instructions causing at least one processor to perform an operation, the operation comprising rendering web content having items selectable by a user to perform a transaction on a blockchain network; receiving, in response to receiving a selection of items selectable by a user, an authenticated transaction request from a digital asset holder managing a private key for accessing data on the blockchain network, by a browser application to add a transaction to the blockchain network; sending the authenticated transaction request to the blockchain network by the browser application; receiving a transaction response from the blockchain network, by the browser application, including a transaction identifier for the transaction added to the blockchain network; and sending a notification message, including the transaction identifier, to the digital asset holder by the browser application.

[0008] According to one embodiment, the method includes: obtaining an identifier associated with a token stored on a blockchain network using a browser application; retrieving the digital data of the token using the identifier using the browser application; and customizing the user interface of the browser application using the digital data of the token.

[0009] According to one embodiment, the device includes at least one processor and a non-temporary computer-readable medium for storing executable instructions, which, when executed by the at least one processor, cause the at least one processor to connect a browser application and a digital asset holder that stores a private key for enabling transactions on the blockchain network and identifies tokens stored on the blockchain network, allowing the browser application to retrieve the digital data of the tokens and use the digital data of the tokens to customize the user interface of the browser application.

[0010] According to one embodiment, a non-temporary computer-readable medium, when executed by at least one processor, stores executable instructions causing at least one processor to perform an operation, the operation including: obtaining an identifier associated with a token stored in a blockchain network by a browser application; retrieving the digital data of the token using the identifier by the browser application; and customizing the user interface of the browser application using the digital data of the token.

[0011] According to one embodiment, the method includes receiving transaction information for completing a blockchain transaction with a requesting party by an application executable by a computing device, wherein the transaction information specifies a first type of digital asset and a transaction amount; providing an interface to the computing device to receive a selection of a second type of digital asset associated with a digital asset holder; sending a conversion request to a digital asset exchange configured to cause the digital asset exchange to convert the transaction amount of the digital asset of the digital asset holder's user from a second type of digital asset to a first type of digital asset; and sending the transaction request to the blockchain network to initiate the completion of a blockchain transaction.

[0012] According to one embodiment, the system includes at least one processor and a non-temporary computer-readable medium for storing executable instructions, wherein, when executed by at least one processor, the system causes at least one processor to receive transaction information for completing a blockchain transaction with a requesting party, the transaction information specifying a first type of digital asset of a first digital asset holder associated with the requesting party, the transaction amount, and a shared address; the system causes the computing device to provide an interface to receive a selection of a second type of digital asset associated with a second digital asset holder associated with a user of the computing device; the system causes the digital asset exchange to send a conversion request configured to convert the transaction amount of the user's digital asset of the second digital asset holder from a second type of digital asset to a first type of digital asset; and the system causes the digital asset exchange to send the transaction request to the blockchain network to associate the transaction amount with the first digital asset holder.

[0013] According to one embodiment, a non-temporary computer-readable medium that stores executable instructions causing at least one processor to perform an operation, wherein the operation includes receiving transaction information for completing a blockchain transaction with a requesting party by a browser application executable by a computing device, the transaction information specifying a first type of digital asset and a transaction amount; providing an interface to the computing device to receive a selection of a second type of digital asset associated with a digital asset holder by the browser application; sending a conversion request to a digital asset exchange configured to cause the digital asset exchange to convert the transaction amount of the digital asset of the digital asset holder's user from a second type of digital asset to a first type of digital asset by the browser application; and sending the transaction request to the blockchain network to initiate the completion of a blockchain transaction.

[0014] According to one embodiment, the method includes: detecting a blockchain transaction request from an application using the operating system of a computing device; determining whether a digital asset holder is registered as the default digital asset holder in response to the blockchain transaction request; transferring an intent request from the application to the default digital asset holder for processing the blockchain transaction in response to the determination that the digital asset holder is registered as the default digital asset holder; and transferring an intent response from the default digital asset holder to the application that identifies the result of the blockchain transaction.

[0015] According to one embodiment, the system includes at least one processor and a non-temporary computer-readable medium for storing executable instructions, wherein when the executable instructions are executed by at least one processor, the system causes at least one processor to detect blockchain transaction requests from an application or web content, to determine in response to the blockchain transaction request whether a digital asset holder is registered as the default digital asset holder, to render an interface on a computing device configured to receive a user selection of the digital asset holder as the default digital asset holder in response to the determination that the digital asset holder is not registered as the default digital asset holder, and to update configuration storage that identifies the digital asset holder as the default digital asset holder in response to the receipt of the user selection of the digital asset holder.

[0016] According to one embodiment, a non-temporary computer-readable medium that stores executable instructions causing at least one processor to perform an operation, the operation comprising: detecting a blockchain transaction request from an application by the operating system of a computing device; determining, in response to the blockchain transaction request, whether a digital asset holder is registered as a default digital asset holder; rendering on the display of the computing device an interface configured to receive a user selection of the digital asset holder as the default digital asset holder, in response to the determination that the digital asset holder is not registered as a default digital asset holder; and, in response to the determination that the digital asset holder is registered as a default digital asset holder, transferring an intent request from the application to the default digital asset holder to add a blockchain transaction to the blockchain network.

[0017] According to one embodiment, the method includes detecting a blockchain transaction request from web content using a device application programming interface; determining whether a digital asset holder is registered as the default digital asset holder in response to the blockchain transaction request; and, in response to the determination that the digital asset holder is registered as the default digital asset holder, sending an intent request to the default digital asset holder from the device application programming interface to process the blockchain transaction.

[0018] According to one embodiment, the system includes at least one processor and a non-temporary computer-readable medium for storing executable instructions, and when the executable instructions are executed by at least one processor, the system causes at least one processor to detect blockchain transaction requests from web content via a device application programming interface, to determine in response to the blockchain transaction requests whether a digital asset holder is registered as the default digital asset holder, to render an interface on the display of a computing device that is configured to receive a user selection of the digital asset holder as the default digital asset holder in response to the determination that the digital asset holder is registered as the default digital asset holder, and to send an intent request to the default digital asset holder from the device application programming interface in response to the determination that the digital asset holder is registered as the default digital asset holder.

[0019] According to one embodiment, a non-temporary computer-readable medium storing executable instructions causing at least one processor to perform an operation, the operation comprising: detecting a blockchain transaction request from web content via a device application programming interface; determining, in response to the blockchain transaction request, whether a digital asset holder is registered as the default digital asset holder; and, in response to the determination that the digital asset holder is registered as the default digital asset holder, sending an intent request from the device application programming interface to the default digital asset holder for processing the blockchain transaction.

[0020] Details of one or more embodiments are described in the accompanying drawings and the following description. Other features will become apparent from the description and drawings, as well as from the claims. [Brief explanation of the drawing]

[0021] [Figure 1] This invention illustrates a system for connecting an application with a digital asset holder to process blockchain transactions. [Figure 2A] This invention illustrates a system for connecting a browser application with a digital asset holder that manages private keys to enable transactions on a blockchain network, according to one embodiment. [Figure 2B] This describes an example of a digital asset holder enabling transactions on a blockchain network, according to one embodiment. [Figure 2C] An example of an application programming interface in a browser application is shown according to one embodiment. [Figure 2D] Examples of application programming interfaces in browser applications, according to other embodiments, are shown. [Figure 3]An example of connecting a browser application to an extension to process blockchain transactions according to one aspect is shown. [Figure 4] An example of connecting a browser application to a native application to process blockchain transactions according to one aspect is shown. [Figure 5] An example of connecting a browser application to a server application to process blockchain transactions according to one aspect is shown. [Figure 6] An example of connecting a browser application to a native application with a custom browser tab to process blockchain transactions according to one aspect is shown. [Figure 7A] Exemplary user interfaces for processing blockchain transactions using a browser application according to various aspects are shown. [Figure 7B] Exemplary user interfaces for processing blockchain transactions using a browser application according to various aspects are shown. [Figure 7C] Exemplary user interfaces for processing blockchain transactions using a browser application according to various aspects are shown. [Figure 7D] Exemplary user interfaces for processing blockchain transactions using a browser application according to various aspects are shown. [Figure 8A] Exemplary user interfaces for processing blockchain transactions using a browser application according to various aspects are shown. [Figure 8B] Exemplary user interfaces for processing blockchain transactions using a browser application according to various aspects are shown. [Figure 8C]This document presents exemplary user interfaces for processing blockchain transactions using browser applications in various configurations. [Figure 8D] This document presents exemplary user interfaces for processing blockchain transactions using browser applications in various configurations. [Figure 8E] This document presents exemplary user interfaces for processing blockchain transactions using browser applications in various configurations. [Figure 8F] This document presents exemplary user interfaces for processing blockchain transactions using browser applications in various configurations. [Figure 9] This flowchart illustrates an exemplary operation in which an application connects to a digital asset holder and processes blockchain transactions. [Figure 10A] One embodiment illustrates a user interface for a browser application customized using digital data of tokens stored on a blockchain network. [Figure 10B] This invention illustrates a system that uses digital data of tokens stored on a blockchain network to customize the user interface of a browser application. [Figure 11] An example of a system having a browser application connected to a digital asset holder is shown in one embodiment. [Figure 12] This shows an example of a browser application that has a digital asset holder. [Figure 13] Examples of browser applications in other forms are shown. [Figure 14] One embodiment of a browser application configured to customize browser tabs using tokens from a blockchain network is presented. [Figure 15]One embodiment of a browser application configured to customize its user interface using tokens from a blockchain network is presented. [Figure 16] One embodiment of a browser application configured to customize its user interface using tokens from a blockchain network is presented. [Figure 17] One embodiment of a browser application configured to customize its user interface using tokens from a blockchain network is presented. [Figure 18] This flowchart illustrates an exemplary operation of customizing a browser tab using blockchain data, in one aspect. [Figure 19A] This invention presents a system for managing inter-ledger transactions involving one or more blockchain networks, according to one embodiment. [Figure 19B] An example of a blockchain network in one mode is shown. [Figure 19C] An example of a computing device that displays an interface for displaying an asset list and / or receiving the type of digital asset is shown in one embodiment. [Figure 19D] This describes another system for managing inter-ledger transactions involving multiple blockchain networks, according to one embodiment. [Figure 20] This describes a system representing a browser application having a user agent, according to one embodiment. [Figure 21] This describes a system representing a browser application having a user agent and a digital asset holder, in another embodiment. [Figure 22] This describes a system representing an operating system having a user agent, according to one embodiment. [Figure 23]This flowchart illustrates an exemplary operation for managing inter-ledger transactions involving one or more blockchain networks, according to one embodiment. [Figure 24A] One embodiment of a system for registering a digital asset holder as the default digital asset holder and / or for facilitating transactions on a blockchain network using the default digital asset holder is presented. [Figure 24B] One embodiment shows an interface rendered by the system to receive the user's selection of the default digital asset holder. [Figure 24C] One embodiment shows an interface rendered by the system to prompt the user to install one or more digital asset holders. [Figure 24D] To illustrate the user selection of the default digital asset holder in one aspect, and / or to show the configuration interface rendered by the system for receiving, is provided. [Figure 24E] A configuration interface in another form is shown. [Figure 25] This invention also presents a system for registering a digital asset holder as the default digital asset holder and / or for facilitating transactions on a blockchain network using the default digital asset holder. [Figure 26] This invention also provides an operating system for registering a digital asset holder as the default digital asset holder and / or for facilitating transactions on a blockchain network using the default digital asset holder. [Figure 27] This invention also presents a system for registering a digital asset holder as the default digital asset holder and / or for facilitating transactions on a blockchain network using the default digital asset holder. [Figure 28]A flowchart is shown illustrating an exemplary operation in which a digital asset holder is registered as the default digital asset holder and / or a transaction is facilitated on the blockchain network using the default digital asset holder, according to one embodiment. [Figure 29] A flowchart is provided illustrating exemplary actions in which a digital asset holder is registered as the default digital asset holder and / or a default digital asset holder is used to facilitate transactions on the blockchain network. [Figure 30] A flowchart is provided illustrating exemplary actions in which a digital asset holder is registered as the default digital asset holder and / or a default digital asset holder is used to facilitate transactions on the blockchain network. [Figure 31] Examples of computer devices and mobile computer devices according to one embodiment are shown. [Modes for carrying out the invention]

[0022] This disclosure relates to connecting an application to a digital asset holder. The digital asset holder stores and manages the user's private key to enable blockchain transactions processed on the blockchain network. In some examples, the application is the first application and the digital asset holder is the 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 called a cryptocurrency wallet. The digital asset holder can be an extension of a browser application, a native application, a server application, a web application, or any type of application that stores the user's private key to enable blockchain transactions. In some examples, the digital asset holder is a third-party digital asset holder, e.g., an application not developed or managed by the first application.

[0023] On some computing devices (e.g., laptops, desktops), executing blockchain transactions from web content is limited to available (enabled) extensions. For example, traditional browser applications may be limited to specific blockchain processing providers that offer web extensions. In other words, under traditional methods, there may be incompatibility between a user's digital asset holder and web content. However, the techniques described herein provide a technical solution in which an application (e.g., a browser application) acts as an intermediary between a user's digital asset holder and web content that can create blockchain transactions, potentially enabling any digital asset holder (e.g., any third-party digital asset holder) to connect to the browser application and process blockchain transactions. While some examples cite the use of a browser application as the first application, embodiments may also encompass other types of applications, such as non-browser-based applications and / or operating systems.

[0024] On some computing devices (e.g., smartphones, tablets), extensions to browser applications may be restricted or not permitted. Therefore, on such devices, users are directed from the browser to another application (e.g., a cryptocurrency wallet-based application) to process blockchain transactions. In other words, the user's device configuration may force the user to switch applications (e.g., to an application installed from the browser) to process blockchain transactions. However, the techniques described herein provide a technical solution that uses a browser application as an intermediary between web content and digital asset holders, allowing users to remain within the application that provided the web content without being directed to another application to process blockchain transactions. This technical solution has the technical effect of reducing the number of interactions the user has with the computing device to process blockchain transactions. In some examples, the techniques described herein provide a technical solution that eliminates the need for application developers to develop code (e.g., low-level instructions) to communicate with the blockchain network and process blockchain transactions; the browser application provides the functionality to communicate with the blockchain network and notify digital asset holders and websites of the results.

[0025] A browser application may define one or more application programming interfaces (APIs) (for example, natively or via a JavaScript® library) that connect the blockchain network to the user's digital asset holder, allowing the browser application to handle at least some of the operations and complete transactions on the blockchain network. Users may use an application (e.g., a browser application or a non-browser application that can render web content) to view web content and perform blockchain transactions on the blockchain network. In some examples, web content may include one or more objects (e.g., JavaScript public objects) for creating blockchain transactions on the blockchain network.

[0026] A browser application may define at least one first API that enables the browser application to communicate with a digital asset holder (for example, when web content invokes a JavaScript public object) to retrieve information from the digital asset holder and / or notify the digital asset holder of information regarding blockchain transactions. For example, the first API(s) may be a programming interface through which the browser application and the digital asset holder can communicate with each other. In some examples, the browser application communicates with the digital asset holder to retrieve a list of digital assets associated with the digital asset holder to be used in 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(s) so that the digital asset holder can retrieve the user's private key and authenticate the blockchain transaction request. The browser application receives authenticated transaction requests from the digital asset holder via the first API(s).

[0027] A browser application may define at least one second API that enables the browser application to communicate with a blockchain network. For example, the browser application may send an authenticated transaction request to the blockchain network via the second API(s), and the blockchain network commits the transaction to the blockchain network. After the transaction is committed to the blockchain network, the browser application receives a transaction response from the blockchain network via the second API(s), which includes the 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(s), which includes the transaction identifier.

[0028] This disclosure also relates to a browser application configured to retrieve an identifier associated with a token (e.g., a non-fungible token (NFT)) stored on a blockchain network, use the identifier to retrieve the digital data of the token, and use the digital data of the token to customize the user interface of the browser application. According to the technique described herein, a user can customize a browser application using one or more tokens stored on the blockchain. The technique described herein may offer a technical advantage in that a browser application can retrieve and render the digital data of a token in one or more sections of the browser application separate from the display of a web page.

[0029] A user may obtain a token (e.g., an NFT) (e.g., from an online marketplace or by minting a new NFT) and associate the NFT with a digital asset holder, e.g., an application (or program) that stores and manages the user's private key, to authenticate transactions on a blockchain network or network. Digital data can be coded (e.g., minted) on a blockchain network, which generates a unique token (e.g., a token) used to represent the owner of the digital asset. Some categories of NFTs include art, collectibles, utility for games or applications, and early access for whitelisting and NFT drop. A digital asset holder uses their private key to authenticate blockchain transactions involving tokens (e.g., transfer, sell, buy tokens). In some examples, since the blockchain network is public, tokens may be accessible using one or more identifiers, such as a token identifier (e.g., an NFT identifier) ​​that identifies the location of a particular token on the blockchain network, the address of the digital asset holder (e.g., a public / shared address), or a collection identifier that identifies a collection of tokens (e.g., by a specific creator or multiple creators). A browser application can use a token identifier to retrieve digital data associated with a token (e.g., image data, video data, and / or audio data), which may be stored on the blockchain network (in relation to the corresponding token) or on a separate storage device.

[0030] Browser applications can be customized based on digital data and / or information associated with digital data. Note that displaying an NFT may refer to displaying digital data associated with a token retrieved from a blockchain network or on a separate storage device. In some examples, an NFT may be displayed as a background image in the browser tab of a browser application. In some examples, an NFT may be displayed as a profile image in the user interface of a browser application.

[0031] In some examples, a browser application is connected to (or can connect to) a digital asset holder and displays one or more tokens associated with the digital asset holder as the background image of the browser tab. In some examples, the browser application can display different tokens associated with the digital asset holder when a new browser tab is launched (for example, the browser application can randomly or sequentially swap 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 can connect to the third-party digital asset holder using any of the techniques described in Figures 1 to 9. In some examples, the browser application retrieves token identifiers (e.g., NFT identifier(s), the holder's shared (or public) address, collection identifier, etc.) in response to the browser application being connected to the digital asset holder. In some examples, the digital asset holder is associated with the browser application (e.g., the browser application includes native or embedded digital asset holders), and the browser application can access identifiers from the browser's digital asset holder. In some examples, the browser application can render a user interface object that allows the user to input identifiers.

[0032] In some examples, a browser application may render a user interface (UI) module as part of the browser application's user interface. The user interface module may display one or more tokens associated with an identifier. In some examples, the UI module may swap / cycle (e.g., display sequentially, display randomly) the tokens associated with the identifier (e.g., any NFT 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 user's profile, for example, so that different user profiles used by the user are associated with different token identifiers in the wallet.

[0033] In some examples, a browser application retrieves metadata about tokens (or tokens) owned by the user and / or associated with identifiers, generates recommendations based on the metadata, and renders information identifying the recommendations in the browser application's user interface. The metadata may include information related to the creator, item name, description, characteristic level, statistics, when and / or where the token was created, and the NFT project associated with the token. The browser application may include (or work with) a recommendation engine capable of generating recommendations. In some examples, recommendations may identify one or more NFTs (or NFT projects) from the same creator and / or recommend NFTs (or NFT projects) of similar size, price, etc. In some examples, recommendations may include web content or links to web content related to the recommendations.

[0034] This disclosure also relates to enabling an application (e.g., a browser application) to function as an intermediary for transactions involving different payment networks (e.g., for inter-ledger settlements). 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 different blockchain networks. For example, Ethereum is stored on the Ethereum blockchain, and Bitcoin® is stored on the Bitcoin blockchain. In some examples, Ethereum and Bitcoin (e.g., Wrapped Bitcoin (WBTC)) are stored on the Ethereum blockchain. Without inter-ledger settlements, a recipient (seller) may present an item specifying an amount of Ethereum, but a sender (buyer) lacking this particular digital asset cannot complete the transaction.

[0035] Some traditional approaches provide large and complex protocols for sending transactions across different ledgers, but these traditional approaches are not widely compatible with computing devices (or their applications) due to their complexity. Outside of cross-ledger processes, when a recipient requests a particular type of digital asset, a user (e.g., sender) may manually convert the digital asset if the user does not currently possess the type of digital asset requested by the requesting party (e.g., recipient). This manual conversion process can introduce technical problems, including excluding the user from the transaction flow and potentially requiring the installation of other, and possibly two, other digital asset exchange applications, thereby increasing computing resources (e.g., memory, CPU, etc.) to facilitate such transactions. Due to the extra effort involved, users may abandon the transaction. The lack of simplified protocols can lead to a lack of adoption and / or increased transaction abandonment by recipients (e.g., computing devices, applications, etc.).

[0036] The techniques described herein provide a technical solution to solve the technical problem of inter-ledger (inter-user settlement) by using an application (e.g., a browser application) to manage coordination between digital asset holders (e.g., cryptocurrency wallets), blockchain networks (maybe more), and digital asset exchanges (e.g., decentralized or centralized exchanges). Furthermore, the techniques described herein provide a technical solution that provides a simplified (and in some examples, platform-independent) protocol for connecting receivers (sellers) and senders (e.g., buyers) via digital asset holders and digital asset exchanges (maybe more). Such a technical solution has the technical advantage that receivers and senders can transform information (blockchain transactions) regardless of the format in which the receiver provides the information and the seller receives the information.

[0037] A digital asset exchange can be an application that performs one or more ledger-to-ledger conversion operations, allowing one type of digital asset (e.g., Ethereum) to be converted into another type of digital asset (e.g., Bitcoin) (executed remotely from the sender's computing device and / or the receiver's computing device). In some examples, a digital asset exchange includes a decentralized exchange (DEX). A DEX is an application that runs on one or more blockchain networks, and its code is embodied as a smart contract on the blockchain network(s). For example, to convert 100 Bitcoin to Ethereum, the DEX would receive 100 Bitcoin from the user's digital asset holder on the Bitcoin ledger and place the corresponding Ethereum into 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 run as a smart contract on the Ethereum blockchain and be able to convert Ethereum on the Ethereum blockchain into Wrapped Bitcoin (WBTC) on the Ethereum blockchain. In other words, a blockchain network (e.g., Ethereum) can have multiple ledgers (e.g., Ethereum, wrapped Bitcoin). In some examples, digital asset exchanges include centralized exchanges (e.g., Binance®) that can convert tokens across different blockchains.

[0038] The techniques described herein define a protocol for receiving blockchain transaction information from a requesting party (e.g., a recipient) (e.g., a website, an application, etc.) and provide an application (e.g., a browser application) that communicates with one or more digital asset exchanges, thereby offering the technical advantage of reducing the amount of computer complexity (and thus reducing the amount of computing resources) required to implement inter-ledger transactions involving different types of digital assets (e.g., different ledgers). Furthermore, the techniques described herein can operate in the background with minimal input from the sender and without interrupting the sender's transaction flow (and thus without requiring the installation of one or more additional applications).

[0039] An application (e.g., a browser application) implements a user agent natively or via a JavaScript or HTML library and is configured to receive transaction information (e.g., the type of digital asset requested by the recipient, the transaction amount, and the recipient's shared address) from a recipient (e.g., the recipient's website or application). For example, in response to a user (sender) selecting a particular item for purchase, the application may receive transaction information. In one example, blockchain transaction information might specify Ethereum as the type of digital asset requested, the transaction amount (e.g., 0.01 ETH), and the recipient's shared address corresponding to the digital asset holder belonging to the recipient.

[0040] In response to blockchain transaction information, an application may render an interface (e.g., a UI prompt) that prompts the user to select a type of digital asset. In some examples, the application may communicate with the user's digital asset holder to obtain an asset list, which identifies the digital assets belonging to the user (sender) and associated with the user's asset holder. In some examples, the application defines a native (or embedded) digital asset holder (e.g., a program included as part of or associated with the application that receives transaction information). 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 connect to the third-party digital asset holder according to one of the techniques described with reference to Figures 1-9. In one example, the interface may display information indicating that the user possesses Bitcoin and Dogecoin.

[0041] In some examples, an application may communicate with one or more digital asset exchanges to obtain exchange rate information, and the application may display this exchange rate information on its interface. For example, the exchange rate information may provide the exchange rate for converting Bitcoin to Ethereum for a given transaction amount, and the exchange rate for converting Dogecoin to Ethereum for a given transaction amount.

[0042] In response to receiving a selection of a specific type of digital asset (for example, a user selecting Bitcoin), the application may communicate with one or more digital asset exchanges to convert the transaction amount from a certain 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 a digital asset exchange, which then converts the transaction amount of the user's digital asset in the user's digital asset holder from a certain type of asset to the requested digital asset. The application may then communicate with a blockchain network to send the transaction amount (now having the type requested by the recipient) to the recipient's digital asset holder (identified by the recipient's shared address). For example, the application may send a transaction to a 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 to achieve the currency exchange and make a transaction in the requested type of currency, with respect to the user.

[0043] In some examples, an application may select a specific digital asset exchange from among several digital asset exchanges. For example, an application may evaluate several digital asset exchanges and select the one that offers the best exchange rate and / or the lowest transaction fees. In some examples, an application may use multiple digital asset exchanges to perform conversions from one type of digital asset to another. For example, if the sender uses minor currency A and the recipient uses minor currency B, the application may not be able to select a digital asset exchange that converts minor currency A to minor currency B (e.g., a direct conversion). However, the application may select a first digital asset exchange that converts minor currency A to a common bridge currency (e.g., ETH), and then select a second digital asset exchange that converts the bridge currency to minor currency B. These and other features will be further explained with reference to the diagram.

[0044] This disclosure also relates to registering a digital asset holder as a default digital asset holder and / or facilitating transactions on a blockchain network using the default digital asset holder, in other forms. For example, this 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 a digital asset holder, e.g., a native application installed on the user's device. According to some conventional approaches, a user may need to launch and use a digital asset holder on their device to initiate a blockchain transaction. However, according to the techniques described herein, transactions can be initiated on web content or in applications other than digital asset holders, and in some examples, the application can communicate with a default digital asset holder to authenticate the transaction and commit it to the blockchain network.

[0045] When a user performs a transaction, if the digital asset holder is not registered as the default digital asset holder, the operating system may display an interface prompting the user to select a specific digital asset holder from those installed on the user's device. In some examples, when a user performs a transaction, if the digital asset holder is not registered as the default digital asset holder and is not installed on the user's device, the operating system may display an interface prompting the user to install the specific digital asset holder. In some examples, the user can select a specific digital asset holder as the default digital asset holder from a configuration interface (e.g., the OS configuration interface).

[0046] If a digital asset holder is registered as the default digital asset holder, the application (which initiated the transaction) may forward an intent request to the default digital asset holder (via an inter-process (IPC) link), which causes the default digital asset holder to perform one or more actions. In response to the performance of the action(s), the default asset holder may send an intent response to the application (via the IPC link), which may indicate the results of the action(s). In some examples, the intent request is a request for an asset list, causing the default digital asset holder to generate an asset list and return the asset list via the intent response. In some examples, the intent request is a transaction creation request, causing the default digital asset holder to authenticate a transaction, communicate with the blockchain network, and add the transaction to the blockchain network. The intent response may include the results of the transaction being added to the blockchain network.

[0047] In some examples, the operating system includes a Device Application Programming Interface (API). When a user performs a transaction on web content, the device API may create an intent request and send it (via IPC link) to the default digital asset holder. In response to the execution of an action(s) by the default digital asset holder, the device API may receive an intent response. The device API may send a notification to the website of the web content and / or the underlying application (that prompts the transaction), the notification may indicate the result of the transaction. In some examples, the use of a device API may enable the technical advantage of facilitating transactions from web content on a blockchain network with minimal (or no) browser involvement. In some examples, instead of using a device API (or in addition to a device API), the browser application may connect to the default digital asset holder and use one of the described techniques relating to the connection between the browser application and the third-party digital asset holder to facilitate the processing of transactions on the blockchain network. These and other features are further illustrated with reference to the following diagram.

[0048] Figure 1 shows a system 100 having an application 106 connected to one or more digital asset holders 102 for processing a transaction 112 on a blockchain network 110 according to one embodiment. In some examples, application 106 includes a browser application. In some examples, application 106 includes a non-browser-based application. In some examples, application 106 includes an operating system. In some examples, the digital asset holder 102 is called a cryptocurrency wallet. The digital asset holder 102 can be implemented as an extension to 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 to enable a transaction 112 processed 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), for example, an application not developed or managed by application 106.

[0049] In some examples, application 106 may connect to any digital asset holder 102 (e.g., any third-party digital asset holder) so that application 106 performs at least one of the operations that process transaction 112 on the blockchain network 110. For example, application 106 may connect to a digital asset holder 102 implemented by a browser application, a native application, a server application, and / or an extension to a web application. In some examples, application 106 acts as an intermediary between web content 108 for creating transaction 112 and the digital asset holder 102. In some examples, application 106 acts as an intermediary between the digital asset holder 102 and the blockchain network 110. Application 106 may render one or more user interface (UI) objects that allow the user to select a specific digital asset holder 102 to use for transaction 112, and / or a specific digital asset associated with the digital asset holder 102 to use for transaction 112. In some examples, application 106 may render a user interface object (UI object) that notifies the user of the result of transaction 112. UI objects are objects that can be selected by the user and are configured to perform an action when selected.

[0050] Since at least part of the operation of processing transaction 112 in the web content 108 is performed by application 106, the complexity of enabling transaction 112 for the web content 108 can be reduced. Furthermore, the techniques described herein can enable application 106 to connect to any digital asset holder 102 (e.g., any third-party digital asset holder) in a way that increases the speed at which transaction 112 can be added to the blockchain network 110 and / or reduces the amount of computing resources required to complete transaction 112 (e.g., it can avoid switching user interfaces between multiple applications and / or it can avoid launching other applications to complete transaction 112).

[0051] A blockchain network 110 can represent any type of distributed database shared among computer nodes in a computer network. In some examples, a blockchain network 110 includes a distributed ledger or distributed ledger technology (DLT). A distributed ledger is a consensus of digital data stored among computer nodes that is replicated, shared, and synchronized. In some examples, a blockchain network 110 is a public ledger. In some examples, a blockchain network 110 is a private ledger. In some examples, a blockchain network 110 is a combination of a public and a private ledger. In some examples, a blockchain network 110 is a digitally distributed ledger that exists across multiple nodes in a peer-to-peer (P2P) network, with each node represented by one or more computing devices.

[0052] The blockchain network 110 may store digital data as multiple 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 fungible tokens. Fungible tokens are exchangeable representations of assets on the blockchain network 110. In some examples, the digital data includes non-fungible tokens (e.g., NFTs). Non-fungible tokens are non-exchangeable representations of assets on the blockchain network 110 (e.g., unique assets).

[0053] In some examples, a blockchain network 110 may process and record a transaction 112 as part of a block in the blockchain. Each block contains data (e.g., transaction data) and a hash value, which is the result of a cryptographic operation performed on the data in the block. In some examples, a block contains 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 involves identifying the hash value of the previous block in the new block. In some examples, adding a transaction 112 to a blockchain network 110 involves adding transaction information about the transaction 112 to an existing block in the blockchain network 110. In some examples, adding a transaction 112 to a blockchain network 110 involves creating a new block, adding transaction information about the transaction 112 to the new block, generating a hash value using one or more cryptographic operations entered 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.

[0054] The digital asset holder 102 may be any type of program that stores and manages the user's private key 104, which is used by the digital asset holder 102 to authenticate transaction 112 on the blockchain network 110. In some examples, the private key 104 contains a password (e.g., a series of characters). In some examples, the private key 104 contains one or more passphrases. In some examples, the private key 104 contains a list of words found in a dictionary (e.g., the unencrypted form of the private key 104). Without the private key 104, transaction 112 cannot be added to the blockchain network 110. For example, if a user wishes to record a transaction involving digital assets (e.g., cryptocurrency, NFT) stored on the blockchain network 110, transaction 112 must be authenticated (e.g., signed by the digital asset holder 102) before being added to the blockchain network 110.

[0055] 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 on the user's computer's memory device. 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 that is part of a larger application. In some examples, the digital asset holder 102 is a native (e.g., embedded) digital asset holder that is part of a native application executable by the computing device. In some examples, the digital asset holder 102 is an extension of a browser application (e.g., a web extension). In some examples, the digital asset holder 102 is a web application that runs at least partially on one or more server computers and is accessible via a browser application on the user's computing device. In some examples, the digital asset holder 102 is a server application that runs on one or more server computers. In some examples, the digital asset holder 102 is referred to as a cloud application.

[0056] The digital asset holder 102 may be associated with a user and may be associated with a shared address (e.g., a shared / public wallet address) that represents the location of one or more digital assets stored in the blockchain network 110 (or multiple blockchain networks 110). The digital asset holder 102 may not actually store the digital assets (e.g., it may store the digital assets in the blockchain network 110), but it will store the private key 104 and the shared address of the digital asset's location. The digital asset holder 102 also includes the ability 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 by performing a cryptographic operation using the private key 104.

[0057] In some conventional approaches to initiating transaction 112 from web content 108, the digital asset holder may communicate with the blockchain network 110 to commit (e.g., add) transaction 112 to the blockchain network 110. In some conventional approaches, only the digital asset holder can complete transaction 112. However, according to the technique described herein, application 106 may act as an intermediary between the digital asset holder 102 and the web content 108, and application 106 performs at least part of the operation to complete transaction 112 on the blockchain network 110.

[0058] The web content 108 can be displayed on the user's computing device. The web content 108 can 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 public objects) for creating blockchain transactions on the blockchain network 110.

[0059] Application 106 may include a browser application that can be run by the computing device. In some examples, the browser application is a web browser (e.g., a browser engine or search engine) that can be run on the computing device's operating system. The web browser may be configured to render browser tabs(s) to search for and display web content. In some examples, the browser application is an operating system (or part of an operating system) that can be run by the computing device. In some examples, Application 106 is a non-browser application, e.g., an application that does not render browser tabs.

[0060] Application 106 may include one or more interfaces that allow Application 106 and the digital asset holder 102 to communicate with each other when transaction 112 is performed on web content 108. In some examples, web content 108 is rendered by Application 106. In some examples, web content 108 is rendered by a native application using a web view controller or a custom browser tab. If Application 106 is a browser application, the browser application may render web content 108 (for example, in a browser tab). In some examples, web content 108 is rendered by a web view controller in a native application (for example, to display and control the web content without exiting the native application). In some examples, web content 108 is served in a browser tab within a native application (for example, a custom browser tab). In some examples, web content 108 is rendered by a web application (or a server application or cloud-based application).

[0061] In some examples, the interface(s) define an inter-process communication protocol that allows information to be sent between application 106 and digital asset holder 102. In some examples, the interface(s) allow a browser application and digital asset holder 102 (e.g., extensions to browser applications, native applications, server applications, etc.) to communicate with each other. In some examples, the interface(s) include application programming interfaces(s) (API(s)). In some examples, the API(s) include callback APIs. In some examples, application 106 includes a library (e.g., a JavaScript library) that defines one or more APIs used to communicate between application 106 and digital asset holder 102. In some examples, application 106 natively defines one or more APIs used to communicate with application 106 and digital asset holder 102.

[0062] In response to requests generated by user interaction with public objects of web content 108 for creating transactions on the blockchain network 110, in some examples, application 106 may receive a request (e.g., a callback) or multiple requests (at separate times), such as a first request and / or a second request. Upon receiving or detecting a first or second request, application 106 may communicate with the digital asset holder 102 to receive and / or send information. In some examples, the first request is a request to retrieve a list of digital assets (e.g., cryptocurrency, NFT, etc.) associated with a particular digital asset holder 102. In some examples, the second request is a request to retrieve authenticated transactions for a particular digital asset(s).

[0063] In response to the first request, application 106 may communicate with digital asset holder 102 to obtain a list of digital assets, such as which digital assets the user owns. In some examples, application 106 may send a digital asset request to digital asset holder 102, and in response to the digital asset request, digital asset holder 102 may obtain a list of digital assets using the shared address of a particular digital asset holder 102 (for example, by communicating with the blockchain network 110). Application 106 may receive a digital asset response from digital asset holder 102, which includes a list of digital assets.

[0064] In response to the second request, application 106 may communicate with digital asset holder 102 to obtain an authorized transaction request from digital asset holder 102. In some examples, the second request concerns a transaction request for the creation of transaction 112 on blockchain network 110 using a specific digital asset from a list of digital assets. The transaction request may include transaction details such as the type of digital asset, amount, sender, receiver, and time information. Application 106 may send the transaction request to digital asset holder 102, who may retrieve the private key 104 and use the private key 104 to authenticate the transaction request. Application 106 may receive an authenticated transaction request from digital asset holder 102.

[0065] Next, application 106 may communicate with blockchain network 110 to add transaction 112, which is subject to the authenticated transaction request, to the blockchain network. For example, application 106 may define one or more interfaces that allow application 106 to communicate with blockchain network 110. In some examples, application 106 may send an authenticated transaction request to blockchain network 110, and blockchain network 110 adds transaction 112, which is subject to the authenticated transaction request, to blockchain network 110. Application 106 may receive a transaction response from blockchain network 110 indicating whether transaction 112 has been successfully added to blockchain network 110. In some examples, the transaction response includes a transaction identifier that uniquely identifies transaction 112. Application 106 may send a notification to digital asset holder 102 indicating that transaction 112 has been successfully added to blockchain network 110. In some examples, application 106 may send a notification indicating that the transaction was successful to a website or platform hosting web content 108.

[0066] Figures 2A to 2D illustrate a system 200 having a browser application 206a configured to connect to one or more digital asset holders 202 and process transactions 212a on a blockchain network 210. In some examples, the browser application 206a may connect to a single digital asset holder 202 (at a particular time) and process one or more transactions 212a on web content 208. In some examples, the browser application 206a may connect to multiple digital asset holders 202 (for example, simultaneously or at different times) and process one or more transactions 212a on web content 208.

[0067] System 200 may be an example of System 100 in Figure 1 and may include any of the details described with reference to Figure 1. Browser application 206a is configured to connect to a digital asset holder 202 that stores a private key 204, allowing it to add a transaction 212 to the blockchain network 210 for a digital asset associated with (or to be associated with) a user of 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 not owned and / or managed by browser application 206a. In some examples, browser application 206a can connect to any third-party digital asset holder to assist in processing a transaction 212 on the blockchain network 210.

[0068] The computing device 226 may 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 configured to run (or assist in running) one or more applications, including a browser application 206a and a digital asset holder 202. In some examples, the computing device 226 is a laptop computer. In some examples, the computing device 226 is a desktop computer. In some examples, the computing device 226 is a tablet computer. In some examples, the computing device 226 is a smartphone. In some examples, the computing device 226 is a wearable device. In some examples, the display 234 is the display of the computing device 226. In some examples, the display 234 may also include one or more external monitors connected to the computing device 226.

[0069] An operating system (232) is system software that manages computer hardware and software resources and provides common services to computing programs. In some cases, an operating system (232) is an operating system designed for larger displays (234), such as laptops or desktops (for example, sometimes called a desktop operating system). In some cases, an operating system (232) is an operating system designed for smaller displays (234), such as tablets or smartphones (for example, sometimes called a mobile operating system).

[0070] The processor(s) 228 may be formed on a substrate configured to execute one or more machine-executable instructions, or a portion of software, firmware, or a combination thereof. The processor(s) 228 may be semiconductor-based; that is, the processor may include semiconductor materials capable of executing digital logic. The memory device(s) 230 may include main memory that stores information in a format that can be read and / or executed by the processor(s) 228. The memory device(s) 230 may store an operating system 232, a digital asset holder 202, and a browser application 206a, which, when executed by the processor(s) 228, perform certain operations described herein.

[0071] While browser application 206a is described as acting as an intermediary between web content 208 and digital asset holder 202, it should be noted that in some examples, the application may be an operating system or a non-browser application, such as an application that renders content on the Internet and / or does not render browser tabs for searching. Browser application 206a may be a web browser (e.g., a browser engine or search engine) configured to access information on the Internet. In some examples, browser application 206a is a separate application from operating system 232, and browser application 206a can be installed on (and run by) operating system 232. In some examples, browser application 206a is operating system 232 (or is included as part of operating system 232). Browser application 206a may launch one or more browser tabs in the context of one or more browser windows on display 234 of computing device 226. In some examples, browser application 206a may launch one or more browser tabs without referring to a browser window.

[0072] A browser application 206a may connect to a digital asset holder 202 to process transaction 212a in web content 208, where the digital asset holder 202 is configured to store the user's private key 204 for validating transaction 212 on the blockchain network 210. Transaction 212a is sometimes called a blockchain transaction, which records digital information on the blockchain network 210. Transaction 212a may involve the acquisition of an item (e.g., goods, services, and / or digital rights) accompanied by the user's digital data (e.g., digital assets) stored on the blockchain network 210. In some examples, web content 208 may allow a user to acquire an item using cryptocurrency and / or NFTs owned by the user and stored on the blockchain network 210. For example, an application or website may allow a user to purchase content using digital assets such as cryptocurrency or NFTs stored on the blockchain network 210.

[0073] Web content 208 may include information from the World Wide Web. In some examples, web content 208 may include a web page or a collection of web pages (for example, a web page is a hypertext document on the Internet). Web content 208 may include one or more objects 236 that can create transaction 212a on the blockchain network 210. In some examples, object 236 is a blockchain computer object. In some examples, object 236 is a JavaScript public object. In some examples, object 236 is an API public object. If the blockchain network 210 is Ethereum, then object 236 is an Ethereum object (for example, window.etherum) that creates a transaction on the Ethereum blockchain. In some examples, object 236 is specific to the type of blockchain network. In some examples, 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, the second blockchain network being different from the first blockchain network. In some examples, the first and second objects point to different callbacks or requests associated with a particular transaction 212a when selected (e.g., called, initiated).

[0074] When web content 208 is rendered on display 234, object 236 is not implemented (or realized), but as will be further explained below, browser application 206a is configured to implement object 236 to communicate with blockchain network 210 (for example, by using API(s) 240). In some examples, object 236 embedded in web content 208 causes a blockchain process to start when selected (for example, called, started, etc.).

[0075] The web content 208 can be rendered on the display 234 of the computing device 226 in one or more different ways. The web content 208 may be displayed in the user interface of a browser application 206a. For example, a user can use the browser application 206a to render the web content 208 in a browser tab. The web content 208 may 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 the computing device 226, and the web content 208 may be displayed from the native application using a web view controller and / or browser tab. The web view controller and / or browser tab may be associated with the browser application 206a. In some examples, the web content 208 may be displayed in the user interface of a web application that is at least partially executable by the browser application 206a.

[0076] A browser application 206a may connect to an arbitrary digital asset holder 202 (e.g., any third-party digital asset holder) for a transaction 212a initiated from web content 208, and the browser application 206a performs at least one of the actions that enable the transaction 212a to be added to the blockchain network 210. In some examples, the browser application 206a acts as an intermediary between web content 208 for creating transaction 212 and the digital asset holder 202. In some examples, the browser application 206a acts as an intermediary between the digital asset holder 202 and the blockchain network 210.

[0077] The digital asset holder 202 may be any type of program that stores and manages the user's private key 204, which is used by the digital asset holder 202 to authenticate transaction 212 before it is added to the blockchain network 210. In some examples, the private key 204 contains a password (e.g., a series of characters). In some examples, the private key 204 contains one or more passphrases. In some examples, the private key 204 contains a list of words found in a dictionary (e.g., the unencrypted form of the private key 204). Without the private key 204, transaction 212a cannot be added to the blockchain network 210. For example, if a user wishes to record transaction 212a involving a digital asset (e.g., cryptocurrency, NFT) stored on the blockchain network 210, transaction 212a must be authenticated by the digital asset holder 202 (e.g., signed by the digital asset holder 202) before it is added to the blockchain network 210. The digital asset holder 202 may be stored in a computing device 226 (for example, in a memory device 230). In some examples, the digital asset holder 202 may be stored in one or more server computers 216 and accessible by the computing device 226 via a network 250.

[0078] In some embodiments, as shown in Figure 2B, the digital asset holder 202 is an extension 202a of the browser application 206a. For example, the digital asset holder 202 (e.g., Digital Asset Holder) may be implemented by the extension 202a, and the browser application 206a may connect to the extension 202a to facilitate the processing of transaction 212a in web content 208. In some examples, the web content 208 is rendered by the browser application 206a. In some examples, the extension 202a is called a web extension or browser extension. The extension 202a (if enabled) adds features or functionality to the browser application 206a. In some examples, the extension 202a may be HTML, CSS, and / or JavaScript based. In some examples, the extension 202a is a third-party extension not owned by the browser application 206a (e.g., the extension 202a is developed by an entity separate from the entity that developed the browser application 206a).

[0079] In some examples, the digital asset holder 202 is a native application 202b. For example, the digital asset holder 202 may be implemented by a native application 202b, and a browser application 206a may connect to the native application 202b to facilitate the processing of transaction 212a in 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.

[0080] A custom browser tab is a browser tab (associated with browser application 206a) but is rendered within the context of a native application (e.g., native application 202b). For example, if a native application incorporates a custom browser tab, when a link to web content 208 is selected, the web content 208 is rendered in the custom browser tab within the native application (e.g., a separate browser tab is not rendered on top of the native app's UI). A custom browser tab may contain one or more selectable items associated with an action in browser application 206a (e.g., navigation control) and one or more selectable items associated with an action in the underlying native application (e.g., sharing a message in a messaging platform).

[0081] In some cases, custom browser tabs include customized display attributes of the user interface of the custom browser tab (e.g., setting the background color of the navigation panel and / or toolbar). For example, items in the navigation panel and toolbar (e.g., having forward and / or back navigation controls) are typically standard across the entire browser tab that would be rendered for a non-custom browser tab. However, application developers may modify one or more aspects of the navigation panel and / or toolbar to customize the tab to correspond to the underlying native application.

[0082] In some examples, a native application 202b is a non-browser application. A native application 202b may display web content 208 via a web view controller or a browser tab. A 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, a native application 202b is installed on the operating system 232 of a computing device 226.

[0083] In some examples, native application 202b is a native mobile application configured to run on the mobile operating system of a computing device 226, such as a smartphone or tablet. In some examples, native mobile applications may include Android® applications, mobile iOS® applications, and / or mobile Windows® applications. In some examples, native application 202b is an application configured to run on the desktop operating system of a computing device 226, such as a laptop computer or desktop computer. In some examples, native application 202b may include Linux®-based applications (e.g., Linux applications in a virtualized environment). In some examples, native application 202b is a software program developed for multiple platforms or devices. In some examples, native application 202b is a software program developed for use on a mobile platform and / or configured to run on a desktop or laptop computer.

[0084] 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 a browser application 206a may connect to the server application 202c to facilitate the processing of transaction 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 that runs on one or more server computers (e.g., server computer(s) 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 program that is stored on a remote server (e.g., server computer(s) 216) and delivered over the network 250 by a browser application 206a (e.g., a browser tab). In some examples, the server application 202c includes a progressive web application that is (at least partially) stored on the computing device 226 and can be used offline.

[0085] Regardless of the basic implementation of the digital asset holder 202, the digital asset holder 202 stores and manages a private key 204 and 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 is stored in the blockchain network 210. In some examples, the digital asset holder 202 stores asset information 207 about digital assets, such as a list of digital assets (e.g., a list of which cryptocurrencies and NFTs are associated with the user), and information about each digital asset (e.g., NFT description, amount, cryptocurrency type, etc.). The digital asset holder 202 may not actually store digital assets (e.g., store digital assets in the blockchain network 210), but it will store the private key 204 and the shared address 205 of the digital asset location. The digital asset holder 202 also includes the ability to authenticate (e.g., sign) transactions 212. In some examples, the digital asset holder 202 can authenticate a transaction by executing a smart contract and / or by performing a cryptographic operation using the private key 204.

[0086] 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 (for example, when web content 208 calls object 236), to retrieve information from the digital asset holder 202, and / or to notify the digital asset holder 202 of information regarding transaction 212a. The API(s) 238 may be programming interfaces that enable the browser application 206a and the digital asset holder 202 to communicate with each other.

[0087] A 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, an API(s) 240 could be a programming interface that enables the browser application 206a and the blockchain network 210 to communicate with each other, for example, by adding a transaction 212a on the blockchain network 210 and receiving notification that the transaction 212a has been successfully added.

[0088] In some examples, as shown in Figure 2C, a browser application 206a includes a JavaScript library 260 configured to implement API(s) 238 and 240. In some examples, as shown in Figure 2D, a browser application 206a defines a native API 262, which includes API(s) 238 and 240.

[0089] Referring again to Figure 2A, the browser application 206a may detect whether the web content 208 has selected (or initialized or called) object 236. In some examples, when a user selects a particular UI item in the web content 208, the web content 208 may select object 236. In some examples, object 236 relates to a transaction request to retrieve a list of assets (e.g., query accounts). In some examples, in response to the web content 208 selecting object 236, the browser application 206a may send an asset request 242 to the digital asset holder 202 via the API(s) 238. The asset request 242 may be a request for a list of assets associated with the digital asset holder 202. The browser application 206a may then receive an asset list 244 via the API(s) 238 that identifies the digital assets associated with the digital asset holder 202. The asset list 244 may identify one or more types of cryptocurrency, and in some examples, it identifies the amount of each cryptocurrency. In some examples, the browser application 206a may render a UI object that provides an asset list 244.

[0090] In some examples, object 236 relates to the creation of a transaction 212a using digital data stored in the blockchain network 210 (e.g., sending a transaction). In response to web content 208 selecting object 236, browser application 206a may send a transaction request 248 to digital asset holder 202 via API(s) 238. The transaction request 248 may include details about the transaction 212a to be created in the blockchain network 210, such as the sender (e.g., shared address 205), recipient (e.g., recipient's shared address), amount, and type of digital asset. In some examples, the transaction request 248 sent to (or received by) digital asset holder 202 is called a request to authenticate transaction 212a (e.g., authentication request). In response to the transaction request 248, digital asset holder 202 may authenticate the transaction request 248 using a private key 204. For example, a digital asset holder 202 may use a private key 204 to execute a smart contract or cryptographic operation and authenticate (or sign) a transaction request 248. In response, a browser application 206a may receive the authenticated transaction request 246 via an API(s) 238.

[0091] A browser application 206a may send an authenticated transaction request 246 to a node gateway 214 of the blockchain network 210 via an API(s) 240, and the blockchain network 210 adds transaction 212a to the blockchain network 210. In some embodiments, the node gateway 214 is a network node connecting two networks with different transmission protocols. The node gateway 214 can function as an entry and exit point for information transmitted to and from the blockchain network 210. In some examples, the node gateway 214 may perform one or more actions 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 type of digital asset, and an amount.

[0092] After transaction 212a is committed to the blockchain network 210, the browser application 206a receives a transaction response 222 from the blockchain network 210 via API(s) 240, which contains the transaction identifier 224 of transaction 212a that was 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 JavaScript Object Notation (JSON) messages 221. In response to the transaction response 222, the browser application 206a sends a notification 252 containing the transaction identifier 224 to the digital asset holder 202 via API(s) 238.

[0093] The server computer 216 can be a computing device in the form of multiple different devices, such as a standard server, a group of such servers, or a rack server system. In some examples, the server computer 216 may be a single system sharing components such as a processor and memory. In some examples, the server computer 216 may be multiple systems that do not share a processor and memory. The 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. The network 250 may also include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to receive and / or transmit data within the network 250. The network 250 may further include any number of wired and / or wireless connections.

[0094] A server computer(s) 216 may include one or more processors, an operating system (not shown), and one or more memory devices formed on a circuit board. The memory devices may represent any (or more) types of memory (e.g., RAM, flash, cache, disk, tape, etc.). In some examples (not shown), the memory devices may include external storage, such as memory that is physically far from but accessible from the server computer(s) 216. The server computer(s) 216 may include one or more modules or engines representing specially programmed software.

[0095] Figure 3 shows a system 300 having a browser application 306a connected to an extension 302a of the browser application 306a for processing blockchain transactions in web content 308. In some examples, the web content 308 is rendered by the browser application 306a. System 300 could be an example of system 100 in Figure 1 and / or system 200 in Figures 2A to 2D, and may include any of the details described with reference to those figures.

[0096] Browser application 306a is executable by computing device 326. In some examples, browser application 306a is a web browser (e.g., a browser engine or search engine) installed on the operating system of computing device 326. In some examples, browser application 306a is the operating system of computing device 326 (or forms part of the operating system). In some examples, computing device 326 is a computer operating in a non-mobile environment (e.g., a laptop computer, a desktop computer, etc.). Browser application 306a may connect any third-party digital asset holder, represented as extension 302a. Extension 302a is a web extension of browser application 306a. In some examples, extension 302a is not owned or developed by browser application 306a (e.g., a third-party digital asset holder). Extension 302a (if enabled) adds features or functionality to browser application 306a. In some examples, extension 302a may be HTML, CSS, and / or JavaScript based. As shown in Figure 3, the browser application 306a may define one or more APIs 338 to enable communication between the browser application 306a and the extension 302a. The browser application 306a may define one or more APIs 340 to enable communication between the browser application 306a and the blockchain network 310.

[0097] Extension 302a may include an extension background page 370 that stores a private key 304 used to authenticate transactions added to the blockchain network 310. In some examples, the extension background page 370 is an HTML page. In some examples, the extension background page 370 is a container (e.g., an HTML-based container). The extension background page 370 includes a background script, for example, instructions that manage one or more computer tasks associated with the added / enabled web functionality (e.g., retrieving the private key 304 and using the private key 304 to authenticate blockchain transactions).

[0098] Extension 302a may inject a content script 372 into it. In some examples, the content script 372 is a computer file. In some examples, the content script 372 is a computer file that runs in the context of a web page (as opposed to background scripts on the extension's background page 370, which is part of the extension 302a). The content script 372 defines one or more callback APIs that allow extension 302a to communicate with the browser application 306a.

[0099] Browser application 306a defines one or more APIs 338 that enable browser application 206a to communicate with extension 302a to obtain information from extension 302a and / or notify extension 302a of information regarding blockchain transactions (for example, when web content 308 calls an object and creates a transaction on the blockchain network 310). APIs 338 may be programming interfaces that enable browser application 306a and extension 302a to communicate with each other.

[0100] A 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, an API(s) 340 could be a programming interface that facilitates communication between the browser application 306a and the blockchain network 310, for example, adding a blockchain transaction on the blockchain network 310 and receiving notification that the blockchain transaction was successfully added. In some examples, the browser application 306a includes a JavaScript library configured to implement API(s) 338 and API(s) 340. In some examples, the browser application 306a defines a native API, which includes API(s) 338 and API(s) 340.

[0101] Browser application 306a may detect whether web content 308 has selected (or initialized or invoked) an object for processing blockchain transactions. In some examples, when a user selects a particular UI item in web content 308, the web content may select an object. In some examples, the object relates to a transaction request to retrieve a list of assets (e.g., query accounts). In some examples, in response to web content 308 selecting an object, browser application 306a may send an asset request to extension 302a via API(s) 338 and then receive an asset list identifying the digital assets associated with extension 302a via API(s) 338. In some examples, in response to receiving the asset request, the extension's background page 370 retrieves asset information (e.g., asset information 207 in Figures 2A-2D) about the user's digital assets stored in the blockchain network 310. The asset list may identify one or more types of cryptocurrencies, and in some examples, it may identify the amount of each cryptocurrency. In some examples, browser application 306a may render a UI object that provides the asset list.

[0102] In some examples, the object relates to creating a blockchain transaction using digital data stored in the blockchain network 310 (e.g., sending a transaction). 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 API(s) 338. The transaction request may include details about the blockchain transaction to be created in the blockchain network 310, such as the sender, recipient, amount, and type of digital asset. In response to the transaction request, the extension's background page 370 may authenticate the transaction request using a private key 304. For example, the extension's background page 370 may use the private key 304 to perform a smart contract or cryptographic operation to authenticate (or sign) the transaction request. In response, the browser application 306a may receive the authenticated transaction request via API(s) 338.

[0103] Browser application 306a may send an authenticated transaction request to the node gateway of blockchain network 310 via API(s) 340, and blockchain network 310 adds the blockchain transaction to blockchain network 310. After the blockchain transaction is committed to blockchain network 310, browser application 306a receives a transaction response from blockchain network 310 via API(s) 340, which includes the transaction identifier of the blockchain transaction added to blockchain network 310. In some examples, the authenticated transaction request and transaction response are communicated between browser application 306a and blockchain network 310 using JSON messages. In response to the transaction response, browser application 306a sends a notification to extension 302a via API(s) 338, which includes the transaction identifier. The extension's background page 370 may update the user's asset information with the newly added blockchain transaction. In some examples, browser application 306a also sends a notification to the website of the web content (e.g., via API 338) indicating that the blockchain transaction has been successfully added to blockchain network 310.

[0104] Figure 4 shows a system 400 having a browser application 406a connected to a native application 402b for processing blockchain transactions in web content 408. In some examples, the web content 408 is rendered by the web view controller of the native application 402b. In some examples, the web content 408 is rendered by the browser application 406a. System 400 could be an example of system 100 in Figure 1 and / or system 200 in Figures 2A to 2D, and may include any of the details described with reference to those figures.

[0105] Browser application 406a is executable by computing device 426. In some examples, mobile computing device 426 includes a smartphone. In some examples, mobile computing device 426 includes a tablet. In some examples, browser application 406a is a web browser (e.g., browser engine or search engine) installed on the mobile operating system of computing device 326. Browser application 406a may connect to any third-party digital asset holder, represented as native application 402b.

[0106] A native application 402b is a native mobile application configured to run on the mobile operating system of a mobile computing device 426. In some examples, a native application 402b may include an Android application, a mobile iOS application, and / or a mobile Windows application. A native application 402b may be called a cryptocurrency wallet. A native application 402b may store a private key 404 used to authenticate blockchain transactions on a blockchain network 410. In some examples, a native application 402b may render web content using a web view controller or a browser tab.

[0107] The browser application 406a defines one or more APIs 438 that enable the browser application 406a to communicate with the native application 402b (for example, when web content 408 calls an object and creates a transaction on the blockchain network 410) to obtain information from the native application 402b and / or notify the native application 402b of information regarding the blockchain transaction. The API(s) 438 may be programming interfaces that enable the browser application 406a and the native application 402b to communicate with each other.

[0108] A 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, an API(s) 440 could be a programming interface that facilitates communication between the browser application 406a and the blockchain network 410, for example, adding a blockchain transaction on the blockchain network 410 and receiving notification that the blockchain transaction was successfully added. In some examples, the browser application 406a includes a JavaScript library configured to implement API(s) 438 and API(s) 440. In some examples, the browser application 406a defines a native API, which includes API(s) 438 and API(s) 440.

[0109] Browser application 406a may detect whether web content 408 has selected (or initialized or invoked) an object for processing blockchain transactions. In some examples, when a user selects a particular UI item in web content 408, web content 408 may select an object. In some examples, the object relates to a transaction request to retrieve a list of assets (e.g., query accounts). In some examples, in response to web content 408 selecting an object, browser application 406a may send an asset request to native application 402b via API(s) 438 and then receive an asset list identifying the digital assets associated with native application 402b via API(s) 438. In some examples, in response to receiving the asset request, native application 402b retrieves asset information (e.g., asset information 207 in Figures 2A-2D) about the user's digital assets stored in the blockchain network 410. The asset list may identify one or more types of cryptocurrencies, and in some examples, it may identify the amount of each cryptocurrency. In some examples, a browser application 406a may render a UI object that provides an asset list.

[0110] In some examples, the object relates to creating a blockchain transaction using digital data stored in the blockchain network 410 (e.g., sending a transaction). In response to the web content 408 selecting an object for creating a blockchain transaction, the browser application 406a may send a transaction request to the native application 402b via API(s) 438. The transaction request may include details about the blockchain transaction to be created in the blockchain network 410, such as the sender, recipient, amount, and type of digital asset. In response to the transaction request, the native application 402b may authenticate the transaction request using a private key 404. For example, the native application 402b may 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 may receive the authenticated transaction request via API(s) 438.

[0111] Browser application 406a may send an authenticated transaction request to the node gateway of blockchain network 410 via API(s) 440, and blockchain network 410 adds the blockchain transaction to blockchain network 410. After the blockchain transaction is committed to blockchain network 410, browser application 406a receives a transaction response from blockchain network 410 via API(s) 440, which includes the transaction identifier of the blockchain transaction added to blockchain network 410. In some examples, the authenticated transaction request and transaction response are communicated between browser application 406a and blockchain network 410 using JSON messages. In response to the transaction response, browser application 406a sends a notification containing the transaction identifier to native application 402b via API(s) 438. Native application 402b may update the user's asset information using the newly added blockchain transaction. In some examples, the browser application 406a also sends a notification to the website of the web content 408 (for example, via API 438) indicating that the blockchain transaction has been successfully added to the blockchain network 410.

[0112] Figure 5 shows a system 500 having a browser application 506a connected to a server application 502c for processing blockchain transactions in web content 508. In some examples, the web content 508 is rendered by the browser application 506a. System 500 could be an example of system 100 in Figure 1 and / or system 200 in Figures 2A to 2D, and may include any of the details described with reference to those figures.

[0113] Browser application 506a is executable by computing device 526. In some examples, computing device 526 includes a laptop computer. In some examples, computing device 526 includes a desktop computer. However, computing device 526 can be any type of computing device, such as a smartphone, tablet, or wearable device. Browser application 506a may connect to any third-party digital asset holder, represented as server application 502c. Server application 502c may be an application that runs on one or more server computers. In some examples, server application 502c is a cloud application. In some examples, server application 502c is a web application. Server application 502c may be an application program stored on a remote server (e.g., server computer(s) 216 in Figures 2A-2D) and delivered over the network by browser application 506a (e.g., a browser tab). In some examples, server application 502c is a progressive web application that is (at least partially) stored on computing device 526 and can be used offline.

[0114] The browser application 506a defines one or more APIs 538 that enable the browser application 506a to communicate with the server application 502c to obtain information from the server application 502c and / or notify the server application 502c of information regarding blockchain transactions (for example, when web content 508 calls an object and creates a transaction on the blockchain network 510). The APIs 538 may be programming interfaces that enable the browser application 506a and the server application 502c to communicate with each other.

[0115] A 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, an API(s) 540 could be a programming interface that facilitates communication between the browser application 506a and the blockchain network 510, for example, adding a blockchain transaction on the blockchain network 510 and receiving notification that the blockchain transaction was successfully added. In some examples, the browser application 506a includes a JavaScript library configured to implement API(s) 538 and API(s) 540. In some examples, the browser application 506a defines a native API, which includes API(s) 538 and API(s) 540.

[0116] Browser application 506a may detect whether web content 508 has selected (or initialized or invoked) an object for processing blockchain transactions. In some examples, when a user selects a particular UI item in web content 508, web content 508 may select an object. In some examples, the object relates to a transaction request to retrieve a list of assets (e.g., query accounts). In some examples, in response to web content 508 selecting an object, browser application 506a may send an asset request to server application 502c via API(s) 538 and then receive an asset list identifying the digital assets associated with server application 502c via API(s) 538. In some examples, in response to receiving the asset request, server application 502c retrieves asset information (e.g., asset information 207 in Figures 2A-2D) about the user's digital assets stored in the blockchain network 510. The asset list may identify one or more types of cryptocurrencies, and in some examples, it identifies the amount of each cryptocurrency. In some examples, a browser application 506a may render a UI object that provides an asset list.

[0117] In some examples, the object relates to creating a blockchain transaction using digital data stored in the blockchain network 510 (e.g., sending a transaction). In response to the web content 508 selecting an object for creating a blockchain transaction, the browser application 506a may send a transaction request to the server application 502c via API(s) 538. The transaction request may include details about the blockchain transaction to be created in the blockchain network 510, such as the sender, recipient, amount, and type of digital asset. In response to the transaction request, the server application 502c may authenticate the transaction request using a private key 504. For example, the server application 502c may use the private key 504 to perform a smart contract or cryptographic operation to authenticate (or sign) the transaction request. In response, the browser application 506a may receive the authenticated transaction request via API(s) 538.

[0118] The browser application 506a may send an authenticated transaction request to the node gateway of the blockchain network 510 via API(s) 540, and the blockchain network 510 adds the blockchain transaction to the blockchain network 510. After the blockchain transaction is committed to the blockchain network 510, the browser application 506a receives a transaction response from the blockchain network 510 via API(s) 540, which includes the transaction identifier of the blockchain transaction added to the blockchain network 510. In some examples, the authenticated transaction request and 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 API(s) 538, which 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 API 538) indicating that the blockchain transaction has been successfully added to the blockchain network 510.

[0119] Figure 6 shows a system 600 having a browser application 506a connected to a native application 602b to process blockchain transactions in web content 608 rendered by a browser tab 666. In some examples, browser tab 666 is a custom browser tab displayed by the native application 602b. System 600 could be an example of system 100 in Figure 1 and / or system 200 in Figures 2A to 2D, and may include any of the details described with reference to those figures.

[0120] 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 its UI, and this application content may include links to web content 608. When a link to 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 respect to a non-custom tab, when a link to web content 608 is selected, a separate browser tab is rendered on top of the native application's UI.

[0121] Browser application 606a is executable by mobile computing device 626. In some examples, mobile computing device 626 includes a smartphone. In some examples, mobile computing device 626 includes a tablet. In some examples, browser application 606a is a web browser (e.g., browser engine or search engine) installed on the mobile operating system of mobile computing device 626.

[0122] Browser tab 666 may include one or more selectable items associated with an action in browser application 606a, and one or more selectable items associated with an action in the underlying native application 602b. For example, if the native application 602b is a social media application, a link to an article may appear within a message displayed on the user's timeline. If the user selects the link to the article, browser tab 666 appears within the context of the social media application, and browser tab 666 displays the article. Browser tab 666 may include selectable items associated with an action in browser application 606a (e.g., controls for the navigation bar and / or toolbar). However, browser tab 666 may also include one or more selectable items associated with an action performed in the social media application (e.g., sharing an article on the platform) (e.g., customized activity buttons or controls). The above example uses a social media application, but the underlying native application 602b may encompass a wide variety of applications, including video sharing applications (among other types of applications).

[0123] In some examples, browser tab 666 includes customized display attributes of the browser tab 666's UI (e.g., setting the background color (e.g., hue) of the navigation panel and / or toolbar sections). For example, items in the navigation panel and toolbar (e.g., having forward and / or back navigation controls) are typically standard across the entire browser tab, as rendered for non-custom browser tabs. However, application developers may modify one or more aspects of the navigation panel and / or toolbar to customize the tab to correspond to the underlying native application 602b.

[0124] In some examples, the native application 602b includes or is associated with a digital asset holder and stores and manages a private key 604 to authenticate (e.g., sign) blockchain transactions. 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 subprogram that manages the private key 604 and can use the private key 604 to authenticate blockchain transactions. In some examples, the browser tab 666 may include an object (e.g., object 236) that allows blockchain transactions to be created. In some examples, the browser tab 666 itself exposes the object to allow blockchain transactions to be created.

[0125] The browser application 606a defines one or more APIs 638 that enable the browser application 606a to communicate with the native application 602b (for example, when a browser tab 666 calls an object and creates a transaction on the blockchain network 610) to obtain information from the native application 602b and / or notify the native application 602b of information regarding the blockchain transaction. The APIs 638 may be programming interfaces that enable the browser application 606a and the native application 602b to communicate with each other.

[0126] A 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, an API(s) 640 could be a programming interface that facilitates communication between the browser application 406a and the blockchain network 610, for example, adding a blockchain transaction on the blockchain network 610 and receiving notification that the blockchain transaction was successfully added. In some examples, the browser application 606a includes a JavaScript library configured to implement API(s) 638 and API(s) 640. In some examples, the browser application 606a defines a native API, which includes API(s) 638 and API(s) 640.

[0127] Browser application 606a may detect whether browser tab 666 (e.g., a custom browser tab) has selected (or initialized or invoked) an object for processing blockchain transactions. In some examples, when a user selects a specific UI item in browser tab 666, browser tab 666 may select an object. In some examples, the object relates to a transaction request to retrieve a list of assets (e.g., query accounts). In some examples, in response to browser tab 666 selecting an object, browser application 606a may send an asset request to native application 602b via API(s) 638 and then receive an asset list identifying the digital assets associated with native application 602b via API(s) 638. In some examples, in response to receiving the asset request, native application 602b retrieves asset information (e.g., asset information 207 in Figures 2A-2D) about the user's digital assets stored in the blockchain network 610. The asset list may identify one or more types of cryptocurrencies, and in some examples, it identifies the amount of each cryptocurrency. In some examples, a browser application 606a may render a UI object that provides an asset list.

[0128] In some examples, the object relates to creating a blockchain transaction using digital data stored on the blockchain network 610 (e.g., sending a transaction). 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 API(s) 638. The transaction request may include details about the blockchain transaction to be created on the blockchain network 610, such as the sender, recipient, amount, and type of digital asset. In response to the transaction request, the native application 602b may authenticate the transaction request using a private key 604. For example, the native application 602b may 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 606a may receive the authenticated transaction request via API(s) 638.

[0129] Browser application 606a may send an authenticated transaction request to the node gateway of blockchain network 610 via API(s) 640, and blockchain network 610 adds the blockchain transaction to blockchain network 610. After the blockchain transaction is committed to blockchain network 610, browser application 606a receives a transaction response from blockchain network 610 via API(s) 640, which includes the transaction identifier of the blockchain transaction added to blockchain network 610. In some examples, the authenticated transaction request and transaction response are communicated between browser application 606a and blockchain network 610 using JSON messages. In response to the transaction response, browser application 606a sends a notification containing the transaction identifier to native application 602b via API(s) 638. Native application 602b may update the user's asset information using the newly added blockchain transaction. In some examples, the browser application 606a also sends a notification to the website of the web content 608 (for example, via API 638) indicating that the blockchain transaction has been successfully added to the blockchain network 610.

[0130] Figures 7A to 7D show exemplary user interfaces for connecting a browser application to an application containing private keys to enable blockchain transactions, in various configurations. The user interfaces in Figures 7A to 7D can be displayed according to any of the systems described with reference to the previous figures.

[0131] Referring to Figure 7A, web content 708 can be displayed on a computing device. Web content 708 can be displayed from an application running on the computing device. In some examples, web content 708 can be displayed via a browser application. In some examples, web content 708 can be displayed via a browser tab. In some examples, web content 708 can be displayed via a native application. In some examples, web content 708 contains items 711 that a user can select to initiate a transaction on a blockchain network.

[0132] Referring to Figure 7B, in response to a user's selection of a selectable item 711, an application (e.g., a browser application or a non-browser application) may render a UI object 707 that allows the user to connect a specific digital asset holder with the browser application. In some examples, the browser application may detect that web content 708 selects an object (e.g., call, initialize, etc.) to create a blockchain transaction, for example, when the user selects a selectable item 711 in Figure 7A. In some examples, the browser application renders a UI object 707. The UI object 707 may identify one or more digital asset holders to be selected. In some examples, the UI object 707 may display a connection control 713 to allow the browser application to connect with a specific digital asset holder (e.g., digital asset holder A). In some examples, the UI object 707 may display a connection control 715 for selecting other digital asset holders not identified in the UI object 707. For example, selecting a connection control 715 may render an additional UI object for selecting other digital asset holders.

[0133] Referring to Figure 7C, in response to the selection by the connection control 713, 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 (e.g., digital asset A, digital asset B, digital asset C, etc.) associated with the selected digital asset holder that are stored on the blockchain network. For example, the asset list 744 may identify the type of cryptocurrency managed by the selected digital asset holder.

[0134] For example, a browser application may send an asset request to a digital asset holder via a first API(s), and then receive an asset list via the first API(s) that identifies the digital assets associated with the selected digital asset holder. In some examples, in response to receiving an asset request, the digital asset holder retrieves asset information (e.g., asset information 207 in Figures 2A-2D) about the user's digital assets stored on the blockchain network. The asset list 744 may identify one or more types of cryptocurrencies, and in some examples, it may identify the amount of each cryptocurrency. In some examples, the browser application may render a UI object 717 that provides the asset list 744.

[0135] In some cases, a browser application may proceed to process a blockchain transaction in order to commit the blockchain transaction to the blockchain network in response to the selection of a specific digital asset (e.g., digital asset A). For example, a browser application may send a transaction request to a digital asset holder via a first API(s). The transaction request may include details about the blockchain transaction to be created on the blockchain network, such as the sender, recipient, amount, and type of digital asset. 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. The browser application may then receive the authenticated transaction request via a first API(s).

[0136] The browser application may send an authenticated transaction request to the blockchain network's node gateway via a second API(s), and the blockchain network adds the blockchain transaction to the blockchain network. After the blockchain transaction is committed to the blockchain network, the browser application receives a transaction response from the blockchain network via the second API(s), containing the transaction identifier of the blockchain transaction added to the blockchain network. In response to the transaction response, the browser application sends a notification containing the transaction identifier to the digital asset holder via the first API(s). The cryptocurrency 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 indicating that the blockchain transaction has been successfully added to the blockchain network. In some examples, referring to Figure 7D, the browser application renders a UI object 719 indicating that the transaction is complete.

[0137] Figures 8A to 8F show exemplary user interfaces for connecting a browser application to an application containing a private key to enable blockchain transactions, in various configurations. In some examples, the user interfaces in Figures 8A to 8F relate to the processing of cryptocurrency payments for subscription access rights. The user interfaces in Figures 8A to 8F may be displayed according to any of the systems described with reference to the figures above.

[0138] In some examples, the digital asset holder is implemented by a server application. For example, the server application may manage access to online content (e.g., web content) via subscriptions. In some examples, the server application may include a digital asset holder that identifies one or more tokens (e.g., creator tokens) stored on the blockchain network. In some examples, subscription access rights (e.g., digital rights) may be granted to a specific user in exchange for one or more tokens. In some examples, the tokens are NFTs.

[0139] Referring to Figure 8A, a portion of web content (for example, an article from the website (xyz.com)) is displayed. In some examples, the browser application may render a portion of the web content (for example, when the user selects a link to an article). Referring to Figure 8B, when the article is further selected, the browser application may render a UI object that allows the user to subscribe using a browser account (for example, Option 1, Option 2), and / or since the user is already a subscriber, it may provide a selectable item 813 for the user to gain access to the article details. Referring to Figure 8C, in response to the selection of the selectable item 813, the browser application The browser application may render a UI object to authenticate subscription access using one or more accounts (e.g., browser accounts, social media accounts, etc.). The UI object may also provide selectable items 815 to obtain access to articles using digital asset holders. Referring to Figure 8D, in response to the selection of selectable item 815, the browser application may render a UI object that allows the browser application to connect with a specific digital asset holder. The UI object in Figure 8D may include selectable item 817 that allows the user to select a specific digital asset holder (e.g., digital asset holder #1).

[0140] In response to the selection of an item 817, the browser application may connect to the selected digital asset holder and use the token (e.g., NFT) to gain access to web content (e.g., an article). In some examples, the browser application may render a UI object 819 to inform the user that the browser application is connected to the digital asset holder while the transaction is being added to the blockchain network.

[0141] In some examples, in response to the selection of selectable item 817, the browser application sends a transaction request (e.g., transaction request 248 in Figures 2A-2D) to the server computer running the server application via one or more first APIs. 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., authenticated transaction request 246 in Figures 2A-2D) from the server computer via one or more first APIs. The browser application then communicates with the blockchain network via one or more second APIs to send the authenticated transaction request and receives a transaction response (e.g., transaction response 222 in Figures 2A-2D). The browser application sends a notification (e.g., notification 252 in Figures 2A-2D) to the server application via the first APIs. In some examples, referring to Figure 8F, the browser application renders a UI object 821 that identifies that the content has been unlocked based on token settlement.

[0142] Figure 9 is a flowchart 900 illustrating an exemplary operation in which an application connects to a digital asset holder to process blockchain transactions, according to one embodiment. 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 to 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.

[0143] Flowchart 900 illustrates the system 100 in Figure 1, but flowchart 900 may be applicable to any of the embodiments described herein. While flowchart 900 in Figure 9 shows the operations in sequence, this is merely an example, and it should be understood that additional or alternative operations may be included. Furthermore, the operations in Figure 9 and related operations may be performed in a different order than illustrated, or in a parallel or overlapping manner.

[0144] Operation 902 includes receiving an authenticated transaction request from a digital asset holder 102, which manages private keys for accessing data on the blockchain network, to add transaction 112 to the blockchain network 110, via the application programming interface of application 106. In some examples, the application is a browser application. In some examples, the digital asset holder 102 is an extension to the browser application. In some examples, the digital asset holder 102 is a native application. In some examples, the 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.

[0145] Operation 904 includes application 106 sending an authenticated transaction request to the blockchain network 110. In some examples, the authenticated transaction request is sent to the blockchain network 110 via at least one second application programming interface that defines an interface between application 106 and the blockchain network 110. Application 106 and the blockchain network 110 may communicate with each other via JSON messages. Operation 906 also includes application 106 receiving a transaction response from the blockchain network 110 containing the transaction identifier of transaction 112 added to the blockchain network 110. For example, application 106 may receive the results of a transaction being added to the blockchain network 110. Operation 908 includes application 106 sending a notification message containing the transaction identifier to the digital asset holder 102 via the application programming interface of application 106. In some examples, the notification message is sent to the website that provided the web content (e.g., the website that received the transferred digital asset).

[0146] In some examples, the operation includes rendering web content with items that the user can select to perform a transaction on the blockchain network. In some examples, the operation includes sending a request (e.g., an authentication request) to authenticate the transaction using a private key in response to the selection of an item that the user can select. In some examples, the request to authenticate the transaction is transaction request 248 in Figures 2A to 2D. The operation may include receiving an authenticated transaction request in response to the request to authenticate the 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 the selection of an item that can select.

[0147] In some embodiments, a method (e.g., an operation) may include one or more of the following features (or any combination thereof): The method may include, by an application, rendering web content having items that a user can select to perform a transaction on a blockchain network, and, in response to receiving the user's selection of the selectable items, sending a request to a digital asset holder for authentication of the transaction. The method may include, by an application, rendering web content having items that a user can select to perform a transaction on a blockchain network, in response to receiving the user's selection of the selectable items, sending an asset request to a digital asset holder, and receiving from the digital asset holder an asset list identifying one or more digital assets stored on the blockchain network. The method may include, by an application, rendering items that a user can select to connect 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, and authenticated transaction requests are sent to the blockchain network via a second application programming interface, which is configured to allow communication between the application and the blockchain network. The method may include obtaining a first application programming interface and a second application programming interface from a storage device associated with the application. The method may include sending a JavaScript object notation message containing an authenticated transaction request to a node gateway on the blockchain network. The application may include a browser application. The digital asset holder may include an extension to the browser application. The digital asset holder may include a native application.Digital asset holders may include server applications.

[0148] According to one embodiment, the device includes at least one processor and a non-temporary computer-readable medium for storing executable instructions, wherein when an executable instruction is executed by at least one processor, the device causes at least one processor to receive an authenticated transaction request for adding a transaction to the blockchain network from a digital asset holder managing a private key for accessing data on the blockchain network via an application programming interface of a browser application, causes the browser application to send the authenticated transaction request to the blockchain network, causes the browser application to receive a transaction response from the blockchain network including a transaction identifier for the transaction added to the blockchain network, and causes the browser application to send a notification message including the transaction identifier to the digital asset holder via an application programming interface of the browser application.

[0149] In some embodiments, the device may include one or more of the following features (or any combination thereof): An executable instruction, when executed by at least one processor, includes an instruction causing at least one processor to cause a browser application to render web content having user-selectable items for performing a transaction on a blockchain network, and in response to receiving the user's selection of selectable items, to send a request for authentication of the transaction to a digital asset holder configured to authenticate the transaction using a private key. An executable instruction, when executed by at least one processor, includes an instruction causing at least one processor to cause a browser application to render user-selectable items and connect to a digital asset holder that manages a private key for accessing data on the blockchain network. An application programming interface is a first application programming interface, and authenticated transaction requests are sent to the blockchain network via a second application programming interface configured to communicate between the browser application and the blockchain network, and an executable instruction, when executed by at least one processor, includes an instruction causing at least one processor to retrieve the first and second application programming interfaces from a storage device associated with the browser application.

[0150] According to one embodiment, a non-temporary computer-readable medium, when executed by at least one processor, stores executable instructions causing at least one processor to perform an operation, the operation comprising: rendering web content having items selectable by a user to perform a transaction on a blockchain network; receiving, in response to receiving a selection of items selectable by a user, an authenticated transaction request from a digital asset holder managing a private key for accessing data on the blockchain network, by a browser application to add a transaction to the blockchain network; sending the authenticated transaction request to the blockchain network by the browser application; receiving a transaction response from the blockchain network, including a transaction identifier for the transaction added to the blockchain network, by the browser application; and sending a notification message, including the transaction identifier, to the digital asset holder by the browser application.

[0151] In some embodiments, the operation may include one or more of the following features (or any combination thereof): The operation may include, by a browser application, sending an asset request to a digital asset holder; by a browser application, receiving an asset list from the digital asset holder that identifies multiple digital assets stored in the blockchain network; displaying a user interface object containing the multiple digital assets; and, in response to the selection of one of the multiple digital assets, sending a request to the digital asset holder to authenticate the transaction. The operation may include, by a browser application, rendering an item that the user can select to connect to a digital asset holder that manages private keys for accessing data on the blockchain network. The operation may include, by a browser application, communicating between the browser application and the digital asset holder via a first application programming interface; and by, communicating between the browser application and the blockchain network via a second application programming interface. The operation may include, obtaining the first and second application programming interfaces from a storage device associated with the browser application.

[0152] Figures 10A and 10B illustrate a system 1000 that, in one embodiment, customizes the user interface 1058 of a browser application 1006a using digital data 1056 of tokens 1054 stored in a blockchain network 1010. System 1000 may be an example of a system described with reference to Figures 1 to 9 and may include any of the details described herein. In some examples, a user may use the browser application 1006a to customize one or more aspects of a browser tab 1060 that uses the digital data 1056. In some examples, system 1000 may customize (e.g., change) the browser settings of the browser application 1006a based on one or more tokens 1054 stored in the blockchain network 1010 and associated with the user. In some examples, connecting a digital rights holder to the browser application 1006a may adjust one or more browser settings of the browser application 1006a.

[0153] Computing device 1026 runs browser application 1006a. Computing device 1026 can be any type of computing device including one or more processors (e.g., processor(s) 228 in Figures 2A to 2D), one or more memory devices (e.g., memory(s) 230 in Figures 2A to 2D), a display (e.g., display(s) 234 in Figures 2A to 2D), and an operating system (e.g., operating system(s) 232 in Figures 2A to 2D) configured to run (or assist in running) one or more applications, including browser application 1006a. 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.

[0154] Browser application 1006a may be a web browser configured to access information on the Internet. In some examples, browser application 1006a is a separate application from the operating system of computing device 1026, and browser application 1006a can be installed on (and run by) the operating system. In some examples, browser application 1006a is the operating system of the device (or is included as part of the operating system of the device). Browser application 1006a may launch one or more browser tabs in the context of one or more browser windows on the display of computing device 1026. In some examples, browser application 1006a may launch one or more browser tabs without referring to a browser window.

[0155] 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 the blockchain network 1010. In some examples, Token 1054 stored on the blockchain network 1010 contains information about Token 1054. The token may include a file name, caption, the current owner of the token, and / or a history of the activity of its transaction. In some examples, Token 1054 contains digital data 1056. In some examples, Token 1054 does not contain digital data 1056. In some examples, Token 1054 contains a storage location 1065 that identifies the location of the digital data 1056. In some examples, storage location 1065 is a web resource (e.g., a Uniform Resource Locator (URL)) that points to the location of the digital data 1056. In some examples, storage location 1065 contains a hash value to a file system or other 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 categories of token 1054 include art, collectibles, game or application utilities, and early access for whitelisting and drop.

[0156] A user can obtain token 1054 (for example, from an online marketplace or by minting a new token 1054), "store" the token 1054 in a digital asset holder, such as an application (or program) that stores and manages the user's private key, and authenticate transactions on the blockchain network 1010. In some examples, the digital asset holder may be called a cryptocurrency wallet. Examples of digital asset holders are described with reference to Figures 1-9 (e.g., digital asset holder 102, digital asset holder 202, extension 302a, native application 402b, server application 502c, etc.). A digital asset holder may include any of the details described with reference to these figures.

[0157] Digital data 1056 can be coded (e.g., minted) on the blockchain network 1010, which generates a unique token (e.g., token 1054) used to represent the owner of the digital asset. Some categories of token 1054 (e.g., NFT) include art, collectibles, utility for games or applications, and early access for whitelisting and dropping. The digital asset holder uses a private key to authenticate blockchain transactions involving token 1054 (e.g., transfer, sell, buy token 1054). In some examples, since the blockchain network 1010 is public, token 1054 may be accessible using an identifier 1052 such as a token location 1063 (e.g., an NFT identifier) ​​that identifies the specific location of token 1054 on the blockchain network 1010, and / or the holder address 1061 (e.g., a public address, wallet address) of the digital asset holder. In some examples, identifier 1052 includes a storage location 1065 that points to the location of the digital data 1056 of token 1054. In some examples, a particular token 1054 (or multiple tokens 1054) can be identified by a collection identifier that identifies a collection of tokens 1054 (for example, by a particular creator or multiple creators).

[0158] Referring to Figure 10A, the digital data 1056 may be displayed as the background image of the browser tab 1060 of the browser application 1006a. For example, the user may adjust the browser settings 1055 to change one or more display modes of the browser application 1006a and / or the browser tab 1060. In some examples, the browser settings 1055 may allow the user to select a particular token 1054, one or more tokens 1054 associated with the user's digital asset holder, or one or more tokens 1054 associated with a particular collection, so that the digital data 1056 of token 1054 is displayed as the background image of the browser tab 1060.

[0159] 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 can be interpreted by the browser application 1006a as a request to render the browser tab. The new tab page may be customized with digital data 1056 of one or more tokens 1054 stored in the blockchain network 1010. For example, the digital data 1056 of 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 browser tab 1060 may have the digital data 1056 as a background image. In some examples, 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 token 1054, with the search entry field 1053 in the foreground and the digital data 1056 in the background. In some examples, each time a user launches a new browser tab 1060, the browser tab 1060 displays digital data 1056 of a different token 1054.

[0160] The browser application 1006a may include or be connected to the user's digital asset holder, which identifies one or more tokens 1054. The browser tab 1060 may display the digital data 1056 of the tokens 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 (for example, swapping the user's NFTs "stored" in the user's digital asset holder).

[0161] In some examples, the digital data 1056 of token 1054 is displayed as a profile image 1066 in the browser tab 1060. A user may have an account associated with the browser application 1006a, and the user may select a specific image to be used as the profile image 1066. The profile image 1066 is displayed within the area of ​​the browser tab 1060. The user may adjust the browser settings 1055 to identify a specific 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 email applications, video conferencing applications, and storage applications. The profile image 1066, which has the digital data 1056 of token 1054, may also be displayed when identifying accounts for those other services.

[0162] In some examples, a new tab page rendered by a browser tab 1060 includes one or more UI modules 1070. The UI modules 1070 can be various UI objects displayed on the new tab page and may include controls or links to applications, web content, or application content from a particular application. In some examples, the UI modules 1070 may provide content from an underlying web application. For example, a weather module may provide weather information, a video sharing module may provide a selection of videos, and a social media module may provide information from the user's timeline. 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 modules 1070 are configured to swap (e.g., sequentially or randomly) the user's NFTs (e.g., NFTs identified by the user's digital asset holder, NFTs associated with a particular digital asset holder, or part of a collection of NFTs). For example, if a 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, and the digital data 1056 of the second token for a second predetermined period. In some examples, the UI module 1070 may display the digital data 1056 of multiple tokens 1054 simultaneously.

[0163] In some examples, the browser application 1006a can customize the color scheme of its user interface 1058 based on the color scheme associated with the digital data 1056 of token 1054. For example, a user may select a specific token 1054 from a list of tokens 1054 associated with an identifier 1052 (such as the user's digital asset holder). The browser application 1006a may change the color scheme (or shade) of one or more parts of the browser tab 1060 to correspond to the color scheme of the selected token 1054. The parts of the browser tab 1060 may include a navigation panel (having browser navigation controls such as forward or back), a toolbar with controls for actions of the browser application 1106a (or controls for a native application), menus, menu items, and / or an address bar identifying a website URL. In some examples, the browser application 1006a may customize the theme of the user interface 1058 (e.g., borders and / or background) to correspond to the theme (e.g., color scheme) associated with the digital data 1056 of token 1054.

[0164] A browser application 1006a may retrieve an identifier 1052 associated with a token 1054 stored in the blockchain network 1010. In some examples, the identifier 1052 identifies the location of one or more tokens 1054 in the blockchain network 1010 and / or storage device(s) 1016 and / or the digital data 1056 of one or more tokens 1054. In some examples, the identifier 1052 includes one or more addresses in 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 retrieves the identifier 1052 from the memory device. In some examples, the browser application 1006a may retrieve 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 can connect to the third-party digital asset holder using one of the techniques described in Figures 1 to 9. In some examples, the browser application 1006a includes a digital asset holder (e.g., a native or embedded digital asset holder), and the browser application 1006a can retrieve identifier 1052 from the digital asset holder. In some examples, the browser tab 1060 may render a UI object that allows the user to enter identifier 1052. In some examples, the browser application 1006a may retrieve identifier 1052 from web content and / or application content displayed on the computing device 1026. In some examples, the browser application 1006a may retrieve identifier 1052 in response to a user selection.

[0165] In some examples, identifier 1052 contains holder address 1061. Holder address 1061 may be a shared address (or public address) associated with a digital asset holder. In some examples, holder address 1061 may be called a wallet address. In some examples, the public address identifies location 1045 on blockchain network 1010 that stores token 1054 associated with the digital asset holder. In some examples, identifier 1052 contains token location 1063 that identifies the location of a specific token 1054 on blockchain network 1010. In some examples, identifier 1052 contains storage location 1065 that identifies the location of the digital data 1056 of token 1054. In some examples, storage location 1065 contains a resource locator. In some examples, storage location 1065 contains a uniform resource locator (URL). In some examples, storage location 1065 is a hash value.

[0166] The digital data 1056 of token 1054 may be stored in a location separate from token 1054 on the blockchain network 1010. In some examples, the digital data 1056 is stored on one or more storage devices 1016. 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 server computers. In some examples, the storage device 1016 includes file systems. In some examples, the storage device 1016 includes other blockchain networks. In some examples, token 1054 stores the digital data 1056.

[0167] The browser application 1006a may retrieve the digital data 1056 using the holder address 1061, the token location 1063, and / or the storage location 1065. 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 of the tokens 1054. The holder address 1061 may be the address of a user's digital asset holder. In some examples, the holder address 1061 may be the address of a digital asset holder for an entity other than a user. The holder address 1061 may point to a location 1045 that stores the token 1054 of the digital asset holder. 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 digital data 1056 is stored in a storage device(s) 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 (e.g., URL, hash value) to retrieve the digital data 1056 from the storage device(s) 1016.

[0168] In some examples, a browser application 1006a can use a token location 1063 to query the blockchain network 1010 and retrieve digital data 1056. Token location 1063 may represent the address of a specific token 1054 stored in the blockchain network 1010. If the digital data 1056 is stored in token 1054, the browser application 1006a can retrieve the digital data 1056 from the blockchain network 1010. If the digital data 1056 is stored in a storage device 1016, the browser application 1006a can query the blockchain network 1010 to retrieve a storage location 1065 and use the storage location 1065 to retrieve the digital data 1056.

[0169] In some examples, a browser application 1006a can use a storage location 1065 to retrieve digital data 1056. For example, storage location 1065 may be an address or locator that points to the location of digital data 1056 on a storage device 1016, and the browser application 1006a can use storage location 1065 to retrieve digital data 1056.

[0170] Figure 11 shows an example of a system 1100 having a browser application 1106a connected to a digital asset holder 1102, according to one embodiment. System 1100 may be an example of any of the systems described with reference to System 1000 in Figures 10A and 10B and / or Figures 1 to 9, and may include any of the details described with reference to those figures. In some examples, the browser application 1106a can connect to the digital asset holder 1102, and one or more embodiments of the browser tabs of the browser application 1106a (e.g., browser tab 1060 in Figures 10A and 10B) are customized from tokens associated with the digital asset holder 1102 (e.g., token 1054 in Figures 10A and 10B). In some examples, the digital asset holder 1102 is a third-party digital asset holder, and the browser application 1106a can connect to the digital asset holder 1102 according to any of the techniques described with reference to Figures 1 to 9.

[0171] The digital asset holder 1102 includes a private key 1104 used by the digital asset holder 1102 to authenticate transactions on the blockchain network. Examples of the digital asset holder 1102 are described with reference to Figures 1 to 9 (e.g., digital asset holder 102, digital asset holder 202, extension 302a, native application 402b, server application 502c, etc.). The digital asset holder 1102 may include any of the details described with reference to these figures.

[0172] In some examples, in response to the browser application 1106a connecting to the digital asset holder 1102, the browser application 1106a may obtain an identifier 1152 from the digital asset holder 1102. In some examples, the browser application 1106a may receive the identifier 1152 via one or more application programming interfaces (e.g., API 238 in Figures 2A-2D) that allow 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., the shared / public address of the digital asset holder 1102). In some examples, the identifier 1152 may include one or more token locations 1163 for tokens associated with the digital asset holder 1102. In some examples, the identifier 1152 may include one or more storage locations 1165 specifying the location of the digital data for each token. In some examples, the digital asset holder 1102 stores a holder address 1161, an arbitrary token location 1163 for tokens associated with the digital asset holder 1102, and / or a storage location 1165 for any tokens associated with the digital asset holder 1102. In some examples, the digital asset holder 1102 does not store the storage location 1165.

[0173] 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 for each token identified by the digital asset holder 1102. In some examples, in response to a new browser tab being opened, the digital data is displayed in the browser tab as a background image. The browser application 1106a may interpret the user opening a new browser tab 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 other browser tabs are open). In some examples, the user can select a specific token from the digital asset holder 1102 by configuring browser settings (e.g., browser settings 1055 in Figures 10A and 10B). In some examples, a browser application can render UI objects on a device's display that show digital data for each token associated with a digital asset holder 1102, allowing the user to select one of the tokens to use as a background image and / or profile image.

[0174] In some examples, a user can configure their browser settings to swap tokens so they can be used as background images (and / or photographs). For example, a 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.

[0175] In some embodiments, 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 rotation continues. In some embodiments, the browser application 1106a may randomly select one of the tokens to use as a background image. In some embodiments, when a user acquires a new token for the digital asset holder 1102 (e.g., by creating or purchasing a new one), 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. With respect to profile images, in some embodiments, the browser application 1106a may automatically switch to a different token after a predetermined period of time (e.g., automatically switching profile images after 10 days, 20 days, etc.).

[0176] Figure 12 shows an example of a browser application 1206a having a digital asset holder 1202. In some examples, the digital asset holder 1202 is a program managed or developed by the entity that developed the browser application 1206a. Examples of digital asset holders 1202 are described with reference to Figures 1 to 9 (e.g., digital asset holder 102, digital asset holder 202, extension 302a, native application 402b, server application 502c, etc.). The digital asset holder 1202 may include any of the details described with reference to these figures. In some examples, the digital asset holder 1202 is a native or embedded digital asset holder 1202. The digital asset holder 1202 includes a private key 1204 used to authenticate transactions on the blockchain network. The browser application 1206a may run on any of the systems described with reference to Figures 1 to 11 and may include any of the details described with reference to those figures.

[0177] The browser application 1206a can access the digital asset holder 1202, and one or more aspects of the browser tabs of the browser application 1206a (e.g., browser tab 1060 in Figures 10A and 10B) are customized from tokens associated with the digital asset holder 1202 (e.g., token 1054 in Figures 10A and 10B). In some examples, the browser application 1206a may not need to establish a connection to the digital asset holder 1202 (e.g., an API connection) because the digital asset holder 1202 is included as part of the browser application 1206a. In some examples, the browser application 1206a may be able to retrieve some of all the information from the digital asset holder 1202. In some examples, the browser application 1206a may be able to retrieve identifier 1252 from the digital asset holder 1202. In some examples, identifier 1252 is stored in a memory device associated with the browser application 1206a. In some examples, identifier 1252 may include holder address 1261 (e.g., the shared / public address of digital asset holder 1202). In some examples, identifier 1252 may include one or more token locations 1263 for tokens associated with digital asset holder 1202. In some examples, identifier 1252 may include one or more storage locations 1265 specifying the location of the digital data for each token.

[0178] 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 for each token identified by the digital asset holder 1202. In some examples, in response to a new browser tab being opened, the digital data is displayed in the browser tab as a background image. The browser application 1206a may interpret the user opening a new browser tab 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 other browser tabs are open). In some examples, the user can select a specific token from the digital asset holder 1202 by configuring browser settings (e.g., browser settings 1055 in Figures 10A and 10B). In some examples, a browser application can render a UI object that displays digital data for each token associated with the digital asset holder 1202, allowing the user to select one of the tokens to use as a background image and / or profile image.

[0179] In some examples, a user can configure browser settings to swap tokens so they can be used as background images (and / or photographs). For example, a 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, a browser application 1206a may randomly select one of the tokens to use as a background image. Regarding profile pictures, in some examples, the browser application 1206a may automatically switch to a different token after a predetermined period of time (for example, automatically switching profile pictures after 10 days, 20 days, etc.).

[0180] Figure 13 shows an example of a browser application 1306a in another embodiment. The browser application 1306a may render a UI object 1364 in the user interface 1358 of the browser application 1306a, the UI object 1364 allowing the user to input 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, the user may input a shared (e.g., publicly available) address of a digital asset holder. In some examples, the digital asset holder is owned by the user of the browser application 1306a. In some examples, the shared address relates to a digital asset holder of a non-user (e.g., another user's shared address). In some examples, the identifier 1352 may include a token location for tokens stored on the blockchain network. In some examples, the user may input a token location for tokens owned by the user. In some examples, the user may input any token location (e.g., for tokens not owned by the user). In some examples, identifier 1352 includes a storage location that specifies the location of the digital data for each token. In some examples, the user may enter a storage location for tokens they own. In some examples, the user may enter any storage location (for example, for tokens they do not own). In some examples, identifier 1352 includes a collection identifier that identifies the location of tokens and / or the digital data of tokens associated with a particular collection of tokens, one creator, multiple creators, and / or parts of an NFT project.

[0181] Figure 14 shows an example of a browser application 1406a configured to customize a browser tab 1460 using tokens from a blockchain network, in one embodiment. For example, browser application 1406a may select different tokens to use as background images 1468 when a new browser tab 1460 is opened. When a user opens a new browser tab, browser application 1406a may interpret this as a request to render browser tab 1460. For example, on the first occasion, browser application 1406a may render browser tab 1460-1, displaying the digital data 1456-1 of a first token as the background image 1468 of browser tab 1460-1. On the second occasion, browser application 1406a may render browser tab 1460-2, displaying the digital data 1456-2 of a second token as the background image 1468 of browser tab 1460-2. On the third occasion, the browser application 1406a may render the browser tab 1460-3, and the digital data 1456-3 of the third token will be displayed as the background image 1468 of the browser tab 1460-3.

[0182] Figure 15 shows an example of a browser application 1506a configured in one embodiment to customize a user interface 1558 (e.g., a browser tab) using tokens from a blockchain network. The browser application 1506a may render the digital data 1556 of the token as a profile image 1566 displayed in the user interface 1558 of the browser application 1506a. The user may adjust browser settings (e.g., browser settings 1055 in Figures 10A and 10B) to identify a specific token to be used as a profile image 1066. The account associated with the browser application 1506a may be associated with other services such as an email application, a video conferencing application, or a storage application. The profile image 1566 having the digital data 1556 of the token may also be displayed when identifying accounts for those other services.

[0183] Figure 16 shows an example of a browser application 1606a configured to customize a user interface 1658 using tokens from a blockchain network, in one embodiment. 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, a browser tab renders a new browser page, which contains the UI module 1670. In some examples, the new browser page also contains an entry field for entering terms to search on the internet. In some examples, the UI module 1670 is a computer object rendered in the user interface 1658, which may include input controls, information containers, and / or containers. The UI module 1670 may display the digital data of one or more tokens. Parameters regarding when and / or how tokens are displayed may be customizable by the user through one or more browser settings.

[0184] In some examples, the UI module 1670 is configured to swap (e.g., display sequentially) the user's tokens from any digital asset holder connected to, for example, a browser application 1606a (or a part thereof). In some examples, the browser application 1606a can receive identifiers (e.g., holder address, token location, storage location, collector identifier), and then the UI module 1670 can display digital data from those tokens associated with those identifiers. In some examples, the user can adjust browser settings (e.g., browser settings 1055 in Figures 10A and 10B) to add a first UI module associated with tokens associated with a first digital asset holder or a first collection identifier, and the first UI module can display the digital data of each token (e.g., sequentially or simultaneously). In some examples, the user can adjust browser settings (e.g., browser settings 1055 in Figures 10A and 10B) to add a second UI module related to tokens associated with a second digital asset holder or second collection identifier, and the second UI module may display the digital data of each token (e.g., sequentially or simultaneously).

[0185] In some examples, if a user's digital asset holder identifies a first token, a second token, and a third token, the UI module 1670 may display the digital data 1656-1 of the first token for a first predetermined period (e.g., 5 seconds, 30 seconds, 1 minute, etc.), the digital data 1656-2 of the second token for a second predetermined period, and the digital data 1656-3 of the third token for a third predetermined period. In some examples, the display time for a particular token may be adjustable by the user via browser settings. In some examples, the UI module 1070 may display digital data 1656-1, digital data 1656-2, and digital data 1656-3 simultaneously in the UI module 1670.

[0186] Figure 17 shows a browser application 1706a configured to customize a user interface 1758 using tokens from a blockchain network, in one embodiment. In some examples, the browser application 1706a includes (or communicates with) a recommendation engine 1774. The recommendation engine 1774 is configured to generate user recommendations 1776 using metadata 1772 associated with one or more tokens. In some examples, the recommendation engine 1774 runs on one or more server computers, and the browser application 1706a communicates with the recommendation engine 1774 over the network to receive recommendations 1776. In some examples, the recommendation engine 1774 is part of the browser application 1706a running on the user's device (e.g., computing device 1026 in Figures 10A and 10B).

[0187] The recommendation engine 1774 may retrieve metadata 1772 about one or more tokens stored in the blockchain network. In some examples, the user is provided with one or more controls to enable (or disable) the recommendation engine 1774 to retrieve metadata 1772 about tokens stored in the blockchain network. In some examples, the recommendation engine 1774 retrieves metadata 1772 about tokens identified by a digital asset holder(s) connected to a browser application 1706a(or part thereof).

[0188] Metadata 1772 may contain information about the token(s). In some examples, metadata 1772 may include information related to the creator, item name, description, property level, statistics, when and / or where the token was created, and / or the NFT project associated with the token. In some examples, metadata 1772 is stored on a blockchain network (e.g., blockchain network 1010 in Figures 10A and 10B). The recommendation engine 1774 may query the blockchain network and retrieve metadata 1772. In some examples, metadata 1772 is stored on a storage device(s) (e.g., a server, file system, or other blockchain network) (e.g., storage device(s) 1016). The recommendation engine 1774 may query the storage device(s) and retrieve metadata 1772. In some examples, metadata 1772 is included as part of digital data (e.g., digital data 1056 in Figures 10A and 10B). In some examples, metadata 1772 is not included as part of digital data. In some examples, metadata 1772 is stored in two or more locations or systems having different communication protocols (e.g., blockchain networks, servers, file systems, and / or other blockchain networks), and the recommendation engine 1774 may retrieve parts of metadata 1772 from one location and parts of metadata 1772 from other locations.

[0189] The recommendation engine 1774 generates a recommendation 1776 based on 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 related to the recommendation 1776, or a link to web content. In some examples, the recommendation 1776 includes content identified as similar to (or topically related to) metadata 1772. In some examples, the recommendation 1776 may identify one or more tokens (e.g., NFTs) and / or NFT projects from the same creator, or / or recommend NFTs and / or NFT projects of similar size, price, etc.

[0190] In some examples, the recommendation engine 1774 includes one or more predictive models that can predict similarity between one or more tokens rendered by the browser application 1706a and web content indexed and searchable by the browser application 1706a's search engine. In some examples, the predictive models include one or more neural networks. If the similarity is above a threshold, the recommendation engine 1774 may identify the web content 1778 as recommendation 1776. In some examples, recommendation 1776 may be displayed in a browser tab of the browser application 1706a. In some examples, recommendation 1776 may be displayed in a UI module of a new tab page rendered by the browser tab (e.g., UI module 1070 in Figures 10A and 10B).

[0191] Figure 18 is a flowchart 1800 illustrating an exemplary operation of customizing a browser tab using blockchain data in one embodiment. Although flowchart 1800 is illustrated with respect to system 1000 in Figures 10A and 10B, flowchart 1800 may be applicable to any of the embodiments described herein. While flowchart 1800 in Figure 18 shows the operations in order, it should be understood that this is merely an example and may include additional or alternative operations. Furthermore, the operations in Figure 18 and related operations may be performed in a different order than illustrated, or in a parallel or overlapping manner.

[0192] Operation 1802 includes the browser application 1006a obtaining an identifier 1052 associated with a token 1054 stored in the blockchain network 1010. In some examples, the browser application 1006a obtains the identifier 1052 from a digital asset holder (e.g., digital asset holder 1102 in Figure 11, digital asset holder 1202 in Figure 12). In some examples, the browser application 1006a is configured to connect to a digital asset holder using the techniques described in Figures 1 to 9. In some examples, the browser application 1006a obtains the identifier 1052 when the browser application 1006a connects to a digital asset holder. 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 has selected from) the identifier 1052 from web content rendered by the browser application 1006a. In some examples, identifier 1052 includes a holder address 1061, a token location(s) 1063, a storage location(s) 1065, and / or a collection identifier that identifies the collection of tokens stored on the blockchain network 1010.

[0193] Operation 1804 includes the browser application 1006a retrieving the digital data 1056 of token 1054 using identifier 1052. The browser application 1006a may retrieve the digital data 1056 using holder address 1061, token location 1063, and / or storage location 1065. In some examples, the browser application 1006a may use holder address 1061 to query the blockchain network 1010 to identify whether a digital asset holder is associated with any of the tokens 1054. Holder address 1061 may be the address of a user's digital asset holder. In some examples, holder address 1061 may be the address of a digital asset holder for an entity other than a user. Holder address 1061 may point to location 1045 which stores the token 1054 of the digital asset holder. If digital data 1056 is stored in token 1054, the browser application 1006a can retrieve digital data 1056 from the blockchain network 1010. If digital data 1056 is stored in storage device(s) 1016, the browser application 1006a can retrieve storage location(s) 1065 from any token(s) 1054 associated with the digital asset holder. The browser application 1006a can use storage location(s) 1065 (e.g., URL, hash value) to retrieve digital data 1056 from storage device(s) 1016.

[0194] In some examples, a browser application 1006a can use a token location 1063 to query the blockchain network 1010 and retrieve digital data 1056. Token location 1063 may represent the address of a specific token 1054 stored in the blockchain network 1010. If the digital data 1056 is stored in token 1054, the browser application 1006a can retrieve the digital data 1056 from the blockchain network 1010. If the digital data 1056 is stored in a storage device 1016, the browser application 1006a can query the blockchain network 1010 to retrieve a storage location 1065 and use the storage location 1065 to retrieve the digital data 1056.

[0195] In some examples, a browser application 1006a can use a storage location 1065 to retrieve digital data 1056. For example, storage location 1065 may be an address or locator that points to the location of digital data 1056 on a storage device 1016, and the browser application 1006a can use storage location 1065 to retrieve digital data 1056.

[0196] Operation 1806 includes customizing the user interface 1058 of the browser application 1006a using the digital data 1056 of token 1054. In some examples, operation 1806 includes updating the browser settings 1055 of the browser application 1006a so that the display manner of the user interface 1058 of the browser application 1006a is changed. In some examples, operation 1806 includes rendering the digital data 1056 of token 1054 as a background image in the user interface 1058 of the browser application 1006a. In some examples, operation 1806 includes rendering the digital data 1056 of token 1054 as a user profile image 1066 in the user interface 1058 of the browser application 1006a. In some examples, referring to Figure 17, the operation includes retrieving metadata 1772 about the token, generating a recommendation 1776 based on the metadata 1772, and rendering information identifying the recommendation 1776 in the user interface of the browser application 1706a. In some embodiments, referring to Figures 10A and 10B, the operation includes identifying a plurality of tokens 1054 stored in the blockchain network 1010 based on an identifier 1052, and rendering a UI module 1070 in the user interface 1058 of a browser application 1006a that displays digital data 1056 associated with each of the plurality of tokens 1054 for a predetermined period of time.

[0197] In some embodiments, a method (e.g., an operation) may include one or more of the following features (or any combination thereof): Customizing the user interface of a browser application includes updating the browser settings of the browser application so that the display manner of the user interface of the browser application is changed. Customizing the user interface of a browser application includes rendering the digital data of a token as a background image in the user interface of the browser application. Customizing the user interface of a browser application includes rendering the digital data as a user profile image in the user interface of the browser application. The token is a first token, the digital data is the 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 with a background image containing 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 with a background image containing the second digital data associated with the second token. The method may include obtaining metadata about the token, generating recommendations based on the metadata, and rendering information that identifies the recommendations in the user interface of the browser application. The method may include identifying multiple tokens stored on a blockchain network based on an identifier, and rendering a user interface module in a browser application's user interface that displays digital data associated with one of the multiple tokens for a predetermined period of time. The identifier includes a shared address of a digital asset holder. The method may also include receiving an identifier from a digital asset holder that stores a private key for authenticating transactions on the blockchain network.The identifier is received through the application programming interface of the browser application. This method may include rendering a user interface object to receive the identifier.

[0198] According to one embodiment, the device includes at least one processor and a non-temporary computer-readable medium for storing executable instructions, which, when executed by the at least one processor, cause the at least one processor to connect a browser application and a digital asset holder that stores a private key for enabling transactions on the blockchain network and identifies tokens stored on the blockchain network, allowing the browser application to retrieve the digital data of the tokens and use the digital data of the tokens to customize the user interface of the browser application.

[0199] According to some embodiments, the device may include one or more features (or any combination thereof). An executable instruction, when executed by at least one processor, includes an instruction that causes at least one processor to update the browser settings of a browser application so that the display manner of the user interface of the browser application is changed. An executable instruction, when executed by at least one processor, includes an instruction that causes at least one processor to render the digital data of a token as a background image in the user interface of the browser application. An executable instruction, when executed by at least one processor, includes an instruction that causes at least one processor to render the digital data as a user profile image in the user interface of the browser application. Token is the first token, digital data is the first digital data, and is a digital asset holder that identifies the second token stored on the blockchain network, and the executable instruction includes an instruction that, when executed by at least one processor, causes at least one processor to receive a request to render the first browser tab of a browser application, render the first browser tab with a background image containing the first digital data associated with the first token, and receive a request to render the second browser tab of the browser application, render the second browser tab with a background image containing the second digital data associated with the second token. The executable instruction also includes an instruction that, when executed by at least one processor, causes at least one processor to retrieve metadata about the token, generate recommendations containing web content based on the metadata, and render information identifying the web content in the user interface of the browser application.The token is a first token, the digital asset holder identifies a second token, and the executable instruction includes an instruction that, when executed by at least one processor, causes at least one processor to render a user interface module in the user interface of a browser application that displays the digital data associated with the first token for a first predetermined period and the digital data associated with the second token for a second predetermined period. The digital asset holder is a third-party digital asset holder.

[0200] According to one embodiment, a non-temporary computer-readable medium, when executed by at least one processor, stores executable instructions causing at least one processor to perform an operation, the operation including: obtaining an identifier associated with a token stored in a blockchain network by a browser application; retrieving the digital data of the token using the identifier by the browser application; and customizing the user interface of the browser application using the digital data of the token.

[0201] In some embodiments, the operation may include one or more of the following features (or any combination thereof): The operation may include updating the browser settings of a browser application so that the display manner of the user interface of the browser application is 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 user profile image in the user interface of the browser application. The token is a first token, the digital data is a first digital data, and the operation further includes receiving a request to render a first browser tab of the browser application, rendering the first browser tab with a background image containing 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 with a background image containing the second digital data associated with the second token. The operation may include retrieving metadata about the token, generating recommendations based on the metadata, and rendering information that identifies the recommendations in the user interface of the browser application. The operation may include identifying multiple tokens stored on the blockchain network based on an identifier, and rendering a user interface module in the browser application's user interface that displays digital data associated with one of the multiple tokens for a predetermined period of time. The identifier may include the shared address of a digital asset holder. The operation may include receiving the identifier from a digital asset holder that stores a private key for authenticating transactions on the blockchain network. The digital asset holder may include an extension to a browser application, a native application, or a server application. The operation may include rendering a user interface object to receive the identifier.

[0202] Figures 19A to 19D illustrate a system 1900 for managing inter-ledger transactions involving one or more blockchain networks 1910, in one embodiment. 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 may enable inter-ledger transfers of digital assets from a user 1901 to a requesting party 1990. Inter-ledger transfers may refer to the transfer of digital assets from one type of ledger (e.g., Ethereum) to another type of ledger (e.g., Bitcoin), which may be the same blockchain network 1910 or a different blockchain network 1910. The system 1900 is executable by a computing device 1926 and includes a user agent 1980 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 either blockchain network 1910-1 or blockchain network 1910-2). System 1900 may be an example of a system described with reference to Figures 1 to 18, and may include any of the details described with reference to those figures.

[0203] Each type of digital asset may represent a different payment network, and each type of digital asset may be stored in the same blockchain network 1910 or different blockchain networks 1910. A digital asset may include fungible tokens (e.g., cryptocurrency) stored in 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. As shown in Figure 19A, digital asset A may be stored in blockchain network 1910-1, and digital asset B may be stored in blockchain network 1910-2. In some examples, as shown in Figure 19B, both digital asset A and digital asset B may be stored in different ledgers of blockchain network 1910-1, or digital asset A and digital asset B may be stored in different ledgers of blockchain network 1910-2. In some examples, digital asset A may represent one type of fungible token (e.g., Ethereum), and digital asset B may represent another type of fungible token (e.g., Bitcoin). While Ethereum and Bitcoin are used as examples of different types of digital assets for ease of explanation, a digital asset may represent any type of digital asset that can be stored on the blockchain network as a fungible token.

[0204] The computing device 1926 may be any type of computing device comprising one or more processors (e.g., processors 228 in Figures 2A to 2D), one or more memory devices (e.g., memory devices 230 in Figures 2A to 2D), a display 1934, and an operating system (e.g., operating system 232 in Figures 2A to 2D) configured to run (or assist in running) one or more applications. In some examples, the computing device 1926 is a laptop computer. In some examples, the computing device 1926 is a desktop computer. In some examples, the computing device 1926 is a tablet computer. In some examples, the computing device 1926 is a smartphone. In some examples, the computing device 1926 is a wearable device.

[0205] User agent 1980 may be stored (and executed) on computing device 1926 associated with user 1901. In some examples, user agent 1980 is part of (or integrated into) a browser application. In some examples, a browser application may be configured to perform one or more of the actions described with reference to User Agent 1980. A browser application may be a web browser configured to access information on the Internet. In some examples, a browser application is a separate application from the operating system of computing device 1926, and the browser application is installable on (and runnable by) the operating system. In some examples, a browser application is the operating system of the device (or is included as part of the operating system of the device). A browser application may launch one or more browser tabs in the context of one or more browser windows on the display of computing device 1926. In some examples, a browser application may launch one or more browser tabs without referencing a browser window. In some examples, User Agent 1980 is an extension to a web application or browser application. In some examples, User Agent 1980 is part of (or integrated into) a non-browser application, such as a native application installed on the device's operating system. In some examples, User Agent 1980 is part of (or integrated into) the operating system of computing device 1926.

[0206] User agent 1980 may enable inter-ledger transactions for transferring digital assets from user 1901 to request party 1990 in a manner that reduces the amount of computer complexity (and thereby reduces the amount of computing resources) and enables inter-ledger transactions with different ledgers on one or more blockchain networks 1910. For example, to enable inter-ledger transactions, user agent 1980 may define one or more operations and / or protocols for communicating with request party 1990, digital asset holders 1902a associated with user 1901, one or more digital asset exchanges 1982, and one or more blockchain networks 1910. Furthermore, some (or all) of the operations of user agent 1980 may operate in one or more background operations with minimal input from user 1901 and without interrupting the transaction flow of user 1901 senders (and thus without requiring the installation of one or more additional applications).

[0207] User agent 1980 may receive transaction information 1975 to complete a blockchain transaction with request party 1990. Request party 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.

[0208] 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, including website 1992. In some examples, website 1992 may include elements that the user can select to obtain items. In some examples, user agent 1980 is configured to receive transaction information 1975 in response to receiving a selection of an element that the user can select. In some examples, user agent 1980 receives transaction information 1975 via an application programming interface (API) that allows user agent 1980 and website 1992 to communicate with each other. If user agent 1980 is embedded in a browser application, the browser application and website 1992 may communicate with each other via one or more APIs defined in the browser application and / or website 1992. If user agent 1980 is incorporated into the operating system of computing device 1926, the operating system and website 1992 may communicate with each other via one of the APIs defined in the operating system and / or website 1992.

[0209] In some examples, user agent 1980 may receive transaction information 1975 from application 1994. In some examples, application 1994 is an application running on computing device 1926. Application 1994 may display content containing items that the user can select to obtain, and in response to receiving the user's selection of selectable items, user agent 1980 is configured to receive transaction information 1975. In some examples, user agent 1980 receives transaction information 1975 from application 1994 via one or more APIs defined in user agent 1980 and / or application 1994, enabling user agent 1980 and application 1994 to communicate with each other. In some examples, user agent 1980 receives transaction information 1975 from application 1994 via an inter-process communication (IPC) protocol that enables user agent 1980 and application 1994 to communicate with each other using the operating system.

[0210] User agent 1980 may receive transaction information 1975 via a uniform protocol that reduces the complexity of facilitating inter-ledger transactions involving one or more blockchain networks 1910. In some examples, the uniform protocol is platform-specific. For example, with respect to a mobile platform, user agent 1980 may receive transaction information 1975 via one or more APIs defined in the mobile device operating system (e.g., Android / iOS API). In some examples, with respect to a web platform, user agent 1980 may receive transaction information 1975 via one or more JavaScript APIs. In some examples, the uniform protocol is platform-independent, and the same protocol is common to both web and mobile platforms.

[0211] Transaction information 1975 may include the digital asset type 1909a, the transaction amount 1977, and / or the shared address 1905b of the digital asset holder 1902b associated with the requesting party 1990. In some examples, the shared address 1905b is the identifier (e.g., public identifier) ​​of the requesting party 1990's digital asset holder 1902b. The digital asset type 1909a includes information indicating the type of digital asset requested by the requesting party 1990. In the example in Figure 19A, the digital asset type 1909a is digital asset B (e.g., Ethereum). In this example, for an item selected by user 1901, the requesting party 1990 is requesting to receive digital asset B at the shared address 1905b for a transaction amount of 1977.

[0212] Referring to Figure 19C, in response to receiving transaction information 1975, the user agent 1980 may cause the display 1934 of the computing device 1926 to provide an interface 1936 (e.g., rendering). The interface 1936 may display an asset list 1944 that identifies the digital assets (and types of digital assets) associated with the user 1901's digital asset holder 1902a.

[0213] The digital asset holder 1902a may be any example of the digital asset holders described with reference to Figures 1 to 18. In some examples, the digital asset holder 1902a is a native (or embedded) asset holder that is part of a browser application that also stores the user agent 1980. In some examples, the digital asset holder 1902a is a third-party digital asset holder, and the user agent 1980 can communicate with the third-party digital asset holder using any of the techniques described with reference to Figures 1 to 9. The digital asset holder 1902a may be an application or program that stores a private key 1904 for validating transactions on the blockchain network 1910. The digital asset holder 1902a also includes a shared address 1905a that can identify the location of the account on the blockchain network 1910. In some examples, the digital asset holder 1902a may have access to, or include, asset information 1907 about the user's digital assets stored on the blockchain network 1910. For example, a digital asset holder 1902a may identify one or more types of digital assets owned by user 1901 and stored in blockchain network 1910. In the example in Figure 19A, digital asset holder 1902a is associated with digital asset A (e.g., Bitcoin) stored in blockchain network 1910-1 or blockchain network 1910-2.

[0214] User agent 1980 may communicate with digital asset holder 1902a to obtain information related to digital assets owned by user 1901. In some examples, for digital asset holder 1902a implemented as a native (or embedded) digital asset holder, user agent 1980 may obtain asset list 1944 from asset information 1907 of digital asset holder 1902a and then render asset list 1944 on interface 1936. In some examples, for digital asset holder 1902a implemented as a third-party digital asset holder, user agent 1980 may communicate with digital asset holder 1902a via one or more APIs (e.g., API(s) 238) to obtain asset list 1944 and then render asset list 1944 on interface 1936.

[0215] Referring to Figure 19C, interface 1936 may also display exchange rate information 1979 regarding the exchange rate for converting one or more of the digital assets owned by user 1901 into a digital asset type 1909a requested by request party 1990. For example, user 1901 owns digital asset A stored on blockchain network 1910-1 (or blockchain network 1910-2), while request party 1990 requests to receive digital asset B. Exchange rate information 1979 may show the exchange rate for converting digital asset A to digital asset B using a specific digital asset exchange 1982. In some examples, exchange rate information 1979 may show the exchange rates of multiple digital asset exchanges 1982 for converting digital asset A to digital asset B. In some examples, exchange rate information 1979 may include a transaction fee for converting digital asset A to digital asset B. In some examples, the exchange rate information 1979 may identify a specific digital asset exchange 1982, and in some examples, it may identify information about a specific digital asset exchange 1982 (including selectable web links). Note that user 1901 may also own other digital assets, and the exchange rate information 1979 may provide the exchange rate(s) for converting other digital assets into the requested digital assets.

[0216] To obtain exchange rate information 1979, the user agent 1980 may communicate with one or more digital asset exchanges 1982. A digital asset exchange 1982 may be an application capable of performing one or more ledger-to-ledger conversion operations 1984 that convert one type of digital asset (e.g., Ethereum) to another type of digital asset (e.g., Bitcoin). In some examples, the digital asset exchange 1982 runs on a blockchain network 1910. In some examples, the digital asset exchange 1982 does not run on a blockchain network 1910 (e.g., a server computer that does not use blockchain technology).

[0217] In some examples, a digital asset exchange 1982 is an application that runs on one or more blockchain networks 1910, which may include blockchain network 1910-1, blockchain network 1910-2, or different blockchain networks 1910. In some examples, if digital assets A and B are stored on blockchain network 1910-1, the digital asset exchange 1982 can run as a smart contract on blockchain network 1910-1 to convert digital asset A to digital asset B (and vice versa). In some examples, a digital asset exchange 1982 includes a decentralized exchange (DEX). A DEX is an application that runs on one or more blockchain networks 1910, and its code is embodied as a smart contract on blockchain network 1910. In some examples, a DEX uses smart contracts on blockchain network 1910 to enable peer-to-peer transactions to be conducted online securely without the need for an intermediary (e.g., a central authority). As part of a smart contract (or multiple smart contracts), the DEX calculates an exchange rate based on the size of its liquidity pool and converts the provided cryptocurrency into the requested cryptocurrency. For example, to convert 100 Bitcoin to Ethereum, the DEX would receive 100 Bitcoin from user digital asset holder 1902a on the Bitcoin ledger and place the corresponding Ethereum into user digital asset holder 1902a on the Ethereum ledger.

[0218] In some examples, a 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, and the centralized exchange can communicate with blockchain networks 1910-1 and 1910-2 to convert a user's digital assets across different blockchain networks 1910.

[0219] User agent 1980 may obtain asset information 1907 (e.g., type / amount of each digital asset), digital asset type 1909a identified in transaction information 1975, and, in some examples, transaction amount 1977 from digital asset holder 1902a, and may query one or more digital asset exchanges 1982 to obtain exchange rate information 1979. In some examples, user agent 1980 may communicate with digital asset exchange(s) 1982 using one or more APIs defined in user agent 1980. In some examples, user agent 1980 may communicate with blockchain network(s) 1910 running digital asset exchange(s) 1982 by sending and receiving JSON messages to receive exchange rate information 1979.

[0220] In some examples, user agent 1980 includes an exchange selector 1986. The exchange selector 1986 may select a digital asset exchange 1982 from among multiple digital asset exchanges 1982 based on exchange rate information 1979 associated with each digital asset exchange 1982. For example, the exchange rate information 1979 may show the exchange rate for converting digital asset A to digital asset B. In some examples, the exchange selector 1986 may select a specific digital asset exchange 1982 to convert one type of digital asset to another type of digital asset based on selection criteria. The selection criteria may include selecting a digital asset exchange 1982 that has the best conversion rate, the lowest transaction fee, and / or a combination of both. In some examples, the conversion rates of the selected digital asset exchange 1982 may be provided for each digital asset type in the asset list 1944.

[0221] After the user reviews the asset list 1944 and exchange rate information 1979, the user agent 1980 may receive a selection of digital asset type 1909b via interface 1936. In the examples in Figures 19A to 19D, the user selects digital asset A, which is stored in the blockchain network 1910-1.

[0222] In some examples, instead of providing an interface 1936 that allows user 1901 to select a specific digital asset and convert it to the requested digital asset, user agent 1980 may automatically select a particular type of digital asset based on stored user preferences. For example, user agent 1980 may store one or more user preferences, such as preferred digital asset types to use when transaction information 1975 indicates a particular digital asset type.

[0223] In response to obtaining digital asset type 1909b, the user agent 1980 may communicate with the digital asset exchange 1982 so that the digital asset exchange 1982 can perform a ledger-to-ledger conversion operation 1984 to convert the user's digital asset from digital asset type 1909b (e.g., digital asset A) to digital asset type 1909a (e.g., digital asset B).

[0224] The user agent 1980 may send a conversion request 1971 to the digital asset exchange 1982, which is configured to cause the digital asset exchange 1982 to convert the transaction amount 1977 of the user's digital asset 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). The conversion request 1971 may identify the shared address 1905a of digital asset holder 1902a, the transaction amount 1977, digital asset type 1909a, and digital asset type 1909b.

[0225] If digital assets A and B are stored in different ledgers on the same blockchain network 1910-1 (as shown in Figure 19B), the digital asset exchange 1982 may communicate with blockchain network 1910-1 (or blockchain network 1910-2) to record a transaction to deduct transaction amount 1977 from a user's digital asset (for example, associated with digital asset holder 1902a) and a transaction to add transaction amount 1977 associated with digital asset holder 1902b. In some examples, if digital assets A and B are stored in different blockchain networks (as shown in Figure 19A), the digital asset exchange 1982 may communicate with blockchain network 1910-1 to record a transaction to deduct transaction amount 1977 from a user's digital asset stored on blockchain network 1910-1, and communicate with blockchain network 1910-2 to record a transaction to add transaction amount 1977 to blockchain network 1910-2. In response to the digital asset exchange 1982 performing a ledger-to-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.

[0226] In some examples, before the conversion request 1971 is sent 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 sends the conversion request 1971 and receives the authenticated conversion request 1971 via one or more APIs (e.g., API(s) 238 in Figures 2A-2D). 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 conversion response 1973 are communicated between the user agent 1980 and the digital asset exchange 1982 using JavaScript object notation (JSON) messages 1988.

[0227] In some examples, in response to the conversion response 1973, the digital asset holder 1902a may update the asset information 1907 to indicate that user 1901 has digital asset B (having at least a transaction amount 1977) converted from digital asset A. In response to the conversion response 1973, the user agent 1980 may communicate with blockchain network 1910 (for example, the blockchain of either blockchain network 1910-1 or blockchain network 1910-2 that stores digital asset B) to transfer the transaction amount 1977 of digital asset B from digital asset holder 1902a (associated with user 1901) to digital asset holder 1902b (associated with request party 1990). In some examples, the user agent 1980 may communicate with blockchain network 1910 by sending and receiving a message 1921. In some examples, message 1921 contains a JSON message. In some examples, user agent 1980 may communicate with blockchain network 1910 via one or more APIs (e.g., API(s) 240 shown in Figures 2A to 2D).

[0228] User agent 1980 can send transaction request 1946 to blockchain network 1910-2. Figure 19A shows that user agent 1980 sends transaction request 1946 to blockchain network 1910-2, but note that user agent 1980 can also send transaction request 1946 to blockchain network 1910-1 (therefore, in some examples, blockchain network 1910-1 and blockchain network 1910-2 can be used interchangeably). If digital assets A and B are stored in blockchain network 1910-1, user agent 1980 sends transaction request 1946 to blockchain network 1910-1. If digital asset A is stored in blockchain network 1910-1 and digital asset B is stored in blockchain network 1910-2, user agent 1980 sends transaction request 1946 to blockchain network 1910-2.

[0229] User agent 1980 may send transaction request 1946 to a node gateway of blockchain network 1910-2 (for example, node gateway 214 in Figures 2A-2D). 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 request party 1990. In some examples, blockchain network 1910-2 adds a transaction to blockchain network 1910-2 associated with digital asset holder 1902a and deducts transaction amount 1977 from the user's digital asset B. In some examples, blockchain network 1910-2 adds a transaction to blockchain network 1910-2 associated with digital asset holder 1902b, adding a transaction amount of 1977 to the requesting party's digital asset B.

[0230] Transaction request 1946 may contain details about the transaction(s) to be created on the blockchain network 1910-2. Transaction request 1946 may include a shared address 1905a (e.g., sender), a shared address 1905b (e.g., recipient), and a transaction amount 1977. In some examples, transaction request 1946 may include information identifying the type of digital asset (e.g., digital asset B).

[0231] In some examples, transaction request 1946 may include authentication information indicating that the transaction is authenticated (e.g., signed). For example, before transaction request 1946 is sent to the blockchain network 1910-2, user agent 1980 may communicate with digital asset holder 1902a to have digital asset holder 1902a 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., API(s) 238 in Figures 2A-2D). For example, digital asset holder 1902a may use private key 1904 to perform a smart contract or cryptographic operation to authenticate (or sign) transaction request 1946. Digital asset holder 1902a may return the authenticated transaction request 1946, and user agent 1980 may send the authenticated transaction request 1946 to the blockchain network 1910-2.

[0232] After a transaction(s) is committed to the blockchain network 1910-2, the user agent 1980 may receive a transaction response 1922 from the blockchain network 1910-2. The transaction response 1922 may contain the transaction identifier of the transaction added to the blockchain network 1910-2 associated with the digital asset holder 1902a. In some examples, the transaction request 1946 and transaction response 1922 are communicated between the user agent 1980 and the blockchain network 1910-2 using a message 1921 (e.g., a JSON message). In some examples, the transaction request 1946 and transaction response 1922 are examples of authenticated transaction request 246 and transaction response 222 in Figures 2A-2D, respectively. In some examples, in response to the transaction response 1922, the user agent 1980 may send a notification (e.g., notification 252 in Figures 2A-2D) to the digital asset holder 1902a. In some examples, user agent 1980 may send a notification to website 1992 or application 1994 associated with request party 1990.

[0233] In some examples, user agent 1980 may decide to use multiple digital asset exchanges 1982 to enable conversion from one type of digital asset to another. For example, if digital assets A and B are not major (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, as shown in Figure 19D, user agent 1980 may use two or more digital asset exchanges 1982 to perform the conversion of transaction amount 1977 from digital asset A to digital asset B.

[0234] User agent 1980 may determine that a single digital asset exchange 1982 cannot convert from digital asset A to digital asset B. In some examples, user agent 1980 may store information about digital asset exchanges 1982, such as a list of digital asset exchanges 1982, and information about their capabilities to convert one type of digital asset to another. In some examples, user agent 1980 may communicate with digital asset exchanges 1982 to obtain information about their capabilities to convert one type of digital asset to another.

[0235] User agent 1980 may select two or more digital asset exchanges 1982 that perform a conversion from digital asset A to digital asset B using one or more intermediate digital currencies (e.g., digital asset C). In some examples, user agent 1980 may identify a swap sequence (e.g., a ledger operation sequence) that identifies the execution order of two or more ledger-to-ledger conversion operations 1984 involving one or more intermediate digital assets (e.g., digital asset C).

[0236] As shown in Figure 19D, user agent 1980 may select digital asset exchange 1982-1 and perform ledger-to-ledger conversion operation 1984-1 to convert transaction amount 1977 from digital asset A to digital asset C. Alternatively, user agent 1980 may select digital asset exchange 1982-2 and perform ledger-to-ledger conversion operation 1984-2 to convert transaction amount 1977 from digital asset C to digital asset B. Digital asset exchanges 1982-1 and 1982-2 may be separate applications (e.g., decentralized or centralized applications). In some examples, digital asset exchanges 1982-1 and 1982-2 may be separate decentralized exchanges (e.g., DEXs). 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), and vice versa. In some examples, digital asset exchanges 1982-1 and 1982-2 are separate centralized exchanges. As shown in Figure 19D, 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 assets A, B, and C may be stored on one or more blockchain networks 1910. In some examples, digital assets A, B, and C may be stored on blockchain network 1910-1. In some examples, digital assets A and B may be stored in blockchain network 1910-1, and digital asset C may be stored in blockchain network 1910-2 or blockchain network 1910-3.

[0237] User agent 1980 may send a conversion request 1971 (e.g., a first conversion request) to digital asset exchange 1982-1. The conversion request 1971 is configured to cause digital asset exchange 1982-1 to convert the transaction amount 1977 of the user's digital assets from digital asset A to digital asset C. User agent 1980 may send a conversion request 1971 (e.g., a second conversion request) to digital asset exchange 1982-2. The conversion request 1971 is configured to cause digital asset exchange 1982-2 to convert the transaction amount 1977 of the user's digital assets from digital asset C to digital asset B. User agent 1980 may communicate with digital asset holder 1902a to update asset information 1907 (e.g., from digital asset A to digital asset C to digital asset B) and obtain any necessary authentication using the user's private key 1904.

[0238] Figure 20 shows a system 2000 representing a browser application 2006a having a user agent 2080 in one embodiment. For example, computing device 2026 may run browser application 2006a, and user agent 2080 is included within browser application 2006a. System 2000 may be an example of system 1900 and may include any of the details described with reference to Figures 19A to 19D. In some examples, system 2000 may be one or more examples of the systems described with reference to Figures 1 to 18 and may include any of the details described with reference to those figures. In some examples, browser application 2006a is browser application 206a in Figures 2A to 2D and may include any of the details described in those figures. Browser application 2006a may perform any of the functions described with reference to user agent 1980 in Figures 19A to 19D. In some examples, digital asset holder 2002a is a third-party digital asset holder.

[0239] Browser application 2006a may receive transaction information (e.g., transaction information 1975 in Figures 19A-19D) to complete a blockchain transaction with a requesting party (e.g., requesting party 1990 in Figures 19A-19D). In some examples, browser application 2006a may receive transaction information from web content (e.g., web pages) hosted on a web server. Browser application 2006a may receive transaction information via a uniform protocol that reduces the complexity of facilitating inter-ledger transactions involving one or more blockchain networks. In some examples, browser application 2006a may receive transaction information via one or more JavaScript APIs.

[0240] In response to receiving transaction information, the browser application 2006a may cause the display 2034 of the computing device 2026 to provide (e.g., render) an interface 2036. In some examples, the interface 2036 contains UI prompts rendered by the browser application 2006a in a browser tab. The interface 2036 may display an asset list that identifies the digital assets (and types of digital assets) associated with the user's digital asset holder 2002a.

[0241] Digital asset holder 2002a may be any example of the digital asset holders described with reference to Figures 1 to 18. In some examples, digital asset holder 2002a is a third-party digital asset holder, and browser application 2006a may communicate with the third-party digital asset holder using any of the techniques described with reference to Figures 1 to 9. Digital asset holder 2002a may be an application or program that stores private keys 2004 for validating transactions on the blockchain network. Digital asset holder 2002a also includes a shared address 2005a that can identify the location of the account on the blockchain network. Browser application 2006a may communicate with digital asset holder 2002a via one or more APIs (e.g., API(s) 238) to retrieve an asset list and then render the asset list in interface 2036. Interface 2036 may also display exchange rate information regarding the exchange rate for converting one or more of the digital assets owned by the user to the digital asset type requested by the requesting party. To obtain exchange rate information, the browser application 2006a may communicate with one or more digital asset exchanges.

[0242] After the user has reviewed the asset list and exchange rate information, the browser application 2006a may receive a selection of digital asset types via interface 2036. In response to receiving the digital asset type via interface 2036, the browser application 2006a may communicate with the digital asset exchange(s) to enable them to perform a ledger-to-ledger conversion operation(s) to convert the user's digital assets from one digital asset type to the digital asset type requested by the requesting party. The browser application 2006a may communicate with the blockchain network(s) to initiate the transfer of the user's digital assets to the requesting party.

[0243] Figure 21 shows a system 2100 representing a browser application 2106a having a user agent 2180 and a digital asset holder 2102a in another embodiment. In some examples, the digital asset holder 2102a is a native (or embedded) program contained within (or associated with) the browser application 2106a. System 2100 may be an example of system 1900 and may include any of the details described with reference to Figures 19A to 19D. In some examples, system 2100 may be one or more examples of the systems described with reference to Figures 1 to 18 and may include any of the details described with reference to those figures. In some examples, the browser application 2106a is the browser application 206a in Figures 2A to 2D and may include any of the details described in those figures. The browser application 2106a may perform any of the functions described with reference to the user agent 1980 in Figures 19A to 19D.

[0244] The browser application 2106a may receive transaction information (e.g., transaction information 1975 in Figures 19A-19D) to complete a blockchain transaction with a requesting party (e.g., requesting party 1990 in Figures 19A-19D). In some examples, the browser application 2106a receives transaction information from web content (e.g., web pages) hosted on a web server. The browser application 2106a may receive transaction information via a uniform protocol that reduces the complexity of facilitating inter-ledger transactions involving one or more blockchain networks. In some examples, the browser application 2106a may receive transaction information via one or more JavaScript APIs.

[0245] In response to receiving transaction information, the browser application 2106a may cause the display 2134 of the computing device 2126 to provide (e.g., render) an interface 2136. In some examples, the interface 2136 includes UI prompts rendered by the browser application 2106a. In some examples, the interface 2136 is rendered by a browser tab. The interface 2136 may display an asset list identifying 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. The interface 2136 may also display exchange rate information regarding the exchange rate for converting one or more of the user's digital assets to the digital asset type requested by the requesting party. To obtain exchange rate information, the browser application 2106a may communicate with one or more digital asset exchanges.

[0246] After the user has reviewed the asset list and exchange rate information, the browser application 2106a may receive a selection of digital asset types via interface 2136. In response to receiving the digital asset type via interface 2136, the browser application 2106a may communicate with the digital asset exchange(s) to enable them to perform a ledger-to-ledger conversion operation(s) to convert the user's digital assets from one digital asset type to the digital asset type requested by the requesting party. The browser application 2106a may communicate with the blockchain network(s) to initiate the transfer of the user's digital assets to the requesting party.

[0247] Figure 22 shows a system 2200 representing an operating system 2232 having a user agent 2280 in one embodiment. For example, computing device 2226 includes the operating system 2232, and user agent 2280 is included within (or as part of) the operating system 2232. System 2200 may be an example of system 1900 and may include any of the details described with reference to Figures 19A to 19D. In some examples, system 2200 may be one or more examples of systems described with reference to Figures 1 to 18 and may include any of the details described with reference to those figures. The operating system 2232 may perform any of the functions described with reference to user agent 1980 in Figures 19A to 19D. In some examples, the digital asset holder 2202a is a third-party digital asset holder or a native (embedded) digital asset holder.

[0248] An operating system (2232) is system software that manages computer hardware and software resources and provides common services to computing programs. In some examples, an operating system (2232) is an operating system designed for larger displays (234), such as laptops or desktops (for example, sometimes called a desktop operating system). In some examples, an operating system (2232) is an operating system designed for smaller displays (234), such as tablets or smartphones (for example, sometimes called a mobile operating system).

[0249] The operating system 2232 may receive transaction information (e.g., transaction information 1975 in Figures 19A-19D) to complete a blockchain transaction with a requesting party (e.g., requesting party 1990 in Figures 19A-19D). In some examples, the operating system 2232 may receive transaction information from one or more APIs defined in the operating system 2232. The operating system 2232 may receive transaction information from web content hosted on a web server (e.g., web pages) or from applications running on the operating system 2232.

[0250] In response to receiving transaction information, the operating system 2232 may cause the display 2234 of the computing device 2226 to provide (e.g., render) an interface 2236. In some examples, the interface 2236 includes UI prompts that are rendered by the operating system components. 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 2202a.

[0251] The digital asset holder 2202a may be any example of the digital asset holders described with reference to 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 communicate with the third-party digital asset holder using any of the techniques described with reference to Figures 1 to 9. In some examples, the digital asset holder 2202a is a native (embedded) digital asset holder associated with the operating system 2232. In some examples, the digital asset holder 2202a is associated with or executed by a browser application. The digital asset holder 2202a may be an application or program that stores a private key 2204 for validating transactions on the blockchain network. The digital asset holder 2202a also includes a shared address 2205a that can identify the location of the account on the blockchain network. The operating system 2232 may communicate with the digital asset holder 2202a to retrieve an asset list and then render the asset list on interface 2236. Interface 2236 may also display exchange rate information regarding the exchange rate for converting one or more of the user's digital assets into the digital asset type requested by the requesting party. To obtain exchange rate information, browser application 2006a may communicate with one or more digital asset exchanges.

[0252] After the user has reviewed the asset list and exchange rate information, the operating system 2232 may receive a selection of digital asset types via interface 2236. In response to receiving the digital asset type via interface 2236, the operating system 2232 may communicate with the digital asset exchange(s) to enable them to perform a ledger-to-ledger conversion operation(s) to convert the user's digital assets from one digital asset type to the digital asset type requested by the requesting party. The operating system 2232 may communicate with the blockchain network to initiate the transfer of the user's digital assets to the requesting party.

[0253] Figure 23 is a flowchart 2300 representing an exemplary operation for managing inter-ledger transactions involving one or more blockchain networks, in one embodiment. For example, flowchart 2300 may enable inter-ledger transfer of digital assets from a user to a requesting party. In some examples, the flowchart is executable by a user agent (e.g., user agent 1980 in Figures 19A–19D). The user agent may be embedded in a browser application. In some examples, the user agent may be embedded in a non-browser application. In some examples, the user agent may be embedded in the operating system of a computing device, and the operating system may be a mobile platform or a desktop platform. The user agent may function as an intermediary for transactions involving one or more blockchain networks.

[0254] Flowchart 2300 illustrates the system 1900 shown in Figures 19A to 19D, but flowchart 2300 may be applicable to any of the embodiments described herein. While flowchart 2300 in Figure 23 shows the operations in sequence, this is merely an example, and it should be understood that additional or alternative operations may be included. Furthermore, the operations and related operations in Figure 23 may be performed in a different order than those illustrated, or in a parallel or overlapping manner.

[0255] Operation 2302 includes receiving transaction information 1975 by an application executable by computing device 1926 to complete a blockchain transaction with requesting party 1990, wherein the transaction information 1975 specifies a first type of digital asset (e.g., digital asset type 1909a) and a transaction amount 1977, where the first type of digital asset (e.g., digital asset A) is stored in a first blockchain network (e.g., blockchain network 1910-1). The application includes a user agent 1980 configured to receive the 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.

[0256] Operation 2304 includes providing an interface 1936 to a computing device 1926 to receive a selection of a second type of digital asset (e.g., digital asset type 1909b) associated with a digital asset holder 1902a, the second type of digital asset (e.g., digital asset B) being stored in 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 assets A and B are stored in a single blockchain network 1910. In some examples, digital assets A and B are stored in different blockchain networks 1910. A user agent 1980 may provide the interface 1936. In some examples, the interface 1936 includes a UI prompt. In some examples, user agent 1980 may obtain an asset list 1944 associated with digital asset holder 1902a, and interface 1936 displays the asset list 1944, which 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 exchange rate information 1979 from digital asset exchange 1982, and interface 1936 displays the exchange rate information 1979. The exchange rate information 1979 includes information indicating the exchange rate used by digital asset exchange 1982 to convert the transaction amount 1977 of the user's digital asset from a second type of digital asset (e.g., digital asset A) to a first type of digital asset (e.g., digital asset B). In some examples, user agent 1980 may select a digital asset exchange 1982 from among multiple digital asset exchanges 1982 based on exchange rate information 1979 associated with each of the multiple digital asset exchanges 1982.

[0257] Operation 2306 includes the application sending a conversion request 1971 to a digital asset exchange 1982, which is configured to cause the digital asset exchange 1982 to convert the transaction amount 1977 of a user's digital asset of digital asset holder 1902a from a second type of digital asset (e.g., digital asset A) to a first type of digital asset (e.g., digital asset B). In some examples, the digital asset exchange 1982 includes a decentralized application running on 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 the application sending a transaction request 1946 to a first blockchain network (e.g., blockchain network 1910-2) or a second blockchain network (e.g., blockchain network 1910-1) to initiate the completion of a blockchain transaction.

[0258] In some examples, user agent 1980 decides to use digital asset exchanges 1982-1 and 1982-2 to convert the transaction amount 1977 of the user's digital assets from a second type of digital asset (e.g., digital asset A) to a first type of digital asset (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, which is configured to cause digital asset exchange 1982-1 to convert the transaction amount 1977 of the user's digital assets from a second type of digital asset (e.g., digital asset A) to a third type of digital asset (e.g., digital asset C). In some examples, digital assets A, B, and C are stored in the same blockchain network 1910. In some examples, digital assets A, B, and C are stored in 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), which is configured to cause digital asset exchange 1982-2 (or digital asset exchange 1982-1) to convert the transaction amount 1977 of the user's digital asset from a third type of digital asset (e.g., digital asset C) to a first type of digital asset (e.g., digital asset B).

[0259] In some embodiments, 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, the interface displaying the asset list, the asset list identifying one or more types of digital assets associated with the digital asset holder, including a second type of digital asset. The method may include receiving exchange rate information from a digital asset exchange, the interface displaying the exchange rate information, the exchange rate information including information indicating the exchange rate for using the digital asset exchange to convert the transaction amount of the user's digital asset from a second type of digital asset to a first type of digital asset. The method may include selecting a digital asset exchange from a plurality of digital asset exchanges based on the exchange rate information associated with each digital asset exchange of a plurality of digital asset exchanges. The digital asset exchange is a first digital asset exchange, and the method includes deciding to use the first digital asset exchange and the second digital asset exchange to convert the transaction amount of the user's digital asset from a second type of digital asset to a first type of digital asset. The method further includes sending a first conversion request to the first digital asset exchange, configured to convert the transaction amount of the user's digital assets from a second type of digital asset to a third type of digital asset; and sending a second conversion request to the second digital asset exchange, configured to convert the transaction amount of the user's digital assets from a third type of digital asset to a first type of digital asset. The application includes a browser application, which receives transaction information from a website. The digital asset holder is the first digital asset holder, and the transaction information includes the shared address of the second digital asset holder, which is associated with the requesting party.A transaction request is configured to associate the transaction amount of a user's digital asset with a second digital asset holder on the blockchain network.

[0260] According to one embodiment, the system includes at least one processor and a non-temporary computer-readable medium for storing executable instructions, wherein, when executed by at least one processor, the system causes at least one processor to receive transaction information for completing a blockchain transaction with a requesting party, the transaction information specifying a first type of digital asset of a first digital asset holder associated with the requesting party, the transaction amount, and a shared address; the system causes the computing device to provide an interface to receive a selection of a second type of digital asset associated with a second digital asset holder associated with a user of the computing device; the system causes the digital asset exchange to send a conversion request configured to convert the transaction amount of the user's digital asset of the second digital asset holder from a second type of digital asset to a first type of digital asset; and the system causes the digital asset exchange to send the transaction request to the blockchain network to associate the transaction amount with the first digital asset holder.

[0261] In some embodiments, the system may include one or more of the following features (or any combination thereof): An executable instruction, when executed by at least one processor, causes at least one processor to obtain an asset list associated with a second digital asset holder, the asset list identifies one or more types of digital assets associated with the second digital asset, including a second type of digital asset. The first digital asset holder is a third-party digital asset holder, and the executable instruction, when executed by at least one processor, causes at least one processor to send an authentication request to the 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. An executable instruction, when executed by at least one processor, causes at least one processor to receive exchange rate information from a digital asset exchange, the interface displaying the exchange rate information, the exchange rate information including information indicating the rate for using the digital asset exchange to convert the transaction amount of the user's digital assets from a second type of digital asset to a first type of digital asset. The executable instruction, when executed by at least one processor, includes an instruction that causes at least one processor to select a digital asset exchange from among multiple digital asset exchanges based on exchange rate information associated with each of the multiple digital asset exchanges.The digital asset exchange is a first digital asset exchange, and the executable instruction, when executed by at least one processor, includes an instruction that causes at least one processor to decide to use the first and second digital asset exchanges to convert the transaction amount of a user's digital asset from a second type of digital asset to a first type of digital asset, to send a first conversion request to the first digital asset exchange configured to convert the transaction amount of a user's digital asset from a second type of digital asset to a third type of digital asset, and to send a second conversion request to the second digital asset exchange configured to convert the transaction amount of a user's digital asset from a third type of digital asset to a first type of digital asset.

[0262] According to one embodiment, a non-temporary computer-readable medium that stores executable instructions causing at least one processor to perform an operation, wherein the operation includes receiving transaction information for completing a blockchain transaction with a requesting party by a browser application executable by a computing device, the transaction information specifying a first type of digital asset and a transaction amount; providing an interface to the computing device to receive a selection of a second type of digital asset associated with a digital asset holder by the browser application; sending a conversion request to a digital asset exchange configured to cause the digital asset exchange to convert the transaction amount of the digital asset of the digital asset holder's user from a second type of digital asset to a first type of digital asset by the browser application; and sending the transaction request to the blockchain network to initiate the completion of a blockchain transaction.

[0263] According to some aspects, the operation may include one or more of the following features (or any combination thereof). The operation may include obtaining an asset list associated with a digital asset holder, the interface displaying the asset list, and the asset list identifying one or more types of digital assets associated with the digital asset holder, including digital assets of a second type. The operation may include receiving exchange rate information from a digital asset exchange, the interface displaying the exchange rate information, and the exchange rate information including information indicating an exchange rate for converting the transaction amount of a user's digital assets from a digital asset of a second type to a digital asset of a first 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 exchange rate information associated with each digital asset exchange of the plurality of digital asset exchanges. The digital asset exchange is a first digital asset exchange, and the operation includes determining to convert the transaction amount of a user's digital assets from a digital asset of a second type to a digital asset of a first type using the first digital asset exchange and a second digital asset exchange, sending a first conversion request configured to cause the first digital asset exchange to convert the transaction amount of the user's digital assets from a digital asset of a second type to a digital asset of a third type to the first digital asset exchange, and sending a second conversion request configured to cause the second digital asset exchange to convert the transaction amount of the user's digital assets from a digital asset of a third type to a digital asset of a first type to the second digital asset exchange.

[0264] Figures 24A to 24E show a system 2400 for registering the digital asset holder 2402 as the default digital asset holder 2402-1 and / or for facilitating a transaction 2412 in the blockchain network 2410 using the default digital asset holder 2402-1. The system 2400 can be an example of any of the systems described with reference to FIGS. 1 to 23 and can include any of the details described with reference to those systems.

[0265] The system 2400 provides a technical solution that enables blockchain transactions (e.g., transaction 2412) to be initiated from an application 2406 other than the digital asset holder 2402. In some computing environments (e.g., mobile environments), blockchain transactions can only be processed using a digital asset holder, such as a native application installed on a user's device. For example, in some mobile environments, browser application extensions may be restricted or not permitted, and thus a digital asset holder implemented as an extension may not be able to process blockchain transactions. According to some conventional approaches, a user may need to launch and use a digital asset holder on the user's device to initiate a blockchain transaction. However, according to the techniques described herein, the transaction 2412 can be initiated using an application 2406 other than the digital asset holder 2402, and in some examples, the application 2406 can communicate directly with the default digital asset holder 2402-1 to authenticate the transaction 2412 and commit it to the blockchain network 2410.

[0266] System 2400 includes a computing device 2426 having an operating system 2432 configured to run an application including a digital asset holder(s) 2402 and an application 2406. The operating system 2432 is system software that manages computer hardware and software resources and provides common services to computing programs. In some examples, the operating system 2432 is an operating system for smaller displays 2434, such as a tablet or smartphone (for example, sometimes called a mobile operating system). As will be further described below, the operating system 2432 may register a specific digital asset holder 2402 as the default digital asset holder 2402-1 to allow the transfer of information (e.g., intent request 2481, intent response 2483) between the application 2406 and the default digital asset holder 2402-1 and add a transaction 2412 to the blockchain network 2410.

[0267] Identifying a specific digital asset holder 2402 as the default digital asset holder 2402-1 may be stored as a setting (e.g., operating system (OS) setting) in the configuration storage 2455 of the computing device 2426. The configuration storage 2455 may be a memory device associated with the operating system 2432. The configuration 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, tablet, etc.), and the digital asset holders 2402 are native applications (e.g., iOS applications, Android applications, Linux applications, etc.) that can be downloaded from a digital media store and installed on the operating system 2432.

[0268] According to the techniques described herein, a user may register one of the digital asset holders 2402 as the default digital asset holder 2402-1, and the operating system 2432 may enable the transfer of information (e.g., intent request 2481, intent response 2483) between the default digital asset holder 2402-1 and application 2406 (other than digital asset holder 2402), enabling transaction 2412 to be added to the blockchain network 2410. For example, using the techniques described herein, application 2406 (other than digital asset holder 2402) may access the wallet identity and create 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 application 2406, web content 2408, and / or any other application on computing device 2426. In some examples, multiple default digital asset holders 2402-1 can be selected for future transactions 2412 (for example, using one specific default digital asset holder 2402-1 for transactions 2412 originating from a first application, and another default digital asset holder 2402-1 for transactions 2412 originating from a second application, etc.).

[0269] The user may initiate transaction 2412 using application 2406, and in response that one of the digital asset holders 2402 is registered as the default digital asset holder 2402-1, application 2406 and the default digital asset holder 2402-1 may communicate with each other (e.g., directly) via intent request 2481 and / or intent response 2483.

[0270] An intent request 2481 can be a messaging object used to request an action from another application (e.g., the default digital asset holder 2402-1). In some examples, intent request 2481 may specify any activity that can be performed by the digital asset holder 2402. In some examples, intent request 2481 is a request for the asset list of digital assets associated with the default digital asset holder 2402-1 (e.g., asset list 244 in Figures 2A-2D). In intent request 2481 may indicate the activity to be performed by the default digital asset holder 2402-1, and the information required by the digital asset holder 2402-1 to perform the activity. In some examples, intent request 2481 is a transaction creation request to create a transaction 2412 to be committed to the blockchain network 2410. In some examples, intent request 2481 may include transaction details such as the type of digital asset, amount, sender, recipient, 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 application 2406, which contains the results of the activity performed by the default digital asset holder 2402-1.

[0271] Intention request 2481 may be a request to retrieve an asset list. In response to receiving intent request 2481, the default digital asset holder 2402-1 may generate an asset list and send an intent response 2483 containing the asset list to application 2406. In some examples, application 2406 may display the asset list.

[0272] Intent request 2481 may be a request to create transaction 2412. In response to receiving intent request 2481, the default digital asset holder 2402-1 may authenticate transaction 2412 using the private key 2404. The default digital asset holder 2402-1 may also communicate with the blockchain network 2410 to add transaction 2412 to the blockchain network 2410. In some examples, the default digital asset holder 2402-1 may send an intent response 2483, which contains the result of transaction 2412 being added to the blockchain network 2410. In some examples, the default digital asset holder 2402-1 may send the authenticated transaction 2412 via intent response 2483 to application 2406, which then communicates with the blockchain network 2410 to add transaction 2412 to the blockchain network 2410.

[0273] The operating system 2432 may define a protocol that allows the transfer of intent requests 2481 and intent responses 2483 between application 2406 and default digital asset holder 2402-1. In some examples, the protocol is an inter-process communication (IPC) communication link. An IPC communication link can be a way by which processes (e.g., applications) can send messages and data to each other. An IPC communication link can be defined at the operating system level. In some examples, application 2406 and / or default digital asset holder 2402-1 may define one or more APIs that allow application 2406 and default digital asset holder 2402-1 to communicate with each other.

[0274] In some examples, application 2406 is a native application other than the digital asset holder 2402 (for example, application 2406 does not store the private key 2404 for authenticating transaction 2412 to be added to the 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 the default digital asset holder 2402-1 can communicate with each other without using a browser application as an intermediary (for example, without the involvement of any browser) to add transaction 2412 to the blockchain network 2410.

[0275] The operating system 2432 includes or defines a registration engine 2467 configured to register digital asset holder 2402 as the default digital asset holder 2402-1. The registration engine 2467 may be a component of the operating system 2432. The registration engine 2467 may be part of the operating system 2432 configured to manage the registration of digital asset holder 2402 as the default digital asset holder 2402-1, and other functions described with reference to the registration engine 2467. In some examples, the registration of digital asset holder 2402 as the default digital asset holder 2402-1 involves updating the settings of the configuration storage 2455 (e.g., OS settings) to identify a specific digital asset holder 2402 as the default digital asset holder 2402-1.

[0276] In some examples, the registration engine 2467 may detect a blockchain transaction request 2411 generated by 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.

[0277] In some examples, a blockchain transaction request 2411 is an intent request 2481 generated by an application 2406. For example, application 2406 displays application content that includes controls (e.g., UI elements, selectable items, etc.) that allow a user to initiate a transaction 2412. In response to a user selection, application 2406 may generate an intent request 2481 that can be detected by a registration engine 2467. In some examples, the registration engine 2467 may monitor an IPC communication link(s) and, if an intent request 2481 is directed to a digital asset holder 2402, may intercept the intent request 2481 to determine whether the default digital asset holder 2402-1 is identified in the configuration storage 2455. If the digital asset holder 2402 is registered as the default digital asset holder 2402, the operating system 2432 may forward the intent request 2481 to the default digital asset holder 2402-1 to perform the specified action(s).

[0278] In some examples, a blockchain transaction request 2411 is a request generated in response to an interaction with web content 2408. For example, a registration engine 2467 may detect a blockchain transaction request 2411 from web content 2408 displayed on the display 2434 of a computing device 2426. In some examples, an application 2406 displays web content 2408. Web content 2408 may be displayed via the 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, and web content 2408 may be rendered and displayed by a browser tab associated with a browser application.

[0279] The web content 2408 may contain one or more objects 2436 that can create a transaction 2412 on the blockchain network 2410. When object 2436 is invoked, the registration engine 2467 may intercept the blockchain transaction request 2411 to determine whether the default digital asset holder 2402-1 was identified in the configuration storage 2455. In some examples, object 2436 is a blockchain computer object. In some examples, object 2436 is a JavaScript public object. In some examples, object 2436 is an API public object. If the blockchain network 2410 is Ethereum, object 2436 is an Ethereum object (e.g., window.etherum) that creates a transaction on the Ethereum blockchain. In some examples, object 2436 is specific to the type of blockchain network. In some examples, web content 2408 may include a first object (e.g., object 2436) for creating a transaction on a first blockchain network and a second object (e.g., object 2436) for creating a transaction on a second blockchain network, the second blockchain network being different from the first. In some examples, the first and second objects point to different callbacks or requests related to a particular transaction 2412 when selected (e.g., called, initiated).

[0280] To determine whether a digital asset holder 2402 is registered as the default digital asset holder 2402-1, the registration engine 2467 may determine whether a particular digital asset holder 2402 is identified as the default digital asset holder 2402-1 in the configuration storage 2455. The configuration storage 2455 may store information about the digital asset holder 2402 that is registered as the default digital asset holder 2402-1 (e.g., the name of the cryptocurrency wallet, an application identifier, etc.). In some examples, the configuration storage 2455 may identify any digital asset holder 2402 installed on the operating system 2432, and the configuration storage 2455 may contain 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 configuration storage 2455 to determine whether a digital asset holder 2402 is registered as the default digital asset holder 2402-1.

[0281] Referring to Figure 24B, if digital asset holder 2402 is not registered as the default digital asset holder 2402-1, the registration engine 2467 may render interface 2451 on the display 2434 of the computing device 2426. Interface 2451 may be configured to receive a user selection of digital asset holder 2402 as the default digital asset holder 2402-1. In some examples, the registration engine 2467 may render interface 2451 when it determines that at least one digital asset holder 2402 is installed on the computing device 2426, but the default digital asset holder 2402-1 is not identified in the configuration storage 2455. In some examples, the registration engine 2467 may render interface 2451 when it determines that two or more digital asset holders 2402 are installed on the computing device 2426, but the default digital asset holder 2402-1 is not identified in the configuration storage 2455.

[0282] Interface 2451 may display information identifying one or more digital asset holders 2402 associated with (for example, installed on) the computing device 2426. As shown in Figure 24B, interface 2451 may display information identifying digital asset holders 2402a and 2402b. Digital asset holders 2402a and 2402b may be separate native applications installed on the computing device 2426. Interface 2451 may allow the user to select one of digital asset holders 2402a or 2402b as the default digital asset holder 2402-1.

[0283] In some examples, if only one digital asset holder 2402 is installed on the computing device 2426, but the default digital asset holder 2402-1 is not identified in the configuration storage 2455, the registration engine 2467 may automatically select the only digital asset holder 2402 as the default digital asset holder 2402-1, and the registration engine 2467 will not render the interface 2451. Rather, the operating system 2432 may forward the intent request 2481 to the default digital asset holder 2402-1 and initiate an action on the default digital asset holder 2402-1. The action could 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., asset list 244 in Figures 2A-2D) and returning it to the application 2406. In some examples, the action includes authenticating transaction 2412 using private key 2404 and returning the authenticated transaction 2412 to application 2406, which then communicates with blockchain network 2410 to add transaction 2412 to blockchain network 2410. In some examples, the action includes authenticating transaction 2412, communicating with blockchain network 2410 to add transaction 2412 to blockchain network 2410, and returning the result of transaction 2412 to application 2406.

[0284] In response to receiving a user selection of the default digital asset holder 2402-1 via interface 2451, the registration engine 2467 may update configuration storage 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 at interface 2451, the registration engine 2467 updates configuration storage 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 configuration storage 2455 is used for future (subsequent) transactions 2412 initiated by application 2406, web content 2408, and / or any other applications 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 can be identified. For example, one default digital asset holder 2402-1 can be identified for transaction 2412 originating from application 2406, and another default digital asset holder 2402-1 can be identified for transaction 2412 originating from another application 2406. In some examples, yet another default digital asset holder 2402-1 can be identified for transactions originating from web content 2408.

[0285] In some examples, the selected default digital asset holder 2402-1 is used for the current transaction 2412, and interface 2451 is rendered again when the 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, and interface 2451 is not rendered again when the subsequent transaction 2412 is initiated (e.g., from application 2406, web content 2408, and / or any other application on computing device 2426). In some examples, interface 2451 includes a selectable control 2499 that allows the user to choose whether the default digital asset holder 2402-1 is used for the current transaction 2412 (e.g., "time") or for the current transaction and future transactions (e.g., "always"). In other words, the selectable control 2499 may allow 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., temporary) or for all transactions (e.g., permanent). In some examples, if the temporary option is selected, the configuration storage 2455 is not updated to identify the default digital asset holder 2402-1. In some examples, if the temporary option is selected, the configuration storage 2455 is updated to identify the default digital asset holder 2402-1, and the settings in the configuration storage 2455 are reset to a state that does not indicate the default digital asset holder 2402-1 after transaction 2412 is completed. If the permanent option is selected, the settings in the configuration storage 2455 are updated to identify the selected digital asset holder 2402.

[0286] Referring 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, the registration engine 2467 renders the interface 2431 when the digital asset holder 2402 is not registered as the default digital asset holder 2402-1 and the digital asset holder 2402 is not installed in the operating system 2432. The interface 2431 may include information prompting the user to install a particular digital asset holder 2402. The interface 2431 may identify one or more digital asset holders 2402 for possible installation. The interface 2431 may identify digital asset holders 2402c and 2402d. Digital asset holders 2402c and 2402d are native applications not installed on the computing device 2426.

[0287] In some examples, interface 2431 may include an installation link 2449, which, when selected, initiates the installation of a specific 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, displaying an installation page corresponding to digital asset holder 2402, from which the user can download and install digital asset holder 2402. As shown in Figure 24C, 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 also include an installation link 2449 associated with digital asset holder 2402d, which, when selected, facilitates the installation of digital asset holder 2402d.

[0288] As described above, the registration engine 2467 may detect a blockchain transaction request 2411 generated by 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 render an interface (e.g., interface 2451, interface 2431) that allows the user to register the digital asset holder 2402 as the default digital asset holder 2402-1.

[0289] In some examples, referring to Figures 24–24E, a user may use computing device 2426 to render an OS configuration interface 2457 on the display 2434 of computing device 2426 (as shown in Figures 24D and 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) and use it as the default digital asset holder 2402-1. The list may include any digital asset holders 2402 installed in the operating system 2432 of computing device 2426. As shown in Figure 24D, the user has selected digital asset holder 2402a as the default digital asset holder 2402-1, and the OS configuration interface 2457 displays an indicator 2495 that visually identifies digital asset holder 2402a as the default digital asset holder 2402-1. The indicator 2495 could be a computer icon, a symbol, and / or the appearance of certain text (such as text color, highlighting, italics, or any combination thereof). In some examples, referring to Figure 24E, the operating system 2432 (e.g., the registration engine 2467) may receive a change to the default digital asset holder 2402-1 via the OS configuration interface 2457, which would switch the default digital asset holder 2402-1 from digital asset holder 2402a to digital asset holder 2402b. The registration engine 2467 may update the settings in the configuration storage 2455 to update the indicator 2495 and visually identify digital asset holder 2402b as the default digital asset holder 2402-1.

[0290] Figure 25 shows a system 2500 for registering digital asset holder 2502 as the default digital asset holder 2502-1, and for facilitating transaction 2512 on the blockchain network 2510 using the default digital asset holder 2502-1. System 2500 may be an example of system 2400 in Figures 24A to 24E and may include any of the details described with reference to those figures. For example, system 2500 may register the default digital asset holder 2502-1 according to any of the techniques described with reference to Figures 24A to 25E. Also, system 2500 may be an example of any of the systems described with reference to Figures 1 to 23 and may include any of the details described with reference to those systems.

[0291] System 2500 includes a computing device 2526 having an operating system 2532. The operating system 2532 defines a device application programming interface (API) 2540 configured to exchange information (e.g., intent request 2581, intent response 2583) between a default digital asset holder 2502-1 and web content 2508 (and, in some examples, an application 2506). The device API 2540 may be an API defined at the operating system level of the computing device 2526. In system 2400 in Figures 24A to 24E, application 2406 generates intent request 2481 (and receives intent response 2583). In other words, application 2406 and the default digital asset holder 2402-1 communicate directly with each other. In system 2500 in Figure 25, the device API 2540 detects the generation of transaction 2512 from web content 2508 and communicates directly with the default digital asset holder 2502-1. For example, device API 2540 generates an intent request 2581 (and receives an intent response 2583), and device API 2540 notifies the website of the web content 2508 and / or application 2506 of the result via notification(s) 2597. System 2500 may have the technical advantage of facilitating a transaction 2512 from the web content 2508 on the blockchain network 2510 with minimal (or no) browser involvement. For example, (in some examples) a browser application may be used to render the web content 2508, but the browser application is not used as an intermediary for processing the transaction 2512. Rather, device API 2540 is used as an intermediary between the web content 2508 and the default digital asset holder 2502-1.

[0292] More specifically, a user may use application 2506 to render web content 2508. Application 2506 may be a native application installed on operating system 2532, and application 2506 may 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. A user may select a link to web content 2508, which will display the web content (for example, by the web view controller of application 2506, by a browser tab in a browser application, or by a custom browser tab in a browser application).

[0293] Web content 2508 may contain one or more objects 2536. In some examples, object 2536 is a blockchain computer object. In some examples, object 2536 is a JavaScript public object. In some examples, object 2536 is an API public object. If the blockchain network 2510 is Ethereum, then object 2536 is an Ethereum object (e.g., window.etherum) that creates a transaction on the Ethereum blockchain. In some examples, object 2536 is specific to the type of blockchain network. In some examples, web content 2508 may contain 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 and second objects point to different callbacks or requests related to a particular transaction 2512 when selected (e.g., called, initiated).

[0294] The user may select a specific control over the web content 2508, which invokes object 2536. When object 2536 is invoked (e.g., selected, initiated, etc.), device API 2540 detects a blockchain transaction request 2511. In some examples, when object 2536 is invoked, a method is called, and the invoked method may be considered a blockchain transaction request 2511. In response to the blockchain transaction request 2511, device API 2540 generates an intent request 2581 which is sent to the default digital asset holder 2502-1.

[0295] An intent request 2581 may be a messaging object used to request an action from another application (e.g., the default digital asset holder 2502-1). As shown above, the device API 2540 generates the intent request 2581. In some examples, the intent request 2581 may specify any activity that can be performed by the digital asset holder 2502. In some examples, the intent request 2581 is a request for the asset list of digital assets associated with the default digital asset holder 2502-1 (e.g., asset list 244 in Figures 2A-2D). The intent request 2581 may indicate the activity to be performed by the default digital asset holder 2502-1, and the 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, the intent response 2583 containing the results of the activity performed by the default digital asset holder 2502-1. Device API 2540 is configured to send a notification 2597 to a website and / or application 2506 of web content 2508, and the notification 2597 may include information from intent response 2583.

[0296] An intent request 2581 may be a request to retrieve an asset list. In response to receiving an intent request 2581, the default digital asset holder 2502-1 may generate an asset list and send an intent response 2583 containing the asset list to application 2506. In some examples, device API 2540 may send a notification 2597 of web content 2508 to website and / or application 2506, the notification 2597 containing the asset list displayed on the device's display.

[0297] Intent request 2581 may be a request to create transaction 2512. In response to receiving intent request 2581, the default digital asset holder 2502-1 may authenticate transaction 2512 using the private key 2504. The default digital asset holder 2502-1 may also communicate with the blockchain network 2510 to add transaction 2512 to the blockchain network 2510. In some examples, the default digital asset holder 2502-1 may send an intent response 2583, which contains the result of transaction 2512 being added to the blockchain network 2510. In response to intent response 2583, the device API 2540 may send a notification 2597 to the website and / or application 2506 of the web content 2508, which contains the result of transaction 2512 being added to the blockchain network 2510. In some examples, the default digital asset holder 2502-1 may send an authenticated transaction 2512 to the device API 2540 via an intent response 2583, and the device API 2540 communicates with the blockchain network 2510 to add transaction 2512 to the blockchain network 2510. The device API 2540 then may send a notification 2597 to the website and / or application 2506 of the web content 2508, the notification 2597 containing the result of transaction 2512 being added to the blockchain network 2510.

[0298] The operating system 2532 may define a protocol that allows the transfer of intent requests 2581 and intent responses 2583 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 can be a way by which processes (e.g., applications) can send messages and data to each other. An IPC communication link can be defined at the operating system level. In some examples, the default digital asset holder 2502-1 may define one or more APIs to enable the device API 2540 and the default digital asset holder 2502-1 to communicate with each other.

[0299] In some examples, application 2506 is a native application other than the digital asset holder 2502 (for example, application 2506 does not store the private key 2504 for authenticating transaction 2512 to be added to the 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 the default digital asset holder 2502-1 can communicate with each other via device API 2540 without using a browser application as an intermediary (for example, without the involvement of any browser) to add transaction 2512 to the blockchain network 2510.

[0300] Furthermore, similar to system 2400 in Figures 24A to 24E, identifying a specific digital asset holder 2502 as the default digital asset holder 2502-1 may be stored as a setting (e.g., operating system (OS) setting) in the configuration storage 2555 of the computing device 2526. The configuration storage 2555 may be a memory device associated with the operating system 2532. The configuration storage 2555 may store other OS settings. One or more digital asset holders 2502 may 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, tablet, etc.), and the digital asset holders 2502 are native applications (e.g., iOS applications, Android applications, Linux applications, etc.) that can be downloaded from a digital media store and installed on the operating system 2532.

[0301] According to the technique described herein, a user may register one of the digital asset holders 2502 as the default digital asset holder 2502-1, and the operating system 2532 may enable the transfer of information (e.g., intent request 2581, intent response 2583) between the default digital asset holder 2502-1 and the device API 2540 in order to initiate a transaction 2512 in web content 2508, so that the transaction 2512 can be added to the blockchain network 2510.

[0302] The default digital asset holder 2502-1 may be registered according to any of the techniques described in System 2400 in Figures 24A to 24E. For example, the operating system 2532 may perform any of the functions described with reference to the registration engine 2467, operating system 2432, and / or computing device 2426 in Figures 24A to 24E. For example, the operating system 2532 may be configured to register digital asset holder 2502 as the default digital asset holder 2502-1. In some examples, registering digital asset holder 2502 as the default digital asset holder 2502-1 involves updating the settings of the configuration storage 2555 (e.g., OS settings) to identify a specific digital asset holder 2502 as the default digital asset holder 2502-1. The operating system 2532 may detect a blockchain transaction request 2511 and, in response to the detection of the blockchain transaction request 2511, may query the configuration storage 2555 and render interface 2451 in Figure 24B or interface 2431 in Figure 24C. In some examples, the operating system 2532 may render the OS configuration interface 2457 in Figures 24D and 24E to select or change the default digital asset holder 2502-1.

[0303] Figure 26 shows an example of an operating system 2632 configured to transfer information (e.g., intent requests, intent responses) between processes (e.g., applications, APIs) to facilitate the process of adding transactions to a blockchain network. In some examples, operating system 2632 may be an example of operating system 2432 in Figures 24A to 24E and may include any of the details described with reference to those figures. In some examples, operating system 2632 may be an example of operating system 2532 in Figure 25 and may include any of the details described with reference to those figures. However, it should be noted that operating system 2632 may be an example of any of the systems described herein and may include any of the details described with reference to any of the figures.

[0304] The operating system 2632 includes a configuration storage 2655 and a registration engine 2667. The configuration storage 2655 may store settings associated with the default digital asset holder 2602-1. The registration engine 2667 may 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 the device API 2640.

[0305] The operating system 2632 may include a software container 2644 configured to launch and run an application that includes one or more digital asset holders 2602 and an application 2606. One of the digital asset holders 2602 is identified as the default digital asset holder 2602-1 in configuration storage 2655. The digital asset holders 2602 may be native applications installed on the operating system 2632. Application 2606 is a native application installed on the operating system 2632. Application 2606 does not store, for example, a user's private key for authenticating blockchain transactions, unlike the digital asset holders 2602. 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 the software container 2644, the operating system 2632 defines a virtual machine configured to launch and run the application. In the registration engine 2667 and in some examples, the device API 2640 is configured to communicate with applications running in their containers 2644 via inter-process communication (IPC) link 2693-1.

[0306] The software container 2644 includes container 2644a, configured to launch and run the digital asset holder 2602, and container 2644b, configured to launch and run application 2606. In some examples, the digital asset holder 2602 running in 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 containers 2644a and 2644b share the same OS kernel 2613. In some examples, the software containers 2644a, 2644b, and 2632 do not share the OS kernel 2613 with each other. The OS kernel 2613 is the primary interface between the computing device hardware and processes. The OS kernel 2613 is the initial program that is loaded into memory before the boot loader. The OS kernel 2613 may run on device firmware 2615, and device firmware 2615 runs on hardware firmware 2617. The software container 2644 (or virtual machine) may be a runtime platform that includes software dependencies required by the application that the software container 2644 (or virtual machine) starts and runs, such as a specific version of the programming language runtime and other software libraries that help run the application.

[0307] In some examples, the operating system 2632 defines an IPC link 2693-2 between container 2644a running the digital asset holder 2602 and container 2644b running the application 2606. In some examples, an intent request can be sent from container 2644b to container 2644a via IPC link 2693-2, and an intent request can be sent from container 2644a to container 2644b via 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 intent requests (and intent responses in some examples) via IPC link 2693-1. In some examples, the device API 2640 detects blockchain transaction requests from API public objects being called in web content and communicates with the digital asset holder 2602 and the application 2606 via IPC link 2693-1. In some examples, the device API 2640 generates an intent request.

[0308] Figure 27 illustrates a system 2700 for registering digital asset holder 2702 as the default digital asset holder 2702-1 and / or for completing transaction 2712 on the blockchain network 2710 using the default digital asset holder 2702-1. System 2700 may be an example of any of the systems described herein and may include any of the details described with reference to any of the figures. In some examples, instead of using a device API (as described with reference to Figure 25), a browser application 2706a is used as an intermediary between web content 2708 and the default digital asset holder 2702-1. In some examples, the default digital asset holder 2702-1 is a third-party digital asset holder not owned or managed by the browser application 2706a. In some examples, system 2700 may include any of the techniques for connecting the third-party digital asset holder to the browser application 2706a, as described with reference to Figures 1 to 9.

[0309] System 2700 includes a computing device 2726 having an operating system 2732. The operating system 2732 includes a configuration storage 2755 that stores settings (e.g., OS settings) associated with a default digital asset holder 2702-1. The operating system 2732 includes a registration engine 2767 configured to manage the registration of digital asset holder 2702 as the default digital asset holder 2702-1. The operating system 2732 may run a browser application 2706a configured to generate and render browser tabs. Digital asset holder 2702 may be a native application installed on the operating system 2732.

[0310] The web content 2708 may be displayed on the display 2734 of the computing device 2726. In some examples, the web content 2708 is rendered and displayed by a browser application 2706a. In some examples, the web content 2708 is rendered and displayed by a browser tab. In some examples, the web content 2708 is displayed by other native applications (e.g., not a digital asset holder) via a web view controller. The user may render the web content 2708 using application 2706a.

[0311] Web content 2708 may contain one or more objects 2736. In some examples, object 2736 is a blockchain computer object. In some examples, object 2736 is a JavaScript public object. In some examples, object 2736 is an API public object. If the blockchain network 2710 is Ethereum, then object 2736 is an Ethereum object (e.g., window.etherum) that creates a transaction on the Ethereum blockchain. In some examples, object 2736 is specific to the type of blockchain network. In some examples, web content 2708 may contain 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 and second objects point to different callbacks or requests related to a particular transaction 2712 when selected (e.g., called, initiated).

[0312] The user may select a specific control over the web content 2708, which invokes object 2736. When object 2736 is invoked (e.g., selected, initiated, etc.), the browser application 2706a detects a blockchain transaction request 2711. In some examples, when object 2736 is invoked, a method is called, and the invoked method may be considered a blockchain transaction request 2711. In response to the blockchain transaction request 2711, the browser application 2706a connects to the default digital asset holder 2702-1 to facilitate the addition of transaction 2712 to the blockchain network 2710 when digital asset holder 2702 is registered as the default digital asset holder 2702-1. For example, the browser application 2706a may connect to the default digital asset holder 2702-1 according to one of the techniques described in Figures 1 to 9.

[0313] Furthermore, similar to system 2400 in Figures 24A to 25E, identifying a specific digital asset holder 2702 as the default digital asset holder 2702-1 may be stored as a setting (e.g., operating system (OS) setting) in the configuration storage 2755 of the computing device 2726. The configuration storage 2755 may be a memory device associated with the operating system 2732. The configuration storage 2755 may store other OS settings. One or more digital asset holders 2702 may be downloaded and installed on the operating system 2732 of the computing device 2726. In some examples, the computing device 2726 is a mobile computing device (e.g., a smartphone, tablet, etc.), and the digital asset holders 2702 are native applications (e.g., iOS applications, Android applications, Linux applications, etc.) that can be downloaded from a digital media store and installed on the operating system 2732.

[0314] According to the techniques described herein, a user may register one of the digital asset holders 2702 as the default digital asset holder 2702-1. The default digital asset holder 2702-1 may be registered according to any of the techniques described in System 2400 in Figures 24A to 24E. For example, the registration engine 2767 is configured to register digital asset holder 2702 as the default digital asset holder 2702-1. In some examples, registering digital asset holder 2702 as the default digital asset holder 2702-1 involves updating the settings of the configuration storage 2755 (e.g., OS settings) to identify a specific digital asset holder 2702 as the default digital asset holder 2702-1. In some examples, the registration engine 2767 may detect a blockchain transaction request 2711 and, in response to the detection of the blockchain transaction request 2711, query the configuration storage 2755 and render interface 2451 in Figure 24B or interface 2431 in Figure 24C. In some examples, the registration engine 2767 may render the OS configuration interface 2457 in Figures 24D and 24E to select or change the default digital asset holder 2702-1.

[0315] In response to the invocation of object 2736, browser application 2706a may connect to the default digital asset holder 2702-1 when the default digital asset holder 2702-1 is identified in configuration storage 2755 to process transaction 2712. In some examples, browser application 2706a communicates with the default digital asset holder 2702-1 to obtain authenticated transaction 2712. For example, browser application 2706a may send a transaction request to the default digital asset holder 2702-1, and the default digital asset holder 2702-1 authenticates transaction 2712 using the private key 2704. The authenticated transaction 2712 is returned to browser application 2706a, which then communicates with the blockchain network 2710 to add transaction 2712 to the blockchain network 2710. Browser application 2706a then notifies the website and / or application of the result.

[0316] Figure 28 is a flowchart 2800 representing an exemplary operation in one embodiment of registering a digital asset holder as the default digital asset holder and / or processing transactions on a blockchain network using the default digital asset holder. The operation may be performed by the 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 run on a smaller display screen. In some examples, the digital asset holder is a native application that is installed / can be installed on the operating system. A user may use the application to perform blockchain transactions, and the application may use intents (e.g., intent requests, intent responses) to communicate with the native application (e.g., direct communication) to process blockchain transactions on the blockchain network. The operation is described with respect to system 2400 in Figures 24A to 25E, but the operation may be performed by any of the systems described herein. While flowchart 2800 in Figure 28 shows the operation in order, it will be understood that this is merely an example and may include additional or alternative operations. Furthermore, the operations and related operations shown in Figure 28 may be performed in a different order than those shown, or in a parallel or overlapping manner.

[0317] Operation 2802 involves the operating system 2432 of a mobile computing device (e.g., computing device 2426) detecting a blockchain transaction request 2411 from a native application (e.g., application 2406). In some examples, the blockchain request 2411 is an intent request 2481.

[0318] 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 a default digital asset holder 2402-1 is registered, a query may be made to configuration storage 2455 to determine whether digital asset holder 2402 is identified as default digital asset holder 2402-1 (and which digital asset holder 2402 is identified as default digital asset holder 2402-1).

[0319] Operation 2806 includes, in response to the determination that digital asset holder 2402 is registered as the default digital asset holder 2402-1, forwarding an intent request 2481 from the native application to the default digital asset holder 2402-1 for processing a blockchain transaction (e.g., transaction 2412). Operation 2808 includes forwarding an intent response 2483 from the default digital asset holder 2402-1 to the native application, 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 forwarded via an inter-process communication link defined in the mobile computing device's operating system 2432 (e.g., IPC link 2693-2 in Figure 26).

[0320] In some examples, the operation includes rendering interface 2451 on the mobile computing device's display 2434 in response to determining that digital asset holder 2402 is not registered as the default digital asset holder 2402-1, and the interface is configured to receive a user selection of digital asset holder 2402 as the default digital asset holder 2402-1. In some examples, in response to receiving a user selection of digital asset holder 2402 as the default digital asset holder 2402-1, the operation includes updating configuration storage 2455 to identify digital asset holder 2402 as the default digital asset holder 2402-1. In some examples, in response to determining that digital asset holder 2402 is not registered as the default digital asset holder 2402-1, the operation includes rendering interface 2431 on the mobile computing device's display 2434, and the interface 2431 is configured to prompt the user to install a specific digital asset holder 2402.

[0321] In some examples, the operation includes rendering an operating system configuration interface 2457 on the mobile computing device's display 2434, the operating system configuration interface 2457 identifying a first digital asset holder 2402a and a second digital asset holder 2402b, and the operating system configuration 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 operation includes receiving a change to the default digital asset holder 2402-1 via the operating system configuration interface 2457, which switches 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.

[0322] In some embodiments, the techniques described herein further include rendering on the display of a computing device an interface configured to receive a user selection of a digital asset holder as the default digital asset holder in response to the digital asset holder not being determined to be registered as the default digital asset holder.

[0323] In some embodiments, the technique described herein further includes updating configuration storage that identifies a digital asset holder as the default digital asset holder in response to receiving a user selection of the digital asset holder as the default digital asset holder. In some embodiments, the technique described herein further includes rendering on the display of a computing device an interface configured to prompt the user to install a specific digital asset holder in response to the digital asset holder not being determined to be registered as the default digital asset holder.

[0324] In some embodiments, the techniques described herein relate to a method in which an intent request is configured to cause a default digital asset holder to authenticate a blockchain transaction, communicate with the blockchain network, and add the blockchain transaction to the blockchain network. In some embodiments, the techniques described herein relate to a method in which the intent request is a first intent request, the intent response is a first intent response, and further comprises transferring a second intent request from an application to a default digital asset holder to obtain a list of assets associated with the default digital asset holder, and transferring a second intent response containing the asset list from the digital asset holder to the application. In some embodiments, the techniques described herein relate to a method in which the intent request is transferred via an inter-process communication link defined in the operating system of a computing device.

[0325] In some embodiments, the technique described herein is a method comprising rendering an operating system configuration interface on the display of a computing device, wherein the digital asset holder is a first digital asset holder, and the operating system configuration interface identifies the first digital asset holder and the second digital asset holder, and the operating system configuration interface displays an indicator that visually identifies the first digital asset holder as the default digital asset holder.

[0326] In some embodiments, the technique described herein further includes receiving a change to the default digital asset holder, switching the default digital asset holder from a first digital asset holder to a second digital asset holder via an operating system configuration interface, and updating an indicator to visually identify the second digital asset holder as the default digital asset holder. In some embodiments, the technique described herein is a method wherein the first digital asset holder is a first application installed on the operating system of a computing device, and the second digital asset holder is a second application installed on the operating system of a computing device.

[0327] In some embodiments, the techniques described herein relate to a system comprising at least one processor and a non-temporary computer-readable medium for storing executable instructions, wherein, when executed by at least one processor, the system causes at least one processor to detect blockchain transaction requests from an application or web content, to determine in response to the blockchain transaction requests whether a digital asset holder is registered as a default digital asset holder, to render an interface configured on a computing device to receive a user selection of the digital asset holder as the default digital asset holder in response to the determination that the digital asset holder is not registered as a default digital asset holder, and to update configuration storage that identifies the digital asset holder as the default digital asset holder in response to the receipt of the user selection of the digital asset holder.

[0328] In some embodiments, the techniques described herein relate to a system in which executable instructions include instructions to at least one processor, in response to the determination that a digital asset holder is registered as a default digital asset holder, to cause an application to transfer an intent request to the default digital asset holder for adding a blockchain transact...

Claims

1. A method, The application renders web content on the device, The application includes inserting a programming interface into the web content, the programming interface providing executable functions to the web content, the programming interface including callback functions to the web content, and the method further includes: In response to a user selection that triggers the executable function provided by the programming interface, the application detects a transaction request from the web content, The application stores a reference to the callback function, The aforementioned application initiates authentication of the transaction request by communicating with the digital asset application, The application sends the transaction request to the blockchain network, The application receives a transaction response from the blockchain network, which includes a transaction identifier for a transaction added to the blockchain network. In response to the receipt of the transaction response from the blockchain network, the application executes the callback function to update the web content using the information from the transaction response. The application transmits the transaction identifier to the digital asset application, Methods that include...

2. Initiating the authentication of the transaction request means Sending an authentication request to the digital asset application to authenticate the transaction data of the transaction request, The method according to claim 1, comprising receiving an authentication response from the digital asset application that authenticates the transaction data.

3. The application transmits an asset request to the digital asset application, The application receives from the digital asset application a list of assets that identify multiple digital assets available to complete the transaction request. The application displays a user interface object within the web content that lists the multiple digital assets, The method according to claim 2, further comprising the application transmitting the authentication request to the blockchain network in response to receiving a user selection of one of the plurality of digital assets.

4. The method according to claim 1, wherein the executable function is configured to cause the application associated with the device to request an action of the digital asset application, and the digital asset application stores a private key for authenticating blockchain transactions of the blockchain network.

5. The method according to claim 1, wherein executing the callback function to update the web content includes modifying the web content to display a transaction status message including the transaction identifier.

6. The method according to claim 1, further comprising sending a JavaScript® object representation message containing the transaction request to a node gateway of the blockchain network.

7. The method according to claim 1, wherein executing the callback function to update the web content using the information from the transaction response includes displaying a transaction status message including the transaction identifier.

8. The method according to claim 1, wherein the digital asset application includes a web application on the device, and the web application is executable by a browser application on the device.

9. The method according to claim 1, wherein the digital asset application includes a native application installed on the operating system of the device, and initiating authentication includes sending an intent request to the native application to authenticate the transaction request.

10. The method according to claim 9, further comprising connecting the native application to the browser application by generating an inter-process communication channel between the native application and the browser application, wherein the native application stores a private key for authenticating blockchain transactions of the blockchain network.

11. The method according to claim 1, wherein the digital asset application includes a server application that can be executed by a server computer located remotely from the device.

12. Rendering the web content on the device is: The device receives a resource locator associated with the web content from a non-browser application running on the device, The non-browser application receives developer-defined parameters related to the customization of the web interface, The method according to claim 1, comprising: initiating the display of the web interface using the developer-defined parameters, wherein the web interface includes a read-only address field having the resource locator associated with the web content, and the web interface displays the web content.

13. At least one processor, An apparatus comprising a non-temporary computer-readable medium for storing executable instructions, wherein, when the executable instructions are executed by the at least one processor, the apparatus causes the at least one processor to perform the method according to any one of claims 1 to 12.

14. A program that, when executed by at least one processor, includes executable instructions that cause the at least one processor to perform the method according to any one of claims 1 to 12.