-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
469 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
tampopo [dot] eth -- Won't you pull my thread, my love? | ||
Copyright (C) 2021 Palash A. | ||
|
||
This program is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
|
||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
|
||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <https://www.gnu.org/licenses/> | ||
or the full license reproduced in the repository for convenience. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# tampopo [dot] eth | ||
> [Won't you](https://emptyyourmug.com/) [unravel me](https://pullmythread.com/), [my love](https://tampopo.xyz) ?! \ | ||
> Made as a part of [EthOnline 2021](https://web.archive.org/web/20210912132034/https://online.ethglobal.com/). Check out the [submission here](https://showcase.ethglobal.com/ethonline2021/tampopo-dot-eth)! | ||
We can be anyone we want to be on the internet, so let's all be *singularly* real, in the hopes of abolishing from this world duality we may rise above and all be cubed ! | ||
|
||
Ever seen Harry Potter? There is a scene where Albus Dumbledore uses his wand to remove a memory from his mind to empty into the [Pensieve](https://harrypotter.fandom.com/wiki/Pensieve). Tampopo does exactly that, but with all the benefits of web3, ie, it incentivises _you_ to outpour your stories [read: empty your mugs] onto the network. The stories are represented as the balls of coloured yarn that they usually are, by having them displayed in the form of interactive, clickable links. As the reader clicks, parts of the story are revealed. Think of it as pulling the threads of the yarn ball, and as the reader pulls more, you earn* more; because web3. | ||
|
||
## The Revolution | ||
|
||
At the end of the day, all of us are stories (some lucky one get to be songs); This project aims to connect stories and _web3_ by providing the space (in your time) for you to outpour your stories for the world. The world is filled with stories, which for one reason or another, are often silenced; no more! Web3 abstracts all entities into nodes, not caring if the node represents an idea, a machine, an organisation, or a person; Furthermore, these nodes can have their own economy, thereby, in some sense, enabling barter systems; or a global creative economy. | ||
|
||
This project provides a platform for `users` to create `personas` and share stories as those `personas`; Upon story reads, the _storytellers_ are _rewarded_ by their reader's _attention_ (made tangible via `TP tokens`). The minting of fresh `TP` occurs upon persona registration (at `tampopo.eth`), story minting (at `emptyyourmug.com`), and on _thread pulling_ (at `pullmythread.com`). Furthermore, other tokens may be _streamed_ to mint `TP` at `<persona>.tampopo.eth`; which also forms the bridge to rest of web3 [read: DeFi]. | ||
> The choice to stay away from exchanges is a conscious one since I fear that the forces of the market will be too strong for the innocent threads strewn across the network | ||
Web3 also brings forth, and indeed hyperboles, the transactional nature of the modern world; or more accurately, the causal nature of life itself - every action has a consequence (may or maynot be equal in nature, or value). The action-reaction(s) of this private* network are as follows; | ||
- For `storytellers` - The action of writing, and publishing, a story awards you with a certain number of freshly minted `TP` tokens. Moreover, as readers read, more `TP` tokens are minted to your name (or if you be so kind, to the community). | ||
- For `readers` - As you _stumble upon_ and read a story, freshly minted `TP` tokens are _streamed_ to the storyteller. Think of it as your attention and interest being converted to `TP` tokens by the _majik_ of web3. | ||
- On _seeing colour_ - The two main ways to interact with the network is via `emptyyourmug.com` and `pullmythread.com`. However, you may also visit `tampopo.eth` where you may choose the _persona_ [read: colour] you want to read [read: see] and there is a cost associated with this choice, at some constant rate per click. | ||
- Being _invited_ - A storyteller may also choose to invite you to read a story (or the world, by making it public) where the [cost] rate in _seeing colour_ is now the rate of minting fresh `TP` tokens. | ||
|
||
## Network Information | ||
|
||
tampopo consists of three networks - i. the default `mainchain` where all the action happens; ii. a `draftchain` for storytellers to get some feedback on their stories prior to publishing; and iii. a `hidechain` for permissioned access to a story, ie, invite-only story views for more sensitive content. Each chain uses a different Ethereum chain (such as `homestead`, `ropsten`, etc.) for their unique capabilities, as explained further; | ||
|
||
**mainchain** This is the default chain for the network, running as a layer-2 chain on the main Ethereum Network (`mainnet`). A bunch of smart contracts help peg the value of `tP` tokens to ether, and thus real-world* value. Every public story that is publised to the network resides as a story hash on this chain. | ||
|
||
**draftchain** This is the chain where the points are made up, and the rules don't matter. Effectively, it is the wild wild west, designed for more chaotic creations, as close to `main` conditions. As a result, implemented on Ethereum's `ropsten` network. The idea is to store drafts here, until it is ready to be published on the main network. | ||
|
||
**hidechain** This is a Proof of Authority chain (as opposed to PoW (and maybe PoS) above) using the `görli-testnet` to enable DPoS voting, while separating the *voting** from funding. Effectively, the aim here is to form something like Twitter's [Communities](https://blog.twitter.com/en_us/topics/product/2021/testing-communities) because this network may also be used for whitsleblowing, or fighting injustice. In some [naive] way linking web3 and twitter, to give the _armchair_ activists some teeth, if you will. | ||
|
||
|
||
## Contributing Guidelines | ||
> read: participating with the network | ||
The beautiful thing about open-source, is that you can *copypasta*. Moreover, code is a language; one to express ideas in (shamelessly stolen from [Lex Clips](https://www.youtube.com/c/LexClips)), and as such these are my ideas, hence there is no contributing, per se, permitted. Having said that, since the entire repository is under a [copyleft license](), you are free to fork it or even just copy individual lines from any file (*note:* the license mentions stating source of code, but also emphasises no liability, thereby making a sort of honour system possible; so, will you be honourable?). | ||
|
||
Also, the most ideal, and indeed quickest for it is designed as so, way to *contribute* to the network, is to *participate* in it - either by [emptying your cup]() or by [filling it](). Either link helps mine `tP` tokens, which are made real by purchases of stories as memorablia of the time shared together (across space) [as an NFT [read: ERC-1155 multitoken]]. Of course, you may read stories for free without paying anything, but then I would be obliged to refer you to the honour code mentioned above. | ||
|
||
In summary, you create a persona on either website (`emptyyourmug.com` || `pullmythread.com`) to share your stories or consume others' stories (respectively). Either of those activities mines fresh `tP` network tokens, which are made real* and consumable using some [web3 magic](). The idea behind the network is effectively an idea, that of existential dread - for aren't we all just stories at the end of it all? If so, why not become immortal together and scream out our [colourful] stories into the abyss*? This network is that abyss, with some effort to make sense of the chaos as well, of course. | ||
|
||
### Branch Information | ||
|
||
This repository is split into four branches - [`takeoff`](), [`land`](), [`runway`](), and [`hangar`](); | ||
|
||
- `takeoff` This branch is akin to the `release` branch, ie, where users or visitors stumble upon | ||
- `land` This is akin to the `staging` branch, ie, where public users are invited to test new features | ||
- `runway` This branch is akin to the `master` branch, ie, where devs are invited to test new features | ||
- `hangar` This branch is akin to the `dev` branch, ie, where devs actually do the dev | ||
|
||
### Future Considerations | ||
|
||
You could consider building the following *lego bricks* for the network and releasing them for free (copy*left* open source). | ||
|
||
- [ ] tampopo [dot] eth explorers for *meaningful* and insightful stats of the network | ||
- [ ] alternate document specifications, such as poetry, plays, scripts, etc. | ||
- [ ] openAI integrations for *fun*, and convenience | ||
- [ ] private publishing networks on `görli` testnet (for PoA) | ||
- [ ] TEST CASES, please | ||
|
||
|
||
## Further Reading | ||
|
||
The `docs` provide a good start to the project; Open the folder and pick any file that interests you. Or click for the specific file based on short descriptionbs below, | ||
|
||
- [`colours.md`]() :: A little more on translating *moods* to colours | ||
- [`externals.md`]() :: External projects integrated, and design inspirations | ||
- [`functionality.md`]() :: A quick start to the network and user features | ||
- [`merging.md`]() :: A little more on personas and *merging* with `mainchain` | ||
- [`openai.md`]() :: Some thoughts on OpenAI GPT-3 integrations; ***highly incomplete*** | ||
- [`scalability.md`]() :: Notes on how the network uses L2 scalability solutions (optimistic mining, zk-minting) | ||
- [`security.md`]() :: A brief explainer on the privacy measures in the network (inherent or otherwise), from keys and tries to proofs and truths | ||
- [`tokenomics.md`]() :: A little on the native network token - the `tP` token | ||
- [`trotter.md`]() :: Why this project is essentially [alan](https://alantrotter.com/)[+](https://emptyyourmug.com/)[+](https://pullmythread.com/) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# Coloured Moods | ||
|
||
The basic idea is to represent the mood of a story with a colour [read: hue]. Essentially we perceive reality filtered by our mood, which can be thought of as coloured goggles. This project flips that idea by making the reader aware of their goggles and then providing other goggles for their choosing. The majik of web3 makes this *economical* by incentivising network participation. Finally, and perhaps not so subtly, this also becomes a commentary on current affairs. | ||
|
||
## Hue, Saturation, Luminosity | ||
|
||
`hue` :: Typically digital colour is defined in terms of red, blue, and green or `rgb`, but it is hard to figure out as a human what the red, green, or blue values of your mood are. Humans are good at relative stuff, so you select the hue, saturation, and lightness of your mood; hue represents the overall colour of your mood (with 360 *degrees*), saturation is how strongly you feel your mood, and lightness becomes how upset or free you feel. In the background, this is converted to `rgb` which is then converted back into `hue`, so the network can define the other paramters [below]. | ||
|
||
`sat` :: *Saturation* defines how much of a colour [read: hue] there is. The network uses this to communicate the depth of the story [read: trie] explored, ie, as you get closer to the end of the story [read: closer to the root], the hue of the story gets more *saturated*. This serves to use the `hsla` as a design language to communicate information in novel ways, after all we are mining `$$$` out of *nothing*. | ||
|
||
`lum` :: *Luminosity* (currently) is used to communicate the *value* of the story being read. Trivially, it is defined by the average mint price of the story in a ratio* to the number of story mints. Personally, this leads to leaderboards and [unhealthy, often] competition, which is what this project aims to avoid (by using *non fungible* tokens). The other view is of *lightness* which refers to the level of whiteness in the colour; white being all light and black being the absence of light. However, this view is adopted for the user, see `hue` above. | ||
|
||
`alpha` :: *Opacity* defines how well you can see the colour, and as such this project uses it to show how well a story is doing, opaque being healthy, transparent, almost dying.. The *readers* have a choice to revive dying stories by minting them (could these be [horcruxes](https://harrypotter.fandom.com/wiki/Horcrux)?), but also do so by simply *taking the time* to read (or hear) the story. | ||
|
||
|
||
## Colour Schemes | ||
> TODO | ||
### Complementary to Analogous | ||
> choose a *delta* and set a *target* to reach analogous colours | ||
### Mono, Di, Tri, Tetra Chromatic | ||
> some stories need to be more customisable |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
# External Projects Used | ||
|
||
This project ([`emptyyourmug.com`](), [`pullmythread.com`](), and [`tampopo.eth`]()) would not be possible or indeed useable or useful if it weren't for the existence and accessibility of the following projects, ideas, code. | ||
|
||
|
||
## web3 Projects | ||
> * Core projects, without with tampopo wouldn't be possible | ||
> ** [Hackathon](https://showcase.ethglobal.com/ethonline2021/tampopo-dot-eth) sponsors, for enhanced UX (and `$$$`) and customisatbility | ||
### The Ethereum Project* | ||
> The original decentralised computer | ||
The network is essentially defined as a set of smart contracts running on Ethereum's `mainnet` (and `ropsten`, `görli`), with the web3 entrypoint at `tampopo.eth`. The network is a *L2 sidechain** using local *optimistic mining* and on-chain *zk-rollups* to submit local batches. Moreover, the native network tokens `tP` that are mined, are ultimately pegged to `ether`, the native token of the Ethereum Project. | ||
|
||
|
||
### Ethereum Name Service* | ||
> Human friendly web3 addresses | ||
ENS is used foremost as mentioned above, but more importantly, and interestingly, it is used to enable *personas* on the network. Each persona *minted* (as `<persona>.tampopo.eth`) mines some `tP` tokens for the network, and also provides a starting point for that persona's *stats*. Moreover, a reader may read, or a storyteller may write, as different personas over different themes, which is also made possible through ENS. | ||
|
||
|
||
### Gas Station Network* | ||
> Any token gas, the web3 MVC | ||
GSN is used so readers can contribute in any token, and writers may receive in any token. Effectively three contracts handle the integration - one for deposits, one for withdrawals, and one for oracles. | ||
|
||
#### Chainlink** | ||
> TWAP prices, future may include *preferred* oracles | ||
#### Superfluid** | ||
> Stream every click, makes the idea of `attention + time == money (== value)` most tangible | ||
|
||
### EthBlockArt** | ||
> For pretty pictures, future may involve [moving potraits](https://www.wizardingworld.com/writing-by-jk-rowling/hogwarts-portraits) using OpenAI to great *gif story moods* | ||
NFT art generated for minted ERC-1155 multi-tokens, as a function of the story, story depth reached, rollup zk-proof, persona, etc. | ||
|
||
|
||
### Rarible Protocol* | ||
> The OP set of NFT contracts, open source and with *lazy minting* | ||
|
||
### The Graph Network* | ||
> Indexing the web (three) | ||
|
||
### web3.storage* | ||
> Fast, easy, and free IPFS | ||
|
||
## OpenAI [future considerations] | ||
> GPT-3 is awesome holy shit djcvndcvj;weqbdefwc !!!! | ||
|
||
## Inspirations (and academia) | ||
|
||
Apart from external projects used directly, the design of the network has been heavily influenced by the following, and as a result seems apt to be mentioned, in the interest of accessible transparency. | ||
|
||
### `git` and GitHub | ||
> *merging* optimistically mined tokens by personas on *pull requests* | ||
### Merkle Trees | ||
> used extensively for procedural reconstruction (as opposed to data storage) and for zk capabilities | ||
### Alan Trotter | ||
> The entire project is effectively [alan](https://alantrotter.com/)[+](https://emptyyourmug.com/)[+](https://pullmythread.com/) |
Oops, something went wrong.