0

この時点で、IOS アプリをイーサリアム ネットワーク上の ERC20 トークンと統合することが可能です。

Ethereum との統合を可能にするweb3.swiftというライブラリがあるようです。たぶんこれが進むべき道ですが、本番アプリの準備ができているかどうかはわかりません.

さらに、Swift とブロックチェーンに関するいくつかのオンライン コース ( LyndaによるものやUdemy によるものなど) と、ブロックチェーン統合に関するチュートリアル ( AppCoda によるものやTierion ブロックチェーンをサービスとして使用するものなど) があるようです。実際、AWS、Azure などはすべてブロックチェーンをサービスとして提供しているようです。Amazon は、Ethereum を使用したマネージド ブロックチェーンを提供しています。

ただし、IOS アプリを Ethereum と統合する方法を具体的に扱っているものは見たことがありません。また、AWS によってバックエンドで行われる場合、これはブロックチェーンを使用してサーバーへの集中化を回避するという目的を無効にしますか?

私が検討している使用例は、所有しているトークンの数を表示し、ユーザーがトークンをサービスに使用できるようにすることです。ただし、トークンはブロックチェーン上に存在します。

この段階でこれが可能かどうか、もしそうなら、それを開発する方法についてのアドバイスをありがとう.

4

1 に答える 1

2

新規取引

Infuraサービスがここで役立つかもしれません。アカウントを作成してプロジェクトをセットアップすると、特定の Ethereum ネットワークで書き込み操作を実行できるノード (メインネットと一部のテストネット用) が提供されます。

これは、Swift とWeb3.swiftで書かれた、役立つコードです。

func send(sender: String,
          receiver: String,
          senderSecret: String,
          tokenContractAddress: String,
          amount: Int,
          completion: @escaping Result<Transaction, Error>) {

    let web3 = Web3(rpcURL: "YOUR_INFURA_NODE_ID_GOES_HERE")

    do {
        let privateKey = try EthereumPrivateKey(hexPrivateKey: senderSecret)

        let senderWallet = try EthereumAddress(hex: sender, eip55: true)

        let receiverWallet = try EthereumAddress(hex: receiver, eip55: true)

        let contract = web3.eth.Contract(
            type: GenericERC20Contract.self,
            address: try EthereumAddress(hex: tokenContractAddress, eip55: true)
        )

        firstly {
            return web3.eth.getTransactionCount(address: privateKey.address, block: .latest)
        }.compactMap { nonce in
            guard let tx = contract
                .transfer(to: receiverWallet, value: BigUInt(amount))
                .createTransaction(
                    nonce: nonce,
                    from: senderWallet,
                    value: 0,
                    gas: 100000,
                    gasPrice: EthereumQuantity(quantity: 21.gwei)
                ) else { return nil }

            return try tx.sign(with: privateKey, chainId: 3)
        }.then { tx in
            return web3.eth.sendRawTransaction(transaction: tx!)
        }.done { hash in
            let tx = Transaction(hash: hash)
            completion.set(.success(tx))
        }.catch { error in
            completion.set(.failure(error))
        }
    } catch {
        completion.set(.failure(error))
    }
}

オープン情報

トランザクションを開始する必要がなく、トークンの供給/保有者の残高などの公開情報を操作したいだけの場合。-ブロックスカウトのようなオープン API を試して、必要なデータを取得できます。

于 2019-09-08T22:50:24.903 に答える