{"id":26562891,"url":"https://github.com/aelfproject/aelf-command","last_synced_at":"2026-02-14T00:49:20.853Z","repository":{"id":35034882,"uuid":"198977240","full_name":"AElfProject/aelf-command","owner":"AElfProject","description":"CLI implementation in NodeJS.","archived":false,"fork":false,"pushed_at":"2024-10-15T03:33:20.000Z","size":1270,"stargazers_count":2,"open_issues_count":30,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-10-22T15:46:01.813Z","etag":null,"topics":["blockchain","chain","cli","nodejs"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AElfProject.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-26T08:21:54.000Z","updated_at":"2024-10-15T03:30:26.000Z","dependencies_parsed_at":"2023-01-15T12:30:45.054Z","dependency_job_id":"0c91ddcd-0eaa-4d8b-b356-65177d1ba04a","html_url":"https://github.com/AElfProject/aelf-command","commit_stats":{"total_commits":236,"total_committers":10,"mean_commits":23.6,"dds":0.5,"last_synced_commit":"914eaa25224ae7f5ac6606511c37bcb3bb953fb0"},"previous_names":[],"tags_count":54,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AElfProject%2Faelf-command","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AElfProject%2Faelf-command/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AElfProject%2Faelf-command/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AElfProject%2Faelf-command/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AElfProject","download_url":"https://codeload.github.com/AElfProject/aelf-command/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244977725,"owners_count":20541718,"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":["blockchain","chain","cli","nodejs"],"created_at":"2025-03-22T15:29:10.609Z","updated_at":"2026-02-14T00:49:20.808Z","avatar_url":"https://github.com/AElfProject.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aelf-command\n\n\u003cp\u003e\n  \u003ca href=\"https://nodejs.org/download/\"\u003e\n    \u003cimg alt=\"Node version\" src=\"https://img.shields.io/node/v/aelf-command.svg\"\u003e\n  \u003c/a\u003e\n  \u003cimg alt=\"NPM\" src=\"https://img.shields.io/npm/l/aelf-command\"\u003e\n  \u003ca href=\"http://commitizen.github.io/cz-cli/\"\u003e\u003cimg alt=\"Commitizen friendly\" src=\"https://img.shields.io/badge/commitizen-friendly-brightgreen.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/AElfProject/aelf-command/actions/workflows/publish.yml\"\u003e\n    \u003cimg alt=\"coverage\" src=\"https://github.com/AElfProject/aelf-command/actions/workflows/publish.yml/badge.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n| Branch   | Tests                                                                                                                                                | Coverage                                                           |\n| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |\n| `master` | ![Tests](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AElfProject/aelf-command/feature/badge-json/master-test-results.json) | ![Coverage](https://AElfProject.github.io/aelf-command/badges.svg) |\n\n## Descriptions\n\n_A CLI tools built for AElf_\n\n## Features\n\n- Get or Set common configs, `endpoint`, `account`, `datadir`, `password`, `csv`, `json`.\n- For new users who are not familiar with the CLI parameters, any missing parameters will be asked in a prompting way.\n- Create a new `account`.\n- Load an account from a given `private key` or `mnemonic`.\n- Show `wallet` details which include private key, address, public key and mnemonic.\n- Encrypt account info into `keyStore` format and save to file.\n- Get current `Best Height` of the chain.\n- Get `block info` by a given `height` or `block hash`.\n- Get `transaction result` by a given `transaction id`.\n- Send a `transaction` or call a `read-only method` on a smart `contract`.\n- Deploy a smart `contract`.\n- Open a `REPL` for using `JavaScript` to interact with the chain.\n- Friendly interactions, beautify with chalk \u0026 ora.\n- Get current chain status.\n- Create a proposal on any contract method.\n- Deserialize the result returned by executing a transaction.\n- Start a socket.io server for supplying services for dApps.\n\n## Install aelf-command\n\n```bash\nnpm i aelf-command -g\n```\n\n## Using aelf-command\n\n### First Step\n\nYou need to create a new account or load a account by a `private key` or `mnemonic` you already have.\n\n- Create a new wallet\n\n  ```bash\n  $ aelf-command create\n  Your wallet info is :\n  Mnemonic            : great mushroom loan crisp ... door juice embrace\n  Private Key         : e038eea7e151eb451ba2901f7...b08ba5b76d8f288\n  Public Key          : 0478903d96aa2c8c0...6a3e7d810cacd136117ea7b13d2c9337e1ec88288111955b76ea\n  Address             : 2Ue31YTuB5Szy7cnr3SCEGU2gtGi5uMQBYarYUR5oGin1sys6H\n  ✔ Save account info into a file? … no / yes\n  ✔ Enter a password … ********\n  ✔ Confirm password … ********\n  ✔\n  Account info has been saved to \"/Users/young/.local/share/aelf/keys/2Ue31YTuB5Szy7cnr...Gi5uMQBYarYUR5oGin1sys6H.json\"\n  ```\n\n- Load wallet from private key\n\n  ```bash\n  $ aelf-command load e038eea7e151eb451ba2901f7...b08ba5b76d8f288\n  Your wallet info is :\n  Private Key         : e038eea7e151eb451ba2901f7...b08ba5b76d8f288\n  Public Key          : 0478903d96aa2c8c0...6a3e7d810cacd136117ea7b13d2c9337e1ec88288111955b76ea\n  Address             : 2Ue31YTuB5Szy7cnr3SCEGU2gtGi5uMQBYarYUR5oGin1sys6H\n  ✔ Save account info into a file?\n  ✔ Enter a password … ********\n  ✔ Confirm password … ********\n  ✔\n  Account info has been saved to \"/Users/young/.local/share/aelf/keys/2Ue31YTuB5Szy7cnr...Gi5uMQBYarYUR5oGin1sys6H.json\"\n  ```\n\n- show wallet info you already have\n\n  ```bash\n  $ aelf-command wallet -a 2Ue31YTuB5Szy7cnr3SCEGU2gtGi5uMQBYarYUR5oGin1sys6H\n  Your wallet info is :\n  Private Key         : e038eea7e151eb451ba2901f7...b08ba5b76d8f288\n  Public Key          : 0478903d96aa2c8c0...6a3e7d810cacd136117ea7b13d2c9337e1ec88288111955b76ea\n  Address             : 2Ue31YTuB5Szy7cnr3SCEGU2gtGi5uMQBYarYUR5oGin1sys6H\n  ```\n\nHere you can get the account info and decide whether to encrypt account info and save into a file.\n\nExamples:\n\n```bash\n$ aelf-command console -a 2Ue31YTuB5Szy7cnr3SCEGU2gtGi5uMQBYarYUR5oGin1sys6H\n✔ Enter the password you typed when creating a wallet … ********\n✔ Succeed!\nWelcome to aelf interactive console. Ctrl + C to terminate the program. Double tap Tab to list objects\n\n   ╔═══════════════════════════════════════════════════════════╗\n   ║                                                           ║\n   ║   NAME       | DESCRIPTION                                ║\n   ║   AElf       | imported from aelf-sdk                     ║\n   ║   aelf       | the instance of an aelf-sdk, connect to    ║\n   ║              | http://127.0.0.1:8000                      ║\n   ║   _account   | the instance of an AElf wallet, address    ║\n   ║              | is                                         ║\n   ║              | 2Ue31YTuB5Szy7cnr3SCEGU2gtGi5uMQBYarYUR…   ║\n   ║              | 5oGin1sys6H                                ║\n   ║                                                           ║\n   ╚═══════════════════════════════════════════════════════════╝\n```\n\nAny missed parameters you did not give in CLI parameters will be asked in a prompting way\n\n```bash\n$ aelf-command console\n✔ Enter a valid wallet address, if you don\\'t have, create one by aelf-command create … 2Ue31YTuB5Szy7cnr3SCEGU2gtGi5uMQBYarYUR5oGin1sys6H\n✔ Enter the password you typed when creating a wallet … ********\n✔ Succeed!\nWelcome to aelf interactive console. Ctrl + C to terminate the program. Double tap Tab to list objects\n\n   ╔═══════════════════════════════════════════════════════════╗\n   ║                                                           ║\n   ║   NAME       | DESCRIPTION                                ║\n   ║   AElf       | imported from aelf-sdk                     ║\n   ║   aelf       | the instance of an aelf-sdk, connect to    ║\n   ║              | https://tdvw-test-node.aelf.io                  ║\n   ║   _account   | the instance of an AElf wallet, address    ║\n   ║              | is                                         ║\n   ║              | 2Ue31YTuB5Szy7cnr3SCEGU2gtGi5uMQBYarYUR…   ║\n   ║              | 5oGin1sys6H                                ║\n   ║                                                           ║\n   ╚═══════════════════════════════════════════════════════════╝\n\n```\n\n### Help\n\nType\n\n```bash\n$ aelf-command -h\nUsage: aelf-command [command] [options]\n\nOptions:\n  -v, --version                                            output the version number\n  -e, --endpoint \u003cURI\u003e                                     The URI of an AElf node. Eg: http://127.0.0.1:8000\n  -a, --account \u003caccount\u003e                                  The address of AElf wallet\n  -p, --password \u003cpassword\u003e                                The password of encrypted keyStore\n  -d, --datadir \u003cdirectory\u003e                                The directory that contains the AElf related files. Defaults to {home}/.local/share/aelf\n  -c, --csv \u003ccsv\u003e                                          The location of the CSV file containing the parameters.\n  -j, --json \u003cjson\u003e                                        The location of the JSON file containing the parameters.\n  -h, --help                                               output usage information\n\nCommands:\n  call [contract-address|contract-name] [method] [params]     Call a read-only method on a contract.\n  send [contract-address|contract-name] [method] [params]     Execute a method on a contract.\n  get-blk-height                                              Get the current block height of specified chain\n  get-chain-status                                            Get the current chain status\n  get-blk-info [height|block-hash] [include-txs]              Get a block info\n  get-tx-result [tx-id]                                       Get a transaction result\n  console                                                     Open a node REPL\n  create [options] [save-to-file]                             Create a new account\n  wallet                                                      Show wallet details which include private key, address, public key and mnemonic\n  load [private-key|mnemonic] [save-to-file]                  Load wallet from a private key or mnemonic\n  proposal [proposal-contract] [organization] [expired-time]  Send a proposal to an origination with a specific contract method\n  deploy [category] [code-path]                               Deprecated! Please use  `aelf-command send` , check details in aelf-command `README.md`\n  config \u003cflag\u003e [key] [value]                                 Get, set, delete or list aelf-command config\n  event [tx-id]                                               Deserialize the result returned by executing a transaction\n  dapp-server [options]                                       Start a dAPP SOCKET.IO server\n```\n\nin your terminal and get useful information.\n\nAny sub-commands such as `call`, you can get `help` by typing this\n\n```bash\n$ aelf-command call -h\nUsage: aelf-command call [options] [contract-address|contract-name] [method] [params]\n\nCall a read-only method on a contract.\n\nOptions:\n  -h, --help  output usage information\n\nExamples:\n\naelf-command call \u003ccontractName|contractAddress\u003e \u003cmethod\u003e \u003cparams\u003e\naelf-command call \u003ccontractName|contractAddress\u003e \u003cmethod\u003e\naelf-command call \u003ccontractName|contractAddress\u003e\naelf-command call\n\n$ aelf-command console -h\nUsage: aelf-command console [options]\n\nOpen a node REPL\n\nOptions:\n  -h, --help  output usage information\n\nExamples:\n\naelf-command console\n...\n```\n\n### Common options\n\n- `datadir`: The directory that contains `aelf-command` files, such as `encrypted account info keyStore` files. Default to be\n  `{home}/.local/share/aelf`\n- `endpoint`: The endpoint for the RPC service.\n- `account`: The account to be used to interact with the blockchain `endpoint`.\n- `password`: The password for unlocking the given `account`.\n- `csv`: The location of the CSV file containing the parameters.\n- `json`: The location of the JSON file containing the parameters.\n\nYou can specified options above in several ways, and the priority is in the order of low to high.\n\n1. `export` variables in shell.\n\n   ```bash\n   # This is datadir\n   $ export AELF_CLI_DATADIR=/Users/{you}/.local/share/aelf\n   # This is endpoint\n   $ export AELF_CLI_ENDPOINT=http://127.0.0.1:8000\n   # This is account\n   $ export AELF_CLI_ACCOUNT=2Ue31YTuB5Szy7c...gtGi5uMQBYarYUR5oGin1sys6H\n\n   ```\n\n2. `aelf-command` global `.aelfrc` config file\n\n   The global config file is stored in the `\u003cdatadir\u003e/.aelfrc` file, you can read the config file, but better not modify it by\n   yourself.\n\n   Modify this config file by `aelf-command config`.\n\n   - `set`: set and save config in the file, remember just set the `datadir`, `endpoint`, `account`, `password` four keys.\n\n     ```bash\n     $ aelf-command config set endpoint http://127.0.0.1:8000\n     ✔ Succeed!\n\n     $ aelf-command config -h\n     Usage: aelf-command config [options] \u003cflag\u003e [key] [value]\n\n     get, set, delete or list aelf-command config\n\n     Options:\n       -h, --help  output usage information\n\n     Examples:\n\n     aelf-command config get \u003ckey\u003e\n     aelf-command config set \u003ckey\u003e \u003cvalue\u003e\n     aelf-command config delete \u003ckey\u003e\n     aelf-command config list\n     ```\n\n   - `get`: get the value of given `key` from global `.aelfrc` file\n\n     ```bash\n     $ aelf-command config get endpoint\n     http://127.0.0.1:8000\n     ```\n\n   - `delete`: delete the `\u003ckey, value\u003e` from global `.aelfrc` file by a given key\n\n     ```bash\n     $ aelf-command config delete endpoint\n     ✔ Succeed!\n     ```\n\n   - `list`: get the list of all configs stored in global `.aelfrc` file\n\n     ```bash\n     $ aelf-command config list\n     endpoint=http://127.0.0.1:8000\n     password=password\n     ```\n\n   Remember `config` command only can be used to modify the global `.aelfrc` file for now, more usages such as modify working\n   directory will be implemented in later.\n\n3. `aelf-command` working directory `.aelfrc` file\n\n   The current working directory of `aelf-command` can have a file named `.aelfrc` and store configs, the format of this file is\n   like global `.aelfrc` file:\n\n   ```text\n   endpoint http://127.0.0.1:8000\n   password yourpassword\n   ```\n\n   each line is `\u003ckey, value\u003e` config and a whitespace is needed to separate them.\n\n4. `aelf-command` options.\n\n   You can give common options by passing them in CLI parameters.\n\n   ```bash\n   aelf-command console -a sadaf -p password -e http://127.0.0.1:8000\n   ```\n\n   Notice the priority, the options given in higher priority will overwrite the lower priority.\n\n### create - Create a new account\n\nThis command will create a new account.\n\n```bash\n$ aelf-command create -h\nUsage: aelf-command create [options] [save-to-file]\n\ncreate a new account\n\nOptions:\n  -c, --cipher [cipher]  Which cipher algorithm to use, default to be aes-128-ctr\n  -h, --help             output usage information\n\nExamples:\n\naelf-command create \u003csave-to-file\u003e\naelf-command create\n```\n\nExample:\n\n- Specify the cipher way to encrypt account info by passing option `-c [cipher]`, such as:\n\n  ```bash\n  aelf-command create -c aes-128-cbc\n  ```\n\n### load - Load an account by a given `private key` or `mnemonic`\n\nThis command allow you load an account from backup.\n\n```bash\n# load from mnemonic\n$ aelf-command load 'great mushroom loan crisp ... door juice embrace'\n# load from private key\n$ aelf-command load 'e038eea7e151eb451ba2901f7...b08ba5b76d8f288'\n# load from prompting\n$ aelf-command load\n? Enter a private key or mnemonic › e038eea7e151eb451ba2901f7...b08ba5b76d8f288\n...\n```\n\n### wallet - Show wallet details which include `private key`, `address`, `public key` and `mnemonic`\n\nThis command allows you to print wallet info.\n\n```bash\n$ aelf-command wallet -a C91b1SF5mMbenHZTfdfbJSkJcK7HMjeiuw...8qYjGsESanXR\nAElf [Info]: Private Key         : 97ca9fbece296231f26bee0e493500810f...cbd984f69a8dc22ec9ec89ebb00\nAElf [Info]: Public Key          : 04c30dd0c3b5abfc85a11b15dabd0de926...74fe04e92eaebf2e4fef6445d9b9b11efe6f4b70c8e86644b72621f9987dc00bb1eab44a9bd7512ea53f93937a5d0\nAElf [Info]: Address             : C91b1SF5mMbenHZTfdfbJSkJcK7HMjeiuw...8qYjGsESanXR\n```\n\n### proposal - Create a proposal\n\nThere are three kinds of proposal contracts in AElf:\n\n- `AElf.ContractNames.Parliament`\n- `AElf.ContractNames.Referendum`\n- `AElf.ContractNames.Association`\n\ndepending on your needs you can choose one and create a proposal.\n\n- Get an organization address or create one\n\nGet the default organization's address with the parliament contract (`AElf.ContractNames.Parliament`):\n\n```bash\n$ aelf-command call AElf.ContractNames.Parliament GetDefaultOrganizationAddress\n✔ Fetching contract successfully!\n✔ Calling method successfully!\nAElf [Info]:\nResult:\n\"BkcXRkykRC2etHp9hgFfbw2ec1edx7ERBxYtbC97z3Q2bNCwc\"\n✔ Succeed!\n```\n\n`BkcXRkykRC2etHp9hgFfbw2ec1edx7ERBxYtbC97z3Q2bNCwc` is the default organization address.\n\nThe default organization is an organization that contains all miners; every proposal under `AElf.ContractNames.Parliament` can\nonly be released when it has got over 2/3 miners approval.\n\nCreate an organization with the Referendum contract (`AElf.ContractNames.Referendum`):\n\n```bash\n$ aelf-command send AElf.ContractNames.Referendum\n✔ Fetching contract successfully!\n? Pick up a contract method: CreateOrganization\n\nIf you need to pass file contents as a parameter, you can enter the relative or absolute path of the file\n\nEnter the params one by one, type `Enter` to skip optional parameters:\n? Enter the required param \u003ctokenSymbol\u003e: ELF\n? Enter the required param \u003cproposalReleaseThreshold.minimalApprovalThreshold\u003e: 666\n? Enter the required param \u003cproposalReleaseThreshold.maximalRejectionThreshold\u003e: 666\n? Enter the required param \u003cproposalReleaseThreshold.maximalAbstentionThreshold\u003e: 666\n? Enter the required param \u003cproposalReleaseThreshold.minimalVoteThreshold\u003e: 666\n? Enter the required param \u003cproposerWhiteList.proposers\u003e: [\"2hxkDg6Pd2d4yU1A16PTZVMMrEDYEPR8oQojMDwWdax5LsBaxX\"]\nThe params you entered is:\n{\n  \"tokenSymbol\": \"ELF\",\n  \"proposalReleaseThreshold\": {\n    \"minimalApprovalThreshold\": 666,\n    \"maximalRejectionThreshold\": 666,\n    \"maximalAbstentionThreshold\": 666,\n    \"minimalVoteThreshold\": 666\n  },\n  \"proposerWhiteList\": {\n    \"proposers\": [\n      \"2hxkDg6Pd2d4yU1A16PTZVMMrEDYEPR8oQojMDwWdax5LsBaxX\"\n    ]\n  }\n}\n✔ Succeed!\nAElf [Info]:\nResult:\n{\n  \"TransactionId\": \"273285c7e8825a0af5291dd5d9295f746f2bb079b30f915422564de7a64fc874\"\n}\n✔ Succeed!\n```\n\n- Create a proposal\n\n```bash\n$ aelf-command proposal\n? Pick up a contract name to create a proposal: AElf.ContractNames.Parliament\n? Enter an organization address: BkcXRkykRC2etHp9hgFfbw2ec1edx7ERBxYtbC97z3Q2bNCwc\n? Select the expired time for this proposal: 2022/09/23 22:06\n? Optional, input an URL for proposal description:\n? Enter a contract address or name: AElf.ContractNames.Token\n✔ Fetching contract successfully!\n? Pick up a contract method: Transfer\n\nIf you need to pass file contents to the contractMethod, you can enter the relative or absolute path of the file instead\n\nEnter required params one by one:\n? Enter the required param \u003cto\u003e: 2hxkDg6Pd2d4yU1A16PTZVMMrEDYEPR8oQojMDwWdax5LsBaxX\n? Enter the required param \u003csymbol\u003e: ELF\n? Enter the required param \u003camount\u003e: 100000000\n? Enter the required param \u003cmemo\u003e: test\nAElf [Info]:\n { TransactionId:\n   '09c8c824d2e3aea1d6cd15b7bb6cefe4e236c5b818d6a01d4f7ca0b60fe99535' }\n✔ loading proposal id...\nAElf [Info]: Proposal id: \"bafe83ca4ec5b2a2f1e8016d09b21362c9345954a014379375f1a90b7afb43fb\".\n✔ Succeed!\n```\n\nYou can get the proposal id, then get the proposal's status.\n\n- Get proposal status\n\n```bash\n$ aelf-command call AElf.ContractNames.Parliament GetProposal bafe83ca4ec5b2a2f1e8016d09b21362c9345954a014379375f1a90b7afb43fb\n{\n  ...\n  \"expiredTime\": {\n    \"seconds\": \"1663942010\",\n    \"nanos\": 496000\n  },\n  \"organizationAddress\": \"BkcXRkykRC2etHp9hgFfbw2ec1edx7ERBxYtbC97z3Q2bNCwc\",\n  \"proposer\": \"2tj7Ea67fuQfVAtQZ3WBmTv7AAJ8S9D2L4g6PpRRJei6JXk7RG\",\n  \"toBeReleased\": false\n}\n✔ Succeed!\n```\n\n`toBeReleased` indicates whether you can release this proposal. By default, a proposal needs over 2/3 BP nodes approval.\n\n- Release a proposal\n\nYou can release a proposal when it got approved.\n\n```bash\n$ aelf-command send AElf.ContractNames.Parliament Release bafe83ca4ec5b2a2f1e8016d09b21362c9345954a014379375f1a90b7afb43fb\nAElf [Info]:\n { TransactionId:\n   '09c8c824d2e3aea1d...cefe4e236c5b818d6a01d4f7ca0b60fe99535' }\n```\n\nGet the transaction result\n\n```bash\n$ aelf-command get-tx-result 09c8c824d2e3aea1d...cefe4e236c5b818d6a01d4f7ca0b60fe99535\nAElf [Info]: {\n  \"TransactionId\": \"09c8c824d2e3aea1d...cefe4e236c5b818d6a01d4f7ca0b60fe99535\",\n  \"Status\": \"MINED\",\n  \"Logs\": [\n    {\n    \"Address\": \"25CecrU94dmMdbhC3LWMKxtoaL4Wv8PChGvVJM6PxkHAyvXEhB\",\n    \"Name\": \"Transferred\",\n    \"Indexed\": [\n      \"CiIKIJTPGZ24g4eHwSVNLit8jgjFJeeYCEEYLDpFiCeCT0Bf\",\n      \"EiIKIO0jJRxjHdRQmUTby8klRVSqYpwhOyUsnXYV3IrQg8N1\",\n      \"GgNFTEY=\"\n    ],\n    \"NonIndexed\": \"IICgt4fpBSomVC00MzFkMjc0Yi0zNWJjLTRjYzgtOGExZC1iODhhZTgxYzU2Zjc=\"\n    }\n  ],\n  \"Bloom\": \"AAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAACAAAAAAAAAAACAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAQAAA==\",\n  \"BlockNumber\": 28411,\n  \"BlockHash\": \"fa22e4eddff12a728895a608db99d40a4b21894f7c07df1a4fa8f0625eb914a2\",\n  \"Transaction\": {\n    \"From\": \"2tj7Ea67fuQfVAtQZ3WBmTv7AAJ8S9D2L4g6PpRRJei6JXk7RG\",\n    \"To\": \"29RDBXTqwnpWPSPHGatYsQXW2E17YrQUCj7QhcEZDnhPb6ThHW\",\n    \"RefBlockNumber\": 28410,\n    \"RefBlockPrefix\": \"0P+eTw==\",\n    \"MethodName\": \"Release\",\n    \"Params\": \"\\\"ad868c1e0d74127dd746ccdf3443a09459c55cf07d247df053ddf718df258c86\\\"\",\n    \"Signature\": \"DQcv55EBWunEFPXAbqZG20OLO5T0Sq/s0A+/iuwv1TdQqIV4318HrqFLsGpx9m3+sp5mzhAnMlrG7CSxM6EuIgA=\"\n  },\n  \"ReturnValue\": \"\",\n  \"Error\": null\n}\n```\n\nIf you want to call a contract method by creating a proposal and released it, the released transaction result could be confusing,\nyou can use another `aelf-command` sub-command to get the readable result;\n\nTake the example above which has transferred token by proposal, transferred result can be viewed by decoding the `Logs` field in\nthe transaction result. Use `aelf-command event` to decode the results.\n\nPass the transaction id as a parameter:\n\n```bash\n$ aelf-command event 09c8c824d2e3aea1d...cefe4e236c5b818d6a01d4f7ca0b60fe99535\n[Info]:\nThe results returned by\nTransaction: 09c8c824d2e3aea1d...cefe4e236c5b818d6a01d4f7ca0b60fe99535 is:\n[\n  {\n    \"Address\": \"25CecrU94dmMdbhC3LWMKxtoaL4Wv8PChGvVJM6PxkHAyvXEhB\",\n    \"Name\": \"Transferred\",\n    \"Indexed\": [\n      \"CiIKIJTPGZ24g4eHwSVNLit8jgjFJeeYCEEYLDpFiCeCT0Bf\",\n      \"EiIKIO0jJRxjHdRQmUTby8klRVSqYpwhOyUsnXYV3IrQg8N1\",\n      \"GgNFTEY=\"\n    ],\n    \"NonIndexed\": \"IICgt4fpBSomVC00MzFkMjc0Yi0zNWJjLTRjYzgtOGExZC1iODhhZTgxYzU2Zjc=\",\n    \"Result\": {\n      \"from\": \"28Y8JA1i2cN6oHvdv7EraXJr9a1gY6D1PpJXw9QtRMRwKcBQMK\",\n      \"to\": \"2oSMWm1tjRqVdfmrdL8dgrRvhWu1FP8wcZidjS6wPbuoVtxhEz\",\n      \"symbol\": \"ELF\",\n      \"amount\": \"200000000000\",\n      \"memo\": \"T-431d274b-35bc-4cc8-8a1d-b88ae81c56f7\"\n    }\n  }\n\n]\n```\n\nThe `Result` field is the decoded result.\n\nFor more details, check the descriptions of\n[`aelf-command event`](#event-deserialize-the-result-return-by-executing-a-transaction).\n\n### deploy - Deploy a smart contract\n\n**This command has been deprecated, use `aelf-command send` or `aelf-command proposal` instead**\n\nExamples:\n\n1. Use Genesis Contract to deploy a new smart contract\n\n   ```bash\n   $ aelf-command get-chain-status\n   ✔ Succeed\n   {\n     \"ChainId\": \"AELF\",\n     \"Branches\": {\n       \"41a8a1ebf037197b7e2f10a67d81f741d46a6af41775bcc4e52ab855c58c4375\": 8681551,\n       \"ed4012c21a2fbf810db52e9869ef6a3fb0629b36d23c9be2e3692a24703b3112\": 8681597,\n       \"13476b902ef137ed63a4b52b2902bb2b2fa5dbe7c256fa326c024a73dc63bcb3\": 8681610\n     },\n     \"NotLinkedBlocks\": {},\n     \"LongestChainHeight\": 8681610,\n     \"LongestChainHash\": \"13476b902ef137ed63a4b52b2902bb2b2fa5dbe7c256fa326c024a73dc63bcb3\",\n     \"GenesisBlockHash\": \"cd5ce1bfa0cd97a1dc34f735c57bea2fcb9d88fc8f76bece2592fe7d82d5660c\",\n     \"GenesisContractAddress\": \"2gaQh4uxg6tzyH1ADLoDxvHA14FMpzEiMqsQ6sDG5iHT8cmjp8\",\n     \"LastIrreversibleBlockHash\": \"4ab84cdfe0723b191eedcf4d2ca86b0f64e57105e61486c21d98d562b14f2ab0\",\n     \"LastIrreversibleBlockHeight\": 8681483,\n     \"BestChainHash\": \"0dbc2176aded950020577552c92c82e66504ea109d4d6588887502251b7e932b\",\n     \"BestChainHeight\": 8681609\n   }\n\n   # use GenesisContractAddress as a parameter of aelf-command send\n   # use contract method `DeploySmartContract` if the chain you are connecting to requires no limit of authority\n   $ aelf-command send 2gaQh4uxg6tzyH1ADLoDxvHA14FMpzEiMqsQ6sDG5iHT8cmjp8 DeploySmartContract\n   ✔ Fetching contract successfully!\n\n   If you need to pass file contents as a parameter, you can enter the relative or absolute path of the file\n\n   Enter the params one by one, type `Enter` to skip optional param:\n   ? Enter the required param \u003ccategory\u003e: 0\n   ? Enter the required param \u003ccode\u003e: /Users/test/contract.dll\n   ...\n\n   # use contract method `ProposeNewContract` if the chain you are connecting to requires create new propose when deploying smart contracts\n   $ aelf-command send 2gaQh4uxg6tzyH1ADLoDxvHA14FMpzEiMqsQ6sDG5iHT8cmjp8 ProposeNewContract\n   ✔ Fetching contract successfully!\n\n   If you need to pass file contents as a parameter, you can enter the relative or absolute path of the file\n\n   Enter the params one by one, type `Enter` to skip optional param:\n   ? Enter the required param \u003ccategory\u003e: 0\n   ? Enter the required param \u003ccode\u003e: /Users/test/contract.dll\n   ...\n   ```\n\n   - You must input contract method parameters in the prompting way, note that you can input a relative or absolute path of\n     contract file to pass a file to `aelf-command`, `aelf-command` will read the file content and encode it as a base64 string.\n   - After call `ProposeNewContract`, you need to wait for the organization members to approve your proposal and you can release\n     your proposal by calling `releaseApprove` and `releaseCodeCheck` in this order.\n\n### event - Deserialize the result return by executing a transaction\n\nOnly transaction id is required as the parameter.\n\n```bash\n$ aelf-command event fe1974fde291e44e16c55db666f2c747323cdc584d616de05c88c8bae18ecceb\n[Info]:\nThe results returned by\nTransaction: fe1974fde291e44e16c55db666f2c747323cdc584d616de05c88c8bae18ecceb is:\n[\n  {\n    \"Address\": \"2gaQh4uxg6tzyH1ADLoDxvHA14FMpzEiMqsQ6sDG5iHT8cmjp8\",\n    \"Name\": \"ContractDeployed\",\n    \"Indexed\": [\n      \"CiIKIN2O6lDDGWbgbkomYr6+9+2B0JpHsuses3KfLwzHgSmu\",\n      \"EiIKIDXZGwZLKqm78WpYDXuBlyd6Dv+RMjrgOUEnwamfIA/z\"\n    ],\n    \"NonIndexed\": \"GiIKIN2O6lDDGWbgbkomYr6+9+2B0JpHsuses3KfLwzHgSmu\",\n    \"Result\": {\n      \"author\": \"2gaQh4uxg6tzyH1ADLoDxvHA14FMpzEiMqsQ6sDG5iHT8cmjp8\",\n      \"codeHash\": \"35d91b064b2aa9bbf16a580d7b8197277a0eff91323ae0394127c1a99f200ff3\",\n      \"address\": \"2gaQh4uxg6tzyH1ADLoDxvHA14FMpzEiMqsQ6sDG5iHT8cmjp8\"\n    }\n  }\n]\n✔ Succeed!\n```\n\nThis command get the `Log` field of a transaction result and deserialize the `Log` field with the correspond protobuf descriptors.\n\nA transaction may be related with several `Contract Method`'s events, so the transaction result can include several Logs.\n\nIn each item:\n\n- `Address`: the contract address.\n- `Name`: name of event published from related contract method.\n- `Indexed`: indexed data of event in type of base64\n- `NoIndexed`: no indexed data of event in type of base64.\n- `Result`: the decoded result, this is readable and you can use it and get what the fields means inside the `Result` by reading\n  the contract documents or contract related protobuf files. In this example, you can read the\n  [protobuf file](https://github.com/AElfProject/AElf/blob/master/protobuf/acs0.proto#L95);\n\n### send - Send a transaction\n\n```bash\n$ aelf-command send\n✔ Enter the the URI of an AElf node … https://tdvw-test-node.aelf.io\n✔ Enter a valid wallet address, if you don't have, create one by aelf-command create … D3vSjRYL8MpeRpvUDy85ktXijnBe2tHn8NTACsggUVteQCNGP\n✔ Enter the password you typed when creating a wallet … ********\n✔ Enter contract name (System contracts only) or the address of contract … AElf.ContractNames.Token\n✔ Fetching contract successfully!\n? Pick up a contract method: Transfer\n\nIf you need to pass file contents as a parameter, you can enter the relative or absolute path of the file\n\nEnter the params one by one, type `Enter` to skip optional param:\n? Enter the required param \u003cto\u003e: C91b1SF5mMbenHZTfdfbJSkJcK7HMjeiuwfQu8qYjGsESanXR\n? Enter the required param \u003csymbol\u003e: ELF\n? Enter the required param \u003camount\u003e: 100000000\n? Enter the required param \u003cmemo\u003e: 'test command'\nThe params you entered is:\n{\n  \"to\": \"C91b1SF5mMbenHZTfdfbJSkJcK7HMjeiuwfQu8qYjGsESanXR\",\n  \"symbol\": \"ELF\",\n  \"amount\": 100000000,\n  \"memo\": \"'test command'\"\n}\n✔ Succeed!\nAElf [Info]:\nResult:\n{\n  \"TransactionId\": \"85d4684cb6e4721a63893240f73f675ac53768679c291abeb54974ff4e063bb5\"\n}\n✔ Succeed!\n```\n\n```bash\naelf-command send AElf.ContractNames.Token Transfer '{\"symbol\": \"ELF\", \"to\": \"C91b1SF5mMbenHZTfdfbJSkJcK7HMjeiuwfQu8qYjGsESanXR\", \"amount\": \"1000000\"}'\n```\n\n### call - Call a read-only method on a contract\n\n```bash\n$ aelf-command call\n✔ Enter the the URI of an AElf node … https://tdvw-test-node.aelf.io\n✔ Enter a valid wallet address, if you don't have, create one by aelf-command create … D3vSjRYL8MpeRpvUDy85ktXijnBe2tHn8NTACsggUVteQCNGP\n✔ Enter the password you typed when creating a wallet … ********\n✔ Enter contract name (System contracts only) or the address of contract … AElf.ContractNames.Token\n✔ Fetching contract successfully!\n? Pick up a contract method: GetTokenInfo\n\nIf you need to pass file contents as a parameter, you can enter the relative or absolute path of the file\n\nEnter the params one by one, type `Enter` to skip optional param:\n? Enter the required param \u003csymbol\u003e: ELF\nThe params you entered is:\n{\n  \"symbol\": \"ELF\"\n}\n✔ Calling method successfully!\nAElf [Info]:\nResult:\n{\n  \"symbol\": \"ELF\",\n  \"tokenName\": \"Native Token\",\n  \"supply\": \"99732440917954549\",\n  \"totalSupply\": \"100000000000000000\",\n  \"decimals\": 8,\n  \"issuer\": \"FAJcKnSpbViZfAufBFzX4nC8HtuT93rxUS4VCMACUwXWYurC2\",\n  \"isBurnable\": true,\n  \"issueChainId\": 9992731,\n  \"burned\": \"267559132045477\"\n}\n✔ Succeed!\n```\n\n```bash\naelf-command call AElf.ContractNames.Token GetTokenInfo '{\"symbol\":\"ELF\"}'\n```\n\n#### Call a read-only method and pass params through CSV\n\n```bash\n$ aelf-command call -e https://tdvw-test-node.aelf.io/ -a GyQX6t18kpwaD9XHXe1ToKxfov8mSeTLE9q9NwUAeTE8tULZk -p 1234*Qwer -j ./test.csv  AElf.ContractNames.Token GetBalance\n✔ Fetching contract successfully!\n✔ Calling method successfully!\nAElf [Info]:\nResult:\n{\n  \"symbol\": \"ELF\",\n  \"owner\": \"GyQX6t18kpwaD9XHXe1ToKxfov8mSeTLE9q9NwUAeTE8tULZk\",\n  \"balance\": \"155000\"\n}\n✔ Succeed!\n```\n\n#### Call a read-only method and pass params through JSON\n\n```bash\n$ aelf-command call -e https://tdvw-test-node.aelf.io/ -a GyQX6t18kpwaD9XHXe1ToKxfov8mSeTLE9q9NwUAeTE8tULZk -p 1234*Qwer -j ./test.json  AElf.ContractNames.Token GetBalance\n✔ Fetching contract successfully!\n✔ Calling method successfully!\nAElf [Info]:\nResult:\n{\n  \"symbol\": \"ELF\",\n  \"owner\": \"GyQX6t18kpwaD9XHXe1ToKxfov8mSeTLE9q9NwUAeTE8tULZk\",\n  \"balance\": \"155000\"\n}\n✔ Succeed!\n```\n\n### get-chain-status - Get the current status of the block chain\n\n```bash\n$ aelf-command get-chain-status\n✔ Succeed\n{\n  \"ChainId\": \"AELF\",\n  \"Branches\": {\n    \"59937e3c16860dedf0c80955f4995a5604ca43ccf39cd52f936fb4e5a5954445\": 4229086\n  },\n  \"NotLinkedBlocks\": {},\n  \"LongestChainHeight\": 4229086,\n  \"LongestChainHash\": \"59937e3c16860dedf0c80955f4995a5604ca43ccf39cd52f936fb4e5a5954445\",\n  \"GenesisBlockHash\": \"da5e200259320781a1851081c99984fb853385153991e0f00984a0f5526d121c\",\n  \"GenesisContractAddress\": \"2gaQh4uxg6tzyH1ADLoDxvHA14FMpzEiMqsQ6sDG5iHT8cmjp8\",\n  \"LastIrreversibleBlockHash\": \"497c24ff443f5cbd33da24a430f5c6c5e0be2f31651bd89f4ddf2790bcbb1906\",\n  \"LastIrreversibleBlockHeight\": 4229063,\n  \"BestChainHash\": \"59937e3c16860dedf0c80955f4995a5604ca43ccf39cd52f936fb4e5a5954445\",\n  \"BestChainHeight\": 4229086\n}\n```\n\n### get-tx-result - Get a transaction result\n\n```bash\n$ aelf-command get-tx-result\n✔ Enter the the URI of an AElf node … https://tdvw-test-node.aelf.io\n✔ Enter a valid transaction id in hex format … 7b620a49ee9666c0c381fdb33f94bd31e1b5eb0fdffa081463c3954e9f734a02\n✔ Succeed!\n{ TransactionId:\n   '7b620a49ee9666c0c381fdb33f94bd31e1b5eb0fdffa081463c3954e9f734a02',\n  Status: 'MINED',\n  Logs: null,\n  Bloom:\n   'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',\n  BlockNumber: 7900508,\n  BlockHash:\n   'a317c5ecf4a22a481f88ab08b8214a8e8c24da76115d9ddcef4afc9531d01b4b',\n  Transaction:\n   { From: 'D3vSjRYL8MpeRpvUDy85ktXijnBe2tHn8NTACsggUVteQCNGP',\n     To: 'WnV9Gv3gioSh3Vgaw8SSB96nV8fWUNxuVozCf6Y14e7RXyGaM',\n     RefBlockNumber: 7900503,\n     RefBlockPrefix: 'Q6WLSQ==',\n     MethodName: 'GetTokenInfo',\n     Params: '{ \"symbol\": \"ELF\" }',\n     Signature:\n      'JtSpWbMX13tiJD0klMSJQyPBa0aRNFY4hTh3hltdWqhBpv4IRTbjjZfQj39lbBSCOy68vnLg6rUerEcyCsqwfgE=' },\n  ReadableReturnValue:\n   '{ \"symbol\": \"ELF\", \"tokenName\": \"elf token\", \"supply\": \"1000000000\", \"totalSupply\": \"1000000000\", \"decimals\": 2, \"issuer\": \"2gaQh4uxg6tzyH1ADLoDxvHA14FMpzEiMqsQ6sDG5iHT8cmjp8\", \"isBurnable\": true }',\n  Error: null }\n```\n\n### get-blk-height - Get the block height\n\n```bash\n$ aelf-command get-blk-height\n✔ Enter the the URI of an AElf node … https://tdvw-test-node.aelf.io\n\u003e 7902091\n```\n\n### get-blk-info - Get the block info by a block height or a block hash\n\nYou can pass a block height or a block hash to this sub-command.\n\n```bash\n$ aelf-command get-blk-info\n✔ Enter the the URI of an AElf node: https://tdvw-test-node.aelf.io\n✔ Enter a valid height or block hash: 123\n✔ Include transactions whether or not: no / yes\n{ BlockHash:\n   '6034db3e02e283d3b81a4528442988d28997d3828f87cca1a89457b294517372',\n  Header:\n   { PreviousBlockHash:\n      '9d6bcc588c0bc10942899e7ec4536665c86f23286029ed45287babf22c582f5a',\n     MerkleTreeRootOfTransactions:\n      '7ceb349715787ececa647ad48576467d294de6dcc44d14e19f60c4a91a7a9536',\n     MerkleTreeRootOfWorldState:\n      'b529e2775283edc39cd4e3f685616085b18bd5521a87ea7904ad99cd2dc50910',\n     Extra:\n      '[ \"CkEEJT3FEw+k9cuqv7uruq1fEwQwEjKtYxbXK86wUGrAOH7BgCVkMendLkQZmpEpMgzcz+JXnaVpWtFt3AJcGmGycxL+DggIEvIDCoIBMDQyNTNkYzUxMzBmYTRmNWNiYWFiZmJiYWJiYWFkNWYxMzA0MzAxMjMyYWQ2MzE2ZDcyYmNlYjA1MDZhYzAzODdlYzE4MDI1NjQzMWU5ZGQyZTQ0MTk5YTkxMjkzMjBjZGNjZmUyNTc5ZGE1Njk1YWQxNmRkYzAyNWMxYTYxYjI3MxLqAggCIiIKIOAP2QU8UpM4u9Y3OxdKdI5Ujm3DSyQ4JaRNf7q5ka5mKiIKIH5yNJs87wb/AkWcIrCxvCX/Te3fGHVXFxE8xsnfT1HtMgwIoJro6AUQjOa1pQE4TkqCATA0MjUzZGM1MTMwZmE0ZjVjYmFhYmZiYmFiYmFhZDVmMTMwNDMwMTIzMmFkNjMxNmQ3MmJjZWIwNTA2YWMwMzg3ZWMxODAyNTY0MzFlOWRkMmU0NDE5OWE5MTI5MzIwY2RjY2ZlMjU3OWRhNTY5NWFkMTZkZGMwMjVjMWE2MWIyNzNiIgogHY83adsNje+EtL0lLEte8KfT6X/836zXZTbntbqyjgtoBHAEegwIoJro6AUQzOybpgF6DAigmujoBRCk8MG1AnoLCKGa6OgFEOCvuBF6CwihmujoBRCg/JhzegwIoZro6AUQ9Lml1wF6DAihmujoBRDYyOO7AnoMCKGa6OgFEKy+ip8DkAEOEp8CCoIBMDQ4MWMyOWZmYzVlZjI5NjdlMjViYTJiMDk0NGVmODQzMDk0YmZlOTU0NWFhZGFjMGQ3Nzk3MWM2OTFjZTgyMGQxYjNlYzQxZjNjMDllNDZjNmQxMjM2NzA5ZTE1ZTEyY2U5N2FhZGNjYTBmZGU4NDY2M2M3OTg0OWZiOGYwM2RkMhKXAQgEMgwIpJro6AUQjOa1pQE4IkqCATA0ODFjMjlmZmM1ZWYyOTY3ZTI1YmEyYjA5NDRlZjg0MzA5NGJmZTk1NDVhYWRhYzBkNzc5NzFjNjkxY2U4MjBkMWIzZWM0MWYzYzA5ZTQ2YzZkMTIzNjcwOWUxNWUxMmNlOTdhYWRjY2EwZmRlODQ2NjNjNzk4NDlmYjhmMDNkZDISnwIKggEwNDFiZTQwMzc0NjNjNTdjNWY1MjgzNTBhNjc3ZmRkZmEzMzcxOWVlZjU5NDMwNDY5ZTlmODdkY2IyN2Y0YTQ1NjY0OTI4NmZhNzIxYzljOWVjZDMxMmY0YjdlZDBmZGE4OTJmZTNlZDExZWFjYTBmMzcxOTBkMjAzYTczYTA2YjFmEpcBCAYyDAiomujoBRCM5rWlATgySoIBMDQxYmU0MDM3NDYzYzU3YzVmNTI4MzUwYTY3N2ZkZGZhMzM3MTllZWY1OTQzMDQ2OWU5Zjg3ZGNiMjdmNGE0NTY2NDkyODZmYTcyMWM5YzllY2QzMTJmNGI3ZWQwZmRhODkyZmUzZWQxMWVhY2EwZjM3MTkwZDIwM2E3M2EwNmIxZhKfAgqCATA0OTMzZmYzNDRhNjAxMTdmYzRmYmRmMDU2ODk5YTk0NDllNjE1MzA0M2QxYzE5MWU4NzlkNjlkYzEzZmIyMzM2NWJmNTQxZWM1NTU5MWE2MTQ3YmM1Y2M3ZjUzMjQ0OTY2ZGE5NzA2ZWZmNzZiY2Y2ZjViY2EyOTYzNmVmODNkYzYSlwEICjIMCLCa6OgFEIzmtaUBOCJKggEwNDkzM2ZmMzQ0YTYwMTE3ZmM0ZmJkZjA1Njg5OWE5NDQ5ZTYxNTMwNDNkMWMxOTFlODc5ZDY5ZGMxM2ZiMjMzNjViZjU0MWVjNTU1OTFhNjE0N2JjNWNjN2Y1MzI0NDk2NmRhOTcwNmVmZjc2YmNmNmY1YmNhMjk2MzZlZjgzZGM2EpUDCoIBMDRiNmMwNzcxMWJjMzBjZGY5OGM5ZjA4MWU3MDU5MWY5OGYyYmE3ZmY5NzFlNWExNDZkNDcwMDlhNzU0ZGFjY2ViNDY4MTNmOTJiYzgyYzcwMDk3MWFhOTM5NDVmNzI2YTk2ODY0YTJhYTM2ZGE0MDMwZjA5N2Y4MDZiNWFiZWNhNBKNAggIEAEyDAismujoBRCM5rWlATgwQAJKggEwNGI2YzA3NzExYmMzMGNkZjk4YzlmMDgxZTcwNTkxZjk4ZjJiYTdmZjk3MWU1YTE0NmQ0NzAwOWE3NTRkYWNjZWI0NjgxM2Y5MmJjODJjNzAwOTcxYWE5Mzk0NWY3MjZhOTY4NjRhMmFhMzZkYTQwMzBmMDk3ZjgwNmI1YWJlY2E0egwInJro6AUQjOa1pQF6DAicmujoBRCkz+mjAnoMCJya6OgFEIj8yfECegwInJro6AUQ7KiH0wN6CwidmujoBRCko6hXegwInZro6AUQ6LTNugF6DAidmujoBRCY4NObAnoMCJ2a6OgFEMzWv+oCkAEQIFg6ggEwNGI2YzA3NzExYmMzMGNkZjk4YzlmMDgxZTcwNTkxZjk4ZjJiYTdmZjk3MWU1YTE0NmQ0NzAwOWE3NTRkYWNjZWI0NjgxM2Y5MmJjODJjNzAwOTcxYWE5Mzk0NWY3MjZhOTY4NjRhMmFhMzZkYTQwMzBmMDk3ZjgwNmI1YWJlY2E0QAIYBQ==\", \"\" ]',\n     Height: 123,\n     Time: '2019-07-01T13:39:45.8704899Z',\n     ChainId: 'AELF',\n     Bloom:\n      '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',\n     SignerPubkey:\n      '04253dc5130fa4f5cbaabfbbabbaad5f1304301232ad6316d72bceb0506ac0387ec180256431e9dd2e44199a9129320cdccfe2579da5695ad16ddc025c1a61b273' },\n  Body:\n   { TransactionsCount: 1,\n     Transactions:\n      [ 'a365a682caf3b586cbd167b81b167979057246a726c7282530554984ec042625' ] } }\n```\n\n```bash\naelf-command get-blk-info ca61c7c8f5fc1bc8af0536bc9b51c61a94f39641a93a748e72802b3678fea4a9 true\n```\n\n### console - Open an interactive console\n\n```bash\n$ aelf-command console\n✔ Enter the the URI of an AElf node … https://tdvw-test-node.aelf.io\n✔ Enter a valid wallet address, if you don't have, create one by aelf-command create … 2Ue31YTuB5Szy7cnr3SCEGU2gtGi5uMQBYarYUR5oGin1sys6H\n✔ Enter the password you typed when creating a wallet … ********\n✔ Succeed!\nWelcome to aelf interactive console. Ctrl + C to terminate the program. Double tap Tab to list objects\n\n   ╔═══════════════════════════════════════════════════════════╗\n   ║                                                           ║\n   ║   NAME       | DESCRIPTION                                ║\n   ║   AElf       | imported from aelf-sdk                     ║\n   ║   aelf       | instance of aelf-sdk, connect to           ║\n   ║              | https://tdvw-test-node.aelf.io                  ║\n   ║   _account   | instance of AElf wallet, wallet address    ║\n   ║              | is                                         ║\n   ║              | 2Ue31YTuB5Szy7cnr3SCEGU2gtGi5uMQBYarYUR…   ║\n   ║              | 5oGin1sys6H                                ║\n   ║                                                           ║\n   ╚═══════════════════════════════════════════════════════════╝\n```\n\n### dapp-server - Start a socket.io server for supplying services for dApps\n\nIf you're developing a dApp and you need an environment to hold wallet info and connect to the AElf chain, you can use this\nsub-command to start a server for dApp local development.\n\n```bash\n$ aelf-command dapp-server\nAElf [Info]: DApp server is listening on port 35443\n\n# or listen on a specified port\n$ aelf-command dapp-server --port 40334\nAElf [Info]: DApp server is listening on port 40334\n```\n\nThis server uses Socket.io to listen on local port `35443` and you can use\n[aelf-bridge](https://github.com/AElfProject/aelf-bridge) to connect to this server like this:\n\n```javascript\nimport AElfBridge from 'aelf-bridge';\nconst bridgeInstance = new AElfBridge({\n  proxyType: 'SOCKET.IO',\n  socketUrl: 'http://localhost:35443',\n  channelType: 'ENCRYPT'\n});\n// connect to dapp-server\nbridgeInstance.connect().then(console.log).catch(console.error);\n```\n\ncheckout more information in [aelf-bridge](https://github.com/AElfProject/aelf-bridge) and\n[aelf-bridge-demo](https://github.com/AElfProject/aelf-bridge-demo).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faelfproject%2Faelf-command","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faelfproject%2Faelf-command","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faelfproject%2Faelf-command/lists"}