Back to blog
Feb 05, 2025
3 min read

Learning Web3: Blockchain & Smart Contracts

A starter guide to what these concepts aim to achieve

Web2 required us to login via Google, X, Meta. Make payment via visa, mastercard, stock exchanges.

Web3 allows people to transact directly with each other.

The centralised system did offer a level of trust that enabled communication between parties. Building rapport prior to transacting.

How can users actually transact with each other in a decentralised system? Moreso, how can we trust the other party?

Say if someone is selling event tickets, or real estate, or a digital product. How do we trust they will deliver on their promise?

Common Use Cases from Solana Website

- Selling goods and services online with near-zero fees and instant settlement. (with visa and mastercard this does feel somewhat resolved - however it's possible bad actors can file disputes and get away with it - even though they received the good)
- Selling digital or physical items, ensuring that each item is genuine and that copies are distinguishable from original items. (this feature is intrinsic to blockchain via its immutable distributed ledger)
- instant global payments, without the time and expense of tranditional money transfer companies

Assyemtric Cryptography enables authentication of the source of message and decryption of the message.

Still nothing about fulfilling on contracts.

Edit consts.ts

// consts.ts

export const SOCIALS: Socials = [
  { 
    NAME: "Github",
    ICON: "github",
    TEXT: "markhorn-dev",
    HREF: "https://github.com/markhorn-dev/astro-sphere"
  },
]
FieldTypeRequiredDescription
NAMEstringyesAccessible name
ICONstringyesRefers to the symbol id in public/social.svg
TEXTstringyesShorthand profile name
HREFstringyesThe link to the social media profile

Edit /public/social.svg

Simply add your own symbols to the svg sprite.

It is recommended that all styles be removed from new symbols added, or they may not show up correctly or conflict with Tailwind’s classes.

The id should match the icon field as specified in your consts.ts file.

<!-- public/social.svg -->

<svg xmlns="http://www.w3.org/2000/svg">
  <defs>
    <symbol id="github" viewBox="0 0 496 512">
      <path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/>
    </symbol>
</defs>
</svg>