打字猴:1.703879023e+09
1703879023 5)部署SampleContract到当前网络。
1703879024
1703879025 6)更新SampleContract抽象,以便在当前网络中存储合约地址,这样以后可以使用deployed()来获取实例。
1703879026
1703879027 7)在network ID 1中,只部署SampleContract即可。
1703879028
1703879029 8)这时可以修改节点连接的网络并重启应用,应用将相应做出修改。例如,在开发人员的机器上,应用将连接到开发网络;在生产服务端上,应用将连接到主网络。显然,用户可能不希望每次运行前面的文件都部署合约,所以实际上,只要合约被部署了,就可以更新artifacts对象,而且可以在代码中检查是否已经部署了合约。如果没有部署,只有这时部署它。在合约部署完成后,用户可以在数据库或者文件中存储artifacts对象并编写代码自动更新(而非手动更新)。
1703879030
1703879031 3.合约实例API
1703879032
1703879033 源Solidity合约不同,每个合约实例也是不同的,且API是动态创建的。下面是合约实例的不同API:
1703879034
1703879035 ·allEvents。这是一个合约实例函数,在当前网络ID下,当合约artifacts对象中匹配事件签名的合约引发一个事件时,就激活这个回调函数。用户还可以用eventname-specific函数抓取特定事件,而非所有事件。在前面的合约中,要抓取ping事件,可以使用SampleContract_Instance.ping(function(e,r){})。
1703879036
1703879037 ·send。该函数用于向合约发送以太币。它有两个实参:第一个实参是要转账的wei数量;第二个实参是可选项对象,该对象用于设置交易的from,即发送以太币的地址。该调用返回一个承诺,且该承诺在挖出交易时解析交易细节。
1703879038
1703879039 ·可以使用SampleContract.functionName()或者SampleContract.functionName.call()调用合约的任何方法。前者发送交易,后者则只调用EVM上的方法,且修改并不持续。两种方法都返回一个承诺。在第一种情况下,承诺解析交易结果,也就是说,一个对象包含交易哈希、日志和交易收据。在第二种情况下,承诺解析方法调用的返回值。两种方法都有函数实参,且最后一个实参为可选项,它是一个设置交易的from、gas和value等的对象。
1703879040
1703879041
1703879042
1703879043
1703879044 区块链项目开发指南 [:1703875392]
1703879045 区块链项目开发指南 8.4 truffle概述
1703879046
1703879047 truffle是一种开发环境(提供编译、部署、测试和创建所用的命令行工具)、框架(提供多种包,使编写测试、部署代码、创建客户端等变得容易)和asset pipeline(发布包以及使用其他人发布的包)。
1703879048
1703879049
1703879050
1703879051
1703879052 区块链项目开发指南 [:1703875393]
1703879053 区块链项目开发指南 8.4.1 安装truffle
1703879054
1703879055 truffle适用于OS X、Linux和Windows。truffle要求安装的node.js版本高于5.0。在写本书时,truffle的最新稳定版本是3.1.2,我们将使用这个版本。安装truffle只需要运行如下命令:
1703879056
1703879057
1703879058
1703879059
1703879060 在实施进一步操作之前,确保在network ID 10上运行。理由如前所述。
1703879061
1703879062
1703879063
1703879064
1703879065 区块链项目开发指南 [:1703875394]
1703879066 区块链项目开发指南 8.4.2 初始化truffle
1703879067
1703879068 首先需要为应用创建目录。把目录命名为altcoin。在altcoin目录中,运行如下命令,初始化项目:
1703879069
1703879070
1703879071
1703879072
[ 上一页 ]  [ :1.703879023e+09 ]  [ 下一页 ]