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

Add support for internal transactions #53

Closed
medvedev1088 opened this Issue Jul 16, 2018 · 21 comments

Comments

Projects
None yet
4 participants
@medvedev1088
Copy link
Member

medvedev1088 commented Jul 16, 2018

Parity provides APIs for retrieving internal transactions. trace_filter API allows retrieving traces for a range of blocks. This method is already supported by web3.py parity module.

The scope of this task is to

  1. Design the model (the field names from this PR can be used as a basis: #72).
  2. Implement the export job (the job implementation will mostly resemble the flow in ExportTokenTransfersJob.
  3. Write unit tests (an example can be found here)
  4. Add documentation to README (an example can be found here)
    (5. Add instructions for how to start parity/geth i.e. what options to use).

=======================

Remarks:

@medvedev1088 medvedev1088 changed the title Add support for message calls (internal transactions) Add support for internal transactions Aug 13, 2018

@gitcoinbot

This comment has been minimized.

Copy link

gitcoinbot commented Oct 1, 2018

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 400.0 DAI (400.0 USD @ $1.0/DAI) attached to it as part of the Ethereum Community Fund via ECF Web 3.0 Infrastructure Fund .

@mkosowsk

This comment has been minimized.

Copy link

mkosowsk commented Oct 1, 2018

@medvedev1088 this looks like a very interesting issue and we're happy to fund it via the ECF Web 3.0 Infrastructure Fund 👍 Hopefully we'll have some solid bounty hunters here soon to take a look

If you find any other issues that look compelling either on this repo or others, feel free to fill out more https://gitcoin.co/requests

Thanks!

@gitcoinbot

This comment has been minimized.

Copy link

gitcoinbot commented Oct 1, 2018

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 6 months, 3 weeks from now.
Please review their action plans below:

1) evgeniuz has been approved to start work.

Would like to work on this issue, I'm interested in learning how to load and analyze block data and this seems like a good opportunity to start in this area. Will implement the job and tests for it.

Learn more on the Gitcoin Issue Details page.

2) sea212 has applied to start work (Funders only: approve worker | reject worker).

My understanding of the task: Define a proper class for an internal transaction, implement the export functionality to export internal transaction of smart contract method call (given a txid), write proper unit tests and document the usage of this feature. I think this job is no problem, since it only relies on a clever design in the beginning, api calls and parsing and no further deep knowledge. If further deep understanding of the inner structure of ethereum or evm assembly is required in any way, I can offer that as well.

Learn more on the Gitcoin Issue Details page.

3) kirikiri has applied to start work (Funders only: approve worker | reject worker).

As new web3py supports parity trace calls, I will resemble export_token_transfers_job.py with parity.trace_filter instead of eth.filter .
I will design and then develop traces_mapper that parses parity traces and maps it to our internal structure.
I'm familiar with parity and python and have all infrastructure for development, so it's easy to implement this task.

Learn more on the Gitcoin Issue Details page.

@mkosowsk

This comment has been minimized.

Copy link

mkosowsk commented Oct 3, 2018

@medvedev1088 looks like we've got some interest here from some workers!

I'd be happy to chat offline at mitchkosowski [at] gmail or @Mitch_Kosowski on Telegram/Twitter to talk about next steps in approving workers. Feel free to hit me up at your earliest convenience 👍

Thanks!

@mkosowsk

This comment has been minimized.

Copy link

mkosowsk commented Oct 3, 2018

Thanks to all those that applied but we have approved @evgeniuz to start work on this bounty. @evgeniuz please start work at your earliest convenience 👍

@medvedev1088

This comment has been minimized.

Copy link
Member Author

medvedev1088 commented Oct 3, 2018

Thanks @mkosowsk!

@evgeniuz let me know if you have any questions about the task.

@evgeniuz

This comment has been minimized.

Copy link
Contributor

evgeniuz commented Oct 3, 2018

Thanks, already started working on the issue. Will start by implementing minimum viable version first and then go from there.

@mkosowsk

This comment has been minimized.

Copy link

mkosowsk commented Oct 10, 2018

Hi @evgeniuz how is the issue coming along? Thanks!

@evgeniuz

This comment has been minimized.

Copy link
Contributor

evgeniuz commented Oct 10, 2018

@mkosowsk, hi, please, see pull request, it’s implemented, waiting for review and comments.

@medvedev1088

This comment has been minimized.

Copy link
Member Author

medvedev1088 commented Oct 10, 2018

@evgeniuz great job! Could you create the PR to develop branch instead of master?

@medvedev1088

This comment has been minimized.

Copy link
Member Author

medvedev1088 commented Oct 11, 2018

@mkosowsk the task has been completed by @evgeniuz #104. Please release the bounty for him.

@medvedev1088

This comment has been minimized.

Copy link
Member Author

medvedev1088 commented Oct 11, 2018

@evgeniuz are you up for taking another task for exporting traces from geth ethereum/go-ethereum#15516? It will be different as this API only works via websockets (alternatively traceBlockByNumber can be used, works with IPC and HTTP). And also I would like to split up the job into 2 parts: the one that exports raw JSON from JSON RPC API and another that parses JSON and produces CSVs.

@evgeniuz

This comment has been minimized.

Copy link
Contributor

evgeniuz commented Oct 11, 2018

@medvedev1088 I would like to, but will be busy next week. If no one else starts working on it after that, I'm up.

@gitcoinbot

This comment has been minimized.

Copy link

gitcoinbot commented Oct 11, 2018

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work for 400.0 DAI (400.0 USD @ $1.0/DAI) has been submitted by:

  1. @evgeniuz

@mkosowsk please take a look at the submitted work:


@medvedev1088

This comment has been minimized.

Copy link
Member Author

medvedev1088 commented Oct 11, 2018

@evgeniuz ok ping me when you are free, I have more tasks.

BTW, what options did you use when starting parity?

@evgeniuz

This comment has been minimized.

Copy link
Contributor

evgeniuz commented Oct 11, 2018

@medvedev1088 parity —tracing on

@mkosowsk

This comment has been minimized.

Copy link

mkosowsk commented Oct 15, 2018

Hi @evgeniuz, just confirming that you received a 400 DAI payment for this issue. I am seeing a payment on my end but for some reason @gitcoinbot did not do a follow-up post

@evgeniuz

This comment has been minimized.

Copy link
Contributor

evgeniuz commented Oct 22, 2018

@mkosowsk Hi, I received payment, thanks :)

@medvedev1088

This comment has been minimized.

Copy link
Member Author

medvedev1088 commented Oct 26, 2018

@evgeniuz have you noticed that gasUsed is often null in parity responses? Do you know what's the reason?

@evgeniuz

This comment has been minimized.

@medvedev1088

This comment has been minimized.

Copy link
Member Author

medvedev1088 commented Oct 29, 2018

Filed a bug to Parity about missing failed contract creations paritytech/parity-ethereum#9822. As a workaround can use batch size 1 and use trace_block instead of trace_filter.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.