light api compatible with ARK blockchain and forks
Project description
dposlib
package aims to provide a simple API to ARK blockchain and forks.
Support this project
- Send Ѧ to
AUahWfkfr5J4tYakugRbfow7RWVTK35GPW
- Vote
arky
on Ark blockchain and earn Ѧ weekly
Quick View
Ubuntu dependencies installation
sudo apt-get install python python-dev python3 python3-dev
sudo apt-get install python-setuptools python3-setuptools
sudo apt-get install python-pip python3-pip
Available network
- Ark-core 2.6 (
API
+ transaction type0
,1
,2
,3
,4
,5
,6
,7
,8
,9
&10
)- mainet :
ark
- devnet :
dark
- mainet :
- Ark forks (
API
+ transaction type0
,1
,2
&3
)- Internet of People
- mainet :
iop
- devnet :
diop
- mainet :
- Ripa :
ripa
- Phantom :
phantom
- Qredit :
qredit
- Internet of People
Main features
An intuitive REST API
>>> from dposlib import rest
>>> rest.use("dark")
>>> # ~/api/delegates/darktoons endpoint
>>> rest.GET.api.delegates.darktoons()
{'data': {'username': 'darktoons', 'address': 'D7seWn8JLVwX4nHd9hh2Lf7gvZNiRJ7qLk', 'publicKey': '03a02b9d5fdd1307c2ee4652ba54d492d1fd11a7d1bb3f3a44c4a05e79f19de933', 'votes': 9385785081642, 'rank': 45, 'blocks': {'produced': 32015, 'last': {'id': '9d5085e503e09c656152b541bc243155f560347aa8b377d3f2f9a1cb71900d90', 'height': 2544602, 'timestamp': {'epoch': 69406864, 'unix': 1559508064, 'human': '2019-06-02T20:41:04.000Z'}}}, 'production': {'approval': 0.07}, 'forged': {'fees': 14640580130, 'rewards': 6403000000000, 'total': 6417640580130}}}
>>> # ~/api/node/fees endpoint
>>> rest.GET.api.node.fees()
{'meta': {'days': 7}, 'data': [{'type': '0', 'min': '200000', 'max': '10000000', 'avg': '1089596', 'sum': '14887144978', 'median': '460000'}, {'type': '1', 'min': '500000000', 'max': '500000000', 'avg': '500000000', 'sum': '313500000000', 'median': '500000000'}, {'type': '3', 'min': '10000000', 'max': '100000000', 'avg': '58541781', 'sum': '1756253430', 'median': '61114510'}]}
Fast way to interact with blockchain
>>> import dposlib
>>> rest.use("dark")
>>> # send 1 token to D7seWn8JLVwX4nHd9hh2Lf7gvZNiRJ7qLk with a simple message
>>> tx = dposlib.core.transfer(1, "D7seWn8JLVwX4nHd9hh2Lf7gvZNiRJ7qLk", "message")
>>> # sign tx with secret and [optional second secret]
>>> tx.finalize("first secret", "second secret")
>>> tx
{
"amount": 100000000,
"asset": {},
"fee": 1090241,
"id": "1e967879eb134712afd2b2a606be8460468b80aab857fa99a88cf8da0d72bd5d",
"recipientId": "D7seWn8JLVwX4nHd9hh2Lf7gvZNiRJ7qLk",
"senderId": "D7seWn8JLVwX4nHd9hh2Lf7gvZNiRJ7qLk",
"senderPublicKey": "03a02b9d5fdd1307c2ee4652ba54d492d1fd11a7d1bb3f3a44c4a05e79f19de933",
"signSignature": "3045022100a8dd9c50b18002bd6f8ffe9f1c0700cafb95de18670b48fa76afd85c3003a2d202200a1cc102c13857a38d8311a5c80a9222329f0c53f3305c70c91979efd5288d21",
"signature": "304402206576aee7893f3c038d58a6def5180881077531c4b1ebe87e835da2dbe40d0670022064ae37be3f160b0c969459e06912ee619997ccf303e6d919135cdf594a74b77d",
"timestamp": 69407340,
"type": 0,
"vendorField": "message"
}
>>> # broadcast transaction
>>> rest.POST.api.transactions(transactions=[tx])
{'data': {'accept': ['1e967879eb134712afd2b2a606be8460468b80aab857fa99a88cf8da0d72bd5d'], 'broadcast': ['1e967879eb134712afd2b2a606be8460468b80aab857fa99a88cf8da0d72bd5d'], 'excess': [], 'invalid': []}}
Network API
>>> import dposlib
>>> rest.use("ark")
>>> dlgt = dposlib.core.api.Delegate("arky") # get delegate by username
>>> dlgt.forged
{'fees': 3294.7, 'forged': 227230.7, 'rewards': 223936.0}
>>> dlgt.address
'ARfDVWZ7Zwkox3ZXtMQQY1HYSANMB88vWE'
>>> blk = dlgt.lastBlock # get last forged block
>>> blk
{
"blockSignature": "304402200a496a628c2741537538f0492f9d683d3c4f1b30c8dd03c33ad8fbe79d08b6eb02206cdec7e1210db53a3ca22da30912479ff3644d3a1ed1d878417d5965f34dfd6d",
"confirmations": 68,
"generatorId": "ARfDVWZ7Zwkox3ZXtMQQY1HYSANMB88vWE",
"generatorPublicKey": "030da05984d579395ce276c0dd6ca0a60140a3c3d964423a04e7abe110d60a15e9",
"height": 5862354,
"id": "1894085440657345411",
"numberOfTransactions": 0,
"payloadHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"payloadLength": 0,
"previousBlock": "11181074894913507025",
"reward": 2.0,
"timestamp": 47535768,
"totalAmount": 0.0,
"totalFee": 0.0,
"totalForged": 2.0,
"version": 0
}
>>> blk.transactions()
[]
>>> wlt = dposlib.core.api.Wallet(dlgt.address) # get wallet by address
>>> wlt.balance
2537.42979112
>>> for elem in [(tx["recipientId"], tx["amount"]) for tx in wlt.lastTransactions(2)]:
... print(elem)
...
('AHMXV6UdkVxsTwMqeoeqdpotRRmGZZaAtj', 0.08403461)
('AUahWfkfr5J4tYakugRbfow7RWVTK35GPW', 329.32420472)
>>> wlt.link("secret passphrase here")
>>> wlt.send(1, "ARfDVWZ7Zwkox3ZXtMQQY1HYSANMB88vWE")
{'transactionIds': ['bbce72e7a76f5f71209c8ab29b4b4299a409241dfc77835150459a34bd5a5c16'], 'success': True}
Version
0.1.0
- First rebrand
0.1.1
- ARK packaging improvement (
v1
andv2
) - LISK packaging improvement (
v09
andv10
) - ARK dynamicFee implementation
- Network API created
0.1.2
- Packaging improvement
0.1.3
- REST requests header bugfix (ubuntu)
0.1.4
- Python 2.x compatibility fix
- dposlib.core.Transaction.sign does not set fees anymore
- dposlib.core.Transaction.finalize set fees before signature
- dposlib.core.Transaction fee management improved
0.1.5
- compatibility with both ark-core v2 devnet and mainnet
0.1.6
- Ark-core v 2.1.x compatibility
0.1.7
- added
transaction
andrest
MarkDown documentation files - dposlib.core.api is both python 2.x and 3.x compliant
- added Webhook api (experimental)
- fee data initialisation improvement
- transaction broadcasting improvement
- peer selection improvement
- Lisk blockchain and forks developpement frozen
0.1.8
- added ark v2.4 compatibility
- api wallet link using getpass library
- added ledger nano S support (transaction type 0, 1, 2 & 3)
- peer selection now checks syncing status
0.1.9
- travis-ci integration
- dposlib.core.Transaction interface improvement
- Ark v1 and v2 cross-dependency removed
- offline work feature added
0.2.0
- ark.v2 api improvement
- dposlib.util.misc module improvement
- upVote/downVote bugfix
0.2.1
- added
lisk
blockchain - added
shift
,t.shift
andqredit
network - added .cold data in package distribution
- transaction types
0
,1
and3
added to lisk.v09 network - python 2.x compliancy for util.data package
0.2.2
- Ark v2.5 headers fix
- Ark v2.5 BigInt fix
- packaging improvement
- rest
returnKey
behaviour improvement
0.3.0
-
flake8
compliancy - Ark 2.6 compatibility
- removed package resources dependencies
-
ecdsa
lib replaced by builtinsecp256k1
- added Iop mainnet and devnet
- Lisk and forks dev stopped
-
ldgr
import now optional - sphinx doc added
0.3.1
- multisignature client-server api
0.3.2
- better
vendorFieldHex
field handling -
dposlib.blockchain.Transaction
behaviour improvement - tx versioning defined in
net
module - bridge for ark-core 2.5 and 2.6
0.3.3
- offline start fixed
-
api.Wallet
fixed - added pythonic
datetime
attribute toTransaction
class
0.3.4 current work
- removed
requests
dependency - multisignature api and app run as system services
TODO
- CLI
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dposlib-0.3.4.tar.gz
(59.6 kB
view details)
File details
Details for the file dposlib-0.3.4.tar.gz
.
File metadata
- Download URL: dposlib-0.3.4.tar.gz
- Upload date:
- Size: 59.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e5d5cfda26e6880a00e2f348084d138a511cb39b332bb895affb7a66de2110b3 |
|
MD5 | 35e5dc63769dd1c9e3ca781cacd789ba |
|
BLAKE2b-256 | 623a1b97b3ab7c964b54f5b79f273b496fde964929341ebaec456f010731a7ea |