Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
The Aarc SDK is a TypeScript library that makes it easy for developers to transfer assets from Externally Owned Accounts (EOA) to any destination address. It simplifies the asset transfer process by supporting various token standards, such as ERC20 and ER
The Aarc SDK is a TypeScript library that makes it easy for developers to transfer assets from Externally Owned Accounts (EOA) to any destination address. It simplifies the asset transfer process by supporting various token standards, such as ERC20 and ERC721, and offering custom flows like batched transactions, gasless transactions, and paying gas fees with the same asset being moved. Additionally, it enables custom contract interaction within the same transaction using permit2(), allowing for direct swaps and bridge functionality.
Install ethers.js and Aarc SDK using npm:
npm install ethers@5.7.2 aarc-sdk
To use Aarc SDK, an API key is required. Get the API Key from the Dashboard. You can learn about getting the API Key from here.
[!NOTE] We only accept funds on Polygon Mainnet & Polygon Mumbai Testnet. However, these funds can be transacted on any supported mainnet or testnet.
Import and initialise the Aarc SDK in your project.
import { AarcSDK } from "aarc-sdk";
let aarcSDK = new AarcSDK({
rpcUrl: rpcUrl,
chainId: chainId,
apiKey: "YOUR_API_KEY",
});
Retrieve balances of all tokens in an EOA wallet:
let balances = await aarcSDK.fetchBalances(
eoaAddress: string,
fetchBalancesOnly: true,
tokenAddress: string[] // Optional: Array of specific token addresses
);
Transfer tokens from EOA to any receiver wallet address:
await aarcSDK.executeMigration({
senderSigner: signer, // ethers.signer object
receiverAddress:'RECEIVER_WALLET_ADDRESS',
transferTokenDetails: // Optional. If not passed, the SDK will migrate all the tokens of the wallet
[
{
tokenAddress:TOKEN1_ADDRESS,
amount?:TOKEN1_AMOUNT.toString(16), // Vaule in HEX as String
tokenIds?: string[] // tokenIds for nfts
},
...
]
})
// Returns the response given below
[
{
tokenAddress: string;
taskId?: string;
amount?: string;
message: string;
txHash?: string;
tokenId?: string;
},
]
Transfer tokens from EOA to any receiver wallet address without paying gas fees.
await aarcSDK.executeMigrationGasless({
senderSigner: signer, // ethers.signer object
receiverAddress:RECEIVER_WALLET_ADDRESS,
transferTokenDetails: // Optional. If not passed, the SDK will migrate all the tokens of the wallet
[
{
tokenAddress:TOKEN1_ADDRESS,
amount?:TOKEN1_AMOUNT.toString(16), // Vaule in HEX as String
tokenIds?: string[] // tokenIds for nfts
},
...
]
})
// Returns the response given below
[
{
tokenAddress: string;
taskId?: string;
amount?: string;
message: string;
txHash?: string;
tokenId?: string;
},
]
Transfer tokens from EOA to any receiver wallet address by paying gas in Stable Coins.
await aarcSDK.executeForwardTransaction({
senderSigner: signer,
receiverAddress:"0x786E6045eacb96cAe0259cd761e151b68B85bdA7"
});
[!NOTE] AARC SDK currently supports a few of the Stable Tokens on different networks. You can check about them here.
The Aarc SDK seamlessly integrates with different smart wallets.
Aarc SDk currently supports the following Smart Wallet Providers:
enum WALLET_TYPE {
BICONOMY,
SAFE,
ALCHEMY,
ZERODEV,
}
You have the capability to deploy Smart Wallets by utilizing the provided code snippets.
The code snippet below showcases how to deploy a wallet using the AarcSDK. It involves specifying essential parameters such as the owner's address (EOA_ADDRESS
), the type of wallet (WALLET_TYPE
) to deploy, the signer
(ethers.signer object), and an optional index for deploying multiple wallets under the same EOA.
[!NOTE] If the wallet corresponding to the provided owner address (
EOA_ADDRESS
) and index (deploymentWalletIndex
) is already deployed, the deployment process will not occur.
import { WALLET_TYPE } from "aarc-sdk/dist/utils/AarcTypes";
await aarcSDK.deployWallet({
owner: EOA_ADDRESS,
walletType: WALLET_TYPE.SAFE, // Smart Contract Wallet Provider.SAFE, // Smart Contract Wallet Provider
signer: signer, // ethers.signer object
deploymentWalletIndex: 0 // Optional -- Number: Since an EOA, can be used to deploy multiple wallets. you can supply any index and it will deploy wallet for you
})
To get the address of your Smart Wallet you can use the following code snippet:
The code snippet below showcases how to get a smart wallet address using the AarcSDK. It involves specifying essential parameters such as the owner's address (EOA_ADDRESS
) and the type of wallet (WALLET_TYPE
).
import { WALLET_TYPE } from "aarc-sdk/dist/utils/AarcTypes";
await aarcSDK.getSmartWalletAddresses({
walletType: WALLET_TYPE.SAFE, // Smart Contract Wallet Provider
owner: OWNER_ADDRESS // Smart Wallet Owner's address
});
The following code snippet demonstrates a method to transfer native tokens while simultaneously deploying a wallet using the aarcSDK.
This code snippet illustrates a process to transfer native tokens and deploy a wallet concurrently using the aarcSDK
. Essential parameters such as the owner's address (EOA_ADDRESS
), the type of wallet to deploy (WALLET_TYPE
), the signer
(ethers.signer object), the receiver's wallet address (RECEIVER_WALLET_ADDRESS
), an optional amount of tokens to transfer (amount
), and an index for deploying multiple wallets under the same EOA (deploymentWalletIndex
) are included.
[!NOTE]
- If the wallet corresponding to the provided owner address (
EOA_ADDRESS
) and index (deploymentWalletIndex
) is already deployed, the deployment process will not occur, and only the token transfer will be executed.- Get the
receiverAddress
for Smart Wallet for the owner address using the getSmartWalletAddresses.- If
amount
not mentioned, then sdk will transfer 80% of the balance to the receiverAddress.
import { WALLET_TYPE } from "aarc-sdk/dist/utils/AarcTypes";
await aarcSDK.transferNativeAndDeploy({
owner: EOA_ADDRESS,
walletType: WALLET_TYPE, // Smart Contract Wallet Provider
signer: signer, // ethers.signer object
receiverAddress: RECEIVER_WALLET_ADDRESS,
amount?: TOKEN_AMOUNT.toString(16), // Optional. Vaule in HEX as String. If not paseed 80% of native tokens will get transferred.
deploymentWalletIndex: 0 // Optional -- Number: Since an EOA, can be used to deploy multiple wallets. you can supply any index and it will deploy wallet for you
})
// Returns the response given below
This project is licensed under the MIT License - see the LICENSE for details.
For support or to share feedback, please schedule a call with us here. You can also share your ideas and feedback on our community forum.
FAQs
The Aarc SDK is a TypeScript library that makes it easy for developers to transfer assets from Externally Owned Accounts (EOA) to any destination address. It simplifies the asset transfer process by supporting various token standards, such as ERC20 and ER
We found that aarc-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.