{"id":25028142,"url":"https://github.com/pontem-network/dove","last_synced_at":"2025-10-20T16:30:51.947Z","repository":{"id":41828963,"uuid":"341568175","full_name":"pontem-network/dove","owner":"pontem-network","description":"🛠️ Diem/Pontem Move package manager","archived":false,"fork":false,"pushed_at":"2022-04-28T06:35:16.000Z","size":16593,"stargazers_count":31,"open_issues_count":12,"forks_count":14,"subscribers_count":10,"default_branch":"master","last_synced_at":"2023-03-04T13:53:14.231Z","etag":null,"topics":["move-language"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pontem-network.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-23T13:43:45.000Z","updated_at":"2022-11-14T09:34:27.000Z","dependencies_parsed_at":"2022-07-19T14:47:51.068Z","dependency_job_id":null,"html_url":"https://github.com/pontem-network/dove","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pontem-network%2Fdove","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pontem-network%2Fdove/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pontem-network%2Fdove/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pontem-network%2Fdove/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pontem-network","download_url":"https://codeload.github.com/pontem-network/dove/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237364004,"owners_count":19298130,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["move-language"],"created_at":"2025-02-05T19:57:45.848Z","updated_at":"2025-10-20T16:30:51.554Z","avatar_url":"https://github.com/pontem-network.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dove\n\nMove language package manager for Diem and Pontem networks.\n\nSee documentation at [https://docs.pontem.network/](https://docs.pontem.network/).\n\n## Installation\n\n* If you are using **Mac OS** see [how to install OpenSSL](https://github.com/pontem-network/dove/issues/147#issuecomment-946744809).\n\n**Using pre-compiled binaries:**\n\nJust visit [releases page](https://github.com/pontem-network/move-tools/releases) and download binaries you are going to use.\n\n**Using source code:**\n\nClone this repository and follow documentation:\n\n```shell script\ngit clone git@github.com:pontem-network/dove.git\ncd dove\ncargo install --path ./dove\n```\n\n##### See help:\n\n```shell script\ndove -h\n```\n\n## Create new project:\n\n```shell script\ndove new first_project \n```\n\nThis command will create `first_project/` directory with special `Move.toml` manifest file and `sources/` directory for Move source code. \n\n## Build project:\n\n```shell script\ndove build\n```\nSee `./build/` folder to get scripts/modules binaries.\n\n##### Clean build directory:\n```shell script\ndove clean\n```\nThe contents of the directories will be deleted:\n- `\u003cPROJECT_DIR\u003e/storage`\n- `\u003cPROJECT_DIR\u003e/build`\n\n##### Clear build directory and global cache:\n```shell script\ndove clean --global\n```\nThe contents of the directories will be deleted:\n- `\u003cPROJECT_DIR\u003e/storage`\n- `\u003cPROJECT_DIR\u003e/build`\n- `~/.move/`\n\n## Pallet Transactions\n\nCommand `call` allows you to create and publish transactions for Polkadot chain with [Move Pallete](https://github.com/pontem-network/sp-move) on board.\n\n`call` takes script identifier, type parameters, and arguments and creates a transaction file as an artifact of work.\n\n```\ndove call [CALL] [OPTIONS]\n```\n\n### Input parameters\n- `[CALL]` - Call declaration\n- `-a` / `--args` Script arguments, e.g. 10 20 30\n- `-t`, `--type` Script type parameters, e.g. 0x1::Dfinance::USD\n- `-g` / `--gas` Limitation of gas consumption per operation. A positive integer is expected\n- `-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.\n- `--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.\n- `-s` / `--secret` Secret phrase. If a secret phrase is specified, you do not need to specify.\n\nExample:\n```shell script\ndove call 'store_u64(60)'\n```\n\nThis command searches for the script by name 'store_u64' in the script directory. Then it compiles it and creates a transaction file.\n\nThis command will fail if:\n\n- There is no script with the name given name 'store_u64'.\n- There is more than one script with the name 'store_64'.\n- The passed parameters or type parameters do not match the script parameters.\n- There are syntax errors in the script.\n\nYou can use type parameters like in the Move language.\n\nExample:\n\n```shell script\ndove call 'create_account\u003c0x01::PONT::PONT\u003e()'\n```\n\nYou allow can use SS58 address format:\n\n```shell script\ndove call 'create_account\u003c0x1::MyToken::Token\u003e()'\ndove call 'create_account\u003cADDRESS_ALIAS::MyToken::Token\u003e()'\ndove call 'create_account(ADDRESS_ALIAS, 10, true, [10, 20, 30, 40], 0x1, SS58_ADDRESS)'\n```\n\nSupported types:\n\n* Numbers (u8, u64, u128)\n* Boolean\n* Vectors\n* Type parameters (generics).\n* SS58 format address\n* Addresses in hexadecimal format\n* ADDRESS_ALIAS - Address alias. Specified in the \"addresses\" section of Move.toml\n\nFor more commands and parameters look at help:\n\n```shell script\ndove call --help\n```\n\n### More\n\nIf you look for examples, guidelines how to write modules/scripts or tests, visit [Pontem Documentation](https://docs.pontem.network/03.-move-vm/compiler_and_toolset).\n \n## Resource Viewer\n\n**Resource viewer is currently out of date and pending migration inside dove in future versions.**\n\nSee [documentation](/resource-viewer/README.md).\n\n## Executor\n\nMigrated inside Dove, see help:\n\n```shell script\ndove run --help\n```\n\n## Manage wallet keys\n\nCommand `key` allows you to save the secret keys to the wallet on your computer and access them under an alias.\nSaved key can be used when publishing a module or bundle `$ dove deploy \u003cFILE_NAME\u003e --account \u003cNAME_KEY\u003e ...`, \nas well as when execute a transaction `$ dove call \u003cCALL\u003e --account \u003cNAME_KEY\u003e ...`.\nKeys are stored on your computer in the `~/.move/` directory. Before saving, they are encrypted with the aes + password.\n\n#### Adding a key:\n\n```shell\ndove key add --alias \u003cNAME_KEY\u003e\n```\nAfter executing this command, you will be prompted to enter a password and a secret phrase from your wallet.\n\nIf you don't want to protect the key with a password, use the `--nopassword` flag(**Not recommended**):\n\n```shell\ndove key add --alias \u003cNAME_KEY\u003e --nopassword\n```\n\n#### View list of saved keys\n\n```shell\ndove key list\n```\n\n#### Deleting a key\n\nDeleting a key by name:\n\n```shell\ndove key delete --alias \u003cNAME_KEY\u003e\n```\n\nDeleting all saved keys:\n\n```shell\ndove key delete --all\n```\n\n## Publishing a module or package\n\n```bash\n$ dove deploy [FILE_NAME|PATH_TO_FILE] [OPTIONS]\n```\n### Input parameters\n- `[FILE_NAME]` - Name of module or package to be published.\n- `[PATH_TO_FILE]` - Path to the file to be published. Expected file extension:\n  - `pac` bundle  \n  - `mv` module\n  - `mvt` transaction\n- `-g` / `--gas` Limitation of gas consumption per operation. A positive integer is expected\n- `-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.\n- `--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.\n- `-s` / `--secret` Secret phrase. If a secret phrase is specified, you do not need to specify.\n- `modules_exclude` Names of modules to exclude from the package process.\n\n### Examples:\n```bash\ndove deploy\ndove deploy PACKAGE_NAME --account WALLET_KEY --gas 300\ndove deploy PACKAGE_NAME --secret --url ws://127.0.0.1:9944 --gas 400 --modules_exclude MODULE_NAME_1 MODULE_NAME_2 ..\ndove deploy MODULE_NAME --secret --url https://127.0.0.1:9933 --gas 400\ndove deploy PATH/TO/FILE --account //Alice --gas 300\n```\n\n## Resource Viewer\nMove Resource Viewer is a tool to query [BCS](https://github.com/diem/bcs) resources data from blockchain nodes storage and represent them in JSON or human readable format.\n\n1. The viewer makes a request to the blockchain node by a sending specific query (address + resource type).\n2. The viewer send another request to node and query resource type layout.\n3. The viewer restores resources using response data and type layout.\n\n## Usage example\n\nQuery the user's store contract balance:\n\n```bash\ndove view \"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY::Store::Store\u003cu64\u003e\" --api \"ws://127.0.0.1:9946\"\n```\n\n### Input parameters\n\n- `[QUERY]` resource type-path, e.g.:\n  - `0x1::Account::Balance\u003c0x1::PONT::PONT\u003e`\n  - `5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY::Store::Store\u003cu64\u003e`\n  - In general: `0xDEADBEEF::Module::Struct\u003c 0xBADBEEF::Mod::Struct\u003c...\u003e, ... \u003e`\n  - Inner address can be omitted, it's inherited by parent:\n    `0xDEADBEEF::Module::Struct\u003cMod::Struct\u003e` expands to `0xDEADBEEF::Module::Struct\u003c0xDEADBEEF::Mod::Struct\u003e`\n  - Query can ends with index `[42]` for `vec`-resources\n- Output options:\n  - `-o` / `--output` fs-path to output file\n  - `-j` / `--json` sets output format to json. Can be omitted if output file extension is `.json`, so then json format will be chosen automatically.\n  - `--json-schema` additional json-schema export, fs-path to output schema file.\n\nFor more info check out `--help`.\n\n### Output\n\nTwo output formats supported:\n\n- Move-like text\n- JSON\n\n_The structure of the output in JSON is described in the scheme, which can be obtained by calling with the `--json-schema` parameter._\n\n#### Move-like example:\n\n```rust\nresource 00000000::Account::Balance\u003c00000000::Coins::BTC\u003e {\n    coin: resource 00000000::Dfinance::T\u003c00000000::Coins::BTC\u003e {\n        value: 1000000000u128\n    }\n}\n```\n\n#### JSON example:\n\n```json\n{\n  \"is_resource\": true,\n  \"type\": {\n    \"address\": \"0000000000000000000000000000000000000001\",\n    \"module\": \"Account\",\n    \"name\": \"Balance\",\n    \"type_params\": [\n      {\n        \"Struct\": {\n          \"address\": \"0000000000000000000000000000000000000001\",\n          \"module\": \"Coins\",\n          \"name\": \"BTC\",\n          \"type_params\": []\n        }\n      }\n    ]\n  },\n  \"value\": [\n    {\n      \"id\": \"coin\",\n      \"value\": {\n        \"Struct\": {\n          \"is_resource\": true,\n          \"type\": {\n            \"address\": \"0000000000000000000000000000000000000001\",\n            \"module\": \"Dfinance\",\n            \"name\": \"T\",\n            \"type_params\": [\n              {\n                \"Struct\": {\n                  \"address\": \"0000000000000000000000000000000000000001\",\n                  \"module\": \"Coins\",\n                  \"name\": \"BTC\",\n                  \"type_params\": []\n                }\n              }\n            ]\n          },\n          \"value\": [\n            {\n              \"id\": \"value\",\n              \"value\": {\n                \"U128\": 1000000000\n              }\n            }\n          ]\n        }\n      }\n    }\n  ]\n}\n```\n\n## LICENSE\n\n[LICENSE](/LICENSE)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpontem-network%2Fdove","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpontem-network%2Fdove","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpontem-network%2Fdove/lists"}