Skip to content
Petr Korolev edited this page Jan 15, 2020 · 23 revisions

List of alternatives.

There is a lot of different implementations of mobile web3 libraries. This wiki will help to compare them: With a quick review of the pros and cons of them.

  1. πŸš€ web3swift (2.1.6) - current repo πŸš€

    • Web3 implementation in vanilla Swift for iOS ans macOS
    • pod 'web3swift'
      • βœ… Swift implementation of web3.js functionality ⚑

      • βœ… Interaction with remote node via JSON RPC πŸ’­

      • βœ… Local keystore management (geth compatible)

      • βœ… Smart-contract ABI parsing πŸ“–

      • βœ… ABI deconding

      • βœ… Ethereum Name Service (ENS) support

      • βœ… Interactions (read/write to Smart contracts) πŸ”„

      • βœ… Complete Infura Ethereum API support

      • βœ… Patial Websockets API support

      • βœ… Parsing TxPool content into native values

      • βœ… Event loops functionality

      • βœ… Supports Web3View - WKWebView with injected "web3" provider

      • βœ… Possibility to add / remove "middleware" that intercepts, modifies and even cancel transaction workflow on stages "before assembly", "after assembly" and "before submission"

      • βœ… Literally following the standards:

        • BIP32 HD Wallets: Deterministic Wallet
        • BIP39 (Seed phrases)
        • BIP44 (Key generation prefixes)
        • EIP-20 (A standard interface for tokens - ERC-20)
        • EIP-67 (Standard URI scheme with metadata, value and byte code)
        • EIP-155 (Replay attacks protection) enforced!
        • EIP-681 (A standard way of representing various transactions, especially payment requests in Ethers and ERC-20 tokens as URLs)
        • EIP-721 (A standard interface for non-fungible tokens, also known as deeds - ERC-721)
        • EIP-165 (Standard Interface Detection, also known as ERC-165)
        • EIP-777 (New Advanced Token Standard, also known as ERC-777)
        • EIP-820 (Pseudo-introspection Registry Contract, also known as ERC-820)
        • EIP-888 (MultiDimensional Token Standard, also known as ERC-888)
        • EIP-1400 (Security Token Standard, also known as ERC-1400)
        • EIP-1410 (Partially Fungible Token Standard, also known as ERC-1410)
        • EIP-1594 (Core Security Token Standard, also known as ERC-1594)
        • EIP-1643 (Document Management Standard, also known as ERC-1643)
        • EIP-1644 (Controller Token Operation Standard, also known as ERC-1644)
        • EIP-1633 (Re-Fungible Token, also known as ERC-1633)
        • EIP-721x (An extension of ERC721 that adds support for multi-fungible tokens and batch transfers, while being fully backward-compatible, also known as ERC-721x)
        • EIP-1155 (Multi Token Standard, also known as ERC-1155)
        • EIP-1376 (Service-Friendly Token, also known as ERC-1376)
        • ST-20 - ST-20 token is an Ethereum-based token implemented on top of the ERC-20 protocol that adds the ability for tokens to control transfers based on specific rules
      • βœ… RLP encoding

      • βœ… Batched requests in concurrent mode

      • βœ… Base58 encoding scheme

      • βœ… Formatting to and from Ethereum Units

      • βœ… Comprehensive Unit and Integration Test Coverage

  2. Web3 (0.4.1)

    • Web3 library for Swift. Sign transactions and interact with Smart Contracts in the Ethereum Network.
    • pod 'Web3', '~> 0.4.1'
    • Ethereum Web3 Swift library implementation (the latest commit was on 1 Sep 2018) with the following unrealized features:
    • βœ… realized modularity
    • ❌ no ENS
    • ❌ no TxPool
    • ❌ no EIP681 support
    • ❌ no event loops
    • ❌ less supported ERCs (only ERC-20, ERC-165, ERC-721)
  3. Web3Swift.io (0.0.3)

    • Web3 library for Swift. Construct and sign transactions, interact with smart contracts.
    • pod 'Web3Swift.io', '~> 0.0.3'
  • ❌ no TxPool
    • ❌ no ENS
    • ❌ no EIP681 support
    • ❌ no event loops
    • ❌ less support ERCs (only ERC-20)
  1. web3swift.pod (2.1.10)

    • __Web3 implementation in pure Swift for iOS, macOS, tvOS, watchOS and Linux
    • the project that core team of current repo did for the Bankex Foundation, that no longer supported. We continue our work in this repo. Just a small part of what makes our repo different from theirs.
    • ❌ unreliable and too bad EIP681 parsing: BANKEX, MATTER
    • ❌ inconvenient, concise way to implement TxPool on promises: BANKEX, MATTER
    • ❌ not support ERCs
  2. MercuryProtocol web3.swift - just currently unsupported (the latest commit was on 8 Mar 2018) Ethereum Web3 Swift library implementation with the following unrealized features:

    • ❌ no ERCs support
    • ❌ no TxPool
    • ❌ no Smart contracts interaction
    • ❌ no ENS
    • no EIP-681 support
    • no event loops
  3. web3.swift (0.3.2)

    • Ethereum API for Swift
    • pod 'web3.swift', '~> 0.3.2'
  4. Web3Sw1ft (0.0.1)

    • Web3 library in Swift
    • pod 'Web3Sw1ft', '~> 0.0.1'

This is an open wiki page. Feel free to add/update the state of the libraries. πŸ‘

Clone this wiki locally