-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 2f997d1
Showing
47 changed files
with
2,466 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
keys.py | ||
__pycache__ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2018 Yosuke Kyle Sugi | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
1366063744816570373 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
# Twitter Bot Sample | ||
A sample Twitter bot in Python - created by [@ykdojo](https://github.com/ykdojo). This is part of the [Edit Dojo](https://github.com/ykdojo/editdojo) project. | ||
|
||
--- | ||
|
||
## Set up notes | ||
|
||
### How to install Tweepy | ||
|
||
First, check your Python version with ``python3 --version`` or ``python --version`` on console (terminal/shell/command prompt). | ||
|
||
#### If you don't have Python 3 installed (if the above command fails): | ||
|
||
Either install Python 3 on your computer OR use something like PythonAnywhere (https://csdojo.io/py). | ||
|
||
#### If you have Python 3.6, you can just run: | ||
|
||
``pip3 install tweepy`` | ||
|
||
#### If you have Python 3.7, run the following instead: | ||
|
||
``pip3 install -U git+https://github.com/tweepy/tweepy.git@2efe385fc69385b57733f747ee62e6be12a1338b`` | ||
|
||
If the above command doesn't work, try replacing ``pip3`` with ``pip`` also. | ||
|
||
#### If you have Python 3.7 and want to use pipenv, use: | ||
|
||
``pipenv install -e git+https://github.com/tweepy/tweepy.git@2efe385fc69385b57733f747ee62e6be12a1338b#egg=tweepy`` | ||
|
||
--- | ||
|
||
## Files | ||
- **my_twitter_bot.py** - This is the main file that includes all the logic. | ||
- **last_seen_id.txt** - This will contain the ID of the tweet that my_twitter_bot.py has seen last. If you see any errors when running the main file, try replacing the content with the ID of one of the tweets you want to examine. | ||
- **keys_format.py** - This file is not meant to be used directly. Instead, copy this file in the same folder and rename it to keys.py. Then, put your Twitter API keys in keys.py. That way, my_twitter_bot.py will be able to use this information. | ||
|
||
|
||
Matic Mumbai Testnet Contract Address: | ||
|
||
1. Latest PriceFeed : 0xA057ad5604f90579764a340f70Ebd8109Dcb7e2C | ||
2. ChainLink VRF : 0x6438762ab34186EcE4fc7C16B50cC3D58EE08080 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import retweetersScript | ||
import getWinners | ||
|
||
retweetersScript.retweetersScraping(1365513008642985988) | ||
getWinners.randomGiveaway(1365513008642985988, 'RankJay1') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
*.sol linguist-language=Solidity | ||
*.vy linguist-language=Python |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
# Byte-compiled / optimized / DLL files | ||
__pycache__/ | ||
*.py[cod] | ||
*$py.class | ||
|
||
# C extensions | ||
*.so | ||
build/ | ||
# Distribution / packaging | ||
.Python | ||
build/ | ||
develop-eggs/ | ||
dist/ | ||
downloads/ | ||
eggs/ | ||
.eggs/ | ||
lib/ | ||
lib64/ | ||
parts/ | ||
sdist/ | ||
var/ | ||
wheels/ | ||
pip-wheel-metadata/ | ||
share/python-wheels/ | ||
*.egg-info/ | ||
.installed.cfg | ||
*.egg | ||
MANIFEST | ||
|
||
# PyInstaller | ||
# Usually these files are written by a python script from a template | ||
# before PyInstaller builds the exe, so as to inject date/other infos into it. | ||
*.manifest | ||
*.spec | ||
|
||
# Installer logs | ||
pip-log.txt | ||
pip-delete-this-directory.txt | ||
|
||
# Unit test / coverage reports | ||
htmlcov/ | ||
.tox/ | ||
.nox/ | ||
.coverage | ||
.coverage.* | ||
.cache | ||
nosetests.xml | ||
coverage.xml | ||
*.cover | ||
*.py,cover | ||
.hypothesis/ | ||
.pytest_cache/ | ||
|
||
# Translations | ||
*.mo | ||
*.pot | ||
|
||
# Django stuff: | ||
*.log | ||
local_settings.py | ||
db.sqlite3 | ||
db.sqlite3-journal | ||
|
||
# Flask stuff: | ||
instance/ | ||
.webassets-cache | ||
|
||
# Scrapy stuff: | ||
.scrapy | ||
|
||
# Sphinx documentation | ||
docs/_build/ | ||
|
||
# PyBuilder | ||
target/ | ||
|
||
# Jupyter Notebook | ||
.ipynb_checkpoints | ||
|
||
# IPython | ||
profile_default/ | ||
ipython_config.py | ||
|
||
# pyenv | ||
.python-version | ||
|
||
# pipenv | ||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. | ||
# However, in case of collaboration, if having platform-specific dependencies or dependencies | ||
# having no cross-platform support, pipenv may install dependencies that don't work, or not | ||
# install all needed dependencies. | ||
#Pipfile.lock | ||
|
||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow | ||
__pypackages__/ | ||
|
||
# Celery stuff | ||
celerybeat-schedule | ||
celerybeat.pid | ||
|
||
# SageMath parsed files | ||
*.sage.py | ||
|
||
# Environments | ||
.env | ||
.venv | ||
env/ | ||
venv/ | ||
ENV/ | ||
env.bak/ | ||
venv.bak/ | ||
|
||
# Spyder project settings | ||
.spyderproject | ||
.spyproject | ||
|
||
# Rope project settings | ||
.ropeproject | ||
|
||
# mkdocs documentation | ||
/site | ||
|
||
# mypy | ||
.mypy_cache/ | ||
.dmypy.json | ||
dmypy.json | ||
|
||
# Pyre type checker | ||
.pyre/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2020 Patrick Collins | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,158 @@ | ||
# chainlink-mix | ||
|
||
<br/> | ||
<p align="center"> | ||
<a href="https://chain.link" target="_blank"> | ||
<img src="https://raw.githubusercontent.com/smartcontractkit/chainlink-mix/master/img/chainlink-brownie.png" width="225" alt="Chainlink Brownie logo"> | ||
</a> | ||
</p> | ||
<br/> | ||
|
||
[](http://isitmaintained.com/project/smartcontractkit/chainlink-mix "Average time to resolve an issue") | ||
[](http://isitmaintained.com/project/smartcontractkit/chainlink-mix "Percentage of issues still open") | ||
|
||
This is a repo to work with and use Chainlink smart contracts in a python environment. If you're brand new to Chainlink, check out the beginner walkthroughs in remix to [learn the basics.](https://docs.chain.link/docs/beginners-tutorial) | ||
|
||
You can also check out the more advanced Chainlink tutorials there as well. | ||
|
||
## Prerequisites | ||
|
||
Please install or have installed the following: | ||
|
||
- [nodejs and npm](https://nodejs.org/en/download/) | ||
- [python](https://www.python.org/downloads/) | ||
## Installation | ||
|
||
1. [Install Brownie](https://eth-brownie.readthedocs.io/en/stable/install.html), if you haven't already. Here is a simple way to install brownie. | ||
|
||
```bash | ||
pip install eth-brownie | ||
``` | ||
|
||
2. [Install ganache-cli](https://www.npmjs.com/package/ganache-cli) | ||
|
||
```bash | ||
npm install -g ganache-cli | ||
``` | ||
|
||
3. Download the mix. | ||
|
||
```bash | ||
brownie bake chainlink-mix | ||
cd chainlink-mix | ||
``` | ||
|
||
This will open up a new Chainlink project. Or, you can clone from source: | ||
|
||
```bash | ||
git clone https://github.com/PatrickAlphaC/chainlink-mix | ||
cd chainlink-mix | ||
``` | ||
|
||
If you want to be able to deploy to testnets, do the following. | ||
|
||
1. Set your `WEB3_INFURA_PROJECT_ID`, and `PRIVATE_KEY` [environment variables](https://www.twilio.com/blog/2017/01/how-to-set-environment-variables.html). You can get this by getting a free trial of [Infura](https://infura.io/). At the moment, it does need to be infura. You can find your `PRIVATE_KEY` from your ethereum wallet like [metamask](https://metamask.io/). | ||
|
||
Otherwise, you can build, test, and deploy on your local environment. | ||
|
||
## Chainlink Price Feeds | ||
|
||
This mix provides a simple template for working with Chainlink Smart Contracts. The easiest way to start is to fork the mainnet chain to a local ganache chain. This will allow you to deploy local smart contracts to interact with the [Chainlink Price Feeds](https://docs.chain.link/docs/get-the-latest-price). | ||
|
||
### Running Scripts | ||
|
||
This will deploy a smart contract to kovan and then read you the latest price via [Chainlink Price Feeds](https://docs.chain.link/docs/get-the-latest-price). | ||
``` | ||
brownie run scripts/price_feed_scripts/deploy_price_consumer_v3.py --network kovan | ||
brownie run scripts/price_feed_scripts/read_price_feed.py --network kovan | ||
``` | ||
|
||
Otherwise, you can fork mainnet and use that in a local ganache development environment. | ||
```bash | ||
brownie console --network mainnet-fork | ||
>>> price_feeds = PriceFeed.deploy('0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419', {'from': accounts[0]}) | ||
. | ||
. | ||
>>> latest_price = price_feeds.getLatestPrice() | ||
>>> latest_price | ||
59169208540 | ||
``` | ||
|
||
## Chainlink VRF | ||
|
||
This will deploy a smart contract to kovan and get a Random number via [Chainlink VRF](https://docs.chain.link/docs/get-a-random-number). | ||
``` | ||
brownie run scripts/price_feed_scripts/deploy_vrf.py --network kovan | ||
brownie run scripts/price_feed_scripts/fund_vrf.py --network kovan | ||
brownie run scripts/price_feed_scripts/request_randomness.py --network kovan | ||
brownie run scripts/price_feed_scripts/read_random_number.py --network kovan | ||
``` | ||
|
||
## Chainlink API Call | ||
|
||
|
||
This will deploy a smart contract to kovan and then make an API call via [Chainlink API Call](https://docs.chain.link/docs/make-a-http-get-request). | ||
``` | ||
brownie run scripts/price_feed_scripts/deploy_api_consumer.py --network kovan | ||
brownie run scripts/price_feed_scripts/fund_chainlink_api.py --network kovan | ||
brownie run scripts/price_feed_scripts/request_api.py --network kovan | ||
brownie run scripts/price_feed_scripts/read_api.py --network kovan | ||
``` | ||
|
||
## Testing | ||
|
||
``` | ||
brownie test | ||
``` | ||
|
||
For more information on effective testing with Chainlink, check out [Testing Smart Contracts](https://blog.chain.link/testing-chainlink-smart-contracts/) | ||
|
||
Tests are really robust here! They work for local development and testnets. There are a few key differences between the testnets and the local networks. We utilize mocks so we can work with fake oracles on our testnets. | ||
|
||
There is a `test_unnecessary` folder, which is a good exersize for learning some of the nitty-gritty of smart contract development. It's overkill, so pytest will skip them intentionally. It also has a `test_samples` folder, which shows an example Chainlink API call transaction receipt. | ||
|
||
|
||
### To test development / local | ||
```bash | ||
brownie test | ||
``` | ||
### To test mainnet-fork | ||
This will test the same way as local testing, but you will need a connection to a mainnet blockchain (like with the infura environment variable.) | ||
```bash | ||
brownie test --network mainnet-fork | ||
``` | ||
### To test a testnet | ||
Kovan and Rinkeby are currently supported | ||
```bash | ||
brownie test --network kovan | ||
``` | ||
|
||
## Adding additional Chains | ||
|
||
If the blockchain is EVM Compatible, adding new chains can be accomplished by something like: | ||
|
||
``` | ||
brownie networks add Ethereum binance-smart-chain host=https://bsc-dataseed1.binance.org chainid=56 | ||
``` | ||
or, for a fork: | ||
|
||
``` | ||
brownie networks add development binance-fork cmd=ganache-cli host=http://127.0.0.1 fork=https://bsc-dataseed1.binance.org accounts=10 mnemonic=brownie port=8545 | ||
``` | ||
|
||
## Resources | ||
|
||
To get started with Brownie: | ||
|
||
* [Chainlink Documentation](https://docs.chain.link/docs) | ||
* Check out the [Chainlink documentation](https://docs.chain.link/docs) to get started from any level of smart contract engineering. | ||
* Check out the other [Brownie mixes](https://github.com/brownie-mix/) that can be used as a starting point for your own contracts. They also provide example code to help you get started. | ||
* ["Getting Started with Brownie"](https://medium.com/@iamdefinitelyahuman/getting-started-with-brownie-part-1-9b2181f4cb99) is a good tutorial to help you familiarize yourself with Brownie. | ||
* For more in-depth information, read the [Brownie documentation](https://eth-brownie.readthedocs.io/en/stable/). | ||
|
||
|
||
Any questions? Join our [Discord](https://discord.gg/2YHSAey) | ||
|
||
## License | ||
|
||
This project is licensed under the [MIT license](LICENSE). |
Oops, something went wrong.