C++ SDK Development

Hello, we are planning to develop C++ SDK for Aeternity that will enable many embedded and perhaps some other integrations. Looking at full set of node API calls, what would be the most useful endpoitns to implement to begin with?

For example, everyone would use /accounts/{pubkey} to get account balance.


Ok, I’d like to elaborate a little more on the question.

Since the first C++ application that comes to mind is embedded, I think it would make sense to support “Hardware wallet” functionality plus a little more first and then expand.

Reading chain state

Read and decode the following data (transactions, statuses, etc.). The SDK should output data in a C++ struct to make it more human readable and understandable. For example, transactions will have to be RPL decoded, balances should be parsed as numbers, etc…

  1. Get node status (with /status endpoint)
  2. Get the most recent block (/blocks/top)
  3. Get account information (balance, etc.) (/accounts/{pubkey})
  4. Get basic transaction info by tx hash (/transactions/{hash})
  5. Get transaction details by tx hash (/transactions/{hash}/info)
  6. Get contract info by contract address (/contracts/{pubkey})
  7. Get contract code by contract address (/contracts/{pubkey}/code)
  8. Get oracle by address (/oracles/{pubkey})
  9. Get list of oracle queries (/oracles/{pubkey}/queries)
  10. Get an oracle query by ID (​/oracles​/{pubkey}​/queries​/{query-id})
  11. Get state channel by public key (​/channels​/{pubkey})

Posting transactions and operating with state channels on-chain

  1. Send transaction (/transactions). This will also involve building and signing transaction with a private key.
  2. Do everything with state channels (/debug/channels/create, deposit, withdraw, snapstop/solo, close/mutual, close/solo, slash, settle)

State Channels Off-Chain

This functionality is not essential for a hard wallet, but it might still be beneficial to build some POC functionality such as:

  1. Implement general message framing between two peers
  2. Build and send an off-chain update (transfer, deposit, withdrawal)
  3. Send message update

Does this description look comprehensive?

Is there any functionality that developers would especially look forward to? Maybe operating with state channels off-chain deserves the full implementation faster or working with oracles should get more attention?

Please give your feedback!