在学习、调试和管理与以太坊网络的交互过程中,sandbox实用程序提供了一种使用最常用以太坊实用程序的简单方法。
If no command is given, it will enter a REPL interface with many of the ethers utilities already exposed.
用法:
ethers [ COMMAND ] [ ARGS ] [ OPTIONS ]
指令:(默认: sandbox)
sandbox 运行一个带有ethers的REPL VM环境
init FILENAME 创建一个新的JSON钱包
[ --force ] 覆盖任何现有文件
fund TARGET Fund TARGET with testnet ether
info [ TARGET ... ] 到处账户、地址和ENS名称
send TARGET ETHER 从账户accounts[0]向目标TARGET发送ether
[ --allow-zero ] 允许发送到零地址
[ --data DATA ] 在交易中包含数据DATA
sweep TARGET 从账户accounts[0]向目标TARGET发送所有ether
sign-message MESSAGE 用账户accounts[0]签署信息
[ --hex ] 消息内容是十六进制编码
eval CODE 在一个有ethers的虚拟环境运行代码
run FILENAME 在一个有ethers的虚拟环境运行文件
wait HASH 等待交易哈希完成
wrap-ether VALUE Deposit VALUE into Wrapped Ether (WETH)
unwrap-ether VALUE 从Wrapped Ether (WETH)赎回VALUE
send-token TOKEN ADDRESS VALUE
Send VALUE tokens (at TOKEN) to ADDRESS
compile FILENAME 编译Solidity合约
[ --no-optimize ] Do not optimize the compiled output
[ --warnings ] 警告错误
deploy FILENAME 编译并部署Solidity合约
[ --no-optimize ] Do not optimize the compiled output
[ --contract NAME ] 指定要部署的合约
账户选项
--account FILENAME 从(JSON, RAW or mnemonic)文件加载
--account RAW_KEY 使用私钥(insecure *)
--account 'MNEMONIC' 使用助记词(insecure *)
--account - 对原始密钥或者助记词使用安全入口
--account-void ADDRESS 使用地址作为无效签名者
--account-void ENS_NAME 使用解析地址添加为无效签名者
--account-rpc ADDRESS 从JSON-RPC provider程序添加地址
--account-rpc INDEX 从JSON-RPC provider程序添加索引
--mnemonic-password 提示输入助记密码
--xxx-mnemonic-password Prompt for a (experimental) hard password
PROVIDER 选项 (默认: all + homestead)
--alchemy 包含Alchemy
--etherscan 包含Etherscan
--infura 包含INFURA
--nodesmith 包含nodesmith
--rpc URL 包含一个自定义的JSON-RPC
--offline 转储已签署的交易(不发送)
--network NETWORK 要连接的网络(默认: homestead)
交易选项 (默认: query network)
--gasPrice GWEI 交易的默认gas限额(以wei为单位)
--gasLimit GAS 交易的默认gas限额
--nonce NONCE 第一笔交易的初始nonce
--yes 始终接受签名和发送
OTHER OPTIONS
--wait Wait until transactions are mined
--debug 显示错误的堆栈跟踪
--help 显示此用法并退出
--version 显示此版本并退出
(*) 因为在命令行中包含助记符或私钥,在你系统上的其他用户可能可以读取它们,并可能存储在bash历史文件中。不推荐这样做。
创建新的选项
/home/ethers> ethers init wallet.json
创建新的json钱包 - wallet.json
保持密码和文件安全!如果丢失或者遗失,任何人都不能恢复
选择密码: ******
确认密码: ******
加密中... 100%
新的账户地址: 0x485bcC23ae2E5038ec7ec9b8DCB2A6A6291cC003
Saved: wallet.json
# 如果你打算尝试试用Ropsten 测试网...
/home/ethers> ethers --network ropsten fund 0x485bcC23ae2E5038ec7ec9b8DCB2A6A6291cC003
交易哈希: 0x8dc55b8f8dc8076acded97f9e3ed7d6162460c0221e2769806006b6d7d1156e0
发送 Ether and Tokens
# 发送 ether
/home/ricmoo> ethers --account wallet.json send ricmoo.firefly.eth 0.123
密码 (wallet.json): ******
加密... 100%
Transaction:
To: 0x8ba1f109551bD432803012645Ac136ddd64DBA72
From: 0xaB7C8803962c0f2F5BBBe3FA8bf41cd82AA1923C
Value: 0.123 ether
Nonce: 96
Data: 0x
Gas Limit: 21000
Gas Price: 1.2 gwei
Chain ID: 1
Network: homestead
Send Transaction? (y/N/a) y
Response:
Hash: 0xc4adf8b379033d7ab679d199aa35e6ceee9a802ca5ab0656af067e911c4a589a
# Sending a token (SAI)
# NOTE: 合同地址也可以使用,但常用的token合同地址也由以太坊管理
/home/ricmoo> ethers --account wallet.json send-token sai.tokens.ethers.eth ricmoo.firefly.eth 1.0
Sending Tokens:
To: 0x8ba1f109551bD432803012645Ac136ddd64DBA72
Token Contract: 0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359
Value: 1.0
Password (wallet.json): ******
Decrypting... 100%
Transaction:
To: 0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359
From: 0xaB7C8803962c0f2F5BBBe3FA8bf41cd82AA1923C
Value: 0.0 ether
Nonce: 95
Data: 0xa9059cbb0000000000000000000000008ba1f109551bd432803012645ac136ddd64dba720000000000000000000000000000000000000000000000000de0b6b3a7640000
Gas Limit: 37538
Gas Price: 1.0 gwei
Chain ID: 1
Network: homestead
Send Transaction? (y/N/a) y
Response:
Hash: 0xd609ecb7e3b5e8d36fd781dffceede3975ece6774b6322ea56cf1e4d0a17e3a1
签名信息
/home/ethers> ethers --account wallet.json sign-message 'Hello World'
Password (wallet.json): ******
Decrypting... 100%
Message:
Message: "Hello World"
Message (hex): 0x48656c6c6f20576f726c64
Sign Message? (y/N/a) y
Signature
Flat: 0xca3f0b32a22a5ab97ca8be7e4a36b1e81d565c6822465d769f4faa4aa24539fb122ee5649c8a37c9f5fc8446593674159e3a7b039997cd6ee697a24b787b1a161b
r: 0xca3f0b32a22a5ab97ca8be7e4a36b1e81d565c6822465d769f4faa4aa24539fb
s: 0x122ee5649c8a37c9f5fc8446593674159e3a7b039997cd6ee697a24b787b1a16
vs: 0x122ee5649c8a37c9f5fc8446593674159e3a7b039997cd6ee697a24b787b1a16
v: 27
recid: 0
eval
命令可用于从命令行执行简单的单行脚本,这些脚本将传递给其他命令或存储在脚本环境变量中。
获取一个账户的格式化余额
/home/ethers> ethers --network ropsten \
--account wallet.json \
eval \
'accounts[0].getBalance().then(b => formatEther(b))'
3.141592653589793238
获取当前区块数
/home/ethers> ethers --network rinkeby \
eval "provider.getBlockNumber()"
5761009
将Solidity签名转换为JSON
/home/ethers> ethers eval 'utils.Fragment.from(
"function balanceOf(address) view returns (uint)"
).format("json")' | json_pp
{
"inputs" : [
{
"type" : "address",
"name" : "owner"
}
],
"type" : "function",
"payble" : false,
"stateMutability" : "view",
"ouputs" : [
{
"type" : "uint256"
}
],
"name" : "balanceOf",
"constant" : true
}
Compute a topic hash
/home/ricmoo> ethers eval 'id("Transfer(address,address,uint256")'
0xd99659a21de82e379975ce8df556f939a4ccb95e92144f38bb0dd35730ffcdd5
随机创建一个助记符
/home/ricmoo> ethers eval 'Wallet.createRandom().mnemonic'
useful pond inch knock ritual matrix giggle attend dilemma convince coach amazing
所有助记符都有一个密码,但默认是使用空字符串(i.e. ""
)作为密码。如果你的助记符有密码,--mnemonic-password
将会提示你输入密码以解密该账户。
/home/ricmoo> ethers --account mnemonic.txt --mnemonic-password
密码 (助记符): ******
网络: homestead (chainId: 1)
homestead> accounts[0].getAddress()
<Promise id=0 resolved>
'0x6d3F723EC1B73141AA4aC248c3ab34A5a1DAD776'
homestead>
--xxx-mnemonic-password
类似于--mnemonic-password
选项,它使用密码对助记符的帐户进行解密, 然而它首先通过scrypt基于密码的密钥派生函数传递密码,which is intentionally slow and makes a brute-force attack far more difficult.
/home/ricmoo> ethers --account mnemonic.txt --xxx-mnemonic-password
Password (mnemonic; experimental - hard): ******
Decrypting... 100%
network: homestead (chainId: 1)
homestead> accounts[0].getAddress()
<Promise id=0 resolved>
'0x56FC8792cC17971C19bEC4Ced978beEA44711EeD'
homestead>
Note
这仍然是一个实验性的功能(hence the xxx
).
The content of this site is licensed under the Creative Commons License. Generated on January 11, 2023, 9:24pm.