Ethers adapter that facilitates the interaction with the Safe Services
The only adapter currently provided is the SafeEthersSigner
which implements the Signer
interface from Ethers.
The SafeEthersSigner
can be used with Ethers Contracts to deploy and interact with them. Each of these interactions will create a Safe transaction that is published to the Safe transaction service.
For this to work it is required to initialize the SafeEthersSigner
with an account that is either an owner of the specified Safe or a delegate of one of the owners.
An example for such an account would be the private key of one of the owners that is used with an Ethers Wallet
const signer = new Wallet("some_private_key", ethereumProvider)
It is also necessary to specify a service instance that should be used to publish the Safe transactions. An example for this would be the Mainnet instance of the Safe Transaction Service: https://safe-transaction-mainnet.safe.global/
const service = new SafeService("some_service_url")
A Safe instance must also be created before obtaining the signer. It may be obtained with:
import { ethers } from "ethers"
import Safe from "@safe-global/safe-core-sdk"
import EthersAdapter from "@safe-global/safe-ethers-lib"
const safe = await Safe.create({
ethAdapter: new EthersAdapter({ ethers, signerOrProvider }),
safeAddress: "some_safe_address"
})
Using these components it is possible to create an instance of the SafeEthersSigner
const safeSigner = new SafeEthersSigner(safe, service, provider)
See examples for more information.
Select correct nvm version:
nvm use
Install the package with yarn or npm:
yarn install
npm install
Build the package with yarn or npm:
yarn build
npm build
This library is released under MIT.
- Richard Meisser (rmeissner)
- Germán Martínez (germartinez)