~uniqmgHi, I'm UniQMG! /* About me */ I joined tilde.club on Sep 20 2019. I enjoy programming and finding cool things to explore on the internet. I also tend to overuse obnoxious css, as you can see. /* Why I joined tilde.club */ I find the old internet a fascinating subject:
- No enforced identity, possible anonymity. Unintrusive hand-crafted advertising and no tracking.
- Actual servers to explore, not just a massive social media website run on an abstract machine in the cloud.
- Flash games! flash is kinda dead now, but you can make great js games now.
- Tight-knit internet communities
- Original memes 👌
- HTML ==========
- CSS ==========
- Java ==========
- Typescript ==========
- GLSL ==========
- Lua ==========
- C# ==========
- Python ==========
- Rust ==========
I was playing around with an idea today: Making a crypto-secured trading card system on tilde.club. It didn't exactly go far, but the owner of the system (i.e. me) can sign new cards and run a script that processes transfer requests. Users of the system (i.e. every user on tilde.club) can verify who owns a card and put in transfer requests which are picked up by the owner-run script.
You can play around with it at
/home/uniqmg/signed_card_playground. There's currently only one signed card, of which a copy is called
card.yml. The program is basically a mess of node and bash scripts:
scripts/validateCard [card]checks a card's syntax for validity but does not verify the card is signed.
scripts/verifyCard [card]verifies that a card is signed and accurate
scripts/transferCard [card] [recipient]puts in a transfer request for a card to another owner. You can only transfer cards you own. Ownership is determined by the value 'owner' in the card name and your tilde username.
scripts/getJson [field] [replace?]is a simple helper file that parses json/yaml piped to stdin and retrieves the specified field, with nested fields accessed via dot notation. If a replace value is specified, it instead replaces the value and prints out the whole file.
scripts/processTransfersprocesses any queued transfers. It can only be run by the owner.
scripts/signCard [card]signs a card and stores a copy in the "database" (actually just
public.pemlocated in the root of the program directory. Signed cards are stored in
What this system IS:
Secure even if write access is gained, as long as
Secure as a copy of the original, as long as you trust
public.pem. Note that there is no centralized revocation mechanism and so outdated copies don't know they're outdated (see below).
- Publically readable and verifiable by any user on the system, and so usable as simply a store of data that other actual card game programs could use.
What this system IS NOT:
- A blockchain. There is no verified date, so an outdated copy of the database has no indicator that it's outdated, potentially allowing the re-use of cards transferred to other users.
- Decentralized. The owner of the system is the only one who can sign cards, which means that they must be available to sign new cards and run the transfer processing script.
*note: any mentions of security have not been reviewed by someone qualified to talk about security./* I'll put some more stuff here eventually */ /* Webring! */