trustwallet / trust-wallet-ios

:iphone: Trust - Ethereum Wallet and Web3 DApp Browser for iOS
https://trustwallet.com
GNU General Public License v3.0
1.53k stars 721 forks source link

Pending transaction state not being updated on the app side (parity ethereum node) #941

Closed Dycedlp closed 5 years ago

Dycedlp commented 5 years ago

Parity Ethereum version: 1.27.2 Operating system: Linux Installation: ubuntu 16 Fully synchronized: yes Network: ethereum (private) Restarted: yes --warp --tracing=on --fat-db=on --pruning=archive --no-discovery --config /ethereum/poa/node1.toml --min-gas-price 0 --ws-interface all --ws-origins all --ws-hosts all node.toml: [parity] chain = "privatepoa-spec.json" base_path = "/ethereum/poa/node1/" [network] port = 30301 [rpc] port = 8547 apis = ["web3", "eth", "net", "personal", "parity", "parity_set", "traces", "rpc", "parity_accounts"] cors = ["null","localhost:3000","localhost:3001","http://remix.ethereum.org","chrome-search://ae62fc16-c916-4c24-9a36-97f5a850f25c","all","https://www.myetherwallet.com/"] interface = "all" #external access to rpc hosts = ["all"] [ui] port = 8181 [websockets] disable = false port = 8456 [ipc] disable = false [account] unlock = ["0x0496632f490cb4fbe6559d202120a6fd332442e7"] password = ["node.pwds"] [mining] engine_signer = "0x0496632f490cb4fbe6559d202120a6fd332442e7" reseal_on_txs = "none" Replacing the network to my own private network works perfectly through Trust Wallet, but doesn't update the transaction pending initial messages for some reason. I was told it was due to a web socket issue but I attempted to fix it with no luck. Is there any reason this wouldn't work? Where exactly would the check be from to confirm it?

I believe it to be here. In Trust Wallet: (Trust/Core/Network/Transactions/EthereumTransactionsProvider.swift)

func update(for transaction: Transaction, completion: @escaping (Result<(Transaction, TransactionState), AnyError>) -> Void) { let request = GetTransactionRequest(hash: transaction.id) Session.send(EtherServiceRequest(for: server, batch: BatchFactory().create(request))) { [weak self] result in guard let self = self else { return } switch result { case .success(let tx): guard let newTransaction = Transaction.from(initialTransaction: transaction, transaction: tx, coin: self.server.coin) else { return completion(.success((transaction, .pending))) } if newTransaction.blockNumber > 0 { self.getReceipt(for: newTransaction, completion: completion) }

I believe it to be missing the part surrounded in ***'s. Any help would be useful on this issue, thanks.