Immersive UX

Make Web3 unseen

Onboard both Web2 and Web3 users to your app

Custom Authentication

Create wallets for users instead of requiring them to already have one.

Remove Signing Popups

Avoid context switching and latency.

Powering top apps on Sui

Powering innovative crypto teams

const txb = new TransactionBlock();
const [coin1, coin2] = txb.splitCoins(
  txb.object(sourceCoinId),
  [txb.pure(10000), txb.pure(20000)]
);
txb.transferObjects(
  [coin1, coin2],
  txb.pure(sender)
);
const gaslessTx = await txb.build({provider: suiProvider, onlyTransactionKind: true});
const gaslessTxBase64 = btoa(
  gaslessTx.reduce((data, byte) => data + String.fromCharCode(byte), '')
);

const sessionToken = await keyService.shinami_key_createSession(SECRET);
const response = await walletService.shinami_wal_executeGaslessTransactionBlock(
  WALLET_ID,
  sessionToken,
  gaslessTxBase64,
  GAS_BUDGET
);