Get Started on zkSync Era

Install Ramper SDK

npm i @ramper/zksync

or

yarn add @ramper/zksync

User signup & login

import {
  init,
  AUTH_PROVIDERS,
  CHAIN,
  THEME,
  WALLET_PROVIDER,
  SUPPORTED_ZKSYNC_ERA_NETWORKS
} from '@ramper/zksync'
import { getWalletModel, User } from '@ramper/core'

init({
  appName: 'zKsync Test App',
  authProviders: [
    AUTH_PROVIDER.GOOGLE,
    AUTH_PROVIDER.FACEBOOK,
    AUTH_PROVIDER.TWITTER,
    AUTH_PROVIDER.APPLE,
    AUTH_PROVIDER.EMAIL
  ],
  walletProviders: [WALLET_PROVIDER.METAMASK],
  network: SUPPORTED_ZKSYNC_ERA_NETWORKS.MAINNET,
  theme: THEME.DARK,
})

const signInResult = await signIn()

Calling await signIn(walletToUse) launch the log in dialog and return a signInResult when the user successfully logs in or connects an account

Get logged-in user

import { getUser } from '@ramper/zksync'

const user = getUser()

Send Token

The following code demonstrates how to send a token from a wallet belonging to the signed in user or a connected wallet.

import { sendToken } from '@ramper/zksync'

try {
  const isSuccess = await sendToken({
    to: '0xa419dfa199Df8651c3f4476546AF5E4CC4E0F73F',
    value: '0.000001',
    network: 'mainnet'
  })
  console.log('sendToken result: ', isSuccess)
} catch (e) {
  console.error(e)
}

Get ethers.js compatible signer

Once you have obtained a Signer, you can use the familiar ethers.js functions to write your DApp. See Signers for reference if you aren't already familiar with ethers.js

signTransaction, signMessage and sendTransaction functions are implemented

import { sendTransaction, signTransaction, signMessage } from '@ramper/zksync'

try {
  sendTransaction({
    from: wallet?.publicKey as string,
    data: '0x',
    gasLimit: gasLimit.toString(),
    nonce,
    to: transaction.receiver,
    value: transaction.amount,
  })
  
  signTransaction({
    from: wallet?.publicKey as string,
    data: '0x',
    gasLimit: gasLimit.toString(),
    nonce,
    to: transaction.receiver,
    value: transaction.amount,
  })
  
  signMessage(message)
} catch (e) {
  console.log(e)
}

We highly recommend you use Promise for the fields that need network access to be determined, such as nonce and gasLimit, etc.

If sendTransaction is triggered by a button, for example, and you perform all the accesses before actually calling sendTransaction, we've noticed the popup window for the user confirmation can be blocked by Safari.

Sign out

Users can log out or disconnect their wallet with:

import { signOut } from '@ramper/zksync'

await signOut()

Yup, it really is just that easy!

If there's any feature you would like to see or design patterns you would like for the Ramper team to adopt, come chat with us.

NPM Source: https://www.npmjs.com/package/@ramper/zksync

Last updated