devPHAse
Development tool for Phala Phat contracts.
Install
Add to your projects using package manager (yarn@^1
/ npm
)
yarn add -D devphase
yarn add -D typescript ts-node # required peer dependencies
Features
- Init project (creates required files and directories)
yarn devphase init
- Starting local stack (node + pruntime + pherry)
yarn devphase stack
- Setup local stack (register gatekeeper, create cluster, deploy system contract etc.)
yarn devphase stack:setup
yarn devphase compile [contractName] [--watch]
- Contracts TS bindings creation
yarn devphase typings [contractName]
yarn devphase test
Configuration
Create devphase.config.ts
in root directory (init
command in TODO)
Here is default configuration. All values are optional (merged recuresivly)
import { ProjectConfigOptions } from 'devphase';
const config : ProjectConfigOptions = {
directories: {
artifacts: 'artifacts',
contracts: 'contracts',
logs: 'logs',
stacks: 'stacks',
tests: 'tests',
typings: 'typings'
},
stack: {
blockTime: 6000,
version: 'latest',
node: {
port: 9944,
binary: '{{directories.stack}}/{{stack.version}}/phala-node',
workingDir: '{{directories.stack}}/.data/node',
envs: {},
args: {
'--dev': true,
'--rpc-methods': 'Unsafe',
'--block-millisecs': '{{stack.blockTime}}',
'--ws-port': '{{stack.port.port}}'
},
timeout: 10000,
},
pruntime: {
port: 8000,
binary: '{{directories.stack}}/{{stack.version}}/pruntime',
workingDir: '{{directories.stack}}/.data/pruntime',
envs: {},
args: {
'--allow-cors': true,
'--cores': 0,
'--port': '{{stack.pruntime.port}}'
},
timeout: 2000,
},
pherry: {
gkMnemonic: '//Alice',
binary: '{{directories.stack}}/{{stack.version}}/pherry',
workingDir: '{{directories.stack}}/.data/pherry',
envs: {},
args: {
'--no-wait': true,
'--mnemonic': '{{stack.pherry.gkMnemonic}}',
'--inject-key': '0000000000000000000000000000000000000000000000000000000000000001',
'--substrate-ws-endpoint': 'ws://localhost:{{stack.node.port}}',
'--pruntime-endpoint': 'http://localhost:{{stack.pruntime.port}}',
'--dev-wait-block-ms': '{{stack.blockTime}}',
},
timeout: 2000,
}
},
testing: {
mocha: {},
spawnStack: true,
stackLogOutput: false,
blockTime: 100,
envSetup: {
setup: {
custom: undefined,
timeout: 60 * 1000,
},
teardown: {
custom: undefined,
timeout: 10 * 1000,
}
},
},
devPhaseOptions: {
nodeUrl: 'ws://localhost:{{stack.node.port}}',
workerUrl: 'http://localhost:{{stack.pruntime.port}}',
},
};
export default config;
Usage sample
Check usage sample repo
Sandbox
Check sandbox environment repo for easy testing with up-to-date code
TODO
check here