9 个版本

0.20.8 2024年5月14日
0.20.7 2023年3月28日
0.20.2 2023年2月27日

4#mel

每月 49 次下载

MPL-2.0 许可证

165KB
1.5K SLoC

melnode: Mel 的参考实现

Mel 是一个专注于安全、性能和长期稳定的全新公共区块链。 melnode 是 Rust 中的 Mel 参考实现。

安装

出于安全原因,在我们拥有可靠的重复构建基础设施之前,melnode 的唯一官方分发渠道是其源代码包在 crates.io

幸运的是,从源代码安装 melnode 非常简单。首先,确保你的机器上安装了 cargo。然后,只需运行

$ cargo install --locked melnode

这将生成一个可执行文件 melnode~/.cargo/bin/,它应该已经在你的 $PATH 中。

硬件要求

最小

  • 1 核心CPU
  • 4GB 的RAM
  • 至少200GB的空闲存储(SSD不是必需的)
  • 10 Mbit/sec的下载互联网服务
  • 4+ 核心CPU
  • 16GB 的RAM
  • 在快速设备上200+GB的空闲存储(SSD,RAID阵列等)
  • 50+ Mbit/sec的上/下载互联网服务

完整节点复制每个共识确认的区块,验证其内容并确保网络安全,同时提供整个区块链状态的本地缓存。运行完整节点有助于提高网络的安全性和(读取)性能。

有两种类型的完整节点

  • 副本节点 占据了完整节点的绝大多数。它们复制和验证区块,但不参与共识投票。
  • 抵押节点 是 Mel 安全性的最终守护者,将 SYM 锁定并参与共识。它们类似于比特币等工作量证明区块链中的矿工。

审计完整节点

在 Mel 主网上

要在“主网”(目前还不稳定,但确实有持久的历史)上运行副本,只需运行

$ melnode

melnode 将开始同步区块链中的所有区块。这可能需要相当长的时间(大约一天)并将大量数据存储在 ~/.melnode/ 中。

在 Mel 测试网中

要在非持久的测试网上运行副本,在 betanet 期间大多数契约开发和测试将在此发生,请运行以下命令:

$ melnode --bootstrap tm-1.themelio.org:11814 --testnet

请注意,连接到测试网需要两件事:

  • 连接到测试网引导节点(这是您的完整节点首次通信的服务器)
  • 指定 --testnet,以使用测试网验证规则

配置

您可以使用以下标志更改副本节点的配置:

--bootstrap <bootstrap>...
            Bootstrap addresses. May be given as a DNS name [default: mainnet-bootstrap.themelio.org:11814]

--database <database>                        Database path [default: /tmp/themelio-mainnet]

--listen <listen>                            Listen address

--testnet                                    Use testnet validation rules

--override-genesis <override-genesis>
            If given, uses this YAML file to configure the network genesis rather than following the known
            testnet/mainnet genesis

本地 simnet 支持

注意:很快将有一个工具可以自动生成这些配置。

我们可以通过以下三个选项的组合配置一个 simnet —— 一种位于我们计算机本地的“虚假”网络:

  • --bootstrap 127.0.0.1:11814 仅与自身引导,而不是任何远程节点

  • --override-genesis network-config.yaml,其中 custom-config.yaml 包含以下形式的 自定义网络 配置

    network: custom02 # anything from custom02..custom08
    # specifies the "initial stash" of money in the genesis block
    init_coindata:
      # what address gets the initial supply of money
      covhash: t5xw3qvzvfezkb748d3zt929zkbt7szgt6jr3zfxxnewj1rtajpjx0
      # how many units (in millionths)
      value: 1000000
      # denomination
      denom: MEL
      # additional data in the UTXO, as a hex string
      additional_data: ""
    # specifies all the stakers with consensus power.
    # we need to specify ourselves in order to produce any blocks; "themelio-crypttool generate-ed25519" (install via cargo) can generate a keypair for us
    stakes:
      deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef:
        pubkey: 4ce983d241f1d40b0e5b65e0bd1a6877a35acaec5182f110810f1276103c829e
        e_start: 0
        e_post_end: 100000 # essentially never end the stake
        syms_staked: 10000 # does not matter
    # Initial fee pool
    init_fee_pool: 10000
    # Initial fee multiplier
    init_fee_multplier: 1
    
  • --staker-cfg staker-config.yaml 必须包含如下的 staker 配置

    # secret key; must correspond to "stakes.dead[...]beef.pubkey" in the network config
    signing_secret: 5b4c8873cbdb089439d025e9fa817b1df1128231699131c245c0027be880d4d44ce983d241f1d40b0e5b65e0bd1a6877a35acaec5182f110810f1276103c829e
    # address for staker-network communication, this can be arbitrary
    listen: 127.0.0.1:20000
    # must be same as "listen"
    bootstrap: 127.0.0.1:20000
    # where block rewards are sent
    payout_addr: t5xw3qvzvfezkb748d3zt929zkbt7szgt6jr3zfxxnewj1rtajpjx0
    # vote for this fee multiplier (higher values charge more fees)
    target_fee_multiplier: 10000
    

--staker-cfg 的更详细解释需要解释 staker 和共识系统,如下所述:

Staker 全节点

在 Mel 主网上

待定

在 Mel 测试网中

待定

配置

待定

贡献

感谢您考虑为 Mel 源代码做出贡献!我们欢迎来自互联网上任何人的所有贡献。

对于小改动,只需分支、修复并提交一个拉取请求。如果您想提出更大的更改,请务必与我们开发团队在 Discord 上取得联系,以确保您的更改符合 Mel 的总体理念。这可能会为您节省大量的时间和精力,并加快您更改的审查过程。

最后,确保您的代码遵循以下指南:

  • 您的代码必须遵循官方 Rust 风格指南
  • 您的代码必须遵循官方 Rust 文档指南
  • 拉取请求必须基于并针对 master 分支
  • 提交信息必须具有描述性
  • 任何协议更改(无论是否破坏共识)都必须从一个 TIP(例如 TIP-101)开始

许可证

本项目的许可证是 Mozilla 公共许可证,版本 2。


依赖项

53–94MB
~1.5M SLoC