token-core-android 快速上手:创建 Identity 并一键派生 BTC/ETH 钱包
【免费下载链接】token-core-androida blockchain private key management library on android项目地址: https://gitcode.com/gh_mirrors/to/token-core-android
token-core-android 是一款开源的Android 区块链私钥管理库,它最吸引人的地方在于引入了Identity(身份)概念:你只需要一套助记词,就能统一管理 BTC、ETH、EOS 三条链上的钱包。本教程将带你从零开始,快速创建 Identity 并一键派生 BTC/ETH 钱包,全程代码极少、思路清晰,非常适合刚接触移动端区块链开发的新手。
token-core-android 是什么?为什么值得一试?
简单来说,token-core-android 把"生成助记词、推导私钥、加密存储、签名交易"这些繁琐的底层工作封装成了统一、一致的 API。你不再需要分别去对接 BTC、ETH 各自的密钥算法,只要调用同一个 Identity 接口,就能在三条链之间无缝切换。
它的核心亮点有三个:
- 🪪Identity 统一身份:一套助记词管理多链钱包,备份一次即可
- 🔐Keystore 加密存储:私钥和助记词均加密后落盘,密码保护
- ✍️离线签名:支持 ETH 交易签名,私钥不出应用
你可以在app/src/main/java/org/consenlabs/tokencore/wallet/目录下直接阅读核心源码,例如Identity.java、WalletManager.java、Wallet.java。
快速集成:3 步将 token-core-android 接入你的项目
开始编码前,先通过 JitPack 把依赖加进来,整个过程只需 3 步。
第 1 步:在项目根目录的build.gradle中加入 JitPack 仓库:
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }第 2 步:在模块的build.gradle中添加依赖:
dependencies { implementation 'com.github.consenlabs:token-core-android:v0.1' }第 3 步:开启 Java 8 支持:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }💡 小提示:如果要在 Android Oreo 上调试,建议在
packagingOptions中排除lib/x86_64/darwin/libscrypt.dylib,避免打包冲突。
第一步:初始化 Keystore 存储,为钱包落盘做准备
在创建任何钱包之前,必须先告诉 token-core-android 把 Keystore 文件存到哪里。让 Activity 实现KeystoreStorage接口即可:
public class MainActivity extends AppCompatActivity implements KeystoreStorage { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); WalletManager.storage = this; // 绑定存储实现 WalletManager.scanWallets(); // 扫描已有钱包文件 } public File getKeystoreDir() { return this.getFilesDir(); // 使用应用私有目录 } }代码中涉及的关键文件是KeystoreStorage.java与WalletManager.java(位于app/src/main/java/org/consenlabs/tokencore/wallet/)。
第二步:创建 Identity,一键派生 BTC/ETH 钱包
这是本文最核心的一步。调用Identity.createIdentity(...),token-core-android 会自动完成三件事:生成随机助记词、创建身份、一键派生 ETH 与 BTC 两个钱包。
// 最后一个参数 Metadata.P2WPKH 表示派生的 BTC 钱包为 SegWit(隔离见证)钱包 Identity identity = Identity.createIdentity( "MyFirstIdentity", // 身份名称 SampleKey.PASSWORD, // 密码 SampleKey.PASSWORD_HINT, // 密码提示 Network.MAINNET, // 主网 Metadata.P2WPKH // BTC 采用 SegWit 模式 ); // 派生结果:索引 0 是 ETH 钱包,索引 1 是 BTC 钱包 Wallet ethereumWallet = identity.getWallets().get(0); Wallet bitcoinWallet = identity.getWallets().get(1);创建完成后,identity.json与两个钱包的 Keystore 文件会自动写入存储目录。底层实现位于Identity.java,派生路径定义在model/BIP44Util.java中:
| 链 | 派生路径 | 说明 |
|---|---|---|
| ETH | m/44'/60'/0'/0/0 | 以太坊标准路径 |
| BTC | m/44'/0'/0' | 普通地址路径 |
| BTC (SegWit) | m/49'/0'/0' | P2WPKH 隔离见证路径 |
如何用助记词恢复 Identity?
如果你已有助记词,不需要重新创建,改用recoverIdentity即可一键恢复整套钱包:
Identity identity = Identity.recoverIdentity( "tide inmate cloud around ...", // 12 个助记词 "MyFirstIdentity", SampleKey.PASSWORD, SampleKey.PASSWORD_HINT, Network.MAINNET, Metadata.P2WPKH );⚠️ 安全提醒:无论创建还是恢复,请务必提醒用户妥善备份助记词。助记词 = 私钥 = 资产,泄露即丢失。
第三步:导出私钥、助记词与 Keystore
派生的钱包可以通过WalletManager统一导出,方便用户查看或备份:
// 导出私钥 String prvKey = WalletManager.exportPrivateKey(ethereumWallet.getId(), SampleKey.PASSWORD); // 导出助记词(同时返回 BIP44 路径) MnemonicAndPath mnemonicAndPath = WalletManager.exportMnemonic(ethereumWallet.getId(), SampleKey.PASSWORD); String mnemonic = mnemonicAndPath.getMnemonic(); // 导出 Keystore JSON String json = WalletManager.exportKeystore(ethereumWallet.getId(), SampleKey.PASSWORD);导出的 Keystore 是标准 V3 格式(aes-128-ctr加密 +pbkdf2密钥派生),与以太坊生态工具完全兼容,可直接导入到其他钱包应用。相关实现见WalletManager.java与wallet/keystore/V3MnemonicKeystore.java。
第四步:用派生钱包签名一笔 ETH 交易
有了钱包,下一步自然是签名交易。构造EthereumTransaction并调用signTransaction,即可得到可直接广播的签名结果:
EthereumTransaction tran = new EthereumTransaction( nonce, gasPrice, gasLimit, // nonce、Gas 价格、Gas 上限 "0x...", value, data // 收款地址、金额、附加数据 ); TxSignResult result = tran.signTransaction( ChainId.MAINNET, // 链 ID SampleKey.PASSWORD, // 钱包密码 ethereumWallet ); String signedTx = result.getSignedTx(); // 可直接广播的签名交易 String txHash = result.getTxHash(); // 用于查询链上记录签名过程全程在本地完成,私钥不会离开设备,这正是私钥管理库的核心价值。相关源码见wallet/transaction/EthereumTransaction.java与EthereumSign.java。
源码结构速览:去哪里看关键实现?
如果你希望深入理解 token-core-android 的源码,推荐按下面路径阅读(均在app/src/main/java/org/consenlabs/tokencore/下):
wallet/Identity.java:Identity 创建、恢复、派生钱包的入口wallet/WalletManager.java:钱包的导入、导出、扫描、删除等统一管理wallet/Wallet.java:单个钱包的抽象,提供地址、私钥、收款地址等能力wallet/model/BIP44Util.java:BTC/ETH/EOS 的 BIP44 派生路径定义wallet/transaction/:EthereumTransaction、BitcoinTransaction、EOSTransaction 等签名实现foundation/crypto/:AES、Keccak、SCrypt、PBKDF2 等底层密码学原语
常见问题速查
Q1:为什么派生出的 BTC 钱包索引是 1?因为createIdentity在内部固定先派生 ETH(索引 0)再派生 BTC(索引 1),这是 token-core-android 的默认行为。
Q2:如何切换 BTC 为普通地址(非 SegWit)?创建时最后一个参数传Metadata.NONE即可;已经创建的 BTC 钱包可用WalletManager.switchBTCWalletMode(id, password, mode)切换模式。
Q3:可以继续派生 EOS 钱包吗?可以。调用identity.deriveWallets(chainTypes, password)并传入ChainType.EOS,即可用同一套助记词继续派生 EOS 钱包,这就是"一套助记词管三链"的完整形态。
至此,你已经完成了token-core-android 创建 Identity 并一键派生 BTC/ETH 钱包的全部流程:集成依赖 → 初始化存储 → 创建身份 → 导出资产 → 签名交易。整条链路只需不到 50 行代码,背后却是扎实的密码学与多链地址工程。接下来不妨动手运行一遍官方示例,感受一下"一套助记词管理多链钱包"的便利!
【免费下载链接】token-core-androida blockchain private key management library on android项目地址: https://gitcode.com/gh_mirrors/to/token-core-android
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考