Wallet Services
Provide a great user experience by creating embedded wallets for your users.
What's in this doc?
This guide provides a high-level summary of Shinami's Wallet Services and the benefits it provides to your application. We also show you an image of a transaction flow so you can better understand what an integration entails.
Wallet Services overview
What is a wallet?
A wallet represents an address on a blockchain where a users stores things they own (APT and other tokens, NFTs, etc). Each address has a private key needed to authorize any action taken by that address, and a wallet is the software that safely stores that private key and uses it to authorize (sign) actions the user wants to take with that address.
Wallets exist on a spectrum from a hardware wallet that the user has more secure control over but is a lot of a effort to manage and use, to an embedded wallet that the user has less control over but removes all of the friction.
Wallet Type | User Friction | User has the same wallet for multiple apps? | User has to manage their private key and complete signing popups for each transaction? |
---|---|---|---|
Connected hardware wallet (e.g. a Ledger wallet) | High | Yes | Yes |
Connected browser extension or mobile app wallet (e.g. the Petra Aptos Wallet) | Medium | Yes | Yes |
Embedded wallet (e.g. a Shinami Invisible Wallet) | None | No (one per app) | No |
Why use Shinami Invisible Wallets? To have a frictionless UX.
A connected wallet means users must approve each transaction. This means they don't need to place a lot of trust in the apps they interact with. These wallets are also portable across apps, so that a user can have one address to interact with all the apps they use if desired. However, these wallets require Web3 familiarity that Web2 users don't have. They require users to download a wallet app and manage their private keys through seed-phrases. They also present friction that interrupts a user's engagement with your app, like signing popups.
By comparison, Shinami Invisible Wallets abstract away private key management and disruptive signing popups. They offer a convenient, on-chain way to store the assets a user obtains through interacting with your app (for example, an NFT representing an in-game character). Whereas Aptos Keyless wallets rely on a user's Google login, Invisible Wallets work with whatever existing authentication your app has in place (e.g. SSO, email+password, magic link, one-time-passcode to email or SMS, no auth, etc). Additionally, Invisible Wallets pair easily with Shinami Gas Station, which helps you pay the small gas fees for your users' transactions. This means your users don't have the friction of completing KYC to buy APT and then sending it to their wallet, which can lead Web2-native users to abandon your app. Finally, these wallets are tied to your app, meaning a user cannot connect them to another app. This boundary goes both ways, though: another app can't mess with, say, an NFT you give a user.
Invisible Wallets wallets, therefore, offer an on-ramp for Web2-native users onto Web3 applications. They offer ownership that lacks the full user-control of connected, self-custody wallets. In exchange, they allow you to provide the great, frictionless user experience that Web2 users are used to. As users get more comfortable with Web3, you can graduate their assets to full self-custody wallets they control if desired.
What is a wallet service?
A wallet service provides the infrastructure you need to
- generate a new wallet for each of your users
- sign the transactions that represent the actions taken by the user (e.g. leveling up their game NFT)
- (typical, but not required) sponsor and execute those transactions.
By using Shinami's Wallet Services, you can focus on building out your app and creating a great user experience. You just interact with our easy-to-use API and we take care of the rest!
Transaction Flow Diagram
Invisible Wallet
Steps of the transaction flow
Before the transaction flow, your app previously created a unique, unchangeable (walletID, secret) pair tied to the user's id in your system and used it to create an Invisible Wallet for the user. This is shown in the box titled "Previously."
Transaction flow steps:
- The user defeats a boss and earns the right to upgrade their hero's stats. They decide how to upgrade them and click "Upgrade" on your app's frontend.
- Your app's backend constructs a fee payer transaction that will upgrade the user's hero as they chose.
- Your app's backend sends one request to Shinami, which conveniently does all of the following:
- Signs the transaction using the Invisible Wallet for the user.
- Sponsors the transaction's gas fee using your Gas Station fund.
- Submits the transaction to the Aptos blockchain to update the player's hero NFT.
Developer resources
- For a look at the API, see our Invisible Wallet API doc.
- For an end-to-end tutorial, see our Invisible Wallet TypeScript Tutorial.
Updated about 2 months ago