Skip to main content

Python API bridging DPOS blockchains

Project description

https://github.com/Moustikitos/arky/raw/master/arky-logo.png

Copyright 2016-2017 Toons, Copyright 2017 ARK, MIT licence

Install

Ubuntu / OSX

>From development version

sudo -H pip install https://github.com/ArkEcosystem/arky/archive/aip11.zip

If you work with python3

sudo -H pip3 install https://github.com/ArkEcosystem/arky/archive/aip11.zip

Windows

>From development version

pip install https://github.com/ArkEcosystem/arky/archive/aip11.zip

REST API

rest module allows developpers to send requests to the blockchain.

>>> import arky.rest
>>> arky.rest.use("ark")

It loads the ark.net file and create associated REST API endpoinds. All endpoinds can be reached using this syntax :

arky.rest.[METHOD].[endpoinds with "/" replaced by "."](param=value, ...[returnKey=name])

>>> # http equivalent [PEER ADDRESS]/api/delegates/get?username=arky
>>> arky.rest.GET.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 :

>>> arky.rest.use("oxy")
>>> arky.rest.GET.api.delegates.get(username="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

arky.rest.use 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.rest.use("toxy")
>>> arky.core.sendToken(amount=100000000, recipientId="15981732227677853647X",
...                     secret="secret", secondSecret="secondSecret")
{'id': '13372419325129159475', 'success': True}
>>> arky.rest.use("dark")
>>> 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.rest.use("toxy")
>>> arky.core.upVoteDelegate(["toons", "unused"],
...                          secret="secret", secondSecret="secondSecret")
{'id': '10107701353010554951', 'success': True}
>>> arky.rest.use("dark")
>>> arky.core.downVoteDelegate(["d_arky"],
...                            secret="secret", secondSecret="secondSecret")
{'broadcast': '100.0%', 'transactionIds': ['ecd663ea46472cd7d72431eb13e9b23ef9c2
6aae8a1004621b871677960d01f1'], 'success': True}

CLI

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 3.5.1 / arky 1.0a0]
Available commands: network, account, delegate
cold@.../>

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
hot@toxy/network>

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
hot@ark/ledger[AerGA...VbMft]>

Author

Toons <moustikitos@gmail.com>

Support this project

https://github.com/ArkEcosystem/arky/raw/master/ark-logo.png

Toons Ark address: AUahWfkfr5J4tYakugRbfow7RWVTK35GPW

http://bruno.thoorens.free.fr/img/bitcoin.png

Toons Bitcoin address: 3Jgib9SQiDLYML7QKBYtJUkHq2nyG6Z63D

Show gratitude on Gratipay:

http://img.shields.io/gratipay/user/b_py.svg?style=flat-square

Vote for Toons’ delegate arky

Project details


Download files

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

Source Distribution

Arky-1.1.tar.gz (25.6 kB view details)

Uploaded Source

Built Distributions

Arky-1.1-py3.5.egg (78.5 kB view details)

Uploaded Source

Arky-1.1-py2.py3-none-any.whl (40.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file Arky-1.1.tar.gz.

File metadata

  • Download URL: Arky-1.1.tar.gz
  • Upload date:
  • Size: 25.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Arky-1.1.tar.gz
Algorithm Hash digest
SHA256 fc41a3d7d205910011b7913ba809ebc028c512fb2cdf45c60da4c86798f31ddb
MD5 8351be9ab978051132728028aa9c3bcb
BLAKE2b-256 dfe36bf274edc5da800d604a9da7dc171900ad1d4a18d6a9bcf8817521ceb3f5

See more details on using hashes here.

Provenance

File details

Details for the file Arky-1.1-py3.5.egg.

File metadata

  • Download URL: Arky-1.1-py3.5.egg
  • Upload date:
  • Size: 78.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Arky-1.1-py3.5.egg
Algorithm Hash digest
SHA256 5a6dd48ac0a1fd295184193b01b30a0510ed9d6749c151ed7e6edbc323e1ff79
MD5 a5b0c99e559665377a38e85e19bef16a
BLAKE2b-256 cbe9ea6fd60db600652dcf84a0e896a9364d08b343c306c8b5ec0e88f20f30bb

See more details on using hashes here.

Provenance

File details

Details for the file Arky-1.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for Arky-1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 27a252c2c843401f8281852bb348c66968baf7c03f0aecf5f4a78eceebc416bd
MD5 9974ad0acf75c502339962985f5f46aa
BLAKE2b-256 544c2249552949fa3c79dd6eb72060b10cde484b40a464265f6d0db39daab03d

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page