NEO Smart Contract Programming - Setting up Neo-Python Dev Environment


#1

Neo platform is an exciting place to create smart contracts and Dapps. I am creating this section to log my efforts to setup and get going with Neo Smart Contract development. I am opting to use the neo-python project by COZ to get started as i found other methods to be more tedious and under documented in certain areas.

Initial steps :

  1. I created a virtual machine with ubuntu v18 with vmware tool. (Just to keep my development environment isolated from my global environment.One could opt to run on global environment)

  2. I am following the instructions from this link ( https://github.com/CityOfZion/neo-python/blob/master/README.rst ).

     Logging the efforts:
     1.Installing python v3.6 and levelDB using the below command
         sudo apt-get install python3.6 python3.6-dev python3-pip python3-venv libleveldb-dev libssl-dev g++
     2.creating a Directory with mkdir mydirectory and entering the directory with cd directory
     3.creating python 3.6 virtual machine.
        python3.6 -m venv venv 
     4.opening the virtual machine to access the command prompt.
       $ source venv/bin/activate
     5.Installing neo python with PyPi using pip
       (venv) $ pip install neo-python
     6.After installation we'll have to bootstrap the testnet to test our build.
       (venv) $ np-bootstrap 
       its going to take a while to dowload complete testnet so grab a coffee or reach me in discord/telegram 
       for a chat 
       
       **@sozhan** is my handle 
    

#Successful installation
Displaying All packages FYI
(venv) sozhan@ubuntu:~/myneo$ pip install neo-python
Requirement already satisfied: neo-python in ./venv/lib/python3.6/site-packages
Requirement already satisfied: bitcoin==1.1.42 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: asn1crypto==0.24.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: prompt-toolkit==1.0.15 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: greenlet==0.4.13 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: psutil==5.4.3 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: scrypt==0.8.6 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: gevent==1.2.2 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: requests==2.18.4 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: mpmath==1.0.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: curtsies==0.3.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: mock==2.0.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: chardet==3.0.4 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: docopt==0.6.2 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: idna==2.6 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: zope.interface==4.4.3 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: mmh3==2.5.1 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: incremental==17.5.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: pycparser==2.18 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: ecdsa==0.13 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: pycodestyle==2.3.1 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: Events==0.3 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: hyperlink==18.0.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: Pygments==2.2.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: cryptography==2.2.2 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: memory-profiler==0.52.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: neo-boa==0.4.4 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: pyparsing==2.2.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: Automat==0.6.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: bumpversion==0.5.3 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: python-dateutil==2.7.2 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: tqdm==4.20.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: constantly==15.1.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: pymitter==0.2.3 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: typing==3.6.4 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: Werkzeug==0.14.1 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: blessings==1.6.1 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: virtualenv==15.2.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: peewee==2.10.2 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: wcwidth==0.1.7 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: cycler==0.10.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: bpython==0.17.1 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: neo-python-rpc==0.2.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: neocore==0.4.8 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: pytz==2018.3 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: urllib3==1.22 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: klein==17.10.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: pbr==4.0.1 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: plyvel==1.0.4 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: Twisted==17.9.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: autopep8==1.3.5 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: certifi==2018.1.18 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: base58==0.2.5 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: coveralls==1.3.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: coz-bytecode==0.5.1 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: logzero==1.5.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: numpy==1.14.2 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: pluggy==0.6.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: attrs==17.4.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: cffi==1.11.5 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: astor==0.6.2 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: coverage==4.5.1 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: six==1.11.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: aenum==2.1.0 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: colorlog==3.1.2 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: py==1.5.3 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: Pympler==0.5 in ./venv/lib/python3.6/site-packages (from neo-python)
Requirement already satisfied: setuptools in ./venv/lib/python3.6/site-packages (from zope.interface==4.4.3->neo-python)
Requirement already satisfied: pycryptodome>=3.5.1 in ./venv/lib/python3.6/site-packages (from neocore==0.4.8->neo-python)

Will be moving on to Smart Contract Development and Deployment in further posts.


#2

Good to know for me EOS and NEO both projects are the best at the moment am more into EOS now
trying to understand it but after that i will move to NEO so will be glad if you share your experience here.