深度学习
介绍了用truffle编译、部署和测试智能合约的方法之后,现在来为altcoin创建一个客户端了。在了解如何用 truffle创建客户端之前,需要知道,不允许我们使用在以太坊节点之外存储的账户签署交易,也就是说,它没有类似于 sendRawTransaction的东西,理由与truffle-contract的理由相同。
用truffle创建客户端意味着首先在客户端源代码中整合truffle的artifact,然后让客户端的源代码做好部署准备。
创建客户端需要运行如下命令:
执行这条命令时,truffle将检查如何通过检测项目配置文件中的build属性创建客户端。
1.运行外部命令
可以用命令行工具创建客户端。如果build属性是一个字符串,truffle就假定想运行一个命令去创建客户端,所以它把该字符串当作一个命令运行。给该命令提供足够环境变量,用这些变量与truffle整合。
可以让truffle运行一个命令行工具,以创建使用类似配置代码的客户端:
2.运行自定义函数
可以用一个JavaScript函数创建客户端。如果build属性是一个函数,只要想创建客户端,truffle就会运行该函数。给该函数提供大量关于项目的信息,用这些信息与truffle整合。
可以让truffle运行一个函数,以创建使用类似配置代码的客户端:
还可以创建一个对象,其中包含一个和这里类似的创建方法。这对于想发布一个包来创建客户端的人来说实在太棒了!
3.truffle的默认构建器
truffle提供了truffle-default-builder npm包——在truffle中称为默认构建器(default builder)。该构建器导出一个对象,该对象有一个build方法,它的工作方式与之前提到的方法完全一样。
默认构建器可用于为DApp创建一个网络客户端,其服务端只服务于静态文件,所有功能都在前端。
在进一步了解如何使用默认构建器之前,首先用如下命令进行安装:
现将配置文件修改如下:
默认构建器可使用户完全掌控组织客户端文件和文件夹的方法。
该配置用文件、文件夹和文件数组这些构成目标值(targets)的内容(右侧)描述目标值(左侧)。每个目标值将通 过处理右侧的文件产生,要进行文件扩充、把结果连接在一起,然后保存结果文件(即目标值)到创建目的地。这里,字符串(而非数组)在右侧指明,且那个文件 将被处理(如果有需要),然后被直接复制。如果字符串结尾是“/”,就被翻译为目录,不对该目录进行任何处理直接复制。右侧指明的所有路径都与app/目 录有关。
可以随时修改该配置和目录结构。比如不需要有JavaScript和stylesheets目录,但是请确保相应修改了配置。
如果希望默认构建器在Web应用前端整合truffle,就要确保有一个创建目标(叫作app.js),默认构建器可以对其附加代码。它不会将truffle与其他任何文件名整合。
默认构建器的功能如下:
·自动将已编译合约artifact、已部署合约信息和以太坊节点配置导入客户端源代码。
·包括受推荐的相关程序,包括web3和truffle-contract。
·编译ES6和JSX文件。
·编译SASS文件。
·最小化asset文件。
可以使用truffle watch命令,监听合约目录、应用目录和配置文件的变化。如有变化,它就重新编译合约,并生成新的artifact文件,然后重新创建客户端。但是它不进行移植和测试。
4.创建客户端
现在为DApp编写一个客户端,并使用truffle的默认构建器创建客户端。首先,在前面做好的配置中创建文件和目 录:创建一个app目录,在里面创建一个index.html文件和两个目录(分别称为JavaScript和styelsheets)。在 JavaScript目录中,创建index.js文件。在stylesheets目录中,下载并放入Bootstrap 4的CSS文件。详见https://v4-alpha.getbootstrap.com/getting-started/downloads/#bootstrap-css-and-js 。
加载bootstrap.min.css和app.js文件。有两种形式:一种是发送Metacoins给一个不同的账户;另一种是查询账 户中的Metacoins余额。在第一种形式中,用户必须选择一个账户,然后输入要发送的Metacoin数量和想要发送到的地址。在第二种形式中,用户 只需要选择要查询Metacoins余额的账户地址。
上述代码的执行过程如下:
1)truffle-default-builder使artifacts对象在__contracts__全局对象下可用。
2)使可用的合约抽象对所有作为全局变量(变量名与合约名相应)的合约可用。
3)通过已经设置provider提供web3对象;为合约抽象设置provider。还使web3对象连接到带名字开发的网络,如果不存在,则默认值是http://localhost:8545 。
4)在程序代码中,首先等待页面加载,加载后在连接的节点中检索账户列表,并在两张表中显示。还要调用MetaCoin abstraction的detectNetwork()方法。
5)设置两张表的submit事件触发器。它们两个都在提示栏显示结果。
6)当提交第一张表时,获得MetaCoin合约的部署实例,并用正确的实参调用sendCoin方法。
7)当提交第二张表时,在EVM中用调用get Balance方法检索被选择账户的余额,而非广播一个交易。
继续运行truffle创建命令,truffle会在build目录中创建index.html、app.js和bootstrap.min.css文件,并在这些文件中放入客户端的最终部署代码。
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=530
微信号:qq444848023 QQ号:444848023
加入【我是码农】QQ群:864689844(加群验证:我是码农)
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区