当前位置:   article > 正文

Ganache CLI - 用于测试和开发的快速以太坊RPC客户端。_ganache-cli

ganache-cli

Ganache CLI

    用于测试和开发的快速以太坊RPC客户端。 http://truffleframework.com/ganache

注意:testrpc 是现在的ganache-cli。 像使用testrpc一样去使用它。

 

Welcome to Ganache CLI

        Ganache CLI是以太坊开发工具Truffle套件的一部分,是以太坊开发私有区块链的Ganache命令行版本。

        Ganache CLI使用ethereumjs来模拟完整的客户端行为,使开发以太坊应用程序更快,更轻松,更安全。它还包括所有主流的RPC函数和功能(如event),并可以准确地运行以使开发变得容易。

Looking for TestRPC?

         如果你来这里期待找到TestRPC,那你就来对了。 Truffle采用了TestRPC,并将其作为Truffle套件工具的一部分。 从现在开始,您可以期待更好的支持以及大量有助于使以太坊发展更安全,更轻松,更愉快的新功能。就像你将testrpc一样使用ganache-cli。

Installation

         ganache-cli是用Javascript编写的,并通过npm作为Node包进行分发。安装之前首先要确保安装了Node.js(> = v6.11.5)。

 

        npm install -g ganache-cli

Using Ganache CLI 

    Command Line

        $ ganache-cli <options>

 

选项:

        · -a or --accounts: 指定在启动时要生成的帐户数量。

        · -e or --defaultBalanceEther: 分配每个测试帐户的以太币数量。默认值是100。

        · -b or --blockTime: 为自动挖矿指定blockTime(以秒为单位)。默认值为0,不进行自动挖矿。

        · -d or --deterministic: 基于预先定义的助记符生成确定性地址。

        · -n or --secure: 默认锁定可用帐户(适用于第三方交易签名)

        · -m or --mnemonic: 使用特定的HD钱包助记符来生成初始地址。

        · -p or --port: 要监听的端口号。默认为8545。

        · -h or --hostname: 监听的主机名。默认为127.0.0.1。

        · -s or --seed: 使用任意数据生成要使用的HD钱包助记符。

        · -g or --gasPrice: 使用自定义的燃料价格(默认为20000000000)

        · -l or --gasLimit: 使用自定义燃料限制(默认为90000)

        · -f or --fork: 从另一个当前在给定块上运行的以太坊客户端分叉。 输入应该是另一个客户端的HTTP位置和端口, e.g. http://localhost:8545. 您可以选择使用@ 符号:http:// localhost:8545 @ 1599200 指定要分叉的块。

        · -i or --networkId: 指定ganache-cli用于标识自身的网络ID (如果已配置,默认为当前时间或分叉区块链的网络ID)

        · --db: 指定目录的路径以保存链式数据库。如果数据库已经存在,ganache-cli会初始化该链,而不是创建一个新链。

        · --debug: 输出VM操作码以进行调试。

        · --mem: 输出ganache-cli内存使用情况统计信息。这取代了传统的输出。

        · --noVMErrorsOnRPCResponse: 不要将交易发送失败作为RPC错误传输。为与其他客户端(如geth和Parity)兼容的错误报告行为启用此标志。

 

特殊选项:

        · --account: 指定--account = ...(no's')任意多次传递任意私钥及其相关余额以生成初始地址。

 

          $ ganache-cli --account="<privatekey>,balance" [--account="<privatekey>,balance"]

 

    请注意,私钥长度为64个字符,并且必须以0x前缀的十六进制字符串形式输入。余额可以输入为一个整数或0x前缀的十六进制值,指定该帐户中wei的数量。

    使用--account时,不会为您创建HD钱包。

 

        · -u or --unlock: 指定 - unlock...多次传递地址或帐户索引以解锁特定帐户。当与 -- secure一起使用时,--unlock将覆盖指定帐户的锁定状态。

 

          $ ganache-cli --secure --unlock "0x1234..." --unlock "0xabcd..."

 

您还可以指定一个数字,按他们的索引解锁账户:

 

          $ ganache-cli --secure -u 0 -u 1

 

    此功能也可用于模拟帐户来解锁您无法访问的地址。当与-fork功能一起使用时,可以使用ganache-cli将交易作为区块链上的任何地址进行处理,这对于测试和动态分析非常有用。

Library

作为Web3提供者(provider):

        var ganache = require("ganache-cli");

        web3.setProvider(ganache.provider());

 

作为一般的http服务器(server):

        var ganache = require("ganache-cli");

        var server = ganache.server();

        server.listen(port, function(err, blockchain) {...});

 

.provider()和.server()都有一个对象,它允许你指定ganache-cli的行为。该参数是可选的。可用的选项有:

 

    · "accounts": Array of Object's. 每个对象都应该有一个十六进制值的平衡键。还可以指定密钥secretKey,它代表帐户的私钥。如果没有secretKey,则地址是使用给定余额自动生成的。如果指定,则该密钥用于确定帐户的地址。

    · "debug": boolean - 用于调试的输出VM操作码

    · "logger": Object - 实现log()函数的对象,如控制台。

    · "mnemonic": 使用特定的HD钱包助记符来生成初始地址。

    · "port": 作为服务器运行时要侦听的端口号。

    · "seed": 使用任意数据生成要使用的HD钱包助记符。

    · "total_accounts": number - 在启动时生成的帐户数量。

    · "fork": string - 与上面的--fork选项相同

    · "network_id": integer - 与上面的--networkId选项相同

    · "time": Date -  第一个块应该开始的日期。使用此功能以及evm_increaseTime方法来测试时间相关的代码。

    · "locked": boolean  - 帐户是否默认锁定。

    · "db_path": String  - 指定目录的路径以保存链式数据库。如果数据库已经存在,ganache-cli会初始化该链,而不是创建一个新链。

    · "account_keys_path": String  - 指定用于保存帐户和私钥的文件,以进行测试。

    · "vmErrorsOnRPCResponse": boolean  - 是否将事务故障作为RPC错误传送。对于与其他客户端(如geth和Parity)兼容的错误报告行为,设置为false。

Implemented Methods

目前实现的RPC方法是:

  • bzz_hive (stub)

  • bzz_info (stub)

  • debug_traceTransaction

  • eth_accounts

  • eth_blockNumber

  • eth_call

  • eth_coinbase

  • eth_estimateGas

  • eth_gasPrice

  • eth_getBalance

  • eth_getBlockByNumber

  • eth_getBlockByHash

  • eth_getBlockTransactionCountByHash

  • eth_getBlockTransactionCountByNumber

  • eth_getCode (only supports block number “latest”)

  • eth_getCompilers

  • eth_getFilterChanges

  • eth_getFilterLogs

  • eth_getLogs

  • eth_getStorageAt

  • eth_getTransactionByHash

  • eth_getTransactionByBlockHashAndIndex

  • eth_getTransactionByBlockNumberAndIndex

  • eth_getTransactionCount

  • eth_getTransactionReceipt

  • eth_hashrate

  • eth_mining

  • eth_newBlockFilter

  • eth_newFilter (includes log/event filters)

  • eth_protocolVersion

  • eth_sendTransaction

  • eth_sendRawTransaction

  • eth_sign

  • eth_syncing

  • eth_uninstallFilter

  • net_listening

  • net_peerCount

  • net_version

  • miner_start

  • miner_stop

  • personal_listAccounts

  • personal_lockAccount

  • personal_newAccount

  • personal_unlockAccount

  • personal_sendTransaction

  • shh_version

  • rpc_modules

  • web3_clientVersion

  • web3_sha3

还有一些特殊的非标准方法不包含在原始RPC规范中:

  • evm_snapshot :  快照当前块的区块链状态。没有参数。返回创建的快照的整数ID。

  • evm_revert :  将区块链状态恢复为上一个快照。采用一个参数,即要恢复的快照ID。如果没有传递快照ID,它将恢复到最新的快照。返回true。

  • evm_increaseTime :  及时向前跳。取一个参数,即以秒为单位增加的时间量。返回总时间调整,以秒为单位。

  • evm_mine : 强制挖矿。没有参数。开采矿块与是否采矿开始或停止无关。

Unsupported Methods

  • eth_compileSolidity:  如果你想用Javascript编译Solidity,请参阅solc-js项目。

Docker

    开始使用Docker映像的最简单方法是:

 

        docker run -d -p 8545:8545 trufflesuite/ganache-cli:latest

 

    要通过Docker将选项传递给ganache-cli,只需将参数添加到run命令中即可:

 

        docker run -d -p 8545:8545 trufflesuite/ganache-cli:latest -a 10 --debug

 

    从源代码构建Docker容器:

        git clone https://github.com/trufflesuite/ganache-cli.git&& cd ganache-cli

        docker build -t trufflesuite/ganache-cli .

此平台不再更新,欢迎关注本人微信公众号

 

 

 

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/680608
推荐阅读
相关标签
  

闽ICP备14008679号