> For the complete documentation index, see [llms.txt](https://scdo-project.gitbook.io/scdo-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://scdo-project.gitbook.io/scdo-wiki/zhong-wen/wa-kuang.md).

# 挖矿

## 挖矿入门

### SCDO主网简介

SCDO主网由四个分片组成，使用PoW工作量证明共识算法。每个分片的的行为类似一个区块链。尽管用户可以在一个分片内或两个不同的分片之间发送交易和事务，但挖矿节点（一个计算机程序）只能在一个分片中挖掘。为了挖掘SCDO token，您需要一个名为node的计算机程序和一个json格式的配置文件。配置文件包含两个关键元素：接收通证（token）奖励的地址-coinbase，以及用于SCDO p2p网络连接的唯一的私钥-privateKey。在接下来的几节中，我们将说明如何生成coinbase ，privateKey和编写一个配置文件。这些完成后，您就可以挖掘SCDO token了。

挖矿详细说明，请参考[挖矿指南](https://scdo-project.gitbook.io/scdo-wiki/zhong-wen/pages/-MQKk8Bxqb9kButR1X0l#挖矿详细指南)

### 下载

下载最新的[可执行程序和配置文件模板](https://github.com/scdoproject/go-scdo/releases)。所提取的目录具有以下结构：

```
    mac/linux/windows 
    ├── node1.json //shard1 config template
    ├── node2.json //shard2 config template
    ├── node3.json //shard3 config template
    ├── node4.json //shard4 config template
    └── build 
        ├── client //client executable for getting info
        ├── discovery
        ├── light
        ├── node //node executable for running a SCDO network node
        ├── tool
        └── vm
```

在下一节中，我们的重点是如何通过编辑json配置模板，创建一个配置文件。该文件对于运行挖矿节点是必需的。我们使用linux环境和分片1（node1.json配置模板）作为示例（Mac / windows环境非常相似）。

我们用 $PATH\_TO\_NODE\_CLIENT 表示到这些配置文件模板和可执行程序"node","client" 所在目录的路径。

### 创建配置文件

在文本编辑器中打开配置模板node1.json。其内容与以下同或类似：

```
 "basic": {
        "name": "scdo node1",
        "version": "1.0",
        "dataDir": "Snode1",
        "address": "0.0.0.0:8027",
        "coinbase": "1S01cf0b32593068f2ace7c472d5f127d3422d3b61",
        "algorithm": "zpow"
    },
    "p2p": {
        "privateKey": "0xf65e40c6809643b25ce4df33153da2f3338876f181f83d2281c6ac4a987b1479",
        "staticNodes": [
            "74.208.207.184:8057",
            "74.208.207.184:8058",
            "74.208.207.184:8059",
            "74.208.207.184:8056",
            "74.208.136.152:8056",
            "74.208.136.152:8057",
            "74.208.136.152:8058",
            "74.208.136.152:8059"
        ],
        "address": "0.0.0.0:8057",
        "networkID": "scdo"
    },
    "log": {
        "isDebug": false,
        "printLog": true
    },
    "httpServer": {
        "address": "0.0.0.0:8037",
        "crossorigins": [
            "*"
        ],
        "whiteHost": [
            "*"
        ]
    },
    "wsserver": {
        "address": "0.0.0.0:8047",
        "crossorigins": [
            "*"
        ]
    },
    "ipcconfig": {
        "name": "scdo1.ipc"
    },
    "metrics": {
        "address": "0.0.0.0:8087",
        "duration": 10,
        "database": "influxdb",
        "username": "test",
        "password": "test123"
    },
    "genesis": {
        "difficult": 1900000,
        "shard": 1,
        "timestamp": 1596942480
    }
}
```

目前为了创建一个配置文件，我们只需要替换basic部分中的coinbase和p2p部分中的privateKey即可.

为了生成coinbase 和 privateKey, 我们需要执行下面的命令行：

```
$ $PATH_TO_NODE_CLIENT/client key --shard 1
```

输出是:

```
Account:  1S0113339046e140620a05ab98abdfadedbbd88191
Private key: 0x75b032e8c53aea77288d46a7e2b508292d4b41a2b4f8ef265220535bb0012c45
```

用 1S0113339046e140620a05ab98abdfadedbbd99191 替换 basic 的 “coinbase”： 后面的字符串。 **请保存私钥 0x75b032e8c53aea77288d46a7e2b508292d4b41a2b4f8ef265220535bb0012c45 在一个安全的地方，避免丢失或被盗**. 你未来发送交易和事务时需要用到它。

再次执行相同的命令

```
$ $PATH_TO_NODE_CLIENT/client key --shard 1
```

输出是:

```
Account:  1S018274d26bea7144a3d235620bc2ac6094e4f9d1
Private key: 0x442603781c5ea6993aa880cd991fefb167bc4fe9e68c25d9e7148b9872f07d5b
```

用  0x442603781c5ea6993aa880cd991fefb167bc4fe9e68c25d9e7148b9872f07d5b 替换p2p部分的 “privateKey”： 后面的字符串。 丢弃Account 字符串 1S018274d26bea7144a3d235620bc2ac6094e4f9d1。

我们得到下面的：

```
     "basic": {
            "name": "scdo node1",
            "version": "1.0",
            "dataDir": "Snode1",
            "address": "0.0.0.0:8027",
            "coinbase": "1S0113339046e140620a05ab98abdfadedbbd88191",
            "algorithm": "zpow"
        },
        "p2p": {
            "privateKey": "0x442603781c5ea6993aa880cd991fefb167bc4fe9e68c25d9e7148b9872f07d5b",
            "staticNodes": [
                "74.208.207.184:8057",
                "74.208.207.184:8058",
                "74.208.207.184:8059",
                "74.208.207.184:8056",
                "74.208.136.152:8056",
                "74.208.136.152:8057",
                "74.208.136.152:8058",
                "74.208.136.152:8059"
            ],
            "address": "0.0.0.0:8057",
            "networkID": "scdo"
        },
        "log": {
            "isDebug": false,
            "printLog": true
        },
        "httpServer": {
            "address": "0.0.0.0:8037",
            "crossorigins": [
                "*"
            ],
            "whiteHost": [
                "*"
            ]
        },
        "wsserver": {
            "address": "0.0.0.0:8047",
            "crossorigins": [
                "*"
            ]
        },
        "ipcconfig": {
            "name": "scdo1.ipc"
        },
        "metrics": {
            "address": "0.0.0.0:8087",
            "duration": 10,
            "database": "influxdb",
            "username": "test",
            "password": "test123"
        },
        "genesis": {
            "difficult": 1900000,
            "shard": 1,
            "timestamp": 1596942480
        }
    }
```

把它存到一个文件如 node1\_1.json 或用个你喜欢的文件名字，但一定保留“json"文件格式。为了简单起见，我们还把这个文件存到 $PATH\_TO\_NODE\_CLIENT目录之下。

你可能注意到每次执行 *./client key --shard #* 都会给出不同的结果。这是对的。

你可用类似方式创建挖掘其他分片的配置文件。有关更多详细说明，请参看[创建配置文件](https://scdo-project.gitbook.io/scdo-wiki/zhong-wen/pages/-MQKk8Bxqb9kButR1X0l#创建配置文件)

### 运行挖矿节点

在启动挖矿节点之前，您的计算机必须连接到Internet。

执行下列命令:

```
$ $PATH_TO_NODE_CLIENT/node start -c $PATH_TO_NODE_CLIENT/node1_1.json --threads 8
```

在挖矿节点启动和运行之后, 日志信息将显示在计算机屏幕上。

注：数字8表示有8个线程并行挖掘。用户可以根据自己的机器性能更改此数。例如，如果你的计算机的CPU有16个内核，则可设此数16或更大的数。

当节点启动运行并已连接到SCDO网络时，可能需要几个小时才能将SCDO网络数据同步到该节点。 在节点的数据与SCDO网络的数据同步之后，该节点将开始挖掘区块并与SCDO网络中的其他节点竞争。

### 检查与SCDO网络的连接

节点启动并运行后，你可能需要检查该节点是否已连接到SCDO网络以便赢得SCDO通证。以下命令将执行此操作：

```
$ $PATH_TO_NODE_CLIENT/client getinfo --address ip:port
```

“ - -address”后面的字符串表示节点的IP和端口。在此示例中，你可以使用“ - -address localhost：8027”。分片1的默认端口是8027，分片2的默认端口是8028，分片3的默认端口是8029，分片4的默认端口是8026。由于节点在分片1中进行挖掘，下面是输出消息。

如果“ PeerCnt”不为零，则该节点已连接到SCDO网络。 数组（3 3 1 3）表示每个分片中来自SCDO网络的多少个节点连接到你的挖矿节点。例如，分片1中有3个节点，分片3中有1个节点连接到你的节点。

```
{
        "BlockAge": 23,
        "Coinbase": "1S011c9dab11f953875fafc374a641bdaf58488771",
        "CurrentBlockHeight": 3339035,
        "HeaderHash": "0x53edbf3f80e3ffeefcb28cf6070939df7ea46926e94502f5e60a96e7459790b0",
        "MinerStatus": "Running",
        "PeerCnt": "10 (3 3 1 3)",
        "Shard": 1,
        "Version": "Scdo_V1.0.0"
    }
```

在挖矿节点已连接到同一分片中的至少一个其他节点之后，与SCDO网络/区块链数据的同步将开始。完成数据同步可能需要花费几个小时，具体取决于你的Internet连接速度。此后，将开始真正的挖掘。当你看到正在运行的节点的输出消息时，你会理解。

稍后，我们将显示仅用于运行数据同步的节点的选项。

### 查看账户余额

在挖矿节点启动一段时间后，你想看看你是否挖到SCDO通证（SCDO）。在本节中，我们说明如何查看。

配置文件中“ coinbase：”之后的十六进制格式字符串是你的挖矿帐户的地址。在我们的示例中，它是1S0113339046e140620a05ab98abdfadedbbd88191。

请执行如下命令：

```
$ $PATH_TO_NODE_CLIENT/client getbalance --account  1S0113339046e140620a05ab98abdfadedbbd88191 --address 0.0.0.0:8027
```

输出如下面的样子:

```
{
        "Account": "1S0113339046e140620a05ab98abdfadedbbd88191",
        "Balance": 400000000
}
```

实际的输出余额可能不同。

注： 余额单位是文（Wen)。 100,000,000 Wen = 1 SCDO. 因此在上面的输出了 400,000,000 Wen = 4 SCDO。

## 挖矿详细指南

### SCDO网络和挖矿基本说明

SCDO网络是点对点（p2p）网络，网络所有节点分为4个分片。 SCDO区块链使用自己独特的工作量证明共识算法（命名为ZPoW)。该算法基于随机矩阵生成和行列式计算。 ZPoW是CPU友好的。从ZPoW的测试结果来看，我们没有发现GPU / ASIC芯片具有特殊优势。因此，任何拥有计算机的个体/组织可以挖掘SCDO区块链。奖励通证命名为SCDO。 SCDO的最小单位为WEN，1 SCDO = 100,000,000 WEN。

对于分片 *n* 中的每个挖矿节点：它保留一条局部链和3条轻链，用于存储信息或数据。挖矿节点将所有涉及本片账户的交易数据存储在局部链里。每条轻链存储其相关片的局部链的每个块的哈希值。例如，如果挖掘节点位于分片1中，则有一条局部链来存储所有与分片1中的帐户有关的交易数据（区块），使用三条轻链记录其他3个分片的局部链的区块哈希值。例如，轻链2存储了分片2的局部链中所有块的哈希值，等等。借助局部链和轻链，SCDO区块链可正常运行。

由于SCDO网络节点被划分为4个分片，帐户也是如此划分。帐户具有一对唯一的地址和私钥。该地址用于持有账户余额，私钥用于签署发出的交易。

为了挖掘SCDO，你需要创建一个（或多个）帐户。

一个挖矿节点只能在一个分片中运行，使用json文件来配置。

综上所述，为了运行一个挖矿节点，你需要：

1. 账户 (一个地址和私钥匙对),
2. 配置文件

同样，以下所有演示均是linux / unix环境。我们假设读者对操作系统有基本的了解。 MAC和Windows中命令的执行与linux / unix非常相似。

### 下载可执行文件（程序）

下载最新的 [可执行文件和配置文件模板](https://github.com/scdoproject/go-scdo/build) 。提取的目录具有以下结构：

```
    mac/linux/windows 
    ├── node1.json //shard1 config template
    ├── node2.json //shard2 config template 
    ├── node3.json //shard3 config template
    ├── node4.json //shard4 config template
    └── build 
        ├── client //client executable for getting info
        ├── discovery
        ├── light
        ├── node //node executable for running a node
        ├── tool
        └── vm
```

对于挖矿，只需要可执行文件 *node* 和 *client*，并根据这些模板创建自己的配置文件。如果在分片1中挖矿，请使用node1.json作为模板。node2.json用于分片2，node3.json用于分片3，依此类推。

### 下载 SCDO 源码和编译

你可能需要根据源代码自行构建可执行文件。 从 [源代码](https://github.com/scdoproject/go-scdo.git) 下载源代码。按照 README.md 文件里的指示操作或转到 [编译节点](https://scdo-project.gitbook.io/scdo-wiki/zhong-wen/pages/-MQKk8Bxqb9kButR1X0l#编译可执行文件) 一节.

配置文件模板应位于项目源代码目录中 *$PROJECTRDIR/scdoproject/go-scdo/cmd/node/config*, 这里 $PROJECTRDIR 是你机器上通往 scdoproject 的路径。

### 创建账户

帐户由一对唯一的地址和私钥标识。地址的前4个字符表示该帐户属于哪个分片。

假设我们已经在包含可执行文件 *node* 和 *client* 的目录之下。

通过执行命令，

```
$ ./client key --shard [option shard number]
```

片数可以是 1,2,3,4 中的任何一个，例如 执行:

```
$ ./client key --shard 1
```

得输出,

> Account: 1S014f574f8b5749eff6d24f18640d820327c5daf1
>
> Private key:0x1c18aaa42429e903aa4aba753e500e3e0061f7dbca6d1a2c6499b2226b72a0ec

注：地址（address）在输出里用 "Account" 标识。 前面4个字符标识账户（地址）属于哪个片。而且上述命令每一次的执行都会给出不同的结果。

执行 $ ./client keys --shard 2

输出是

> Account: 2S0215ac0412394ec2fa4215b72602a70724bf9b11
>
> Private key: 0x4e19191ed142c5fb9af0425b16399a09e35ef1e913d68e4fd1cbbb538de74d7d

你按自己的意愿可以生成多个账户。

通常，地址和私钥具有一一对应关系。由于SCDO有4个分片，因此允许你使用一个私钥来控制四个不同的帐户/地址，每个分片一个。也就是说有四个账户地址可以用同一个私钥。这四个账户（地址）是按如下方法生成的：

执行不带分片选项的上述命令行，将始终给出分片1中的一对地址和私钥：

```
$ ./client key  
```

输出为：

> Account: 1S01f18fd1317001c81d9cb8346521cdd9f486bb41
>
> Private key: 0xa94c7bb78579585a8b1d3346034fc124ace2e79ba80c3107fbb3d72be86dcb8f

我们前面提到过，“帐户”字符串中的前4个字符表示该帐户属于哪个分片。

如果编辑帐户字符串：>1S01f18fd1317001c81d9cb8346521cdd9f486bb41 的前四个字符，你可以得到如下三个不同的地址

> 2S02f18fd1317001c81d9cb8346521cdd9f486bb41
>
> 3S03f18fd1317001c81d9cb8346521cdd9f486bb41
>
> 4S04f18fd1317001c81d9cb8346521cdd9f486bb41

加上先前的一个，将有四对:

> Account: 1S01f18fd1317001c81d9cb8346521cdd9f486bb41
>
> Private key: 0xa94c7bb78579585a8b1d3346034fc124ace2e79ba80c3107fbb3d72be86dcb8f
>
> Account:2S02f18fd1317001c81d9cb8346521cdd9f486bb41
>
> Private key: 0xa94c7bb78579585a8b1d3346034fc124ace2e79ba80c3107fbb3d72be86dcb8f
>
> Account: 3S03f18fd1317001c81d9cb8346521cdd9f486bb41
>
> Private key: 0xa94c7bb78579585a8b1d3346034fc124ace2e79ba80c3107fbb3d72be86dcb8f
>
> Account: 4S04f18fd1317001c81d9cb8346521cdd9f486bb41
>
> Private key: 0xa94c7bb78579585a8b1d3346034fc124ace2e79ba80c3107fbb3d72be86dcb8f

这些都是SCDO中的有效帐户，并且具有相同的私钥0xa94c7bb78579585a8b1d3346034fc124ace2e79ba80c3107fbb3d72be86dcb8f。

不过，我们推荐每次通过执行下述命令行来生成不同帐户。

```
$ ./client key --shard [option]
```

现在你知道如何生成一对地址（又称公钥）和私钥了。让我们继续下一个任务-创建配置文件。

### 创建配置文件

启动挖矿节点，必须有配置文件。我们将从配置模板开始，解释关键部分。然后，用户可通过编辑模板文件创建自己的配置文件。

#### 配置文件模板

> { "basic": { "name": "scdo node1", // "version": "1.0", "dataDir": "Snode1", "address": "0.0.0.0:8027", "coinbase": "1S01cf0b32593068f2ace7c472d5f127d3422d3b61", "algorithm": "zpow" }, "p2p": { "privateKey": "0xf65e40c6809643b25ce4df33153da2f3338876f181f83d2281c6ac4a987b1479", "staticNodes": \[ "74.208.207.184:8057", "74.208.207.184:8058", "74.208.207.184:8059", "74.208.207.184:8056", "74.208.136.152:8056", "74.208.136.152:8057", "74.208.136.152:8058", "74.208.136.152:8059" ],
>
> ```
>            "address": "0.0.0.0:8057",
>            "networkID": "scdo"
>        },
>        "log": {
>            "isDebug": false,
>            "printLog": true
>        },
>        "httpServer": {
>            "address": "0.0.0.0:8037",
>            "crossorigins": [
>                "*"
>            ],
>            "whiteHost": [
>                "*"
>            ]
>        },
>        "wsserver": {
>            "address": "0.0.0.0:8047",
>            "crossorigins": [
>                "*"
>            ]
>        },
>        "ipcconfig": {
>            "name": "scdo1.ipc"
>        },
>        "metrics": {
>            "address": "0.0.0.0:8087",
>            "duration": 10,
>            "database": "influxdb",
>            "username": "test",
>            "password": "test123"
>        },
>        "genesis": {
>            "difficult": 1900000,
>            "shard": 1,
>            "timestamp": 1596942480
>        }
>    }
>    
> ```
>
> #### 配置模板文件的说明

**basic 部分**

> "basic": { "name": "scdo node1", // "version": "1.0", "dataDir": "Snode1", "address": "0.0.0.0:8027", "coinbase": "1S01cf0b32593068f2ace7c472d5f127d3422d3b61", "algorithm": "zpow" }

"name": 节点名称, 标记. 你可使用任何名称，不过最好根据所在的片选择名称。这里表示是个片1的节点。

"version": SCDO发行版的版本号。它是你运行的*node* 的版本号。

"dataDir": 目录名字。该目录用于存储节点产生的数据，例如区块链数据，网络连接数据文件等。可以使用与“name”后面的字符串类似的名称。

"address": IP地址和端口号-节点的本地IP地址和端口号。执行 “client”命令时将使用此信息。对于分片1中的挖掘节点，端口号设置为8027（实际上，它可以是任何端口号，只要没有冲突即可）

"coinbase": 你的帐户地址。请参考 [创建账户](https://scdo-project.gitbook.io/scdo-wiki/zhong-wen/pages/-MQKk8Bxqb9kButR1X0l#创建账户) 如何生成地址（账户）和私钥. 然后用自己的账户替代coinbase后面的字符串。

"algorithm": "zpow" -- 不需要修改.

**p2p 部分**

"p2p": {

> "privateKey": "0xf65e40c6809643b25ce4df33153da2f3338876f181f83d2281c6ac4a987b1479", "staticNodes": \[ "74.208.207.184:8057", "74.208.207.184:8058", "74.208.207.184:8059", "74.208.207.184:8056", "74.208.136.152:8056", "74.208.136.152:8057", "74.208.136.152:8058", "74.208.136.152:8059" ], "address": "0.0.0.0:8057", "networkID": "scdo" },

The "privatekey": 它是你的节点的唯一网络标识符。你要通过命令“ *./client key* ” 生成一个”Private key", 用它替换示例中”privateKey"后面的字符串。此私钥与你的帐户私钥无关。。另请参见 [创建账户](https://scdo-project.gitbook.io/scdo-wiki/zhong-wen/pages/-MQKk8Bxqb9kButR1X0l#创建账户).

"staticNodes": 这些ip地址是你的挖矿节点尝试连接SCDO网络的起始节点。通常，你无需从模板中替换它们（以后可以添加更多）。端口号：8057用于分片1，8058分片2，8059分片3，8056分片4。这些静态节点通常由SCDO项目团队管理。它们用于SCDO区块链的数据同步。

"address": 节点的本地IP地址和端口号。如果你在分片1中挖矿，则端口号应为8057，依此类推。 如果其他挖掘节点想要连接你分片1的节点，使用的是这个端口号。

"networkID": 这是SCDO网络的ID。无需修改，否则将阻止你的挖矿节点加入SCDO网络。

#### 配置模板其他部分

不需做任何修改。

编辑配置模板后，你可以将其保存为json格式的文件，例如node1\_1.json（或不同名称，只是要记住是那个分片的即可）。

### 运行挖矿节点

执行下述命令

```
 $ ./node start -c [配置文件名] --threads [线程数] 
```

例如，使用我们前面一节创建的配置文件 node1\_1.json，选取线程数为10， 命令将为：

```
$ ./node start -c ./node1_1.json --threads 10 
```

如果这是你第一次执行该命令，则可能需要花费几个小时来同步所有SCDO 区块链的数据。如果使用以下选项，则效果会更好：

```
       $ ./node start -c ./node1_1.json --threads 10 -m stop
```

这样可以加快数据同步。

日志信息将逐行显示在屏幕上，你可以“pipe”这些到一个文件里，并将其保存，如果需要的话。如果你的节点和SCDO网络的连接已建立，它将很快开始与SCDO网络同步数据。

当同步数据完成后，你需要关停node, 然后把 “-m stop" 移除，重新开始。如果你的机器速度较快，CPU i7以上，网络宽带链接良好，应该有很大机会争得SCDO通证奖励。

### 检查与SCDO网络连接

在你的挖矿节点启动并运行之后，为了有机会赢得一些SCDO奖励，该节点必需连接到SCDO网络。另外，它应与每个分片中的节点建立连接，以保持与网络的稳定连接。

为了查看连接状况信息，请使用

```
$ ./client getinfo [--address ip:port]
```

”- -address” 之后的字符串表示节点的ip和端口。在此示例中，你可以省略它，因为默认值为0.0.0.0:8027（对于分片1）， 你的节点在片1挖矿。输出结果与下面的类似：

```
    {
        "BlockAge": 23,
        "Coinbase": "1S011c9dab11f953875fafc374a641bdaf58488771",
        "CurrentBlockHeight": 3339035,
        "HeaderHash": "0x53edbf3f80e3ffeefcb28cf6070939df7ea46926e94502f5e60a96e7459790b0",
        "MinerStatus": "Running",
        "PeerCnt": "10 (3 3 1 3)",
        "Shard": 1,
        "Version": "Scdo_V1.0.0"
    }
```

"BlockAge": 23表示局部链最新区块挖出至今的时间。

"Coinbase": "1S011c9dab11f953875fafc374a641bdaf58488771", 你的挖矿账户地址.

"CurrentBlockHeight": 3339035, 局部链最新区块的高度。

"HeaderHash": "0x53edbf3f80e3ffeefcb28cf6070939df7ea46926e94502f5e60a96e7459790b0", 局部链的最新区块的哈希值，在我们的示例中为分片1的局部链块头。

"MinerStatus": "Running", 挖矿节点状态。

"PeerCnt": "10 (3 3 1 3)", 表示连接的节点总数为10。其中在片1，片2各三个，片3 一个、片4 三个。如果没有零，那非常好！

"Shard": 1, 表示片1挖矿。

如果你想了解有关连接的更多信息，请执行以下操作：

```
$ ./client p2p peersinfo [--address ip:port]
```

因为我们的节点在片1挖，可以省略ip 地址和port. 输出结果将类似于以下内容：

```
[
        {
            "caps": [
                "lightScdo_3/1",
                "lightScdo_4/1",
                "scdo/1",
                "lightScdo_1/1",
                "lightScdo_2/1"
            ],
            "id": "1S01759e0cbd1b801508924e90e35dc9c70bd601e1",
            "network": {
                "localAddress": "192.168.1.38:44056",
                "remoteAddress": "74.208.207.184:8057"
            },
            "protocols": {
                "lightScdo_1": "handshake",
                "lightScdo_2": "handshake",
                "lightScdo_3": "handshake",
                "lightScdo_4": "handshake",
                "scdo": {
                    "difficulty": 1696077961295,
                    "head": "f7b699259bca687a4760d96e8ea08a4ccf607bbdc99cd4432aaf1f534a60e471",
                    "version": 1
                }
            },
            "shard": 1
        },
        {
            "caps": [
                "lightScdo_4/1",
                "scdo/1",
                "lightScdo_1/1",
                "lightScdo_2/1",
                "lightScdo_3/1"
            ],
            "id": "2S024fdf4e2f59eb5fc16837c8419d971e17f99551",
            "network": {
                "localAddress": "192.168.1.38:47118",
                "remoteAddress": "74.208.136.152:8058"
            },
            "protocols": {
                "lightScdo_1": {
                    "difficulty": 1687915773901,
                    "head": "5128f82743db7b3d9dc9a45cb4ff717fa3dae9c796f65daa83c28da41fd6f14b",
                    "version": 1
                },
                "lightScdo_2": {
                    "difficulty": 1714829896315,
                    "head": "5a2f49eaf3e144f514b68be0e7c4924448404429cb0e966e803ab560",
                    "version": 1
                },
                "lightScdo_3": "handshake",
                "lightScdo_4": "handshake",
                "scdo": {
                    "difficulty": 1714829896315,
                    "head": "be33c8405a2f49eaf3e144f514b68be0e7c4924448404429cb0e966e803ab560",
                    "version": 1
                }
            },
            "shard": 2
        },
        {
            "caps": [
                "lightScdo_1/1",
                "lightScdo_2/1",
                "lightScdo_3/1",
                "lightScdo_4/1",
                "scdo/1"
            ],
            "id": "2S02b486bcfdc07ea6417225721dbfe0246325c7a1",
            "network": {
                "localAddress": "192.168.1.38:57300",
                "remoteAddress": "74.208.207.184:8058"
            },
            "protocols": {
                "lightScdo_1": {
                    "difficulty": 1687784917421,
                    "head": "6ddd3de03021a3aecbdd3dbd286d743d394b0d6a20f15dbc7c32b0699edd46ba",
                    "version": 1
                },
                "lightScdo_2": {
                    "difficulty": 1714824520587,
                    "head": "fe904ca61847dad5182e8b6dc95303db5b33b84048d47528b44aa0a32911af79",
                    "version": 1
                },
                "lightScdo_3": "handshake",
                "lightScdo_4": "handshake",
                "scdo": {
                    "difficulty": 1714824520587,
                    "head": "fe904ca61847dad5182e8b6dc95303db5b33b84048d47528b44aa0a32911af79",
                    "version": 1
                }
            },
            "shard": 2
        },
        {scdorand_linux_amd64.a
            "caps": [
                "lightScdo_2/1",
                "lightScdo_3/1",
                "lightScdo_4/1",
                "scdo/1",
                "lightScdo_1/1"
            ],
            "id": "2S02d83dc671800300f80546b8cacd266bca9cab41",
            "network": {
                "localAddress": "192.168.1.38:47876",
                "remoteAddress": "109.228.36.218:8058"
            },
            "protocols": {
                "lightScdo_1": {
                    "difficulty": 1687759712020,
                    "head": "8d1fca279d826d85eba52a9f38fdac73390aa549853451a489b2729734bb0369",
                    "version": 1
                },
                "lightScdo_2": {
                    "difficulty": 1714829896315,
                    "head": "be33c8405a2f49eaf3e144f514b68be0e7c4924448404429cb0e966e803ab560",
                    "version": 1
                },
                "lightScdo_3": "handshake",
                "lightScdo_4": "handshake",
                "scdo": {
                    "difficulty": 1714829896315,
                    "head": "be33c8405a2f49eaf3e144f514b68be0e7c4924448404429cb0e966e803ab560",
                    "version": 1
                }
            },
            "shard": 2
        },
        {
            "caps": [
                "lightScdo_4/1",
                "scdo/1",
                "lightScdo_1/1",
                "lightScdo_2/1",
                "lightScdo_3/1"
            ],
            "id": "3S03c3fe4ba31da9246c065c4e15a93e9ae71c67b1",
            "network": {
                "localAddress": "192.168.1.38:41990",
                "remoteAddress": "74.208.207.184:8059"
            },
            "protocols": {
                "lightScdo_1": {
                    "difficulty": 1687794976919,
                    "head": "16f4a62b766dd6c1b6ba9324993d2f6b883fb4e21e57da117955ee8ed98ee5fc",
                    "version": 1
                },
                "lightScdo_2": "handshake",
                "lightScdo_3": {
                    "difficulty": 1701944364685,
                    "head": "1399e67ef78aa19d3a4ffa99784fc276675d9906e8a837f29ae2bd4b520fe4a1",
                    "version": 1
                },
                "lightScdo_4": "handshake",
                "scdo": {
                    "difficulty": 1701944364685,
                    "head": "1399e67ef78aa19d3a4ffa99784fc276675d9906e8a837f29ae2bd4b520fe4a1",
                    "version": 1
                }
            },
            "shard": 3
        },
        {
            "caps": [
                "lightScdo_1/1",
                "lightScdo_2/1",
                "lightScdo_3/1",
                "lightScdo_4/1",
                "scdo/1"
            ],
            "id": "4S04f17b6fc55cc58017aad9c5b33abeee5b1dbb41",
            "network": {
                "localAddress": "192.168.1.38:42890",
                "remoteAddress": "104.254.244.44:8056"
            },
            "protocols": {
                "lightScdo_1": {
                    "difficulty": 1685204026183,
                    "head": "c704b010291d3a2c25ebfe8f7123c088a177feed77c7d55c06a78d02bc62ca3d",
                    "version": 1
                },
                "lightScdo_2": "handshake",
                "lightScdo_3": "handshake",
                "lightScdo_4": {
                    "difficulty": 1704245912720,
                    "head": "0017ced433cb1fa47045110f7fffca291291c33b0e842057f4fc2cbc33e42c83",
                    "version": 1
                },
                "scdo": {
                    "difficulty": 1704245912720,
                    "head": "0017ced433cb1fa47045110f7fffca291291c33b0e842057f4fc2cbc33e42c83",
                    "version": 1
                }
            },
            "shard": 4
        }
]
```

挖掘节点位于分片1中。让我们尝试理解上面的信息。输出结果由数据结构相同的多个部分组成。\
这是其中之一：

```
{
                "caps": [
                    "lightScdo_3/1",
                    "lightScdo_4/1",
                    "scdo/1",
                    "lightScdo_1/1",
                    "lightScdo_2/1"
                ],
                "id": "1S01759e0cbd1b801508924e90e35dc9c70bd601e1",
                "network": {
                    "localAddress": "192.168.1.38:44056",
                    "remoteAddress": "74.208.207.184:8057"
                },
                "protocols": {
                    "lightScdo_1": "handshake",
                    "lightScdo_2": "handshake",
                    "lightScdo_3": "handshake",
                    "lightScdo_4": "handshake",
                    "scdo": {
                        "difficulty": 1696077961295,
                        "head": "f7b699259bca687a4760d96e8ea08a4ccf607bbdc99cd4432aaf1f534a60e471",
                        "version": 1
                    }
                },
                "shard": 1
            },
```

上面告诉我们连接的远程节点属于分片1，其IP地址为“ 74.208.207.184:8057”。你现在可以忽略上述其他部分。

下节说明连接的远程节点属于分片4。

```
{
            "caps": [
                "lightScdo_1/1",
                "lightScdo_2/1",
                "lightScdo_3/1",
                "lightScdo_4/1",
                "scdo/1"
            ],
            "id": "4S04f17b6fc55cc58017aad9c5b33abeee5b1dbb41",
            "network": {
                "localAddress": "192.168.1.38:42890",
                "remoteAddress": "104.254.244.44:8056"
            },
            "protocols": {
                "lightScdo_1": {
                    "difficulty": 1685204026183,
                    "head": "c704b010291d3a2c25ebfe8f7123c088a177feed77c7d55c06a78d02bc62ca3d",
                    "version": 1
                },
                "lightScdo_2": "handshake",
                "lightScdo_3": "handshake",
                "lightScdo_4": {
                    "difficulty": 1704245912720,
                    "head": "0017ced433cb1fa47045110f7fffca291291c33b0e842057f4fc2cbc33e42c83",
                    "version": 1
                },
                "scdo": {
                    "difficulty": 1704245912720,
                    "head": "0017ced433cb1fa47045110f7fffca291291c33b0e842057f4fc2cbc33e42c83",
                    "version": 1
                }
            },
            "shard": 4
        }
```

其他相似的部分具有类似的解释。

### 查账户余额

即使你的挖矿节点已完全连接到SCDO网络，也无法保证一定能赢得一些回报。您赢得的SCDO数量将取决于计算机的算力。例如，Intel i5处理器会比Intel i9慢。

执行以下命令查看余额：

```
$ ./client getbalance --account 1S01cf0b32593068f2ace7c472d5f127d3422d3b61 --address 0.0.0.0:8027  
```

你会从输出结果中看到余额。

注: 1S01cf0b32593068f2ace7c472d5f127d3422d3b61 -- 这将由您的配置文件中的coinbase替换。 0.0.0.0:8027 -- 这是分片1中你的挖矿节点的默认IP地址。它可以用分片1中的静态节点的IP地址代替。

## 编译可执行文件

首先，你需要在计算机上安装git，gcc和go（linux / mac / windows）软件包。

git 版本 2.17.1 或更新的版本.

gcc 版本 7.3.0 或更新的版本

go 版本 1.12.7 (这个版号不能变，因为SCDO使用了某些链接函数库）。

在主目录中创建路径 *go/src/github.com/scdoproject*。

### 下载 go-scdo

```
~$ cd 
~$ cd go/src/github.com/scdoproject
~$ git clone https://github.com/scdoproject/go-scdo.git

Cloning into 'go-scdo'...
remote: Enumerating objects: 53, done.
remote: Counting objects: 100% (53/53), done.
remote: Compressing objects: 100% (48/48), done.
remote: Total 10032 (delta 13), reused 15 (delta 4), pack-reused 9979
Receiving objects: 100% (10032/10032), 12.25 MiB | 18.45 MiB/s, done.
Resolving deltas: 100% (5804/5804), done.
```

### 编译 go-scdo：

linux/mac环境：

```
~$ cd go-scdo
~$ make all

go build -o ./build/discovery ./cmd/discovery
Done discovery building
go build -o ./build/node ./cmd/node 
Done node building
go build -o ./build/client ./cmd/client
Done full node client building
go build -o ./build/light ./cmd/client/light
Done light node client building
go build -o ./build/tool ./cmd/tool
Done tool building
go build -o ./build/vm ./cmd/vm
Done vm building
```

所有可执行文件在 ./build 目录下。

对于Windows，在命令提示符下执行“ buildall.bat”，而不是“ make all”。
