-
Notifications
You must be signed in to change notification settings - Fork 445
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.
-
π 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
-
-
- 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)
-
- 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)
-
- __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
-
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
-
- Ethereum API for Swift
pod 'web3.swift', '~> 0.3.2'
-
- 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. π
For any references feel free to open an issue or ask on stackoverflow