Skip to main content

Get Started

Overview

Welcome to the developer section of the zrSign protocol.

This section contains information about the zrSign smart contracts, how to interact with it, the provided functions, deployed instances, and a reference implementation how to connect a dapp with zrSign.

Zenrock's MPC nodes are connected asynchronously to the zrSign smart contract and are subscribed to new key and signature requests that get published on zrSign. Only Zenrock's MPCs are authorized to publish responses with public keys and signatures.

zrSign Smart Contracts

All smart contracts are made for the evm ecosystem and are deployed in solidity. Find the deployed and supported smart contracts in the addresses page.

zrSign

zrSign exposes core external functions that can be called either directly or by other smart contracts. Those are zrKeyReq to request a new public key as well as different signature request functions.

  • zrSignHash - a signature request for a hash, which can be used to obfuscate the actual signing mechanisms.
  • zrSignData - a signature request for arbitrary data, for example personal sign requests.
  • zrSignTx - a signature request for unsigned transactions. Requires to assemble the unsigned tx and the signature to relay it to the destination chain.

A more detailed description can be found at the functions page.

Furthermore, zrSign provides functions to query existing keys or wallets as well as further information such as walletTypeInfo or supported chainIds.

Signature lifecycles are tracked with a traceId, which allows for improved managing and referencing of a request for the MPCs and also the caller.

Lastly, this contract also provides setters for key and signature request fees, which can only be called by the zrSign admin.

zrProxy

zrSign is an upgradeable smart contract protocol enabled by the zrProxy smart contract. The upgradeablity through this proxy allows Zenrock to upgrade the zrSign protocol without introducing breaking changes to dApps that are integrating zrSign. This backwards capability allows us to provide the best possible way of adding and improving features while giving the best experience to our developers.

Reference Implementations

To make adopting and integrating zrSign as seamless as possible, there are reference implementations available under reference implementation.