{ "info": { "author": "Ignacio Althabe", "author_email": "nacho.althabe@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "Bifrost\n---\n\n__important__: Work-In-Progress. No production software.\n\nTOC\n+ [Install](#install)\n - [Install form PIP](#install-from-pypi)\n - [Install from Sources](#install-from-sources)\n+ [Usage](#usage)\n - [Create Wallet](#create-wallet)\n - [Transfer ETH](#transfer-eth)\n - [Transfer ERC20](#transfer-erc20)\n+ [Note](#note)\n\n# Install \n\n## Install from PyPI \n\n```\n# Virtualenv\n(pyenv)$ pip install bifrost\n\n# Main Python shell\n$ sudo -H pip install bifrost \n```\n\n## Install from sources\n\n```bash\n# Ubuntu 18.04+\n# Required packages\nsudo apt install -y python3-dev git virtualenv\n\n# Create and activate virtualenv\n$ virtualenv -p python3 pyenv\n(pyenv) $ source pyenv/bin/activate\n\n# clone Repo\n(pyenv) $ git clone https://gitlab.com/dtecdeal/lab/bifrost /path/to/destination/folder\n(pyenv) $ cd /path/to/destination/folder/Python\n(pyenv) $ python setup.py install\n```\n\n# Usage \n\n## Create wallet\n\n```python\n\nimport os\nfrom web3 import Web3\nfrom bifrost import Bifrost\n\nSIGNER_PK = os.environ.get('SIGNER_PK', \"{default-signer-pk}\")\nFACTORY_ADDRESS = os.environ.get('FACTORY_ADDRESS', \"{default-factory-address}\")\nRPC_URL = os.environ.get('RPC_URL', \"{default-RPC-URL}\")\nBIFROST_FACTORY = os.environ.get('BIFROST_FACTORY', \"{bifrost-factory}\")\n\n\nw3Provider = Web3.HTTPProvider(RPC_URL)\nw3 = Web3(w3Provider)\nsigner_account = w3.eth.account.privateKeyToAccount(SIGNER_PK)\n\nbifrost = Bifrost(BIFROST_FACTORY, signer_account, w3Provider)\n\naddress_salt = 1\naddress = bifrost.getAddress(address_salt)\naddress_is_deployed = bifrost.isDeployed(address_salt)\n\nprint('''\n Signer: %s\n Salt: %s\n Address: %s\n IsDeployed: %s \n''' % (signer_account.address, address_salt, address, address_is_deployed))\n```\n## Transfer `ETH`\n\n```python\nimport os\nfrom web3 import Web3\nfrom bifrost import Bifrost\n\nSIGNER_PK = os.environ.get('SIGNER_PK', \"{default-signer-pk}\")\nFACTORY_ADDRESS = os.environ.get('FACTORY_ADDRESS', \"{default-factory-address}\")\nRPC_URL = os.environ.get('RPC_URL', \"{default-RPC-URL}\")\nBIFROST_FACTORY = os.environ.get('BIFROST_FACTORY', \"{bifrost-factory}\")\n\nw3Provider = Web3.HTTPProvider(RPC_URL)\nw3 = Web3(w3Provider)\nsigner_account = w3.eth.account.privateKeyToAccount(SIGNER_PK)\n\nbifrost = Bifrost(BIFROST_FACTORY, signer_account, w3Provider)\n\naddress_salt = 1\n\namount = int(.1 * 10 ** 18)\n\n# Transfer ETH\n# address should have more than .1 (amount) ETH\ntx = bifrost.makeCall(address_salt, signer_account.address, amount)\nprint('ETH transfer: ', tx.hex())\nw3.eth.waitForTransactionReceipt(tx)\n```\n\n## Transfer ERC20\n\n```python\nimport os\nimport json\nfrom web3 import Web3\nfrom bifrost import Bifrost\n\nSIGNER_PK = os.environ.get('SIGNER_PK', \"{default-signer-pk}\")\nFACTORY_ADDRESS = os.environ.get('FACTORY_ADDRESS', \"{default-factory-address}\")\nRPC_URL = os.environ.get('RPC_URL', \"{default-RPC-URL}\")\nBIFROST_FACTORY = os.environ.get('BIFROST_FACTORY', \"{bifrost-factory}\")\nERC20_ADDRESS = os.environ.get('ERC20_ADDRESS', '{default-ERC20-address}')\n\n\nw3Provider = Web3.HTTPProvider(RPC_URL)\nw3 = Web3(w3Provider)\nsigner_account = w3.eth.account.privateKeyToAccount(SIGNER_PK)\n\nbifrost = Bifrost(BIFROST_FACTORY, signer_account, w3Provider)\n\naddress_salt = 1\n\namount = int(.1 * 10 ** 18)\n# Transfer ERC20\n# address should have more than .1 (amount) ERC20\nERC20_abi = json.load(open('path/to/abi/IERC20.json', 'r'))\nERC20 = w3.eth.contract(abi=ERC20_abi)\ncall = ERC20.encodeABI('transfer', args=(signer_account.address, amount))\ntx = bifrost.makeCall(address_salt, ERC20_ADDRESS, 0, call)\nprint('ERC20 transfer: ', tx.hex())\n```\n\n#### Note\nFollowing error\n```\n{'code': -32000, 'message': 'gas required exceeds allowance (7447619) or always failing transaction'}\n```\nMostly related with `always failing transaction`\n\n\n_Made it with \u2764 by __DTecDeal___", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.riaquest.com/nacho/bifrost", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "bifrost-py", "package_url": "https://pypi.org/project/bifrost-py/", "platform": "", "project_url": "https://pypi.org/project/bifrost-py/", "project_urls": { "Homepage": "https://gitlab.riaquest.com/nacho/bifrost" }, "release_url": "https://pypi.org/project/bifrost-py/0.0.5/", "requires_dist": null, "requires_python": "", "summary": "Wallets based on SALT instead of Nonce.", "version": "0.0.5" }, "last_serial": 5602171, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "71284d6335c15b9c8c96b0f5954784d1", "sha256": "fb0628e878f36adf610816e8b722f520cb635abe59633af77771aefbff4dd987" }, "downloads": -1, "filename": "bifrost_py-0.0.1.tar.gz", "has_sig": false, "md5_digest": "71284d6335c15b9c8c96b0f5954784d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3621, "upload_time": "2019-07-29T18:52:04", "url": "https://files.pythonhosted.org/packages/5f/e9/9cde3d11efa8494001acd9883a21569ab6a4c8eaaaec7892668137044f4b/bifrost_py-0.0.1.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "a0bceec10cfcc9937e312dc556411b45", "sha256": "40a5ad3d491dd5ca11f13acca0b5d3cb2738ef932f5ac97271a990f43f6ca419" }, "downloads": -1, "filename": "bifrost_py-0.0.3.tar.gz", "has_sig": false, "md5_digest": "a0bceec10cfcc9937e312dc556411b45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3552, "upload_time": "2019-07-29T19:09:44", "url": "https://files.pythonhosted.org/packages/ad/44/7ea72e9bebfabc71a74f8bd0fc2ff1eb29cbb46b9de1f7a61e232bd32df8/bifrost_py-0.0.3.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "5bd5abeb4c89053eea1ab3d7f04ccdbf", "sha256": "63e992b167f9333844fba41b2b42ab7f2f5d7fefd0d799784fa3e126724e955d" }, "downloads": -1, "filename": "bifrost_py-0.0.5.tar.gz", "has_sig": false, "md5_digest": "5bd5abeb4c89053eea1ab3d7f04ccdbf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4323, "upload_time": "2019-07-29T22:05:42", "url": "https://files.pythonhosted.org/packages/e8/1d/0a1e7540b1328f050e9c92cb2761a4abc3c648bbc0a52a655684f8313845/bifrost_py-0.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5bd5abeb4c89053eea1ab3d7f04ccdbf", "sha256": "63e992b167f9333844fba41b2b42ab7f2f5d7fefd0d799784fa3e126724e955d" }, "downloads": -1, "filename": "bifrost_py-0.0.5.tar.gz", "has_sig": false, "md5_digest": "5bd5abeb4c89053eea1ab3d7f04ccdbf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4323, "upload_time": "2019-07-29T22:05:42", "url": "https://files.pythonhosted.org/packages/e8/1d/0a1e7540b1328f050e9c92cb2761a4abc3c648bbc0a52a655684f8313845/bifrost_py-0.0.5.tar.gz" } ] }