Management of Blockchain Transactions
The browser application acts as a mediator between digital asset holders and web content to process blockchain transactions, addressing connectivity issues and facilitating inter-ledger transactions through defined APIs and digital asset exchanges, thereby enhancing transaction efficiency and user experience.
Patent Information
- Application Number
- JP2024566595
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-05-11
- Filing Date
- 2023-05-12
- Publication Date
- 2025-05-30
- Estimated Expiration
- 2043-05-12
AI Technical Summary
Existing technologies face challenges in efficiently connecting web browsers to digital asset holders for processing blockchain transactions, particularly on mobile devices where extensions are restricted, and in managing inter-ledger transactions across different blockchain networks.
A browser application operates as a mediator between a user's digital asset holder and web content capable of creating blockchain transactions, defining APIs for authentication and communication with the blockchain network, and facilitating inter-ledger transactions by converting digital assets through digital asset exchanges.
This solution enables seamless blockchain transaction processing within web browsers, reduces user interaction, and simplifies inter-ledger transactions by providing a platform-independent protocol for connecting digital asset holders and blockchain networks.
Smart Images

Figure 2025516650000001_ABST
Abstract
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] The present disclosure relates to connecting an application (e.g., a browser application) to a digital asset holder to process blockchain transactions. For example, the application may operate as a mediator between a user's digital asset holder and web content capable of creating blockchain transactions. The application is configured to communicate with the user's digital asset holder to authenticate blockchain transactions and communicate with a blockchain network to commit blockchain transactions to the blockchain network, and may define one or more application programming interfaces (APIs) for this purpose. In some examples, the present disclosure relates to customizing a browser application with blockchain data, such as customizing browser settings and / or the user interface of the browser application (e.g., setting a non-fungible token (NFT) as a profile image, setting an NFT as a background image, adjusting color schemes or display modes, via the user's NFT as a background image, or swapping within an interface object, etc.).
[0004] In some examples, the present disclosure relates to an application (e.g., a browser application) for managing inter-ledger blockchain transactions. For example, the application can function as an intermediary for transactions involving different settlement networks (e.g., for inter-ledger settlement of a blockchain network). For example, a purchaser entity may have a first type of digital asset with a digital asset holder, but a seller entity may need 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, communicate with the blockchain network to commit the transaction in the second type of digital asset to the blockchain network. In some examples, the present disclosure relates to registering a default digital asset holder with an application (e.g., a browser application). For example, a transaction can be initiated on web content or in an application other than the 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 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 including a transaction identifier of the transaction added to the blockchain network from the blockchain network; and sending, via the application programming interface of the application, a notification message including the transaction identifier to the digital asset holder.
[0006] According to one aspect, the apparatus includes at least one processor and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to receive, 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 a browser application; send, by the browser application, the authenticated transaction request to the blockchain network; receive, by the browser application, a transaction response including a transaction identifier of the transaction added to the blockchain network from the blockchain network; and send, via the application programming interface of the browser application, a notification message including the transaction identifier to the digital asset holder.
[0007] According to one aspect, a non-transitory computer-readable medium storing executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations, the operations including rendering web content having items selectable by a user to perform a transaction in a blockchain network; in response to receiving a selection of an item selectable by the user, receiving, by a browser application, an authenticated transaction request for adding a transaction to the blockchain network from a digital asset holder that manages a private key for accessing data of the blockchain network; sending, by the browser application, the authenticated transaction request to the blockchain network; receiving, by the browser application, a transaction response including a transaction identifier of the transaction added to the blockchain network from the blockchain network; and sending, by the browser application, a notification message including the transaction identifier to the digital asset holder.
[0008] According to one aspect, a method includes obtaining, by a browser application, an identifier associated with a token stored in a blockchain network; retrieving, by the browser application, digital data of the token using the identifier; and customizing a user interface of the browser application using the digital data of the token.
[0009] According to one aspect, the apparatus includes at least one processor and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to connect a browser application with a private key for enabling a transaction in a blockchain network and a digital asset holder for identifying a token stored in the blockchain network, and cause the browser application to retrieve digital data of the token and use the digital data of the token to customize a user interface of the browser application.
[0010] According to one aspect, a non-transitory computer-readable medium storing executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations including obtaining, by a browser application, an identifier associated with a token stored in a blockchain network, retrieving, by the browser application, digital data of the token using the identifier, and customizing, using the digital data of the token, a user interface of the browser application.
[0011] According to one aspect, the method includes receiving, by an application executable by a computing device, transaction information for completing a blockchain transaction with a requesting party, the transaction information specifying a first 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, by the application, a conversion request configured to cause a digital asset exchange to convert a transaction amount of a user's digital assets of the second digital asset holder from the second type of digital asset to the first type of digital asset to the digital asset exchange; and sending, by the application, a transaction request to a blockchain network to initiate completion of the blockchain transaction.
[0012] According to one aspect, the system includes at least one processor and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to receive transaction information for completing a blockchain transaction with a requesting party, the transaction information specifying a first type of digital asset, a transaction amount, and a shared address of a first digital asset holder associated with the requesting party; provide an interface to the computing device 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; send a conversion request configured to cause a digital asset exchange to convert a transaction amount of a user's digital assets of the second digital asset holder from the second type of digital asset to the first type of digital asset to the digital asset exchange; and send a transaction request to a blockchain network to associate the transaction amount with the first digital asset holder.
[0013] According to one aspect, a non-transitory computer-readable medium storing executable instructions for causing at least one processor to perform an operation, the operation including: receiving, by a browser application executable by a computing device, transaction information for completing a blockchain transaction with a requesting party, the transaction information specifying a first type of digital asset and a transaction amount; providing, by the browser application, an interface to the computing device to receive a selection of a second type of digital asset associated with a digital asset holder; sending, by the browser application, a conversion request configured to cause a digital asset exchange to convert a transaction amount of a user's digital assets of the digital asset holder from the second type of digital asset to the first type of digital asset to the digital asset exchange; and sending, by the browser application, a transaction request to a blockchain network to initiate completion of the blockchain transaction.
[0014] According to one aspect, a method includes: detecting, by an operating system of a computing device, a blockchain transaction request from an application; determining, in response to the blockchain transaction request, whether a digital asset holder is registered as a default digital asset holder; transferring, in response to determining that the digital asset holder is registered as the default digital asset holder, an intent request for processing the blockchain transaction from the application to the default digital asset holder; and transferring, from the default digital asset holder to the application, an intent response identifying a result of the blockchain transaction.
[0015] According to one aspect, the system includes at least one processor and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to detect a blockchain transaction request from an application or web content, determine whether a digital asset holder is registered as a default digital asset holder in response to the blockchain transaction request, and in response to determining that the digital asset holder is not registered as the default digital asset holder, render on a computing device an interface configured to receive a user selection of the digital asset holder as the default digital asset holder, and update setting storage that identifies the digital asset holder as the default digital asset holder in response to receiving the user selection of the digital asset holder.
[0016] According to one aspect, a non-transitory computer-readable medium storing executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations including detecting, by an operating system of a computing device, a blockchain transaction request from an application, determining whether a digital asset holder is registered as a default digital asset holder in response to the blockchain transaction request, rendering on a 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 determining that the digital asset holder is not registered as the default digital asset holder, and transferring, in response to determining that the digital asset holder is registered as the default digital asset holder, an intent request from the application to the default digital asset holder to add a blockchain transaction to a blockchain network.
[0017] According to one aspect, the method includes detecting a blockchain transaction request from web content by a device application programming interface, determining whether a digital asset holder is registered as a default digital asset holder in response to the blockchain transaction request, and sending an intent request for processing the blockchain transaction from the device application programming interface to the default digital asset holder in response to determining that the digital asset holder is registered as the default digital asset holder.
[0018] According to one aspect, the system includes at least one processor and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to detect a blockchain transaction request from web content by a device application programming interface, determine whether a digital asset holder is registered as a default digital asset holder in response to the blockchain transaction request, render, on a display of a computing device, an interface configured to receive a user selection of the digital asset holder as the default digital asset holder in response to determining that the digital asset holder is not registered as the default digital asset holder, and send an intent request for processing the blockchain transaction from the device application programming interface to the default digital asset holder in response to determining that the digital asset holder is registered as the default digital asset holder.
[0019] According to one aspect, a non-transitory computer-readable medium storing executable instructions for causing at least one processor to execute an operation, the operation comprising detecting a blockchain transaction request from web content by a device application programming interface, determining whether a digital asset holder is registered as a default digital asset holder in response to the blockchain transaction request, and sending an intent request for processing the blockchain transaction from the device application programming interface to the default digital asset holder in response to determining that the digital asset holder is registered as the default digital asset holder.
[0020] Details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims.
Brief Description of the Drawings
[0021]
Figure 1
Figure 2A
Figure 2B
Figure 2C
Figure 2D
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7A
Figure 7B
Figure 7C
Figure 7D
Figure 8A
Figure 8B
Figure 8C
Figure 8D
Figure 8E
Figure 8F
Figure 9
Figure 10A
Figure 10B
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
Figure 19A
Figure 19B
Figure 19C
Figure 19D
Figure 20
Figure 21
Figure 22
Figure 23
Figure 24A
Figure 24B
Figure 24C
Figure 24D
Figure 24E
Figure 25
Figure 26
Figure 27
Figure 28
Figure 29
Figure 30
Figure 31
[0022] The present disclosure relates to connecting an application to a digital asset holder. The digital asset holder stores and manages a user's private key to enable blockchain transactions processed in a blockchain network. In some examples, the application is a first application and the digital asset holder is a second application. In some examples, the application is a browser application. In some examples, the application is a browser engine. In some examples, the application is a non-browser application. In some examples, the application is an operating system. In some examples, the digital asset holder may be referred to as a cryptocurrency wallet. The digital asset holder can be an extension of any type of application that stores a user's private key to enable blockchain transactions, such as a browser application, a native application, a server application, a web application, or generally. In some examples, the digital asset holder is a third-party digital asset holder, for example, an application that is not developed or managed by the first application.
[0023] On some computing devices (e.g., laptops, desktops, etc.), executing blockchain transactions from web content is limited to available (valid) extensions. For example, conventional browser applications may be limited to a particular blockchain processing provider that offers web extensions. In other words, under conventional methods, there may be no compatibility between a user's digital asset holder and web content. However, the techniques described herein provide a technical solution where an application (e.g., a browser application) operates as a mediator between a user's digital asset holder and web content capable of creating blockchain transactions, enabling any digital asset holder (e.g., any third-party digital asset holder) to be connected to the browser application and process blockchain transactions. In some examples, the use of a browser application is cited as a first application, but embodiments may also include other types of applications such as non-browser-based applications and / or operating systems.
[0024] On some computing devices (e.g., smartphones, tablets, etc.), extensions to browser applications may be restricted or not permitted. Thus, on such devices, the user is 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 to an application (e.g., 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, and the user is not directed to other applications to process blockchain transactions, and the user remains within the application that provided the web content. This technical solution has the technical effect of reducing the number of interactions of the user with the computing device to process blockchain transactions. In some examples, the techniques described herein provide a technical solution where application developers do not need to develop code (e.g., low-level instructions) to communicate with a blockchain network to process blockchain transactions, and the browser application provides the function of communicating with the blockchain network and notifying the digital asset holder and the website of the results.
[0025] A browser application may define one or more application programming interfaces (APIs), e.g., natively or via a JavaScript® library, and by connecting the blockchain network to the user's digital asset holder, the browser application can complete at least part of the operation to process a transaction on the blockchain network. A user may use an application (e.g., a browser application capable of rendering web content or a non-browser application) to view web content and perform blockchain transactions on the blockchain network. In some examples, the web content may include one or more objects (e.g., JavaScript exposed objects (s)) 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 to obtain information from the digital asset holder and / or notify the digital asset holder of information regarding blockchain transactions (e.g., when web content calls a JavaScript exposed object). 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 obtain a list of digital assets associated with the digital asset holder for use in blockchain transactions and / or communicates with the digital asset holder to receive an authenticated transaction request from the digital asset holder. For example, the browser application may communicate with the digital asset holder via the first API(s) such that the digital asset holder can retrieve the user's private key to authenticate a blockchain transaction request. The browser application receives an authenticated transaction request from the digital asset holder via the first API(s).
[0027] The browser application may define at least one second API that enables the browser application to communicate with the blockchain network. For example, the browser application may send an authenticated transaction request to the blockchain network via the second API(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, via the second API(s), a transaction response from the blockchain network that 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), and the notification includes the transaction identifier.
[0028] The present disclosure also relates to a browser application configured to obtain an identifier associated with a token (e.g., a non-fungible token (NFT)) stored on a blockchain network, use the identifier to retrieve digital data of the token, and customize a user interface of the browser application using the digital data of the token. According to the techniques described herein, a user may customize a browser application using one or more tokens stored on the blockchain. The techniques described herein may provide a technical advantage that enables the browser application to retrieve and render digital data of a token in one or more sections of the browser application that are separate from the display of a web page.
[0029] A user can obtain a token (e.g., an NFT), for example, from an online marketplace or by minting a new NFT, and associate the NFT with a digital asset holder, such as an application (or program) that stores and manages the user's private key, to authenticate a transaction on a blockchain network or network. Digital data can be encoded (e.g., minted) on a blockchain network, thereby generating a unique token (e.g., a token) used to represent the owner of the digital asset. Some categories of NFTs include art, collectibles, the utility of games or applications, and early access for whitelists and NFT drops. The digital asset holder uses the private key to authenticate blockchain transactions involving the token (e.g., transfer, sell, purchase the token). In some examples, since the blockchain network is public, the token can be accessed using one or more identifiers, such as a token identifier (e.g., an NFT identifier) that identifies the location of a specific 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 retrieve the digital data associated with the token (e.g., image data, video data, and / or audio data) using the token identifier, and this digital data may be stored on the blockchain network (associated with the corresponding token) or on a storage device separate from the blockchain network.
[0030] The browser application can be customized based on digital data and / or information associated with the digital data. Note that displaying an NFT can refer to displaying digital data associated with a token retrieved from a blockchain network or from a separate storage device. In some examples, the NFT may be displayed as a background image of a browser tab of the browser application. In some examples, the NFT may be displayed as a profile image in the user interface of the browser application.
[0031] In some examples, the browser application is connected to (or can be connected to) a digital asset holder and displays one or more tokens associated with the digital asset holder as a background image of a 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 FIGS. 1-9. In some examples, the browser application obtains a token identifier (e.g., an NFT identifier(s), a shared (or public) address of the holder, a 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 a native or embedded digital asset holder), and the browser application can access the identifier from the browser's digital asset holder. In some examples, the browser application can render a user interface object that allows the user to input an identifier.
[0032] In some examples, a browser application may render a user interface (UI) module as part of the user interface of the browser application. The user interface module may display one or more tokens associated with an identifier. In some examples, the UI module may swap / cycle through tokens associated with an identifier (e.g., an NFT owned by the user) (e.g., display them sequentially, display them randomly). In some examples, token identifiers (including token identifiers that are a collection of NFTs) may be associated with a user's profile such that different user profiles used by the user are associated with different token identifiers of the wallet.
[0033] In some examples, a browser application obtains metadata regarding tokens (s) owned by and / or associated with an identifier by a user, generates a recommendation based on the metadata, and renders information identifying the recommendation in the user interface of the browser application. The metadata may include information related to the creator, item name, description, trait level, statistics, when and / or where the token was created, the NFT project associated with the token, etc. The browser application may include (or may interface with) a recommendation engine that can generate recommendations. In some examples, the 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, the recommendations include web content or a link to web content related to the recommendation.
[0034] The present 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 payments). Each type of digital asset (e.g., each cryptocurrency) may represent a different payment network, and each type of digital asset may be stored on the same blockchain network or 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 using inter-ledger payments, a recipient (seller) may present an item specifying an amount of Ethereum, but a sender (purchaser) lacking this particular digital asset may not be able to complete the transaction.
[0035] In some conventional approaches, large and complex protocols are provided for sending transactions across different ledgers, but these conventional approaches are not widely adapted to computing devices (or their applications) due to their complexity. Outside of inter-ledger processes, when a recipient requests a particular type of digital asset, a user (e.g., the sender) may manually convert a digital asset if the user does not currently have a digital asset of the type requested by the requesting party (e.g., the recipient). This manual conversion process can cause technical problems, including excluding the user from the transaction flow and potentially requiring the installation of additional, and in some cases two other, digital asset exchange applications, which can increase computing resources (e.g., memory, CPU, etc.) to facilitate such transactions. Due to the extra effort, the user may abandon the transaction. The lack of a simplified protocol can lead to a lack of adoption by recipients (e.g., computing devices, applications, etc.) and / or an increase in transaction abandonment.
[0036] The techniques described herein provide a technical solution for managing the coordination between a digital asset holder (e.g., a cryptocurrency wallet), a blockchain network(s), and a digital asset exchange (e.g., a decentralized exchange, or a centralized exchange) using an application (e.g., a browser application) to solve the technical problems of inter-ledger (user-to-user settlement). Further, the techniques described herein provide a technical solution for providing a simplified (and in some examples, platform-independent) protocol for connecting a recipient (seller) and a sender (e.g., a purchaser) via a digital asset holder and digital asset exchange(s). Such a technical solution has the technical advantage that the recipient and sender can convert information (blockchain transactions) regardless of the form in which the recipient provides information and the seller receives information.
[0037] A digital asset exchange can be an application that executes one or more ledger conversion operations and can convert one type of digital asset (e.g., Ethereum) to another type of digital asset (e.g., Bitcoin) (executed remotely from the sender's computing device and / or the recipient's computing device). In some examples, the digital asset exchange includes a decentralized exchange (DEX). A DEX is an application that runs on one or more blockchain networks, and the code is embodied as a smart contract on the blockchain network(s). For example, when converting 100 Bitcoins to Ethereum, the DEX is assumed to receive 100 Bitcoins from the digital asset holder of the Bitcoin ledger and place the corresponding Ethereum into the digital asset holder of the Ethereum ledger. Uniswap® is an example of a DEX. In some examples, the DEX converts tokens on the same blockchain network. For example, the DEX may execute as a smart contract on the Ethereum blockchain and can convert Ethereum on the Ethereum blockchain to 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, the digital asset exchange includes a centralized exchange (e.g., Binance®) that can convert tokens on different blockchains.
[0038] The techniques described herein can provide a technical advantage of reducing the amount of computer complexity (thereby reducing the amount of computing resources) to implement inter-ledger transactions involving different types of digital assets (e.g., different ledgers) by defining a protocol for receiving blockchain transaction information from a requesting party (e.g., a recipient) (e.g., a website, an application, etc.) and providing an application (e.g., a browser application) that communicates with one or more digital asset exchanges. Further, the techniques described herein can operate in the background with minimal input from the sender without interrupting the sender's transaction flow (thereby eliminating the need to install one or more additional applications).
[0039] An application (e.g., a browser application) is configured to implement a user agent natively or via a JavaScript or HTML library and receive transaction information (e.g., the type of digital asset requested by the recipient, the transaction amount, the recipient's shared address) from a recipient (e.g., the recipient's website, application). For example, in response to a user (sender) selecting a particular item for purchase, the application can receive transaction information. In one example, the blockchain transaction information can specify Ethereum as the type of digital asset requested, a 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 requests 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 that identifies digital assets belonging to the user (the 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 the application that receives transaction information or associated with the application). In some examples, the application is a browser application and the digital asset holder is part of the browser application or a program 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 any of the techniques described with reference to FIGS. 1-9. In one example, the interface may display information indicating that the user has Bitcoin and Dogecoin.
[0041] In some examples, the application may communicate with one or more digital asset exchanges to obtain exchange rate information, and the application may display the exchange rate information on the interface. For example, the exchange rate information may provide an exchange rate for converting Bitcoin to Ethereum for the transaction amount and an exchange rate for converting Dogecoin to Ethereum for the transaction amount.
[0042] In response to receiving a selection of a particular type of digital asset (e.g., the user selects Bitcoin), the application may communicate with one or more digital asset exchanges to convert a transaction amount from a type of digital asset held by the user to the type requested by the recipient. In some examples, the application may send a conversion request to the digital asset exchange, and in response to the conversion request, the digital asset exchange converts the transaction amount of the user's digital assets in the user's digital asset holder from one type of asset to the requested digital asset. Next, the application may communicate with the blockchain network to send the transaction amount (which at this point has 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 the blockchain network (which has a Bitcoin ledger) to transfer the transaction amount from the user's digital asset holder to the recipient's digital asset holder. In other words, the application transparently determines and executes a swap sequence for the user to achieve currency exchange and conduct a transaction in the requested type of currency.
[0043] In some examples, an application may select a particular digital asset exchange from among a plurality of digital asset exchanges. For example, the 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, the application may use a plurality of digital asset exchanges to perform a conversion from one type of digital asset to another type of digital asset. For example, if a sender uses minor currency A and a 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., directly). However, the application may select a first digital asset exchange that converts minor currency A to a common bridge currency (e.g., ETH), and may also select a second digital asset exchange that converts the bridge currency to minor currency B. These and other features are further described with reference to the figures.
[0044] The present 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, according to other aspects. For example, the present disclosure may provide a technical solution that enables starting a blockchain transaction from web content or an application other than a digital asset holder. 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 a user's device. 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, a transaction can 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 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 to prompt the user to select a specific digital asset holder from the digital asset holders 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 the digital asset holder is not installed on the user's device, the operating system may display an interface to prompt the user to install a specific digital asset holder. In some examples, a user can select a specific digital asset holder as the default digital asset holder from a settings interface (e.g., an OS settings interface).
[0046] If the digital asset holder is registered as the default digital asset holder, the application (that initiated the transaction) may transfer the intent request to the default digital asset holder (via an inter-process communication (IPC) link), and the intent request may cause the default digital asset holder to perform one or more actions. In response to the execution of the action(s), the default asset holder may send an intent response to the application (via the IPC link), and the intent response may indicate the result of the action(s). In some examples, the intent request is a request for an asset list that causes 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 that causes the default digital asset holder to authenticate a transaction, communicate with the blockchain network, and cause the blockchain network to add the transaction. The intent response may include the result of the transaction 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 the intent request to a default digital asset holder (via an IPC link). In response to actions performed 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 facilitates the transaction), and the notification may indicate the result of the transaction. In some examples, using the device API may enable a technical advantage of facilitating transactions from web content of a blockchain network with minimal (or no) involvement of the browser. In some examples, instead of (or in addition to) using the device API, a browser application may connect to a default digital asset holder and use any of the techniques described related to connecting the browser application to a third-party digital asset holder to facilitate processing of a transaction in a blockchain network. These features and other features are further described with reference to the following figures.
[0048] FIG. 1 shows a system 100 having an application 106 connected to one or more digital asset holders 102 for processing a transaction 112 in a blockchain network 110 according to one aspect. 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, digital asset holder 102 is referred to as a cryptocurrency wallet. Digital asset holder 102 can be implemented as an extension to a browser application, a native application, a server application, a web application, or generally any application that stores a private key 104. For example, digital asset holder 102 stores private key 104 to enable transaction 112 processed in blockchain network 110. In some examples, digital asset holder 102 is a third-party application (e.g., a third-party digital asset holder), e.g., an application not developed or managed by application 106.
[0049] In some examples, since application 106 may be connected to any digital asset holder 102 (e.g., any third-party digital asset holder), application 106 performs at least one of the operations of processing transaction 112 in blockchain network 110. For example, application 106 may be connected to digital asset holder 102 implemented by an extension to a browser application, a native application, a server application, and / or a web application. In some examples, application 106 operates as an intermediary between web content 108 for creating transaction 112 and digital asset holder 102. In some examples, application 106 operates as an intermediary between digital asset holder 102 and blockchain network 110. Application 106 may render one or more user interface (UI) objects that enable a user to select a specific digital asset holder 102 to be used for transaction 112 and / or specific digital assets associated with digital asset holder 102 to be used 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. A UI object is an object that is selectable by a user and is configured to perform an action when selected.
[0050] Since at least a part of the operation of processing transaction 112 in web content 108 is executed by application 106, the complexity of enabling transaction 112 for web content 108 can be reduced. Further, the techniques described herein increase the speed at which transaction 112 can be added to blockchain network 110 and / or reduce the amount of computing resources required to complete transaction 112 (e.g., it may be possible to avoid switching user interfaces between multiple applications and / or avoid launching other applications to complete transaction 112) such that application 106 can connect to any digital asset holder 102 (e.g., any third - party digital asset holder).
[0051] Blockchain network 110 can represent any type of distributed database shared among computer nodes of a computer network. In some examples, blockchain network 110 includes a distributed ledger or distributed ledger technology (DLT). A distributed ledger is a consensus of digital data stored among computer nodes, which is replicated, shared, and synchronized. In some examples, blockchain network 110 is a public ledger. In some examples, blockchain network 110 is a private ledger. In some examples, blockchain network 110 is a combination of a public ledger and a private ledger. In some examples, blockchain network 110 is a digitally distributed distributed ledger that exists across multiple nodes in a peer - to - peer (P2P) network, where each node is represented by one or more computing devices.
[0052] The blockchain network 110 may store digital data as a plurality of linked blocks (e.g., a chain of blocks), where one block is linked to a previous block using cryptography. In some examples, the digital data includes cryptocurrency. In some examples, the digital data includes fungible tokens. Fungible tokens are representations of assets on the blockchain network 110 that are exchangeable. In some examples, the digital data includes non-fungible tokens (e.g., NFTs). Non-fungible tokens are representations of assets (e.g., unique assets) on the blockchain network 110 that are not exchangeable.
[0053] In some examples, the blockchain network 110 may process and record a transaction 112 as part of a block within the blockchain. Each block includes data (e.g., transaction data) and a hash value that is the result of an encryption operation performed on the block's data. In some examples, a block includes a nonce (e.g., an integer), which is a number randomly generated when the block is created. In some examples, linking a new block to an existing block includes identifying the hash value of the previous block within the new block. In some examples, adding a transaction 112 to the blockchain network 110 includes adding transaction information regarding the transaction 112 to an existing block of the blockchain network 110. In some examples, adding a transaction 112 to the blockchain network 110 includes creating a new block, adding transaction information regarding the transaction 112 to the new block, generating a hash value using one or more encryption operations input using the transaction information, and / or linking the new block to a previous block by including the hash value of the previous block in the new block.
[0054] The digital asset holder 102 can be any type of program that stores and manages the user's private key 104, and the user's private key 104 is used by the digital asset holder 102 to authenticate transactions 112 in the blockchain network 110. In some examples, the private key 104 includes a password (e.g., a series of characters). In some examples, the private key 104 includes one or more passphrases. In some examples, the private key 104 includes a list of words from a dictionary (e.g., the unencrypted form of the private key 104). Without the private key 104, the transaction 112 cannot be added to the blockchain network 110. For example, if a user wishes to record a transaction involving digital asset(s) (e.g., cryptocurrency, NFT) stored in the blockchain network 110, the transaction 112 needs to 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 in a computing device associated with the user. In some examples, the private key 104 is stored in the memory device of the user's computer. In some examples, the digital asset holder 102 is stored in one or more server computers. In some examples, the digital asset holder 102 is a native application installed in 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 a computing device. In some examples, the digital asset holder 102 is an extension (e.g., a web extension) of a browser application. In some examples, the digital asset holder 102 is a web application that is at least partially executed by one or more server computers and is accessible via the browser application of the user's computing device. In some examples, the digital asset holder 102 is a server application running 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 is 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., the digital assets are stored in the blockchain network 110), but the digital asset holder 102 stores the private key 104 and the shared address of the location of the digital assets. Also, the digital asset holder 102 includes a function to authenticate (e.g., sign) the transaction 112. In some examples, the digital asset holder 102 can authenticate the transaction by executing a smart contract and / or by performing an encryption operation using the private key 104.
[0057] To initiate the transaction 112 from the web content 108, in some conventional approaches, the digital asset holder may communicate with the blockchain network 110 to commit (e.g., add) the transaction 112 to the blockchain network 110. In some conventional approaches, only the digital asset holder can complete the transaction 112. However, according to the techniques described herein, the application 106 may operate as an intermediary between the digital asset holder 102 and the web content 108, and the application 106 performs at least a part of the operation to complete the transaction 112 in the blockchain network 110.
[0058] Web content 108 can be displayed on a user's computing device. The web content 108 can be rendered from a browser application, a native application having a web view controller, and / or a browser tab (e.g., a custom browser tab) rendered within a native application. In some examples, the web content 108 can include one or more objects (e.g., JavaScript exposed objects) for creating blockchain transactions in the blockchain network 110.
[0059] Application 106 can include a browser application executable by a computing device. In some examples, the browser application is a web browser (e.g., a browser engine or a search engine) executable on the operating system of the computing device. The web browser may be configured to render browser tab(s) for searching and displaying web content. In some examples, the browser application is an operating system (or a part of an operating system) executable by a computing device. In some examples, application 106 is a non-browser application, e.g., an application that does not render browser tabs.
[0060] Application 106 may include one or more interfaces that enable Application 106 and 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 (e.g., in a browser tab). In some examples, Web Content 108 is rendered by a web view controller of a native application (e.g., to display and control web content without exiting the native application). In some examples, Web Content 108 is provided in a browser tab (e.g., a custom browser tab) within a native application. In some examples, Web Content 108 is rendered by a web application (or a server application or a cloud-based application).
[0061] In some examples, the interface(s) define(s) an inter - process communication protocol that enables information to be transmitted between application 106 and digital asset holder 102. In some examples, the interface(s) permit(s) a browser application and digital asset holder 102 (e.g., an extension to a browser application, a native application, a server application, etc.) to communicate with each other. In some examples, the interface(s) include(s) one or more application programming interface(s) (API(s)). In some examples, the API(s) include(s) a callback API. In some examples, application 106 includes a library (e.g., a JavaScript library) that defines one or more APIs used for communication between application 106 and digital asset holder 102. In some examples, application 106 natively defines one or more APIs used for communication between application 106 and digital asset holder 102.
[0062] In response to requests generated by a user's interaction with a public object of web content 108 to create a transaction in blockchain network 110, in some examples, application 106 may receive a request (e.g., a callback) or may receive multiple requests, such as a first request and / or a second request, at different times. Upon receipt or detection of the first request or the second request, application 106 may communicate with digital asset holder 102 to receive and / or transmit information. In some examples, the first request is a request to obtain 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 obtain an authenticated transaction 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 the particular digital asset holder 102 (e.g., by communicating with blockchain network 110). Application 106 may receive a digital asset response from digital asset holder 102, and the digital asset response 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 relates to a transaction request for creating transaction 112 in blockchain network 110 using a particular digital asset from the list of digital assets. The transaction request may include details regarding the transaction, such as the type of digital asset, amount, sender, recipient, time information, etc. Application 106 may send the transaction request to digital asset holder 102, and digital asset holder 102 can retrieve private key 104 and use 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 the subject of an authenticated transaction request, to the blockchain network. For example, application 106 may define one or more interfaces that enable 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 may add transaction 112, which is the subject of the authenticated transaction request, to blockchain network 110. Application 106 may receive a transaction response from blockchain network 110 indicating whether transaction 112 was 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 was 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 that hosts web content 108.
[0066] Figures 2A-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 blockchain network 210. In some examples, browser application 206a may connect to a single digital asset holder 202 (at a particular time) and process one or more transactions 212a with web content 208. In some examples, browser application 206a may connect to multiple digital asset holders 202 (e.g., simultaneously or at different times) and process one or more transactions 212a with web content 208.
[0067] System 200 can be an example of system 100 of FIG. 1 and can include any of the details described with reference to FIG. 1. Browser application 206a is configured to connect to digital asset holder 202 that stores private key 204 to enable adding transaction 212 for a digital asset associated with (or to be associated with) a user of computing device 226 to blockchain network 210. In some examples, digital asset holder 202 is a third-party digital asset holder. A third-party digital asset holder is an application that is not owned and / or managed by browser application 206a. In some examples, browser application 206a can connect to any third-party digital asset holder to assist in processing transaction 212 in blockchain network 210.
[0068] Computing device 226 can be any type of computing device that includes one or more processors 228, one or more memory devices 230, display 234, and an operating system 232 configured to execute (or assist in executing) one or more applications, including browser application 206a and digital asset holder 202. In some examples, computing device 226 is a laptop computer. In some examples, computing device 226 is a desktop computer. In some examples, computing device 226 is a tablet computer. In some examples, computing device 226 is a smartphone. In some examples, computing device 226 is a wearable device. In some examples, display 234 is the display of computing device 226. In some examples, display 234 can also include one or more external monitors connected to computing device 226.
[0069] The operating system 232 is system software that manages computer hardware and software resources and provides services common to computing programs. In some examples, the operating system 232 is an operating system designed for a larger display 234, such as a laptop or desktop (e.g., sometimes referred to as a desktop operating system). In some examples, the operating system 232 is an operating system for a smaller display 234, such as a tablet or smartphone (e.g., sometimes referred to as a mobile operating system).
[0070] The processor(s) 228 can be formed on a substrate configured to execute one or more machine-executable instructions, or portions of software, firmware, or combinations thereof. The processor(s) 228 can be semiconductor-based. That is, the processor can include a semiconductor material capable of executing digital logic. The memory device(s) 230 can include main memory that stores information in a format readable and / or executable by the processor(s) 228. The memory device(s) 230 can store the operating system 232, the digital asset holder 202, and the browser application 206a, which, when executed by the processor 228, perform the particular operations described herein.
[0071] The browser application 206a is represented as operating as a mediator between the web content 208 and the digital asset holder 202. However, in some examples, the application can be an operating system or a non-browser application, e.g., an application that does not render browser tabs for rendering and / or searching for content on the Internet. Note that the browser application 206a can be a web browser (e.g., a browser engine or a search engine) configured to access information on the Internet. In some examples, the browser application 206a is a separate application from the operating system 232, and the browser application 206a can be installable on (and executable by) the operating system 232. In some examples, the browser application 206a is the operating system 232 (or included as part of the operating system 232). The browser application 206a can launch one or more browser tabs in the context of one or more browser windows of the display 234 of the computing device 226. In some examples, the browser application 206a can launch one or more browser tabs without referring to a browser window.
[0072] The browser application 206a may connect to the digital asset holder 202 and process the transaction 212a with the web content 208. The digital asset holder 202 is configured to store the user's private key 204 for enabling the transaction 212 in the blockchain network 210. The transaction 212a may be referred to as a blockchain transaction that records digital information in the blockchain network 210. The transaction 212a may involve the acquisition of an item (such as a good, service, and / or digital right) accompanied by the user's digital data (such as digital assets) stored in the blockchain network 210. In some examples, the web content 208 may enable the user to obtain an item using a cryptocurrency and / or NFT owned by the user and stored in the blockchain network 210. For example, an application or website may enable the user to purchase content using a digital asset such as a cryptocurrency or NFT stored in the blockchain network 210.
[0073] Web content 208 may include information from the World Wide Web. In some examples, web content 208 includes a web page or a collection of web pages (e.g., a web page is a hypertext document on the Internet). Web content 208 may include one or more objects 236 that can create a transaction 212a in blockchain network 210. In some examples, object 236 is a blockchain computer object. In some examples, object 236 is a JavaScript exposed object. In some examples, object 236 is an API exposed object. If blockchain network 210 is Ethereum, object 236 is an Ethereum object (e.g., 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 in a first blockchain network and a second object (e.g., object 236) for creating a transaction in a second blockchain network, where the second blockchain network is different from the first blockchain network. In some examples, the first object and the second object refer to different callbacks or requests related to a particular transaction 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 further described below, browser application 206a is configured to implement object 236 to communicate with blockchain network 210 (e.g., by using API(s) 240). In some examples, object 236 embedded in web content 208 initiates a blockchain process when selected (e.g., called, started, etc.).
[0075] Web content 208 can be rendered on display 234 of computing device 226 according to one or more different ways. Web content 208 can be displayed in the user interface of browser application 206a. For example, a user can use browser application 206a to render web content 208 in a browser tab. Web content 208 can be displayed in the user interface of a non-browser application (e.g., a mobile app installed on a smartphone). For example, a user may be using a native application installed on computing device 226, and web content 208 can be displayed from the native application using a web view controller and / or a browser tab. The web view controller and / or the browser tab may be associated with browser application 206a. In some examples, web content 208 can be displayed in the user interface of a web application that is at least partially executable by browser application 206a.
[0076] The browser application 206a may connect with any digital asset holder 202 (e.g., any third-party digital asset holder) for a transaction 212a initiated from web content 208, and the browser application 206a performs at least one of the operations that enable the transaction 212a to be added to the blockchain network 210. In some examples, the browser application 206a operates as an intermediary between the web content 208 for creating the transaction 212 and the digital asset holder 202. In some examples, the browser application 206a operates 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, and the user's private key 204 is used by the digital asset holder 202 to authenticate the transaction 212 before the transaction 212 is added to the blockchain network 210. In some examples, the private key 204 includes a password (e.g., a series of characters). In some examples, the private key 204 includes one or more passphrases. In some examples, the private key 204 includes a list of words found in a dictionary (e.g., the unencrypted form of the private key 204). Without the private key 204, the transaction 212a cannot be added to the blockchain network 210. For example, if a user wishes to record a transaction 212a involving digital assets (e.g., cryptocurrency, NFT) stored on the blockchain network 210, the transaction 212a must be an authenticated digital asset holder 202 (e.g., signed by the digital asset holder 202) before being added to the blockchain network 210. The digital asset holder 202 may be stored in a computing device 226 (e.g., within a memory device 230). In some examples, the digital asset holder 202 is stored on one or more server computers 216, and the digital asset holder 202 may be accessible via a network 250 by the computing device 226.
[0078] In some embodiments, as shown in FIG. 2B, the digital asset holder 202 is an extension 202a of the browser application 206a. For example, the digital asset holder 202 (e.g., the 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 the transaction 212a in the web content 208. In some examples, the web content 208 is rendered by the browser application 206a. In some examples, the extension 202a is referred to as a web extension or a browser extension. The extension 202a (when enabled) adds features or functions 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 the native application 202b, and the browser application 206a may connect to the native application 202b to facilitate the processing of the 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, when 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 can include one or more selectable items associated with actions of the browser application 206a (e.g., navigation controls), and one or more selectable items associated with actions of the underlying native application (e.g., sharing a message of a messaging platform).
[0081] In some examples, a custom browser tab includes customized display attributes of the user interface of the custom browser tab (e.g., setting the color of the background of the navigation panel and / or toolbar). For example, items of the navigation panel and toolbar (e.g., having a forward navigation control and / or a back navigation control) are typically standard across the entire browser tab that is rendered for a non-custom browser tab. However, an application developer can change one or more aspects of the navigation panel and / or toolbar and customize the tab to correspond to the underlying native application.
[0082] In some examples, the native application 202b is a non-browser application. The native application 202b can display web content 208 via a web view controller or a browser tab. The native application 202b is a software program developed for use on a particular platform or device, or for a particular operating system. In some examples, the native application 202b is installed on the operating system 232 of the computing device 226.
[0083] In some examples, the native application 202b is a native mobile application configured to run on a mobile operating system of a computing device 226 such as a smartphone or a tablet. In some examples, the native mobile application can include an Android (registered trademark) application, a mobile iOS (registered trademark) application, and / or a mobile Windows (registered trademark) application. In some examples, the native application 202b is an application configured to run on a desktop operating system of a computing device 226 such as a laptop computer or a desktop computer. In some examples, the native application 202b can include a Linux (registered trademark)-based application (e.g., a Linux application in a virtualized environment). In some examples, the native application 202b is a software program developed for multiple platforms or devices. In some examples, the native application 202b is a software program developed for use on a mobile platform and / or configured to run on a desktop or laptop computer.
[0084] In some examples, the digital asset holder 202 is the server application 202c. For example, the digital asset holder 202 can be implemented by the server application 202c, and the browser application 206a can connect to the server application 202c to facilitate the processing of the transaction 212a in 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 running on one or more server computers (e.g., server computer(s) 216). In some examples, the server application 202c is referred to as a cloud application. In some examples, the server application 202c is a web application. In some examples, the server application 202c can be an application program stored on a remote server (e.g., server computer(s) 216) and delivered via the network 250 by the browser application 206a (e.g., 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 the private key 204, and the digital asset holder 202 is associated with a shared address 205 (e.g., a shared / public wallet address). The shared address 205 may represent the location of one or more digital assets associated with the user and is stored in the blockchain network 210. In some examples, the digital asset holder 202 stores asset information 207 regarding 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 regarding each digital asset (e.g., an NFT description, an amount, a type of cryptocurrency, etc.). The digital asset holder 202 may not actually store the digital assets (e.g., store the digital assets in the blockchain network 210), but the digital asset holder 202 stores the private key 204 and the shared address 205 of the location of the digital assets. Also, the digital asset holder 202 includes a function of authenticating (e.g., signing) a transaction 212. In some examples, the digital asset holder 202 can authenticate a transaction by executing a smart contract and / or by performing an encryption 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 to obtain information from the digital asset holder 202 and / or notify the digital asset holder 202 of information regarding the transaction 212a (e.g., when the web content 208 calls an object 236). The API(s) 238 can be a programming interface through which the browser application 206a and the digital asset holder 202 can communicate with each other.
[0087] The browser application 206a may define one or more APIs 240 that enable the browser application 206a to communicate with the blockchain network 210. For example, the API(s) 240 may be a programming interface that can facilitate communication between the browser application 206a and the blockchain network 210, such as adding a transaction 212a to the blockchain network 210 and receiving a notification that the transaction 212a has been successfully added.
[0088] In some examples, as shown in FIG. 2C, the browser application 206a includes a JavaScript library 260 configured to implement the API(s) 238 and the API(s) 240. In some examples, as shown in FIG. 2D, the browser application 206a defines a native API 262, and the native API 262 includes the API(s) 238 and the API(s) 240.
[0089] Referring again to FIG. 2A, the browser application 206a may detect whether the web content 208 has selected (or initialized or invoked) the object 236. In some examples, when the user selects a particular UI item of the web content 208, the web content 208 may select the object 236. In some examples, the object 236 relates to a transaction request for obtaining a list of assets (e.g., query count). In some examples, in response to the web content 208 selecting the object 236, the browser application 206a may send an asset request 242 to the digital asset holder 202 via the API(s) 238. The asset request 242 may be a request for a list of assets associated with the digital asset holder 202. Next, the browser application 206a may receive an asset list 244 identifying the digital assets associated with the digital asset holder 202 via the API(s) 238. The asset list 244 may identify one or more types of cryptocurrencies and, in some examples, the amount of each cryptocurrency. In some examples, the browser application 206a may render a UI object that provides the asset list 244.
[0090] In some examples, the object 236 is related to (e.g., sending) the creation of a transaction 212a using digital data stored in the blockchain network 210. In response to the web content 208 selecting the object 236, the browser application 206a may send a transaction request 248 to the digital asset holder 202 via the API(s) 238. The transaction request 248 may include details regarding the transaction 212a created in the blockchain network 210, such as the sender (e.g., the shared address 205), the recipient (e.g., the recipient's shared address), the amount, the type of digital asset, etc. In some examples, the transaction request 248 sent to (or received by) the digital asset holder 202 is called a request (e.g., an authentication request) to authenticate the transaction 212a. In response to the transaction request 248, the digital asset holder 202 may authenticate the transaction request 248 using the private key 204. For example, the digital asset holder 202 may use the private key 204 to execute a smart contract or an encryption operation to authenticate (or sign) the transaction request 248. In contrast, the browser application 206a may receive an authenticated transaction request 246 via the API(s) 238.
[0091] The browser application 206a may send an authenticated transaction request 246 to the node gateway 214 of the blockchain network 210 via the API(s) 240, and the blockchain network 210 adds the transaction 212a to the blockchain network 210. In some embodiments, the node gateway 214 is a network node that connects two networks with different transmission protocols. The node gateway 214 may function as an access point for information transmitted between the blockchain network 210. In some examples, the node gateway 214 may perform one or more operations on the authenticated transaction request 246. In some examples, the authenticated transaction request 246 includes authentication information indicating that the transaction is authenticated (e.g., signed). The node gateway 214 may determine whether the authentication is valid (e.g., not tampered with). In some examples, the node gateway 214 may determine that the authenticated transaction request 246 includes a plurality of elements such as a source address, a target address, a type of digital asset, an amount, etc.
[0092] After the transaction 212a is committed to the blockchain network 210, the browser application 206a receives, via the API(s) 240, a transaction response 222 from the blockchain network 210 that includes the transaction identifier 224 of the transaction 212a added to the blockchain network 210. In some examples, the authenticated transaction request 246 and the transaction response 222 are communicated between the browser application 206a and the blockchain network 210 using JavaScript Object Notation (JSON) messages 221. In response to the transaction response 222, the browser application 206a sends a notification 252 including the transaction identifier 224 to the digital asset holder 202 via the API(s) 238.
[0093] Server computer 216 can be a computing device that takes the form of a plurality of various devices, such as, for example, a standard server, a group of such servers, or a rack server system. In some examples, server computer(s) 216 can be a single system that shares components such as a processor and memory. In some examples, server computer(s) 216 can be multiple systems that do not share a processor and memory. Network 250 can include the Internet and / or other types of data networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, a satellite network, or other types of data networks. Network 250 can also include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to receive and / or transmit data within network 250. Network 250 can further include any number of wired connections and / or wireless connections.
[0094] Server computer(s) 216 can include one or more processors formed within a substrate, an operating system (not shown), and one or more memory devices. The memory device can represent any type (or types) of memory (e.g., RAM, flash, cache, disk, tape, etc.). In some examples (not shown), the memory device can include external storage, e.g., memory that is physically distant from but accessible from server computer(s) 216. Server computer(s) 216 can include one or more modules or engines representing specially programmed software.
[0095] FIG. 3 shows a system 300 having a browser application 306a connected to an extension 302a of the browser application 306a to process blockchain transactions with web content 308. In some examples, the web content 308 is rendered by the browser application 306a. The system 300 can be an example of the system 100 of FIG. 1 and / or the system 200 of FIGS. 2A-2D and can include any of the details described with reference to those figures.
[0096] The browser application 306a is executable by a computing device 326. In some examples, the browser application 306a is a web browser (e.g., a browser engine or a search engine) installed in the operating system of the computing device 326. In some examples, the browser application 306a is (or forms part of) the operating system of the computing device 326. In some examples, the computing device 326 is a computer (e.g., a laptop computer, a desktop computer, etc.) operating in a non-mobile environment. The browser application 306a can connect to any third-party digital asset holder represented as an extension 302a. The extension 302a is a web extension of the browser application 306a. In some examples, the extension 302a is not owned or developed by the browser application 306a (e.g., a third-party digital asset holder). The extension 302a (when active) adds features or functions to the browser application 306a. In some examples, the extension 302a can be HTML, CSS, and / or JavaScript-based. As shown in FIG. 3, the browser application 306a can define one or more APIs (plural) 338 to enable communication between the browser application 306a and the extension 302a. The browser application 306a can define one or more APIs (plural) 340 to enable communication between the browser application 306a and the blockchain network 310.
[0097] The extension function 302a may include a background page 370 of the extension function that stores a private key 304 used to authenticate transactions added to the blockchain network 310. In some examples, the background page 370 of the extension function is an HTML page. In some examples, the background page 370 of the extension function is a container (e.g., an HTML-based container). The background page 370 of the extension function includes background scripts, e.g., instructions that manage one or more computer tasks associated with added / enabled web features (e.g., retrieve the private key 304 and use the private key 304 to authenticate blockchain transactions).
[0098] The extension function 302a may inject a content script 372 into the extension function 302a. In some examples, the content script 372 is a computer file. In some examples, the content script 372 is a computer file that executes in the context of a web page (as opposed to the background script of the background page 370 that is part of the extension function 302a). The content script 372 defines one or more callback APIs so that the extension function 302a can communicate with the browser application 306a.
[0099] The browser application 306a defines one or more APIs 338 that enable the browser application 206a to communicate with the extension function 302a to obtain information from the extension function 302a and / or notify the extension function 302a of information regarding blockchain transactions (e.g., when the web content 308 calls an object and creates a transaction in the blockchain network 310). The API(s) 338 can be a programming interface through which the browser application 306a and the extension function 302a can communicate with each other.
[0100] The browser application 306a may define one or more APIs 340 that enable the browser application 306a to communicate with the blockchain network 310. For example, the API(s) 340 may be a programming interface that can facilitate the browser application 306a and the blockchain network 310 to communicate with each other, for example, to add a blockchain transaction in the blockchain network 310 and receive a notification that the blockchain transaction has been successfully added. In some examples, the browser application 306a includes a JavaScript library configured to implement the API(s) 338 and the API(s) 340. In some examples, the browser application 306a defines a native API, and the native API includes the API(s) 338 and the API(s) 340.
[0101] The browser application 306a can detect whether the web content 308 has selected (or initialized or invoked) an object for processing blockchain transactions. In some examples, when the user selects a specific UI item of the web content 308, the web content can select an object. In some examples, the object relates to a transaction request for obtaining a list of assets (e.g., a query count). In some examples, in response to the web content 308 selecting an object, the browser application 306a can send an asset request to the extension 302a via the API(s) 338 and then, via the API(s) 338, receive an asset list that identifies the digital assets associated with the extension 302a. In some examples, in response to receiving the asset request, the background page 370 of the extension can obtain asset information (e.g., the asset information 207 of FIGS. 2A-2D) regarding the user's digital assets stored in the blockchain network 310. The asset list can identify one or more types of cryptocurrencies and, in some examples, the amount of each cryptocurrency. In some examples, the browser application 306a can render a UI object that provides the asset list.
[0102] In some examples, the object relates to (e.g., sends) the creation of a blockchain transaction using digital data stored in the blockchain network 310. In response to the web content 308 selecting an object for creating a blockchain transaction, the browser application 306a may send a transaction request to the extension 302a via the API(s) 338. The transaction request may include details regarding the blockchain transaction to be created in the blockchain network 310, such as the sender, recipient, amount, type of digital asset, and the like. In response to the transaction request, the background page 370 of the extension may authenticate the transaction request using the private key 304. For example, the background page 370 of the extension may execute a smart contract or cryptographic operation using the private key 304 to authenticate (or sign) the transaction request. In contrast, the browser application 306a may receive the authenticated transaction request via the API(s) 338.
[0103] The browser application 306a may send an authenticated transaction request to the node gateway of the blockchain network 310 via the API(s) 340, and the blockchain network 310 adds a blockchain transaction to the blockchain network 310. After the blockchain transaction is committed to the blockchain network 310, the browser application 306a receives, via the API(s) 340, a transaction response from the blockchain network 310 that includes a transaction identifier of the blockchain transaction added to the blockchain network 310. In some examples, the authenticated transaction request and the transaction response are communicated between the browser application 306a and the blockchain network 310 using JSON messages. In response to the transaction response, the browser application 306a sends a notification including the transaction identifier to the extension 302a via the API(s) 338. The background page 370 of the extension may update the user's asset information using the newly added blockchain transaction. In some examples, the browser application 306a also sends a notification indicating that the blockchain transaction has been successfully added to the blockchain network 310 to the website of the web content (e.g., via the API 338).
[0104] Figure 4 shows a system 400 having a browser application 406a connected to a native application 402b to process blockchain transactions in web content 408. In some examples, the web content 408 is rendered by a web view controller of the native application 402b. In some examples, the web content 408 is rendered by the browser application 406a. The system 400 may be an example of the system 100 of FIG. 1 and / or the system 200 of FIGS. 2A-2D and may include any of the details described with reference to those figures.
[0105] The browser application 406a is executable by a computing device 426. In some examples, the mobile computing device 426 includes a smartphone. In some examples, the mobile computing device 426 includes a tablet. In some examples, the browser application 406a is a web browser (e.g., a browser engine or a search engine) installed in the mobile operating system of the computing device 326. The browser application 406a can connect to any third-party digital asset holder represented as a native application 402b.
[0106] The native application 402b is a native mobile application configured to execute on the mobile operating system of the mobile computing device 426. In some examples, the native application 402b can include an Android application, a mobile iOS application, and / or a mobile Windows application. The native application 402b may be referred to as a cryptocurrency wallet. The native application 402b can store a private key 404 used to authenticate blockchain transactions in the blockchain network 410. In some examples, the native application 402b can 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 to obtain information from the native application 402b and / or notify the native application 402b of information regarding blockchain transactions (e.g., when web content 408 invokes an object and creates a transaction in the blockchain network 410). The API(s) 438 can be a programming interface through which the browser application 406a and the native application 402b can communicate with each other.
[0108] The browser application 406a may define one or more APIs 440 that enable the browser application 406a to communicate with the blockchain network 410. For example, the API(s) 440 can be a programming interface that facilitates the browser application 406a and the blockchain network 410 to communicate with each other, such as adding a blockchain transaction in the blockchain network 410 and receiving a notification that the blockchain transaction has been successfully added. In some examples, the browser application 406a includes a JavaScript library configured to implement the API(s) 438 and the API(s) 440. In some examples, the browser application 406a defines native APIs that include the API(s) 438 and the API(s) 440.
[0109] The browser application 406a can detect whether the web content 408 has selected (or initialized or invoked) an object for processing blockchain transactions. In some examples, when the user selects a specific UI item of the web content 408, the web content 408 can select an object. In some examples, the object relates to a transaction request for obtaining a list of assets (e.g., a query count). In some examples, in response to the web content 408 selecting an object, the browser application 406a sends an asset request to the native application 402b via the API(s) 438, and then can receive an asset list identifying the digital assets associated with the native application 402b via the API(s) 438. In some examples, in response to receiving the asset request, the native application 402b obtains asset information (e.g., the asset information 207 of FIGS. 2A-2D) regarding the user's digital assets stored in the blockchain network 410. The asset list can identify one or more types of cryptocurrencies, and in some examples, identifies the amount of each cryptocurrency. In some examples, the browser application 406a can render a UI object that provides the asset list.
[0110] In some examples, an object is related to creating (e.g., sending) a blockchain transaction using digital data stored in the blockchain network 410. 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 the API(s) 438. The transaction request may include details regarding the blockchain transaction to be created in the blockchain network 410, such as the sender, recipient, amount, type of digital asset, etc. In response to the transaction request, the native application 402b may authenticate the transaction request using the private key 404. For example, the native application 402b may use the private key 404 to execute a smart contract or cryptographic operation to authenticate (or sign) the transaction request. In contrast, the browser application 406a may receive the authenticated transaction request via the API(s) 438.
[0111] The browser application 406a may send an authenticated transaction request to the node gateway of the blockchain network 410 via the API(s) 440, and the blockchain network 410 adds a blockchain transaction to the blockchain network 410. After the blockchain transaction is committed to the blockchain network 410, the browser application 406a receives, via the API(s) 440, a transaction response from the blockchain network 410 that includes a transaction identifier of the blockchain transaction added to the blockchain network 410. In some examples, the authenticated transaction request and the transaction response are communicated between the browser application 406a and the blockchain network 410 using JSON messages. In response to the transaction response, the browser application 406a sends, via the API(s) 438, a notification including the transaction identifier to the native application 402b. The 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 (e.g., via the API 438) indicating that the blockchain transaction has been successfully added to the blockchain network 410 to the website of the web content 408.
[0112] FIG. 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. The system 500 may be an example of the system 100 of FIG. 1 and / or the system 200 of FIGS. 2A-2D and may include any of the details described with reference to those figures.
[0113] The browser application 506a is executable by a computing device 526. In some examples, the computing device 526 includes a laptop computer. In some examples, the computing device 526 includes a desktop computer. However, the computing device 526 can be any type of computing device such as a smartphone, a tablet, or a wearable device. The browser application 506a can connect to any third-party digital asset holder represented as a server application 502c. The server application 502c can be an application running on one or more server computers. In some examples, the server application 502c is a cloud application. In some examples, the server application 502c is a web application. The server application 502c can be an application program stored on a remote server (e.g., the server computer(s) 216 in FIGS. 2A-2D) and delivered via a network by the browser application 506a (e.g., a browser tab). In some examples, the server application 502c is a progressive web application stored (at least partially) on the 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 (e.g., when web content 508 invokes an object and creates a transaction in the blockchain network 510). The API(s) 538 can be a programming interface through which the browser application 506a and the server application 502c can communicate with each other.
[0115] The browser application 506a may define one or more APIs 540 that enable the browser application 506a to communicate with the blockchain network 510. For example, the API(s) 540 may be a programming interface that can facilitate the browser application 506a and the blockchain network 510 to communicate with each other, for example, to add a blockchain transaction in the blockchain network 510 and receive a notification that the blockchain transaction has been successfully added. In some examples, the browser application 506a includes a JavaScript library configured to implement the API(s) 538 and the API(s) 540. In some examples, the browser application 506a defines a native API, and the native API includes the API(s) 538 and the API(s) 540.
[0116] The browser application 506a can detect whether the web content 508 has selected (or initialized or invoked) an object for processing blockchain transactions. In some examples, when the user selects a specific UI item of the web content 508, the web content 508 can select an object. In some examples, the object relates to a transaction request for obtaining a list of assets (e.g., a query count). In some examples, in response to the web content 508 selecting an object, the browser application 506a sends an asset request to the server application 502c via the API(s) 538 and can then receive, via the API(s) 538, a list of assets identifying the digital assets associated with the server application 502c. In some examples, in response to receiving the asset request, the server application 502c obtains asset information (e.g., the asset information 207 of FIGS. 2A-2D) regarding the user's digital assets stored in the blockchain network 510. The list of assets can identify one or more types of cryptocurrencies and, in some examples, the amount of each cryptocurrency. In some examples, the browser application 506a can render a UI object that provides the list of assets.
[0117] In some examples, an object is involved in creating a blockchain transaction (e.g., sending a transaction) using digital data stored in the blockchain network 510. 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 the API(s) 538. The transaction request may include details regarding the blockchain transaction to be created in the blockchain network 510, such as the sender, recipient, amount, type of digital asset, etc. In response to the transaction request, the server application 502c may authenticate the transaction request using the private key 504. For example, the server application 502c may use the private key 504 to execute a smart contract or cryptographic operation to authenticate (or sign) the transaction request. In contrast, the browser application 506a may receive the authenticated transaction request via the API(s) 538.
[0118] The browser application 506a may send an authenticated transaction request to the node gateway of the blockchain network 510 via the API(s) 540, and the blockchain network 510 adds a blockchain transaction to the blockchain network 510. After the blockchain transaction is committed to the blockchain network 510, the browser application 506a receives, via the API(s) 540, a transaction response from the blockchain network 510 that includes a transaction identifier of the blockchain transaction added to the blockchain network 510. In some examples, the authenticated transaction request and the transaction response are communicated between the browser application 506a and the blockchain network 510 using JSON messages. In response to the transaction response, the browser application 506a sends, via the API(s) 538, a notification including the transaction identifier to the server application 502c. The server application 502c may update the user's asset information using the newly added blockchain transaction. In some examples, the browser application 506a also sends a notification (e.g., via the API 538) indicating that the blockchain transaction has been successfully added to the blockchain network 510 to the website of the web content 508.
[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, the browser tab 666 is a custom browser tab displayed by the native application 602b. The system 600 may be an example of the system 100 of FIG. 1 and / or the system 200 of FIGS. 2A-2D and may include any of the details described with reference to those figures.
[0120] A custom browser tab is a browser tab that is associated with the browser application 606a but is rendered within the context of the native application 602b. For example, the native application 602b may display application content within the UI of the native application 602b, and the application content may include a link to web content 608. When the link to the web content 608 is selected, the web content 608 may be rendered in a browser tab 666 (e.g., a custom browser tab) within the native application 602b. In contrast, for a non-custom tab, when a link to the web content 608 is selected, a separate browser tab is rendered on top of the UI of the native application.
[0121] The browser application 606a is executable by a mobile computing device 626. In some examples, the mobile computing device 626 includes a smartphone. In some examples, the mobile computing device 626 includes a tablet. In some examples, the browser application 606a is a web browser (e.g., a browser engine or a search engine) installed in the mobile operating system of the mobile computing device 626.
[0122] The browser tab 666 may include one or more selectable items associated with an action of the browser application 606a and one or more selectable items associated with an action of the underlying native application 602b. For example, if the native application 602b is a social media application, a link to an article may be displayed within a message shown on the user's timeline. When the user selects the link to the article, the browser tab 666 is displayed within the context of the social media application, and the browser tab 666 displays the article. The browser tab 666 may include selectable items (such as controls of a navigation bar and / or toolbar) associated with an action of the browser application 606a. However, the browser tab 666 may include one or more selectable items (such as customized activity buttons or controls) associated with an action performed in the social media application (such as sharing an article of the platform). The above example uses a social media application, but the underlying native application 602b may encompass a wide variety of applications including, among other types of applications, a video sharing application.
[0123] In some examples, the browser tab 666 includes customized display attributes of the UI of the browser tab 666 (such as setting the color (such as hue) of the background of a navigation panel and / or toolbar section). For example, items of the navigation panel and toolbar (such as having a forward navigation control and / or a back navigation control) are typically standard across the entire browser tab that is rendered for a non-customized browser tab. However, an application developer may change one or more aspects of the navigation panel and / or toolbar and 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, for example, to authenticate (e.g., sign) blockchain transactions. In some examples, the native application 602b includes an embedded (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 enables the creation of blockchain transactions. In some examples, the browser tab 666 itself exposes the object to enable the creation of blockchain transactions.
[0125] The browser application 606a defines one or more APIs 638 that enable the browser application 606a to communicate with the native application 602b to obtain information from the native application 602b and / or notify the native application 602b of information regarding a blockchain transaction (e.g., when the browser tab 666 calls an object to create a transaction on the blockchain network 610). The API(s) 638 can be a programming interface that enables the browser application 606a and the native application 602b to communicate with each other.
[0126] The browser application 606a may define one or more APIs 640 that enable the browser application 606a to communicate with the blockchain network 610. For example, the API(s) 640 may be a programming interface that can facilitate the browser application 406a and the blockchain network 610 to communicate with each other, such as adding a blockchain transaction in the blockchain network 610 and receiving a notification that the blockchain transaction has been successfully added. In some examples, the browser application 606a includes a JavaScript library configured to implement the API(s) 638 and the API(s) 640. In some examples, the browser application 606a defines a native API, and the native API includes the API(s) 638 and the API(s) 640.
[0127] The browser application 606a can detect whether the 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 the user selects a specific UI item of the browser tab 666, the browser tab 666 can select an object. In some examples, the object relates to a transaction request for obtaining a list of assets (e.g., a query count). In some examples, in response to the browser tab 666 selecting an object, the browser application 606a can send an asset request to the native application 602b via the API(s) 638 and then receive, via the API(s) 638, a list of assets that identify the digital assets associated with the native application 602b. In some examples, in response to receiving the asset request, the native application 602b can obtain asset information (e.g., the asset information 207 of FIGS. 2A-2D) regarding the user's digital assets stored in the blockchain network 610. The list of assets can identify one or more types of cryptocurrencies and, in some examples, the amount of each cryptocurrency. In some examples, the browser application 606a can render a UI object that provides the list of assets.
[0128] In some examples, an object is related to (e.g., sending) the creation of a blockchain transaction using digital data stored in the blockchain network 610. In response to the browser tab 666 selecting an object for creating a blockchain transaction, the browser application 606a may send a transaction request to the native application 602b via the API(s) 638. The transaction request may include details regarding the blockchain transaction to be created in the blockchain network 610, such as the sender, recipient, amount, type of digital asset, etc. In response to the transaction request, the native application 602b may authenticate the transaction request using the private key 604. For example, the native application 602b may use the private key 404 to execute a smart contract or cryptographic operation to authenticate (or sign) the transaction request. In contrast, the browser application 606a may receive the authenticated transaction request via the API(s) 638.
[0129] The browser application 606a may send an authenticated transaction request to a node gateway of the blockchain network 610 via the API(s) 640, and the blockchain network 610 adds a blockchain transaction to the blockchain network 610. After the blockchain transaction is committed to the blockchain network 610, the browser application 606a receives, via the API(s) 640, from the blockchain network 610 a transaction response including a transaction identifier of the blockchain transaction added to the blockchain network 610. In some examples, the authenticated transaction request and the transaction response are communicated between the browser application 606a and the blockchain network 610 using JSON messages. In response to the transaction response, the browser application 606a sends, via the API(s) 638, a notification including the transaction identifier to the native application 602b. The 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 indicating that the blockchain transaction has been successfully added to the blockchain network 610 to the website of the web content 608 (e.g., via the API 638).
[0130] Figures 7A - 7D show exemplary user interfaces for connecting a browser application to an application including a private key to enable a blockchain transaction in various manners. The user interfaces of Figures 7A - 7D may be displayed according to any of the systems described with reference to the previous figures.
[0131] Referring to FIG. 7A, web content 708 can be displayed on a computing device. The web content 708 can be displayed from an application running on the computing device. In some examples, the web content 708 can be displayed via a browser application. In some examples, the web content 708 can be displayed via a browser tab. In some examples, the web content 708 can be displayed via a native application. In some examples, the web content 708 includes selectable item 711 that a user can select to initiate a transaction in a blockchain network.
[0132] Referring to FIG. 7B, in response to the selection of selectable item 711 by the user, an application (e.g., a browser application or a non-browser application) can render UI object 707 that allows the user to connect a particular digital asset holder to the browser application. In some examples, the browser application can detect that the web content 708 selects (e.g., calls, initializes, etc.) an object for creating a blockchain transaction, such as when the user selects selectable item 711 of FIG. 7A. In some examples, the browser application renders UI object 707. The UI object 707 can identify one or more digital asset holders to select. In some examples, the UI object 707 can display a connection control 713 to permit the browser application to connect to a particular digital asset holder (e.g., digital asset holder A). In some examples, the UI object 707 can display a connection control 715 for selecting other digital asset holder(s) not identified by the UI object 707. For example, selection of the connection control 715 can render additional UI objects for selecting other digital asset holder(s).
[0133] Referring to FIG. 7C, in response to the selection of 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 in 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, the browser application may send an asset request to the digital asset holder via the first API(s), and then receive, via the first API(s), an asset list that identifies the digital assets associated with the selected digital asset holder. In some examples, in response to receiving the asset request, the digital asset holder may obtain asset information (e.g., asset information 207 of FIGS. 2A-2D) regarding the user's digital assets stored in the blockchain network. The asset list 744 may identify one or more types of cryptocurrency and, in some examples, 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 examples, in response to the selection of a particular digital asset (e.g., digital asset A), to cause a blockchain transaction to be committed to the blockchain network, a browser application may proceed to process the blockchain transaction. For example, the browser application may send a transaction request to the digital asset holder via a first API (s). The transaction request may include details regarding the blockchain transaction to be created in the blockchain network, such as the sender, recipient, amount, type of digital asset, etc. In response to the transaction request, the digital asset holder may authenticate the transaction request using a private key. For example, the digital asset holder may execute a smart contract or cryptographic operation using the private key to authenticate (or sign) the transaction request. In contrast, the browser application may receive the authenticated transaction request via the first API (s).
[0136] A browser application may send an authenticated transaction request to a node gateway of a blockchain network via a second API (s), and the blockchain network adds a blockchain transaction to the blockchain network. After the blockchain transaction is committed to the blockchain network, the browser application receives, via a second API (s), a transaction response from the blockchain network that includes a transaction identifier of the blockchain transaction added to the blockchain network. In response to the transaction response, the browser application sends, via a first API (s), a notification including the transaction identifier to a digital asset holder. A cryptocurrency wallet may update a user's asset information using the newly added blockchain transaction. In some examples, the browser application also sends a notification indicating that the blockchain transaction has been successfully added to the blockchain network to a website of web content. In some examples, referring to FIG. 7D, the browser application renders a UI object 719 indicating that the transaction is complete.
[0137] FIGS. 8A-8F show exemplary user interfaces for connecting a browser application to an application including a private key to enable a blockchain transaction in various manners. In some examples, the user interfaces of FIGS. 8A-8F relate to the processing of cryptocurrency settlement for subscription access rights. The user interfaces of FIGS. 8A-8F may be displayed according to any of the systems described with reference to the previous figures.
[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 a subscription. In some examples, the server application may include a digital asset holder that identifies one or more tokens (e.g., creator tokens) stored in a blockchain network. In some examples, subscription access rights (e.g., digital rights) may be exchanged with one or more tokens and granted to a particular user. In some examples, the tokens are NFTs.
[0139] Referring to FIG. 8A, a part of the web content (for example, an article from a website (xyz.com) is being displayed. In some examples, the browser application may render a part of the web content (for example, when the user selects a link to the article). Referring to FIG. 8B, when the article is further selected, the browser application may render a UI object that permits the user to subscribe using a browser account (for example, Option 1, Option 2), and / or since the user is already a subscriber, may provide a selectable item 813 for the user to obtain access rights to the article details. Referring to FIG. 8C, in response to the selection of the selectable item 813, the browser application may render a UI object to authenticate the subscription access using one or more accounts (for example, one or more browser accounts, one or more social media accounts, etc.). The UI object may also provide a selectable item 815 for obtaining access rights to the article using a digital asset holder. Referring to FIG. 8D, in response to the selection of the selectable item 815, the browser application may render a UI object through which the browser application can connect to a specific digital asset holder. The UI object in FIG. 8D may include a selectable item 817 that enables the user to select a specific digital asset holder (for example, Digital Asset Holder #1).
[0140] In response to the selection of the selectable item 817, the browser application may connect to the selected digital asset holder and use a token (for example, an NFT) to obtain access rights to the web content (for example, the 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 a selectable item 817, the browser application sends a transaction request (e.g., transaction request 248 in FIGS. 2A-2D) to a 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 an authenticated transaction request (e.g., authenticated transaction request 246 in FIGS. 2A-2D) from the server computer via the first API(s). Next, the browser application 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 FIGS. 2A-2D). The browser application sends a notification (e.g., notification 252 in FIGS. 2A-2D) to the server application via the first API. In some examples, referring to FIG. 8F, the browser application renders a UI object 821 that identifies that content is unlocked based on token settlement.
[0142] FIG. 9 is a flowchart 900 that depicts exemplary operations for connecting an application to a digital asset holder to process blockchain transactions, according to one aspect. In some examples, the application includes a browser application. In some examples, the application includes a non-browser-based application. In some examples, the digital asset holder includes an extension to a 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 is described with respect to system 100 of FIG. 1, but flowchart 900 may be applicable to any of the embodiments described herein. Although flowchart 900 of FIG. 9 shows operations in sequence, this is merely an example, and it will be understood that additional or alternative operations may be included. Further, the operations of FIG. 9 and related operations may be performed in an order different from that shown, or in parallel or in an overlapping manner.
[0144] Operation 902 includes receiving an authenticated transaction request to add transaction 112 to blockchain network 110 from digital asset holder 102 that manages a private key for accessing data of the blockchain network via an application programming interface of application 106. In some examples, the application is a browser application. In some examples, digital asset holder 102 is an extension to a browser application. In some examples, digital asset holder 102 is a native application. In some examples, digital asset holder 102 is a server application. In some examples, application 106 and digital asset holder 102 communicate with each other via at least one first application programming interface.
[0145] Operation 904 includes the 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 the application 106 and the blockchain network 110. The application 106 and the blockchain network 110 can communicate with each other via a JSON message. Operation 906 includes the application 106 receiving, from the blockchain network 110, a transaction response that includes a transaction identifier of the transaction 112 added to the blockchain network 110. For example, the application 106 can receive the result of the transaction being added to the blockchain network 110. Operation 908 includes sending, via the application programming interface of the application 106, a notification message that includes the transaction identifier to the digital asset holder 102. In some examples, the notification message is sent to a website that provided web content (e.g., received a transferred digital asset).
[0146] In some examples, the operation includes rendering web content having items selectable by a user to perform a transaction in a blockchain network. In some examples, the operation includes sending a request (e.g., an authentication request) to authenticate a transaction using a private key in response to a selectable item being selected by the user. In some examples, the request to authenticate the transaction is the transaction request 248 of FIGS. 2A-2D. The operation may include receiving an authenticated transaction request in response to the request to authenticate the transaction using the 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 a selectable item being selected, where the asset list may identify one or more digital assets stored in the blockchain network. In some examples, the operation includes obtaining a first application programming interface and a second application programming interface from a storage device associated with the application.
[0147] According to some aspects, a method (e.g., an operation) may include one or more of the following features (or any combination thereof). The method includes rendering, by an application, web content having items selectable by a user to perform a transaction in a blockchain network, and in response to receiving a selection of an item selectable by the user, sending a request to authenticate the transaction to a digital asset holder. The method may include rendering, by an application, web content having items selectable by a user to perform a transaction in a blockchain network, sending an asset request to a digital asset holder in response to receiving a selection of an item selectable by the user, and receiving, from the digital asset holder, an asset list identifying one or more digital assets stored in the blockchain network. The method may include rendering, by an application, an item selectable by a user to connect to a digital asset holder that manages a private key for accessing data of the blockchain network. The application programming interface is a first application programming interface, the authenticated transaction request is sent to the blockchain network via a second application programming interface, and the second application programming interface is configured to communicate between the application and the blockchain network. The method may include obtaining the first application programming interface and the second application programming interface from a storage device associated with the application. The method may include sending a JavaScript object notation message including the authenticated transaction request to a node gateway of 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.The digital asset holder may include a server application.
[0148] According to one aspect, the apparatus includes at least one processor and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to receive, via an application programming interface of a browser application, an authenticated transaction request for adding a transaction to a blockchain network from a digital asset holder that manages a private key for accessing data of the blockchain network, cause the browser application to send the authenticated transaction request to the blockchain network, cause the browser application to receive a transaction response including a transaction identifier of the transaction added to the blockchain network from the blockchain network, and cause a notification message including the transaction identifier to be sent to the digital asset holder via the application programming interface of the browser application.
[0149] According to some aspects, the apparatus may include one or more of the following features (or any combination thereof). When the executable instructions are executed by at least one processor, the at least one processor is caused by a browser application to render web content having items selectable by a user for performing a transaction in a blockchain network, and in response to receiving a selection of an item selectable by the user, send a request for authenticating the transaction to a digital asset holder configured to authenticate the transaction using a private key. The executable instructions, when executed by at least one processor, cause the at least one processor to render items selectable by the user and connect to a digital asset holder that manages a private key for accessing data in the blockchain network. The application programming interface is a first application programming interface, and the authenticated transaction request is sent to the blockchain network via a second application programming interface configured to enable communication between the browser application and the blockchain network. The executable instructions, when executed by at least one processor, cause the at least one processor to obtain the first application programming interface and the second application programming interface from a storage device associated with the browser application.
[0150] According to one aspect, a non-transitory computer-readable medium storing executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations, the operations including: rendering web content having selectable items for a user to perform transactions in a blockchain network; in response to receiving a selection of a selectable item by the user, receiving, by a browser application, an authenticated transaction request for adding a transaction to the blockchain network from a digital asset holder that manages a private key for accessing data of the blockchain network; sending, by the browser application, the authenticated transaction request to the blockchain network; receiving, by the browser application, a transaction response including a transaction identifier of a transaction added to the blockchain network from the blockchain network; and sending, by the browser application, a notification message including the transaction identifier to the digital asset holder.
[0151] According to some aspects, the operation may include one or more of the following features (or any combination thereof). The operation may include the browser application sending an asset request to the digital asset holder, the browser application receiving from the digital asset holder an asset list identifying a plurality of digital assets stored on the blockchain network, displaying a user interface object including the plurality of digital assets, and sending to the digital asset holder a request for authenticating a transaction in response to a selection of one of the plurality of digital assets. The operation may include the browser application rendering selectable items for the user to connect to a digital asset holder that manages a private key for accessing data on the blockchain network. The operation may include communicating between the browser application and the digital asset holder via a first application programming interface and communicating between the browser application and the blockchain network via a second application programming interface. The operation may include obtaining the first application programming interface and the second application programming interface from a storage device associated with the browser application.
[0152] Figures 10A and 10B show a system 1000 that uses digital data 1056 of a token 1054 stored in a blockchain network 1010 to customize a user interface 1058 of a browser application 1006a, according to one aspect. System 1000 can be an example of the systems described with reference to FIGS. 1-9 and can include any of the details described herein. In some examples, a user can use browser application 1006a to customize one or more aspects of a browser tab 1060 that uses digital data 1056. In some examples, system 1000 can customize (e.g., change) browser settings of browser application 1006a based on one or more tokens 1054 stored in blockchain network 1010 and associated with the user. In some examples, connecting a digital rights holder to browser application 1006a can adjust one or more browser settings of browser application 1006a.
[0153] Computing device 1026 executes browser application 1006a. Computing device 1026 can be any type of computing device that includes one or more processors (e.g., processor(s) 228 of FIGS. 2A-2D), one or more memory devices (e.g., memory device(s) 230 of FIGS. 2A-2D), a display (e.g., display 234 of FIGS. 2A-2D), and an operating system (e.g., operating system 232 of FIGS. 2A-2D) configured to execute (or assist in the execution of) 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] The browser application 1006a can be a web browser configured to access information on the Internet. In some examples, the browser application 1006a is an application separate from the operating system of the computing device 1026, and the browser application 1006a is installable on (and executable by) the operating system. In some examples, the browser application 1006a is the operating system of the device (or is included as part of the operating system of the device). The browser application 1006a can launch one or more browser tabs in the context of one or more browser windows of the display of the computing device 1026. In some examples, the browser application 1006a can 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 in blockchain network 1010. In some examples, the token 1054 stored in blockchain network 1010 includes information about token 1054. The token may include a file name, a caption, the current owner of the token, and / or the activity history of its transaction. In some examples, token 1054 includes digital data 1056. In some examples, token 1054 does not include digital data 1056. In some examples, token 1054 includes a storage location 1065 that identifies the location of digital data 1056. In some examples, storage location 1065 is a web resource (e.g., a Uniform Resource Locator (URL)) that points to the location of digital data 1056. In some examples, storage location 1065 includes a hash value for 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 utility, and early access for whitelists and drops.
[0156] The user obtains Token 1054 (e.g., from an online marketplace or by minting a new Token 1054), and "stores" Token 1054 in a digital asset holder, such as an application (or program) that stores and manages the user's private key, and can authenticate transactions in the blockchain network 1010. In some examples, the digital asset holder may be referred to as a cryptocurrency wallet. Examples of digital asset holders are described with reference to FIGS. 1-9 (e.g., digital asset holder 102, digital asset holder 202, extended function 302a, native application 402b, server application 502c, etc.). The digital asset holder may include any of the details described with reference to these figures.
[0157] Digital data 1056 can be encoded (e.g., minted) on blockchain network 1010, thereby generating 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 of games or applications, and early access for whitelists and drops. The digital asset holder uses a private key to authenticate blockchain transactions involving token 1054 (e.g., transfer, sell, purchase token 1054). In some examples, since blockchain network 1010 is public, token 1054 can be accessed using identifiers 1052 such as token location 1063 (e.g., NFT identifier) that identifies the location of a particular token 1054 on blockchain network 1010, and / or holder address 1061 of the digital asset holder (e.g., public address, wallet address). In some examples, identifier 1052 includes storage location 1065 that refers to the location of digital data 1056 of token 1054. In some examples, a particular token 1054 (or tokens 1054) can be identified by a collection identifier that identifies a collection of tokens 1054 (e.g., by a particular creator or creators).
[0158] Referring to FIG. 10A, digital data 1056 can be displayed as a background image of browser tab 1060 of browser application 1006a. For example, the user can adjust browser settings 1055 to change one or more display modes of browser application 1006a and / or browser tab 1060. In some examples, browser settings 1055 enable 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, such that the digital data 1056 of token 1054 is displayed as the background image of browser tab 1060.
[0159] Browser tab 1060 can 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 browser application 1006a as a request to render the browser tab. The new tab page can be customized by digital data 1056 of one or more tokens 1054 stored in blockchain network 1010. For example, the digital data 1056 of token 1054 can be displayed as a background image of the new tab page. In some examples, a portion of user interface 1058 of browser tab 1060 can have 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 digital data 1056 of token 1054 where search entry field 1053 is in the foreground and digital data 1056 is in the background. In some examples, each time the user launches a new browser tab 1060, browser tab 1060 displays digital data 1056 of a different token 1054.
[0160] Browser application 1006a may include or be connected to the user's digital asset holder, which identifies one or more tokens 1054. Browser tab 1060 can display, as a background image, digital data 1056 of the token 1054 identified by the user's digital asset holder. In some examples, each time the user launches a new browser tab 1060, a different token 1054 is selected for use as the background image (e.g., swapping out 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 browser tab 1060. The user may have an account associated with browser application 1006a, and the user may select a specific image to be used as profile image 1066. Profile image 1066 is displayed within the area of browser tab 1060. The user may adjust browser settings 1055 to identify a specific token 1054 to be used as profile image 1066. The account associated with browser application 1006a may be associated with other services such as an email application, a video conferencing application, a storage application, etc. Profile image 1066 having the digital data 1056 of token 1054 may also be displayed when identifying accounts of those other services.
[0162] In some examples, the new tab page rendered by browser tab 1060 includes one or more UI modules 1070. The UI module 1070 can be various UI objects displayed on the new tab page and can include controls or links to applications, web content, or application content from a particular application. In some examples, the UI module 1070 can provide content from a basic web application. For example, a weather module can provide weather-related information, a video sharing module can provide video selections, a social media module can provide information from a user's timeline, and so on. In some examples, at least one of the UI modules 1070 is configured to display digital data 1056 of one or more tokens 1054. In some examples, the UI module 1070 is configured to alternate (e.g., display sequentially or randomly) user 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 the user's digital asset holder identifies a first token and a second token, the UI module 1070 may display the digital data 1056 of the first token for a first predetermined period and the digital data 1056 of the second token for a second predetermined period. In some examples, the UI module 1070 can display the digital data 1056 of multiple tokens 1054 simultaneously.
[0163] In some examples, the browser application 1006a can customize the color scheme of the user interface 1058 of the browser application 1006a based on the color scheme associated with the digital data 1056 of the token 1054. For example, the user may be able to select a particular 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 can change the color scheme (or color tone) of one or more portions of the browser tab 1060 to correspond to the color scheme of the selected token 1054. The portion(s) of the browser tab 1060 can include a navigation panel (having browser navigation controls such as forward or back), a toolbar having controls for actions of the browser application 1106a (or controls for native applications), a menu, menu items, and / or an address bar that identifies the URL of the website. In some examples, the browser application 1006a can customize the theme (such as the color scheme) of the user interface 1058 to correspond to the theme (such as color scheme) associated with the digital data 1056 of the token 1054.
[0164] The browser application 1006a may obtain 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 and / or the digital data 1056 of one or more tokens 1054 in the blockchain network 1010 and / or the storage device(s) 1016. 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 the browser application 1006a retrieves the identifier 1052 from the memory device. In some examples, the browser application 1006a may obtain the identifier 1052 in response to the browser application 1006a connecting to a digital asset holder. In some examples, the digital asset holder is a third-party digital asset holder, and the browser application 1006a can connect to the third-party digital asset holder using any of the techniques described in FIGS. 1-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 may obtain the identifier 1052 from the digital asset holder. In some examples, the browser tab 1060 may render a UI object that allows the user to input the identifier 1052. In some examples, the browser application 1006a may obtain the identifier 1052 from web content and / or application content displayed on the computing device 1026. In some examples, the browser application 1006a may obtain the identifier 1052 in response to a user selection.
[0165] In some examples, the identifier 1052 includes the holder address 1061. The holder address 1061 can be a shared address (or public address) associated with a digital asset holder. In some examples, the holder address 1061 may be referred to as a wallet address. In some examples, the public address identifies a location 1045 in the blockchain network 1010 that stores the token 1054 associated with the digital asset holder. In some examples, the identifier 1052 includes a token location 1063 that identifies the location of a particular token 1054 in the blockchain network 1010. In some examples, the identifier 1052 includes a storage location 1065 that identifies the location of the digital data 1056 of the token 1054. In some examples, the storage location 1065 includes a resource locator. In some examples, the storage location 1065 includes a Uniform Resource Locator (URL). In some examples, the storage location 1065 is a hash value.
[0166] The digital data 1056 of the token 1054 can be stored in a location separate from the token 1054 of the blockchain network 1010. In some examples, the digital data 1056 is stored in one or more storage devices 1016. The token 1054 of the blockchain network 1010 can store a storage location 1065 that refers to the location of the digital data 1056 of the storage device(s) 1016. In some examples, the storage device(s) 1016 includes a server computer(s). In some examples, the storage device(s) 1016 includes a file system. In some examples, the storage device(s) 1016 includes another blockchain network. In some examples, the token 1054 stores the digital data 1056.
[0167] The browser application 1006a can obtain 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 can query the blockchain network 1010 using the holder address 1061 to identify whether a digital asset holder is associated with any token 1054. The holder address 1061 can be the address of the user's digital asset holder. In some examples, the holder address 1061 can be the address of the digital asset holder for an entity other than the user. The holder address 1061 can refer to the 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 can retrieve the digital data 1056 from the blockchain network 1010. If the digital data 1056 is stored in the storage device(s) 1016, the browser application 1006a can retrieve the storage location 1065 from any token 1054 associated with the digital asset holder. The browser application 1006a can use the storage location 1065 (e.g., URL, hash value) to retrieve the digital data 1056 from the storage device(s) 1016.
[0168] In some examples, the browser application 1006a can query the blockchain network 1010 using the token location 1063 to obtain digital data 1056. The 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 the 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 the storage device(s) 1016, the browser application 1006a can query the blockchain network 1010 to retrieve the storage location 1065 and use the storage location 1065 to retrieve the digital data 1056.
[0169] In some examples, the browser application 1006a can retrieve the digital data 1056 using the storage location 1065. For example, the storage location 1065 may be an address or locator that refers to the location of the digital data 1056 in the storage device(s) 1016, and the browser application 1006a can use the storage location 1065 to retrieve the digital data 1056.
[0170] FIG. 11 shows an example of a system 1100 having a browser application 1106a connected to a digital asset holder 1102 according to one aspect. System 1100 can be an example of any of the systems 1000 of FIGS. 10A and 10B and / or the systems described with reference to FIGS. 1-9, and can include any of the details described with reference to those figures. In some examples, browser application 1106a can be connected to digital asset holder 1102, and one or more aspects of the browser tabs of browser application 1106a (e.g., browser tabs 1060 of FIGS. 10A and 10B) are customized from tokens associated with digital asset holder 1102 (e.g., tokens 1054 of FIGS. 10A and 10B). In some examples, digital asset holder 1102 is a third-party digital asset holder, and browser application 1106a can be connected to digital asset holder 1102 according to any of the techniques described with reference to FIGS. 1-9.
[0171] Digital asset holder 1102 includes a private key 1104 used by digital asset holder 1102 to authenticate transactions in a blockchain network. Examples of digital asset holders 1102 are described with reference to FIGS. 1-9 (e.g., digital asset holder 102, digital asset holder 202, extension function 302a, native application 402b, server application 502c, etc.). Digital asset holder 1102 can 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 of FIGS. 2A-2D) that enable the browser application 1106a and the digital asset holder 1102 to communicate. In some examples, the identifier 1152 may include a holder address 1161 (e.g., a shared address / 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 that specify the location of the digital data of each token. In some examples, the digital asset holder 1102 stores the holder address 1161, any token locations 1163 for tokens associated with the digital asset holder 1102, and / or any storage locations 1165 for any tokens associated with the digital asset holder 1102. In some examples, the digital asset holder 1102 does not store the storage locations 1165.
[0173] In some examples, the browser application 1106a may receive an identifier 1152 from the digital asset holder 1102 and may use the identifier 1152 to retrieve the digital data of each token identified by the digital asset holder 1102. In some embodiments, in response to a new browser tab being opened, the digital data is displayed in the browser tab as a background image. The user opening a new browser tab can be interpreted by the browser application 1106a as a request to render the browser tab. In some examples, the digital data is displayed in the browser tab as a profile image. In some examples, if the digital asset holder 1102 is associated with a plurality of tokens, the browser application 1106a may switch between different tokens (when other browser tabs are open). In some examples, the user can set browser settings (e.g., the browser settings 1055 of FIGS. 10A and 10B) to select a specific token from the digital asset holder 1102. In some examples, the browser application can render UI objects on the display of the device that displays the digital data for each token associated with the digital asset holder 1102, allowing the user to select one of the tokens and use it as the background image and / or profile image.
[0174] In some examples, the user can set browser settings to swap tokens and use them as the background image (and / or photo image). For example, the digital asset holder 1102 may identify a first token, a second token, and a third token. In some examples, when the first browser tab is launched, the first browser tab may display the digital data of the first token as the background image. When the second browser tab is launched, the second browser tab may display the digital data of the second token as the background image. When the third browser tab is launched, the third browser tab may display the digital data of the third token as the 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 swapping continues. In some examples, the browser application 1106a may randomly select one of the tokens to be used as the background image. In some examples, when the user obtains a new token in the digital asset holder 1102 (e.g., creates or purchases a new one), the browser application 1106a can automatically add the digital data of the new token to the sequence of tokens displayed as the background image of the browser tab. Regarding the profile image, in some examples, the browser application 1106a can automatically switch to a different token after a predetermined period (e.g., automatically switch the profile image after 10 days, 20 days, etc.).
[0176] FIG. 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 the digital asset holder 1202 have been described with reference to FIGS. 1-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 in the blockchain network. The browser application 1206a may operate in any of the systems described with reference to FIGS. 1-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., the browser tab 1060 of FIGS. 10A and 10B) are customized from the tokens associated with the digital asset holder 1202 (e.g., the tokens 1054 of FIGS. 10A and 10B). In some examples, since the digital asset holder 1202 is included as part of the browser application 1206a, the browser application 1206a may not need to establish a connection (e.g., an API connection) to the digital asset holder 1202. In some examples, the browser application 1206a can extract a portion of all the information from the digital asset holder 1202. In some examples, the browser application 1206a can obtain the identifier 1252 from the digital asset holder 1202. In some examples, the identifier 1252 is stored in a memory device associated with the browser application 1206a. In some examples, the identifier 1252 can include the holder address 1261 (e.g., the shared address / public address of the digital asset holder 1202). In some examples, the identifier 1252 can include one or more token locations 1263 for the tokens associated with the digital asset holder 1202. In some examples, the identifier 1252 can include one or more storage locations 1265 that specify the location of the digital data of 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 of each token identified by the digital asset holder 1202. In some embodiments, in response to a new browser tab being opened, the digital data is displayed in the browser tab as a background image. The user opening a new browser tab can be interpreted by the browser application 1206a as a request to render the browser tab. In some examples, the digital data is displayed in the browser tab as a profile image. In some examples, if the digital asset holder 1202 is associated with multiple tokens, the browser application 1206a can switch between different tokens (when other browser tabs are open). In some examples, the user can set browser settings (e.g., the browser settings 1055 of FIGS. 10A and 10B) to select a specific token from the digital asset holder 1202. In some examples, the browser application can render a UI object that displays the digital data for each token associated with the digital asset holder 1202, allowing the user to select one of the tokens and use it as the background image and / or profile image.
[0179] In some examples, the user can set browser settings to swap tokens and use them as background images (and / or photo images). For example, the digital asset holder 1202 may identify a first token, a second token, and a third token. In some examples, when the first browser tab is launched, the first browser tab may display the digital data of the first token as the background image. When the second browser tab is launched, the second browser tab may display the digital data of the second token as the background image. When the third browser tab is launched, the third browser tab may display the digital data of the third token as the background image. In some embodiments, when the fourth browser tab is launched, the fourth browser tab may display the digital data of the first token as the background image. In some examples, the browser application 1206a may randomly select one of the tokens to be used as the background image. Regarding the profile image, in some examples, the browser application 1206a may automatically switch to a different token after a predetermined period (e.g., automatically switch the profile image after 10 days, 20 days, etc.).
[0180] FIG. 13 shows an example of a browser application 1306a according to another aspect. The browser application 1306a may render a UI object 1364 in a user interface 1358 of the browser application 1306a, and the UI object 1364 enables a 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, a 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 a user of the browser application 1306a. In some examples, the shared address relates to a digital asset holder of a non-user (e.g., a shared address of another user). In some examples, the identifier 1352 may include a token location for a token stored on a blockchain network. In some examples, a user may input a token location for a token owned by the user. In some examples, a user may input any token location (e.g., for a token not owned by the user). In some examples, the identifier 1352 includes a storage location that specifies a location of digital data of each token. In some examples, a user may input a storage location for a token owned by the user. In some examples, a user may input any storage location (e.g., for a token not owned by the user). In some examples, the identifier 1352 includes a collection identifier that identifies a location of a token and / or digital data of a token associated with a particular collection of one creator, multiple creators, and / or part of an NFT project.
[0181] FIG. 14 shows an example of a browser application 1406a configured to customize browser tab 1460 using tokens from a blockchain network. For example, browser application 1406a may select different tokens for use as background image 1468 when a new browser tab 1460 is opened. The user opening a new browser tab can be interpreted by browser application 1406a as a request to render browser tab 1460. For example, initially, browser application 1406a may render browser tab 1460-1, and digital data 1456-1 of the first token is displayed as background image 1468 of browser tab 1460-1. The second time, browser application 1406a may render browser tab 1460-2, and digital data 1456-2 of the second token is displayed as background image 1468 of browser tab 1460-2. The third time, browser application 1406a may render browser tab 1460-3, and digital data 1456-3 of the third token is displayed as background image 1468 of browser tab 1460-3.
[0182] FIG. 15 shows an example of a browser application 1506a configured to customize a user interface 1558 (e.g., a browser tab) using tokens from a blockchain network. The browser application 1506a may render digital data 1556 of a token as a profile image 1566 displayed in the user interface 1558 of the browser application 1506a. A user may adjust browser settings (e.g., the browser settings 1055 of FIGS. 10A and 10B) to identify a particular token used as the profile image 1066. An account associated with the browser application 1506a may be associated with other services such as an email application, a video conferencing application, a storage application, etc. A profile image 1566 having digital data 1556 of a token may also be displayed when identifying accounts of those other services.
[0183] FIG. 16 shows an example of a browser application 1606a configured to customize a user interface 1658 using tokens from a blockchain network. In some examples, the user interface 1658 displays a UI module 1670. In some examples, the browser tab displays a UI module 1670. In some examples, the browser tab renders a new browser page, and the new browser page includes a UI module 1670. In some examples, the new browser page also includes an entry field for entering terms to search the Internet. In some examples, the UI module 1670 is a computer object rendered in the user interface 1658, and the computer object can include input control(s), information container(s), and / or container(s). The UI module 1670 can display digital data of one or more tokens. Parameters regarding when and / or how the tokens are displayed can be customizable by the user via one or more browser settings.
[0184] In some examples, the UI module 1670 is configured to swap (e.g., sequentially display) the user's tokens from any digital asset holder connected to the browser application 1606a (or a part thereof). In some examples, the browser application 1606a can receive an identifier (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 that identifier. In some examples, the user can adjust browser settings (e.g., the browser settings 1055 of FIGS. 10A and 10B) to add a first UI module related to 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., the browser settings 1055 of FIGS. 10A and 10B) to add a second UI module related to tokens associated with a second digital asset holder or a second collection identifier, and the second UI module can display the digital data of each token (e.g., sequentially or simultaneously).
[0185] In some examples, when the 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.), may display the digital data 1656-2 of the second token for a second predetermined period, and may display the digital data 1656-3 of the third token for a third predetermined period. In some examples, the display time of a specific token can be adjustable by the user via browser settings. In some examples, the UI module 1070 can simultaneously display the digital data 1656-1, the digital data 1656-2, and the digital data 1656-3 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 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 a network to receive the recommendations 1776. In some examples, the recommendation engine 1774 is part of the browser application 1706a running on the user's device (e.g., the computing device 1026 of FIGS. 10A and 10B).
[0187] The recommendation engine 1774 may obtain metadata 1772 regarding 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 obtain metadata 1772 regarding tokens stored in the blockchain network. In some examples, the recommendation engine 1774 obtains metadata 1772 regarding tokens identified by a digital asset holder(s) connected to the browser application 1706a (or a part thereof).
[0188] Metadata 1772 may include information about the token(s). In some examples, metadata 1772 includes 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, etc. In some examples, metadata 1772 is stored in a blockchain network (e.g., blockchain network 1010 of FIGS. 10A and 10B). The recommendation engine 1774 may query the blockchain network to obtain metadata 1772. In some examples, metadata 1772 is stored in a storage device(s) (e.g., a server, a file system, another blockchain network) (e.g., storage device(s) 1016). The recommendation engine 1774 may query the storage device(s) to obtain metadata 1772. In some examples, metadata 1772 is included as part of digital data (e.g., digital data 1056 of FIGS. 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., a blockchain network, a server, a file system, and / or another blockchain network), and the recommendation engine 1774 may obtain a portion of metadata 1772 from one location and a portion of metadata 1772 from another location.
[0189] The recommended engine 1774 generates a recommendation 1776 based on the metadata 1772 and renders information identifying the recommendation 1776 in the user interface 1758 of the browser application 1706a. In some examples, the recommendation 1776 includes web content related to the recommendation 1776 or a link to web content. In some examples, the recommendation 1776 includes content identified as being similar to (or topically related to) the metadata 1772. In some examples, the recommendation 1776 can identify one or more tokens (e.g., NFTs) and / or NFT projects from the same creator and / or recommend NFTs and / or NFT projects of similar size, price, etc.
[0190] In some examples, the recommended engine 1774 includes one or more prediction models that can predict a similarity value between one or more tokens rendered by the browser application 1706a and web content indexed and searchable by the search engine of the browser application 1706a. In some examples, the prediction model(s) can include a neural network(s). If the similarity value is above a threshold, the recommended engine 1774 can identify the web content 1778 as a recommendation 1776. In some examples, the recommendation 1776 can be displayed in a browser tab of the browser application 1706a. In some examples, the recommendation 1776 can be displayed in a UI module (e.g., UI module 1070 of FIGS. 10A and 10B) of a new tab page rendered by the browser tab.
[0191] FIG. 18 is a flowchart 1800 representing an exemplary operation of customizing a browser tab using blockchain data according to one aspect. Flowchart 1800 is described with respect to the system 1000 of FIGS. 10A and 10B, but flowchart 1800 may be applicable to any of the embodiments described herein. The flowchart 1800 of FIG. 18 shows operations in sequence, but this is merely an example, and it will be understood that additional or alternative operations may be included. Further, the operations and related operations of FIG. 18 may be executed in an order different from that shown, or may be executed in parallel or in an overlapping manner.
[0192] Operation 1802 includes obtaining, by browser application 1006a, an identifier 1052 associated with a token 1054 stored in blockchain network 1010. In some examples, browser application 1006a obtains identifier 1052 from a digital asset holder (e.g., digital asset holder 1102 of FIG. 11, digital asset holder 1202 of FIG. 12). In some examples, browser application 1006a is configured to connect to a digital asset holder using the techniques described in FIGS. 1-9. In some examples, browser application 1006a obtains identifier 1052 when browser application 1006a is connected to a digital asset holder. In some examples, browser application 1006a obtains identifier 1052 from a user via a UI object rendered by browser application 1006a. In some examples, browser application 1006a obtains identifier 1052 from (or is selected from) web content rendered by 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 identifying a collection of tokens stored in blockchain network 1010.
[0193] Operation 1804 includes the browser application 1006a retrieving the digital data 1056 of the token 1054 using the identifier 1052. The browser application 1006a may obtain 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 query the blockchain network 1010 using the holder address 1061 to identify whether a digital asset holder is associated with any of the tokens 1054. The holder address 1061 may be the address of the user's digital asset holder. In some examples, the holder address 1061 may be the address of the digital asset holder for an entity other than the user. The holder address 1061 may refer to the location 1045 storing the tokens 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 the digital data 1056 is stored in the storage device(s) 1016, the browser application 1006a may retrieve the storage location 1065 from any of the tokens 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.
[0194] In some examples, the browser application 1006a can query the blockchain network 1010 using the token location 1063 to obtain digital data 1056. The 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 the 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 the storage device(s) 1016, the browser application 1006a can query the blockchain network 1010 to retrieve the storage location 1065 and use the storage location 1065 to retrieve the digital data 1056.
[0195] In some examples, the browser application 1006a can retrieve the digital data 1056 using the storage location 1065. For example, the storage location 1065 may be an address or locator that refers to the location of the digital data 1056 in the storage device(s) 1016, and the browser application 1006a can use the storage location 1065 to retrieve the digital data 1056.
[0196] Operation 1806 includes customizing the user interface 1058 of the browser application 1006a using the digital data 1056 of the token 1054. In some examples, operation 1806 includes updating the browser settings 1055 of the browser application 1006a such that the display mode of the user interface 1058 of the browser application 1006a is changed. In some examples, operation 1806 includes rendering the digital data 1056 of the 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 the token 1054 as the user's profile image 1066 in the user interface 1058 of the browser application 1006a. In some examples, referring to FIG. 17, the operation includes obtaining metadata 1772 regarding 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 FIGS. 10A and 10B, the operation includes identifying a plurality of tokens 1054 stored in the blockchain network 1010 based on the identifier 1052, and rendering a UI module 1070 that displays the digital data 1056 associated with each of the plurality of tokens 1054 for a predetermined period in the user interface 1058 of the browser application 1006a.
[0197] According to some aspects, a method (e.g., an operation) may include one or more of the following features (or any combination thereof). Customizing a user interface of a browser application includes updating browser settings of the browser application such that a display mode of the user interface of the browser application is changed. Customizing a user interface of a browser application includes rendering digital data of a token as a background image in the user interface of the browser application. Customizing a user interface of a browser application includes rendering digital data as a user's profile image in the user interface of the browser application. The token is a first token, the digital data is 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 including the first digital data associated with the first token, receiving a request to render a second browser tab of the browser application, and rendering the second browser tab with a background image including second digital data associated with a second token. The method may include obtaining metadata regarding a token, generating a recommendation based on the metadata, and rendering information identifying the recommendation in the user interface of the browser application. The method may include identifying a plurality of tokens stored in a blockchain network based on an identifier, and rendering a user interface module that displays digital data associated with one of the plurality of tokens in the user interface of the browser application for a predetermined period of time. The identifier includes a shared address of a digital asset holder. The method may include receiving the identifier from a digital asset holder that stores a private key for authenticating transactions in the blockchain network.An identifier is received via an application programming interface of a browser application. The method may include rendering a user interface object to receive the identifier.
[0198] According to one aspect, the apparatus includes at least one processor and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to connect a browser application with a private key for enabling a transaction in a blockchain network and a digital asset holder for identifying a token stored in the blockchain network, cause the browser application to retrieve digital data of the token, and use the digital data of the token to customize a user interface of the browser application.
[0199] According to some aspects, the apparatus may include one or more features (or any combination thereof). When the executable instructions are executed by at least one processor, the at least one processor is caused to update the browser settings of the browser application so that the display mode of the user interface of the browser application is changed. When the executable instructions are executed by at least one processor, the at least one processor is caused to render the digital data of the token as a background image in the user interface of the browser application. When the executable instructions are executed by at least one processor, the at least one processor is caused to render the digital data as the user's profile image in the user interface of the browser application. The token is a first token, the digital data is first digital data, and is a digital asset holder that identifies a second token stored in the blockchain network. When the executable instructions are executed by at least one processor, the at least one processor is caused to receive a request for rendering a first browser tab of the browser application, and render the first browser tab together with a background image including the first digital data associated with the first token, and receive a request for rendering a second browser tab of the browser application, and render the second browser tab together with a background image including the second digital data associated with the second token. When the executable instructions are executed by at least one processor, the at least one processor is caused to obtain metadata regarding the token, generate a recommendation including 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 when the executable instructions are executed by at least one processor, the at least one processor is caused to render a user interface module that, in the user interface of a browser application, displays digital data associated with the first token for a first predetermined period and displays 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 aspect, a non-transitory computer-readable medium storing executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations including obtaining, by a browser application, an identifier associated with a token stored in a blockchain network, retrieving, by the browser application, digital data of the token using the identifier, and customizing, using the digital data of the token, a user interface of the browser application.
[0201] According to some aspects, the operation may include one or more of the following features (or any combination thereof). The operation may include updating the browser settings of the browser application such that the display mode of the user interface of the browser application is changed. The operation may include rendering digital data of a token as a background image in the user interface of the browser application. The operation may include rendering digital data as the user's profile image in the user interface of the browser application. The token is a first token, the digital data is 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 including the first digital data associated with the first token, receiving a request to render a second browser tab of the browser application, and rendering the second browser tab with a background image including the second digital data associated with the second token. The operation may include obtaining metadata regarding the token, generating a recommendation based on the metadata, and rendering information identifying the recommendation in the user interface of the browser application. The operation may include identifying a plurality of tokens stored in the blockchain network based on an identifier, and rendering a user interface module that displays the digital data associated with one of the plurality of tokens in the user interface of the browser application for a predetermined period. The identifier includes a shared address of the digital asset holder. The operation may include receiving the identifier from a digital asset holder that stores a private key for authenticating transactions in the blockchain network. The digital asset holder includes an extension to the 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 - 19D illustrate a system 1900 for managing inter - ledger transactions involving one or more blockchain networks 1910, according to one aspect. In some examples, system 1900 includes a single blockchain network 1910. In some examples, system 1900 includes two or more blockchain networks 1910. System 1900 may enable an inter - ledger transfer of digital assets from a user 1901 to a requesting party 1990. An inter - ledger transfer may refer to the transfer of digital assets from one type of ledger (e.g., Ethereum) to another type of ledger (e.g., Bitcoin), and may be on the same blockchain network 1910 or a different blockchain network 1910. 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., either blockchain network 1910 - 1 or blockchain network 1910 - 2, or both blockchain network 1910 - 1 and blockchain network 1910 - 2). System 1900 may be an example of the systems described with reference to FIGS. 1 - 18 and may include any of the details described with reference to those figures.
[0203] Each type of digital asset may represent a different settlement network, and each type of digital asset may be stored on the same blockchain network 1910 or a different blockchain network 1910. Digital assets may include fungible tokens (e.g., cryptocurrencies) stored on a 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 FIG. 19A, digital asset A may be stored on blockchain network 1910-1, and digital asset B may be stored on blockchain network 1910-2. In some examples, as shown in FIG. 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 a certain type of fungible token (e.g., Ethereum), and digital asset B may represent another type of fungible token (e.g., Bitcoin). Although Ethereum and Bitcoin are used as examples of different types of digital assets for ease of explanation, digital assets may represent any type of digital asset that can be stored on blockchain network 1910 as a fungible token.
[0204] The computing device 1926 can be any type of computing device that includes one or more processors (e.g., the processor(s) 228 of FIGS. 2A-2D), one or more memory devices (e.g., the memory device(s) 230 of FIGS. 2A-2D), a display 1934, and an operating system (e.g., the operating system 232 of FIGS. 2A-2D) configured to execute (or assist in the execution of) 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] The user agent 1980 can be stored (and executed) on a computing device 1926 associated with the user 1901. In some examples, the user agent 1980 is part of (or integrated into) a browser application. In some examples, the browser application can be configured to perform any (or some) of the operations described with reference to the user agent 1980. The browser application can be a web browser configured to access information on the Internet. In some examples, the browser application is an application separate from the operating system of the computing device 1926, and the browser application can be installable on (and executable by) the operating system. In some examples, the browser application is the operating system of the device (or is included as part of the operating system of the device). The browser application can launch one or more browser tabs in the context of one or more browser windows on the display of the computing device 1926. In some examples, the browser application can launch one or more browser tabs without reference to a browser window. In some examples, the user agent 1980 is an extension to a web application or browser application. In some examples, the user agent 1980 is part of (or integrated into) a non-browser application, such as a native application installed on the operating system of the device. In some examples, the user agent 1980 is part of (or integrated into) the operating system of the computing device 1926.
[0206] User agent 1980 can enable an inter-ledger transaction for transferring digital assets from user 1901 to request party 1990 in a way that reduces the amount of computer complexity (and thereby reduces the amount of computing resources) and implements inter-ledger transactions with different ledgers in one or more blockchain networks 1910. For example, to enable an inter-ledger transaction, user agent 1980 can 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. Further, some or all of the operations of user agent 1980 can operate in one or more background operations with minimal input from user 1901 without interrupting the transaction flow of user 1901 as the sender (and thereby without the need to install one or more additional applications).
[0207] User agent 1980 can 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 selectable by a user to obtain an item. In some examples, in response to receiving a selection of an element selectable by the user, user agent 1980 is configured to receive transaction information 1975. In some examples, user agent 1980 receives transaction information 1975 via an application programming interface (API) that enables user agent 1980 and website 1992 to communicate with each other. When user agent 1980 is incorporated into a browser application, the browser application and website 1992 may communicate with each other via one or more APIs defined in the browser application and / or website 1992. When 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 or more APIs defined in the operating system and / or website 1992.
[0209] In some examples, the user agent 1980 may receive transaction information 1975 from the application 1994. In some examples, the application 1994 is an application running on the computing device 1926. The application 1994 may display content including items selectable by the user to obtain an item, and in response to receiving a selection of an item selectable by the user, the user agent 1980 is configured to receive the transaction information 1975. In some examples, the user agent 1980 receives the transaction information 1975 from the application 1994 via one or more application programming interfaces (APIs) defined in the user agent 1980 and / or the application 1994, enabling the user agent 1980 and the application 1994 to communicate with each other. In some examples, the user agent 1980 receives the transaction information 1975 from the application 1994 via an inter-process communication (IPC) protocol that enables the user agent 1980 and the application 1994 to communicate with each other using the operating system.
[0210] The user agent 1980 may receive the transaction information 1975 via a uniform protocol that reduces the complexity of facilitating 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, the user agent 1980 may receive the 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, the user agent 1980 may receive the 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 the web platform and the mobile platform.
[0211] Transaction information 1975 may include a digital asset type 1909a, a transaction amount 1977, and / or a shared address 1905b of a digital asset holder 1902b associated with a requesting party 1990. In some examples, the shared address 1905b is an identifier (e.g., a public identifier) of the digital asset holder 1902b of the requesting party 1990. The digital asset type 1909a includes information indicating the type of digital asset requested by the requesting party 1990. In the example of FIG. 19A, the digital asset type 1909a is digital asset B (e.g., Ethereum). In this example, for the item selected by user 1901, the requesting party 1990 requests to receive digital asset B of the transaction amount 1977 at the shared address 1905b.
[0212] Referring to FIG. 19C, in response to receiving the transaction information 1975, the user agent 1980 may cause an interface 1936 to be provided (e.g., rendered) on a display 1934 of a computing device 1926. The interface 1936 may display an asset list 1944 that identifies digital assets (and the types of digital assets) associated with the digital asset holder 1902a of the user 1901.
[0213] The digital asset holder 1902a can be any example of the digital asset holders described with reference to FIGS. 1 to 18. In some examples, the digital asset holder 1902a is a native (or embedded) asset holder that is also part of a browser application that the user agent 1980 also stores. 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 FIGS. 1 to 9. The digital asset holder 1902a can be an application or program that stores a private key 1904 for enabling transactions in the blockchain network(s) 1910. Also, the digital asset holder 1902a includes a shared address 1905a that can identify the location of an account on the blockchain network 1910. In some examples, the digital asset holder 1902a can access or include asset information 1907 regarding the user's digital assets stored in the blockchain network 1910. For example, the digital asset holder 1902a can identify one or more types of digital assets owned by the user 1901 and stored in the blockchain network 1910. In the example of FIG. 19A, the digital asset holder 1902a is associated with digital asset A (e.g., Bitcoin) stored in the blockchain network 1910-1 or the 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, in the case of 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 of interface 1936. In some examples, in the case of 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 of interface 1936.
[0215] Referring to FIG. 19C, interface 1936 may also display exchange rate information 1979 regarding an exchange rate for converting one or more of the digital assets owned by user 1901 into the digital asset type 1909a requested by requesting party 1990. For example, user 1901 owns digital asset A stored in blockchain network 1910-1 (or blockchain network 1910-2), but requesting party 1990 requests to receive digital asset B. Exchange rate information 1979 may indicate an exchange rate for converting digital asset A into digital asset B using a particular digital asset exchange 1982. In some examples, exchange rate information 1979 may indicate the exchange rates of multiple digital asset exchanges 1982 for converting digital asset A into digital asset B. In some examples, exchange rate information 1979 may include a transaction fee for converting digital asset A into digital asset B. In some examples, exchange rate information 1979 may identify a particular digital asset exchange 1982, and in some examples, may identify information regarding a particular digital asset exchange 1982 (including a selectable web link). It should be noted that user 1901 may also own other digital assets, and exchange rate information 1979 may provide the exchange rate(s) for converting the other digital assets into the requested digital asset(s).
[0216] To obtain exchange rate information 1979, user agent 1980 may communicate with one or more digital asset exchanges 1982. Digital asset exchange 1982 may be an application capable of performing one or more ledger conversion operations 1984 for converting one type of digital asset (e.g., Ethereum) into another type of digital asset (e.g., Bitcoin). In some examples, digital asset exchange 1982 is executed in blockchain network 1910. In some examples, digital asset exchange 1982 is not executed in blockchain network 1910 (e.g., a server computer not using blockchain technology).
[0217] In some examples, the digital asset exchange 1982 is an application that runs on one or more blockchain networks 1910, such as blockchain network 1910-1, blockchain network 1910-2, or different blockchain networks 1910. In some examples, if digital asset A and digital asset B are stored on blockchain network 1910-1, the digital asset exchange 1982 can execute as a smart contract on blockchain network 1910-1 to convert digital asset A into digital asset B (and vice versa). In some examples, the digital asset exchange 1982 includes a decentralized exchange (DEX). The DEX is an application that runs on one or more blockchain networks 1910, and the code is embodied as a smart contract on the blockchain network(s) 1910. In some examples, the DEX uses a smart contract on the blockchain network(s) 1910 to enable peer-to-peer transactions to be conducted securely online without the need for an intermediary (e.g., a central authority). As part of the smart contract(s), the DEX calculates an exchange rate based on the size of the liquidity pool and converts the provided cryptocurrency into the requested cryptocurrency. For example, when converting 100 bitcoins into Ethereum, the DEX is assumed to receive 100 bitcoins from the digital asset holder 1902a of the user of the bitcoin ledger and deposit the corresponding Ethereum into the digital asset holder 1902a of the user of the Ethereum ledger.
[0218] In some examples, the 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, digital asset B may be stored on blockchain network 1910-2, and the centralized exchange may communicate with blockchain network 1910-1 and blockchain network 1910-2 to convert a user's digital assets across different blockchain networks 1910.
[0219] The user agent 1980 may obtain asset information 1907 (e.g., the type / amount of each digital asset), the digital asset type 1909a identified by the transaction information 1975, and in some examples, the transaction amount 1977 from the digital asset holder 1902a, query one or more digital asset exchanges 1982, and obtain exchange rate information 1979. In some examples, the user agent 1980 may communicate with the digital asset exchange(s) 1982 using one or more APIs defined in the user agent 1980. In some examples, the user agent 1980 may send and receive JSON messages to communicate with the blockchain network(s) 1910 that execute the digital asset exchange(s) 1982 and receive exchange rate information 1979.
[0220] In some examples, the user agent 1980 includes an exchange selector 1986. The exchange selector 1986 can select a digital asset exchange 1982 from a plurality of digital asset exchanges 1982 based on exchange rate information 1979 associated with each digital asset exchange 1982 of the plurality of digital asset exchanges 1982. For example, the exchange rate information 1979 can indicate an exchange rate for converting digital asset A to digital asset B. In some examples, the exchange selector 1986 can select a particular digital asset exchange 1982 to convert one type of digital asset to another type of digital asset based on selection criteria. The selection criteria can include selecting a digital asset exchange 1982 having the best conversion rate, the lowest transaction fee, and / or a combination of both. In some examples, the conversion rate of the selected digital asset exchange 1982 can be provided for each digital asset type of the asset list 1944.
[0221] After the user reviews the asset list 1944 and the exchange rate information 1979, the user agent 1980 can receive a selection of a digital asset type 1909b via the interface 1936. In the example of FIGS. 19A-19D, the user is selecting digital asset A stored in the blockchain network 1910-1.
[0222] In some examples, instead of providing an interface 1936 that allows the user 1901 to select a particular digital asset and convert it to the requested digital asset, the user agent 1980 can automatically select a particular type of digital asset based on the stored user preferences. For example, the user agent 1980 can store one or more user preferences, such as a preferred digital asset type to use when the transaction information 1975 indicates a particular digital asset type.
[0223] In response to obtaining the digital asset type 1909b, the user agent 1980 communicates with the digital asset exchange 1982 so that the digital asset exchange 1982 can perform the ledger conversion operation(s) 1984 to enable the user's digital assets to be converted from the digital asset type 1909b (e.g., digital asset A) to the 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. The conversion request 1971 is configured to cause the digital asset exchange 1982 to convert the transaction amount 1977 of the user's digital assets of the digital asset holder 1902a from the digital asset type 1909b (e.g., digital asset A) to the digital asset type 1909a (e.g., digital asset B). The conversion request 1971 may identify the shared address 1905a of the digital asset holder 1902a, the transaction amount 1977, the digital asset type 1909a, and the digital asset type 1909b.
[0225] If digital asset A and digital asset B are stored in different ledgers on the same blockchain network 1910-1 (as shown in FIG. 19B), the digital asset exchange 1982 may communicate with the blockchain network 1910-1 (or blockchain network 1910-2) to record a transaction that subtracts the transaction amount 1977 from the user's digital assets (e.g., associated with digital asset holder 1902a), and record a transaction that adds the transaction amount 1977 associated with digital asset holder 1902b. In some examples, if digital asset A and digital asset B are stored in different blockchain networks (as shown in FIG. 19A), the digital asset exchange 1982 may communicate with the blockchain network 1910-1 to record a transaction that subtracts the transaction amount 1977 from the user's digital assets stored in the blockchain network 1910-1, and communicate with the blockchain network 1910-2 to record a transaction that adds the transaction amount 1977 to the blockchain network 1910-2. In response to the digital asset exchange 1982 performing the ledger conversion operation(s) 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 execute a smart contract or an encryption operation using the private key 1904 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., the API(s) 238 of FIGS. 2A-2D). In some examples, the user agent 1980 sends the conversion response 1973 to the digital asset holder 1902a. In some examples, the conversion request 1971 and the conversion response 1973 are communicated between the user agent 1980 and the digital asset exchange 1982 using JavaScript Object Notation (JSON) messages 1988.
[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 the user 1901 has a digital asset B that has been converted from the digital asset A (having at least the transaction amount 1977). In response to the conversion response 1973, the user agent 1980 may communicate with the blockchain network 1910 (wherein either the blockchain network 1910-1 or the blockchain network 1910-2 stores the digital asset B) to transfer the transaction amount 1977 of the digital asset B from the digital asset holder 1902a (associated with the user 1901) to the digital asset holder 1902b (associated with the request party 1990). In some examples, the user agent 1980 may communicate with the blockchain network 1910 by sending and receiving the message 1921. In some examples, the message 1921 includes a JSON message. In some examples, the user agent 1980 may communicate with the blockchain network 1910 via one or more APIs (e.g., the API(s) 240 of FIGS. 2A-2D).
[0228] User agent 1980 may send transaction request 1946 to blockchain network 1910-2. FIG. 19A shows user agent 1980 sending transaction request 1946 to blockchain network 1910-2, but note that user agent 1980 may send transaction request 1946 to blockchain network 1910-1 (thus, in some examples, blockchain network 1910-1 and blockchain network 1910-2 may be used interchangeably). If digital asset A and digital asset 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 (e.g., node gateway 214 in FIGS. 2A-2D). By transaction request 1946, blockchain network 1910-2 may 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 the blockchain network 1910-2 associated with digital asset holder 1902a and subtracts transaction amount 1977 from the user's digital asset B. In some examples, blockchain network 1910-2 adds a transaction to the blockchain network 1910-2 associated with digital asset holder 1902b and adds transaction amount 1977 to the request party's digital asset B.
[0230] Transaction request 1946 may include details regarding the transaction(s) created in blockchain network 1910-2. Transaction request 1946 may include shared address 1905a (e.g., the sender), shared address 1905b (e.g., the recipient), and transaction amount 1977. In some examples, transaction request 1946 includes information identifying the type of digital asset (e.g., digital asset B).
[0231] In some examples, the transaction request 1946 may include authentication information indicating that the transaction is authenticated (e.g., signed). For example, before the transaction request 1946 is sent to the blockchain network 1910-2, the user agent 1980 may communicate with the digital asset holder 1902a to cause the digital asset holder 1902a to authenticate the transaction request 1946 using the private key 1904. In some examples, the user agent 1980 may communicate with the digital asset holder 1902a via one or more APIs (e.g., the API(s) 238 of FIGS. 2A-2D). For example, the digital asset holder 1902a may use the private key 1904 to execute a smart contract or an encryption operation to authenticate (or sign) the transaction request 1946. The digital asset holder 1902a may return the authenticated transaction request 1946, and the 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 include a 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 the 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 the transaction response 1922 are, respectively, examples of the authenticated transaction request 246 and the transaction response 222 of FIGS. 2A-2D. In some examples, in response to the transaction response 1922, the user agent 1980 may send a notification (e.g., the notification 252 of FIGS. 2A-2D) to the digital asset holder 1902a. In some examples, the user agent 1980 may send the notification to a website 1992 or an application 1994 associated with the requesting party 1990.
[0233] In some examples, the user agent 1980 may determine to use multiple digital asset exchanges 1982 to enable conversion from one type of digital asset to another type of digital asset. For example, if digital asset A and digital asset B are not major (e.g., widely used) cryptocurrencies, the 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 FIG. 19D, the user agent 1980 may use two or more digital asset exchanges 1982 to perform the conversion of the transaction amount 1977 from digital asset A to digital asset B.
[0234] User agent 1980 may determine that it cannot convert from digital asset A to digital asset B at a single digital asset exchange 1982. In some examples, user agent 1980 may store information about digital asset exchange 1982, such as a list of digital asset exchanges 1982, and information about those functions that convert from one type of digital asset to another type of digital asset. In some examples, user agent 1980 may communicate with digital asset exchange 1982 to obtain information about those functions that convert from one type of digital asset to another type of digital asset.
[0235] User agent 1980 may select two or more digital asset exchanges 1982 that perform the 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., an inter-ledger operation sequence) that identifies the order of execution of two or more inter-ledger conversion operations 1984 involving one or more intermediate digital assets (e.g., digital asset C).
[0236] As shown in FIG. 19D, the user agent 1980 may select the digital asset exchange 1982-1 and execute the ledger conversion operation 1984-1 to convert the transaction amount 1977 from digital asset A to digital asset C. Also, the user agent 1980 may select the digital asset exchange 1982-2 and execute the ledger conversion operation 1984-2 to convert the transaction amount 1977 from digital asset C to digital asset B. The digital asset exchange 1982-1 and the digital asset exchange 1982-2 may be separate applications (e.g., a decentralized application or a centralized application). In some examples, the digital asset exchange 1982-1 and the digital asset exchange 1982-2 may be separate decentralized exchanges (e.g., DEX). In some examples, the digital asset exchange 1982-1 is a decentralized exchange (e.g., converting tokens on the same blockchain network 1910), and the digital asset exchange 1982-2 is a centralized exchange (e.g., converting tokens across different blockchain networks 1910), and vice versa. In some examples, the digital asset exchange 1982-1 and the digital asset exchange 1982-2 are separate centralized exchanges. As shown in FIG. 19D, in some examples, digital asset A may be stored in blockchain network 1910-1, digital asset B may be stored in blockchain network 1910-2, and digital asset C may be stored in blockchain network 1910-3. However, it should be noted that digital asset A, digital asset B, and digital asset C may be stored in one or more blockchain networks 1910. In some examples, digital asset A, digital asset B, and digital asset C may be stored in blockchain network 1910-1. In some examples, digital asset A and digital asset 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 the 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 the 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] FIG. 20 shows a system 2000 representing a browser application 2006a having a user agent 2080 according to one aspect. For example, computing device 2026 may execute browser application 2006a, and user agent 2080 may be 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 FIGS. 19A-19D. In some examples, system 2000 may be an example of any one or more of the systems described with reference to FIGS. 1-18 and may include any of the details described with reference to those figures. In some examples, browser application 2006a may be browser application 206a of FIGS. 2A-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 of FIGS. 19A-19D. In some examples, digital asset holder 2002a is a third-party digital asset holder.
[0239] The browser application 2006a may receive transaction information (e.g., transaction information 1975 in FIGS. 19A - 19D) to complete a blockchain transaction with a requesting party (e.g., requesting party 1990 in FIGS. 19A - 19D). In some examples, the browser application 2006a receives transaction information from web content (e.g., a web page) hosted on a web server. The browser application 2006a may receive transaction information via a uniform protocol that reduces the complexity of facilitating ledger - to - ledger transactions involving one or more blockchain networks. In some examples, the browser application 2006a may receive transaction information via one or more JavaScript APIs.
[0240] In response to receiving the transaction information, the browser application 2006a may cause the interface 2036 to be provided (e.g., rendered) on the display 2034 of the computing device 2026. In some examples, the interface 2036 includes a UI prompt rendered by the browser application 2006a in a browser tab. The interface 2036 may display an asset list identifying digital assets (and the types of digital assets) associated with the user's digital asset holder 2002a.
[0241] The digital asset holder 2002a can be any example of the digital asset holders described with reference to FIGS. 1 to 18. In some examples, the digital asset holder 2002a is a third-party digital asset holder, and the browser application 2006a can communicate with the third-party digital asset holder using any of the techniques described with reference to FIGS. 1 to 9. The digital asset holder 2002a can be an application or program that stores the private key 2004 for enabling transactions in the blockchain network(s). Also, the digital asset holder 2002a includes a shared address 2005a that can identify the location of an account on the blockchain network(s). The browser application 2006a can communicate with the digital asset holder 2002a via one or more APIs (e.g., API(s) 238) to obtain an asset list and then render the asset list at the interface 2036. The interface 2036 can also display exchange rate information regarding the exchange rate for converting one or more of the digital assets owned by the user into the digital asset type requested by the requesting party. To obtain the exchange rate information, the browser application 2006a can communicate with one or more digital asset exchanges.
[0242] After the user reviews the asset list and the exchange rate information, the browser application 2006a can receive a selection of a digital asset type via the interface 2036. In response to obtaining the digital asset type via the interface 2036, the browser application 2006a can communicate with the digital asset exchange(s) to enable the digital asset exchange(s) to perform the 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 can communicate with the blockchain network(s) to initiate the transfer of the user's digital assets to the requesting party.
[0243] FIG. 21 shows a system 2100 representing a browser application 2106a having a user agent 2180 and a digital asset holder 2102a according to another aspect. In some examples, the digital asset holder 2102a is a native (or embedded) program included within (or associated with) the browser application 2106a. The system 2100 can be an example of the system 1900 and can include any of the details described with reference to FIGS. 19A-19D. In some examples, the system 2100 can be an example of any one or more of the systems described with reference to FIGS. 1-18 and can include any of the details described with reference to those figures. In some examples, the browser application 2106a is the browser application 206a of FIGS. 2A-2D and can include any of the details described in those figures. The browser application 2106a can perform any of the functions described with reference to the user agent 1980 of FIGS. 19A-19D.
[0244] The browser application 2106a can receive transaction information (e.g., transaction information 1975 of FIGS. 19A-19D) for completing a blockchain transaction with a requesting party (e.g., requesting party 1990 of FIGS. 19A-19D). In some examples, the browser application 2106a receives transaction information from web content (e.g., a web page) hosted on a web server. The browser application 2106a can receive transaction information via a uniform protocol that reduces the complexity of facilitating ledger-to-ledger transactions involving one or more blockchain networks. In some examples, the browser application 2106a can receive transaction information via one or more JavaScript APIs.
[0245] In response to receiving transaction information, the browser application 2106a may cause the interface 2136 to be provided (e.g., rendered) on the display 2134 of the computing device 2126. In some examples, the interface 2136 includes a UI prompt rendered by the browser application 2106a. In some examples, the interface 2136 is rendered by a browser tab. The interface 2136 may display an asset list identifying 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 an exchange rate for converting one or more of the digital assets owned by the user into the digital asset type requested by the requesting party. To obtain the exchange rate information, the browser application 2106a may communicate with one or more digital asset exchanges.
[0246] After the user reviews the asset list and the exchange rate information, the browser application 2106a may receive a selection of a digital asset type via the interface 2136. In response to obtaining the digital asset type via the interface 2136, the browser application 2106a may communicate with the digital asset exchange(s) to enable the digital asset exchange(s) to perform a 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] FIG. 22 shows a system 2200 representing an operating system 2232 having a user agent 2280 according to one aspect. For example, a computing device 2226 includes the operating system 2232, and the 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 FIGS. 19A-19D. In some examples, system 2200 may be an example of any one or more of the systems described with reference to FIGS. 1-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 the user agent 1980 of FIGS. 19A-19D. In some examples, the digital asset holder 2202a is a third-party digital asset holder or a native (embedded) digital asset holder.
[0248] The operating system 2232 is system software that manages computer hardware and software resources to provide services common to computing programs. In some examples, the operating system 2232 is an operating system designed for a larger display 234 such as a laptop or desktop (e.g., sometimes called a desktop operating system). In some examples, the operating system 2232 is an operating system for a smaller display 234 such as a tablet or smartphone (e.g., sometimes called a mobile operating system).
[0249] The operating system 2232 may receive transaction information (e.g., the transaction information 1975 in FIGS. 19A-19D) to complete a blockchain transaction with a requesting party (e.g., the requesting party 1990 in FIGS. 19A-19D). In some examples, the operating system 2232 may receive the transaction information from one or more APIs defined in the operating system 2232. The operating system 2232 may receive the transaction information from web content (e.g., a web page) hosted by a web server or from an application running on the operating system 2232.
[0250] In response to receiving the transaction information, the operating system 2232 may cause the interface 2236 to be provided (e.g., rendered) on the display 2234 of the computing device 2226. In some examples, the interface 2236 includes a UI prompt rendered by an operating system component. The interface 2236 may display an asset list identifying digital assets (and the types of digital assets) associated with the user's digital asset holder 2202a.
[0251] The digital asset holder 2202a can be any example of the digital asset holders described with reference to FIGS. 1 to 18. In some examples, the digital asset holder 2202a is a third-party digital asset holder, and the operating system 2232 can communicate with the third-party digital asset holder using any of the techniques described with reference to FIGS. 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 can be an application or program that stores a private key 2204 for enabling transactions in a blockchain network(s). Also, the digital asset holder 2202a includes a shared address 2205a that can identify the location of an account on a blockchain network(s). The operating system 2232 can communicate with the digital asset holder 2202a to obtain an asset list and then render the asset list at the interface 2236. The interface 2236 can also display exchange rate information regarding an exchange rate for converting one or more of the digital assets owned by the user into the digital asset type requested by the requesting party. To obtain the exchange rate information, the browser application 2006a can communicate with one or more digital asset exchanges.
[0252] After the user reviews the asset list and exchange rate information, the operating system 2232 may receive a selection of a digital asset type via the interface 2236. In response to obtaining the digital asset type via the interface 2236, the operating system 2232 may communicate with the digital asset exchange(s) to enable the digital asset exchange(s) to perform the 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 ledger transactions involving one or more blockchain networks, according to one aspect. For example, flowchart 2300 may enable the transfer of digital assets between ledgers from a user to a requesting party. In some examples, the flowchart may be executable by a user agent (e.g., user agent 1980 of FIGS. 19A-19D). The user agent may be incorporated into a browser application. In some examples, the user agent may be incorporated into a non-browser application. In some examples, the user agent may be incorporated into the operating system of a computing device, which 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 is described with respect to system 1900 of FIGS. 19A - 19D, but flowchart 2300 may be applicable to any of the embodiments described herein. The flowchart 2300 of FIG. 23 shows operations in sequence, but this is merely an example, and it will be understood that additional or alternative operations may be included. Further, the operations of FIG. 23 and related operations may be executed in an order different from that shown, or in parallel or in an overlapping manner.
[0255] Operation 2302 includes receiving transaction information 1975 for completing a blockchain transaction with request party 1990 by an application executable by computing device 1926, where transaction information 1975 specifies a first type of digital asset (e.g., digital asset type 1909a) and a transaction amount 1977, and the first type of digital asset (e.g., digital asset A) is stored in a first blockchain network (e.g., blockchain network 1910 - 1). The application includes user agent 1980 configured to receive transaction information 1975. In some examples, the application is a browser application. In some examples, the application is a non - browser application. In some examples, the application is an operating system.
[0256] Operation 2304 includes providing interface 1936 to computing device 1926 to receive a selection of a second type of digital asset (e.g., digital asset type 1909b) associated with digital asset holder 1902a, where the second type of digital asset (e.g., digital asset B) is 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 asset A and digital asset B are stored in a single blockchain network 1910. In some examples, digital asset A and digital asset B are stored in different blockchain networks 1910. User agent 1980 may provide interface 1936. In some examples, interface 1936 includes a UI prompt. In some examples, user agent 1980 may obtain asset list 1944 associated with digital asset holder 1902a, interface 1936 may display asset list 1944, and asset list 1944 identifies one or more types of digital assets associated with digital asset holder 1902a that include 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 exchange rate information 1979. Exchange rate information 1979 includes information indicating an exchange rate for converting a transaction amount 1977 of a user's digital assets from a first type of digital asset (e.g., digital asset A) to a second type of digital asset (e.g., digital asset B) using digital asset exchange 1982. In some examples, user agent 1980 may select digital asset exchange 1982 from multiple digital asset exchanges 1982 based on exchange rate information 1979 associated with each digital asset exchange 1982 of the multiple digital asset exchanges 1982.
[0257] Operation 2306 includes the application sending conversion request 1971 to digital asset exchange 1982, where conversion request 1971 is configured to cause digital asset exchange 1982 to convert the transaction amount 1977 of the user's digital assets in 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, digital asset exchange 1982 includes a decentralized application that runs on blockchain network 1910 (e.g., converting tokens on the same blockchain network 1910). In some examples, digital asset exchange 1982 includes a centralized application (e.g., converting tokens on different blockchain networks 1910). Operation 2308 includes the application sending 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 completion of the blockchain transaction.
[0258] In some examples, the user agent 1980 may use the digital asset exchange 1982-1 and the digital asset exchange 1982-2 to determine 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, the user agent 1980 may send a first conversion request (e.g., conversion request 1971) to the digital asset exchange 1982-1, and the first conversion request is configured to cause the 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 asset A, digital asset B, and digital asset C are stored in the same blockchain network 1910. In some examples, digital asset A, digital asset B, and digital asset C are stored in two or more different blockchain networks 1910. The user agent 1980 may send a second conversion request (e.g., conversion request 1971) to the digital asset exchange 1982-2 (or the digital asset exchange 1982-1), and the second conversion request is configured to cause the digital asset exchange 1982-2 (or the digital asset exchange 1982-1) to convert the transaction amount 1977 of the user's digital assets 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] According to some aspects, a method (e.g., an 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 may display the asset list, and the asset list may identify one or more types of digital assets associated with the digital asset holder, including digital assets of a second type. The method may include receiving exchange rate information from a digital asset exchange, the interface may display the exchange rate information, and the exchange rate information may include 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 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 the plurality of digital asset exchanges. The digital asset exchange is a first digital asset exchange, and the method may include determining 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 first type using the first digital asset exchange and a second digital asset exchange. The method may further include 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 the third type to a digital asset of the first type to the second digital asset exchange. The application includes a browser application, and the browser application may receive transaction information from a website. The digital asset holder is a first digital asset holder, the transaction information may include a shared address of a second digital asset holder, and the second digital asset holder is associated with a requesting party.A transaction request is configured to associate a transaction amount of a user's digital asset with a second digital asset holder of a blockchain network.
[0260] According to one aspect, the system includes at least one processor and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to 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, a transaction amount, and a shared address, provide an interface to a computing device 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, send a conversion request configured to cause a digital asset exchange to convert a transaction amount of the user's digital asset of the second digital asset holder from the second type of digital asset to the first type of digital asset to the digital asset exchange, and send a transaction request to the blockchain network to associate the transaction amount with the first digital asset holder.
[0261] According to some aspects, the system may include one or more of the following features (or any combination thereof). When the executable instructions are executed by at least one processor, the at least one processor is caused to obtain an asset list associated with a second digital asset holder, the asset list identifying one or more types of digital assets associated with the second digital asset, including digital assets of a second type. The first digital asset holder is a third-party digital asset holder, and when the executable instructions are executed by at least one processor, the at least one processor is caused to send an authentication request to the third-party digital asset holder via an application programming interface (API), the authentication request being a request for authenticating a transaction request using a private key stored by the third-party digital asset holder. When the executable instructions are executed by at least one processor, the at least one processor is caused to receive exchange rate information from a digital asset exchange, the interface displaying the exchange rate information, the exchange rate information including information indicating a rate for converting a transaction amount of a user's digital assets from a second type of digital asset to a first type of digital asset using the digital asset exchange. When the executable instructions are executed by at least one processor, the at least one processor is caused to select a digital asset exchange from a plurality of digital asset exchanges based on exchange rate information associated with each digital asset exchange of the plurality of digital asset exchanges.The digital asset exchange is the first digital asset exchange, and when the executable instructions are executed by at least one processor, the at least one processor is caused to determine 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 using the first digital asset exchange and the second digital asset exchange, and to send a first conversion request configured to cause the first digital asset exchange to convert the transaction amount of the user's digital assets from the second type of digital asset to a third type of digital asset to the first digital asset exchange, and to send a second conversion request configured to cause the first digital asset exchange to convert the transaction amount of the user's digital assets from the third type of digital asset to the first type of digital asset to the second digital asset exchange. The instructions include an instruction to cause the second digital asset exchange to send the second conversion request.
[0262] According to one aspect, a non-transitory computer-readable medium storing executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations, the operations including receiving, by a browser application executable by a computing device, transaction information for completing a blockchain transaction with a requesting party, the transaction information specifying a first type of digital asset and a transaction amount; providing, by the browser application, an interface to the computing device to receive a selection of a second type of digital asset associated with the digital asset holder; sending, by the browser application, a conversion request configured to cause a digital asset exchange to convert the transaction amount of the user's digital assets of the digital asset holder from the second type of digital asset to the first type of digital asset to the digital asset exchange; and sending, by the browser application, a transaction request to the blockchain network to initiate completion of the 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 may display the asset list, and the asset list may identify 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 may display the exchange rate information, and the exchange rate information may include information indicating an exchange rate for converting the transaction amount of the 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 may include determining 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 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 - 24E illustrate 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 - 23 and can include any of the details described with reference to those systems.
[0265] The system 2400 provides a technical solution that enables a blockchain transaction (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 execute an application that includes digital asset holder(s) 2402 and an application 2406. The operating system 2432 is system software that manages computer hardware and software resources to provide services common to computing programs. In some examples, the operating system 2432 is an operating system for a smaller display 2434, such as a tablet or smartphone (e.g., sometimes referred to as a mobile operating system). As further described below, the operating system 2432 can register a particular digital asset holder 2402 as the default digital asset holder 2402-1 to enable transfer of information (e.g., intent request 2481, intent response 2483) between the application 2406 and the default digital asset holder 2402-1, and can add a transaction 2412 to the blockchain network 2410.
[0267] Identifying a particular digital asset holder 2402 as the default digital asset holder 2402-1 can 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 can be a memory device associated with the operating system 2432. The configuration storage 2455 can store other OS settings. One or more digital asset holders 2402 can 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., smartphone, tablet, etc.), and the digital asset holder 2402 is a native application (e.g., iOS application, Android application, Linux application, 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 an application 2406 (other than the digital asset holder 2402), and may enable a transaction 2412 to be added to the blockchain network 2410. For example, using the techniques described herein, an application 2406 (other than the digital asset holder 2402) may access a wallet identity and create a transaction 2412 by communicating directly with the default digital asset holder 2402-1. In some examples, the default digital asset holder 2402-1 is automatically used for subsequent transactions 2412. In some examples, the default digital asset holder 2402-1 is used for subsequent transactions 2412 initiated from an application 2406, web content 2408, and / or any other application of the computing device 2426. In some examples, multiple default digital asset holders 2402-1 may be selected for future transactions 2412 (e.g., using a particular default digital asset holder 2402-1 for a transaction 2412 resulting from a first application, another default digital asset holder 2402-1 for a transaction 2412 resulting from a second application, etc.).
[0269] The user may initiate a transaction 2412 using the application 2406, and in response to one of the digital asset holders 2402 being registered as the default digital asset holder 2402-1, the application 2406 and the default digital asset holder 2402-1 may communicate with each other (e.g., directly communicate) via an intent request 2481 and / or an intent response 2483.
[0270] The 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, the intent request 2481 can specify any activity that can be performed by the digital asset holder 2402. In some examples, the intent request 2481 is a request for the asset list of the digital assets associated with the default digital asset holder 2402-1 (e.g., the asset list 244 in FIGS. 2A-2D). The intent request 2481 can 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, the intent request 2481 is a transaction creation request for creating a transaction 2412 to be committed to the blockchain network 2410. In some examples, the intent request 2481 can include details of the transaction such as the type, amount, sender, recipient, and / or time information of the digital asset. In some examples, after the activity is completed, the default digital asset holder 2402-1 may send an intent response 2483 to the application 2406, and the intent response 2483 includes the result of the activity performed by the default digital asset holder 2402-1.
[0271] The intent request 2481 can be a request to obtain an asset list. In response to receiving the intent request 2481, the default digital asset holder 2402-1 can generate an asset list and send an intent response 2483 including the asset list to the application 2406. In some examples, the application 2406 can display the asset list.
[0272] The intent request 2481 may be a request to create a transaction 2412. In response to receiving the intent request 2481, the default digital asset holder 2402-1 may authenticate the transaction 2412 using the private key 2404. Also, the default digital asset holder 2402-1 may communicate with the blockchain network 2410 to add the transaction 2412 to the blockchain network 2410. In some examples, the default digital asset holder 2402-1 may send an intent response 2483, which may include the result of the transaction 2412 added to the blockchain network 2410. In some examples, the default digital asset holder 2402-1 may send the authenticated transaction 2412 to the application 2406 via the intent response 2483, and the application 2406 may communicate with the blockchain network 2410 to add the transaction 2412 to the blockchain network 2410.
[0273] The operating system 2432 may define a protocol that permits the transfer of the intent request 2481 and the intent response 2483 between the application 2406 and the default digital asset holder 2402-1. In some examples, the protocol is an inter-process communication (IPC) communication link. The IPC communication link may be a way for processes (e.g., applications) to send messages and data to each other. The IPC communication link may be defined at the operating system level. In some examples, the application 2406 and / or the default digital asset holder 2402-1 may define one or more application programming interfaces (APIs) that enable the application 2406 and the default digital asset holder 2402-1 to communicate with each other.
[0274] In some examples, application 2406 is a native application other than digital asset holder 2402 (e.g., application 2406 does not store private key 2404 for authenticating transaction 2412 added to blockchain network 2410). In some examples, application 2406 is a non-browser application. In some examples, application 2406 is a browser application. In some examples, application 2406 and default digital asset holder 2402-1 can communicate with each other without using a browser application as a medium (e.g., without any browser being involved) to add transaction 2412 to blockchain network 2410.
[0275] Operating system 2432 includes, or defines, a registration engine 2467 configured to register digital asset holder 2402 as default digital asset holder 2402-1. Registration engine 2467 can be a component of operating system 2432. Registration engine 2467 can be part of operating system 2432 configured to manage the registration of digital asset holder 2402 as default digital asset holder 2402-1 and other functions described with reference to registration engine 2467. In some examples, the registration of digital asset holder 2402 as default digital asset holder 2402-1 includes updating a setting of settings storage 2455 (e.g., an OS setting) that identifies a particular digital asset holder 2402 as default digital asset holder 2402-1.
[0276] In some examples, registration engine 2467 can detect a blockchain transaction request 2411 generated on computing device 2426, and in response to blockchain transaction request 2411, registration engine 2467 can determine whether digital asset holder 2402 is registered as default digital asset holder 2402-1.
[0277] In some examples, the blockchain transaction request 2411 is an intent request 2481 generated by the application 2406. For example, the application 2406 displays application content including controls (e.g., UI elements, selectable items, etc.) that enable a user to initiate a transaction 2412. In response to a user selection, the application 2406 may generate an intent request 2481 that can be detected by the registration engine 2467. In some examples, the registration engine 2467 may monitor the IPC communication link(s), and if the intent request 2481 is directed to the digital asset holder 2402, the registration engine 2467 may intercept the intent request 2481 and determine whether the default digital asset holder 2402-1 is identified in the settings storage 2455. If the digital asset holder 2402 is registered as the default digital asset holder 2402, the operating system 2432 may transfer the intent request 2481 to the default digital asset holder 2402-1 to perform the specified action(s).
[0278] In some examples, the blockchain transaction request 2411 is a request generated in response to an interaction with the web content 2408. For example, the registration engine 2467 may detect the blockchain transaction request 2411 from the web content 2408 displayed on the display 2434 of the computing device 2426. In some examples, the application 2406 displays the web content 2408. The web content 2408 may be displayed via the web view controller of the application 2406. In some examples, the web content 2408 is displayed by a browser tab. In some examples, the user may select a link to the web content 2408 while using the application 2406, and the web content 2408 can be rendered and displayed by a browser tab associated with the browser application.
[0279] Web content 2408 may include one or more objects 2436 that can create a transaction 2412 in a blockchain network 2410. When an object 2436 is called, a registration engine 2467 may intercept a blockchain transaction request 2411 and determine whether a default digital asset holder 2402-1 was identified in a settings storage 2455. In some examples, the object 2436 is a blockchain computer object. In some examples, the object 2436 is a JavaScript exposed object. In some examples, the object 2436 is an API exposed object. If the blockchain network 2410 is Ethereum, the object 2436 is an Ethereum object (e.g., window.etherum) that creates a transaction in the Ethereum blockchain. In some examples, the object 2436 is specific to the type of blockchain network. In some examples, the web content 2408 may include a first object (e.g., object 2436) for creating a transaction in a first blockchain network and a second object (e.g., object 2436) for creating a transaction in a second blockchain network, where the second blockchain network is different from the first blockchain network. In some examples, the first object and the second object, when selected (e.g., called, initiated), refer to different callbacks or requests related to a particular transaction 2412.
[0280] To determine whether the 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 setting storage 2455. The setting storage 2455 may store information about the digital asset holder 2402 registered as the default digital asset holder 2402-1 (e.g., the name of the cryptocurrency wallet, the application identifier, etc.). In some examples, the setting storage 2455 may identify any digital asset holder 2402 installed in the operating system 2432, and the setting storage 2455 may include information (e.g., a flag, an indicator, etc.) for identifying 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 setting storage 2455 to determine whether the digital asset holder 2402 is registered as the default digital asset holder 2402-1.
[0281] Referring to FIG. 24B, if the digital asset holder 2402 is not registered as the default digital asset holder 2402-1, the registration engine 2467 may render the interface 2451 on the display 2434 of the computing device 2426. The interface 2451 may be configured to receive a user selection of the digital asset holder 2402 as the default digital asset holder 2402-1. In some examples, the registration engine 2467 may render the interface 2451 when the registration engine 2467 determines that at least one digital asset holder 2402 is installed on the computing device 2426 but the default digital asset holder 2402-1 is not identified in the setting storage 2455. In some examples, the registration engine 2467 may render the interface 2451 when the registration engine 2467 determines that two or more digital asset holders 2402 are installed on the computing device 2426 but the default digital asset holder 2402-1 is not identified in the setting storage 2455.
[0282] The interface 2451 may display information identifying one or more digital asset holders 2402 associated with the computing device 2426 (e.g., installed on the computing device 2426). As shown in FIG. 24B, the interface 2451 may display information identifying the digital asset holder 2402a and the digital asset holder 2402b. The digital asset holder 2402a and the digital asset holder 2402b may be separate native applications installed on the computing device 2426. The interface 2451 may permit the user to select one of the digital asset holder 2402a or the digital asset holder 2402b as the default digital asset holder 2402-1.
[0283] In some examples, only one digital asset holder 2402 is installed on the computing device 2426, but if 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 does not render the interface 2451. Instead, the operating system 2432 may transfer the intent request 2481 to the default digital asset holder 2402-1 and initiate an action at the default digital asset holder 2402-1. The action can 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., the asset list 244 in FIGS. 2A-2D) and returning it to the application 2406. In some examples, the action includes authenticating the transaction 2412 using the private key 2404 and returning the authenticated transaction 2412 to the application 2406, and the application 2406 communicates with the blockchain network 2410 to add the transaction 2412 to the blockchain network 2410. In some examples, the action includes authenticating the transaction 2412, communicating with the blockchain network 2410 to add the transaction 2412 to the blockchain network 2410, and returning the result of the transaction 2412 to the application 2406.
[0284] In response to receiving a user selection of the default digital asset holder 2402-1 via the interface 2451, the registration engine 2467 may update the settings storage 2455 to indicate the user's selection as the default digital asset holder 2402-1. For example, if the user selects the digital asset holder 2402a at the interface 2451, the registration engine 2467 updates the settings storage 2455 to indicate that the default digital asset holder 2402-1 is the digital asset holder 2402a. In some examples, the default digital asset holder 2402-1 identified in the settings storage 2455 is used for future (subsequent) transactions 2412 initiated from the application 2406, the web content 2408, and / or any other application executable by the operating system 2432. In some examples, the default digital asset holder 2402-1 is used for the current transaction 2412 but not for subsequent transactions 2412. In some examples, multiple default digital asset holders 2402-1 can be identified. For example, one default digital asset holder 2402-1 can be identified for a transaction 2412 resulting from the application 2406, another default digital asset holder 2402-1 can be identified for a transaction 2412 resulting from another application 2406, and in some examples, yet another default digital asset holder 2402-1 can be identified for a transaction resulting from the web content 2408.
[0285] In some examples, a selected default digital asset holder 2402-1 is used for the current transaction 2412, and the interface 2451 is re-rendered when a subsequent transaction 2412 is initiated. In some examples, a selected default digital asset holder 2402-1 is used for the current and future (subsequent) transactions, and the interface 2451 is not re-rendered when a subsequent transaction 2412 is initiated (e.g., from any other application such as application 2406, web content 2408, and / or computing device 2426). In some examples, the interface 2451 includes a selectable control 2499 that enables a user to select whether the default digital asset holder 2402-1 is used for the current transaction 2412 (e.g., "time") or for the current and future transactions (e.g., "always"). In other words, the selectable control 2499 may permit the user to select a particular digital asset holder 2402 as the default digital asset holder 2402-1 for a one-time transaction (e.g., temporary) or for all transactions (e.g., persistent). In some examples, when a temporary option is selected, the settings storage 2455 is not updated to identify the default digital asset holder 2402-1. In some examples, when a temporary option is selected, the settings storage 2455 is updated to identify the default digital asset holder 2402-1, and the settings within the settings storage 2455 are reset to a state that does not indicate the default digital asset holder 2402-1 after the transaction 2412 is completed. When a persistent option is selected, the settings of the settings 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 the digital asset holders 2402c and 2402d. The 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 install link 2449 that, when selected, causes a computing device 2426 to initiate installation of a particular digital asset holder 2402. In some examples, when install link 2449 is selected, a digital media store application (e.g., Play Store, Apple® Store, etc.) is launched, an install page corresponding to digital asset holder 2402 is displayed, and a user can download and install digital asset holder 2402 from the install page. As shown in FIG. 24C, interface 2431 may include an install link 2449 associated with digital asset holder 2402c that, when selected, facilitates installation of digital asset holder 2402c. Interface 2431 may include an install link 2449 associated with digital asset holder 2402d that, when selected, facilitates installation of digital asset holder 2402d.
[0288] As noted above, registration engine 2467 may detect a blockchain transaction request 2411 generated at computing device 2426 and, in response to blockchain transaction request 2411, registration engine 2467 may determine whether digital asset holder 2402 is registered as default digital asset holder 2402-1. If digital asset holder 2402 is not registered as default digital asset holder 2402-1, registration engine 2467 may render an interface (e.g., interface 2451, interface 2431) through which a user can register digital asset holder 2402 as default digital asset holder 2402-1.
[0289] In some examples, referring to FIGS. 24 - 24E, a user may use computing device 2426 to render an OS settings interface 2457 on a display 2434 of the computing device 2426 (as shown in FIGS. 24D and 24E). The user can select a particular digital asset holder 2402 from a list of available digital asset holders 2402 (e.g., digital asset holders 2402a, 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 the computing device 2426. As shown in FIG. 24D, the user has selected digital asset holder 2402a as the default digital asset holder 2402 - 1, and the OS settings interface 2457 displays an indicator 2495 that visually identifies digital asset holder 2402a as the default digital asset holder 2402 - 1. The indicator 2495 can be, for example, a computer icon, symbol, and / or the appearance of specific text (text color, highlighting, italic, etc., or some combination thereof). In some examples, referring to FIG. 24E, the operating system 2432 (e.g., registration engine 2467) may receive a change to the default digital asset holder 2402 - 1 that switches the default digital asset holder 2402 - 1 from digital asset holder 2402a to digital asset holder 2402b via the OS settings interface 2457. The registration engine 2467 can update the settings in the settings storage 2455, update the indicator 2495, and visually identify digital asset holder 2402b as the default digital asset holder 2402 - 1.
[0290] FIG. 25 shows a system 2500 for registering a digital asset holder 2502 as a default digital asset holder 2502-1 and for facilitating a transaction 2512 in a blockchain network 2510 using the default digital asset holder 2502-1. System 2500 may be an example of system 2400 of FIGS. 24A-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 FIGS. 24A-25E. Also, system 2500 may be an example of any of the systems described with reference to FIGS. 1-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 requests 2581, intent responses 2583) between a default digital asset holder 2502-1 and web content 2508 (and, in some examples, an application 2506). The device API 2540 can be an API defined at the operating system level of the computing device 2526. In the system 2400 of FIGS. 24A-24E, an application 2406 generates an intent request 2481 (and receives an intent response 2583). In other words, the application 2406 and the default digital asset holder 2402-1 communicate directly with each other. In the system 2500 of FIG. 25, the device API 2540 detects the generation of a transaction 2512 from the web content 2508 and communicates directly with the default digital asset holder 2502-1. For example, the device API 2540 generates an intent request 2581 (and receives an intent response 2583), and the device API 2540 notifies the web site of the web content 2508 and / or the application 2506 of the result via a notification(s) 2597. System 2500 can have the technical advantage of facilitating a transaction 2512 from web content 2508 on a blockchain network 2510 with minimal (or no) involvement of a browser. For example, (in some examples) a browser application can be used to render the web content 2508, but the browser application is not used as an intermediary for processing the transaction 2512. Rather, the device API 2540 is used as an intermediary between the web content 2508 and the default digital asset holder 2502-1.
[0292] More specifically, the 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. The user may select the link to web content 2508, whereby the web content is displayed (e.g., by a web view controller of application 2506, by a browser tab of a browser application, by a custom browser tab of a browser application).
[0293] Web content 2508 may include one or more objects 2536. In some examples, object 2536 is a blockchain computer object. In some examples, object 2536 is a JavaScript exposed object. In some examples, object 2536 is an API exposed object. If blockchain network 2510 is Ethereum, 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 include a first object (e.g., object 2536) for creating a transaction on a first blockchain network and a second object (e.g., object 2536) for creating a transaction on a second blockchain network, and the second blockchain network is different from the first blockchain network. In some examples, when the first object and the second object are selected (e.g., called, initiated), they refer to different callbacks or requests related to a specific transaction 2512.
[0294] The user may select specific controls of web content 2508, whereby object 2536 is called. When object 2536 is called (e.g., selected, initiated, etc.), device API 2540 detects a blockchain transaction request 2511. In some examples, when object 2536 is called, a method is called, and the called method may be regarded as a blockchain transaction request 2511. In response to blockchain transaction request 2511, device API 2540 generates an intent request 2581 to be sent to default digital asset holder 2502-1.
[0295] The intent request 2581 can 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 can 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 the digital assets associated with the default digital asset holder 2502-1 (e.g., the asset list 244 in FIGS. 2A-2D). The intent request 2581 can 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 can send an intent response 2583 to the device API 2540, and the intent response 2583 includes the result of the activity performed by the default digital asset holder 2502-1. The device API 2540 is configured to send a notification 2597 to the website of the web content 2508 and / or the application 2506, and the notification 2597 can include information from the intent response 2583.
[0296] The intent request 2581 can be a request to obtain an asset list. In response to receiving the intent request 2581, the default digital asset holder 2502-1 can generate an asset list and send an intent response 2583 including the asset list to the application 2506. In some examples, the device API 2540 can send a notification 2597 to the website of the web content 2508 and / or the application 2506, and the notification 2597 includes the asset list to be displayed on the device's display.
[0297] The intent request 2581 may be a request to create a transaction 2512. In response to receiving the intent request 2581, the default digital asset holder 2502-1 may authenticate the transaction 2512 using the private key 2504. Also, the default digital asset holder 2502-1 may communicate with the blockchain network 2510 to add the transaction 2512 to the blockchain network 2510. In some examples, the default digital asset holder 2502-1 may send an intent response 2583, which may include the result of the transaction 2512 added to the blockchain network 2510. In response to the intent response 2583, the device API 2540 may send a notification 2597 to the website of the web content 2508 and / or the application 2506, and the notification 2597 may include the result of the transaction 2512 added to the blockchain network 2510. In some examples, the default digital asset holder 2502-1 may send the authenticated transaction 2512 to the device API 2540 via the intent response 2583, and the device API 2540 may communicate with the blockchain network 2510 to add the transaction 2512 to the blockchain network 2510. Next, the device API 2540 may send a notification 2597 to the website of the web content 2508 and / or the application 2506, and the notification 2597 may include the result of the transaction 2512 added to the blockchain network 2510.
[0298] The operating system 2532 may define a protocol that permits 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. The IPC communication link can be a way for processes (e.g., applications) to send messages and data to each other. The 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, the application 2506 is a native application other than the digital asset holder 2502 (e.g., the application 2506 does not store the private key 2504 for authenticating the transaction 2512 added to the blockchain network 2510). In some examples, the application 2506 is a non-browser application. In some examples, the application 2506 is a browser application. In some examples, the web content 2508 and / or the application 2506 and the default digital asset holder 2502-1 can communicate with each other via the device API 2540 without using a browser application as a mediator (e.g., without any browser being involved) to add the transaction 2512 to the blockchain network 2510.
[0300] Also, similar to the system 2400 of FIGS. 24A - 24E, identifying a particular digital asset holder 2502 as the default digital asset holder 2502-1 can be stored as a setting (e.g., operating system (OS) setting) in the settings storage 2555 of the computing device 2526. The settings storage 2555 can be a memory device associated with the operating system 2532. The settings storage 2555 can store other OS settings. One or more digital asset holders 2502 can be downloaded and installed in the operating system 2532 of the computing device 2526. In some examples, the computing device 2526 is a mobile computing device (e.g., smartphone, tablet, etc.), and the digital asset holder 2502 is a native application (e.g., iOS application, Android application, Linux application, etc.) that can be downloaded from a digital media store and installed in the operating system 2532.
[0301] According to the techniques described herein, a user can register one of the digital asset holders 2502 as the default digital asset holder 2502-1, and the operating system 2532 can transfer information (e.g., intent request 2581, intent response 2583) between the default digital asset holder 2502-1 and the device API 2540 to initiate a transaction 2512 with web content 2508, and enable the transaction 2512 to be added to the blockchain network 2510.
[0302] The default digital asset holder 2502-1 can be registered according to any of the techniques described in the system 2400 of FIGS. 24A-24E. For example, the operating system 2532 can perform any of the functions described with reference to the registration engine 2467, the operating system 2432, and / or the computing device 2426 of FIGS. 24A-24E. For example, the operating system 2532 is configured to register the digital asset holder 2502 as the default digital asset holder 2502-1. In some examples, the registration of the digital asset holder 2502 as the default digital asset holder 2502-1 includes updating a setting (e.g., an OS setting) of the setting storage 2555, and this setting identifies a specific digital asset holder 2502 as the default digital asset holder 2502-1. The operating system 2532 can detect a blockchain transaction request 2511, and in response to the detection of the blockchain transaction request 2511, query the setting storage 2555 and render the interface 2451 of FIG. 24B or the interface 2431 of FIG. 24C. In some examples, the operating system 2532 can render the OS setting interface 2457 of FIGS. 24D and 24E to select or change the default digital asset holder 2502-1.
[0303] FIG. 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 a transaction to a blockchain network. In some examples, the operating system 2632 can be an example of the operating system 2432 of FIGS. 24A-24E and can include any of the details described with reference to those figures. In some examples, the operating system 2632 can be an example of the operating system 2532 of FIG. 25 and can include any of the details described with reference to those figures. Note, however, that the operating system 2632 can be an example of any of the systems described herein and can include any of the details described with reference to any of the figures.
[0304] The operating system 2632 includes a settings storage 2655 and a registration engine 2667. The settings storage 2655 can store settings related to the default digital asset holder 2602-1. The registration engine 2667 can manage the registration of the default digital asset holder 2602-1. In some examples, the operating system 2632 includes a device API 2640. In some examples, the operating system 2632 does not include a device API 2640.
[0305] The operating system 2632 may include a software container 2644 configured to launch and execute an application that includes one or more digital asset holders 2602 and applications 2606. One of the digital asset holders 2602 is identified as the default digital asset holder 2602-1 in the settings storage 2655. The digital asset holder 2602 may be a native application installed in the operating system 2632. The application 2606 may be a native application installed in the operating system 2632. The application 2606 does not store, for example, a user's private key for authenticating blockchain transactions, unlike the digital asset holder 2602. In some examples, the application 2606 is a non-browser application. In some examples, the 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 execute an application. The registration engine 2667 and in some examples, the device API 2640 are configured to communicate with the applications running in those containers 2644 via an inter-process communication (IPC) link 2693-1.
[0306] The software container 2644 includes a container 2644a configured to launch and execute the digital asset holder 2602, and a container 2644b configured to launch and execute the application 2606. In some examples, the digital asset holder 2602 executed by the container 2644a is registered as the default digital asset holder 2602-1. The software container 2644 can be an instance of another operating system. In some examples, the software container 2644a (or virtual machine) shares the OS kernel 2613 with the operating system 2632. In some examples, the software container 2644b (or virtual machine) shares the OS kernel 2613 with the operating system 2632. In some examples, the software container 2644a and the software container 2644b share the same OS kernel 2613. In some examples, the software container 2644a, the software container 2644b, and the operating system 2632 do not share the OS kernel 2613 with each other. The OS kernel 2613 is the main interface between the hardware and processes of the computing device. The OS kernel 2613 is the initial program loaded into memory before the bootloader. The OS kernel 2613 can operate on the device firmware 2615, and the device firmware 2615 can operate on the hardware firmware 2617. The software container 2644 (or virtual machine) can be a runtime platform that includes software dependencies required by the applications launched and executed by the software container 2644 (or virtual machine), such as a specific version of a programming language runtime and other software libraries.
[0307] In some examples, the operating system 2632 defines an IPC link 2693-2 between a container 2644a that executes the digital asset holder 2602 and a container 2644b that executes the application 2606. In some examples, an intent request can be sent from the container 2644b to the container 2644a via the IPC link 2693-2, and an intent request can be sent from the container 2644a to the container 2644b via the 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 an intent request (and in some examples, an intent response) via the IPC link 2693-1. In some examples, the device API 2640 detects a blockchain transaction request from an API exposure object called in web content and communicates with the digital asset holder 2602 and the application 2606 via the IPC link 2693-1. In some examples, the device API 2640 generates an intent request.
[0308] FIG. 27 shows a system 2700 for registering digital asset holder 2702 as the default digital asset holder 2702-1 and / or for completing a transaction 2712 in 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 FIG. 25), 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 that is not owned or managed by browser application 2706a. In some examples, system 2700 may include any of the techniques for connecting a third-party digital asset holder to browser application 2706a as described with reference to FIGS. 1-9.
[0309] System 2700 includes a computing device 2726 having an operating system 2732. The operating system 2732 includes a setting storage 2755 that stores settings (e.g., OS settings) related to the default digital asset holder 2702-1. The operating system 2732 includes a registration engine 2767 configured to manage the registration of digital asset holder 2702 as the default digital asset holder 2702-1. The operating system 2732 may execute 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] Web content 2708 can be displayed on a display 2734 of a computing device 2726. In some examples, web content 2708 is rendered and displayed by a browser application 2706a. In some examples, web content 2708 is rendered and displayed by a browser tab. In some examples, web content 2708 is displayed by another native application (e.g., not a digital asset holder) via a web view controller. A user can use application 2706a to render web content 2708.
[0311] Web content 2708 can include one or more objects 2736. In some examples, object 2736 is a blockchain computer object. In some examples, object 2736 is a JavaScript exposed object. In some examples, object 2736 is an API exposed object. When blockchain network 2710 is Ethereum, 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 can include a first object (e.g., object 2736) for creating a transaction on a first blockchain network and a second object (e.g., object 2736) for creating a transaction on a second blockchain network, where the second blockchain network is different from the first blockchain network. In some examples, the first object and the second object refer to different callbacks or requests related to a particular transaction 2712 when selected (e.g., called, initiated).
[0312] The user can select specific controls of the web content 2708, whereby the object 2736 is called. When the object 2736 is called (e.g., selected, started, etc.), the browser application 2706a detects a blockchain transaction request 2711. In some examples, when the object 2736 is called, a method is called, and the called method can be regarded as 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 and facilitates adding a transaction 2712 to the blockchain network 2710 when the digital asset holder 2702 is registered as the default digital asset holder 2702-1. For example, the browser application 2706a can connect to the default digital asset holder 2702-1 according to any of the techniques described in FIGS. 1-9.
[0313] Also, similar to the system 2400 of FIGS. 24A-25E, identifying a specific digital asset holder 2702 as the default digital asset holder 2702-1 can be stored as a setting (e.g., operating system (OS) setting) in the setting storage 2755 of the computing device 2726. The setting storage 2755 can be a memory device associated with the operating system 2732. The setting storage 2755 can store other OS settings. One or more digital asset holders 2702 can be downloaded and installed in the operating system 2732 of the computing device 2726. In some examples, the computing device 2726 is a mobile computing device (e.g., smartphone, tablet, etc.), and the digital asset holder 2702 is a native application (e.g., iOS application, Android application, Linux application, etc.) that can be downloaded from a digital media store and installed in the operating system 2732.
[0314] According to the techniques described in this specification, 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 the system 2400 of FIGS. 24A-24E. For example, the registration engine 2767 is configured to register the digital asset holder 2702 as the default digital asset holder 2702-1. In some examples, the registration of the digital asset holder 2702 as the default digital asset holder 2702-1 includes updating a setting (e.g., an OS setting) of the setting storage 2755, and this setting identifies a specific digital asset holder 2702 as the default digital asset holder 2702-1. In some examples, the registration engine 2767 may detect the blockchain transaction request 2711, query the setting storage 2755 in response to the detection of the blockchain transaction request 2711, and render the interface 2451 of FIG. 24B or the interface 2431 of FIG. 24C. In some examples, the registration engine 2767 may render the OS setting interface 2457 of FIGS. 24D and 24E to select or change the default digital asset holder 2702-1.
[0315] In response to the object 2736 being called, when the default digital asset holder 2702-1 is identified in the setting storage 2755, the browser application 2706a can connect to the default digital asset holder 2702-1 and process the transaction 2712. In some examples, the browser application 2706a communicates with the default digital asset holder 2702-1 to obtain the authenticated transaction 2712. For example, the browser application 2706a may send a transaction request to the default digital asset holder 2702-1, and the default digital asset holder 2702-1 authenticates the transaction 2712 using the private key 2704. The authenticated transaction 2712 is returned to the browser application 2706a, and the browser application 2706a communicates with the blockchain network 2710 to add the transaction 2712 to the blockchain network 2710. Next, the browser application 2706a notifies the result to the website and / or application.
[0316] Figure 28 is a flowchart 2800 that represents exemplary operations for registering a digital asset holder as a default digital asset holder and / or processing transactions in a blockchain network using the default digital asset holder, according to one aspect. The operations may be performed by an operating system of a mobile computing device such as a smartphone or laptop. In some examples, the operating system is a mobile operating system configured to run on a smaller display screen. In some examples, the digital asset holder is a native application that can be installed on or installed by the operating system. A user may use the application to perform blockchain transactions, and the application may communicate (e.g., directly communicate) with the native application using intents (e.g., intent requests, intent responses) to process blockchain transactions in the blockchain network. The operations are described with respect to system 2400 of FIGS. 24A - 25E, but the operations may be performed by any of the systems described herein. Flowchart 2800 of FIG. 28 shows the operations in sequence, but this is merely an example and it will be understood that additional or alternative operations may be included. Further, the operations and related operations of FIG. 28 may be performed in an order different from that shown, or in parallel or in an overlapping manner.
[0317] Operation 2802 includes detecting, by an operating system 2432 of a mobile computing device (e.g., computing device 2426), a blockchain transaction request 2411 from a native application (e.g., application 2406). In some examples, 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 default digital asset holder 2402-1 is registered, a query is made to settings 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 transferring intent request 2481 from the native application to default digital asset holder 2402-1 to process a blockchain transaction (e.g., transaction 2412) in response to determining that digital asset holder 2402 is registered as default digital asset holder 2402-1. Operation 2808 includes transferring intent response 2483 from default digital asset holder 2402-1 to the native application to identify the result of the blockchain transaction. Intent request 2481 is configured to cause default digital asset holder 2402-1 to authenticate the blockchain transaction and communicate with blockchain network 2410 to add the blockchain transaction to blockchain network 2410. In some examples, intent request 2481 is transferred via an inter-process communication link (e.g., IPC link 2693-2 of FIG. 26) defined in the operating system 2432 of the mobile computing device.
[0320] In some examples, the operation includes rendering interface 2451 on display 2434 of a mobile computing device in response to determining that digital asset holder 2402 is not registered as default digital asset holder 2402-1, where the interface is configured to receive a user selection of digital asset holder 2402 as default digital asset holder 2402-1. In some examples, in response to receiving a user selection of digital asset holder 2402 as default digital asset holder 2402-1, the operation includes updating configuration storage 2455 to identify digital asset holder 2402 as default digital asset holder 2402-1. In some examples, in response to determining that digital asset holder 2402 is not registered as default digital asset holder 2402-1, the operation includes rendering interface 2431 on display 2434 of a mobile computing device, where interface 2431 is configured to prompt the user to install a particular digital asset holder 2402.
[0321] In some examples, the operation includes rendering an operating system settings interface 2457 on a display 2434 of a mobile computing device, the operating system settings interface 2457 identifying a first digital asset holder 2402a and a second digital asset holder 2402b, and the operating system settings interface 2457 displaying an indicator 2495 visually identifying the first digital asset holder 2402a as the default digital asset holder 2402-1. In some examples, the operation includes receiving, via the operating system settings interface 2457, a change to the default digital asset holder 2402-1 that 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 aspects, the techniques described herein further relate to a method that includes rendering, on a display of a co...
Claims
1. Receiving an authenticated transaction request for adding a transaction to the blockchain network from a digital asset holder that manages a private key for accessing data of 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, from the blockchain network, a transaction response including a transaction identifier of the transaction added to the blockchain network; Sending, via the application programming interface of the application, a notification message including the transaction identifier to the digital asset holder; A method comprising the above.
2. Rendering, by the application, web content having items selectable by a user for performing the transaction in the blockchain network; In response to receiving a selection of an item selectable by the user, sending a request for authenticating the transaction to the digital asset holder; The method according to claim 1, further comprising the above.
3. Rendering, by the application, web content having items selectable by a user for performing the transaction in the blockchain network; In response to receiving a selection of an item selectable by the user, sending an asset request to the digital asset holder; Receiving, from the digital asset holder, an asset list identifying one or more digital assets stored in the blockchain network. The method according to claim 1 or 2, further comprising the above.
4. The method according to any one of claims 1 to 3, further comprising rendering, by the application, an item selectable by a user for connecting to the digital asset holder that manages the private key for accessing the data of the blockchain network.
5. The application programming interface is a first application programming interface, and the authenticated transaction request is sent to the blockchain network via a second application programming interface, and the second application programming interface is configured to communicate between the application and the blockchain network. The method according to any one of claims 1 to 4.
6. The method according to claim 5, further comprising obtaining the first application programming interface and the second application programming interface from a storage device associated with the application.
7. The method according to any one of claims 1 to 6, further comprising sending a JavaScript (registered trademark) object notation message including the authenticated transaction request to a node gateway of the blockchain network.
8. The method according to any one of claims 1 to 7, wherein the application includes a browser application configured to render a browser tab on a display of a computing device.
9. The method according to claim 8, wherein the digital asset holder includes an extension to the browser application, and the extension is an extension not owned or managed by the browser application.
10. The method according to any one of claims 1 to 9, wherein the digital asset holder includes a native application, the native application is an application installed on an operating system of a computing device, and the native application is a computer program separate from the application.
11. The method according to any one of claims 1 to 9, wherein the application is executable by a computing device, and the digital asset holder includes a server application executable by a server computer remote from the computing device.
12. At least one processor, A non-transitory computer-readable medium storing executable instructions, and the executable instructions, when executed by the at least one processor, cause the at least one processor to receive an authenticated transaction request for adding a transaction to the blockchain network from a digital asset holder that manages a private key for accessing data of the blockchain network via an application programming interface of a browser application, cause the browser application to send the authenticated transaction request to the blockchain network, cause the browser application to receive a transaction response including a transaction identifier of the transaction added to the blockchain network from the blockchain network, send a notification message including the transaction identifier to the digital asset holder via the application programming interface of the browser application.
13. The executable instructions, when executed by the at least one processor, cause the at least one processor to cause the browser application to render web content having items selectable by a user for performing the transaction in the blockchain network, include instructions to send a request for authenticating the transaction to the digital asset holder in response to receiving a selection of an item selectable by the user, and the digital asset holder is configured to authenticate the transaction using the private key. The apparatus according to claim 12.
14. The executable instructions, when executed by the at least one processor, cause the at least one processor to include instructions to cause the browser application to render items selectable by a user for connecting to the digital asset holder that manages the private key for accessing the data of the blockchain network. The apparatus according to claim 12 or 13.
15. The application programming interface is a first application programming interface, and the authenticated transaction request is transmitted to the blockchain network via a second application programming interface configured to communicate between the browser application and the blockchain network. When the executable instructions are executed by the at least one processor, the at least one processor is caused to The apparatus according to any one of claims 12 to 14, comprising instructions for causing the at least one processor to obtain the first application programming interface and the second application programming interface from a storage device associated with the browser application.
16. A non-transitory computer-readable medium storing executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations, the operations comprising rendering web content having items selectable by a user to perform a transaction on a blockchain network; in response to receiving a selection of an item selectable by the user, receiving, by a browser application, an authenticated transaction request from a digital asset holder that manages a private key for accessing data on the blockchain network to add the transaction to the blockchain network; transmitting, by the browser application, the authenticated transaction request to the blockchain network; receiving, by the browser application, from the blockchain network, a transaction response including a transaction identifier of the transaction added to the blockchain network; transmitting, by the browser application, a notification message including the transaction identifier to the digital asset holder; A non-transitory computer-readable medium comprising the above.
17. The operations include transmitting, by the browser application, an asset request to the digital asset holder; receiving, by the browser application, from the digital asset holder, an asset list identifying a plurality of digital assets stored in the blockchain network; displaying a user interface object including the plurality of digital assets; sending, in response to a selection of one of the plurality of digital assets, a request for authenticating the transaction to the digital asset holder; The non-transitory computer-readable medium according to claim 16, further comprising.
18. The operation is The non-transitory computer-readable medium according to claim 16 or 17, further comprising rendering, by the browser application, an item selectable by a user to connect to the digital asset holder that manages the private key for accessing the data of the blockchain network.
19. The operation is communicating between the browser application and the digital asset holder via a first application programming interface; communicating between the browser application and the blockchain network via a second application programming interface; The non-transitory computer-readable medium according to any one of claims 16 to 18, further comprising.
20. The operation is The non-transitory computer-readable medium according to claim 19, further comprising obtaining the first application programming interface and the second application programming interface from a storage device associated with the browser application.
21. obtaining, by a browser application, an identifier associated with a token stored in a blockchain network; retrieving, by the browser application, digital data of the token using the identifier; customizing a user interface of the browser application using the digital data of the token; A method comprising.
22. A method comprising Receiving, by an application executable by a computing device, transaction information for completing a blockchain transaction with a requesting party, the transaction information specifying a first type of digital asset and a transaction amount, the method further comprising providing an interface to the computing device to receive a selection of a second type of digital asset associated with a digital asset holder; and sending, by the application, to the digital asset exchange, a conversion request configured to cause the digital asset exchange to convert the transaction amount of the user's digital assets of the digital asset holder from the second type of digital asset to the first type of digital asset; and sending, by the application, a transaction request to a blockchain network to initiate completion of the blockchain transaction; and A method comprising.
23. Detecting, by an operating system of a computing device, a blockchain transaction request from an application; and In response to the blockchain transaction request, determining whether a digital asset holder is registered as a default digital asset holder; and In response to determining that the digital asset holder is registered as the default digital asset holder, forwarding, from the application to the default digital asset holder, an intent request to process a blockchain transaction; and Forwarding, from the default digital asset holder to the application, an intent response identifying a result of the blockchain transaction; and A method comprising.
24. A computing system, comprising: at least one processor; and a memory storing instructions that, when executed by the computing system, perform the method of any one of claims 21-23; and A computing system comprising.
Citation Information
Patent Citations
Providing cryptocurrency payments through a browser application programming interface
JP2020523716A
Information processing method, information processing apparatus, and program
JP2021022160A
Method and system for mobile cryptocurrency wallet connectivity
US20210056541A1
Computer-implemented system and method
WO2021064504A1
Method and system for merchant acceptance of cryptocurrency via payment rails
WO2021262090A1