Complete: ICDevs.org - Bounty #9 - Cover Browser Plugin

I will move this bounty to assigned for you. Looks like you have a good plan for execution! Please post here if you need any help from the community.

1 Like

Should I move it open source as soon as possible or share repository with someone and make public on final stage?

The sooner the better as you’ll get some good feedback and it will be easier for others to comment/help out.

1 Like

For now i have started to work on front end part (design is the most challenging part for me). I guess that i would make everything open source in the end of this or next week after making everything clean and completing main logic.

1 Like

All right. Now extension is public. GitHub - DunkanMcLoud/can-check
It is in its working state now, some extra work need to be done, i guess (docs, GitHub actions workflows, and chrome web store upload and corresponding verification)

UPD. Some updates would be needed to satisfy bounty requirements (color alerts)

1 Like

I have met an obstacle implementing comparison of canister wasm_hash and COVER response . To get a wasm hash I use the following

export const getCanisterModuleHash = async (canisterId: string) => {
  const canisterPrincipal: Principal = Principal.fromText(canisterId)
  const path = [
    blobFromText("canister"),
    blobFromUint8Array(canisterPrincipal.toUint8Array()),
    blobFromText("module_hash")
  ]
  const res = await agent.readState(canisterId, {paths: [path]})
  const cert = new Certificate(res, agent);
  await cert.verify();
  const module_hash = await cert.lookup(path)
  return module_hash.toString("hex")
}

However this code is not working for my browser extension with the console error :

CompileError: WebAssembly.instantiate(): Wasm code generation disallowed by embedder

I have found the corresponding discussion for this case and found out that it’s due to current in-browser restriction for extensions of manifest v3. Downgrading to manifest v2 is impossible due to chrome extension store policy.
Is there any workaround to get wasm hash for canister using agent-js or http requests?

If not, I will not be able to implement comparison between Cover response and dfx canister info wasm hashes before Chrome developers enable wasm execution for extensions of manifest V3

https://bugs.chromium.org/p/chromium/issues/detail?id=1173354

1 Like

Well, I have committed extra updates which are supposed to satisfy current requirements.

The previous question is still valid. For now extension alerts if some canisters for dApp are missing Cover data.

Another obstacle I have is uploading extension to Chrome Web Store. To create an account I need to pay a bill - doing this recently became a huge trouble in country I live in. I will take a look at workarounds for this, but is it possible to upload it to web store by someone who has access to it?

For now i will fill the wiki for extension

Let me get back home from travel next week and ICDevs can cover the bill(I hope…how much is it?)

@skilesare The problem is not in the bill itself, it is small (5$), it is affordable. The problem is that i have no chance to pay it, because Visa and Mastercard has disabled cards in country i live in. So i have no chance to create an account because i can not execute this payment. So I am asking is there an option to upload this extension to Chrome Web Store by some DAO members who already have an account in Chrome Web Store? Or should I upload this extension to store and is this a critical part to complete a task?

We will set up an ICDevs account and I can up load it.

Great. I’ve added documentation to repository. Development is complete. I am waiting for your feedback about further steps required from my side. For now i will be around to make some minor bugfixes if find any.

Development complete
Please refer to the following repository

1 Like

Hey… @DunkanMcLoud a couple of changes:

I had to add to the manifest:
“name”: “Can-Check”,
“version”: “0.0.1”,

we need an icon. the 128 one in the repo isn’t working Supplying Images - Chrome Developers

I also need one screenshot

Hi @skilesare , thank you
I have improved manifest and 128 icon as you mentioned.
Left a bundled zip Release Verion 0.0.1 · IT-Union-DAO/can-check · GitHub
Is this screenshot is enough for you?
can-check/description.png at master · IT-Union-DAO/can-check · GitHub

Do we need all of these permission? I have to write a justification for why we need each one:

“tabs”,
“activeTab”,
“notifications”,
“contextMenus”,
“scripting”,
“background”,
“webNavigation”,
“webRequest”

Hi @skilesare . I have checked the list of permissions and reduced it by 3 redundant items.
Here are justification for those left:
“tabs” - extension creates and queries tab information via accessing browser tab API
“notifications” - extension sends user a notification about COVER status
“background” - extension uses a service worker to analyze web requests in background
“webNavigation” - this api is used to intercept and analyze network request on url navigation
“webRequest” - this api is also used to intercept network requests
Redundant permissions are dropped out in last commit. Please be aware that I have also updated a ZIP file in repository. I apologize for inconvenience caused by my inability to deal with chrome web store by myself. Thank you once again for this

Submitted for review! We will see what they say.

1 Like

Hi @skilesare ! Have we any updates from chrome web store team regarding new updated version of plugin?

I haven’t tried to update it yet. :grimacing:

Did you see the cover updates to 1.5? Does it break anything?

You should have received the bounty.

I have seen that there were some updates on Cover, however, I have not not spotted any significant changes. But i will check it once again. Hope that some canisters except cover’s own would be added to their registry.
Thank you, I have received a bounty reward