etherlime-2-Etherlime Library API-deployer
Posted 慢行厚积
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了etherlime-2-Etherlime Library API-deployer相关的知识,希望对你有一定的参考价值。
Etherlime Library API 库API
Deployer部署者
Deployer functionality
The main functionality the deployer exposes is (obviously) the ability to deploy compiled contract.
开发者暴露的主要函数(明显)是部署编译合约的能力。
This is achieved through the deploy(contract, [libraries], [params])
function.
通过deploy(contract, [libraries], [params])
函数得到这样的能力
deploy(contract, [libraries], [params])
Parameters参数:
contract
- descriptor object for contract to be deployed. More details below被部署合约的描述对象,更多细节在下面libraries
- key-value object containing all libraries which will be linked to the contract. 链接到合约的包含所有库的键-值对象params
- the constructor params you’d need to pass on deploy (if there are any) 在部署中你需要传给合约构造函数的参数(如果需要的话)
The contract is descriptor object that needs to have at least the following three fields:
合约是至少需要下面三个字段的描述对象
contractName
- the name of the contract 合约名字abi
- the abi interface of the contract 合约abi接口bytecode
- the compiled bytecode 编译的字节码
The easiest way to get such descriptor is to compile your solidity files via etherlime compile
最简单的得到描述者的方法是通过etherlime compile编译你的solidity文件
The libraries object should be in the following format:
文件对象应该是如下的格式:
{ libraryName0: ‘0xAddressOfLibrary0‘, libraryName1: ‘0xAddressOfLibrary1‘ }
If the contract to be deployed doesn’t contains any libraries, {}
, undefined
, null
, false
or 0
can be passed. For convenience we have made the deploy function to work even without this parameter passed.
如果被部署的合约没有包含任何的库,那么可以传递{}
, undefined
, null
, false
或0给库对象。为了方便,即使没有这些参数被传递我们也可以让部署函数工作起来
Example举例说明:
Linking libraries链接库
const contractUsingQueueAndLinkedList = require(‘...‘); const libraries = { Queue: ‘0x655341AabD39a5ee0939796dF610aD685a984C53, LinkedList: ‘0x619acBB5Dafc5aC340B6de4821835aF50adb29c1‘ } await deployer.deploy(contractUsingQueueAndLinkedList, libraries);
Skipping linking on contract without arguments
跳过库链接并且合约构造函数不需要参数
const contractWithoutLibraries = require(‘...‘); await deployer.deploy(contractWithoutLibraries);
Skipping linking on contract with arguments
跳过库链接,合约构造函数需要参数
const contractWithoutLibraries = require(‘...‘); await deployer.deploy(contractWithoutLibraries, false, param1, param2);
estimateGas(contract, [libraries], [params])估计使用的gas
Estimates the gas that this transaction is going to cost you.估计这个交易将要花费的gas
Parameters参数:
contract
- descriptor object for contract to be deployed 部署的合约的描述对象libraries
- key-value object containing all libraries which will be linked to the contract. 链接到合约的包含所有库的键-值对象params
- the constructor params you’d need to pass on deploy (if there are any)在部署中你需要传给合约构造函数的参数(如果需要的话)
The contract is descriptor object is the same as above.
合约是和上面一样的描述对象
Example举例说明
const estimate = await deployer.estimateGas(TestContract, randomParam1, randomParam2); // returns something like "2470692"
Deployers
InfuraPrivateKeyDeployer
InfuraPrivateKeyDeployer(privateKey, network, apiKey, [defaultOverrides])
Parameters参数:
privateKey
- The private key to the deployment wallet 部署钱包的密钥network
- network as found inethers.providers.networks 使用
ethers.providers.networks
找到的网络apiKey
- your Infura API keydefaultOverrides
- [Optional] object overiding the deployment settings forgasPrice
andgasLimit
.(可选)复写部署设置中的gasPrice
和
asLimit的对象
const etherlime = require(‘etherlime‘); const TestContract = require(‘./TestContract.json‘); const defaultConfigs = { gasPrice: 20000000000, gasLimit: 4700000 } const deploy = async (network, secret) => { const deployer = new etherlime.InfuraPrivateKeyDeployer(‘Your Private Key Goes Here‘, ‘ropsten‘, ‘Your Infura API Key‘, defaultConfigs); const result = await deployer.deploy(TestContract, ‘0xda8a06f1c910cab18ad187be1faa2b8606c2ec86‘, 1539426974); }
JSONRPCPrivateKeyDeployer
JSONRPCPrivateKeyDeployer(privateKey, nodeUrl, [defaultOverrides])
Parameters参数:
privateKey
- The private key to the deployment wallet部署钱包的密钥nodeUrl
- the url to the node you are trying to connect (local or remote)你打算连接的节点的URL(本地或远程)defaultOverrides
- [Optional] object overiding the deployment settings forgasPrice
andgasLimit
.(可选)复写部署设置中的gasPrice
和
asLimit的对象
const etherlime = require(‘etherlime‘); const TestContract = require(‘./TestContract.json‘); const defaultConfigs = { gasPrice: 20000000000, gasLimit: 4700000 } const deploy = async (network, secret) => { const deployer = new etherlime.JSONRPCPrivateKeyDeployer(‘Your Private Key Goes Here‘, ‘http://localhost:8545/‘, defaultConfigs); const result = await deployer.deploy(TestContract); }
EtherlimeGanacheDeployer
EtherlimeGanacheDeployer([privateKey], [port], [defaultOverrides])
Parameters:
privateKey
- [Optional] The private key to the deployment wallet. Defauts to the first one in the etherlime ganache(可选)部署钱包的私钥。默认为etherlime ganache中的第一个账户port
- [Optional] the port you’ve ran the etherlime ganache on. Defaults to 8545.(可选)etherlime ganache的端口,默认为8545defaultOverrides
- [Optional] object overiding the deployment settings forgasPrice
andgasLimit
.(可选)复写部署设置中的gasPrice
和
asLimit的对象
This deployer only works with etherlime ganache
该部署只在etherlime ganache能工作
const etherlime = require(‘etherlime‘); const TestContract = require(‘./TestContract.json‘); const defaultConfigs = { gasPrice: 20000000000, gasLimit: 4700000 } const deploy = async (network, secret) => { const deployer = new etherlime.EtherlimeGanacheDeployer(); const result = await deployer.deploy(TestContract); }
以上是关于etherlime-2-Etherlime Library API-deployer的主要内容,如果未能解决你的问题,请参考以下文章