Inspiration

As someone who has created many wallets (primarily dapp based wallets) I understand the necessity of them and the impact they have on users and developers of a blockchain. Noticing the challenge on devpost instantly piqued my interest and learning a new blockchain is always fun for me.

What it does

The extension wallet can transfer, display tokens, and associate tokens internally. When connected externally to web based dapps it can do literally anything as is acts purely as a signer.

How we built it

Started on 06/02/2021 @ 3:30 (GMT+2). It's now 11/02/2021 @ 21:26. So yeah, lots of redbull. The wallet is built using Vue and pure javascript, along with concepts and security strategies that I've cultivated over years of wallet building.

  • AES-GCM encryption for data storage (local storage only)
  • Encrypted streams between web app and extension to ensure no tampering of data while in transit (MITM) from other extensions, and potentially malicious websites
  • Human readable formatting for transaction details display
  • Login/logout strategy to prevent data leakage and ensure data privacy
  • Easy to integrate with Hashgraph SDKs
  • Background process handling for all intensive computing which provides faster computation for extensions

Challenges we ran into

There really weren't any challenges. The SDKs are very self-explanatory and Hashgraph's APIs are great.

Accomplishments that we're proud of

Have you seen how sexy this thing is? Creating a wallet from scratch in 5 days which is still ultra-secure and takes into account all necessary precautions (such as XSS attacks, proper encryption and key generation/storage, etc) is something I'm personally proud of.

What we learned

Since this was my first.. I should really be doing more hackathons, it was fun.

What's next for IV - Hedera Hashgraph Extension

It really depends on the type of adoption of the wallet. If it's primarily by users then the wallet should move towards a business model of premium services and possibly referral fees. If it is adopted by businesses then annual licensing for whitelabel wallets + SLA programs would be preferable.

Repositories are here

Extension repository

Mock application repository

Example web app integration

const { Client, TransferTransaction } = require("@hashgraph/sdk");

let wallet;

document.addEventListener('hederaWalletLoaded', async () => {
    // Grab the injected wallet from the window object
    wallet = window.wallet;

    // Testnet, Mainnet, or Previewnet
    const account = await wallet.login('Testnet');

    // Instantiate a client
    const client = Client.forTestnet();

    // Set the operator for signing to the signer from the wallet
    client.setOperatorWith(
        account.id,
        account.publicKey,
        wallet.getTransactionSigner()
    );

    // You can now use any Hashgraph SDK transaction builders,
    // and execute using this client.
    const executed = await new TransferTransaction()
        .addHbarTransfer(wallet.account.id, Hbar.fromTinybars(-1))
        .addHbarTransfer('some.other.id', Hbar.fromTinybars(1))
        .signWithOperator(client)
        .execute(client);

    console.log(await executed.getReceipt(client));
})

Want a longer video?

Though a shorter video is included in this project page, there is a longer one which goes deeper into the functionality here: https://www.youtube.com/watch?v=s7xHNA59yog

Built With

+ 10 more
Share this project:

Updates