Skip to content

将旧版Znodes迁移到新的确定性Znodes系统

justanwar edited this page Jun 15, 2020 · 4 revisions

将旧版Znodes迁移到新的确定性Znodes系统

Zcoin v.14.0.0部署确定性Znodes。

本指南为区块高度278300处(大约2020年6月22日世界标准时间12:00),注册Znode pro-tx后的步骤。 本指南旨在帮助用户将旧版Znodes迁移到新的确定性Znodes系统。此系统与之前的不同,用户无需“启动”Znode,只需通过称为提供商注册交易(protx)的特殊交易在Zcoin区块链上注册Znode。

迁移准备

通过以下命令将旧版Znodes注册为确定性Znodes:

protx register "collateralHash" collateralIndex "ipAndPort" "ownerAddress" "operatorPubKey" "votingAddress" "operatorReward" "payoutAddress" "feeSourceAddress"

示例如下:

protx register "4950f88867b69760d3cd7c1f53531340f6723eb8f7d7f00730abfa12c5fe10e0" "0" "207.148.122.12:8168" "TRVDAxJwaZYFfmti4aTeKCByz1jbMq8Jy4" "995b3e1e2a65ce960a8cc7d305c5914b7f60e888c338c1f3317efbdcac58e82ecc110315ce03f49d9d387ff35c2796ad" "" "0" "TEZ8M8Fgp8h4HvUjXtjz3krYraRtySiXdw"

虽然这看起来十分复杂,但是请放心!本指南将会对这些字段进行一一解释。

步骤1:获取1000个XZC Znode抵押品的信息

字段:collateralHash, collateralIndex, ipAndPort

collateralHash:1000个XZC的交易id

collateralIndex:该id内1000个XZC的索引(通常为0或1)

`ipAndPort``:托管Znode的VPS的IP地址和端口。(如95.210.72.33:8168)

如果你有旧版Znodes,这些信息都可以在znode.conf中获取。来看一下znode.conf中的示例条目

Legacy01 207.148.122.12:8168 7EDVXuXszTFLiUif538HhDVvpxhw7gYkGH1w2fkXgCXUW158Wiz 4950f88867b69760d3cd7c1f53531340f6723eb8f7d7f00730abfa12c5fe10e0 0

如上所示,我们把想要迁移的Znode标记为 Legacy01

collateralHash:4950f88867b69760d3cd7c1f53531340f6723eb8f7d7f00730abfa12c5fe10e0

collateralIndex:0

ipAndPort:207.148.122.12:8168

获取每个Znode条目的所有信息。

步骤2:为每个Znode生成未使用的新地址,作为 ownerAddress

字段:ownerAddress,votingAddress

你需要为你拥有的每个Znode提供一个未使用的新地址。你必须拥有这个地址。

例如:如果你有五个Znodes,那你就需要五个新的ownerAddress。这些地址的账户不能有余额,也不能用于任何其他用途。

要生成新地址,可以前往“Help(帮助)”——“Debug window(调试窗口)”——“Console(控制台)”,然后键入“getnewaddress(获取新地址)”,或者前往“File(文件)”——“Receiving Addresses(接收地址)”,然后单击“New(新建)”。重复此操作,直到为每个Znode都创建好新地址。

你的ownerAddress也将被用于votingAddress(投票地址)字段,并将始终不变。

我们不建议将这些地址用于其他任何用途。请勿将此地址作为payoutAddress(支付地址)。

步骤3:指定用于支付protx交易费用的地址

字段:feeSourceAddress

支付protx的交易费需要一个有账户余额的地址。此地址将被用于feeSourceAddress字段。

如果未指定地址,则默认使用支付地址。如果支付地址的余额不足以支付交易费用,那么Znode就会注册失败。

请确保你的钱包中有足够的zcoin支付交易费用,然后再前往“Help(帮助)”——“Debug window(调试窗口)”——“Console(控制台)”,并输入以下命令:

listaddressbalances 0.01

此命令将会列出所有余额超过0.01 XZC的地址。

你可以在此列表中选一个地址作为feeSourceAddress

确保使用的Zcoin地址有足够的余额支付交易费用。

步骤4:为每个Znode生成BLS密钥对

字段:operatorPubKeyoperatorKey

如果你自己托管Znode,那么你就需要为每个Znode生成一个BLS私钥/公钥对。

这些密钥将用于Znode操作或用于更新Znode相关信息(比如更改VPS)。它们大致相当于旧Znode系统中的znodeprivkey。这些密钥无法控制资金,但可以控制Znode,这意味着这些密钥可停用或更改Znode IP。

如果你使用Znode托管服务提供商,则无需生成BLS密钥对。Znode托管服务提供商会向你提供他们的operatorPubKey,用于protx注册交易。因此此步骤可跳过。

如果你自己托管Znode,则可以前往“Help(帮助)”——“Debug window(调试窗口)”——“Console(控制台)”,输入bls generate命令来生成BLS密钥对。

例如:

bls generate
 
{
  "secret": "3235bae58e1b46653ee6fd457018c3756797b3b2b5306734873b4a39d9cb8a5f",
  "public": "8446344bbad6354b924e32b8432ceab32066c40524d95c52e28c1fe30990661ff72b707626339507a3ec43dc28b4e022"
}

public后面的字符串就是你的operatorPubKeysecret后面的字符串就是你的operatorKey

operatorPubKey用于protx注册交易。

operatorKey用于VPS上Znode的zcoin.conf文件。你可以通过登录VPS,使用文本编辑器打开zcoin.conf,并插入新行znodeblsprivkey=operatorKey来完成此操作。例如,

znodeblsprivkey=3235bae58e1b46653ee6fd457018c3756797b3b2b5306734873b4a39d9cb8a5f

请勿在转换期间删除VPS上zcoin.conf中的znodeprivkey行。之后的更新版本将会解决此问题。

步骤5:指定Znode托管提供商的Znode奖励百分比(如果有托管的话)。

字段:operatorReward

这是支付给Znode托管提供商的部分Znode奖励,按百分比表示(0.00到100.00)。如果你自己托管Znode,就设置为0。如果你已通过外部支付或订阅方法向Znode托管提供商支付过了,那么他们很可能会要求你将其设置为0。

运营商需要使用protx update_service命令设置operatorPayoutAddress,以接收部分Znode奖励,否则奖励都将归Znode所有者所有。

设置完毕后,运营商的奖励百分比将无法更改,因此请务必核对好!

步骤6:指定Znode奖励的接收地址

字段:payoutAddress

在旧版Znode系统中,Znode奖励始终支付到与抵押品相同的地址。而在新系统中,你可以指定任何地址。你甚至可以让多个Znode使用同一个地址(尽管这不利于隐私)。

任意选择钱包中的一个地址,或创建一个新地址作为payoutAddress。

请勿将你的ownerAddress / votingAddress用作payoutAddress。这些地址不可行。

注册Znode

完成以上步骤后,就可以准备进行protx注册交易,在Zcoin区块链上注册Znode! 要将Znode迁移至确定性Znode系统,使用以下命令: protx register "collateralHash" collateralIndex "ipAndPort" "ownerAddress" "operatorPubKey" "votingAddress" "operatorReward" "payoutAddress" "feeSourceAddress"

以下为示例:

示例1:自托管Znode

# znode.conf
Legacy01 207.148.122.12:8168 7EDVXuXszTFLiUif538HhDVvpxhw7gYkGH1w2fkXgCXUW158Wiz 4950f88867b69760d3cd7c1f53531340f6723eb8f7d7f00730abfa12c5fe10e0 0

我们可以使用以下命令将上述znode.conf中的自托管Znode迁移至零operatorReward、从payoutAddress收取交易费用的确定性Znode:

protx register "4950f88867b69760d3cd7c1f53531340f6723eb8f7d7f00730abfa12c5fe10e0" "0" "207.148.122.12:8168" "TRVDAxJwaZYFfmti4aTeKCByz1jbMq8Jy4" "995b3e1e2a65ce960a8cc7d305c5914b7f60e888c338c1f3317efbdcac58e82ecc110315ce03f49d9d387ff35c2796ad" "" "0" "TEZ8M8Fgp8h4HvUjXtjz3krYraRtySiXdw"
collateralHash: 4950f88867b69760d3cd7c1f53531340f6723eb8f7d7f00730abfa12c5fe10e0
collateralIndex: 0
ipAndPort: 207.148.122.12:8168
ownerAddress: TRVDAxJwaZYFfmti4aTeKCByz1jbMq8Jy4
votingAddress: "" (defaults to ownerAddress)
operatorReward: 0
payoutAddress: TEZ8M8Fgp8h4HvUjXtjz3krYraRtySiXdw
feeSourceAddress: (defaults to taking the fee from the payout address)

示例2:使用托管服务的Znode

我们可以使用类似命令来注册由Znode提供商托管的Znode。ipAndPort字段保留为空,因为提供商将在其端执行另一个protx命令。operatorPubKey将由提供商提供。

protx register "67234c08bfa93b0317df14fa6d3269703bbbf1130382c6929ede2525c0d47f23" "0" "" "TTPMVZEpucRkc6bEuQAQenbeVnkA2zF8nY" "8ddd4aa99b6f766059c4653d3cee2a6a75b4888cb23e1cc34af0a16e479d5b16df695a2042478d155ac23aa9c9bc4bcd" "" "0" "TX7Wgd9b7TuHBnDS3j9isUKcmrANgL2qP2"

常见的protx命令

使用此命令在网络上注册Znode。你可以将IP和端口部分保留为空(“”),稍后再使用protx update_service命令对其进行更新。VotingAddress不用于Znodes,因此将其保留为空(“”):

protx register "collateralHash" collateralIndex "ipAndPort" "ownerAddress" "operatorPubKey" "votingAddress" operatorReward "payoutAddress" "feeSourceAddress"

使用此命令来更新你的IP地址或启动PoSe-banned(禁PoSe)的Znode:

protx update_service "proTxHash" "ipAndPort" "operatorKey" ("operatorPayoutAddress" "feeSourceAddress" )

使用此命令来更新operator public key或payout address。VotingAddress不用于Znodes,因此将其保留为空(“”):

protx update_registrar "proTxHash" "operatorPubKey" "votingAddress" "payoutAddress" ( "feeSourceAddress" )

使用此命令撤消Znode的operator key。这将使Znode的IP地址为空,并将Znode发送到PoSe-banned状态。Znode托管商可以使用此命令停止向Znode所有者提供服务:

protx revoke "proTxHash" "operatorKey" ( reason "feeSourceAddress")

常见问题解答

如何更改Znode的IP地址?

使用protx update_service命令。

我可以将支付地址设为我的抵押地址吗?

可以。

我的Znode处于PoSe-banned状态。我已经解决了Znode出现的问题,要如何重新启动它?

使用protx update_service命令。

如果知道了operator private key,那么可以撤消另一个Znode吗?

可以。所以请保管好你的operator private key。

我可以在旧的失效节点上重新使用BLS密钥对吗?

不可以。你得生成新的密钥对。

撤销原因表

下表可用于protx revoke命令中的reason字段。

原因数值 原因
0 未指定
1 服务终止
2 密钥被盗用
3 密钥更改(未被盗用)
Clone this wiki locally