并且可以在浏览器的控制台中看到转账记录。
2、Android下访问本地节点并测试合约的调用
我们验证此时代币合约已经可以正常的转账查询余额了,接下来我们看看如何用Android来接入这个节点,此时需要访问本地节点,需要打开Charles。
a、使用web3j连接节点获取账户信息
我们需要用到web3j:以太坊推出的java端调用库,和web3.js类似,可以参考web3j中文文档进行开发。
打开AndroidStudio创建一个空工程,引入maven仓库
compile('org.web3j:core:3.3.1-android')
在Manifest.xml中添加一些会用到的权限
5.0系统以上需要动态权限验证
在MainActivity的onCreate中来访问一下这个节点,由于需要访问网络我们需要在线程中来调用web3j。
首先,我们要连接上我们部署的节点
解释下这段代码:
Web3j是我们使用的第三方库
Web3jFactory是android中与节点建立关联的方式
Web3ClientVersion()是我们用来查看版本的函数
.send()很重要,在web3j中我们调用任何函数或者合约,都需要最后调用send()来发起请求通知节点执行
上面的函数执行完成后得到返回我们可以确认android通过web3j已成功和节点建立了关联,我们来获取一下账户信息
通过log可以看到,用户列表
账户和truffle帮我们创建的账户是相同的。
b、在android中部署合约
接下来我们来访问下我们的TutorialToken合约来完成转账和查询余额。
这里web3j有一个相比web3.js不太方便的地方,不支持直接由合约地址来创建合约,所以我们只能通过他所提供的智能合约包装器(其实就是转换成java类),因为在java中合约需要一个明确的类型和内部声明。我们需要将我们之前编译好的TutorialToken合约,包装成Java可识别的类。
打开之前的tokentest工程
到build路径下找到我们的TutorialToken.json,这个就是我们.sol文件编译生成的合约。找到我们下载的web3j工具包,到bin目录下找web3j.bat批处理工具
(来源:区块链项目精选)
更多股票基础知识尽在财经365股票频道!