Skip to main content

Python API bridging DPOS blockchains

Project description

.. image::

Copyright 2016-2018 **Toons**, Copyright 2018 **ARK**, `MIT licence`_


Ubuntu / OSX

>From development version

``sudo -H pip install``

If you work with ``python3``

``sudo -H pip3 install``


>From development version

``pip install``


``rest`` module allows developpers to send requests to the blockchain.

>>> import

It loads the ```` file and create associated REST API endpoints.
All endpoints can be reached using this syntax :

``[METHOD].[endpoints with "/" replaced by "."](param=value, ...[returnKey=name])``

>>> # http equivalent [PEER ADDRESS]/api/delegates/get?username=arky
{'delegate': {'productivity': 99.22, 'producedblocks': 42283, 'approval': 1.06,
'rate': 19, 'publicKey': '030da05984d579395ce276c0dd6ca0a60140a3c3d964423a04e7ab
e110d60a15e9', 'username': 'arky', 'vote': '137484978342696', 'address': 'ARfDVW
Z7Zwkox3ZXtMQQY1HYSANMB88vWE', 'missedblocks': 334}, 'success': True}

It returns a python dictionary transposed from server json response. You can
provide a ``returnKey`` option value to get the field you want from server response :

>>>"toons", returnKey="delegate")
{'rate': 20, 'producedblocks': 1354, 'approval': 14.36, 'username': 'toons', 'ra
nk': 20, 'publicKey': 'c0f4e7fb7555fd19de2b6a9de92f02b44cef56c782ca0f6983607b7f4
e508ef9', 'productivity': 99.63, 'missedblocks': 5, 'vote': '1476176009882003',
'address': '15981732227677853647X'}

Blockchain ``core``

```` loads a blockchain package find in ``*.net`` file as ``arky.core``.
Blockchain package define the current interface :

* ``arky.core.crypto.getKeys(secret)``
* ``arky.core.crypto.getAddress(publicKey)``
* ``arky.core.crypto.getSignature(tx, privateKey)``
* ``arky.core.crypto.getId(tx)``
* ``arky.core.crypto.getBytes(tx)``
* ``arky.core.crypto.bakeTransaction(**kw)``
* ``arky.core.sendTransaction(**kw)``
* ``arky.core.sendPayload(*payloads)``
* ``arky.core.sendToken(amount, recipientId, secret, secondSecret=None, vendorField=None)``
* ``arky.core.registerSecondPublicKey(secondPublicKey, secret, secondSecret=None)``
* ``arky.core.registerSecondPassphrase(secondPassphrase, secret, secondSecret=None)``
* ``arky.core.registerDelegate(username, secret, secondSecret=None)``
* ``arky.core.upVoteDelegate(usernames, secret, secondSecret=None)``
* ``arky.core.downVoteDelegate(usernames, secret, secondSecret=None)``

``arky.core`` create transaction localy using ``pynacl`` and ``ecdsa`` crypto libraries
so no secret is sent trough the network.

Send coins

Amount are given in SATOSHI.

>>> arky.core.sendToken(amount=100000000, recipientId="15981732227677853647X",
... secret="secret", secondSecret="secondSecret")
{'id': '13372419325129159475', 'success': True}

>>> arky.core.sendToken(amount=100000000, recipientId="15981732227677853647X",
... secret="secret", secondSecret="secondSecret",
... vendorField="Your smart bridge message here")
{'success': True, 'transactionIds': ['24584ec149106e6206445106af8176cc885edf12ae
0c4534d2e4a3b4214d4a3f'], 'broadcast': '90.0%'}

Vote for delegate

>>> arky.core.upVoteDelegate(["toons", "unused"],
... secret="secret", secondSecret="secondSecret")
{'id': '10107701353010554951', 'success': True}

>>> arky.core.downVoteDelegate(["d_arky"],
... secret="secret", secondSecret="secondSecret")
{'broadcast': '100.0%', 'transactionIds': ['ecd663ea46472cd7d72431eb13e9b23ef9c2
6aae8a1004621b871677960d01f1'], 'success': True}


You can use ``arky`` package without writing a line of code trough command
line interface. There are two ways to launch the CLI.

>>> from arky import cli
>>> cli.start()


Welcome to arky-cli [Python x.y.z / arky 1.x]
Available commands: network, account, delegate, ledger

Use network


cold@.../> network use
Network(s) found:
1 - ark-aip11
2 - ark
3 - dark
4 - kapu
5 - lisk
6 - oxy
7 - shift
8 - toxy
9 - tshift
Choose an item: [1-9]> 8

Link account


hot@toxy/network> account link secret
hot@toxy/account[18160...4874X]> send 1.23 12427608128403844156X
Send 1.23000000 oxycoin to 12427608128403844156X ? [y-n]> y
Enter second passphrase> secondSecret
Broadcasting transaction...
id: 776848717338323058
success: True


hot@toxy/account[18160...4874X]> status
secondSignature: 1
multisignatures: []
secondPublicKey: 8b509500d5950122b3e446189b4312805515c8e7814a409e09ac5c21935564af
u_multisignatures: []
unconfirmedBalance: 2637000000
publicKey: 5d036a858ce89f844491762eb89e2bfbd50a4a0a0da658e4b2628b25b117ae09
unconfirmedSignature: 1
address: 18160565574430594874X
balance: 2637000000

Use Ledger Nano S


hot@ark/network> ledger link
hot@ark/ledger[AerGA...VbMft]> send 1 AUahWfkfr5J4tYakugRbfow7RWVTK35GPW "send 1 ARK from ledger using arky CLI"
Use ledger key to confirm or or cancel :
Send 1.00000000 ARK to AUahWfkfr5J4tYakugRbfow7RWVTK35GPW ?
Broadcasting transaction...
broadcast: 100.0%
transactionIds: ['34d4ce9dea2dd4f52e8d6af1977d5f00488694ecbdaf7c45f70a7c46c078c744']
success: True


Toons <>

Support this project

.. image::
:height: 30

Toons Ark address: ``AUahWfkfr5J4tYakugRbfow7RWVTK35GPW``

.. image::
:width: 100

Toons Bitcoin address: ``1qjHtN5SuzvcA8RZSxNPuf79iyLaVjxfc``

**Show gratitude on Gratipay:**

.. image::

**Vote for Toons' delegate arky**

.. _MIT licence:

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for Arky, version 1.3.1
Filename, size File type Python version Upload date Hashes
Filename, size Arky-1.3.1-py2.7.egg (83.9 kB) File type Egg Python version 2.7 Upload date Hashes View hashes
Filename, size Arky-1.3.1-py2.py3-none-any.whl (43.6 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes
Filename, size Arky-1.3.1-py3.5.egg (85.4 kB) File type Egg Python version 3.5 Upload date Hashes View hashes
Filename, size Arky-1.3.1.tar.gz (28.9 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page