区块链DAPP开发实战 | DAPP开发团队
财经365(www.caijing365.com)1月22日讯:开发环境准备
1、PowerShell
powerShell是一款比cmd权限更高的命令提示工具,cmd.exe微软已明确不在维护,通过开始搜索powerShell可以打开。
2、Nodejs
使用nodejs命令行工具npm方便下载开发所需的相关库,开发所用到的大部分第三方库或者框架都是用过npm进行下载 http://nodejs.cn/download/
注意:npm指令由于某种原因会导致连接不上外网的情况,可以修改npm下载源地址为淘宝地址,命令行执行npm config set registry(https://registry.npm.taobao.org)
3、Charles
Charles是一款抓包工具,我们需要用他来配置代理,以便手机/模拟器来访问到本地https://127.0.0.1:9545端口。
4、Web3j.bat
Web3j.bai智能合约包装器,可以把已编译好的智能合约文件.json转化成.java类文件,方便程序识别调用(https://github.com/web3j/web3j/releases/tag/v3.3.1)
5、Atom
Atom是一款好用的开发solidity的IDE,有多个支持Solidity开发的插件方便使用,包括代码提示工具等(https://atom.io)
Atom开发Solidity插件安装:
打开Atom,File-Setting-Install 搜索要安装的插件名,如果网络好的话可下载,不过因为某种原因,我们是下不了这个插件的,所以采用从git上下载源码安装的方式。
要安装的两个插件:
language-ethereum(代码提示)
git:https://github.com/caktux/language-ethereum
autocomplete-solidity(智能补全)
git: https://github.com/AustP/autocomplete-solidity
下载的压缩包解压到安装地址,每个人不同
打开windows PowerShell,cd C:\Users\liuqikang\.atom\packages到目标目录下,输入指令apm install language-ethereum(language-ethereum是解压后的文件夹名),也可以到解压后文件夹下通过npm install安装,安装成功后再次回到Atom中Setting搜索插件会显示已安装,结果如下:
Truffle调用了我们刚才创建的合约部署文件2_initial_contracts.js部署了合约TutorialToken
部署的合约地址为0x345ca3e014aaf5dca488057592ee47305d9b3e10
到此我们的代币和智能合约已经编译并部署成功了。
注意:我们进行编译和部署的这个PowerShell不能关闭,因为后续启动需要。
让我们来启动下这个节点,让我们重新再打开一个PowerShell,依次执行
[page]
启动成功后,浏览器会自动弹出当前web工程的网页。如果显示有问题,请查看外网JS源是否已经切换(上一小节最后)。
到此为止,web端的工程已经搭建完毕,我们可以测试一下这个TT币。
还记得truffle develop启动时候的账户吗
我们当前登录的是第一个默认账户,现在我们给第二个账户转1000TT币:
在address中填入目标账户:0xf17f52151ebef6c7334fad080c5704d77216b732
Amount填入转账金额:1000
点击Transfer,会弹出转账成功弹窗,并更新余额
[page]
并且可以在浏览器的控制台中看到转账记录。
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股票频道!
相关文章
加密貨幣再遇寒冬,監管已是大勢所趨?
互联网 · 02-09 11:28
致敬比特币 让挖矿重回2009 以太坊交易所ETHEX.COM倾情孵化《艾弗分矿》
财经365 · 08-01 10:21
上线牛币交易所 便捷币将为用户提供更具升值潜力的BJC
网络投稿 · 07-15 16:14
MGC TOKEN圈钱300万人民币跑路
财经365 · 06-17 16:49
优比特UHBT:做全球一流数字资产交易社区服务型平台
网络投稿 · 06-10 12:29
Vtoken全生态布局 为VToken用户带来更高价值
网络投稿 · 04-15 13:41