Android

web3j - 区块链开发你需要了解的都在这里了

最近在基于 web3j 做一款 Android 区块链钱包 App,可以创建、导入钱包,可以查询余额,交易,交易记录以及交易详情查询等。在开发过程中走了不少弯路,特写此文以记之,愿后来之人少走弯路,少加班,腾出时间,多陪陪孩子老婆,如此,也不枉我花费时间写此文了。

首先,区块链研发和普通的 APP 研发不一样,下面我罗列了有那些差别,另外是一些资源。

区块链的运行机制

我觉得区块链的基础是分布式存储,一台台矿机组成了强大的分布式系统,而 web3j 以及 web3.js 分别是以太坊的 java(包括android)、js 实现,所以如果你需要开发 区块链钱包 那么你应该先了解 web3j 或者 web3.js

与传统 APP 的开发区别

假设你需要开发一款传统的钱包 APP ,比如类似支付宝或者微信支付,你除了安全之外就是和自己的服务端交互,和服务端交互无一例外是基于 http接口了,但是开发区块链钱包就不一样了,你可以没有服务器,没有 api ,直接使用相关 sdk 即可,那么这个 sdk 本身将是一个瓶颈啦,说的夸张点,起初 android 开发是基于 java 的,只是用了 android sdk 而已,但是 android 开发与 java 服务端 开发差距可不小,好在 web3j 的 api 并不那么复杂,只是心里要清楚可能不需要服务端,完全由 sdk 来做,当然,有个服务端或许更好吧,统一点,只是这样子是否合理就不好说了,但如果我全权负责开发一个区块链钱包app,那么我会开发服务端,然后开放 api 接口 给各个客户端调用,减少客户端的开发成本,同时也避免了一些未知的bug,比如 android 与 ios 实现不一样,不能互通或者其他,另外,测试也很简单,仅做 api 测试就好了,即使有 bug 服务端修复并发版本即可,不影响客户端吧,客户端那可是需要用户更新,这个成本高了去了。

我如何获得以太坊测试币

首先,如我所说,虽然你可能使用sdk,但是服务器还是需要的,或者说是节点吧,你还是需要连接到以太坊的呀,这你可以使用 infura.io ,通过它你可以连接到以太坊,不过最好的方式还是你们公司自己搭建一个,一方面速度有保障,另一方面更可控吧,前期你可以使用它,它有测试网络和正式网络,测试网络比如 kovan.infura.io ,在测试网络你就可以自己领币了,然后转账哈,领币可以去这两个网址:

1、https://faucet.kovan.network 需要用 github 账号登录,每天一次,到账快。

2、https://www.rinkeby.io/#faucet 需要在你的 google+ 或者 Twitter 或者 facebook 发布一条公开的信息,内容是你的钱包地址,然后把这条信息的地址复制进去,最后点击 Give Me Ether 即可,比如你可以输入:https://plus.google.com/u/0/100933232866249203363/posts/A8onGq9cJn4 这个 url 然后点击 Give Me Ether 按钮。

BIP32、BIP39、BIP44、助记词

目前,我只知道 bip32、bip39以及bip44 一起共同定义了目前使用最广泛的 HD Wallet,即目前使用的 区块链钱包由这三个组成,比如 imToken(我两位室友在这个公司,所以比较熟) 默认的路劲是:m/44’/60’/0’/0/0 ,而路劲这个概念在 bip44 里提出,定义如下:m /purpose'/coin_type'/account'/change/address_index

这里,purporse 固定是 44,代表使用 bip44,coin_type 表示不同币种,比如 0 是 Bitcoin,60 是 Ethereum

bip39 提出了助记词概念,助记词可用于导入账号,非常重要,助记词目前是12个单词,共有2048个单词,你可以想象下这有多少种可能性,但是相同的助记词不同的路劲导入后生成的钱包地址是不一样的哦。

本文只是简单的科普,如果需要开发一款区块链钱包 APP,你可以关注我后期的博文,或者直接点击右下角私聊我。目前,我实现的功能有:创建钱包,从助记词、私钥导入钱包,通过私钥转账,转账进度,余额查询等,基本满足一款简单的 区块链 钱包的需求了。

 

full-stack-trip

Share
Published by
full-stack-trip
Tags: web3j

Recent Posts

Android 自定义 View 入门

说来惭愧,工作数年,连基本的自…

4 年 ago

retrofit 同时支持 xml 和 json

retrofit 解析 jso…

4 年 ago

mysql - 存储过程 从入门到放弃

最近有个报表的需求,于是乎用了…

4 年 ago

奶嘴战略 - 你不得不知道的扎心真相(一)

一句:英雄枯骨无人问,戏子家事…

4 年 ago

acme.sh 的简单使用

acme.sh 是纯 shel…

4 年 ago

wrk -更现代化的http压测工具

wrk 是一款更现代化的 ht…

4 年 ago