pub async fn transfer(
        &self,
        token_address: Address,
        amount: U256,
        to: H160,
        options: Option<Options>,
    ) -> Result<H256, ClientError> {
        let signed_tx = if is_token_eth(token_address) {
            let options = Options {
                value: Some(amount),
                gas: Some(300_000.into()),
                ..options.unwrap_or_default()
            };
            self.client()
                .sign_prepared_tx_for_addr(Vec::new(), to, options)
                .await
                .map_err(|_| ClientError::IncorrectCredentials)?
        } else {
            let contract_function = self
                .erc20_abi
                .function("transfer")
                .expect("failed to get function parameters");
            let params = (to, amount);
            let data = contract_function
                .encode_input(&params.into_tokens())
                .expect("failed to encode parameters");

            self.client()
                .sign_prepared_tx_for_addr(
                    data,
                    token_address,
                    Options {
                        gas: Some(300_000.into()),
                        ..options.unwrap_or_default()
                    },
                )
                .await
                .map_err(|_| ClientError::IncorrectCredentials)?
        };

        let transaction_hash = self
            .query_client()
            .send_raw_tx(signed_tx.raw_tx)
            .await
            .map_err(|err| ClientError::NetworkError(err.to_string()))?;

        Ok(transaction_hash)
    }
Performs a transfer of funds from one Ethereum account to another.
Note: This operation is performed on Ethereum, and not related to ZKsync directly.
core/tests/loadnext/src/sdk/ethereum/mod.rs