Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eoscanada/eos-bios
DEPRECATED: use `eosc boot` now. Historically: Orchestrator for a decentralized EOS.IO blockchain network boot
https://github.com/eoscanada/eos-bios
blockchain eos eosio
Last synced: 3 months ago
JSON representation
DEPRECATED: use `eosc boot` now. Historically: Orchestrator for a decentralized EOS.IO blockchain network boot
- Host: GitHub
- URL: https://github.com/eoscanada/eos-bios
- Owner: eoscanada
- License: mit
- Archived: true
- Created: 2018-03-08T21:50:23.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-06-11T20:07:48.000Z (over 5 years ago)
- Last Synced: 2024-06-18T21:39:47.843Z (5 months ago)
- Topics: blockchain, eos, eosio
- Language: C
- Homepage: https://eosc.app
- Size: 18.2 MB
- Stars: 172
- Watchers: 30
- Forks: 61
- Open Issues: 1
-
Metadata Files:
- Readme: README-cn.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
基于EOS.IO的区块链网络启动工具
--------------------------------------------------------#### v1.0 ZhaoYu from EosLaoMao
#### v2.0 Ian(Yahuang Wu) from MEET.ONE#### v2.1 Tyee Noprom from EOSpace.io
[Click me switch to English version](./README.md)
`eos-bios` 是一个命令行工具,给那些想要启动基于EOS.IO的区块链网络的人而准备.
它提供以下功能:
* 主网分阶段启动
* 启动本地开发环境Booting local development environments
* 启动测试环境Booting testnets
* 启动联合网络或者私有网络首先你需要知道的是**discovery protocol**. 点击这个链接可以看到介绍:
[![The Disco Dance](https://i.ytimg.com/vi/8aNZ_ZnKS-A/hqdefault.jpg?sqp=-oaymwEZCNACELwBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLCZeGSGv9Qix8mHX77R4-d0rzDkgA)](https://youtu.be/8aNZ_ZnKS-A)
https://youtu.be/8aNZ_ZnKS-A
[点击查看示例配置](./sample_config)
下列 **视频** 解释了`eos-bios`的其他概念:
| 备注 | 链接 |
| ------------ | ---------------------------: |
| 发现文件的细节 | https://youtu.be/uE5J7LCqcUc |
| 网络划分算法 | https://youtu.be/I-PrnlmLNnQ |
| 启动顺序 | https://youtu.be/SbVzINnqWAE |
| 代码审查核心流程 | https://youtu.be/p1B6jvx25O0 |
| 与您的基础设施集成的钩子 | https://youtu.be/oZNV6fUoyqM |`eos-bios`的一些问答视频:
| 备注 | 链接 |
| ------------------ | ---------------------------: |
| 账号是否从一个阶段延续到另一个阶段? | https://youtu.be/amyMm5gVpLg |
| 出块节点如何就链的内容达成一致? | https://youtu.be/WIR7nab40qk |### 本地开发环境
-----------------------------[点击下载`eos-bios`](https://github.com/eoscanada/eos-bios/releases),
克隆当前仓库并且复制 `sample_config` 文件夹到新的目录修改 `my_discovery_file.yaml` 文件,把target_http_address指向本地地址:
```
target_http_address: http://localhost:8888
```然后运行:
./eos-bios boot --single
这个命令会在你本地运行一个完整的开发环境,包含所有的系统合约,跟你在主网启动时的环境很类似.
这个示例配置启动了一个单节点,同时它不会指向其他的出块候选节点.
### 社区协作启动网络
------------------------------启动社区网络的时候,*每个人*都需要执行:
./eos-bios orchestrate
根据特定算法和各个节点提供的 discovery 文件,各个节点将会被自动赋予相应的角色:
1. _BIOS Boot node_, 该节点将单独执行 `eos-bios boot` 命令,完成系统合约的部署,快照的导入,EOS 代币的分配等任务.
2. _Appointed Block Producer_, 这类节点将会执行 `eos-bios join --validate` 命令,加入 BIOS Boot 的网络,并负责验证 BIOS Boot 的行为.
3. _other participant_, 将会执行`eos-bios join`加入网络.以上执行完成以后,所有节点都需要等待`seed_network_launch_block`达成共识.
### 练习加入网络
让[种子网络](#seed-networks)里面的任何一个人邀请你,他们需要执行:
./eos-bios invite [youraccount] [your pubkey]
这条命令会在种子网络中创建一个账号给你,修改你的`my_discovery_file.yaml`:
* `seed_network_account_name`, 需要跟你被邀请的账号一致.
* `seed_network_http_address`, 你想加入的种子网络的地址.把你的私钥添加到`privkey.keys`, 因为需要运行发布命令:
./eos-bios publish
同时你也需要修改`my_discovery_file.yaml`中的这些值:
* `target_http_address` 你当前正在启动的节点HTTP地址.
* `target_p2p_address` 你当前正在启动的节点P2P地址.
* `target_appointed_block_producer_signing_key` and `target_initial_authority`: 这两个是跟你账户相关的授权信息.
* `seed_network_peers` [点击查看细节](#network-peers)其他比较重要的字段:
* `seed_network_launch_block` 种子网络启动时的区块高度.
* `target_contents` 这里面配置的是我们已经达成共识可以写入链中的内容,比如系统合约,ERC-20快照等等.### 练习启动网络
检查你的`my_discovery_file.yaml`,确认没问题运行:
./eos-bios boot
这个会测试你的所有`hook_boot_*.sh`.
查看种子网络的数据
-----------------------如果你的配置文件已经指向了一个种子网络,你可以运行:
./eos-bios discover
将会打印出节点的信息, 比如节点权重等.
网络同步
-------------discovery文件中的`seed_network_peers`段落看起来是这样的:
```
seed_network_peers:
- account: eosexample
comment: "They are good"
weight: 10 # Weights are between 0 and 100 (INT value)
- account: eosmore
comment: "They are better"
weight: 20
```
这个代表着你同意跟`eosexample`(10%的权重),`eosmore`(20%的权重)一起启动网络,`eos-bios`将会基于这些信息计算出网络结构.
这两个账户都是种子网络中的。种子网络
-------------这个列表是`eos-bios`启动的不同阶段的种子网络,我们会持续更新.
https://stages.eoscanada.com## 流程化发布中的示例流程和干预
1. 每个人都运行 `eos-bios orchestrate`;
2. `eos-bios` 会下载`my_discovery_file.yaml`指向的网络拓扑,每个人都一样;
3. 网络拓扑结构按照人们在`peer`部分投票的方式进行权重排序;
4. `launch_ethereum_block`取自拓扑结构的前20%:如果他们都同意,会继续使用该数字。 否则,我们等到他们这样做(并周期性地重新绘制网络图)。安装 / 下载
------------------你可以在这里下载到最新的版本: https://github.com/eoscanada/eos-bios/releases 该工具是一个单独的二进制文件,支持主流的操作系统。该工具没有其他依赖,只需被赋予可执行权限,即可运行。
当然,你也可以自行编译(Go 语言)::
go get -v github.com/eoscanada/eos-bios/eos-bios
编译成功之后,可执行文件将默认安装到 ~/go/bin 目录下(安装Go请查阅https://golang.org/dl)
加入讨论
-------------------加入我们的电报群: https://t.me/joinchat/GSUv1UaI5QIuifHZs8k_eA (EOSIO BIOS Boot channel)
以前的想法
--------------------可以在README.v0.md找到之前的一些想法.
准备启动前的检查事项
-------------------* `target_p2p_address`是否指向我准备要运行的节点?
* `target_http_address`是否指向我的节点,执行`eos-bios`的节点可以正常连接吗?疑难杂症
---------------* `hook_join_network.sh`中的`PRIVKEY`和`PUBKEY`是否跟`discovery_file.yaml`文件中的`target_initial_authority` and `target_initial_block_signing_key`匹配?
* 是否指向了一个旧的P2P地址?如果是的话,请将它从网络中移除。