ethers-sdk
v1.0.3
Published
### Pre-Install Hardhat Repo
Maintainers
Readme
ethers-sdk
Pre-Install Hardhat Repo
mkdir appName && cd appName
npx hardhat // options: typescript-project, hardhat-toolboxInstall
npm i -D ethers-sdk
touch .env- Add the following into the
.envfile
// File: .env
GOERLI_RPC_URL='https://goerli.infura.io/v3/api-key-here'
PRIVATE_KEY_1='key'
JSON_LOCATION='utils/json/constants.json'Using the SDK
- RUN
npx hardhat compile - Create deploy and contract scripts with ethers-sdk
// File: scripts/runTest.ts
import sdk from "ethers-sdk";
const main = async () => {
await sdk.setNetwork("goerli");
await sdk.createIfNotExist(sdk.rootFolder(), sdk.JSON_LOCATION);
const addr = await sdk.deployContractFromArtifacts("Lock", "lock", [
new Date().getTime(),
{ value: 1 },
]);
await sdk.wait(10000);
const lockContract = await sdk.getContractFromArtifacts("Lock", "lock");
const ret = await lockContract.withdraw();
return ret;
};
main()
.then((val) => console.log(val))
.catch((err) => console.error(err));- Run scripts in order
npx ts-node scripts/runTest.tsSDK Documentation
deployContract
▸ deployContract(contractAbi, contractName, deployArgs, signer): Promise<string>
This function deploys contract, with ABI path, deployArgs, and a Signer
Example
await sdk.deployContract(
"artifacts/contracts/Utility.sol/Utility.json",
"utility",
[],
await sdk.wallet()
);Parameters
| Name | Type | Description |
| :------------- | :------- | :----------------------------------------------------------- |
| contractAbi | string | Absolute or Relative (to project root) path of ABI JSON file |
| contractName | string | Name of Contract to index deployed addresses |
| deployArgs | any[] | Array of arguments to be deconstructed |
| signer | Signer | Signer used to sign transactions |
Returns
Promise<string>
Address of Deployed Contract
deployContractFromArtifacts
▸ deployContractFromArtifacts(fileName, contractName, deployArgs, artifactLocation?): Promise<string>
This function deploys contract, looking through Artifacts for the ABI matching the fileName provided.
Example
await sdk.deployContractFromArtifacts("Utility", "utility", []);Parameters
| Name | Type | Description |
| :------------------ | :------- | :------------------------------------------- |
| fileName | string | Name of Contract file to find ABI |
| contractName | string | Name of Contract to index deployed addresses |
| deployArgs | any[] | Array of arguments to be deconstructed |
| artifactLocation? | string | (Optional) File location of ABIs |
Returns
Promise<string>
Address of Deployed Contract
getContract
▸ getContract(contractAbi, contractAddress, signer): Promise<Contract>
This function creates a contract interface with a deployed contract.
Example
await sdk.getContract(
"artifacts/contracts/Utility.sol/Utility.json",
"0x65B165C17a8660e84e4427c4024fcB784577AB05",
await sdk.wallet()
);Parameters
| Name | Type | Description |
| :---------------- | :------- | :----------------------------------------------------------- |
| contractAbi | string | Absolute or Relative (to project root) path of ABI JSON file |
| contractAddress | string | Address of Deployed Contract |
| signer | Signer | Signer used to sign transactions |
Returns
Promise<Contract>
Deployed Contract ethers Interface
getContractFromArtifacts
▸ getContractFromArtifacts(fileName, contractName, artifactLocation?): Promise<Contract>
This function creates a contract interface with a deployed contract, looking through Artifacts for the ABI matching the fileName provided.
Example
await sdk.getContractFromArtifacts("Utility", "utility");Parameters
| Name | Type | Description |
| :------------------ | :------- | :------------------------------------------- |
| fileName | string | Name of Contract file to find ABI |
| contractName | string | Name of Contract to index deployed addresses |
| artifactLocation? | string | (Optional) File location of ABIs |
Returns
Promise<Contract>
Deployed Contract ethers Interface
readJson
▸ readJson(type?, name?, file?): Promise<undefined | string | ObjectAny>
This reads json file given type and name
Example
await readJson("addresses", "goerli-utility");Parameters
| Name | Type | Description |
| :------ | :------- | :------------------------------------------------- |
| type? | string | (Optional) Type of saved data (eg. addresses) |
| name? | string | (Optional) Name of saved data (eg. goerli-utility) |
| file? | string | (Optional) File that data is saved in |
Returns
Promise<undefined | string | ObjectAny>
Object or string, depending on input
rootFolder
▸ rootFolder(): string
Get rootFolder absolute path
Example
rootFolder();Returns
string
rootFolder absolute path
saveAddress
▸ saveAddress(name, value, file?): Promise<void>
This function saves the address given a contract name
Example
await saveAddress("utility", "0x4d391169EcF040072d8Da35d70166f70254B32C7");Parameters
| Name | Type | Description |
| :------ | :------- | :------------------------------------------- |
| name | string | Name of Contract to index deployed addresses |
| value | string | Value of address to save |
| file? | string | (Optional) File to save address in |
Returns
Promise<void>
Promise to save address of given contract
saveJson
▸ saveJson(type, name, value, file?): Promise<void>
This saves to json file given type, name, and value
Example
await saveJson(
"addresses",
"goerli-utility",
"0x65B165C17a8660e84e4427c4024fcB784577AB05"
);Parameters
| Name | Type | Description |
| :------ | :------- | :------------------------------------------------------------------- |
| type | string | Type of saved data (eg. addresses) |
| name | string | Name of saved data (eg. goerli-utility) |
| value | string | Value of saved data (eg. 0x65B165C17a8660e84e4427c4024fcB784577AB05) |
| file? | string | (Optional) File that data is saved in |
Returns
Promise<void>
Promise to finish writing to file
setNetwork
▸ setNetwork(networkName): Promise<string>
This function changes the current NETWORK
Example
await setNetwork("goerli");Parameters
| Name | Type | Description |
| :------------ | :------- | :-------------------------------- |
| networkName | string | name of NETWORK name to change to |
Returns
Promise<string>
current network (localhost / hardhat / goerli)
wallet
▸ wallet(): Promise<Signer>
This function returns a Signer connected to a provider, given the appropriate network
Example
await wallet();Returns
Promise<Signer>
Signer used to sign transactions
SDK Expansion
- Unit / Integration Testing
- Set up hardhat JSONRPC
- Set up IPFS calls
- Event Listener and Logger
- Syntactic security analysis of contracts
