alpha-wallet-ios icon indicating copy to clipboard operation
alpha-wallet-ios copied to clipboard

https://bsc-dataseed.binance.org - Request timeout error only in ios 17 devices.

Open Broem43 opened this issue 2 years ago • 7 comments

          https://bsc-dataseed.binance.org  - Request timeout error only in ios 17 devices.

convertToUserFriendlyError URL: https://bsc-dataseed.binance.org error: connectionError(Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x10951cad0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <9A26F30F-242E-4051-BB66-A63EA51E6236>.<565>, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask <9A26F30F-242E-4051-BB66-A63EA51E6236>.<565>" ), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://bsc-dataseed.binance.org/, NSErrorFailingURLKey=https://bsc-dataseed.binance.org/, _kCFStreamErrorDomainKey=4})

Originally posted by @akhilccrb in https://github.com/AlphaWallet/alpha-wallet-ios/issues/7008#issuecomment-1748175311

Broem43 avatar Oct 07 '23 12:10 Broem43

did you fix this @Broem43 ??

akhilccrb avatar Oct 16 '23 13:10 akhilccrb

@akhilccrb Hi! Is there a simple way I can reproduce this reliably?

hboon avatar Oct 17 '23 04:10 hboon

public func signTransaction(_ transaction: UnsignedTransaction, prompt: String) -> Result<Data, KeystoreError> {
    let signer: Signer
    if transaction.server.chainID == 0 {
        signer = HomesteadSigner()
    } else {
        signer = EIP155Signer(server: transaction.server)
    }

    do {
        let hash = try signer.hash(transaction: transaction)
        switch getPrivateKeyForSigning(forAccount: transaction.account, prompt: prompt) {
        case .seed, .seedPhrase:
            return .failure(.failedToExportPrivateKey)
        case .key(let key):
            let signature = try EthereumSigner().sign(hash: hash, withPrivateKey: key)
            let (r, s, v) = signer.values(transaction: transaction, signature: signature)
            let values: [Any] = [
                transaction.nonce,
                transaction.gasPrice,
                transaction.gasLimit,
                transaction.to?.data ?? Data(),
                transaction.value,
                transaction.data,
                v, r, s,
            ]
            //NOTE: avoid app crash, returns with return error, Happens when amount to send less then 0
            guard let data = RLP.encode(values) else {
                return .failure(.failedToSignTransaction)
            }
            return .success(data)
        case .userCancelled:
            return .failure(.userCancelled)
        case .notFound, .otherFailure:
            return .failure(.accountMayNeedImportingAgainOrEnablePasscode)
        }
    } catch {
        return .failure(.failedToSignTransaction)
    }
}

akhilccrb avatar Oct 20 '23 12:10 akhilccrb

This is signing error so how to change signer class ? @hboon

akhilccrb avatar Oct 24 '23 07:10 akhilccrb

@hboon @akhilccrb Encounter same issue, need help!

YangJian2014 avatar Dec 02 '23 07:12 YangJian2014

public func signTransaction(_ transaction: UnsignedTransaction, prompt: String) -> Result<Data, KeystoreError> {
    let signer: Signer
    if transaction.server.chainID == 0 {
        signer = HomesteadSigner()
    } else {
        signer = EIP155Signer(server: transaction.server)
    }

    do {
        let hash = try signer.hash(transaction: transaction)
        switch getPrivateKeyForSigning(forAccount: transaction.account, prompt: prompt) {
        case .seed, .seedPhrase:
            return .failure(.failedToExportPrivateKey)
        case .key(let key):
            let signature = try EthereumSigner().sign(hash: hash, withPrivateKey: key)
            let (r, s, v) = signer.values(transaction: transaction, signature: signature)
            let values: [Any] = [
                transaction.nonce,
                transaction.gasPrice,
                transaction.gasLimit,
                transaction.to?.data ?? Data(),
                transaction.value,
                transaction.data,
                v, r, s,
            ]
            //NOTE: avoid app crash, returns with return error, Happens when amount to send less then 0
            guard let data = RLP.encode(values) else {
                return .failure(.failedToSignTransaction)
            }
            return .success(data)
        case .userCancelled:
            return .failure(.userCancelled)
        case .notFound, .otherFailure:
            return .failure(.accountMayNeedImportingAgainOrEnablePasscode)
        }
    } catch {
        return .failure(.failedToSignTransaction)
    }
}

Same issue, any solution? @akhilccrb

YangJian2014 avatar Dec 04 '23 08:12 YangJian2014

No , i update repository and created new rpc with quicknode

akhilccrb avatar Dec 04 '23 08:12 akhilccrb