Main features

A pub/sub API for Ethereum contracts perfect for optimistic updates

The Tasit SDK provides JavaScript/TypeScript middleware for reading from and writing to smart contracts (and listening to events) through an expressive pub/sub API. Meta-transactions are a first-class feature of the API for interacting with contracts.

As a mobile developer, using the Tasit SDK to interact with the backend should be as simple as using Firebase as a backend-as-a-service. This library is written in such a way that the developer using the SDK can just think about writing data and listening for more data. The fact that there's a blockchain powering this is an implementation detail that is abstracted away.

This middleware wraps the core ethers.js contract API for making JSON-RPC requests.

Here is a lot more info about how this can be used.

tasit-action is the child package that implements these features for the Tasit SDK.

This makes the experience for new developers working on a mobile app with the Tasit SDK simpler, which means more mobile dapps for end users.

Onboarding with ephemeral accounts, contract-based accounts, and deep-linking to and from mobile wallets

Apps built with the Tasit SDK use an autogenerated in-app ephemeral account for the user to start with. We call it ephemeral (or burner or whatever you like) because it should never be the main place you hold your funds, and we don't ask you to back up the seed phrase for it. This brings the benefits of contract-based wallets like Gnosis Safe and Argent to dapps.

Once you have enough value that you shouldn't hold it with that account, it can either be added as a signer to a contract-based account or move funds back and forth to a mobile wallet through deep-linking.

This SDK takes an opinionated approach to onboarding (although since it's a modular repo, you still retain the ability to use other child packages and not the onboarding-related ones if you prefer). The SDK supports read-only mode, meta-transactions, smart-contract-based accounts, and connecting with your mobile Ethereum wallet.

Read-only for as long as possible

A native mobile dapp should be read-only for as long as possible. The user shouldn't know there's a blockchain involved or see anything about an account, and an Ethereum account shouldn't even be created until it becomes necessary. Why go through an onboarding flow at all right away?

This flow for reading data from contracts without onboarding first just works with no special configuration. So in a sense tasit-action is the child package that implements these features, but really these are just the basic features of that child package we've already discussed.

Ephemeral account and private key generation

Using the Tasit SDK, you can generate a new Ethereum account and private key.

The Tasit SDK makes it simple for a new account to be instantiated in each mobile app it is used in.

The intended UX is that this account should NOT have any significant amount of ETH, ERC20, or ERC721 tokens sent to it. This app is NOT a wallet. Instead, this address should be authorized to perform actions on behalf of a smart-contract-based account or software wallet a user already has with some ETH or tokens. This is an ephemeral account for that app on the device, and as the user gets more familiar with it their account can be progressively upgraded to a personal DAO later or their funds can be stored in their preferred primary software wallet.

tasit-account is the child package that implements these features for the Tasit SDK.

This means fewer steps that need to be taken to onboard a new user.

For users new to Ethereum with no funds

For users without any ETH or tokens, any costs the user incurs at first should be subsidized. Give them a smart-contract-based account so that the UX around securing keys and recovering funds is simpler.

This can be done using meta-transactions or UniversalLoginSDK (ERC 1077 and 1078) or GnosisSafe or an Aragon personal DAO.

The approach with meta-transactions (and universal login) is that the user's account is only used to sign messages, and then as a developer you can use your preferred centralized or decentralized solution to relay that as an Ethereum tx and pay and/or be rewarded as each solution sees fit.

tasit-contract-based-account is the child package that implements these features for the Tasit SDK.

For users that do have funds

Connects with your preferred mobile Ethereum wallet. Using ERC20+721 approvals or WalletConnect.

Users can continue to keep their funds in a proper wallet with better security guarantees if they do already have ETH, tokens, etc. and use them with this dapp.

A user flow where a dapp's ephemeral account requests an approval for X ERC20 tokens of type A or one ERC721 token of type B is supported in the SDK.

Through compatibility with WalletConnect, any standalone dapp can be authorized to take actions in a way that has only been possible in wallet apps to date. The wallet might be the Gnosis Safe personal edition, the Balance wallet, Status, Coinbase Wallet, Argent, BRD, etc.

tasit-link-wallet is the child package that implements these features for the Tasit SDK.

Wrapping up onboarding

This means a flow that users will be used to which decreases the friction for onboarding people who have used other Ethereum dapps.

Have a strong opinion on which onboarding flow we should prioritize the most? Please reach out!

Advanced support for popular ERC standards and heavily used contracts

Classes of smart contracts we support include NFTs, TCRs, DAOs, and two-sided marketplaces (like Gitcoin, CryptoCribs, Ethlance, etc.). There’s an ERC-standard-specific JavaScript/TypeScript API wrapping the lower-level Tasit SDK API for reading and writing and listening for data so that the function-names in the Tasit SDK are tailored to that type of dapp. As long as we’ve built the tooling to interact with that class of dapp at least once before, the Tasit SDK can “automagically” support any new dapp of that type.

tasit-action is the child package that implements these features for the Tasit SDK.

This means there’s a network effect for the Tasit SDK, so once we have a few apps using it, it will be much faster to make new apps with it.

A CLI for scaffolding a mobile dapp

The Decentraland and CryptoKitties apps generated using tasit init --nft ship with styled-but-customizable React Native components for using each feature of the dapp, leveraging the js middleware.

This feature lives over in our tasit repo - details here - since it's tightly integrated with the React Native mobile dapp codebase.

This also makes the experience for new developers working on a mobile app with the Tasit SDK simpler, which also means more mobile dapps for end users.

A library of native mobile dapp components

This feature lives over in our tasit repo - here - since it's tightly integrated with the React Native mobile dapp codebase.


Go back to the home page of the docs