开发者指南|Centrifuge P2P 节点配置和账户创建
共 9108字,需浏览 19分钟
·
2021-08-19 08:46
推荐工具
为了快速熟悉节点,我们建议使用以下两项服务,让您的操作更轻松:
// 通过 Infura 与以太坊交互
为了与以太坊和以太坊测试网 kovan 进行交互,您需要安装相应的节点。为了快速开始,我们建议您使用 Infura 而不是托管您自己的以太坊节点。Infura 是一个 SaaS 平台,提供 API 和开发者工具,以便轻松安全地访问以太坊。换句话说,它是作为区块链网关的核心基础设施。
在此处注册并创建 Infura 帐户:https://infura.io/。创建一个新项目。获取合适的网络 URL。对于 kovan 来说,看起来像这样:wss://kovan.infura.io/ws/v3/XXXXXXXXXX
// Centrifuge 链
为了与 Centrifuge 链进行交互,您可以启动自己的节点并实现网络同步,也可以使用 Centrifuge 提供的公共节点之一:
Mainnet: wss://fullnode.centrifuge.io
Amber: wss://fullnode.amber.centrifuge.io
Flint: wss://fullnode.flint.centrifuge.io
创建一个 Geth 帐户
// 安装 Go Ethereum
在创建新的 go-ethereum (Geth) 帐户之前,您必须安装稳定版本的 Go Ethereum。如何安装它取决于您的操作系统。请按照此处的最新说明进行操作:https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum
// 创建一个新账户
安装最新版本的 Go Ethereum 后,通过以下方式创建一个新的 Geth 帐户:
$ geth account new
新帐户已被密码锁定。请选择一个密码并重复一遍。
Passphrase:
Repeat Passphrase:
Address: {168bc315a2ee09042d83d7c5811b533620531f67}
注意:如果您丢失了密码,您将无法访问该帐户。确保将密码存放在安全的地方。此处没有“忘记密码”选项可用。
创建一个新的 geth 帐户会生成一个存储在 ~/.ethereum/keystore 的密钥文件。对于 MacOS 来说,此密钥文件将在 ~/Library/Ethereum/keystore/ 中生成。
可以通过以下方式随时查找本地生成的以太坊账户:
$ geth account list
您现在可以使用 ETH 为新生成的以太坊账户提供 Fund,以便能够进行交易。
// 通过 Kovan 水龙头为账户提供 Fund
如果您在 Kovan 测试网上进行操作,那么您可以通过 Gitter 发出请求,用虚拟 ETH 为新生成的以太坊帐户提供 Fund:https://gitter.im/kovan-testnet/faucet。您将能够通过 https://kovan.etherscan.io/ 查看 Funds 是否到达。
创建 Centrifuge 链账户
// 安装 Parity Substrate 子钥
在创建新的 Centrifuge 链帐户之前,您必须在此处安装 Parity Substrate Subkey 的一个版本。安装指南建议您查阅:https://github.com/paritytech/substrate/tree/v2.0.0-alpha.3/bin/utils/subkey
// 构建本地二进制文件
下载并安装 rust nightly 版本:
rustup update nightly-2020-02-27
rustup toolchain install nightly-2020-02-27
rustup default nightly-2020-02-27
rustup target add wasm32-unknown-unknown --toolchain nightly-2020-02-27
查阅:https://github.com/paritytech/substrate/tree/v2.0.0-alpha.3
cargo build --release
// 使用 docker 版本
parity/subkey:2.0.0-alpha.3
// 创建一个新账户
主网:
$ subkey --sr25519 --network centrifuge generate
测试网:
$ subkey --sr25519 generate
您现在可以通过在我们的 discord #dev 频道中提出请求来为新生成的 Centrifuge 链帐户提供 Fund。
安装 Centrifuge 节点
在能够传输和锚定财务文件和铸造 NFT 之前,您需要在您的设备上启动一个 Centrifuge 节点。这是个一次性设置。
// 设置 Infura
我们建议设置您自己的 geth 节点:https://docs.centrifuge.io/build/p2p-node/#recommended-tools
为了方便您的初次设置,您可以使用 Infura。注册帐户后,创建一个新项目并选择相应的端点。它将为用户提供以下选项:主网、Kovan(测试网)。
在您的 Infura 仪表板上找到不同以太坊测试网的正确 Infura 链接。选择正确的端点,它将为您提供一个复制到剪贴板的选项。此过程的后续操作中,您将再次需要此链接。
// 安装 Centrifuge 节点
设置完成后,请按照以下步骤安装 Centrifuge 节点:
下载并安装最新的 Centrifuge 二进制文件:https://github.com/centrifuge/go-centrifuge/releases
如果您想从源代码构建节点,请按照源代码中的说明进行操作:https://github.com/centrifuge/go-centrifuge/blob/develop/README.md
将 Centrifuge 二进制文件添加到 PATH 或修改命令调用以指向正确的库。
运行 centrifuge createconfig,如下例所示。此命令会自动创建身份和所需的密钥对。然后生成运行节点所需的 config.yaml 文件。
注意:密钥库 /<KEY-FILE> 中提供的以太坊帐户需要有 ETH 才能执行 centrifuge createconfig 命令。
$ centrifuge createconfig \
-n mainnet \
-t <DEFINE_CONFIG_DIR_NAME> \
-z ~/.ethereum/keystore/<KEY-FILE> \
-e <infura or your own geth url> \
-a 8082 -p 38204 \
--centchainurl <your centchain endpoint> \
--centchainaddr <your ss58 address> \
--centchainid <your public id> \
--centchainsecret <your secret>
将 <KEY-FILE> 替换为您在创建以太坊帐户时获得的密钥文件,将 <DEFINE_CONFIG_DIR_NAME> 替换为您希望存储 config.yaml 文件的位置。请注意,目标方向 -t 应使用绝对路径指定。手动将 https:// 添加到 Infura 链接(见上文)。
运行 createconfig 命令后,系统会询问提供的密钥库 /<KEY-FILE> 文件的密码。如果未设置密码,只需按 Enter。
注意:生成的 config.yaml 包含有关您的以太坊私钥的信息。确保将其存放在安全的地方。
// 为相应的测试网或主网设置您的 Centrifuge 节点 config.yaml
如果要在测试网和主网之间切换,请相应调整以下内容并添加相应的 Infura 链接(见上文)。手动将 https:// 添加到 Infura 链接。
Networks:
Kovan - Flint
-n flint
Kovan - Amber
-n amber
Mainnet
-n mainnet
如果您想使用自己的以太坊或 Centrifuge 节点运行 Centrifuge Chain 节点,请将 Infura 网址替换为您自己的 Geth 和 centrifuge-chain 节点 URL。
// 查找您的 Centrifuge ID
Centrifuge P2P 网络的参与者将通过网络内的身份(Centrifuge ID)进行识别。createconfig 命令会自动创建身份和密钥对。
要通过终端查找您的 Centrifuge ID,请使用:
$ cat /<PATH-TO-CONFIG-DIR>/config.yaml | grep -i 'identityid' | awk '{print $2}'
// 创建 config.yaml 后运行 Centrifuge 节点
在运行您的 Centrifuge 节点之前,您需要添加您的以太坊密钥和密码作为环境变量。以下 bash 命令显示了如何根据 macOS 中的默认以太坊密钥位置,为示例密钥设置变量。
CENT_ETHEREUM_ACCOUNTS_MAIN_KEY=$(cat $HOME/Library/Ethereum/keystore/UTC--2019-04-15T14-43-41.293727000Z--75aecbd0aa7f34207132d686d2a9e470fba2e6e4)
CENT_CENTCHAIN_ACCOUNT_SECRET=<YOUR_CENTCHAIN_SECRET>
CENT_ETHEREUM_ACCOUNTS_MAIN_PASSWORD=<YOUR_PASSWORD>
之后,您可以使用您创建的 config.yaml 文件运行 Centrifuge 节点:
$ centrifuge run -c /<PATH-TO-CONFIG-DIR>/config.yaml
将 PATH-TO-CONFIG-DIR 替换为 config.yaml 文件的位置。
Centrifuge 配置
// 更改默认配置
可在此处访问包含所有可用选项的默认配置。您可以根据您的要求调整某些配置。
通过 NAT 配置节点
如果您希望您的节点可以在您的专用网络之外访问,您将需要手动指定节点的外部 IP:
p2p:
externalIP: "100.111.112.113"
配置通知网钩(用于来自其他对等方的传入数据)
要在与节点共享新文档时接收动态,请在 config.yaml 文件中添加 WebHook 端点:
notifications:
endpoint: "http://localhost:8080/endpoint/"
详细信息,请查阅:https://centrifuge-os-node-api-4.api-docs.io/0.0.6/models/notification-message
以太坊最高 Gas 价格
要调整您愿意为每笔交易支付的最高Gas 价格(以 wei 为单位):
ethereum:
maxGasPrice: "xx000000000"
注意:20 Gwei 为 “20000000000”。
禁用预提交
预提交选项将节点配置为:在请求其他对等方签署消息之前,获取下一个锚定点的锁定状态。会在默认情况下启用此设置。我们不建议禁用它。
anchoring:
precommit: false
// 打开传入 P2P 连接的端口
要接受传入的 P2P 连接,您需要为传入的 TCP 连接打开两个端口。
P2P 端口:打开入口/出口。此端口将在您的配置中的 p2p 端口下配置。
API 端口:随意限制,只有您或您的上游系统需要与之通信。此端口将在您的配置中配置为 nodeport。
安装后验证
为了确保您的 Centrifuge 节点设置成功并正常运行,您可以用 ping 命令测试您的节点。
$ curl -X GET "http://localhost:8082/ping" -H "accept: application/json"
返回状态(例如 Kovan - Amber):
{"version":"...","network":"amber"}
REST API 示例用途
一旦 Centrifuge 节点启动并运行,您就可以开始提交文档并通过 Rest API 标记这些文档。有关端点的完整列表,请参阅 Node API 文档:https://centrifuge-os-node-api-7.api-docs.io/2.0.0
// 认证 Headers
Centrifuge 节点能够维护多个帐户。帐户用于跟踪可能正在使用 Centrifuge 节点的不同用户。我们使用 http 来指定用于给定请求的帐户。
网络配置
除了主网,Centrifuge 还支持以太坊中的 Kovan 测试网。不同测试网的网络配置也是代码库的一部分。这使客户端用户能够以最少的配置在上面运行。您可以在下面找到总结信息。
// Flint - Kovan
该网络是一个测试网,基于以太坊网络 (Kovan) 和 Centrifuge 链 Pos 运行。
Client 端:parity
目的:测试网
引导节点:
/ip4/35.242.230.116/tcp/38202/ipfs/12D3KooWSbxbKCbZh9JVtsQyVGdTPra4RpSA4tbvs6an11jwGA2z
/ip4/35.234.72.127/tcp/38202/ipfs/12D3KooWQm2cSmrEiaSMV4gUv7WGhpgRwo8woFSsHhZGbGi3aA8x
已部署的智能合约:0x1362EcBf8679243E24fA0EC425d2e10A08223c7D
// Amber - Kovan
该网络是一个测试网,基于以太坊网络 (Kovan) 和 Centrifuge 链 Pos 运行。
Client 端:parity
目的:测试网
引导节点:
/ip4/35.242.230.116/tcp/38202/ipfs/12D3KooWSbxbKCbZh9JVtsQyVGdTPra4RpSA4tbvs6an11jwGA2z
/ip4/35.234.72.127/tcp/38202/ipfs/12D3KooWQm2cSmrEiaSMV4gUv7WGhpgRwo8woFSsHhZGbGi3aA8x
已部署的智能合约:
0x1362EcBf8679243E24fA0EC425d2e10A08223c7D
// Mainnet
Client 端:geth | parity
目的:主网
引导节点:
/ip4/35.198.122.117/tcp/38202/ipfs/12D3KooWAg3EcAtrYVCxwz6k6sT9iZSRztz9D7yUzpBPREFzrUoV
/ip4/35.242.221.111/tcp/38202/ipfs/ 12D3KooWKGwixXenuXAVqkJKmnHSAJDjzf7eGMo6troigZxm7A5R
已部署的智能合约:
0xAF456c16386a64fd4F4b69af13a86Df0B562Aa00
免责声明
// Centrifuge 原样提供
“软件”,包括但不限于 Centrifuge 组件的源代码、相关存储库、客户端实现、用户界面、编译、部署的二进制文件和智能合约及其所有组件、库、支持服务(包括但不限于构建管道、测试、部署、“启动节点”、代码示例、集成)均“按原样”提供,不提供任何类型的明示或暗示保证,包括但不限于适销性、适用性的保证。
在任何情况下,作者、维护者、运营商或版权所有者均不对因软件或使用软件导致的其他交易负责。
Centrifuge 及其所有组件均为 Beta 软件,这可能会导致未来发生重大变化、重新架构、添加和删除功能以及其他突发行为。使用风险请自负。
协议限制
Centrifuge 正处于发展的早期阶段。与最终愿景相比,该协议及其第一个客户端实现的功能有限。Centrifuge 尚未实现所有功能,并且需要在安全性、速度、最终用户功能和协议灵活性之间不断权衡。
以下是 Centrifuge 的重要限制点和尚未实现功能的列表。
// 签名的意义
当两个 Centrifuge 节点相互交换文档时,它们会在验证数据有效负载和签名/密钥后,自动将签名附加到传输的文档中。从商业角度来看,Centrifuge 本身不会验证文档数据是否有意义。
Centrifuge 节点是 Centrifuge 的技术客户端。该客户端通过众所周知的格式进行交换和签署数据。Centrifuge 不会验证文档数据的真实性。
数据的真实性和正确性始终由上游系统验证。例如,与 Centrifuge 节点交互的会计系统。
可以将附加签名添加到文档(具有自定义属性等)以指示文档的“业务协议”。然而,这不是协议规范的一部分,而是上游系统的责任。
// 协作者列表对所有协作者可见
重要提示:文档之外的任何人都无法查看或推断协作处理文档的人员。
但是,任何单个文档的协作者列表对该文档的所有协作者都是可见的。这是实现协同工作的一部分,同时会在锚定新状态时从文档上的所有协作者那里收集签名。为此,在进行更新时必须知道合作者列表。
在初始实施阶段,我们假设企业仅会将其已知和信任的业务合作伙伴作为协作者添加到文档中。
// 无文档分叉
Centrifuge 不支持分叉或连续合并文档状态。如果协作者之间存在文档状态不一致,则必须由用户通过创建新文档来解决。
如果合作者选择这样做,他们可以在给定的文档更新中保留他们的签名。对此行为的缓解是从文档的合作者列表中移除离线合作者并重新发布文档更新,然后基于原始文档数据与一组新的合作者创建新文档。
在初始实施阶段,我们假设企业仅会将其已知和信任的业务合作伙伴作为协作者添加到文档中。因此,出现分歧的可能性很低。
// 阻止恶意合作者的文档更新
恶意合作者可能会发布新的文档版本,阻止其他合作者更新原始文档。这可以由恶意合作者通过从原始文档中删除所有合作者,然后发布具有“下一个标识符”的新版本来完成,进而从根本上防止其他合作者发布具有该标识符的文档的新版本。
中期阶段,将通过支持文档分叉来缓解这一矛盾。短期内缓解途径如上所述:用户可以使用最后一个良性文档数据创建一个新文档,并且不把恶意行为者作为合作者添加到文档中。这将创建一个新的文档更新链,恶意合作者既不能访问也不能阻止。
在初始实施阶段,我们假设企业仅会将其已知和信任的业务合作伙伴作为协作者添加到文档中。因此,恶意行为者试图阻止文档更新的可能性很低。
// 通过“事故”/ 竞争条件阻止文档更新
两个或多个协作者可以尝试同时更新文档。通过的“第一个”更新(第一个被锚定版本)实质上阻止了另一个更新所需的文档版本。
缓解措施是始终启用“预提交”。中期阶段也可以通过支持文档分叉 / 合并来缓解。
//无需合作者签名即可锚定
任何协作者都可以随时锚定新的文档版本。锚定 / 发布新的文档版本不需要前合作者的签名。这不是一种限制,而是一种防止恶意合作者通过拒绝签名来阻止文档功能的机制。
中期阶段可以添加需要 x of n 签名方案的功能,其中需要特定阈值的协作者签名来锚定新状态。目前,任何人都可以发布文档的新版本。
项目简介
Centrifuge 将现实世界的 Assets 实现 Tokenization,例如发票、房屋 Mortgage 或已交付的商品,并将其放置在区块链上。Centrifuge 使用户可以通过抵押这些 Assets 来获得 Loan,从而开辟一种新的 Fiancing 途径。Centrifuge 基于波卡网络以提高速度,并桥接到以太坊以获取 DeFi 流动性,因此可以为 DeFi 注入数万亿美元的现实世界的 Asstes 价值。
直播预告:
本周四(8 月 19 日)晚 7 点,PolkaWorld 视频号直播准时开播,本期邀请到了 Astar 中国区代表 sms 为大家讲解 Shiden 平行链上线后的进展。点击下方按钮立即预约。
欢迎学习 Substrate:
https://substrate.dev/
关注 Substrate 进展:
https://github.com/paritytech/substrate
关注 Polkadot 进展:
https://github.com/paritytech/polkadot
更多内容:
W3F Grant 更新:申请指南、评审标准、金额等级...
波卡周报 | Polkadot 最低提名金额将增加到 80 DOT!
Karura & Kusama 完成首次 XCM 跨链「通用消息」传递
扫码关注公众号,回复 “1” 加入波卡群
关注 PolkaWorld
发现 Web 3.0 时代新机遇
点个 “在看” 再走吧!