{ "info": { "author": "Denis Glotov", "author_email": "", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "Dymka\n=====\n\n[![Build status]](https://travis-ci.org/denisglotov/dymka)\n[![Pypi version]](https://pypi.org/project/dymka/)\n\n[Build status]: https://travis-ci.org/denisglotov/dymka.svg?branch=master\n[Pypi version]: https://img.shields.io/pypi/v/dymka.svg\n\nSwiss-knife command line tool for interacting with Ethereum-based blockchains.\n\nInstall the tool:\n\n pip3 install --user dymka\n\nFollowing are the usage examples.\n\n\nConfiguring provider and 'from' account\n---------------------------------------\n\nUnless your web3 provider is 'http://localhost:8545', you can use the\n`--provider` and specify it every time you run the tool. Or you may create a\nfile `myprovider` with the following content:\n\n --provider\n https://rinkeby.infura.io/v3/...\n\nand run the tool with it: `dymka @myprovider exec eth_blockNumber`. Or you may\nuse environment variable like the following:\n\n export WEB3_PROVIDER=https://rinkeby.infura.io/v3/...\n\nTo specify the account that you use to transact from, use `--from` to specify\naccount keystore file (and `--password` to specify the file with its pass\nphrase) or specify a private key.\n\nSimilarly to above, you can put this to a file, say `myaccount`:\n\n --from\n account.json\n --password\n account.password.txt\n\nand run the tool with it: `dymka @myprovider @myaccount balance`. Or just\n\n export WEB3_FROM=...\n\nIn the following examples I assume you specify both provider and 'from'\naccount.\n\n\nRaw RPC requests\n----------------\n\n $ dymka exec web3_clientVersion\n {\n \"id\": 0,\n \"jsonrpc\": \"2.0\",\n \"result\": \"EthereumJS TestRPC/v2.8.0/ethereum-js\"\n }\n\n $ dymka exec rpc_modules\n {\n \"id\": 0,\n \"jsonrpc\": \"2.0\",\n \"result\": {\n \"eth\": \"1.0\",\n \"net\": \"1.0\",\n \"rpc\": \"1.0\",\n \"web3\": \"1.0\",\n \"evm\": \"1.0\",\n \"personal\": \"1.0\"\n }\n }\n\n $ dymka exec web3_sha3 \"'0x68656c6c6f20776f726c64'\"\n $ dymka exec web3_sha3 \"'hello world'\"\n {\n \"id\": 0,\n \"jsonrpc\": \"2.0\",\n \"result\": \"0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad\"\n }\n\nSee [note about arguments] below for why we need double quotes here.\n\nSee ethereum wiki [JSON-RPC] and [Management APIs] for more details.\n\n[note about arguments]: #note-about-arguments\n[JSON-RPC]: https://github.com/ethereum/wiki/wiki/JSON-RPC\n[Management APIs]: https://github.com/ethereum/go-ethereum/wiki/Management-APIs\n\n\nBalance and nonce of accounts\n-----------------------------\n\n $ dymka balance 0xD6F0d25305cD6F53829aF54945d6FDEC370e20a5\n [\n {\n \"account\": \"0xD6F0d25305cD6F53829aF54945d6FDEC370e20a5\",\n \"result\": 99945104760000000000\n }\n ]\n\n $ dymka nonce 0xD6F0d25305cD6F53829aF54945d6FDEC370e20a5\n [\n {\n \"account\": \"0xD6F0d25305cD6F53829aF54945d6FDEC370e20a5\",\n \"result\": 40\n }\n ]\n\n\nSend money\n----------\n\n dymka send --to 0xb92FbF90bFAC4a34557bbA17b91204C8D36a5055 \\\n --value 1000000000000000000 \\\n --gasPrice 1000000000 -e\n\nNote that `-e` or `--estimate` stands for 'estimate gas'. Alternatively you\ncan specify `--gas 21000`.\n\n\nCompile contract\n----------------\n\nThere is [Demo] contract, compile it like the following so we get `demo.json`.\n\n solc --combined-json abi,bin --optimize demo.sol >demo.json\n\n[Demo]: https://github.com/denisglotov/dymka/blob/master/tests/demo.sol\n\n\nDeploy contract\n---------------\n\n $ dymka -c demo deploy\n {\n \"hash\": \"0xe4a8eeb6dc8a21e430077d460d2618c6a0a380e71dfecadcf4ceb252bae729b3\",\n \"receipt\": {...\n \"contractAddress\": \"0xbABA05e6c21551bb50caF7C684a1Fc9B57B02A9A\",\n ...}\n }\n\nIf you need to send money to the contract being deployed, use `--value`.\n\nFor convenience, export the address as environment variable as following.\n\n export WEB3_CONTRACT_DEMO=0xbABA05e6c21551bb50caF7C684a1Fc9B57B02A9A\n\nAlternatively, you may specify the address every time you want to call/send to\nthe contract with `-a 0xbABA05e6c21551bb50caF7C684a1Fc9B57B02A9A`.\n\n\nCall contract\n-------------\n\n $ dymka -c demo call value\n {\n \"result\": 42\n }\n\n $ dymka -c demo call compare 45\n {\n \"result\": [\n false,\n true\n ]\n }\n\n\nInvoke contract\n---------------\n\n dymka -c demo send set 42 100\n dymka -c demo send act\n\nIf you need to send money to the contract, use `--value`.\n\n\nGas price\n---------\n\nDisplays gas price of the current provider\n([web3.eth.gasPrice](https://web3js.readthedocs.io/en/v1.2.0/web3-eth.html#getgasprice)).\n\n $ dymka gas\n {\n \"gasPrice\": 20000000000\n }\n\n\nOther commands\n--------------\n\n* `checksum` - calculate correct checksummed string for the given address,\n* `show` - display used provider and from address,\n* `transaction` - show transaction details for the given hash,\n* `receipt` - show receipt for the given hash.\n* `help` - shows full list of commands and short command description.\n\n\nNote about arguments\n--------------------\n\nArguments for deploy, call and send contracts are first evaluated with python\n(`eval()`). Thus addresses should be quoted twice like the following.\n\n $ dymka -c demo send teardown \"\\\"0x0000000000000000000000000000000000000000\\\"\"\n\nThe outer quotes are consumed by your shell (e.g. bash) and the inner\n(escaped) quotes are consumed by python to make sure your address is not\nevaluated to the plain number 0. Use `-vd` (verbose and dry run) to see how\nyour arguments are evaluated.\n\n\nTroubleshooting\n---------------\n\nUse `-v` and `-vv` flags to see more information. File an [issue]\nor send a pull request so I try to help and review.\n\n[issue]: https://github.com/denisglotov/dymka/issues/new\n\n\nDonate\n------\n\nIf you find the tool useful, please donate to ethereum address\n0xb92FbF90bFAC4a34557bbA17b91204C8D36a5055.\n\n![qr](https://denisglotov.github.io/dymka/0xb92FbF90bFAC4a34557bbA17b91204C8D36a5055.png)\n\nHappy hacking \ud83d\udc31.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/denisglotov/dymka", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "dymka", "package_url": "https://pypi.org/project/dymka/", "platform": "", "project_url": "https://pypi.org/project/dymka/", "project_urls": { "Homepage": "https://github.com/denisglotov/dymka" }, "release_url": "https://pypi.org/project/dymka/1.0.4/", "requires_dist": [ "web3" ], "requires_python": ">=3.6", "summary": "Swiss-knife cli for Ethereum-based blockchains", "version": "1.0.4" }, "last_serial": 5891707, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "13af159d9ce21c4d235c12a53f994dc8", "sha256": "d489409aa929de9254518da6f7e453544e13d6cfa8f1fb9b75d2e69455829623" }, "downloads": -1, "filename": "dymka-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "13af159d9ce21c4d235c12a53f994dc8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 7221, "upload_time": "2019-09-13T18:11:28", "url": "https://files.pythonhosted.org/packages/4d/32/9dd4a60d85cc5bdfaef5df191e83ac14664dac2a31083a2ff41fda4f46e7/dymka-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b7575100f811c38e0c7d32bf10bb03d8", "sha256": "26b8d3050280d3345ea8953e4e59b7c12422dd48273119fe4639ef1d8986de48" }, "downloads": -1, "filename": "dymka-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b7575100f811c38e0c7d32bf10bb03d8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6083, "upload_time": "2019-09-13T18:11:30", "url": "https://files.pythonhosted.org/packages/ff/32/e697d398103767bcb631f19fd264f35bf9d5c34fe2b688c754d58aeb9d54/dymka-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "a1d19028d7a41daa0e002d75ee7502a0", "sha256": "3c627f0141bb0bb4f5d01d57a74f888b41f49c3a9a306172fe09d64c3a0e02ce" }, "downloads": -1, "filename": "dymka-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a1d19028d7a41daa0e002d75ee7502a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 7400, "upload_time": "2019-09-15T08:25:49", "url": "https://files.pythonhosted.org/packages/2f/72/3f0d4f6df5efbf1237d8164d9207fc63476e752711726a34a75a5da72d6a/dymka-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "de5fbf8562a9e7e3243b8c96b1b1fd19", "sha256": "d033a9f2f201bf0ab441eccdf0613687c4a4286203224c66133132ea787e452b" }, "downloads": -1, "filename": "dymka-1.0.1.tar.gz", "has_sig": false, "md5_digest": "de5fbf8562a9e7e3243b8c96b1b1fd19", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6257, "upload_time": "2019-09-15T08:25:51", "url": "https://files.pythonhosted.org/packages/de/da/5fe7c8a9fe00eba7385cc9c84b13ec0acf860f9f4f5a64206aa16c9073d6/dymka-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "07f9e04babee020a32ed8e50f2c5fd9f", "sha256": "4ac2b22de4bca82eca9fbe57cdd5943949cf75f719c3d3ebd9abd59ae058cefb" }, "downloads": -1, "filename": "dymka-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "07f9e04babee020a32ed8e50f2c5fd9f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 7383, "upload_time": "2019-09-15T11:11:04", "url": "https://files.pythonhosted.org/packages/df/19/87f95eb1551e7945153f221730b47a47a41b871f2e927c9eb322ac6d8edf/dymka-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "86db9d19674900aa4b5affdec3150fcc", "sha256": "5503c73e545a6bd6e3cffa3ee89e867f465bcb48e42b1dc15a464394d004ad46" }, "downloads": -1, "filename": "dymka-1.0.2.tar.gz", "has_sig": false, "md5_digest": "86db9d19674900aa4b5affdec3150fcc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6240, "upload_time": "2019-09-15T11:11:06", "url": "https://files.pythonhosted.org/packages/3f/05/e83314a95b119ce01f4551e4f108f5f21867522516d651ba55ee71d09846/dymka-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "509c2c0fa7688c86399a054681b45a86", "sha256": "b5d110644348e420d9fb0f35b457f811f8d4a2caa088d4aeac444f82999dccbb" }, "downloads": -1, "filename": "dymka-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "509c2c0fa7688c86399a054681b45a86", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 7680, "upload_time": "2019-09-25T18:14:02", "url": "https://files.pythonhosted.org/packages/e1/55/1e7b89809306575332b3b950dd9be855913402656a87ecc2815f6c7028b9/dymka-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8f30dca4133e4540f3e0a51fabb3b62", "sha256": "422dd8cc23eb20456a4ba97836f68a843b5897378e7e72b8dbfc22c026d9848c" }, "downloads": -1, "filename": "dymka-1.0.3.tar.gz", "has_sig": false, "md5_digest": "f8f30dca4133e4540f3e0a51fabb3b62", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6549, "upload_time": "2019-09-25T18:14:05", "url": "https://files.pythonhosted.org/packages/e4/b2/626a34a50dbfda98569bd8c4d720d2350f57d3cff739db6210c39f0f5652/dymka-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "0a826baab922d6e2c6b5f7302e1ad249", "sha256": "27bb417cbeca08c16ada5fc7c8cca2de1294516256acc4c5b46648237fa26bc4" }, "downloads": -1, "filename": "dymka-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "0a826baab922d6e2c6b5f7302e1ad249", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8255, "upload_time": "2019-09-26T17:10:54", "url": "https://files.pythonhosted.org/packages/bc/98/ebd57c0f511b197e1613b5cdff9e3dc988113fc02bcdbd6651db3e1c6a5c/dymka-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d1a409c80c762fcddef4978a5773fb4", "sha256": "4001b84a49f10cbdc9492b4b71bcff5c642dce61c62ffcc9e90e0794b363f8ab" }, "downloads": -1, "filename": "dymka-1.0.4.tar.gz", "has_sig": false, "md5_digest": "6d1a409c80c762fcddef4978a5773fb4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7083, "upload_time": "2019-09-26T17:10:56", "url": "https://files.pythonhosted.org/packages/08/46/134e2d9658c5a0391bbb30ec9cae63907260347fb4280e2551aed69b0dbd/dymka-1.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0a826baab922d6e2c6b5f7302e1ad249", "sha256": "27bb417cbeca08c16ada5fc7c8cca2de1294516256acc4c5b46648237fa26bc4" }, "downloads": -1, "filename": "dymka-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "0a826baab922d6e2c6b5f7302e1ad249", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8255, "upload_time": "2019-09-26T17:10:54", "url": "https://files.pythonhosted.org/packages/bc/98/ebd57c0f511b197e1613b5cdff9e3dc988113fc02bcdbd6651db3e1c6a5c/dymka-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d1a409c80c762fcddef4978a5773fb4", "sha256": "4001b84a49f10cbdc9492b4b71bcff5c642dce61c62ffcc9e90e0794b363f8ab" }, "downloads": -1, "filename": "dymka-1.0.4.tar.gz", "has_sig": false, "md5_digest": "6d1a409c80c762fcddef4978a5773fb4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7083, "upload_time": "2019-09-26T17:10:56", "url": "https://files.pythonhosted.org/packages/08/46/134e2d9658c5a0391bbb30ec9cae63907260347fb4280e2551aed69b0dbd/dymka-1.0.4.tar.gz" } ] }