Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
@safe-global/safe-apps-provider
Advanced tools
@safe-global/safe-apps-provider is an npm package that provides a Web3 provider for Safe Apps. It allows developers to interact with the Gnosis Safe smart contract and build decentralized applications (dApps) that can be used within the Gnosis Safe ecosystem.
Initialize Safe Apps Provider
This feature allows you to initialize the Safe Apps Provider with the Gnosis Safe information and the Ethereum provider. It sets up the Web3 instance to interact with the Gnosis Safe smart contract.
const { SafeAppProvider } = require('@safe-global/safe-apps-provider');
const Web3 = require('web3');
const safe = { /* Safe information */ };
const provider = new SafeAppProvider(safe, window.ethereum);
const web3 = new Web3(provider);
Send Transactions
This feature allows you to send transactions from the Gnosis Safe. You can specify the sender address, recipient address, value, and data for the transaction.
const tx = {
from: '0xYourSafeAddress',
to: '0xRecipientAddress',
value: web3.utils.toWei('1', 'ether'),
data: '0x',
};
web3.eth.sendTransaction(tx).then(receipt => {
console.log('Transaction receipt:', receipt);
});
Call Smart Contract Methods
This feature allows you to call smart contract methods using the Safe Apps Provider. You can interact with any smart contract by specifying the ABI and contract address.
const contract = new web3.eth.Contract(abi, contractAddress);
contract.methods.myMethod().call({ from: '0xYourSafeAddress' }).then(result => {
console.log('Method call result:', result);
});
web3 is a popular JavaScript library for interacting with the Ethereum blockchain. It provides a comprehensive set of features for sending transactions, interacting with smart contracts, and querying blockchain data. Compared to @safe-global/safe-apps-provider, web3 is more general-purpose and not specifically tailored for Gnosis Safe.
ethers is a lightweight library for interacting with the Ethereum blockchain and its ecosystem. It offers similar functionalities to web3 but with a more modern and modular design. Like web3, ethers is not specifically designed for Gnosis Safe but can be used in conjunction with it.
truffle is a development framework for Ethereum that provides tools for smart contract development, testing, and deployment. While it includes features for interacting with the Ethereum blockchain, it is more focused on the development lifecycle of smart contracts rather than providing a Web3 provider for dApps.
This is a provider that follows common standards (e.g. EIP-1193) and can be used with various Web3 libraries (e.g. web3.js or Ethers)
yarn add @safe-global/safe-apps-provider
npm i @safe-global/safe-apps-provider
The provider can be used with the safe-apps-react-sdk and common web3 libraries.
import React, { useMemo } from 'react';
import { ethers } from 'ethers';
import { useSafeAppsSDK } from '@safe-global/safe-apps-react-sdk';
import { SafeAppProvider } from '@safe-global/safe-apps-provider';
const App = () => {
const { sdk, safe } = useSafeAppsSDK();
const web3Provider = useMemo(() => new ethers.providers.Web3Provider(new SafeAppProvider(safe, sdk)), [sdk, safe]);
// use provider with contracts
return;
};
export default App;
import React, { useMemo } from 'react';
import Web3 from 'web3';
import { useSafeAppsSDK } from '@safe-global/safe-apps-react-sdk';
import { SafeAppProvider } from '@safe-global/safe-apps-provider';
const App = () => {
const { sdk, safe } = useSafeAppsSDK();
const web3Provider = useMemo(() => new Web3(new SafeAppProvider(safe, sdk)), [sdk, safe]);
// use provider with contracts
return;
};
export default App;
The ethereum transaction gas limit passed to the safe-apps-provider will be treated as safeTxGas, which is an equivalent of the ethereum transaction gas limit in the Safe context. To learn more about the safe transaction gas, read here:
https://github.com/safe-global/safe-contracts/blob/c36bcab46578a442862d043e12a83fec41143dec/docs/safe_tx_gas.md
If you don't want to pass a calculation and leave it to the Safe, pass 0 as the gas limit.
For the SDK overview documentation, please refer to the safe-apps-sdk documentation
FAQs
A provider wrapper of Safe Apps SDK
We found that @safe-global/safe-apps-provider demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.