truffle 命令 和 truffle 的两种API

truffle ,命令

1.truffle 网站找到box下的webpack,本地新建文件下cmd进入dos命令窗口,输入truffle unbox webpack 下载webpack包。

2.目录内容

  • contracts: 存放只能合约,默认创建一个Migrations.sol合约
  • migrations :存放部署脚本
  • test: 存放测试脚本
  • truffle.js :truffle的配置文件

3.编译智能合约

    truffle compile会生成build文件夹,build文件夹下会有智能合约对应的json文件;json文件会包含ABI接口,包括合约中定义的函数,变量等。

4.部署智能合约

    truffle migrate

    在migrations中编写部署智能合约的脚本,以webpack中部署脚本为例,

    //编写部署脚本2_deploy_contracts.js
    var ConvertLib = artifacts.require("./ConvertLib.sol");
    var MetaCoin = artifacts.require("./MetaCoin.sol");
    module.exports = function(deployer) {
        deployer.deploy(ConvertLib);
        deployer.link(ConvertLib, MetaCoin);
        deployer.deploy(MetaCoin);
    };
   // 配置truffle.js
    // Allow us to use ES6 in our migrations and tests
    require('babel-register')
    module.exports = {
        networks: {
            development :{
                host : '127.0.0.1',
                port: 7545,
                network_id:'*'
            }
        }           
    }

5.运行Dapp

    npm run dev

6. 区块链客户端

    ganache 私有区块链环境,是以太坊节点仿真器,可以看到账户,区块,以及交易信息和日志。

    ganache开启后监听网络,默认是http://127.0.0.1:7545,将显示前10个账户以及用于创建这些账户的助记符、

    Truffle develop, 是内置于truffle 的开发区块链环境,无需安装,只需要在终端输入truffle develop即可,运行在根据truffle.js          配置的网络和端口,将显示前10个账户以及用于创建这些账户的助记符;truffle develop 提供了一个控制台,可以

    在控制台终端输入truffle的所有命令,并且不需要truffle前缀,比如在终端输入truffle compile,在develop控制台只需要输入

    compile.   

7.truffle 命令参考

 truffle compile [--all] [--network <name>]  编译合约,缺省[--all] 仅编译变化的合约,--network <name> 指定使用的网络,该网络必须在truffle.js中配置

truffle console [--network <name> ] [--verbose -rpc]  与合同交互的控制台,可指定网络,--verbose-rpc :记录Truffle 和以太坊客户端之间的通信。truffle develop 生成本地开发区块链,允许通过命令行与合同交互。

truffle create (contract | migration | test) <ArtifactName>  创建合约(contracts/ArtifactName.sol),部署文件(migrations/###########_artifact_name.js),测试文件(tests/artifact_name.js),<ArtifactName>新工件的名称。

truffle debug <transaction_hash>  在特定事务上启动调试命令,<transaction_hash>: 用于调试的事务ID

truffle exec <script.js> [--network <name>] 执行JS文件

truffle init 初始化空的项目

truffle install [package_name]<@version> 安装在ETHPM上注册的安装包, package_name 是包名,<@version>指定安装包的版本

truffle migrate [--reset] [-f <number>] [--network <name>] [--compile-all] [--verbose-rpc] ,如果缺省表示从上次完成的部署开始

         -f <number> 部署特定的合约,number是部署脚本文件名前面的数字,--network <name> 指定网络;

          --compile-all 编译所有合约,--verbose-rpc 记录truffle和以太坊客户端之间的通信

truffle networks [--clean ] 显示所有网络,--clean 表示删除与命名网络无关的所有网络工作,一般用于发布包之前清楚无关网络,

truffle opcode <contract_name> 打印给定合同的已编译操作码,必须是合约名称不是文件名

truffle publish 将包发布到ETHPM。

truffle serve [ -p <port>] [--network <name> ] 根据需要提供构建的应用程序,重建和重新部署更改。

truffle test <test_file> [--compile-all] [ --nertwork <name> ] [ --verbose-rpc ] 测试文件,<test_file> :要运行的测试文件,如果当前目录中不存在文件,可以包含路径信息。

truffle unbox <box_name> 下载truffle  提供小项目

truffle version 查看版本

truffle watch 监视文件系统的进行更改并自动重建项目。此命令将启动对合同,应用程序和配置文件更改的监视。如果有更改,它将根据需要重建应用程序。类似于truffle serve ,但是没有Web服务组件。

API

truffle 有两种API: Contract Abstraction API合约抽象API和Contract Instance API合约实例API。合约实例API是根据合约源文件中可用的函数创建的,合约抽象API是一组存在于所有合约中的函数。

合约抽象API

MyContract.new([arg1, arg2, ...],[tx params]) 根据MyContract的构造函数参数[arg1, arg2, ...]创建一个合约实例并部署到网络。

MyContract.at(address)  合约地址创建合约实例

MyContract.deployed() 创建表示合约所在地址的合约抽象的实例,当地址设置时,truffle 会保存地址,以便可以从所使用的给定以太网网络推断部署的地址。这允许你引用已经部署的合约编写代码而不用自己管理地址。

MyContract.setProvider(provider) 设置合约抽象将用来做交易的web3服务器

MyContract.setNetwork(network_id) 设置合约所代表的网络

MyContract.hasNetwork(network_id) 合约抽象是否表明一个特定网络

//继续翻译https://github.com/trufflesuite/truffle-contract

合约实例API

每个合约实例根据solidity不同动态创建

猜你喜欢

转载自blog.csdn.net/liudaoqiang_tj/article/details/81040273