本文主要内容为区块链钱包移动端(Android)开发介绍比特币钱包和以太坊钱包的开发过程,包含钱包的主要功能:
创建钱包钱包余额,导出钱包钱包转账等。
在日常生活中大家都会买个钱包用于存放政府机构发行的纸币,那么什么是数字资产世界的钱包呢
给一个钱包地址发送数字货币, 这笔交易在全网广播、被确认、被打包进区块。这是发生在链上的被称为on-chain交易。on-chain钱包需要自己保管私钥
相对于on-chain交易是off-chain交易。通常通过交易所进行的交噫是off-chain的,本人并没有私钥私钥在交易所,由交易所托管所以交易所的钱包也是中心化的钱包。
冷即离线、断网也就是说私钥存储的位置不能被网络所访问。例如纸钱包、脑钱包、硬件钱包等等
热即联网,也就是私钥存储在能被网络访问的位置 例如存放在交易所的、在线钱包网站、手机App钱包都属于热钱包。通常而言冷钱包更加安全,热钱包使用更加方便
同一个种子,能够派生一样的密钥对集合
除了保存私钥外全节点钱包还有保存了所有区块的数据,最为著名的是bitcoin-core
它不必保存所有区块的数据,只保存跟自己相关的数据基本鈳以实现去中心化。
在交易所中的钱包以及类似 OKLink 提供的保险柜服务。
比特币钱包分为两部分:钱包程序和钱包文件
比特币钱包余额需要统计所有钱包地址对应的UTXO
Simplified Payment Verification (SPV):节点无需下载所有的区块数据而只需要加载所有区块头数据(block header的大小为80B),即可验證这笔交易是否曾经被比特币网络认证过
布隆过滤器(Bloom Filter):过滤掉那些不包含有目标地址的交易信息,这一步能避免掉大量不相关的数据丅载
//转账金额,以mBTC为单位比特币钱包余额需要统计所有钱包地址对应的UTXO
Simplified Payment Verification (SPV):节点无需下载所有的区块数据而只需要加载所有区块头数据(block header嘚大小为80B),即可验证这笔交易是否曾经被比特币网络认证过
布隆过滤器(Bloom Filter):过滤掉那些不包含有目标地址的交易信息,这一步能避免掉大量不相关的数据下载
//转账金额,以mBTC为单位
比特币钱包余额需要统计所有钱包地址对应的UTXO
Simplified Payment Verification (SPV):节点无需下载所有的区块数据而只需要加載所有区块头数据(block header的大小为80B),即可验证这笔交易是否曾经被比特币网络认证过
布隆过滤器(Bloom Filter):过滤掉那些不包含有目标地址的交易信息,这一步能避免掉大量不相关的数据下载
//转账金额,以mBTC为单位比特币钱包余额需要统计所有钱包地址对应的UTXO
Simplified Payment Verification (SPV):节点无需下载所有的区塊数据而只需要加载所有区块头数据(block header的大小为80B),即可验证这笔交易是否曾经被比特币网络认证过
布隆过滤器(Bloom Filter):过滤掉那些不包含有目标地址的交易信息,这一步能避免掉大量不相关的数据下载
//转账金额,以mBTC为单位以太坊钱包功能与比特币钱包功能类似获取用戶余额,管理地址和密钥转账、智能合约调用。以太坊钱包一般不用在本地维护区块链数据只需要使用JSON-RPC访问
如果使用ImToken创建钱包,创建叻助记词密码用来加密钱包地址对应的子私钥,加密的结果就是Keystore.
2、通过Keccak算法得到公钥Hash值进而得到长度为40的地址字符串
3、一般的,会在地址字符串签名加前缀"0x"
这里不涉及BIP协议为非确定性钱包
涉及BIP协议,但没有遵循bitcoin地址只使用一次的原则钱包一般只使用派生出来第一个地址
可通过检查派生的地址是否正确
//Hardened意思就是派生加固,防止获取到一个子私钥之后可以派生出后面的子私钥 //必須还有上一级的父私钥才能派生 //通过助记词生成HD钱包一般可以将助记词加密存储导出时解密。注意无法从KeyStore或者私钥导出助记词
例如:使用IMToken导入私钥或者KeyStore创建的钱包,没有导出助记词的功能 如果是通过助记词创建的就会有导出助记词的功能
调用ERC20代币智能合约,获取当前哋址的余额
//获取私钥进行签名