https://github.com/vanities/bitchan
a message board on ethereum
https://github.com/vanities/bitchan
ethereum typescript
Last synced: about 1 year ago
JSON representation
a message board on ethereum
- Host: GitHub
- URL: https://github.com/vanities/bitchan
- Owner: vanities
- License: mit
- Created: 2020-04-29T00:21:30.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-24T04:58:18.000Z (over 3 years ago)
- Last Synced: 2025-03-25T10:02:33.454Z (over 1 year ago)
- Topics: ethereum, typescript
- Language: TypeScript
- Homepage:
- Size: 8.05 MB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bitchan



Bitchan is an ethereum message board republic.
Just as some people have abused their power throughout history, we now see others abusing their power in the present.
Because human beings can’t handle power. We are not good at handling power over others. Nothing corrupts us quicker, nothing degrades our ethics more, than having power over others.
## Governance
This is a missing link of democracy in the public forum.
### Destruction from outside forces
Having an immutable backend means not having to deal with [government thugs](https://kiwifarms.net/threads/battle-for-section-230.70375/). If you want to spin a front end up your own, the goal would be to have an easily accessible api.
### Destruction from within
Typically Benevolent Dictators For Life (BDFL), rule a website without transparency and destroy the community from within with extremely shady moderation. Strategies like [shadowbanning](https://en.wikipedia.org/wiki/Shadow_banning), [editing posts](https://web.archive.org/web/20200419171435/https://www.reddit.com/r/announcements/comments/5frg1n/tifu_by_editing_some_comments_and_creating_an/) will not be allowed.
### Vote for leaders
Moderators, Janitors, and privileged users will be voted on to represent the registered users in a democratic vote among registered users of the age of 1 year.
Contract imperitives:
1. The contract owner shall be the president for the first year of office
2. Registered users shall vote after the age of 1 year of lurking
3. The President shall recieve the funding to be the leader of the board
### Combating bots
Having a fee to post promotes speech in the following ways:
- No ads
- No CAPTCHA where google makes you train their car self-driving algorithms for free and causes you to solve multiple puzzles that cost you more than 30 seconds
- Incentivize the president to clean the board
- No vpn/proxy spamming the board with ads, and if they do, they're paying the president
Creating multiple spam accounts
- registered accounts can buy invite codes to give to people where the invite code cost scales logarithmically
- registered users can peer to see who has invited who and can report bad actors
### Presidential capabilites
- making sticky posts
- restricting user sign up
- changing the create thread fee
- changing the reply post fee
- removing/hiding posts
- drawing out money from created threads and posts
## MVP
Working user signup, single board, admin access to the contract owner.
## Roadmap
This includes tests!
### Backend Contracts on ethereum
- [x] Basic User
- [x] Basic Client
- [x] Basic Board
- [ ] Basic Admin control
- [ ] Governance
- [ ] Personal Messaging
### Frontend client to interpret the backend state
- [x] User Signup/Login
- [x] Create post and reply
- [ ] Hide Post filters
- [ ] Submit application for leadership
- [ ] Submit vote for leadership
- [ ] Personal Messaging
## Development
### Quick install & Run
See the [Makefile](https://github.com/vanities/bitchan/blob/master/Makefile) for more simple commands
1. Download and Install [docker](https://docs.docker.com/get-docker/)
2. Download and Install [docker-compose](https://docs.docker.com/compose/install/)
3. `$ git clone https://github.com/vanities/bitchan.git`
4. `$ make up`
### Structure
The development backend and frontend interact using the truffle stack.
##### Backend
The backend is written in [solidity contracts](https://solidity.readthedocs.io/en/latest/introduction-to-smart-contracts.html) using [Ethereum](https://ethereum.org/). The Contracts used right now are User for user creation and and Bitchan for the basic messaging board component.
##### Frontend
The frontend is written in javascript/typescript and react.
### Testing
##### Local
1. [follow the Quick install & Run](https://github.com/vanities/bitchan/blob/master/README.md#quick-install--run)
2. Go to [http://127.0.0.1:3001](http://127.0.0.1:3001) in your browser
3. Install [Metamask](https://metamask.io/download.html) for whatever browser you're using
4. Open Metamask
5. enter `0x2264248e750146323373851aec1f3f700f6d9ed0ebdc934137c9e007a047197f` into metamask as a private key, it has 1 ETH.
6. Ensure you're connected to the local node 
##### Backend
Testing the backend contracts can be done [here](https://github.com/vanities/bitchan/tree/master/contracts/test) and is written in solidity and typescript using [truffle](https://www.trufflesuite.com/docs/truffle/testing/testing-your-contracts).
`$ make test_contracts`
##### Frontend
Testing the frontend can be done [here](https://github.com/vanities/bitchan/tree/master/client/tests) and is written in typescript.
`$ make test_client`
### Stop
`$ make down`