Интегрируйте web3.js в нативные приложения для iOS и Android.

Интеграция web3.js в нативные приложения для iOS и Android имеет проблемы.

У меня возникают трудности с интеграцией web3.js в собственное мобильное приложение (iOS и Android) , было бы разумно использовать облачный сервер и npm установить web3 и позволить мобильному приложению подключаться к этому экземпляру облачного сервера, чтобы совершать все вызовы к развернутому Смарт-контракт?

Единственная проблема, которую я вижу в этом, заключается в том, что он бросает вызов одноранговой архитектуре блокчейна, имея облачный сервер посередине.

Да, вы можете использовать сторонний сервис, такой как infura или etherscan, которые позволяют взаимодействовать с блокчейном через их серверы, а также вы можете настроить свой собственный гет-узел для использования в качестве резервного. В зависимости от варианта использования вы можете разрешить своим пользователям настраивать свои собственные узлы geth.

Ответы (2)

Вы можете использовать Infura APIS с мобильного устройства для локального взаимодействия с блокчейном https://blog.infura.io/getting-started-with-infura-28e41844cc89 , чтобы вам не нужно было настраивать собственный прокси-сервер .

Для iOS : скайвиндер/веб3свифт

Вот элегантная функциональность web3js в Swift. Собственный синтаксический анализ ABI и взаимодействие со смарт-контрактами

Вот пример отправки транзакции:

TransactionsService().prepareTransactionForSendingEther(destinationAddressString: destinationAddress, amountString: amount, gasLimit: 21000) { (result) in
            switch result {
            case .Success(let transaction):
                guard let gasPrice = self.gasPriceTextField.text else { return }
                guard let gasLimit = self.gasLimitTextField.text else { return }
                guard let name = self.walletName else { return }
                let dict:[String:Any] = [
                    "gasPrice":gasPrice,
                    "gasLimit":gasLimit,
                    "transaction":transaction,
                    "amount":amount,
                    "name": name,
                    "fromAddress": self.walletAddress!,
                    "toAddress": destinationAddress]
                
                self.sendFunds(dict: dict, enteredPassword: withPassword)
                
            case .Error(let error):
                var textToSend = ""
                if let error = error as? SendErrors {
                    switch error {
                    case .invalidDestinationAddress:
                        textToSend = "invalidAddress"
                    default:
                        break
                    }
                }
                
                showErrorAlert(for: self, error: error)
            }
        }

Для Android вы можете использовать web3j/web3j