The plugin generates 0xWeb
classes for compiled solidity contracts, making the blockchain development transparent.
We use 📦 dequanto library for the classes
# install 0xweb
$ npm i 0xweb -g
# initialize 0xweb and hardhat project
$ 0xweb init --hardhat
any/directory/Foo.sol
pragma solidity ^0.8.2;
contract Foo {
string public name;
function setName(string memory _name) public {
name = _name;
}
}
Plugin adds also ability to specify the
sources
folder. As per default this is/contracts/**.sol
$ npx hardhat compile --sources ./any/directory/
example.ts
import { Foo } from '0xc/hardhat/Foo/Foo.ts'
import { HardhatProvider } from '@dequanto/hardhat/HardhatProvider'
// automatically deploys the contract to hardhat chain
const deployer = new HardhatProvider();
const foo = await deployer.deployClass<Foo>(Foo, { arguments: [ 'Hello' ] });
// write
const tx = await foo.setName('Hello world')
const receipt = await tx.wait();
// read
const text = await foo.name();
If the contract is already deployed, initialize the contract with the Address as normal class. If the contract is deployed to any other chain - set also the client in constructor
example.ts
import { Foo } from '0xc/hardhat/Foo/Foo.ts'
import { EthWeb3Client } from '@dequanto/clients/EthWeb3Client'
const client = new EthWeb3Client();
const foo = new Foo('0x12345...', client);
// write
const tx = await foo.setName('Hello world');
const receipt = tx.wait();
// read
const text = await foo.name();
npx hardhat compile --sources /foo/bar/qux
- compiles solidity files which are located outside the/contracts
foldernpx hardhat compile --artifacts /dist
- set custom folder for artifacts (ABI JSONs and TS contracts)npx hardhat compile --watch
- Compile the sources and waits to recompile on changesnpx hardhat compile --tsgen false
- Do not generate the TS classesnpx hardhat compile --package path/to/package/folder
- You can split your project into packages, and with the command compile the contracts in a package, the sources will be searched in that directory, and the artifacts output will be written to that directory