# 加密狗整编空投第132篇：Massa Network 3月节点挖矿教程（20.XX） - 加密狗 - Medium

By [wowto](https://paragraph.com/@wowto-2) · 2023-04-17

---

![](https://storage.googleapis.com/papyrus_images/4d0e734023c1f445b311682c6dfcf421daff9e1bf39369a6c5eef3977455ad87.webp)

Massa 是Layer 1网络，旨在通过自主智能合约和其他创新解决方案解决著名的三难困境，从而颠覆区块链行业。该项目背后的团队从 2017 年开始默默建设，直到去年才公开发布 Massa 测试网。

Massa 协议背后的公司 Massa Labs 由 Sébastien Forestier、Damir Vodenicarevic 和 Adrien Laversanne-Finot 这三位朋友于 2020 年创立。Forestier在人工智能方面有专长，是公司的CEO；Vodenicarevic 是一名理论物理学家，领导开发和技术团队；而 Laversanne-Finot 拥有人工智能方面的经验并领导公司的战略。

2020 年 2 月，Massa Labs 发表了一篇题为[_Blockclique_](https://arxiv.org/pdf/1803.09029.pdf)_：通过多线程块图中的事务_分片扩展区块链的技术论文，详细介绍了区块链如何在不牺牲安全性或去中心化的情况下进行扩展。

2021 年 11 月，该公司筹集了 580 万美元用于私人种子轮融资，有 100 多个个人和实体参与。

**该项目每月发布新的版本**，测试网将一直运行到主网上线，目前开发到第20版，该团队的目标是在2023 年上半年推出。

本教程主要介绍如何在 Massa Network 上运行节点并加入激励测试网，获得奖励和收益。

二、往期节点挖矿教程
----------

三、教程前
-----

建议使用云主机+SSH工具挖矿，配置如下

CPU：4vCore

内存：8 GB

SDD：60GB

操作系统：Ubuntu 20.04

这种方法需要你租用VPS或者机场作为云主机，云主机请切换成Ubuntu系统；

SSH工具：小白用户建议使用Xshell或者Finalshell

官方指令：

四、如何连接到 VPS
-----------

**MacOs**：如果你用的是这个操作系统，你只需要用自己的设备与 SSH 连接；

**Windows：如果你是Win，有很多工具可以用，比如**[**putty**](https://www.putty.org/) **、**[**MobaXterm**](https://mobaxterm.mobatek.net/)、[**Xshell**](https://www.netsarang.com/en/xshell/)

1、下载一个应用（本教程以**putty**为例，小白用户建议使用Xshell或Finalshell）

2、复制云服务器IP链接

![](https://storage.googleapis.com/papyrus_images/2105daa31ff5ce825d926cd4e543ce829ba34fed208855525d882d63b96d9c0d.webp)

3、点击“接受”，输入云服务器的用户名和密码

**注意：要粘贴你已经复制的任何命令，只需右键单击要粘贴命令即可**

![](https://storage.googleapis.com/papyrus_images/e5475c29b6500996da721351496aa18370ee052620bb22d61a9b8ccea7e1dffb.webp)

4、再次输入密码，并输入新密码。

以上就是云服务器+SSH组合的步骤，下文所有步骤都在SSH工具中进行（小白用户建议使用Xshell或Finalshell）

五、挖矿前准备
-------

**记得对照图片填，有时我可能会写错代码；记得Root服务器。**

**1、更新升级服务器**

在开始之前，需要**更新**和**升级**服务器，将一下命令符复制到SSH工具中，回车（小白用户建议使用Xshell或Finalshell）

    sudo apt update && apt upgrade -y
    

![](https://storage.googleapis.com/papyrus_images/5dd45726e2d17ec0e3d84e43aa72f31fe72277af10caa847ef1f7228be64333d.webp)

![](https://storage.googleapis.com/papyrus_images/32c0a791267e9eb7fbce52c656974e99755666ff10ed56aea75d8af23211a52d.webp)

    apt-get install libclang-dev
    

> _当要求按_\*\*\*Y时，请输入Y，\*\*\*_然后回车_

使用以下命令安装所需的库：

    sudo apt install pkg- config curl git build-essential libssl-dev
    

![](https://storage.googleapis.com/papyrus_images/3ea114df187327f85a2c88f71e32f01a500213152ce654220c8effe19b4806d1.webp)

> _按_**_Y_**_，然后按_**_ENTER_**

![](https://storage.googleapis.com/papyrus_images/c4bb37a4eb301e0f641ff0269596e2d57ff84c4aee41e673bdcc476974821b29.webp)

安装 RUST：

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
    

![](https://storage.googleapis.com/papyrus_images/aa46301e692451764dc22a5697ae5f8af74a66383006a781426ca7e8dda3726d.webp)

很多人在这里会出错，如果安装后在一分钟内没有开始（如上图所示），**请重新输入相同的命令**，它应该可以继续运行

    source $HOME/.cargo/env
    

安装nightly：

**输入指令后，如果在一分钟内还没有安装**（如上图所示），**请重新输入相同的命令**，它应该可以工作

![](https://storage.googleapis.com/papyrus_images/b3a6cbe2b6998745e114199680d443df7d71031474e7b4d04f31a303c2bd18d4.webp)

将nightly设置为默认值：

    rustup default nightly
    

六、安装节点
------

**下载节点**

    CD  $HOME
    

![](https://storage.googleapis.com/papyrus_images/aad5db6425dd03aff116c8b451bc95926c7e518bf69bd14f9f9361e0b1b79e61.webp)

然后继续输入以下指令

    git clone --branch testnet https://github.com/massalabs/massa.git
    

![](https://storage.googleapis.com/papyrus_images/f03eb01da7667f94b89216928dd70a93cbbf48f030f0d7d547a58a599ac89eb0.webp)

启用 IPV6

七、配置节点和客户端
----------

节点配置：

    sudo nano massa/massa-node/config/config.toml
    

![](https://storage.googleapis.com/papyrus_images/fa0af8efc70363be8f20ea6b31082af64605b36a3aa15344b20a344493d1e60f.webp)

在窗口中粘贴以下信息：

    [logging]
        # Logging level. High log levels might impact performance. 0: ERROR, 1: WARN, 2: INFO, 3: DEBUG, 4: TRACE
        level = 2
    

    [api]
        # max number of future periods considered during requests
        draw_lookahead_period_count = 10
        # port on which the node API listens for admin and node management requests. Dangerous if publicly exposed. Bind to "[::1]:port" if you want to access the node from IPv6.
        bind_private = "127.0.0.1:33034"
        # port on which the node API listens for public requests. Can be exposed to the Internet. Bind to "[::]:port" if you want to access the node from IPv6.
        bind_public = "0.0.0.0:33035"
        # port on which the node API(V2) listens for HTTP requests and WebSockets subscriptions. Can be exposed to the Internet. Bind to "[::]:port" if you want to access the node from IPv6.
        bind_api = "0.0.0.0:33036"
        # max number of arguments per RPC call
        max_arguments = 128
        # path to the openrpc specification file used in `rpc.discover` method
        openrpc_spec_path = "base_config/openrpc.json"
        # maximum size in bytes of a request
        max_request_body_size = 52428800 
        # maximum size in bytes of a response
        max_response_body_size = 52428800
        # maximum number of incoming connections allowed
        max_connections = 100
        # maximum number of subscriptions per connection
        max_subscriptions_per_connection = 1024
        # max length for logging for requests and responses. Logs bigger than this limit will be truncated
        max_log_length = 4096
        # host filtering
        allow_hosts = []
        # whether batch requests are supported by this server or not
        batch_requests_supported = true
        # the interval at which `Ping` frames are submitted in milliseconds
        ping_interval = 60000
        # whether to enable HTTP.
        enable_http = true
        # whether to enable WS.
        enable_ws = false[execution]
        # max number of generated events kept in RAM
        max_final_events = 10000
        # maximum length of the read-only execution requests queue
        readonly_queue_length = 10
        # by how many milliseconds shoud the execution lag behind real time
        # higher values increase speculative execution lag but improve performance
        cursor_delay = 2000
        # duration of the statistics time window in milliseconds
        stats_time_window_duration = 60000
        # maximum allowed gas for read only executions
        max_read_only_gas = 100_000_000
        # gas cost for ABIs
        abi_gas_costs_file = "base_config/gas_costs/abi_gas_costs.json"
        # gas cost for wasm operator
        wasm_gas_costs_file = "base_config/gas_costs/wasm_gas_costs.json"
        # max number of compiled modules in the cache
        max_module_cache_size = 1000[ledger]
        # path to the initial ledger
        initial_ledger_path = "base_config/initial_ledger.json"
        # path to the disk ledger db directory
        disk_ledger_path = "storage/ledger/rocks_db"
        # length of the changes history. Higher values allow bootstrapping nodes with slower connections
        final_history_length = 100[consensus]
        # max number of previously discarded blocks kept in RAM
        max_discarded_blocks = 100
        # if a block is at least future_block_processing_max_periods periods in the future, it is just discarded
        future_block_processing_max_periods = 100
        # max number of blocks in the future kept in RAM
        max_future_processing_blocks = 400
        # max number of blocks waiting for dependencies
        max_dependency_blocks = 2048
        # number of final periods that must be kept at all times (increase to more resilience to short network disconnections, high values will increase RAM usage.)
        force_keep_final_periods = 10    # max milliseconds to wait while sending an event before dropping it
        max_send_wait = 0
        # useless blocks are pruned every block_db_prune_interval ms
        block_db_prune_interval = 5000    # considered timespan for stats info
        stats_timespan = 60000
        # max number of item returned per query
        max_item_return_count = 100    # blocks headers sender(channel) capacity
        broadcast_blocks_headers_capacity = 128
        # blocks sender(channel) capacity
        broadcast_blocks_capacity = 128
        # filled blocks sender(channel) capacity
        broadcast_filled_blocks_capacity = 128[protocol]
        # timeout after which without answer a hanshake is ended
        message_timeout = 5000
        # timeout after whick we consider a node does not have the block we asked for
        ask_block_timeout = 10000
        # max cache size for which blocks our node knows about
        max_known_blocks_size = 1024
        # max cache size for which blocks a foreign node knows about
        max_node_known_blocks_size = 1024
        # max cache size for which blocks a foreign node asked for
        max_node_wanted_blocks_size = 1024
        # max number of blocks we can ask simultaneously per node
        max_simultaneous_ask_blocks_per_node = 128
        # max milliseconds to wait while sending an event before dropping it
        max_send_wait = 0
        # max cache size for which operations your node knows about
        max_known_ops_size = 2000000
        # max cache size for which operations a foreign node knows about
        max_node_known_ops_size = 200000
        # max cache size for which endorsements our node knows about
        max_known_endorsements_size = 2048
        # max cache size for which endorsements a foreign node knows about
        max_node_known_endorsements_size = 2048
        # maximum number of batches in the memory buffer.
        # dismiss the new batches if overflow
        operation_batch_buffer_capacity = 10024
        # immediately announce ops if overflow
        operation_announcement_buffer_capacity = 2000
        # start processing batches in the buffer each `operation_batch_proc_period` in millisecond
        operation_batch_proc_period = 500
        # all operations asked are prune each `operation_asked_pruning_period` millisecond
        asked_operations_pruning_period = 100000
        # interval at which operations are announced in batches.
        operation_announcement_interval = 300
        # max number of operation per message, same as network param but can be smaller
        max_operations_per_message = 1024
        # time threshold after which operation are not propagated
        max_operations_propagation_time = 32000
        # time threshold after which endorsement are not propagated
        max_endorsements_propagation_time = 48000[network]
        # port on which to listen for protocol communication
        bind = "[::]:31244"
        # port used by protocol
        protocol_port = 31244
        # timeout for connection establishment
        connect_timeout = 3000
        # attempt a connection to available peers when needed every wakeup_interval milliseconds
        wakeup_interval = 5000
        # path to the local peers storage file
        peers_file = "storage/peers.json"
        # path to the initial peers file
        initial_peers_file = "base_config/initial_peers.json"
        # max number of inbound connections per ip
        max_in_connections_per_ip = 5
        # max number of stored idle peers
        max_idle_peers = 10000
        # max number of stored banned peers
        max_banned_peers = 100
        # max number of advertized peers
        max_advertise_length = 5000
        # peers are dumped to file every peers_file_dump_interval milliseconds
        peers_file_dump_interval = 30000
        # max size of sent messages
        max_message_size = 1048576000
        # timeout when waiting for a message from a foreign node
        message_timeout = 5000
        # interval in milliseconds for asking peer lists from peers we are connected to
        ask_peer_list_interval = 600000
        # path to the node key (not the staking key)
        keypair_file = "config/node_privkey.key"
        # max number of asked blocks per message
        max_ask_blocks_per_message = 128
        # max number of operations per message
        max_operations_per_message = 1024
        # max number of endorsements per message
        max_endorsements_per_message = 1024
        # max milliseconds to wait while sending a node event before dropping it
        max_send_wait_node_event = 5_000
        # max milliseconds to wait while sending a network event before dropping it
        max_send_wait_network_event = 0
        # we forget we banned a node after ban_timeout milliseconds
        ban_timeout = 3600000
        # timeout duration when in handshake we respond with a PeerList
        # (on max in connection reached we send a list of peers)
        peer_list_send_timeout = 100
        # max number of in connection overflowed managed by the handshake
        # that send a list of peers
        max_in_connection_overflow = 100
        # read limitation for a connection in bytes per seconds
        max_bytes_read = 20_000_000.0
        # write limitation for a connection in bytes per seconds
        max_bytes_write = 20_000_000.0    [network.peer_types_config]
        Standard = { target_out_connections = 10, max_out_attempts = 10, max_in_connections = 15}
        Bootstrap = { target_out_connections = 1, max_out_attempts = 1, max_in_connections = 1}
        WhiteListed = { target_out_connections = 2, max_out_attempts = 2, max_in_connections = 3}[bootstrap]
        # list of bootstrap (ip, node id)
        bootstrap_list = [
            ["149.202.86.103:31245", "N12UbyLJDS7zimGWf3LTHe8hYY67RdLke1iDRZqJbQQLHQSKPW8j"],
            ["149.202.89.125:31245", "N12vxrYTQzS5TRzxLfFNYxn6PyEsphKWkdqx2mVfEuvJ9sPF43uq"],
            ["158.69.120.215:31245", "N12rPDBmpnpnbECeAKDjbmeR19dYjAUwyLzsa8wmYJnkXLCNF28E"],
            ["158.69.23.120:31245", "N1XxexKa3XNzvmakNmPawqFrE9Z2NFhfq1AhvV1Qx4zXq5p1Bp9"],
            ["198.27.74.5:31245", "N1qxuqNnx9kyAMYxUfsYiv2gQd5viiBX126SzzexEdbbWd2vQKu"],
            ["198.27.74.52:31245", "N1hdgsVsd4zkNp8cF1rdqqG6JPRQasAmx12QgJaJHBHFU1fRHEH"],
            ["54.36.174.177:31245", "N1gEdBVEbRFbBxBtrjcTDDK9JPbJFDay27uiJRE3vmbFAFDKNh7"],
            ["51.75.60.228:31245", "N13Ykon8Zo73PTKMruLViMMtE2rEG646JQ4sCcee2DnopmVM3P5"],
            ["[2001:41d0:1004:67::]:31245", "N12UbyLJDS7zimGWf3LTHe8hYY67RdLke1iDRZqJbQQLHQSKPW8j"],
            ["[2001:41d0:a:7f7d::]:31245", "N12vxrYTQzS5TRzxLfFNYxn6PyEsphKWkdqx2mVfEuvJ9sPF43uq"],
            ["[2001:41d0:602:db1::]:31245", "N1gEdBVEbRFbBxBtrjcTDDK9JPbJFDay27uiJRE3vmbFAFDKNh7"],
            ["[2001:41d0:602:21e4::]:31245", "N13Ykon8Zo73PTKMruLViMMtE2rEG646JQ4sCcee2DnopmVM3P5"],
        ]
        # force the bootstrap protocol to use: "IPv4", "IPv6", or "Both". Defaults to using both protocols.
        bootstrap_protocol = "Both"
        # path to the bootstrap whitelist file. This whitelist define IPs that can bootstrap on your node.
        bootstrap_whitelist_path = "base_config/bootstrap_whitelist.json"
        # path to the bootstrap blacklist file. This whitelist define IPs that will not be able to bootstrap on your node. This list is optional.
        bootstrap_blacklist_path = "base_config/bootstrap_blacklist.json"
        # [optional] port on which to listen for incoming bootstrap requests
        bind = "[::]:31245"
        # timeout to establish a bootstrap connection
        connect_timeout = 15000
        # timeout for providing the bootstrap to a connection
        bootstrap_timeout = 1200000
        # delay in milliseconds to wait between consecutive bootstrap attempts
        retry_delay = 60000
        # if ping is too high bootstrap will be interrupted after max_ping milliseconds
        max_ping = 10000
        # timeout for incoming message readout
        read_timeout = 100000
        # timeout for message sending
        write_timeout = 100000
        # timeout for incoming error message readout
        read_error_timeout = 200
        # timeout for message error sending
        write_error_timeout = 200
        # max allowed difference between client and servers clocks in ms
        max_clock_delta = 5000
        # [server] data is cached for cache duration milliseconds
        cache_duration = 15000
        # max number of simulataneous bootstraps for server
        max_simultaneous_bootstraps = 2
        # max size of recently bootstrapped IP cache
        ip_list_max_size = 10000
        # refuse consecutive bootstrap attempts from a given IP when the interval between them is lower than per_ip_min_interval milliseconds
        per_ip_min_interval = 180000
        # read-write limitation for a connection in bytes per seconds (about the bootstrap specifically)
        max_bytes_read_write = 20_000_000.0[pool]
        # max number of operations kept per thread
        max_pool_size_per_thread = 25000
        # if an operation is too much in the future it will be ignored
        max_operation_future_validity_start_periods = 100
        # max number of endorsements kept
        max_endorsement_count = 10000
        # max number of items returned per query
        max_item_return_count = 100
        # operations sender(channel) capacity
        broadcast_operations_capacity = 5000[selector]
        # maximum number of computed cycle's draws we keep in cache
        max_draw_cache = 10
        # path to the initial roll distribution
        initial_rolls_path = "base_config/initial_rolls.json"[factory]
        # initial delay in milliseconds to wait before starting productin to avoid double staking on node restart
        initial_delay = 100
        # path to your staking wallet
        staking_wallet_path = "config/staking_wallet.dat"
    

![](https://storage.googleapis.com/papyrus_images/224770bc9245de64a6de8931816d64ce2d5e4aa8f2d85e82824a55192d349ae0.webp)

> _按_**_CTRL_**\* + **X**退出\*

![](https://storage.googleapis.com/papyrus_images/3523f71fe4d46eed33341553251734977913c158ac32a2cf93874314d6cc3678.webp)

> _按_**_Y_**_和_**_Enter_**_保存修改_

![](https://storage.googleapis.com/papyrus_images/fd9eaf25f32b095cbf28a9d07461e358a29a9d88ae25a6fbe82c4beac4935a48.webp)

白名单配置：

    sudo nano massa/massa-node/config/bootstrap_whitelist.json
    

![](https://storage.googleapis.com/papyrus_images/fa0af8efc70363be8f20ea6b31082af64605b36a3aa15344b20a344493d1e60f.webp)

在窗口中粘贴以下信息：

    [     "149.202.89.125" ,     "2001:41d0:a:7f7d::" ]
    

![](https://storage.googleapis.com/papyrus_images/f51d9ee9a1d128b87705752a004a9a81c0e29476ea9576b83decbc9b1729566d.webp)

> _按_**_CTRL_**\* + **X**退出\*

![](https://storage.googleapis.com/papyrus_images/3523f71fe4d46eed33341553251734977913c158ac32a2cf93874314d6cc3678.webp)

> _按_**_Y_**_和_**_Enter_**_保存修改_

![](https://storage.googleapis.com/papyrus_images/fd9eaf25f32b095cbf28a9d07461e358a29a9d88ae25a6fbe82c4beac4935a48.webp)

客户端配置：

    sudo nano massa/massa-client/config/config.toml
    

![](https://storage.googleapis.com/papyrus_images/fa0af8efc70363be8f20ea6b31082af64605b36a3aa15344b20a344493d1e60f.webp)

在窗口中粘贴以下信息：

    [    "149.202.89.125",    "2001:41d0:a:7f7d::"]
    

![](https://storage.googleapis.com/papyrus_images/f51d9ee9a1d128b87705752a004a9a81c0e29476ea9576b83decbc9b1729566d.webp)

> _按_**_CTRL_**\* + **X**退出\*

![](https://storage.googleapis.com/papyrus_images/3523f71fe4d46eed33341553251734977913c158ac32a2cf93874314d6cc3678.webp)

> _按_**_Y_**_和_**_Enter_**_保存修改_

![](https://storage.googleapis.com/papyrus_images/fd9eaf25f32b095cbf28a9d07461e358a29a9d88ae25a6fbe82c4beac4935a48.webp)

八、运行节点
------

Go to massa node

    cd massa/massa-node/
    

![](https://storage.googleapis.com/papyrus_images/8632f93adc2bb296168ee1354fa31d5399f100e08dd29c5ea5a76a51b2831866.webp)

使用此命令创建一个名为“massa\_node”的会话

    screen -S massa_node
    

![](https://storage.googleapis.com/papyrus_images/b369ab0c2ad7f72a0a57b4d2ee702b9bece00304743941d72681fe6dcf8e4f32.webp)

节点运行

    RUST_BACKTRACE =full cargo run --release -- -p xxxxxxx|& tee logs.txt
    

将**xxxxxx**替换为自己的**密码**，例如：

    RUST_BACKTRACE =full cargo run --release -- -p jackal|& tee logs.txt
    

稍等…

![](https://storage.googleapis.com/papyrus_images/e3e7f9bf7bdf742764ea80b207e60f8f4c3189c9bf99a3ee6631d118f6375900.webp)

继续等…

![](https://storage.googleapis.com/papyrus_images/ba8a6880bc5f7ee766d713ac6134e251eaa955bb6751433b2156892543affcdd.webp)

慢慢等…

![](https://storage.googleapis.com/papyrus_images/6a22458b50ef62c14d50e76213320f08c42826e4f2b0384de16addab9b6f200a.webp)

再等等

![](https://storage.googleapis.com/papyrus_images/d0552c078bd1b123ce5f4591ad01cebc92ce93743110e382692e10009cb46b26.webp)

现在可以继续下一步

出现上图结果，就可以从“massa\_node”屏幕会话中分离

按CTRL+A 然后 D

![](https://storage.googleapis.com/papyrus_images/6326d4985e364271c7732300a19d3c20e2a6f7523b7ba9701d0da62b3b3839a9.webp)

九、客户端安装
-------

    CD  $HOME
    

然后

    cd massa/massa-client/
    

创建一个名为“massa\_client”的会话

    screen -S massa_client
    

![](https://storage.googleapis.com/papyrus_images/ef36afcf72ae06b71c5df1484acaa33174bb2ecd7652e061fc89ab5af9e2a56e.webp)

启动客户端安装：

    cargo run --release
    

等一下……

![](https://storage.googleapis.com/papyrus_images/82c6fe98bc496556b38ad179faabf33899e55ffa17ef752dfd308b1a8eb3bd57.webp)

继续等

![](https://storage.googleapis.com/papyrus_images/244362a844e79c62dd94d1fed8979c1a6847ae7df6c1bcd26b81a46a52d9b520.webp)

下一个命令：

    Exit
    

命令“exit”通常会返回到 massa/massa-client/ 位置，然后：

    screen -S massa_client
    

![](https://storage.googleapis.com/papyrus_images/ef36afcf72ae06b71c5df1484acaa33174bb2ecd7652e061fc89ab5af9e2a56e.webp)

使用以下命令创建钱包：

    cargo run -- --wallet wallet.dat
    

![](https://storage.googleapis.com/papyrus_images/8f5fb6d4bfdef45763974166e77cd0e726d8bf6cbbd385909c765f65532891ed.webp)

![](https://storage.googleapis.com/papyrus_images/f17637b4f9e901902421a894463ca581f9296ffc7d583f8aec4e5ad53948bbdd.webp)

下一个命令：

    Exit
    

> _如果你要从\*主页（根目录）_**_访问_**_客户端\*，你可以使用以下命令访问它：_
> 
> **cd $home**
> 
> **cd massa/massa-client/**
> 
> Then
> 
> **screen -S massa\_client**
> 
> Then
> 
> **cargo run — — wallet wallet.dat**

我们生成一个私钥并使用以下命令将其添加到我们的钱包中：

![](https://storage.googleapis.com/papyrus_images/1d6491142e510f40179ca4b2af7b58fd97f162ad698b92fd8b821100c416cbbc.webp)

输入一个新密码，如下所示：

![](https://storage.googleapis.com/papyrus_images/20b2d26f93494af1e30cccab600957a3da286008ba7558517d3a508e672c63ee.webp)

确认密码如下所示：

可以使用以下命令，从的钱包中获取信息：

![](https://storage.googleapis.com/papyrus_images/97e2b59970796003d9221936d8b3ecb0a800da6087a6429dd1ab61de850a536e.webp)

将所有信息保存在你的笔记本中：

![](https://storage.googleapis.com/papyrus_images/4f9d472f0a62cb72ca2323d987070d9e4c40fa49911aeca20b44465b454945f0.webp)

十、领取水龙头代币
---------

单击此[**_链接_**](https://discord.gg/massa)转到 Massa Labs 官方Discord，到#testnet-faucet 频道，发送你的钱包地址。

![](https://storage.googleapis.com/papyrus_images/3e002c7e0df420b2be0f8cea7e7086a41d7d874178a465e7e93d783ade3f1dfc.webp)

**可以使用此命令检查余额：**

> **cd $home**
> 
> and
> 
> **cd massa/massa-client/**
> 
> Then
> 
> **screen -S massa\_client**
> 
> Then
> 
> **cargo run — — wallet wallet.dat**

输入密码，例如：

![](https://storage.googleapis.com/papyrus_images/1245bf4779a527dd1ce6da9ac33f48bb1808165348a8c23840de2c705e3e3e98.webp)

输入此命令

将 xxxxxxxx 替换为你的地址，如下所示：

![](https://storage.googleapis.com/papyrus_images/2bd3456a34b776e5aa32d1c35274cdc846236e476973d112822364f6bc4cba65.webp)

现在买rolls：

**将xxxxxxxxxxxxxxxxxxxxx**替换为你下面的**地址**（此订单将允许您购买一rolls）

![](https://storage.googleapis.com/papyrus_images/07028894db655580b73b38b25b32d33b6258f0b051f1000e8201840662f19394.webp)

可以用这个命令检查

![](https://storage.googleapis.com/papyrus_images/6b26a9363810ad6e5ff308754380e6d7acbcefd804bf824335643c3e7a5f3255.webp)

再次输入此命令

将 xxxxxxxx 替换为你的地址，如下所示：

![](https://storage.googleapis.com/papyrus_images/2bd3456a34b776e5aa32d1c35274cdc846236e476973d112822364f6bc4cba65.webp)

你可以使用以下命令进行检查：

回到root

**CTRL+A**然后**D**

    CD  $HOME
    

![](https://storage.googleapis.com/papyrus_images/998d4530d16e388eb3af56fa6ea48266c7032ef266bc354f8639cc5225c0f7c8.webp)

十一、Route节点（可以做）
---------------

Massa 网络中的节点必须相互建立连接以进行通信、传播块和操作，并保持共识并一起同步。

对于节点 A 建立到节点 B 的连接，节点 B 必须是可Route的。这意味着节点 B 有一个可以从节点 A 访问的公共 IP 地址，并且节点 B 上的 TCP 端口 31244 和 TCP 31245 是打开的，并且节点 B 上的防火墙允许这些端口上的传入连接。一旦这样建立连接后，通过此连接进行的通信是双向的。

建议重新启动 Putty 或home

    cd $HOME
    

和

    apt install ufw -y 
    ufw allow ssh 
    ufw allow https 
    ufw allow http 
    ufw allow 31244
    ufw allow 31245
    ufw enable
    

从根目录使用此命令检查节点的状态

> **_cd $home_**
> 
> _and_
> 
> **_cd massa/massa-client/_**
> 
> _Then_
> 
> **_screen -S massa\_client_**
> 
> _Then_
> 
> **_cargo run — — wallet wallet.dat_**

![](https://storage.googleapis.com/papyrus_images/352d332c97d5fc2e1de6c27ad0961d0bede8a16ef7014dd263f7c08d6550f947.webp)

十二、反馈
-----

晚上以上所有步骤后，说明你已经在 massa 网络上启动了节点，现在我们需要去 discord 上反馈我们的节点，以便它可以链接到我们的 discord 用户帐户。

进入Discord，\*\* \*\*并执并按如下操作：

![](https://storage.googleapis.com/papyrus_images/5b78f963afa55b6ad948d9da058c4bd3b3ff45cc87427e6046948b2aee8c4db6.webp)

检查私人消息，你将找到在你的节点上输入的命令

![](https://storage.googleapis.com/papyrus_images/7d4897dd3abb4c4d4015e3f9e0a45862f8e0e5f825a764ab10c81ba890ef0841.webp)

比如：node\_testnet\_rewards\_program\_ownership\_proof rDmAJR7wRrPiYVrxmTsRFiKbkhDXCJeYagFTj5AaeD31zooBy 913370747924275211

去Massa客户端

> **_cd massa/massa-client/_**
> 
> _Then_
> 
> **_screen -S massa\_client_**
> 
> _Then_
> 
> **_cargo run — — wallet wallet.dat_**

并输入 Massabot 要求输入的命令

比如：

通过私信将此信息发给 Massabot

![](https://storage.googleapis.com/papyrus_images/02840f8653c3797eb09d20bb614bba0133229ecee83bbc726e37e9b8c24111d2.webp)

![](https://storage.googleapis.com/papyrus_images/8332499c8b56f0c70b2b407c3e93d91214951f6ec4cbd5cece7d2aeec9dca2bd.webp)

你可以在massabot回复“ \*\*info”\*\*查询你的分数

![](https://storage.googleapis.com/papyrus_images/bf599f024421ef123dac0b641da8d3c0568705b03079d8bb631e8614fc8b2803.webp)

你也可以回复你的IP地址，他会发给你下面的回复

![](https://storage.googleapis.com/papyrus_images/d50eea33730a96be2c43c0b38f28fd540b1a041637eeb3ba7310030ba0ec9356.webp)

十三、质押
-----

如果你觉得挖矿很麻烦，你可以去做官方的质押活动，点此[**查看**](https://docs.massa.net/en/latest/testnet/rewards.html)官方质押奖励信息。

---

*Originally published on [wowto](https://paragraph.com/@wowto-2/132-massa-network-3-20-xx-medium)*
