Python API bridging DPOS blockchains
Project description
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>
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 hot@toxy/account[18160...4874X]>
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]>
Support this project
Toons Ark address: AUahWfkfr5J4tYakugRbfow7RWVTK35GPW
Toons Bitcoin address: 3Jgib9SQiDLYML7QKBYtJUkHq2nyG6Z63D
Show gratitude on Gratipay:
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
Built Distributions
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc41a3d7d205910011b7913ba809ebc028c512fb2cdf45c60da4c86798f31ddb |
|
MD5 | 8351be9ab978051132728028aa9c3bcb |
|
BLAKE2b-256 | dfe36bf274edc5da800d604a9da7dc171900ad1d4a18d6a9bcf8817521ceb3f5 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a6dd48ac0a1fd295184193b01b30a0510ed9d6749c151ed7e6edbc323e1ff79 |
|
MD5 | a5b0c99e559665377a38e85e19bef16a |
|
BLAKE2b-256 | cbe9ea6fd60db600652dcf84a0e896a9364d08b343c306c8b5ec0e88f20f30bb |
Provenance
File details
Details for the file Arky-1.1-py2.py3-none-any.whl
.
File metadata
- Download URL: Arky-1.1-py2.py3-none-any.whl
- Upload date:
- Size: 40.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27a252c2c843401f8281852bb348c66968baf7c03f0aecf5f4a78eceebc416bd |
|
MD5 | 9974ad0acf75c502339962985f5f46aa |
|
BLAKE2b-256 | 544c2249552949fa3c79dd6eb72060b10cde484b40a464265f6d0db39daab03d |