{"id":13840527,"url":"https://github.com/eoscanada/eos-bios","last_synced_at":"2025-12-15T13:11:26.738Z","repository":{"id":57485760,"uuid":"124452272","full_name":"eoscanada/eos-bios","owner":"eoscanada","description":"DEPRECATED: use `eosc boot` now. Historically: Orchestrator for a decentralized EOS.IO blockchain network boot","archived":true,"fork":false,"pushed_at":"2019-06-11T20:07:48.000Z","size":19134,"stargazers_count":172,"open_issues_count":1,"forks_count":61,"subscribers_count":30,"default_branch":"master","last_synced_at":"2024-08-05T17:25:12.950Z","etag":null,"topics":["blockchain","eos","eosio"],"latest_commit_sha":null,"homepage":"https://eosc.app","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eoscanada.png","metadata":{"files":{"readme":"README-cn.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-08T21:50:23.000Z","updated_at":"2024-04-04T22:50:58.000Z","dependencies_parsed_at":"2022-09-11T15:03:05.573Z","dependency_job_id":null,"html_url":"https://github.com/eoscanada/eos-bios","commit_stats":null,"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eoscanada%2Feos-bios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eoscanada%2Feos-bios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eoscanada%2Feos-bios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eoscanada%2Feos-bios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eoscanada","download_url":"https://codeload.github.com/eoscanada/eos-bios/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225712494,"owners_count":17512412,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","eos","eosio"],"created_at":"2024-08-04T17:00:50.000Z","updated_at":"2025-12-15T13:11:26.279Z","avatar_url":"https://github.com/eoscanada.png","language":"C","funding_links":[],"categories":["Tools"],"sub_categories":[],"readme":"基于EOS.IO的区块链网络启动工具\n--------------------------------------------------------\n\n#### v1.0 ZhaoYu from EosLaoMao\n#### v2.0 Ian(Yahuang Wu) from MEET.ONE\n\n#### v2.1 Tyee Noprom from EOSpace.io\n\n[Click me switch to English version](./README.md)\n\n`eos-bios` 是一个命令行工具，给那些想要启动基于EOS.IO的区块链网络的人而准备.\n\n它提供以下功能:\n* 主网分阶段启动\n* 启动本地开发环境Booting local development environments\n* 启动测试环境Booting testnets\n* 启动联合网络或者私有网络\n\n首先你需要知道的是**discovery protocol**. 点击这个链接可以看到介绍:\n\n[![The Disco Dance](https://i.ytimg.com/vi/8aNZ_ZnKS-A/hqdefault.jpg?sqp=-oaymwEZCNACELwBSFXyq4qpAwsIARUAAIhCGAFwAQ==\u0026rs=AOn4CLCZeGSGv9Qix8mHX77R4-d0rzDkgA)](https://youtu.be/8aNZ_ZnKS-A)\n\nhttps://youtu.be/8aNZ_ZnKS-A\n\n[点击查看示例配置](./sample_config)\n\n下列 **视频** 解释了`eos-bios`的其他概念:\n\n| 备注           |                           链接 |\n| ------------ | ---------------------------: |\n| 发现文件的细节      | https://youtu.be/uE5J7LCqcUc |\n| 网络划分算法       | https://youtu.be/I-PrnlmLNnQ |\n| 启动顺序         | https://youtu.be/SbVzINnqWAE |\n| 代码审查核心流程     | https://youtu.be/p1B6jvx25O0 |\n| 与您的基础设施集成的钩子 | https://youtu.be/oZNV6fUoyqM |\n\n`eos-bios`的一些问答视频:\n\n| 备注                 |                           链接 |\n| ------------------ | ---------------------------: |\n| 账号是否从一个阶段延续到另一个阶段？ | https://youtu.be/amyMm5gVpLg |\n| 出块节点如何就链的内容达成一致？   | https://youtu.be/WIR7nab40qk |\n\n### 本地开发环境\n-----------------------------\n\n[点击下载`eos-bios`](https://github.com/eoscanada/eos-bios/releases),\n克隆当前仓库并且复制 `sample_config` 文件夹到新的目录\n\n修改 `my_discovery_file.yaml` 文件,把target_http_address指向本地地址:\n\n```\ntarget_http_address: http://localhost:8888\n```\n\n然后运行:\n\n    ./eos-bios boot --single\n\n这个命令会在你本地运行一个完整的开发环境，包含所有的系统合约，跟你在主网启动时的环境很类似.\n\n这个示例配置启动了一个单节点，同时它不会指向其他的出块候选节点.\n\n\n### 社区协作启动网络\n------------------------------\n\n启动社区网络的时候，*每个人*都需要执行:\n\n    ./eos-bios orchestrate\n\n根据特定算法和各个节点提供的 discovery 文件，各个节点将会被自动赋予相应的角色:\n\n1. _BIOS Boot node_, 该节点将单独执行 `eos-bios boot` 命令，完成系统合约的部署，快照的导入，EOS 代币的分配等任务.\n2. _Appointed Block Producer_, 这类节点将会执行 `eos-bios join --validate` 命令，加入 BIOS Boot 的网络，并负责验证 BIOS Boot 的行为.\n3. _other participant_, 将会执行`eos-bios join`加入网络.\n\n以上执行完成以后，所有节点都需要等待`seed_network_launch_block`达成共识.\n\n\n### 练习加入网络\n\n\n让[种子网络](#seed-networks)里面的任何一个人邀请你，他们需要执行:\n\n    ./eos-bios invite [youraccount] [your pubkey]\n\n这条命令会在种子网络中创建一个账号给你，修改你的`my_discovery_file.yaml`:\n\n* `seed_network_account_name`, 需要跟你被邀请的账号一致.\n* `seed_network_http_address`, 你想加入的种子网络的地址.\n\n把你的私钥添加到`privkey.keys`, 因为需要运行发布命令:\n\n    ./eos-bios publish\n\n同时你也需要修改`my_discovery_file.yaml`中的这些值:\n\n* `target_http_address` 你当前正在启动的节点HTTP地址.\n* `target_p2p_address` 你当前正在启动的节点P2P地址.\n* `target_appointed_block_producer_signing_key` and `target_initial_authority`: 这两个是跟你账户相关的授权信息.\n* `seed_network_peers` [点击查看细节](#network-peers)\n\n其他比较重要的字段:\n* `seed_network_launch_block` 种子网络启动时的区块高度.\n* `target_contents` 这里面配置的是我们已经达成共识可以写入链中的内容，比如系统合约，ERC-20快照等等.\n\n\n\n### 练习启动网络\n\n检查你的`my_discovery_file.yaml`,确认没问题运行:\n\n    ./eos-bios boot\n\n这个会测试你的所有`hook_boot_*.sh`.\n\n\n查看种子网络的数据\n-----------------------\n\n如果你的配置文件已经指向了一个种子网络，你可以运行:\n\n    ./eos-bios discover\n\n将会打印出节点的信息, 比如节点权重等.\n\n\n网络同步\n-------------\n\ndiscovery文件中的`seed_network_peers`段落看起来是这样的:\n\n```\nseed_network_peers:\n- account: eosexample\n  comment: \"They are good\"\n  weight: 10  # Weights are between 0 and 100 (INT value)\n- account: eosmore\n  comment: \"They are better\"\n  weight: 20\n```\n这个代表着你同意跟`eosexample`(10%的权重),`eosmore`(20%的权重)一起启动网络,`eos-bios`将会基于这些信息计算出网络结构.\n这两个账户都是种子网络中的。\n\n\n种子网络\n-------------\n\n这个列表是`eos-bios`启动的不同阶段的种子网络，我们会持续更新.\nhttps://stages.eoscanada.com\n\n## 流程化发布中的示例流程和干预\n\n1. 每个人都运行 `eos-bios orchestrate`；\n2. `eos-bios` 会下载`my_discovery_file.yaml`指向的网络拓扑，每个人都一样；\n3. 网络拓扑结构按照人们在`peer`部分投票的方式进行权重排序；\n4. `launch_ethereum_block`取自拓扑结构的前20％：如果他们都同意，会继续使用该数字。 否则，我们等到他们这样做（并周期性地重新绘制网络图）。\n\n安装 / 下载\n------------------\n\n你可以在这里下载到最新的版本: https://github.com/eoscanada/eos-bios/releases 该工具是一个单独的二进制文件，支持主流的操作系统。该工具没有其他依赖，只需被赋予可执行权限，即可运行。\n\n当然，你也可以自行编译（Go 语言）：:\n\n    go get -v github.com/eoscanada/eos-bios/eos-bios\n\n编译成功之后，可执行文件将默认安装到 ~/go/bin 目录下（安装Go请查阅https://golang.org/dl）\n\n\n加入讨论\n-------------------\n\n加入我们的电报群: https://t.me/joinchat/GSUv1UaI5QIuifHZs8k_eA (EOSIO BIOS Boot channel)\n\n以前的想法\n--------------------\n\n可以在README.v0.md找到之前的一些想法.\n\n准备启动前的检查事项\n-------------------\n\n* `target_p2p_address`是否指向我准备要运行的节点?\n* `target_http_address`是否指向我的节点，执行`eos-bios`的节点可以正常连接吗？\n\n\n疑难杂症\n---------------\n\n* `hook_join_network.sh`中的`PRIVKEY`和`PUBKEY`是否跟`discovery_file.yaml`文件中的`target_initial_authority` and `target_initial_block_signing_key`匹配?\n\n* 是否指向了一个旧的P2P地址?如果是的话，请将它从网络中移除。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feoscanada%2Feos-bios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feoscanada%2Feos-bios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feoscanada%2Feos-bios/lists"}