Skip to main content

dposlib package aims to provide a simple API to any blockchain.

Build Status PyPI pyversions PyPI version shields.io GitHub release Downloads

Support this project

Liberapay receiving

Buy Ѧ and:

Quick View

Documentation

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 networks

Network Ark Solar Compendia
mainnet ark sxp nos
testnet - tsxp -
devnet dark - dnos

Main features

An intuitive REST API

>>> from dposlib import rest
>>> rest.use("dark")
True
>>> # ~/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'}]}
>>> rest.use("ark")
True
>>> delegate0 = rest.GET.api.delegates(returnKey="data")[0]
>>> delegate0["username"]
u'binance_staking'

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 = dlgt.wallet
>>> wlt.balance
2537.42979112
>>> wlt.link("secret passphrase here")
>>> wlt.send(1, "ARfDVWZ7Zwkox3ZXtMQQY1HYSANMB88vWE")
{'transactionIds': ['bbce72e7a76f5f71209c8ab29b4b4299a409241dfc77835150459a34bd5a5c16'], 'success': True}

Version

1.1.0 current work

1.0.0

  • removed python 2.x compliancy
  • removed pytz dependency
  • added solar testnet and mainnet
  • pySecp256k1 replaced by cSecp256k1
  • bip340 schnorr signature implemented
  • solar transaction v3 implemented
  • ark package simplification
  • ark.api.Webhook improvement
  • multiVote moved to switchVote

0.3.5

  • Ark-core v 3.0.x compliancy
  • fee management improvement
  • ledger.com Ark app support
  • multiVote implementation
  • magistrate implementation
  • Compendia network added
  • Unikname network added
  • packaging improvement
  • switched from sphinx to pydoc-markdown doc builder
Older releases…

0.3.4

  • removed requests dependency
  • multisignature api and app run as system services

0.3.3

  • offline start fixed
  • api.Wallet fixed
  • added pythonic datetime attribute to Transaction class

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.1

  • multisignature client-server api

0.3.0

  • flake8 compliancy
  • Ark 2.6 compatibility
  • removed package resources dependencies
  • ecdsa lib replaced by builtin secp256k1
  • added Iop mainnet and devnet
  • Lisk and forks dev stopped
  • ldgr import now optional
  • sphinx doc added

0.2.2

  • Ark v2.5 headers fix
  • Ark v2.5 BigInt fix
  • packaging improvement
  • rest returnKey behaviour improvement

0.2.1

  • added lisk blockchain
  • added shift, t.shift and qredit network
  • added .cold data in package distribution
  • transaction types 0, 1 and 3 added to lisk.v09 network
  • python 2.x compliancy for util.data package

0.2.0

  • ark.v2 api improvement
  • dposlib.util.misc module improvement
  • upVote/downVote bugfix

0.1.9

  • travis-ci integration
  • dposlib.core.Transaction interface improvement
  • Ark v1 and v2 cross-dependency removed
  • offline work feature added

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.7

  • added transaction and rest 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.6

  • Ark-core v 2.1.x compatibility

0.1.5

  • compatibility with both ark-core v2 devnet and mainnet

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.3

  • REST requests header bugfix (ubuntu)

0.1.2

  • Packaging improvement

0.1.1

  • ARK packaging improvement (v1 and v2)
  • LISK packaging improvement (v09 and v10)
  • ARK dynamicFee implementation
  • Network API created

0.1.0

  • First rebrand

Metadata

Release files for dposlib 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dposlib 1.0.0
File Size Uploaded Provenance Actions
dposlib-1.0.0.tar.gz 66.9 kB Without provenance Details for dposlib-1.0.0.tar.gz

Release files / dposlib-1.0.0.tar.gz

Download URL dposlib-1.0.0.tar.gz
Size 66.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6abe26ab0c72a5090551c60ec0d8a5dd0c5ecc473281f3cab6c8c887282e8231
BLAKE2b-256 checksum
How to use checksums
c4351f9c299efbcab5ee1bd550ce7bb69f5ee6fe830b5ad2f32805a3f396e236
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.4

Security for dposlib 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page