Integrating extensions and customizations into blockchain wallets.
A sandboxed plugin environment within blockchain wallets allows secure integration of custom functionalities, addressing the need for enterprise-specific applications without compromising security, enhancing usability and scalability.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- AVA LABS INC
- Filing Date
- 2024-03-22
- Publication Date
- 2026-06-11
AI Technical Summary
Existing blockchain wallets lack a cost-effective and secure method to integrate custom functionalities and applications specific to enterprise needs without compromising security.
A sandbox environment within the blockchain wallet that communicates via a secure message gateway, allowing plugins to provide additional services while isolating them from the main wallet, ensuring security and scalability.
Enables enterprises to add custom functionalities to blockchain wallets securely and efficiently, maintaining security and decentralization, and facilitating quicker market entry for channel-specific use cases.
Smart Images

Figure 2026518939000001 
Figure 2026518939000002 
Figure 2026518939000003
Abstract
Description
【Technical Field】 【0001】 Cross - reference to Related Applications This application claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 492,203, filed on March 24, 2023, the disclosure of which is hereby incorporated by reference in its entirety for all purposes. 【0002】 The present disclosure generally relates to extending a blockchain wallet and adding custom functions without posing security risks to users. More specifically, the present disclosure relates to a method for enabling enterprises / developers to write channel - specific applications and adding customized functions that can be used as plugins added to a blockchain wallet. 【Background Art】 【0003】 A blockchain is a database that maintains records for transactions and tracks assets associated with users distributed across a blockchain network. A blockchain wallet enables distributed users within a blockchain network to store, send, receive, and manage their digital assets on the blockchain. With a blockchain wallet, users can not only send, receive, store, and exchange value on the blockchain, but also monitor and manage the value of their assets on the blockchain. 【Summary of the Invention】 【0004】 According to some embodiments, a method for extending and customizing a blockchain wallet includes: providing multiple users of a blockchain platform with a blockchain wallet configured to provide multiple first standard services to multiple users; providing multiple users with a sandbox environment that communicates only with the blockchain wallet via a secure message gateway; storing a plugin in the sandbox environment configured to provide multiple second add-on services; and running the plugin within the sandbox environment to enable the plugin to provide multiple second add-on services to multiple users as an extension of the blockchain wallet via a secure message gateway. 【0005】 According to some embodiments, a non-temporary computer-readable medium stores a program for extending and customizing a blockchain wallet, the program stores a plugin configured to, when executed by a computer, provide the computer with a blockchain wallet configured to provide multiple users of a blockchain platform with a blockchain wallet configured to provide multiple users with a first set of standard services, provide multiple users with a sandbox environment that communicates only with the blockchain wallet via a secure message gateway, and provide the sandbox environment with a second set of add-on services, and the plugin is configured to run within the sandbox environment to enable the plugin to provide the second set of add-on services to multiple users as an extension of the blockchain wallet via a secure message gateway. 【0006】 According to some embodiments, a system for extending and customizing a blockchain wallet comprises a processor and a non-temporary computer-readable medium for storing a set of instructions, the set of instructions for storing a plugin configured to, when executed by the processor, provide the processor with a blockchain wallet configured to provide multiple users of a blockchain platform with a blockchain wallet configured to provide multiple users with a first set of standard services, provide multiple users with a sandbox environment that communicates only with the blockchain wallet via a secure message gateway, and provide the sandbox environment with a second set of add-on services, and the plugin is executed within the sandbox environment to enable the plugin to provide multiple users with a second set of add-on services as an extension of the blockchain wallet via a secure message gateway. [Brief explanation of the drawing] 【0007】 The accompanying drawings, included to provide a further understanding and incorporated herein, and constituting part of herein, illustrate the disclosed embodiments and, together with the specification, help to illustrate the principles of the disclosed embodiments. 【0008】 [Figure 1] This is a block diagram of a device operating environment that can implement the embodiments of this disclosure. [Figure 2] This is an exemplary block diagram of an exemplary system according to a particular aspect of the present disclosure. [Figure 3] This is an exemplary block diagram of an exemplary workflow for adding services to a product, according to a particular aspect of this disclosure. [Figure 4] This is a flowchart illustrating blocks in a method for customization integration according to a particular aspect of the present disclosure. [Figure 5] This block diagram illustrates a system for adding customization and functionality to a blockchain wallet, according to a particular aspect of this disclosure. [Figure 6] This is a block diagram illustrating an exemplary computer system capable of implementing an aspect of the target technology. [Figure 7] This flowchart illustrates the process of customizing and extending a blockchain wallet using several embodiments. [Figure 8] This document presents a system for customizing and extending blockchain wallets, based on several embodiments. [Figure 9] This document presents a system for customizing and extending blockchain wallets, based on several embodiments. 【0009】 In one or more implementations, not all components depicted in each figure are necessarily required, and one or more implementations may include additional components not shown in the figures. Variations may be made in the arrangement and type of components without departing from the scope of this disclosure. Additional components, different components, or fewer components may be used within the scope of the disclosure. [Modes for carrying out the invention] 【0010】 To illustrate hardware and software compatibility, various illustrative blocks, modules, components, methods, operations, instructions, and algorithms are generally described in terms of their functionality. Whether such functionality is implemented in hardware, software, or a combination of hardware and software depends on the specific application and design constraints imposed on the overall system. A person skilled in the art can implement the described functionality in various ways for each specific application. 【0011】 Blockchain platforms, such as smart contracts, may require a consensus protocol as a fundamental building block for constructing decentralized systems. For example, a blockchain platform may include multiple blockchains, such as a component exchange blockchain for creating and trading digital smart assets, a metadata blockchain for coordinating validators and tracking and creating subnets, and a contract blockchain for creating smart contracts across the entire blockchain network. A blockchain wallet runs on the blockchain and stores transactions associated with a specific address or public and private key. The private and public key pair may be cryptographically linked to secure the blockchain wallet. A blockchain wallet can be associated with a public and private key. For example, a blockchain wallet address may be generated per transaction using the public key. When sending (or receiving) a transaction through a blockchain wallet, only the private key associated with the public key may be used to decrypt the information encrypted by the sender. Blockchain wallets may also implement other security measures to further enhance the security and privacy of transactions. Thus, blockchain wallets enable peer-to-peer communication and secure transactions between decentralized users. Another advantage of blockchain wallets is that they can also be utilized by enterprises or developers. Such use cases may require more customized features and applications specific to the channel-specific enterprise (e.g., government agencies, healthcare, gaming, etc.), in which case making a standard version of the blockchain wallet widely available would not make sense. Approaches to customizing the wallet may include copying the blockchain wallet and then customizing its functionality according to the enterprise's desired features.However, this would not be a cost- / time-efficient approach, as there is no simple way to copy a blockchain wallet and then customize the functionality, appearance, and / or feel of a particular company's wallet. 【0012】 As a result, including decentralized wallet plugins that can be added to blockchain wallets is advantageous and represents a technical improvement for blockchain wallets. To solve the above technical problems, aspects of the embodiment relate to a system, method, and machine-readable medium that provides the ability to extend blockchain wallets and add custom functionality without introducing security risks. This enables other companies / developers to write channel-specific applications while leveraging existing blockchain wallets as base applications. This provides the ability to extend wallets, reach the market more quickly, address channel-specific use cases, and maintain blockchain security assurances. 【0013】 In some embodiments, a plugin (hereinafter equivalently referred to as “integration”) is stored as a bundle (e.g., compiled code or library) built on an agreed server, and an inline frame (abbreviated as “iframe”) is placed within the wallet at a pre-configured entry point. An iframe is an HTML element that allows loading of another HTML page within a parent document or web object (e.g., the wallet) and can operate as a completely separate browsing environment capable of loading its own JavaScript and CSS independently of the parent site (e.g., the wallet). When the iframe is presented, the plugin code / bundle is requested and executed within its own runtime environment. Once loaded, the integration may have an application programming interface (API) available to communicate with the wallet itself. Limited, the API may allow requesting a signature and retrieving certain data, etc., so that the integration can be displayed correctly. In some embodiments, the integration may not run automatically within the wallet but instead be provided as an item that can be added to the wallet. If the user chooses to allow the integration, the integration will be placed in a predefined space. 【0014】 Some embodiments provide a custom skinned subnet that pulls a custom stylesheet (CSS) from the wallet provider to provide the plugin with visual styling that matches the wallet's visual styling. In some embodiments, multiple skins may be available for the user to choose from. In some embodiments, the same skin is synchronized across web, mobile, and devices for the same user or account. 【0015】 Some embodiments provide a place to retrieve data display layers from an external server by working with a dApp to obtain a parser with the necessary data attached, thereby providing a location for custom parsed and skinned transactions. In some embodiments, a widget is provided to pass the data and lock them into an iframe. In some such cases, control over the sign button and the actual data being signed will be held by the wallet provider. 【0016】 Some embodiments provide widget integration so that dApps can push widget enable from their own apps and install / enable them in a wallet. 【0017】 Figure 1 is a block diagram of a device operating environment that can implement aspects of the present disclosure. Figure 1 illustrates an exemplary network architecture 100 for providing a blockchain platform (e.g., a blockchain network implementation / deployment platform) for managing proposed blocks to be added to the blockchain, according to several embodiments. The blockchain can be a linear chain of blocks of the same dimensions, e.g., the same height, size, length, etc. Blocks in the blockchain can contain or store data or organized information (e.g., a record of information), including, for example, the cryptographic hash, timestamp, and transaction data of the previous block. The network architecture 100 of Figure 1 includes one or more participants 110 and one or more participants 130, which are communicably connected via a network 150. The blockchain architecture of network architecture 100 can be a distributed database that maintains a continuously growing list of records ordered as blocks. The blockchain architecture can implement methods and systems according to one or more embodiments (e.g., customizing the blockchain using plug-ins). It will be understood that participants 130 may also include participants 110, as participants 110 are peers. 【0018】 For example, participants 110 / 130 may be clients of a blockchain platform for creating, expanding, or otherwise modifying customized blockchain networks and / or private or public subnets. For example, participant 110 may be a different computer linked by network 150 within the blockchain network having the same database. For example, participant 110 may function as a validator or proposer for proposing or adding blocks to an existing blockchain. For example, participant 110 may be a virtual machine (VM) forming a node in blockchain network architecture 100. As a node, participant 110 can run software to validate block and transaction data for an existing blockchain, store data, verify its validity, and respond to network requests for data. The VM may be a computer running on the blockchain that allows smart contracts from multiple sources to interact with each other. Participant 110 may generate blocks at a request by participant 130, for example, via participant 130's consensus engine or module, at a specific time, such as during a specific time submission window. Blocks that are generated and proposed for addition to an existing blockchain may be validated to ensure they are valid blocks before being added. 【0019】 Network 150 may include a wired network (e.g., via optical fiber or copper wire, telephone line, etc.) or a wireless network (e.g., cellular network, radio frequency (RF) network, Wi-Fi, Bluetooth, etc.). Participant 110 can be any one of a mobile device, laptop, desktop, tablet (e.g., palm or pad) device, television, display device, etc. Participant 110 can be controlled by a user as a set of validator nodes for making decisions tandemly, such as to facilitate the operation or design of the blockchain implementation of the blockchain platform. 【0020】 As discussed herein, blockchain network architecture 100 can incorporate the application of a consensus protocol that is high throughput, fully ordered, and valid for smart contracts. Smart contracts can refer to self-executing computer programs, applications, or contracts for executing transactions such as financial transactions including cryptocurrencies. Blockchain network architecture 100 can be used for the creation of custom blockchains (including private blockchains) and decentralized applications (dApps). The consensus protocol can be for the purpose of reaching an agreement on the validity of user transactions, adding blocks to an existing blockchain, interacting with external resources (e.g., off-chain), etc. The consensus protocol implemented by blockchain network architecture 100 can be a decentralized leaderless block proposal mechanism that processes multiple valid block proposals in parallel and restricts the submission of proposals to an existing blockchain. As an example, blockchain network architecture 100 can use repeated sub-sample voting, and validators can provide a strong probabilistic guarantee of correctness (e.g., safety and liveness) without communicating with other validators. 【0021】 Furthermore, the blockchain network architecture 100 can improve block proposals by reducing the processing load / cost associated with processing multiple block proposals in parallel and selecting one proposal from multiple parallel proposals. The wrapped blockchain and reference block header described herein can restrict proposals to favorably avoid additional load on validators and commitment latency. Multiple participants 110 may have access to the blockchain platform hosted by participant 130 via online or offline connections such as wireless, wired, ad-hoc, mobile, and satellite connections. Each participant 130 may be a computing device such as one or more desktop computers or part of a cloud computing server, including a rack-mounted panel. The panel may include a processing board and also a switchboard, router, and other network devices. The blockchain network architecture 100 enables participants 110 / 130 to seamlessly transfer assets between chains. 【0022】 Participant 130 may store data of an existing blockchain in a peer-to-peer (P2P) and / or distributed ledger format. In particular, Participant 130 may cooperate and function to autonomously manage a decentralized database of an existing blockchain via a P2P network and the Participant 130's distributed timestamp server. Participant 130 may be configured to implement a plurality of chains of the blockchain network architecture 100. For example, Participant 130 may implement a plurality of chains of the blockchain network architecture 100, such as an asset blockchain (e.g., for creation of new assets, asset exchange, cross-subnet transfer), a metadata blockchain (e.g., for validator coordination, tracking of active subnets, and creation of new subnets), a smart contract blockchain (e.g., for creation of smart contracts and applications that require total ordering), etc. The plurality of chains may be validated by the primary network of the blockchain network architecture 100 that includes all existing subnets. 【0023】 The servers of participant 110 and one or more participants 130 in the computing network may access each other and other devices within the network 150 via corresponding communication modules. Each communication module may include radio hardware and software such as RF antennas, analog circuits, digital-to-analog converters, and digital signal processing circuits. Generally, participants 110 and 130 comprise a computing device including at least a memory for storing instructions and a processor configured to execute instructions for at least partially performing one or more steps described in the methods disclosed herein. For example, the memory of participant 110 (not shown in Figure 1) may be used to perform functions associated with a blockchain platform hosted by participant 130. The processor may be used to operate participant 110, such as executing applications and their functions rendered on participant 110. The techniques described herein may be implemented as a method implemented by a physical computing device, as one or more non-temporary computer-readable storage media that store instructions causing the method to be implemented when executed by a computing device, or as a physical computing device specifically configured with a combination of hardware and software causing the method to be implemented. 【0024】 Figure 2 is an exemplary block diagram of an exemplary system 200 in one or more embodiments. System 200 may include a base blockchain 202 and a sandbox environment 204. The base blockchain 202 and the sandbox environment 204 may communicate via a secure message gateway 206. System 200 allows third parties to write integrations directly into their own code while providing certain guarantees regarding the authenticity of the plug-ins, and users can ensure that these integrations are included without compromising user security or ease of use. 【0025】 According to the embodiment, the base blockchain 202 includes a product (e.g., a blockchain wallet) that provides a standard set of functionality to users of the blockchain. The sandbox environment 204 may also include an additional suite of functionality and / or services (i.e., a plug-in 208) available to users. The plug-in 208 may include one or more functionalities that can be added to the product. The plug-in 208 adds custom functionality to the product without introducing security risks to the system 200. Users (e.g., enterprises, developers, etc.) can use the plug-in 208 to extend the standard set of functionality of the base blockchain 202 from the sandbox environment 204. The added functionality may be plug-in computer software, which adds new functionality to the host program (e.g., the base blockchain 202) without modifying the host program itself, thereby achieving a secure, decentralized, and scalable blockchain network. The added functionality is isolated within the sandbox environment 204 from the software, programs, and functionalities of the base blockchain 202. The added functionality can be sandboxed, allowing access only to certain resources, programs, and files within the base blockchain 202 or blockchain network. Sandboxing the added functionality prevents it from posing security risks to the blockchain or blockchain network. 【0026】 According to the embodiment, the plugin 208 may include added functionality, as well as the look and feel of the product, or customization of the product to one or more applications. A user (e.g., a company, developer, etc.) may select one or more of the additional functionality and / or customizations available in the sandbox environment 204 and add the plugin 208 corresponding to the selected functionality via the secure message gateway 206. The secure message gateway 206 ensures that the selected plugin from the sandbox environment 204 is authorized / accepted by the host program. That is, according to some embodiments, the additional functionality must be compatible and authorized by the base blockchain 202 before the plugin is added. In some implementations, the selection of services acts as authorization, enabling the integration of the plugin into the product. 【0027】 Figure 3 is an exemplary block diagram of an exemplary workflow 300 for adding services to a product, according to one or more embodiments. The services may be one or more of the functionalities / customizations included as plugins 208 within a sandbox environment 204. The product may correspond to a base blockchain 202. 【0028】 According to some embodiments, product 302 may include an instance collection 304 of services to be provided. For example, the service instance collection 304 may include a standard set of services for the product (i.e., the base application). In some implementations, the service instance collection 304 may also include one or more previously added add-on services. Previously added add-on services may be built by the user or a third party and dropped into the user's application. Add-ons may be retrieved from a marketplace, for example (as illustrated with reference to Figure 4). The user may select services from the add-on service suite 306. Embodiments may include generating a new version of the product. The new version of the product may be extended based on at least selected services. In some implementations, the new version of the product may be extended to any of the services from the add-on service suite 306. The selected services are then added to the set of services 304 and implemented as extensions to the product. The selected services may add functionality to product 302 based on authorization from the user and at the user's own risk. 【0029】 Based on user selection, the embodiment may output a fully functional product that can be white-labeled by a third party in the form of compiled code. The output may be stored as a new version of the product. This ensures that any new version created continues to support and use the base service (i.e., the standard set of product functionality). 【0030】 In some embodiments, other applications may be integrated into the product. These applications may reside within the product (e.g., a web-based or mobile wallet). As an example, an application may be integrated into a blockchain wallet. In some implementations, an entire dApp may be embedded in a blockchain wallet. A dApp may be accessed, added, or removed via an application tab. An application tab may be a frame that allows users to add tabs for applications (such as games) or frequently used applications. For example, a user may embed a game or a light version of a game directly into an application as a tab. An application tab may be a personalized launch pad for applications that have all native primitive functionalities (e.g., signing, sending, receiving, wallet address, connectivity, networking, etc.). 【0031】 Figure 4 is a flowchart illustrating blocks in Method 400 for customized integration according to several embodiments. 【0032】 As shown in Figure 4, in S402, method 400 includes establishing a sandbox environment (e.g., sandbox environment 204). The sandbox environment provides the user with a means to build and integrate customizations into the base product or application. Any add-ons or plug-ins, as described herein, may be stored in the sandbox environment as customizations. Customizations may include code or software components that add specific functionality to an existing computer program. 【0033】 In S404, Method 400 includes establishing a security framework to ensure that customizations do not pose a security risk to the base product or application. 【0034】 In S406, Method 400 includes establishing a marketplace. Users can register their built customizations in the marketplace. Customizations are not limited to extensions and are made so that they can be dropped into any various runtime applications (e.g., web, extensions, mobile, etc.). The marketplace can be accessed by other users, companies, and / or developers. This allows third parties to take full advantage of the various features provided across the platform. In S408, Method 400 includes making the marketplace public to users within the network. Thus, customizations can reach the market faster, at which point third-party users can benefit and add the pre-built functionality and customizations to their own base products / applications. 【0035】 In some embodiments, the built customizations are stored as bundles on an agreed-upon server. In some implementations, when a service is selected, an inline frame (iframe) is placed in the blockchain wallet (i.e., the product) at a pre-configured entry point. When the iframe is presented, code (corresponding to the selected service) is requested and executed in its own runtime environment associated with the blockchain wallet. Once the service is loaded, the integration will have an application programming interface (API) available to communicate with the blockchain wallet. The API may, to a limited extent, allow requesting, signing, and retrieving data so that the integration can be displayed correctly to the user. 【0036】 Figure 5 is a block diagram illustrating a system 500 for adding customization and functionality to a blockchain wallet in several embodiments. As shown in Figure 5, a dApp 502 is embedded in the blockchain wallet 504. When a plugin is selected, the plugin code 506 is fetched from a partner (e.g., a sandbox environment 204). A unified resource locator (URL) 508 indicating the location of the webpage corresponding to the plugin may also be fetched from the partner. Then, an iframe 510 is embedded in the blockchain wallet 504. The iframe may also be embedded in the blockchain wallet webpage identified by the blockchain URL / API 512. This may occur when a blockchain subnet is selected. In some implementations, the iframe 510 is embedded whenever a plugin or extension is opened or selected. This allows the fetched code to run in its own context and outside the scope of the code running the blockchain wallet. The blockchain wallet 504 and the iframe 510 may be connected in connection 514. Connection 514 may be a restricted API exposed to iframe 510 by the blockchain URL / API 512, where iframe 510 defines parameters about what is allowed and what is not. This makes it possible to integrate and secure plugin code 506 from partners into the blockchain wallet 504. Connection 514 may be restricted by the blockchain wallet based on predetermined parameters and may communicate with iframe 510 using the API. Blockchain code 516 may be fetched from the blockchain wallet 504 based on the blockchain URL / API 512. 【0037】 Figure 6 is a block diagram illustrating an exemplary computer system 600 in which an embodiment of the technology in question may be implemented. In a particular embodiment, the computer system 600 may be implemented using hardware, or a combination of software and hardware, either as a dedicated server, integrated into another entity, or distributed across multiple entities. 【0038】 A computer system 600 (e.g., a server and / or client) includes a bus 608 or other communication mechanism for communicating information and a processor 602 coupled to the bus 608 for processing information. For example, a computer system 600 may be implemented by one or more processors 602. Each of the one or more processors 602 may be a general-purpose microprocessor, a microcontroller, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a programmable logic device (PLD), a controller, a state machine, gated logic, a discrete hardware component, or any other suitable entity capable of performing computation or other operations on information. 【0039】 In addition to the hardware, the computer system 600 may include code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or one or more combinations thereof, stored in the accompanying memory 604, such as code that creates an execution environment for the computer program in question, for example, random access memory (RAM), flash memory, read-only memory (ROM), programmable read-only memory (PROM), erasable PROM (EPROM), registers, hard disks, removable disks, CD-ROMs, DVDs, or any other suitable storage devices coupled to the bus 608 for storing information and instructions executed by the processor 602. The processor 602 and memory 604 may be supplemented by or incorporated into a particular-purpose logic circuit. 【0040】 Instructions are stored in memory 604 and may be implemented in one or more modules of computer program instructions that are encoded on a computer-readable medium to be executed by one or more computer program products, i.e., computer system 600, or encoded on a computer-readable medium to control the operation of computer system 600, in any way well known to those skilled in the art, including but not limited to computer languages such as data-oriented languages (e.g., SQL, dBase), system languages (e.g., C, Objective-C, C++, Assembly), architecture languages (e.g., Java, NET), and application languages (e.g., PHP, Ruby, Perl, Python). Instructions can also be implemented in computer languages such as array languages, aspect-oriented languages, assembly languages, authoring languages, command-line interface languages, compiled languages, concurrent languages, curly brace languages, data flow languages, data structure languages, declarative languages, esoteric languages, extended languages, fourth-generation languages, functional languages, interactive mode languages, interpreted languages, iterative languages, list-based languages, little languages, logic-based languages, machine languages, macro languages, metaprogramming languages, multi-paradigm languages, numerical analysis, non-English-based languages, object-oriented class-based languages, object-oriented prototype-based languages, offside rule languages, procedural languages, reflexive languages, rule-based languages, scripting languages, stack-based languages, synchronous languages, syntactic processing languages, visual languages, Worth languages, and XML-based languages. Memory 604 can also be used to store temporary variables or other intermediate information during the execution of instructions performed by processor 602. 【0041】 Computer programs as considered herein do not necessarily correspond to files in a file system. A program may be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., a file storing one or more modules, subprograms, or portions of code). Computer programs may be deployed to run on one or more computers located at one site or distributed across multiple sites and interconnected by a communication network. The processes and logical flows described herein may be implemented by one or more programmable processors that execute one or more computer programs to perform their functions by manipulating input data and producing outputs. 【0042】 The computer system 600 further includes a data storage device 606, such as a magnetic disk or optical disk, coupled to a bus 608 for storing information and instructions. The computer system 600 may be coupled to various devices via an input / output module 610. The input / output module 610 can be any input / output module. An exemplary input / output module 610 includes a data port, such as a USB port. The input / output module 610 is configured to connect to a communication module 612. An exemplary communication module 612 includes a networking interface card, such as an Ethernet card and a modem. In certain embodiments, the input / output module 610 is configured to connect to multiple devices, such as an input device 614 and / or an output device 616. An exemplary input device 614 includes a keyboard and a pointing device, such as a mouse or trackball, through which a user can provide input to the computer system 600. Other types of input devices can also be used to provide user interaction, such as a tactile input device, a visual input device, a voice input device, or a brain-computer interface device. For example, the feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback, and input from the user may be received in any form, including acoustic, voice, tactile, or electroencephalogram (EEG) input. An exemplary output device 616 includes a display device such as an LCD (liquid crystal display) monitor for displaying information to the user. 【0043】 According to one aspect of the present disclosure, the system described above can be implemented using a computer system 600 in response to a processor 602 executing one or more sequences of one or more instructions contained in memory 604. Such instructions may be read into memory 604 from another machine-readable medium, such as a data storage device 606. Upon executing the sequence of instructions contained in main memory 604, the processor 602 performs the process steps described herein. One or more processors in a multiprocessing configuration may also be used to execute the sequence of instructions contained in memory 604. In alternative embodiments, hard-wired circuits may be used instead of or in combination with software instructions to implement various aspects of the present disclosure. Thus, aspects of the present disclosure are not limited to any specific combination of hardware circuits and software. 【0044】 Various embodiments of the subject matter described herein can be implemented in a computing system that includes, for example, backend components such as data servers, middleware components such as application servers, or frontend components such as client computers having a graphical user interface or a web browser, and a user can interact with the implementation of the subject matter described herein through the graphical user interface or a web browser, or with any combination of one or more such backend, middleware, or frontend components. The components of the system can be interconnected by any form or medium of digital data communication, such as a communication network. The communication network may include, for example, one or more of LANs, WANs, and the Internet. Furthermore, the communication network may include, but is not limited to, one or more of the following network topologies, such as bus networks, star networks, ring networks, mesh networks, starbus networks, tree or hierarchical networks. The communication module may be, for example, a modem or an Ethernet card. 【0045】 The computer system 600 may include a client and a server. The client and server are generally remote from each other and typically interact through a communication network. The client-server relationship is established by computer programs running on each computer that have a client-server relationship with each other. The computer system 600 may be, for example, a desktop computer, a laptop computer, or a tablet computer, for example. The computer system 600 may also be embedded in another device, for example, a mobile phone, a PDA, a mobile audio player, a Global Positioning System (GPS) receiver, a video game console, and / or a television set-top box, for example. 【0046】 The terms “machine-readable storage medium” or “computer-readable medium” as used herein refer to any medium or medium involved in providing instructions to processor 602 for execution. Such mediums can take many forms, including but are not limited to non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical or magnetic disks such as data storage device 606. Volatile media include dynamic memory such as memory 604. Transmission media include coaxial cables, copper wires, and optical fibers, including wires that constitute bus 608. Common forms of machine-readable media include, for example, floppy disks, flexible disks, hard disks, magnetic tapes, any other magnetic media, CD-ROMs, DVDs, any other optical media, punch cards, paper tapes, any other physical media having a pattern of holes, RAM, PROMs, EPROMs, FLASH EPROMs, any other memory chips or cartridges, or any other media that a computer can read. A machine-readable memory medium can be a machine-readable memory device, a machine-readable memory substrate, a memory device, a composition of a substance that affects machine-readable propagated signals, or a combination of one or more of these. 【0047】 Figure 7 is a flowchart illustrating process 700 for customizing and extending a blockchain wallet in several embodiments. 【0048】 In S702, process 700 provides users of the blockchain platform with a blockchain wallet configured to provide users with a set of standard services. 【0049】 In S704, process 700 provides a sandbox environment on the blockchain platform that communicates only with the blockchain wallet via a secure message gateway. In some embodiments, the plugin includes an application programming interface for communicating with the blockchain wallet. From the sandbox, the plugin has restricted access to the blockchain wallet's resources, programs, and files. 【0050】 In S706, process 700 stores a plugin configured to provide a set of add-on services to the sandbox environment. In some embodiments, the plugin is selected by the user, for example, from a set of plugins in a marketplace. The add-on services may include functionality and customization for one or more applications of the blockchain wallet (e.g., decentralized applications, or dApps). 【0051】 In S708, process 700 executes the plugin in a sandbox environment to enable the plugin to provide add-on services to users as an extension of the blockchain wallet via a secure message gateway. In some embodiments, process 700 requires authorization before executing the plugin in the sandbox environment. 【0052】 In some embodiments, the blockchain wallet includes a first user interface, the plugin includes a second user interface, the first user interface includes an inline frame, and the inline frame displays the second user interface. Process 700 may execute the plugin in a sandbox environment in response to displaying the inline frame within the first user interface. 【0053】 In some embodiments, process 700 generates a new blockchain wallet by integrating the plugin into the original blockchain wallet and providing the new blockchain wallet to the user of the blockchain platform. Since the new blockchain wallet integrates the plugin with the original wallet, the new blockchain wallet is configured to provide the user with both standard and add-on services. In some embodiments, the new blockchain wallet is generated by compiling the original blockchain wallet and the plugin. In some embodiments, process 700 further obtains user authorization to integrate the plugin into the blockchain wallet (and prior to doing so). 【0054】 In some embodiments, process 700 further includes embedding one or more decentralized applications (dApps) into the blockchain wallet. The dApps may be displayed within the blockchain wallet's user interface as corresponding application tabs. 【0055】 Figure 8 shows a system 800 for customizing and extending a blockchain wallet in several embodiments. The system 800 includes a user 805 who interacts with a blockchain wallet 810 having a user interface 812 that retrieves plugin code 815 (e.g., source code, executable code, script, etc.) from an external source via a public network (e.g., the internet, a wide area network, etc.). When user 805 opens the blockchain wallet 810, the wallet's user interface 812 loads the plugin's user interface 820. In some embodiments, the plugin's user interface 820 is loaded previously, and the extension points of the wallet's user interface 812 are predefined. The extension points may be defined by the configuration of the blockchain wallet 810. The blockchain wallet 810 may verify the integrity of the plugin code 815 before displaying it. 【0056】 In this example, the wallet user interface 812 displays the plugin user interface 820 within the sandbox 825. The plugin user interface 820 can then make a custom remote procedure call (RPC) defined by the plugin code 815 to the custom RPC handler 830. If the plugin code 815 is registered, the RPC handler 830 invokes the plugin engine 840 to execute the RPC. 【0057】 The plugin engine 840 creates a sandbox 845 that executes a script (not shown) within a sandboxed HTML page. The script configures the sandbox 845 to load the plugin code 815 and may also check the integrity of the plugin code. After verifying the integrity of the plugin code 815, the sandbox executes the plugin code 815 and returns the result of executing the plugin code 815 to the plugin engine 840. The plugin engine 840 provides the result to the RPC handler 830, which returns the result to the plugin's user interface 820 for display. 【0058】 Figure 9 shows another example of System 900 for customizing and extending a blockchain wallet, according to several embodiments. In this example, the blockchain wallet is extended and customized using plugins, but the plugins do not require a user interface that requires its own sandbox environment. System 900 is similar to the embodiment of System 800 discussed above with respect to Figure 8, and the same reference numbers are used to refer to the same or similar components. A detailed description of these components is omitted, and the following discussion will focus on the differences between these embodiments. Any of the various features discussed in any one of the embodiments discussed herein may also be applied to any other embodiment and may be used in conjunction with any other embodiment. 【0059】 System 900 includes a blockchain wallet 910 that executes plugin code 915 (e.g., source code, executable code, script, etc.) from a third-party website 920 via a public network (e.g., the internet, a wide area network, etc.). The blockchain wallet 910 includes a custom RPC handler 930 and a plugin engine 940, as well as a plugin installation RPC handler 942. The plugin code 915 is executed within a sandbox 945. 【0060】 In this example, the plugin installation RPC handler 942 retrieves and installs the plugin package 950 (e.g., manifest, additional files, resources, etc.). The plugin installation RPC handler 942 may be provided with a URL for the plugin package 950 and uses that URL to retrieve the plugin package 950. The plugin installation RPC handler 942 loads and stores the plugin in the registry of the plugin engine 940. The plugin package 950 may also include a plugin script, which is used by the plugin engine 940 to automate the loading and instantiation of the plugin code 915, as described below. 【0061】 Next, the third-party website 920 may make a custom remote procedure call (RPC) previously defined by the plugin to the RPC handler 930. The RPC handler 930 verifies that the plugin is registered (for example, installed in the registry of the plugin engine 940), and then invokes the plugin engine 940 to execute the RPC call. 【0062】 The plug-in engine 940 creates a sandbox 945 that executes the plug-in script (not shown) within a sandboxed HTML page. The script configures the sandbox 945 to load the plug-in code 915 and may also check the integrity of the plug-in code before execution. Within the sandbox 945, only information defined by the plug-in's permissions, such as but not limited to address information, network information, and storage information, is exposed to the plug-in code 915. 【0063】 Sandbox 945 loads plugin code 915, and if integrity verification is successful, executes plugin code 815. Sandbox 945 returns the result of executing plugin code 915 to plugin engine 940. Plugin engine 940 provides the result to RPC handler 930, which returns the result to third-party website 920 for display. 【0064】 Embodiments consistent with this disclosure may include the computer implementation methods described in Clause 1, which are combinations of any number and permutations of the following elements: 【0065】 Clause 1: According to one or more embodiments, a computer implementation method includes generating a sandbox environment isolated from blockchain wallets in the network; identifying one or more plugins, wherein one or more plugins include code for additional functionality and / or services; receiving a selection of at least one of the one or more plugins; generating a new version of the blockchain wallet by integrating at least one plugin into the blockchain wallet via a secure message gateway as an extension to the blockchain wallet, based on the selection; generating a marketplace containing one or more plugins; and publishing the marketplace to the network. 【0066】 Element 1: One or more plugins can be created by users or third parties of the blockchain wallet. Element 2: One or more plugins are stored in a sandbox environment. Element 3: The method includes publishing a new version of the blockchain wallet to the network. Element 4: One or more plugins have restricted access to certain resources, programs, and files within the blockchain wallet. Element 5: When a plugin is integrated into the blockchain wallet, it adds functionality and customization to one or more applications of the blockchain wallet. Element 6: The method includes requiring authorization before integrating a plugin. Element 7: The method includes obtaining user authorization to integrate at least one plugin into the blockchain wallet. Element 8: The method includes outputting a new version of the blockchain wallet, where the new version is a fully functional product having the blockchain wallet as the base application. Element 9: Embed a dApp into the blockchain wallet and display the embedded dApp as an application tab in the blockchain wallet interface. Element 10: The application tab is a personalized launchpad for applications with native primitive functionality. 【0067】 The techniques described herein may be implemented as a method performed by a physical computing device, as one or more non-temporary computer-readable storage media that store instructions causing the method to be performed when executed by a computing device, or as a physical computing device specially configured with a combination of hardware and software that causes the method to be performed. 【0068】 The phrase “at least one of” preceding a set of items, accompanied by the terms “and” or “or” to separate any of the items, when used herein, qualifies the list as a whole, rather than each member of the list (i.e., each item). The phrase “at least one of” does not require the selection of at least one item; rather, the phrase allows for meanings including at least one of any one of the items, and / or at least one of any combination of items, and / or at least one of each of the items. For example, the phrases “at least one of A, B, or C” or “at least one of A, B, or C” refer to A only, B only, or C only, any combination of A, B, and C, and / or at least one of each of A, B, and C, respectively. 【0069】 To the extent that terms such as “include” and “have” are used in the description or claims, such terms are intended to be inclusive in the same manner as the term “comprise” is interpreted as “comprise” when used as a transitional term in a claim. The term “exemplary” is used herein to mean “serving as an example, case, or illustration.” No embodiment described herein as “exemplary” should necessarily be construed as being preferable or advantageous to any other embodiment. 【0070】 References to elements in the singular form are intended to mean "one or more" rather than "one and only one" unless specifically stated otherwise. All structural and functional equivalents to elements of the various configurations described throughout this disclosure, whether known to those skilled in the art or later known, are expressly incorporated by reference herein and are intended to be encompassed by the subject art. Furthermore, nothing disclosed herein is intended to be for the public only, whether such disclosure is expressly enumerated in the above specification. Elements of a patent claim should not be construed under Section 112, paragraph 6 of the United States Patent Act unless those elements are expressly enumerated using the phrase "means for" or, in the case of a method, unless those elements are enumerated using the phrase "steps for". 【0071】 While this specification contains many details, these should not be interpreted as limitations on the scope that can be claimed, but rather as descriptions of specific implementations of the subject matter. Certain features described herein in the context of separate embodiments may be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may be implemented separately in multiple embodiments or in any preferred partial combination. Furthermore, features are described above as acting in a particular combination and are initially claimed as such, but in some cases, one or more features from the claimed combination may be removed from the combination, and the claimed combination may be subject to a partial combination or a variation of a partial combination. 【0072】 Those skilled in the art will understand that the various illustrative blocks, modules, elements, components, methods, and algorithms described herein can be implemented as electronic hardware, computer software, or a combination of both. To illustrate this hardware and software compatibility, the various illustrative blocks, modules, elements, components, methods, and algorithms are generally described above in terms of their function. Whether such functions are implemented as hardware or software depends on the specific application and design constraints imposed on the overall system. Those skilled in the art can implement the described functions in various ways for each specific application. The various components and blocks can be arranged differently (e.g., in different orders or divided in different ways) without deviating from the scope of the subject art. 【0073】 While the subject matter of this specification is described in terms of specific embodiments, other embodiments may be implemented and are within the scope of the following claims. For example, although the operations are depicted in a specific order in the drawings, this should not be understood as meaning that such operations must be performed in a specific order or sequence shown, or that all illustrated operations must be performed in order to achieve a desired result. The actions enumerated in the claims may be performed in a different order and still achieve the desired result. As an example, the processes depicted in the accompanying drawings do not necessarily require a specific order or sequence shown to achieve a desired result. In certain circumstances, multitasking and parallel processing may be advantageous. Furthermore, the separation of various system components in the embodiments described above should not be understood as meaning that such separation is necessary in all embodiments, and the described program components and systems may generally be integrated together in a single software product or packaged in multiple software products.
Claims
[Claim 1] A method for extending and customizing a blockchain wallet, To provide a blockchain wallet configured to provide multiple users of a blockchain platform with a set of first standard services to those users, On the aforementioned blockchain platform, a sandbox environment is provided that communicates only with the blockchain wallet via a secure message gateway. The aforementioned sandbox environment stores a plugin configured to provide a second set of add-on services, A method comprising running the plugin in the sandbox environment in order to enable the plugin to provide the second multiple add-on services to the multiple users as an extension of the blockchain wallet via the secure message gateway. [Claim 2] The method according to claim 1, wherein the plugin includes an application programming interface for communicating with the blockchain wallet. [Claim 3] The method according to claim 1, wherein the blockchain wallet includes a first user interface, the plugin includes a second user interface, the first user interface includes an inline frame, and the inline frame displays the second user interface. [Claim 4] The method according to claim 3, further comprising running the plugin in the sandbox environment in response to displaying the inline frame within the first user interface. [Claim 5] The method according to claim 1, wherein the blockchain wallet is a first blockchain wallet, and the method further comprises generating a second blockchain wallet by integrating the plugin into the first blockchain wallet and providing the second blockchain wallet to the plurality of users of the blockchain platform, wherein the second blockchain wallet is configured to provide both the first plurality of standard services and the second plurality of add-on services to the plurality of users. [Claim 6] The method according to claim 5, wherein the second blockchain wallet is generated by compiling the first blockchain wallet and the plugin. [Claim 7] The method according to claim 1, further comprising obtaining user authorization to integrate the plugin into the blockchain wallet. [Claim 8] The method according to claim 1, wherein the plugin is selected by the user from a plurality of plugins in the marketplace. [Claim 9] The method according to claim 1, wherein the plugin has restricted access to the resources, programs, and files of the blockchain wallet. [Claim 10] The method according to claim 1, wherein the second plurality of add-on services include functionality and customization for one or more applications of the blockchain wallet. [Claim 11] The method according to claim 1, further comprising requiring authorization before executing the plugin within the sandbox environment. [Claim 12] Embedding multiple decentralized applications into the aforementioned blockchain wallet, The method according to claim 1, further comprising displaying the embedded plurality of decentralized applications as corresponding application tabs within the user interface of the blockchain wallet. [Claim 13] A non-temporary computer-readable medium for storing a program for extending and customizing a blockchain wallet, wherein the program, when executed by a computer, the computer, A blockchain wallet is provided to multiple users of the blockchain platform, configured to provide the multiple users with a first set of standard services. On the aforementioned blockchain platform, a sandbox environment is provided that communicates only with the blockchain wallet via a secure message gateway. The aforementioned sandbox environment stores a plugin configured to provide a second set of add-on services, A non-temporary computer-readable medium configured to run the plugin within the sandbox environment, in order to enable the plugin to provide the second multiple add-on services to the multiple users as an extension of the blockchain wallet via the secure message gateway. [Claim 14] The non-temporary computer-readable medium according to claim 13, wherein the plugin includes an application programming interface for communicating with the blockchain wallet, and the plugin has restricted access to the resources, programs, and files of the blockchain wallet. [Claim 15] The non-temporary computer-readable medium according to claim 13, wherein the blockchain wallet includes a first user interface, the plugin includes a second user interface, the first user interface includes an inline frame, the inline frame displays the second user interface, and the program is further configured to run the plugin in a sandbox environment in response to displaying the inline frame within the first user interface when the computer is executed. [Claim 16] The non-temporary computer-readable medium according to claim 13, wherein the blockchain wallet is a first blockchain wallet, and the program is further configured to generate a second blockchain wallet when executed by the computer by integrating the plugin into the first blockchain wallet and providing the second blockchain wallet to the plurality of users of the blockchain platform, and the second blockchain wallet is configured to provide both the first plurality of standard services and the second plurality of add-on services to the plurality of users. [Claim 17] The non-temporary computer-readable medium according to claim 16, wherein the second blockchain wallet is generated by compiling the first blockchain wallet and the plugin. [Claim 18] The non-temporary computer-readable medium according to claim 13, wherein the plugin is selected by the user from a plurality of plugins in the marketplace. [Claim 19] When the aforementioned program is executed by the computer, the computer will be subjected to the following actions: By embedding multiple decentralized applications into the aforementioned blockchain wallet, The embedded multiple decentralized applications are displayed as corresponding application tabs within the user interface of the blockchain wallet. The non-temporary computer-readable medium according to claim 13, further configured as follows. [Claim 20] A system for extending and customizing blockchain wallets, Processor and A non-temporary computer-readable medium for storing a set of instructions, wherein when the set of instructions is executed by the processor, the processor is configured to... A blockchain wallet is provided to multiple users of the blockchain platform, configured to provide the multiple users with a first set of standard services. On the aforementioned blockchain platform, a sandbox environment is provided that communicates only with the blockchain wallet via a secure message gateway. The aforementioned sandbox environment stores a plugin configured to provide a second set of add-on services, A system configured to run the plugin within the sandbox environment in order to enable the plugin to provide the second multiple add-on services to the multiple users as an extension of the blockchain wallet via the secure message gateway.