funded

Python module

$10,000.00 Received
$10,000.00 Requested
Ideascale logo View on ideascale
Solution

Create a Python module that implements base classes for Wallet, Address, Key, Transaction, etc. and offers well-structured exception tree.

Problem:

Right now there is a plain REST API available for communicating with the wallet but no higher-level abstraction classes for Python.

Yes Votes:
₳ 1,070,000,000
No Votes:
₳ 15,388,494

This proposal was approved and funded by the Cardano Community via Project F3: Developer Ecosystem Catalyst funding round.

The Python Module will provide base classes for Wallet, Address, Transaction and perhaps some other base types. The amounts will be processed by Decimal type designed for monetary operations. Operations like wallet retrieval, creation, sending transfers, staking, etc. will be provided as methods, sparing the developers from touching the underlying API.

 

Also, basic sanity checks will be implemented and a proper excepton tree will be created to handle errors in elegant OO way. The REST API will be the backend but the module will also provide forward compatibility to introduce other backends should some appear later on.

 

The module will also include full documentation and unit test coverage.

 

A glance over a similar module I've written for Monero may explain what level of easiness the final code will provide: https://monero-python.readthedocs.io/en/latest/wallet.html

 

ROADMAP:

Each milestone consists of:

  • implementation of given features,
  • implementation of exceptions reflecting possible errors,
  • unit test coverage for the code,
  • updated API docs,
  • bugfixes for already existing code.

 

Milestones:

 

  1. ETA 2021-03-07: Classes representing Shelley Wallet, Address and Transaction are implemented. It is possible to list wallets, create a wallet from mnemonic or key, retrieve balance, existing addresses and list of incoming and outgoing transactions.
  2. ETA 2021-03-14: It is possible to list assets (other than ADA).
  3. ETA 2021-03-28: It is possible to create additional addresses and send transfers (also with metadata).
  4. ETA 2021-04-04: It is possible to stake ADA and cancel staking.
  5. ETA 2021-04-11: Minor features like UTXO stats, coin selection and fee estimation are implemented. The project concludes. Further development and bugfixing will be provided by the author in spare time as a hobby project (like it's being constantly done with Monero module mentioned above).

 

Development process:

Due to personal and professional obligations I'll be able to work on the project only part-time (approx. 4h/day) and on weekends (approx. 6h/day). The total is 224h at rate of $44/h. It may seem as a lot of time but please remember it includes the coding itself, writing unit tests and documentation.

Comments

Monthly Reports

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    d. 3 se. 24
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    d. 4 se. 3
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    d. 3 se. 48
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    d. 2 se. 16
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    d. 3 se. 14
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    d. 3 se. 19
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    d. 4 se. 59
    Darlington Kofa
0:00
/
~0:00