TokenCoreX
Next generation core inside imToken Wallet.
A cross-platform library that implements crypto wallet functions for blockchains, exporting c interfaces in Protobuf protocol. This library totally wrote in Rust, and now provides friendly interfaces for the mobile platform including ReactNative, iOS, and Android.
TokenCoreX welcomes contribution from everyone. See CONTRIBUTING.md for help getting started. In all communications and contributions, this project follows the Code of Conduct
Goals
- Abstration interfaces that provide crypto wallet common logic with multi blockchain support
- Cross platform, on mobile, desktop, server side
- Multi keystore support, with file, HSM, KMS, hardware-wallet
Packages
tcx
wallet interface wrappertcx-bch
|tcx-btc-fork
|tcx-tron
|tcx-ckb
packages contain particular chain operationstcx-chain
keystore and signer interfacetcx-proto
protobuf datastructure definitiontcx-constants
blockchain spec definition- [
tcx-primitive
|tcx-crypto
] low level component
Examples
We provide three example applications,
- ReactNative, full functions including all expose API, and e2e testing
- iOS
- Android
Test Coverage
We can use tarpaulin to know the coverage rate.
The easy way to run coverage test is using docker,
docker run --security-opt seccomp=unconfined -v "${PWD}:/volume" xd009642/tarpaulin sh -c "cargo tarpaulin --out Html"
After couple minutes, it will generate html report of project root directory named tarpaulin-report.html
.
Code Styles
This project is using pre-commit. Please run cargo clean && cargo test
to install the git pre-commit hooks on you clone.
Every time you will try to commit, pre-commit will run checks on your files to make sure they follow our style standards and they aren't affected by some simple issues. If the checks fail, pre-commit won't let you commit.
Read More
- How to build project
- Crypto keys abstraction design (Chinese)
- Architecture design (Chinese)
- How to add more blockchain support
- Security including the bug bounty program
- FAQ
License
Apache Licence v2.0