If you can use web assembly in the extension, you could probably compile the Candid crate to decode it without having to do a bunch of extra work in JS
Interesting… was thinking of grabbing @dfinity/candid/idl.js -> decode()
and its deps.
Here’s the repo: GitHub - jorgenbuilder/chrome-dfinity-decoder: Decode responses from the Dfinity blockchain in chrome devtools
Stuck for the moment on decoding the candid.
Made an attempt at building a wasm from the Candid crate and importing it into the extension. Import seems to work (would likely require some additional work to get into the chrome web store,) but I don’t know any rust so didn’t really get it to actually do anything.
didc
makes quick work of decoding the bytes without types though, so I know it can be done.
Create a CBOR developer plugin - #5
Current Status: Discussion
- Discussion (11/21/2021)
- Ratification (11/22/2021)
- Open for application (11/23/2021)
- Assigned (11/23/2021) ← We are here
- In Review
- Closed
Bounty Details
- Current Bounty Amount: 10 ICP
- ICDevs.org Match Available: 10 ICP - (For every ICP sent to 66083bb3c940c7de2a70aa127ec771da75d60deadc10f5f66b280f203d8f6e73, ICDevs.org will add one more ICP to the bounty, up to 10 ICP, After 10 ICP, Donations to the above address will add .25 ICP to this issue and .75 ICP to fund other ICDevs.org initiatives)
- Time Left: Expires 12/31/2022
- Project Type: Single Contributor
- Opened: 11/23/2021
- Time Commitment: Days
- Project Type: Traditional
- Experience Type: Intermediate - Web Dev
- Issue Type: Application Development
Description
This bounty gives the opportunity to
- learn how chrome plugins work
- learn how CBOR encoding works
- learn how Candid encodings work
- learn how the Internet Computer communicates with other applications
The developer will need to create a plug-in for Google Chrome in the style of react developer tools. This plug in should detect when CBOR has been sent or recieved from a server and be able to display that CBOR content in a more readable format. The user should be able to switch between a candid view/motoko data view/rust data view/json view. This will allow the user to copy and paste the data easily in to test harneses if they need to.
To apply for this bounty you should:
Github user jorgenbuilder applied for this bounty.
Selection Process
Github user jorgenbuilder was selected for this bounty.
Bounty Completion
Please keep your ongoing code in a public repository(fork or branch is ok). Please provide regular (at least weekly) updates. Code commits count as updates if you link to your branch/fork from the bounty thread. We just need to be able to see that you are making progress.
The balance of the bounty will be paid out at completion.
Once you have finished, please alert the dev forum thread that you have completed work and where we can find that work. We will review and award the bounty reward if the terms have been met. If there is any coordination work(like a pull request) or additional documentation needed we will inform you of what is needed before we can award the reward.
Bounty Abandonment and Re-awarding
If you cease work on the bounty for a prolonged(at the Developer Advisory Board’s discretion) or if the quality of work degrades to the point that we think someone else should be working on the bounty we may re-award it. We will be transparent about this and try to work with you to push through and complete the project, but sometimes, it may be necessary to move on or to augment your contribution with another resource which would result in a split bounty.
Funding
The bounty was generously funded by the community. If you would like to turbocharge this bounty you can seed additional donations of ICP to 66083bb3c940c7de2a70aa127ec771da75d60deadc10f5f66b280f203d8f6e73. ICDevs will match the bounty 1:1 for the first 10 ICP and then 0.25:1 after that. All donations will be tax deductible for US Citizens and Corporations. If you send a donation and need a donation receipt, please email the hash of your donation transaction, physical address, and name to donations@icdevs.org. More information about how you can contribute can be found at our donations page.
General Bounty Process
Discussion
The draft bounty is posted to the DFINITY developer’s forum for discussion
Ratification
The developer advisor’s board will propose a bounty be ratified and a vote will take place to ratify the bounty. Until a bounty is ratified by the Dev it hasn’t been officially adopted. Please take this into consideration if you are considering starting early.
Open for application
Developers can submit applications to the Dev Forum post. The council will consider these as they come in and propose a vote to award the bounty to one of the applicants. If you would like to apply anonymously you can send an email to austin at icdevs dot org or sending a PM on the dev forum.
Assigned
A developer is currently working on this bounty, you are free to contribute, but any splitting of the award will need to be discussed with the currently assigned developer.
In Review
The Dev Council is reviewing the submission
Awarded
The award has be been given and the bounty is closed.
Matches
We are waiting on our first community match.
Hey…just wanted to remind everyone that we have an open bounty for this. @jorgenbuilder 's latest progress is at GitHub - jorgenbuilder/chrome-dfinity-decoder: Decode responses from the Dfinity blockchain in chrome devtools and someone could pick up and run with it.
I slapped a UI on what I had so far and have a release pending review in the chrome web store. I think this will serve as a fine alpha release, and I’ve started adding issues for future releases to the github repo.
We’re live on the chrome webstore
For decoding Candid message online, you can try https://fxa77-fiaaa-aaaae-aaana-cai.raw.ic0.app/explain
Any idea why the tool doesn’t work with https://app.sonic.ooo ?
@coin_master It was a problem with the url capture regex. I’ve updated it and capture on sonic.ooo is working now. The 0.0.6 release with this change should be live on the web store any minute now. Thanks for letting me know!
Sonic uses some url entries into the internet computer that I hadn’t seen before. I recently swapped from capturing IC requests based on content types to capturing them based on urls (as of now, *.(ic0.app|dfinity.network|localhost:*)/api/v2/canister/<canister>/<method>
). I opened up that matcher a bit in order to work well with sonic, but there may yet be some URLs to add to this list, or perhaps it’s the wrong mechanism to identify IC requests
I cannot find out how to use this. In an app that talks to the IC (based on icfront) I open the debug tools and in the network tab I expect a ‘decoder’ tab. But it does not appear. See this:
How can I get the CBOR tab?
It shold be at the end on the right of your tab bar. Maybe check settings that it is enabled or restart chrome?
I found that after restarting the browser it worked. This is really useful. Thanks!!
very cool and helpful tool!
is there a plan to allow providing the candid for a canister somehow manually? this could be helpful if the candid is not exposed by the canister for whatever reason.
I noticed that this stopped working in my plug extension service worker window a while ago. Anyone know what is going on with that?
I was just notified that perhaps agent-js 2.1.0 had breaking changes for my little extension, which might be causing that breakdown @skilesare? I’ll have a look.
@marc0olo that’s an interesting idea! Certainly sounds possible, but since I write in Motoko this is not a problem that I’ve had. I don’t have any plans to add significant new features at this time.