tree ./testnet/ -L 2
./testnet/
├── control_all.sh
├── node1
│ ├── bin
│ ├── conf
│ ├── control.sh
│ └── data
├── node2
│ ├── bin
│ ├── conf
│ ├── control.sh
│ └── data
└── node3
├── bin
├── conf
├── control.sh
└── data
在node1目录生成所需账户:
cd testnet/node1
./bin/ychain-cli ethAccount./bin/ychain-cli ethAccount generate
输出内容类似如下:
Saved private key to file: ./data/keys/eth.account
Address: 0x6Fa4322CfF52265b3049e823C388797Ef1308cb9
Public key: 041d7519bca41832866aa501215e6fc0a6cd4153c0cfe54a91468a446df246763a12941fa75c9dc4e974c2670e45deddcb8b9702c44dcf5812bc934a823fd21b20
Compress public key: 0x021d7519bca41832866aa501215e6fc0a6cd4153c0cfe54a91468a446df246763a
Yogurt
Yogurt 分为三个部分,BLS、信标链和执行层链。使用时需要根据需要编译所需部分。
编译部署
环境准备
编译
执行层
执行层为基于 go-ethereum 的交易执行网络,完全兼容以太坊生态,编译方式如下:
完成后将看到 geth/build/bin/geth 文件。
信标链层
信标链层作为 Yogurt 网络的共识基础层,需要编译 BLS 以及 ychain: 需要先下载 https://github.com/OpenAtomFoundation/xupercore/tree/global 代码,在 global 分支上,执行后续操作。
BLS 动态链接库编译:
编译成功后将在 crypto-rust/x-crypto-ffi/lib 下看到 libxcrypto.so 或 libxcrypto.dylib,将此文件拷贝到 /usr/local/lib 目录下。
linux 下可能需要配置动态链接库路径(根据本地环境按需配置)
示例:
添加如下内容:
推出 vim 后执行:
检查是否生效:
然后编译 ychain
成功后应看到类似如下内容:
部署测试网络
以下示例为本地测试网络搭建,如果部署正式环境需重新生成节点的公私钥、账户地址等。
整个网络包括信标链网络以及执行层网络,信标链网络有多个 ychain 节点组成,执行层网络由多个 geth 网络组成,同时两个网络之间需要配置相关公钥、地址等。
部署信标链测试网络
执行如下命令生成三个测试网络节点:
应看到如下内容:
在node1目录生成所需账户:
输出内容类似如下:
记录好输出信息,Compress public key 后面会用到。
将生成的 eth.account 拷贝到 node2 和 node3 目录下:
启动三个节点:
部署执行层网络
执行层网络基于 geth,其他使用方式请参考:https://geth.ethereum.org/docs
先进入 geth 代码库目录下:
geth 网络搭建可以参考 Clique 共识网络搭建:https://geth.ethereum.org/docs/fundamentals/private-network
不同点在于创世文件需改成如下:
和 Clique 不同配置说明:
./bin/ychain-cli ethAccount./bin/ychain-cli ethAccount generate生成的公钥,每次生成的都不一样,需要根据本地生成为主,将 Compress public key 配置到此处。其他步骤参考 https://geth.ethereum.org/docs/fundamentals/private-network
信标链配置执行层节点
执行层启动前,需要将执行层节点矿工的地址配置到信标链网络,因此在搭建执行此网络时,需要记录矿工的地址。
然后执行如下命令:
执行成功后,启动执行层 geth 节点即可。
转账、部署合约、调用合约等交易都需要发送到执行层网络,可以使用 metamask、remix 等工具操作。