Move language package manager for Diem and Pontem networks.
See documentation at https://docs.pontem.network/.
- If you are using Mac OS see how to install OpenSSL.
Using pre-compiled binaries:
Just visit releases page and download binaries you are going to use.
Using source code:
Clone this repository and follow documentation:
git clone [email protected]:pontem-network/dove.git
cd dove
cargo install --path ./dove
dove -h
dove new first_project
This command will create first_project/
directory with special Move.toml
manifest file and sources/
directory for Move source code.
dove build
See ./build/
folder to get scripts/modules binaries.
dove clean
The contents of the directories will be deleted:
<PROJECT_DIR>/storage
<PROJECT_DIR>/build
dove clean --global
The contents of the directories will be deleted:
<PROJECT_DIR>/storage
<PROJECT_DIR>/build
~/.move/
Command call
allows you to create and publish transactions for Polkadot chain with Move Pallete on board.
call
takes script identifier, type parameters, and arguments and creates a transaction file as an artifact of work.
dove call [CALL] [OPTIONS]
[CALL]
- Call declaration-a
/--args
Script arguments, e.g. 10 20 30-t
,--type
Script type parameters, e.g. 0x1::Dfinance::USD-g
/--gas
Limitation of gas consumption per operation. A positive integer is expected-u
/--url
The url of the substrate node to query [default: ws://localhost:9944]. HTTP, HTTPS, WS protocols are supported. It is recommended to use WS. When using HTTP or HTTPS, you cannot get the publication status.--account
Account from whom to publish. Address or test account name or name wallet key. Example: //Alice, alice, bob, NAME_WALLET_KEY... or 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY. When used in combination with--secret
is ignored.-s
/--secret
Secret phrase. If a secret phrase is specified, you do not need to specify.
Example:
dove call 'store_u64(60)'
This command searches for the script by name 'store_u64' in the script directory. Then it compiles it and creates a transaction file.
This command will fail if:
- There is no script with the name given name 'store_u64'.
- There is more than one script with the name 'store_64'.
- The passed parameters or type parameters do not match the script parameters.
- There are syntax errors in the script.
You can use type parameters like in the Move language.
Example:
dove call 'create_account<0x01::PONT::PONT>()'
You allow can use SS58 address format:
dove call 'create_account<0x1::MyToken::Token>()'
dove call 'create_account<ADDRESS_ALIAS::MyToken::Token>()'
dove call 'create_account(ADDRESS_ALIAS, 10, true, [10, 20, 30, 40], 0x1, SS58_ADDRESS)'
Supported types:
- Numbers (u8, u64, u128)
- Boolean
- Vectors
- Type parameters (generics).
- SS58 format address
- Addresses in hexadecimal format
- ADDRESS_ALIAS - Address alias. Specified in the "addresses" section of Move.toml
For more commands and parameters look at help:
dove call --help
If you look for examples, guidelines how to write modules/scripts or tests, visit Pontem Documentation.
Resource viewer is currently out of date and pending migration inside dove in future versions.
See documentation.
Migrated inside Dove, see help:
dove run --help
Command key
allows you to save the secret keys to the wallet on your computer and access them under an alias.
Saved key can be used when publishing a module or bundle $ dove deploy <FILE_NAME> --account <NAME_KEY> ...
,
as well as when execute a transaction $ dove call <CALL> --account <NAME_KEY> ...
.
Keys are stored on your computer in the ~/.move/
directory. Before saving, they are encrypted with the aes + password.
dove key add --alias <NAME_KEY>
After executing this command, you will be prompted to enter a password and a secret phrase from your wallet.
If you don't want to protect the key with a password, use the --nopassword
flag(Not recommended):
dove key add --alias <NAME_KEY> --nopassword
dove key list
Deleting a key by name:
dove key delete --alias <NAME_KEY>
Deleting all saved keys:
dove key delete --all
$ dove deploy [FILE_NAME|PATH_TO_FILE] [OPTIONS]
[FILE_NAME]
- Name of module or package to be published.[PATH_TO_FILE]
- Path to the file to be published. Expected file extension:pac
bundlemv
modulemvt
transaction
-g
/--gas
Limitation of gas consumption per operation. A positive integer is expected-u
/--url
The url of the substrate node to query [default: ws://localhost:9944]. HTTP, HTTPS, WS protocols are supported. It is recommended to use WS. When using HTTP or HTTPS, you cannot get the publication status.--account
Account from whom to publish. Address or test account name or name wallet key. Example: //Alice, alice, bob, NAME_WALLET_KEY... or 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY. When used in combination with--secret
is ignored.-s
/--secret
Secret phrase. If a secret phrase is specified, you do not need to specify.modules_exclude
Names of modules to exclude from the package process.
dove deploy
dove deploy PACKAGE_NAME --account WALLET_KEY --gas 300
dove deploy PACKAGE_NAME --secret --url ws://127.0.0.1:9944 --gas 400 --modules_exclude MODULE_NAME_1 MODULE_NAME_2 ..
dove deploy MODULE_NAME --secret --url https://127.0.0.1:9933 --gas 400
dove deploy PATH/TO/FILE --account //Alice --gas 300
Move Resource Viewer is a tool to query BCS resources data from blockchain nodes storage and represent them in JSON or human readable format.
- The viewer makes a request to the blockchain node by a sending specific query (address + resource type).
- The viewer send another request to node and query resource type layout.
- The viewer restores resources using response data and type layout.
Query the user's store contract balance:
dove view "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY::Store::Store<u64>" --api "ws://127.0.0.1:9946"
[QUERY]
resource type-path, e.g.:0x1::Account::Balance<0x1::PONT::PONT>
5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY::Store::Store<u64>
- In general:
0xDEADBEEF::Module::Struct< 0xBADBEEF::Mod::Struct<...>, ... >
- Inner address can be omitted, it's inherited by parent:
0xDEADBEEF::Module::Struct<Mod::Struct>
expands to0xDEADBEEF::Module::Struct<0xDEADBEEF::Mod::Struct>
- Query can ends with index
[42]
forvec
-resources
- Output options:
-o
/--output
fs-path to output file-j
/--json
sets output format to json. Can be omitted if output file extension is.json
, so then json format will be chosen automatically.--json-schema
additional json-schema export, fs-path to output schema file.
For more info check out --help
.
Two output formats supported:
- Move-like text
- JSON
The structure of the output in JSON is described in the scheme, which can be obtained by calling with the --json-schema
parameter.
resource 00000000::Account::Balance<00000000::Coins::BTC> {
coin: resource 00000000::Dfinance::T<00000000::Coins::BTC> {
value: 1000000000u128
}
}
{
"is_resource": true,
"type": {
"address": "0000000000000000000000000000000000000001",
"module": "Account",
"name": "Balance",
"type_params": [
{
"Struct": {
"address": "0000000000000000000000000000000000000001",
"module": "Coins",
"name": "BTC",
"type_params": []
}
}
]
},
"value": [
{
"id": "coin",
"value": {
"Struct": {
"is_resource": true,
"type": {
"address": "0000000000000000000000000000000000000001",
"module": "Dfinance",
"name": "T",
"type_params": [
{
"Struct": {
"address": "0000000000000000000000000000000000000001",
"module": "Coins",
"name": "BTC",
"type_params": []
}
}
]
},
"value": [
{
"id": "value",
"value": {
"U128": 1000000000
}
}
]
}
}
}
]
}