转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

版本 1 当前的 »

先确认当前的共识参数

state get resource 0x1 0x1::Config::Config<0x1::ConsensusConfig::ConsensusConfig>
{
  "ok": {
    "json": {
      "payload": {
        "base_block_difficulty_window": 24,
        "base_block_gas_limit": 200000000,
        "base_block_time_target": 10000,
        "base_max_uncles_per_block": 2,
        "base_reward_per_block": 10000000000,
        "base_reward_per_uncle_percent": 10,
        "epoch_block_count": 240,
        "max_block_time_target": 60000,
        "min_block_time_target": 5000,
        "strategy": 3,
        "uncle_rate_target": 100
      }
    },
    "raw": "0x6400000000000000102700000000000000e40b540200000000000000000000000a00000000000000f0000000000000001800000000000000881300000000000060ea000000000000020000000000000000c2eb0b0000000003"
  }
}

发起提案交易

这个交易可以以任何账号发起,注意参数顺序,确保不要变更其他不想变更的字段, 可以参考方法:

  module OnChainConfig{
  
  public ( script ) fun propose_update_consensus_config(account: signer,
                                                          uncle_rate_target: u64,
                                                          base_block_time_target: u64,
                                                          base_reward_per_block: u128,
                                                          base_reward_per_uncle_percent: u64,
                                                          epoch_block_count: u64,
                                                          base_block_difficulty_window: u64,
                                                          min_block_time_target: u64,
                                                          max_block_time_target: u64,
                                                          base_max_uncles_per_block: u64,
                                                          base_block_gas_limit: u64,
                                                          strategy: u8,
                                                          exec_delay: u64);
                                              
}

比如下面的提案就只修改了 uncle_rate_target 到 300,max_block_time_target 为 30000

account execute-function -s 0x68b069383b902607f1a9d8c0da7cf539 --function 0x1::OnChainConfigScripts::propose_update_consensus_config --arg 300  --arg 10000 --arg 10000000000u128 --arg 10 --arg 240 --arg 24 --arg 3000 --arg 30000 --arg 2 --arg 200000000 --arg 3u8 --arg 0 -b

交易执行后,再次确认自己提交的提案数据:

state get resource 0x68b069383b902607f1a9d8c0da7cf539 0x1::Dao::Proposal<0x1::STC::STC,0x1::OnChainConfigDao::OnChainConfigUpdate<0x1::ConsensusConfig::ConsensusConfig>>
{
  "ok": {
    "json": {
      "action": {
        "vec": [
          {
            "value": {
              "base_block_difficulty_window": 24,
              "base_block_gas_limit": 200000000,
              "base_block_time_target": 10000,
              "base_max_uncles_per_block": 2,
              "base_reward_per_block": 10000000000,
              "base_reward_per_uncle_percent": 10,
              "epoch_block_count": 240,
              "max_block_time_target": 30000,
              "min_block_time_target": 3000,
              "strategy": 3,
              "uncle_rate_target": 300
            }
          }
        ]
      },
      "action_delay": 1000,
      "against_votes": 0,
      "end_time": 1652933240648,
      "eta": 0,
      "for_votes": 0,
      "id": 43,
      "proposer": "0x68b069383b902607f1a9d8c0da7cf539",
      "quorum_votes": 1978801654778413,
      "start_time": 1652932640648
    },
    "raw": "0x2b0000000000000068b069383b902607f1a9d8c0da7cf539887f76da8001000048a77fda8001000000000000000000000000000000000000000000000000000000000000000000000000000000000000e8030000000000002dcab6a9b50707000000000000000000012c01000000000000102700000000000000e40b540200000000000000000000000a00000000000000f0000000000000001800000000000000b80b0000000000003075000000000000020000000000000000c2eb0b0000000003"
  }
}

确认提案状态并进行投票

确认提案状态, 第一个参数是发起提案的地址,第二个参数是提案 id ,确认返回值是 2, 如果是 1 说明是在公示阶段,需要等待。如果是 3 说明投票已经过期,需要删除提案,重新发起(测试网的过期时间比较快)。

dev call --function 0x1::Dao::proposal_state -t 0x1::STC::STC -t 0x1::OnChainConfigDao::OnChainConfigUpdate<0x1::ConsensusConfig::ConsensusConfig> --arg 0x68b069383b902607f1a9d8c0da7cf539 --arg 43

{
  "ok": [
    2
  ]
}

可通过以下命令删除提案

account execute-function -s 0x68b069383b902607f1a9d8c0da7cf539 --function 0x1::Dao::destroy_terminated_proposal -t 0x1::STC::STC -t 0x1::OnChainConfigDao::OnChainConfigUpdate<0x1::ConsensusConfig::ConsensusConfig> --arg 0x68b069383b902607f1a9d8c0da7cf539  --arg 43 -b

通过以下命令确认投票阈值:

dev call --function 0x1::Dao::quorum_votes -t 0x1::STC::STC

通过以下命令进行投票:

account execute-function -s 0x0000000000000000000000000a550c18 --function 0x1::DaoVoteScripts::cast_vote -t 0x1::STC::STC -t 0x1::OnChainConfigDao::OnChainConfigUpdate<0x1::ConsensusConfig::ConsensusConfig> --arg 0x68b069383b902607f1a9d8c0da7cf539 --arg 44 --arg true --arg 9135020000000000u128 -b

投票完成后等待投票期过, 可以通过以下命令投票时间,返回值的第一个值是 id,第二个值是开始时间,第三个值是结束时间,第四个值是同意的票数,第五个值时反对的票数。

dev call --function 0x1::Dao::proposal_info -t 0x1::STC::STC -t 0x1::OnChainConfigDao::OnChainConfigUpdate<0x1::ConsensusConfig::ConsensusConfig> --arg 0x68b069383b902607f1a9d8c0da7cf539
{
  "ok": [
    44,
    1652934663057,
    1652935263057,
    9135020000000000,
    0
  ]
}

proposal_state 返回值为 4 的时候,说明投票通过。

放入待执行队列

account execute-function -s 0x68b069383b902607f1a9d8c0da7cf539 --function 0x1::Dao::queue_proposal_action -t 0x1::STC::STC -t 0x1::OnChainConfigDao::OnChainConfigUpdate<0x1::ConsensusConfig::ConsensusConfig> --arg 0x68b069383b902607f1a9d8c0da7cf539 --arg 44 -b

执行提案

检查提案状态,待执行公示期过后:

account execute-function -s 0x68b069383b902607f1a9d8c0da7cf539 --function 0x1::OnChainConfigScripts::execute_on_chain_config_proposal -t 0x1::ConsensusConfig::ConsensusConfig --arg 44 -b

取回质押 Token

account execute-function -s 0x0000000000000000000000000a550c18 --function 0x1::DaoVoteScripts::unstake_vote -t 0x1::STC::STC -t 0x1::OnChainConfigDao::OnChainConfigUpdate<0x1::ConsensusConfig::ConsensusConfig> --arg 0x68b069383b902607f1a9d8c0da7cf539 --arg 44 -b

投票状态说明

    const PENDING: u8 = 1; //等待公示时期
    const ACTIVE: u8 = 2;  //正在进行投票
    const DEFEATED: u8 = 3; //投票期过后,同意的票数小于等于反对的票数,或者同意的票数小于投票阈值,提案被拒绝 
    const AGREED: u8 = 4; //投票期过后,同意的票数大于反对的票数,提案通过
    const QUEUED: u8 = 5; //投票通过的提案被放入等待执行队列进行公示,当前公示期为 24 小时
    const EXECUTABLE: u8 = 6; //经过公示期后,进入可执行状态。任何人可以触发执行。
    const EXTRACTED: u8 = 7; //提案已经执行

  • 无标签