Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ES Plugin: Get operation by ID #1682

Closed
1 of 17 tasks
nathanielhourt opened this issue Mar 27, 2019 · 3 comments
Closed
1 of 17 tasks

ES Plugin: Get operation by ID #1682

nathanielhourt opened this issue Mar 27, 2019 · 3 comments
Assignees
Labels
1b User Story The User Story details a requirement. It may reference a parent Epic. It may reference child Task(s) 2c Ready for Development Status indicating the Requirements are sufficent to begin designing a solution 3b Feature Classification indicating the addition of novel functionality to the design 4b Normal Priority Priority indicating the moderate impact to system/user -OR- existing workaround is costly to perform 6 API Impact flag identifying the application programing interface (API) 6 Plugin Impact flag identifying at least one plugin

Comments

@nathanielhourt
Copy link
Contributor

User Story
As a 3rd party app developer I want the ability to fetch operations from history so that my apps can store and retrieve data on-chain.

In short, I'd like to see a call like operation get_operation_by_id(operation_history_id_type) show up right about here. See Additional Context below for context.

Impacts
Describe which portion(s) of BitShares Core may be impacted by your request. Please tick at least one box.

  • API (the application programming interface)
  • Build (the build process or something prior to compiled code)
  • CLI (the command line wallet)
  • Deployment (the deployment process after building such as Docker, Travis, etc.)
  • DEX (the Decentralized EXchange, market engine, etc.)
  • P2P (the peer-to-peer network for transaction/block propagation)
  • Performance (system or user efficiency, etc.)
  • Protocol (the blockchain logic, consensus, validation, etc.)
  • Security (the security of system or user data, etc.)
  • UX (the User Experience)
  • Other (please add below)

Additional Context
So back in the day, I wrote Follow My Vote's stake-weighted voting app based on BitShares, and that app published the voting data to the blockchain using custom_operations. All of the data was keyed and referenced based on the operation_history_id_type to tie it down to an authenticated publication to the chain, and we had a plugin that tracked all this data, querying the database maintained by the account_history_plugin to do it.

Fast forward to today, this no longer works because the account_history_plugin is all but deprecated (600 gigs of RAM, anyone?) in favor of the elasticsearch_plugin. Currently, this plugin does not provide an easy way to retrieve historical operations by ID, but it should be relatively straightforward to add it. With this functionality available, it would be reasonably easy to get the FMV app working again.

CORE TEAM TASK LIST

  • Evaluate / Prioritize Feature Request
  • Refine User Stories / Requirements
  • Define Test Cases
  • Design / Develop Solution
  • Perform QA/Testing
  • Update Documentation
@pmconrad
Copy link
Contributor

Perhaps generalize this ticket to other history APIs as well? If ES plugin is active, history API calls could be answered by calling ES, and it could even happen in parallel to the main thread.

@oxarbitrage
Copy link
Member

Interesting @pmconrad and thanks for submitting @nathanhourt .

I was busy with some other stuff last week but i am taking this now, will update as soon as i have something you can see.

@oxarbitrage oxarbitrage self-assigned this Mar 30, 2019
@oxarbitrage oxarbitrage added 1b User Story The User Story details a requirement. It may reference a parent Epic. It may reference child Task(s) 2c Ready for Development Status indicating the Requirements are sufficent to begin designing a solution 3b Feature Classification indicating the addition of novel functionality to the design 4b Normal Priority Priority indicating the moderate impact to system/user -OR- existing workaround is costly to perform 6 API Impact flag identifying the application programing interface (API) 6 Plugin Impact flag identifying at least one plugin labels Mar 30, 2019
@oxarbitrage oxarbitrage added this to the 3.1.0 - Feature Release milestone Mar 30, 2019
oxarbitrage added a commit that referenced this issue Aug 14, 2019
@oxarbitrage
Copy link
Member

Done at #1725
Will be great if we can test it in FMV @nathanhourt . I will setup a public testnet node with this for bitshares as well.
Code looks good but we didn't tested it in production. Thanks @pmconrad for the review.

Closing this one, if we have any issue we will deal with a dedicated issue and patch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1b User Story The User Story details a requirement. It may reference a parent Epic. It may reference child Task(s) 2c Ready for Development Status indicating the Requirements are sufficent to begin designing a solution 3b Feature Classification indicating the addition of novel functionality to the design 4b Normal Priority Priority indicating the moderate impact to system/user -OR- existing workaround is costly to perform 6 API Impact flag identifying the application programing interface (API) 6 Plugin Impact flag identifying at least one plugin
Projects
None yet
Development

No branches or pull requests

3 participants