## 1. Project Overview & Quickstart (Chia-Network/chia-blockchain) ## File: README.md # chia-blockchain [![Chia Network logo][logo-chia]][link-chia] | Releases | Repo Stats | Socials | | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [![Latest Release][badge-release]][link-latest] [![Latest RC][badge-rc]][link-release] [![Latest Beta][badge-beta]][link-release] | [![Coverage][badge-coverage]][link-coverage] [![Downloads][badge-downloads]][link-downloads] [![Commits][badge-commits]][link-commits] [![Contributors][badge-contributors]][link-contributors] | [![Discord][badge-discord]][link-discord] [![YouTube][badge-youtube]][link-youtube] [![Reddit][badge-reddit]][link-reddit] [![Twitter][badge-twitter]][link-twitter] | Chia is a modern cryptocurrency built from scratch, designed to be efficient, decentralized, and secure. Here are some of the features and benefits: - [Proof of space and time][link-consensus] based consensus which allows anyone to farm with commodity hardware - Very easy to use full node and farmer GUI and cli (thousands of nodes active on mainnet) - [Chia seeder][link-seeder], which maintains a list of reliable nodes within the Chia network via a built-in DNS server. - Simplified UTXO based transaction model, with small on-chain state - Lisp-style Turing-complete functional [programming language][link-chialisp] for money related use cases - BLS keys and aggregate signatures (only one signature per block) - [Pooling protocol][link-pool] that allows farmers to have control of making blocks - Support for light clients with fast, objective syncing - A growing community of farmers and developers around the world Please check out the [Chia website][link-chia], the [Intro to Chia][link-intro], and [FAQ][link-faq] for information on this project. Python 3.10+ is required. Make sure your default python version is >=3.10 by typing `python3`. If you are behind a NAT, it can be difficult for peers outside your subnet to reach you when they start up. You can enable [UPnP][link-upnp] on your router or add a NAT (for IPv4 but not IPv6) and firewall rules to allow TCP port 8444 access to your peer. These methods tend to be router make/model specific. Most users should only install harvesters, farmers, plotter, full nodes, and wallets. Setting up a seeder is best left to more advanced users. Building Timelords and VDFs is for sophisticated users, in most environments. Chia Network and additional volunteers are running sufficient Timelords for consensus. ## Installing Install instructions are available in the [Installation Details][link-install] section of the [Chia Docs][link-docs]. ## Running Once installed, an [Intro to Chia][link-intro] guide is available in the [Chia Docs][link-docs]. [badge-beta]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdownload.chia.net%2Flatest%2Fbadge-data-beta.json&query=%24.message&logo=chianetwork&logoColor=black&label=Latest%20Beta&labelColor=%23e9fbbc&color=%231e2b2e [badge-beta2]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdownload.chia.net%2Flatest%2Fbadge-data-beta.json&query=%24.message&logo=chianetwork&logoColor=%23e9fbbc&label=Latest%20Beta&labelColor=%23474748&color=%231e2b2e&link=https%3A%2F%2Fgithub.com%2FChia-Network%2Fchia-blockchain%2Freleases&link=https%3A%2F%2Fgithub.com%2FChia-Network%2Fchia-blockchain%2Freleases [badge-commits]: https://img.shields.io/github/commit-activity/w/Chia-Network/chia-blockchain?logo=GitHub [badge-contributors]: https://img.shields.io/github/contributors/Chia-Network/chia-blockchain?logo=GitHub [badge-coverage]: https://img.shields.io/coverallsCoverage/github/Chia-Network/chia-blockchain?logo=Coveralls&logoColor=red&labelColor=%23212F39 [badge-discord]: https://img.shields.io/badge/discord-Chia%20Network-green.svg [badge-discord2]: https://img.shields.io/discord/1034523881404370984.svg?label=Discord&logo=discord&colorB=1e2b2f [badge-downloads]: https://img.shields.io/github/downloads/Chia-Network/chia-blockchain/total?logo=GitHub [badge-rc]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdownload.chia.net%2Flatest%2Fbadge-data-rc.json&query=%24.message&logo=chianetwork&logoColor=white&label=Latest%20RC&labelColor=%230d3349&color=%23474748 [badge-reddit]: https://img.shields.io/reddit/subreddit-subscribers/chia?style=flat-square&logo=reddit&labelColor=%230b1416&color=%23222222 [badge-release]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdownload.chia.net%2Flatest%2Fbadge-data.json&query=%24.message&logo=chianetwork&label=Latest%20Release&labelColor=%231e2b2e&color=%230d3349 [badge-twitter]: https://img.shields.io/twitter/follow/chia_project?style=flat-square&logo=x.org&logoColor=white&labelColor=black [badge-youtube]: https://img.shields.io/youtube/channel/subscribers/UChFkJ3OAUvnHZdiQISWdWPA?style=flat-square&logo=youtube&logoColor=%23ff0000&labelColor=%230f0f0f&color=%23272727 [link-chia]: https://www.chia.net/ [link-chialisp]: https://chialisp.com/ [link-commits]: https://github.com/Chia-Network/chia-blockchain/commits/main/ [link-consensus]: https://docs.chia.net/consensus-intro/ [link-contributors]: https://github.com/Chia-Network/chia-blockchain/graphs/contributors [link-coverage]: https://coveralls.io/github/Chia-Network/chia-blockchain [link-discord]: https://discord.gg/chia [link-docs]: https://docs.chia.net/docs-home/ [link-downloads]: https://www.chia.net/downloads/ [link-faq]: https://docs.chia.net/faq/ [link-install]: https://docs.chia.net/installation/ [link-intro]: https://docs.chia.net/introduction/ [link-latest]: https://github.com/Chia-Network/chia-blockchain/releases/latest [link-pool]: https://docs.chia.net/pool-farming/ [link-reddit]: https://www.reddit.com/r/chia/ [link-release]: https://github.com/Chia-Network/chia-blockchain/releases [link-seeder]: https://docs.chia.net/guides/seeder-user-guide/ [link-twitter]: https://twitter.com/chia_project [link-upnp]: https://www.homenethowto.com/ports-and-nat/upnp-automatic-port-forward/ [link-youtube]: https://www.youtube.com/chianetwork [logo-chia]: https://www.chia.net/wp-content/uploads/2022/09/chia-logo.svg "Chia logo" --- ## File: chia/wallet/puzzles/custody/README.md The puzzles and drivers in this folder are implementations and utilizations of CHIP-43 ## 2. Official Technical Reference & Guides (Chia-Network/Chia-Network.github.io) Chia.net ======== Website for the [Chia](https://www.chia.net/) cryptocurrency. Development ----------- To set up your environment and run the server locally: ```bash gem install bundler git clone --depth 1 https://github.com/Chia-Network/chia-network.github.io.git cd chia-network.github.io bundle install bundle exec jekyll serve ``` More detailed instructions available at the [GitHub Pages documentation](https://help.github.com/articles/setting-up-your-github-pages-site-locally-with-jekyll/). Really, GitHub? Yep. Really. ### Videos To ensure videos work in Chrome/Firefox/Safari/Edge, videos should be encoded as H.264 MP4. For example: ```bash # use this command to generate the H.264 MP4 version of the video ffmpeg -i assets/Chia_Launch_original.mp4 -vcodec h264 -acodec aac -strict -2 -movflags +faststart assets/Chia_Launch.mp4 # convert video (in any supported format) into H.264 MP4 ``` Then, generate a thumbnail for the video, used as a fallback (when the browser doesn't support video) or shown before the video is loaded: ```bash # extract frame at 0 hours, 0 minutes, and 15 seconds into the video, save it as a JPG ffmpeg -ss 00:00:15 -i assets/Chia_Launch.mp4 -vframes 1 -q:v 2 assets/Chia_Launch.jpg ``` Now that you have the H.264 MP4, and the thumbnail JPG, use the following markup in your HTML to include the video (with our cross-browser video component): ``` {% include video.html id="some-unique-identifier-for-video" path="/assets/Chia_Launch.mp4" mimetype="video/mp4" thumbnail="/assets/Chia_Launch.jpg" %} ``` Deployment ---------- Push to a GitHub repository, making sure the repository is set up with `https://www.chia.net` as a [custom domain name](https://help.github.com/articles/using-a-custom-domain-with-github-pages/). Content Management ------------------ ### SEO On any page, front matter entries can be used to add social media metadata. For example, on a blog post: ```markdown # post-specific fields (other fields also may be used in the post, but also are used for SEO) layout: post date: 2019-04-04 # also used as title of card preview on Twitter and Facebook title: "Chia Network Announces 2nd VDF Competition with $100,000 in Total Prize Money" # thumbnail image (note: must be a full URL, so it has to start with `https://chia.net/...`) # note: this defaults to https://chia.net/android-chrome-384x384.png # note: test this using https://cards-dev.twitter.com/validator and https://developers.facebook.com/tools/debug/sharing/ image: https://chia.net/android-chrome-384x384.png # description of the current page # note: this defaults to the first paragraph of the content # content language lang: en ``` ### Contact Info Edit `collections/_data/contact.yml` - address, phone number, email, and social media profiles are located here. See comments inside the file for more details. ### Frequently Asked Questions To add a new FAQ entry, create a new file at `collections/_faq/-..md` with the following form: ```markdown --- lang: en # this post is written in English order: 2 # this FAQ entry appears as the second entry title: "QUESTION?" --- ANSWER TO QUESTION. ``` Make sure to create the corresponding translated files for every language code! To edit an existing FAQ entry, edit the corresponding file at `collections/_faq/-.md`. ### News Articles To add a new News Article, create a new file at `collections/_news/--
-.md` with the following form: ```markdown --- title: "BitTorrent inventor announces eco-friendly bitcoin competitor Chia" # title of the news article weblink: "https://techcrunch.com/2017/11/08/chia-network-cryptocurrency/" # link to online publisher's article date: 2017-11-08 # publication date of news article thumbnail: "/assets/techcrunch.png" # thumbnail shown with the article source: TechCrunch # publisher name jumbotron: false # when `true`, shows the article in jumbotron at the top of the page, otherwise shows the article in articles list below --- THIS MARKDOWN CONTENT IS SHOWN IN THE JUMBOTRON BOX, BESIDE THE THUMBNAIL, IF THE `jumbotron` SETTING IS `true` IN THE METADATA ABOVE. OTHERWISE, IT IS IGNORED. ``` ### News Article Thumbnail Desktop and mobile news article thumbnails have different proportions. In order for the thumbnail to appear properly in both contexts, do the following: Create a 1000 x 750 px image file with 100 px margins, place news source logo inside the 800 x 550 px area and save as jpg or png. To edit an existing News Article entry, edit the corresponding file at `collections/_news/--
-.md`. ### Blog Posts To add a new Blog Post, create a new file at `collections/_posts/--
-..md` with the following form: ```markdown --- lang: fr # this post is written in French layout: post # use standard blog post page layout title: "11 Browser Extensions That Can Save You Money Every Time You Shop Online" # title of the blog post date: 2018-06-18 # publication date of blog post author: "[Some Person](https://google.com)" # author name (supports Markdown for links and formatting) --- CONTENT OF BLOG POST AS MARKDOWN. ``` Make sure to create the corresponding translated files for every language code! To edit an existing Blog Post entry, edit the corresponding file at `collections/_posts/--
-..md`. #### Set When a Post Gets Published - Date and Time You can set the date and time for when a blog post gets published. Instead of only a `YYYY-MM-DD` date in the blog post front matter you can include a time as well. The date and time is in [ISO 8601 format](https://www.w3.org/TR/NOTE-datetime). There is more than one way to write a date and time in ISO 8601 format, but to keep things simple, use this format: `YYYY-MM-DDTHH:MM±HH:MM` Going left to right: * `YYYY-MM-DD` is the standard year-month-day format. * `T` is the letter "T" to indicate the following numbers are time. * `HH:MM` is the time in the time zone you want the post to get published in. `HH` is 00 to 23. There is no AM or PM. * `±HH:MM` this is the time offset from UTC for the time zone youw ant the post to get published in. `HH` is 00 to 23. There is no AM or PM. Example: If you want a post to get published on March 15, 2022 at 9 AM PST you would have this in the front matter: ```yaml date: 2022-03-15T09:00-08:00 ``` Since PST is 8 hours behind UTC, we use `-08:00` as the UTC offset after the `09:00`. ### Investors To add a new Investor entry, create a new file at `collections/_investor_pics/-.md` with the following form: ```markdown --- pic_url: "/assets/a16z.png" # thumbnail image for investor entry name: "Andressen Horowitz" # name of investor web_url: "https://a16z.com/" # investor's website order: 2 # this is the second entry in the investors list --- ``` To edit an existing Investor entry, edit the corresponding file at `collections/_investor_pics/-.md`. Internationalization -------------------- This website is localized in several languages, each having the same basic structure under their own directories: * English: `en` (under `./`) * French: `fr` (under `./fr`) * Chinese: `cn` (under `./cn`) * Japanese: `jp` (under `./jp`) * Dutch: `nl` (under `./nl`) * German: `de` (under `./de`) * Spanish: `es` (under `./es`) * Serbian: `sr` (under `./sr`) * Portuguese: `pt` (under `./pt`) * Turkish: `tr` (under `./tr`) To add a language, let's say Esperanto: ```bash LANGUAGE="eo" # ISO 639-1 language code cp -r fr $LANGUAGE find $LANGUAGE -type f -exec sed -i "s/lang: fr/lang: $LANGUAGE/g" {} \; ``` Now, new strings need to be created in `_data/strings.yml`. This is a YAML file containing language codes, mapped to string identifiers, mapped to translations of each string: ```yaml SOME_LANGUAGE_CODE: SOME_STRING_1_IDENTIFIER: "VALUE OF STRING 1, TRANSLATED INTO SOME_LANGUAGE_CODE" SOME_STRING_2_IDENTIFIER: "VALUE OF STRING 2, TRANSLATED INTO SOME_LANGUAGE_CODE" ... SOME_OTHER_LANGUAGE_CODE: SOME_STRING_1_IDENTIFIER: "VALUE OF STRING 1, TRANSLATED INTO SOME_OTHER_LANGUAGE_CODE" SOME_STRING_2_IDENTIFIER: "VALUE OF STRING 2, TRANSLATED INTO SOME_OTHER_LANGUAGE_CODE" ... ``` Then, let Jekyll know about this new language by editing `_data/languages.yml` This may seem inefficient, but GitHub Pages' Jekyll setup currently has no internationalization plugin, so this is currently the simplest way. To minimise code duplication, each file in the language folders is simply a placeholder containing only what it's supposed to represent. For example, the French homepage, `./fr/index.md`, has the following contents: ``` --- layout: homepage lang: fr title: Accueil - Chia Network --- ``` To internationalize content (e.g., blog posts), we use `lang: SOME_LANGUAGE_CODE` in the YAML front matter to specify which language's site the page should show up on. For example, here's a French FAQ entry, `./collections/_faq/p01-04-what-is-proof-of-space.fr.md`: ```markdown --- lang: fr page: 1 order: 4 --- Qu'est-ce qu'une "preuve d'espace"? ------------------------- La «preuve d'espace» ne doit pas être confondue avec le stockage. [...] ``` To ensure this FAQ entry is available in all languages, make sure you have one `./collections/_faq/p01-04-what-is-proof-of-space..md` translated file for every ``.