挖矿
SCDO主网由四个分片组成,使用PoW工作量证明共识算法。每个分片的的行为类似一个区块链。尽管用户可以在一个分片内或两个不同的分片之间发送交易和事务,但挖矿节点(一个计算机程序)只能在一个分片中挖掘。为了挖掘SCDO token,您需要一个名为node的计算机程序和一个json格式的配置文件。配置文件包含两个关键元素:接收通证(token)奖励的地址-coinbase,以及用于SCDO p2p网络连接的唯一的私钥-privateKey。在接下来的几节中,我们将说明如何生成coinbase ,privateKey和编写一个配置文件。这些完成后,您就可以挖掘SCDO token了。
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 # 都会给出不同的结果。这是对的。
在启动挖矿节点之前,您的计算机必须连接到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通证。以下命令将执行此操作:
$ $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网络是点对点(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.配置文件