exSat Network
  • πŸ”—Important Links
  • 🌌Our Approach
    • What is exSat
      • exSat’s Docking Layer Approach
      • The Paradigm Shift of the Bitcoin Economic Ecosystem
      • Challenges Addressed by exSat
    • Architecture
      • Data Consensus Protocol
        • Network launch phases
        • Decentralized UTXO index
        • Synchronizers and Validators
        • Hybrid Consensus Mechanism
        • Decentralized execution
      • Decentralized Asset Custody (Coming soon)
      • Enhancing the Bitcoin Ecosystem with Smart Contract Capabilities
      • Expanding Possibilities with Rollups
    • $XSAT Tokenomics
      • Total Supply and Issuance
      • Rewards to Synchronizers and Validators
  • πŸ› οΈGuides of Data Consensus
    • Quick Start
    • UTXO Initialization
      • Data preparation
      • Analysis on the UTXO data tobe uploaded
      • Verify the data uploaded to exSat
    • Run a Sychronizer
      • Requirements for Synchronizers
      • Rewards for synchronizers
      • Run as Synchronizer
        • Run from source code
        • Run with Docker
    • Run a BTC Validator
      • Requirements and rewards for BTC Validators
      • Run as BTC validator
        • Run from source code
        • Run with docker
    • Run a XSAT Validator
      • Run as XSAT Validator
        • Run from source code
        • Run with docker
      • Run multiple XSAT Validators
    • Others
      • Operation references
        • Preparation Before You Start
          • Account Preparation
          • Run a BTC node
          • Environment requirements
          • Prerequisites
        • Synchronizer operations
          • Create New Synchronizer Account
          • Synchronizer Registration
          • Execute the synchronizer client
          • Revote For Consensus
          • Change Reward Address
          • Check and claim rewards for synchronizer
          • Update to new Docker version for Synchronizer
        • Validator operations
          • Create New BTC Validator Account
          • Create New XSAT Validator Account
          • Stake for Validator and claim rewards
          • Change Stake Address
          • Change Commission Address
          • Change Commission Ratio
          • Configure Display Information for Your Validator Account
          • Execute the validator client
          • Update to new Docker version for Validator
        • Common operations
          • Import from seed phrase
          • Import from Private Key
          • Set BTC RPC Node
          • Refill BTC for Gas Fees
          • Export private key
          • Remove Your Account
          • Upgrade to new version
          • View Logs
          • Environment variables
  • πŸ‘¨β€πŸ’»Developer Guides
    • Quick Start
    • Native Layer Developer Guides
      • exSat consensus contracts
        • Pool Register Contract
        • UTXO Management Contract
        • Reward Distribution Contract
        • Block Consensus Contract
        • Block Synchronization Contract
        • Validator Management Contract
        • Staking Contract
      • Run exSat native layer RPC Node
  • πŸ–₯️User Guides
    • Wallet Setup
    • Bridge Your Assets
    • Earn Rewards via BTC Staking
    • Explore Our Ecosystem
  • Popular Token Contract Addresses
  • πŸ“šReference
  • πŸ“¦Cutodian Guides
  • πŸ”Security Reports
    • Audit Report From Blocksec
  • πŸ”‘Terms and Conditions
    • Terms Of Service
    • Privacy Policy
  • 🎁PR & Press
  • ☎️Contact US
Powered by GitBook
On this page
  • endrmng.sat
  • Actions
  • Quickstart
  • Table Information
  • TABLE globalid
  • TABLE config
  • TABLE whitelist
  • TABLE evmproxies
  • TABLE creditproxy
  • TABLE evmstakers
  • TABLE stakers
  • TABLE validators
  • TABLE stat
  • ACTION setdonateacc
  • ACTION addwhitelist
  • ACTION delwhitelist
  • ACTION addevmproxy
  • ACTION delevmproxy
  • ACTION addcrdtproxy
  • ACTION delcrdtproxy
  • ACTION setstatus
  • ACTION regvalidator
  • ACTION proxyreg
  • ACTION config
  • ACTION setdonate
  • ACTION stake
  • ACTION unstake
  • ACTION newstake
  • ACTION claim
  • ACTION evmstake
  • ACTION evmunstake
  • ACTION evmnewstake
  • ACTION evmclaim
  • ACTION evmclaim2
  • ACTION vdrclaim
  • STRUCT reward_details_row
  • ACTION distribute
  • ACTION stakexsat
  • ACTION unstakexsat
  • ACTION restakexsat
  • ACTION evmstakexsat
  • ACTION evmunstkxsat
  • ACTION evmrestkxsat
  • ACTION creditstake
  • ACTION newregvldtor
  • ACTION evmconfigvald
  • ACTION evmsetstaker
  • ACTION setrwdaddr
  • ACTION setstakebase
  • ACTION updcreditstk
  • ACTION endorse
  • ACTION setdepproxy
  1. Developer Guides
  2. Native Layer Developer Guides
  3. exSat consensus contracts

Validator Management Contract

endrmng.sat

Actions

  • Add evm proxy account

  • Delete evm proxy account

  • Add whitelist (proxyreg or evmcaller)

  • Delete whitelist (proxyreg or evmcaller)

  • Staking, unstaking, changing staking, and claiming rewards on native chains and EVM

  • Validator claiming rewards

  • Batch allocation of validator rewards from rwddist.xsat

Quickstart

# setdonateacc @endrmng.xsat
$ cleos push action endrmng.xsat setdonateacc '{"donation_account": "alice", "min_donate_rate": 2000}' -p endrmng.xsat

# setdonate @validator
$ cleos push action endrmng.xsat setdonate '{"validator": "alice", "donate_rate": 100}' -p alice

# addevmproxy @endrmng.xsat
$ cleos push action endrmng.xsat addevmproxy '{"caller": "caller1", "proxy": "e4d68a77714d9d388d8233bee18d578559950cf5"}' -p endrmng.xsat

# delevmproxy @endrmng.xsat
$ cleos push action endrmng.xsat delevmproxy '{"caller": "caller1", "proxy": "e4d68a77714d9d388d8233bee18d578559950cf5"}' -p endrmng.xsat

# addcrdtproxy @endrmng.xsat
$ cleos push action endrmng.xsat addcrdtproxy '{"proxy": "e4d68a77714d9d388d8233bee18d578559950cf5"}' -p endrmng.xsat

# delcrdtproxy @endrmng.xsat
$ cleos push action endrmng.xsat delcrdtproxy '{"proxy": "e4d68a77714d9d388d8233bee18d578559950cf5"}' -p endrmng.xsat

# addwhitelist @endrmng.xsat type = ["proxyreg", "evmcaller"]
$ cleos push action endrmng.xsat addwhitelist '{"type": "proxyreg", "account": "alice"}' -p endrmng.xsat

# delwhitelist @endrmng.xsat type = ["proxyreg", "evmcaller"]
$ cleos push action endrmng.xsat delwhitelist '{"type": "proxyreg", "account": "alice"}' -p endrmng.xsat

# setstatus @endrmng.xsat
$ cleos push action endrmng.xsat setstatus '{"validator": "alice", "disabled_staking": true}' -p endrmng.xsat

# regvalidator @validator
$ cleos push action endrmng.xsat regvalidator '{"validator": "alice", "financial_account": "alice"}' -p alice

# proxyreg @proxy
$ cleos push action endrmng.xsat proxyreg '{"proxy": "alice", "validator": "alice", "financial_account": "alice"}' -p alice

# config @validator decimal = 10000
$ cleos push action endrmng.xsat config '{"validator": "alice", "commission_rate": 2000, "financial_account": "alice"}' -p alice

# stake @staking.xsat
$ cleos push action endrmng.xsat stake '{"staker": "alice", "validator": "alice", "quantity": "0.00000020 BTC"}' -p staking.xsat

# unstake @staking.xsat
$ cleos push action endrmng.xsat unstake '{"staker": "alice", "validator": "alice", "quantity": "0.00000020 BTC"}' -p staking.xsat

# newstake @staker
$ cleos push action endrmng.xsat newstake '{"staker": "alice", "old_validator": "alice", "new_validator": "bob", "quantity": "0.00000020 BTC"}' -p alice

# claim @staker
$ cleos push action endrmng.xsat claim '{"staker": "alice", "validator": "alice"}' -p alice

# evmstake @auth scope is `evmcaller` evmproxies account
$ cleos push action endrmng.xsat evmstake '{"caller": "evmutil.xsat", "proxy": "e4d68a77714d9d388d8233bee18d578559950cf5", "staker": "bbbbbbbbbbbbbbbbbbbbbbbb5530ea015b900000",  "validator": "alice", "quantity": "0.00000020 BTC"}' -p alice

# evmunstake @auth scope is `evmcaller` evmproxies account
$ cleos push action endrmng.xsat evmunstake '{"caller": "evmutil.xsat", "proxy": "e4d68a77714d9d388d8233bee18d578559950cf5", "staker": "bbbbbbbbbbbbbbbbbbbbbbbb5530ea015b900000",  "validator": "alice", "quantity": "0.00000020 BTC"}' -p evmutil.xsat 

# evmnewstake @auth scope is `evmcaller` evmproxies account
$ cleos push action endrmng.xsat evmnewstake '{"caller": "evmutil.xsat", "proxy": "e4d68a77714d9d388d8233bee18d578559950cf5", "staker": "bbbbbbbbbbbbbbbbbbbbbbbb5530ea015b900000",  "old_validator": "alice", "new_validator": "bob", "quantity": "0.00000020 BTC"}' -p evmutil.xsat

# evmclaim @caller whitelist["evmcaller"] 
$ cleos push action endrmng.xsat evmclaim '{"caller": "evmutil.xsat", "proxy": "e4d68a77714d9d388d8233bee18d578559950cf5", "staker": "bbbbbbbbbbbbbbbbbbbbbbbb5530ea015b900000",  "validator": "alice"}' -p evmutil.xsat

# evmclaim2 @caller whitelist["evmcaller"] 
$ cleos push action endrmng.xsat evmclaim2 '{"caller": "evmutil.xsat", "proxy": "e4d68a77714d9d388d8233bee18d578559950cf5", "staker": "bbbbbbbbbbbbbbbbbbbbbbbb5530ea015b900000",  "validator": "alice", "donate_rate": 100}' -p evmutil.xsat

# vdrclaim @validator
$ cleos push action endrmng.xsat vdrclaim '{"validator": "alice"}' -p alice 

# distribute @rwddist.xsat
$ cleos push action endrmng.xsat distribute '{"height": 840000, [{"validator": "alice", "staking_rewards": "0.00000020 XSAT", "consensus_rewards": "0.00000020 XSAT"}]}' -p rwddist.xsat

# stakexsat
$ cleos push action endrmng.xsat stakexsat '{"staker": "alice", "validator": "alice", "quantity": "0.00000020 XSAT"}' -p xsatstk.xsat

# unstakexsat 
$ cleos push action endrmng.xsat unstakexsat '{"staker": "alice", "validator": "alice", "quantity": "0.00000020 XSAT"}' -p xsatstk.xsat

# restakexsat 
$ cleos push action endrmng.xsat restakexsat '{"staker": "alice", "old_validator": "alice", "new_validator": "bob", "quantity": "0.00000020 XSAT"}' -p alice

# evmstakexsat @auth scope is `evmcaller` evmproxies account
$ cleos push action endrmng.xsat evmstakexsat '{"caller": "evmutil.xsat", "proxy": "e4d68a77714d9d388d8233bee18d578559950cf5", "staker": "bbbbbbbbbbbbbbbbbbbbbbbb5530ea015b900000",  "validator": "alice", "quantity": "0.00000020 XSAT"}' -p evmutil.xsat

# evmunstkxsat @auth scope is `evmcaller` evmproxies account
$ cleos push action endrmng.xsat evmunstkxsat '{"caller": "evmutil.xsat", "proxy": "e4d68a77714d9d388d8233bee18d578559950cf5", "staker": "bbbbbbbbbbbbbbbbbbbbbbbb5530ea015b900000",  "validator": "alice", "quantity": "0.00000020 XSAT"}' -p evmutil.xsat 

# evmrestkxsat @auth scope is `evmcaller` evmproxies account
$ cleos push action endrmng.xsat evmrestkxsat '{"caller": "evmutil.xsat", "proxy": "e4d68a77714d9d388d8233bee18d578559950cf5", "staker": "bbbbbbbbbbbbbbbbbbbbbbbb5530ea015b900000",  "old_validator": "alice", "new_validator": "bob", "quantity": "0.00000020 XSAT"}' -p evmutil.xsat

# creditstake @auth custody.xsat 
$ cleos push action endrmng.xsat creditstake '{"proxy": "e4d68a77714d9d388d8233bee18d578559950cf5", "staker": "bbbbbbbbbbbbbbbbbbbbbbbb5530ea015b900000",  "validator": "alice", "quantity": "0.00000020 XSAT"}' -p custody.xsat

# newregvalidator @auth validator
$ cleos push action endrmng.xsat newregvldtor '{"validator": "alice", "role": 0, "stake_addr": "e4d68a77714d9d388d8233bee18d578559950cf5", "reward_addr": "e4d68a77714d9d388d8233bee18d578559950cf5", "commission_rate": 2000}' -p alice

# evmconfigvald @auth validator
$ cleos push action endrmng.xsat evmconfigvald '{"validator": "alice", "commission_rate": 2000, "donate_rate": 100}' -p alice

# evmsetstaker @auth validator
$ cleos push action endrmng.xsat evmsetstaker '{"validator": "alice", "stake_addr": "e4d68a77714d9d388d8233bee18d578559950cf5"}' -p alice

# setrwdaddr @auth validator
$ cleos push action endrmng.xsat setrwdaddr '{"validator": "alice", "reward_addr": "e4d68a77714d9d388d8233bee18d578559950cf5"}' -p alice

# setstakebase @auth get_self()
$ cleos push action endrmng.xsat setstakebase '{"xsat_base_stake": "2100 XSAT", "btc_base_stake": "100 BTC"}' -p endrmng.xsat

# updcreditstk @auth get_self()
$ cleos push action endrmng.xsat updcreditstk '{"is_close": true}' -p endrmng.xsat

# endorse @auth BLOCK_ENDORSE_CONTRACT
$ cleos push action endrmng.xsat endorse '{"validator": "alice", "height": 840000}' -p block_endorse.xsat

Table Information

$ cleos get table endrmng.xsat endrmng.xsat config
$ cleos get table endrmng.xsat evmcaller whitelist 
$ cleos get table endrmng.xsat proxyreg whitelist 
$ cleos get table endrmng.xsat <evmcaller> evmproxies
$ cleos get table endrmng.xsat endrmng.xsat creditproxy 
$ cleos get table endrmng.xsat endrmng.xsat evmstakers 
$ cleos get table endrmng.xsat endrmng.xsat stakers 
$ cleos get table endrmng.xsat endrmng.xsat validators 
$ cleos get table endrmng.xsat endrmng.xsat stat

TABLE globalid

scope

endrmng.sat

params

  • {uint64_t} staking_id - the latest staking id

example

{
  "staking_id": 1
}

TABLE config

scope

endrmng.sat

params

  • {string} donation_account - the account designated for receiving donations

  • {binary_extension<uint16_t>} min_donate_rate - minimum donation rate

example

{
  "donation_account": "donate.xsat",
  "min_donate_rate": 2000
}

TABLE whitelist

scope proxyreg or evmcaller

params

  • {name} account - whitelist account

example

{
  "account": "alice"
}

TABLE evmproxies

scope

whitelist of type evmcaller

params

  • {uint64_t} id - evm proxy id

  • {checksum160} proxy - evm proxy account

example

{
  "id": 1,
  "proxy": "bb776ae86d5996908af46482f24be8ccde2d4c41"
}

TABLE creditproxy

scope

the account whose scope is evmcaller in the whitelist table

params

  • {uint64_t} id - evm proxy id

  • {checksum160} proxy - evm proxy account

example

{
  "id": 1,
  "proxy": "bb776ae86d5996908af46482f24be8ccde2d4c41"
}

TABLE evmstakers

scope

endrmng.sat

params

  • {uint64_t} id - evm staker id

  • {checksum160} proxy - proxy account

  • {checksum160} staker - staker account

  • {name} validator - validator account

  • {asset} quantity - total number of staking

  • {asset} xsat_quantity - the amount of XSAT tokens staked

  • {asset} total_donated - the total amount of XSAT that has been donated

  • {uint64_t} stake_debt - amount of requested stake debt

  • {asset} staking_reward_unclaimed - amount of stake unclaimed rewards

  • {asset} staking_reward_claimed - amount of stake claimed rewards

  • {uint64_t} consensus_debt - amount of requested consensus debt

  • {asset} consensus_reward_unclaimed - amount of consensus unclaimed rewards

  • {asset} consensus_reward_claimed - amount of consensus claimed rewards

example

{
  "id": 4,
  "proxy": "bb776ae86d5996908af46482f24be8ccde2d4c41",
  "staker": "e4d68a77714d9d388d8233bee18d578559950cf5",
  "validator": "alice",
  "quantity": "0.10000000 BTC",
  "xsat_quantity": "0.10000000 XSAT",
  "total_donated": "1.00000000 XSAT",
  "stake_debt": 1385452,
  "staking_reward_unclaimed": "0.00000000 XSAT",
  "staking_reward_claimed": "0.00000000 XSAT",
  "consensus_debt": 173181,
  "consensus_reward_unclaimed": "0.00000000 XSAT",
  "consensus_reward_claimed": "0.00000000 XSAT"
}

TABLE stakers

scope

endrmng.sat

params

  • {uint64_t} id - staker id

  • {name} staker - staker account

  • {name} validator - validator account

  • {asset} quantity - total number of staking

  • {asset} xsat_quantity - the amount of XSAT tokens staked

  • {asset} total_donated - the total amount of XSAT that has been donated

  • {uint64_t} stake_debt - amount of requested stake debt

  • {asset} staking_reward_unclaimed - amount of stake unclaimed rewards

  • {asset} staking_reward_claimed - amount of stake claimed rewards

  • {uint64_t} consensus_debt - amount of requested consensus debt

  • {asset} consensus_reward_unclaimed - amount of consensus unclaimed rewards

  • {asset} consensus_reward_claimed - amount of consensus claimed rewards

example

{
  "id": 2,
  "staker": "alice",
  "validator": "alice",
  "quantity": "0.10000000 BTC",
  "xsat_quantity": "0.10000000 XSAT",
  "total_donated": "1.00000000 XSAT",
  "stake_debt": 1385452,
  "staking_reward_unclaimed": "0.00000000 XSAT",
  "staking_reward_claimed": "0.00000000 XSAT",
  "consensus_debt": 173181,
  "consensus_reward_unclaimed": "0.00000000 XSAT",
  "consensus_reward_claimed": "0.00000000 XSAT"
}

TABLE validators

scope

endrmng.sat

params

  • {name} owner - staker id

  • {name} reward_recipient - receiving account for receiving rewards

  • {string} memo - memo when receiving reward transfer

  • {uint16_t} commission_rate - commission ratio, decimal is 10^4

  • {asset} quantity - the amount of BTC staked by the validator

  • {asset} qualification - the qualification of the validator

  • {asset} xsat_quantity - the amount of XSAT tokens staked by the validator

  • {uint16_t} donate_rate - the donation rate, represented as a percentage, ex: 500 means 5.00%

  • {asset} total_donated - the total amount of XSAT that has been donated

  • {uint128_t} stake_acc_per_share - staking rewards earnings per share

  • {uint128_t} consensus_acc_per_share - consensus reward earnings per share

  • {asset} staking_reward_unclaimed - unclaimed staking rewards

  • {asset} staking_reward_claimed - amount of stake claimed rewards

  • {asset} consensus_reward_unclaimed - amount of consensus unclaimed rewards

  • {asset} consensus_reward_claimed - amount of consensus claimed rewards

  • {asset} total_consensus_reward - total consensus rewards

  • {asset} consensus_reward_balance - consensus reward balance

  • {asset} total_staking_reward - total staking rewards

  • {asset} staking_reward_balance - staking reward balance

  • {time_point_sec} latest_staking_time - latest staking or unstaking time

  • {uint64_t} latest_reward_block - latest reward block

  • {time_point_sec} latest_reward_time - latest reward time

  • {bool} disabled_staking - whether to disable staking

  • {checksum160} stake_address - stake address

  • {checksum160} reward_address - reward address

  • {uint64_t} consecutive_vote_count - consecutive vote count

  • {uint64_t} latest_consensus_block - latest consensus block

  • {uint8_t} active_flag - active flag

  • {uint8_t} role - role

example

{
  "owner": "alice",
  "reward_recipient": "erc2o.xsat",
  "memo": "0x5EB954fB68159e0b7950936C6e1947615b75C895",
  "commission_rate": 0,
  "quantity": "102.10000000 BTC",
  "qualification": "102.10000000 BTC",
  "xsat_quantity": "1000.10000000 XSAT",
  "donate_rate": 100,
  "total_donated": "100.00000000 XSAT",
  "stake_acc_per_share": "39564978",
  "consensus_acc_per_share": "4945621",
  "staking_reward_unclaimed": "0.00000000 XSAT",
  "staking_reward_claimed": "0.00000000 XSAT",
  "consensus_reward_unclaimed": "0.00000000 XSAT",
  "consensus_reward_claimed": "0.00000000 XSAT",
  "total_consensus_reward": "5.04700642 XSAT",
  "consensus_reward_balance": "5.04700642 XSAT",
  "total_staking_reward": "40.37605144 XSAT",
  "staking_reward_balance": "40.37605144 XSAT",
  "latest_staking_time": "2024-07-13T09:16:26",
  "latest_reward_block": 840001,
  "latest_reward_time": "2024-07-13T14:29:32",
  "disabled_staking": 0,
  "stake_address": "e4d68a77714d9d388d8233bee18d578559950cf5",
  "reward_address": "e4d68a77714d9d388d8233bee18d578559950cf5",
  "consecutive_vote_count": 1,
  "latest_consensus_block": 840000,
  "active_flag": 1,
  "role": 0
 }

TABLE stat

scope

endrmng.sat

params

  • {asset} total_staking - btc total staking amount

  • {asset} xsat_total_staking - the total amount of XSAT staked

  • {asset} xsat_total_donated - the cumulative amount of XSAT donated

example

{
  "total_staking": "100.40000000 BTC",
  "xsat_total_staking": "100.40000000 XSAT",
  "xsat_total_donated": "100.40000000 XSAT"
}

ACTION setdonateacc

  • authority: endrmng.sat

Update donation account.

params

  • {string} donation_account - account to receive donations

  • {uint16_t} min_donate_rate - minimum donation rate

example

$ cleos push action endrmng.xsat setdonateacc '["alice", 2000]' -p endrmng.xsat

ACTION addwhitelist

  • authority: endrmng.sat

Add whitelist account

params

  • {name} type - whitelist type @see WHITELIST_TYPES

  • {name} account - whitelist account

example

$ cleos push action endrmng.xsat addwhitelist '["proxyreg", "alice"]' -p endrmng.xsat

ACTION delwhitelist

  • authority: endrmng.sat

Delete whitelist account

params

  • {name} type - whitelist type @see WHITELIST_TYPES

  • {name} account - whitelist account

example

$ cleos push action endrmng.xsat addwhitelist '["proxyreg", "alice"]' -p endrmng.xsat

ACTION addevmproxy

  • authority: endrmng.sat

Add evm proxy account

params

  • {name} caller - caller account

  • {checksum160} proxy - proxy account

example

$ cleos push action endrmng.xsat addevmproxy '["evmcaller", "bb776ae86d5996908af46482f24be8ccde2d4c41"]' -p endrmng.xsat

ACTION delevmproxy

  • authority: endrmng.sat

Delete evm proxy account

params

  • {name} caller - caller account

  • {checksum160} proxy - proxy account

example

$ cleos push action endrmng.xsat delevmproxy '["evmcaller", "bb776ae86d5996908af46482f24be8ccde2d4c41"]' -p endrmng.xsat

ACTION addcrdtproxy

  • authority: endrmng.sat

Add credit proxy account

params

  • {checksum160} proxy - proxy account

example

$ cleos push action endrmng.xsat addcrdtproxy '["bb776ae86d5996908af46482f24be8ccde2d4c41"]' -p endrmng.xsat

ACTION delcrdtproxy

  • authority: endrmng.sat

Delete credit proxy account

params

  • {checksum160} proxy - proxy account

example

$ cleos push action endrmng.xsat delcrdtproxy '["bb776ae86d5996908af46482f24be8ccde2d4c41"]' -p endrmng.xsat

ACTION setstatus

  • authority: endrmng.sat

Set validator staking status

params

  • {name} validator - validator account

  • {bool} disabled_staking - whether to disable staking

example

$ cleos push action endrmng.xsat setstatus '["alice",  true]' -p alice

ACTION regvalidator

  • authority: validator

Registering a validator

params

  • {name} validator - validator account

  • {name} financial_account - financial accounts

  • {uint16_t} commission_rate - commission ratio, decimal is 10^4

example

$ cleos push action endrmng.xsat regvalidator '["alice", "alice", 1000]' -p alice

ACTION proxyreg

  • authority: proxy

Proxy account registration validator

params

  • {name} proxy - proxy account

  • {name} validator - validator account

  • {string} financial_account - financial accounts

  • {uint16_t} commission_rate - commission ratio, decimal is 10^4

example

$ cleos push action endrmng.xsat proxyreg '["test.xsat", "alice", "alice",  1000]' -p test.xsat

ACTION config

  • authority: validator

Validator sets commission ratio and financial account

params

  • {name} validator - validator account

  • {optional<uint16_t>} commission_rate - commission ratio, decimal is 10^4

  • {optional<string>} financial_account - financial accounts

example

$ cleos push action endrmng.xsat config '["alice",  1000, "alice"]' -p alice

ACTION setdonate

  • authority: validator

Configure donate rate.

params

  • {name} validator - synchronizer account

  • {uint16_t} donate_rate - the donation rate, represented as a percentage, ex: 500 means 5.00%

example

$ cleos push action endrmng.xsat setdonate '["alice", 100]' -p alice

ACTION stake

  • authority: staking.xsat

Staking BTC to validator

params

  • {name} staker - staker account

  • {name} validator - validator account

  • {asset} quantity - staking amount

example

$ cleos push action endrmng.xsat stake '["alice",  "alice", "1.00000000 BTC"]' -p staking.xsat

ACTION unstake

  • authority: staking.xsat

Unstaking BTC from a validator

params

  • {name} staker - staker account

  • {name} validator - validator account

  • {asset} quantity - cancel staking amount

example

$ cleos push action endrmng.xsat unstake '["alice",  "alice", "1.00000000 BTC"]' -p staking.xsat

ACTION newstake

  • authority: staker

Staking BTC to a new validator

params

  • {name} staker - staker account

  • {name} old_validator - old validator account

  • {name} new_validator - new validator account

  • {asset} quantity - the amount of stake transferred to the new validator

example

$ cleos push action endrmng.xsat newstake '["alice",  "alice", "bob", "1.00000000 BTC"]' -p alice

ACTION claim

  • authority: staker

Claim staking rewards

params

  • {name} staker - staker account

  • {name} validator - validator account

example

$ cleos push action endrmng.xsat claim '["alice",  "bob"]' -p alice

ACTION evmstake

  • authority: caller

Staking BTC to validator via evm

params

  • {name} caller - caller account

  • {checksum160} proxy - evm proxy account

  • {checksum160} staker - evm staker account

  • {name} validator - validator account

  • {asset} quantity - staking amount

example

$ cleos push action endrmng.xsat evmstake '["evmutil.xsat", "bb776ae86d5996908af46482f24be8ccde2d4c41", "e4d68a77714d9d388d8233bee18d578559950cf5",  "alice", "1.00000000 BTC"]' -p evmutil.xsat

ACTION evmunstake

  • authority: caller

Unstake BTC from validator via evm

params

  • {name} caller - caller account

  • {checksum160} proxy - evm proxy account

  • {checksum160} staker - evm staker account

  • {name} validator - validator account

  • {asset} quantity - staking amount

example

$ cleos push action endrmng.xsat evmunstake '["evmutil.xsat", "bb776ae86d5996908af46482f24be8ccde2d4c41", "e4d68a77714d9d388d8233bee18d578559950cf5",  "alice", "1.00000000 BTC"]' -p evmutil.xsat

ACTION evmnewstake

  • authority: caller

Staking BTC to a new validator via evm

params

  • {name} caller - caller account

  • {checksum160} proxy - evm proxy account

  • {checksum160} staker - evm staker account

  • {name} old_validator - old validator account

  • {name} new_validator - new validator account

  • {asset} quantity - staking amount

example

$ cleos push action endrmng.xsat evmnewstake '["evmutil.xsat", "bb776ae86d5996908af46482f24be8ccde2d4c41", "e4d68a77714d9d388d8233bee18d578559950cf5",  "alice", "bob", "1.00000000 BTC"]' -p evmutil.xsat

ACTION evmclaim

  • authority: caller

Claim staking rewards through evm

params

  • {name} caller - caller account

  • {checksum160} proxy - evm proxy account

  • {checksum160} staker - evm staker account

  • {name} validator - validator account

example

$ cleos push action endrmng.xsat evmclaim '["evmutil.xsat", "bb776ae86d5996908af46482f24be8ccde2d4c41", "e4d68a77714d9d388d8233bee18d578559950cf5",  "alice"]' -p evmutil.xsat

ACTION evmclaim2

  • authority: caller

Claim staking rewards through evm

params

  • {name} caller - caller account

  • {checksum160} proxy - evm proxy account

  • {checksum160} staker - evm staker account

  • {name} validator - validator account

  • {uint16_t} donate_rate - the donation rate, represented as a percentage, ex: 500 means 5.00%

example

$ cleos push action endrmng.xsat evmclaim2 '["evmutil.xsat", "bb776ae86d5996908af46482f24be8ccde2d4c41", "e4d68a77714d9d388d8233bee18d578559950cf5",  "alice", 100]' -p evmutil.xsat

ACTION vdrclaim

  • authority: validator->reward_recipient or evmutil.xsat

Validator Receive Rewards

params

  • {name} validator - validator account

example

$ cleos push action endrmng.xsat vdrclaim '["alice"]' -p alice

STRUCT reward_details_row

params

  • {name} validator - validator account

  • {asset} staking_rewards - staking rewards

  • {asset} consensus_rewards - consensus rewards

example

{
  "validator": "alice",
  "staking_rewards": "0.00000010 XSAT",
  "consensus_rewards": "0.00000020 XSAT"
}

ACTION distribute

  • authority: rwddist.xsat

Distributing validator rewards

params

  • {uint64_t} height - validator account

  • {vector<reward_details_row>} rewards - validator account

example

$ cleos push action endrmng.xsat distribute '[840000, [{"validator": "alice", "staking_rewards": "0.00000020 XSAT", "consensus_rewards": "0.00000020 XSAT"}]]' -p rwddist.xsat

ACTION stakexsat

  • authority: xsatstk.xsat

Staking XSAT to validator

params

  • {name} staker - staker account

  • {name} validator - validator account

  • {asset} quantity - staking amount

example

$ cleos push action endrmng.xsat stakexsat '["alice",  "alice", "1.00000000 XSAT"]' -p xsatstk.xsat

ACTION unstakexsat

  • authority: xsatstk.xsat

Unstaking XSAT from a validator

params

  • {name} staker - staker account

  • {name} validator - validator account

  • {asset} quantity - cancel staking amount

example

$ cleos push action endrmng.xsat unstakexsat '["alice",  "alice", "1.00000000 XSAT"]' -p xsatstk.xsat

ACTION restakexsat

  • authority: staker

Staking XSAT to a new validator

params

  • {name} staker - staker account

  • {name} old_validator - old validator account

  • {name} new_validator - new validator account

  • {asset} quantity - the amount of stake transferred to the new validator

example

$ cleos push action endrmng.xsat restakexsat '["alice",  "alice", "bob", "1.00000000 XSAT"]' -p alice

ACTION evmstakexsat

  • authority: caller

Staking XSAT to validator via evm

params

  • {name} caller - caller account

  • {checksum160} proxy - evm proxy account

  • {checksum160} staker - evm staker account

  • {name} validator - validator account

  • {asset} quantity - staking amount

example

$ cleos push action endrmng.xsat evmstakexsat '["evmutil.xsat", "bb776ae86d5996908af46482f24be8ccde2d4c41", "e4d68a77714d9d388d8233bee18d578559950cf5",  "alice", "1.00000000 XSAT"]' -p evmutil.xsat

ACTION evmunstkxsat

  • authority: caller

Unstake XSAT from validator via evm

params

  • {name} caller - caller account

  • {checksum160} proxy - evm proxy account

  • {checksum160} staker - evm staker account

  • {name} validator - validator account

  • {asset} quantity - staking amount

example

$ cleos push action endrmng.xsat evmunstkxsat '["evmutil.xsat", "bb776ae86d5996908af46482f24be8ccde2d4c41", "e4d68a77714d9d388d8233bee18d578559950cf5",  "alice", "1.00000000 XSAT"]' -p evmutil.xsat

ACTION evmrestkxsat

  • authority: caller

Staking XSAT to a new validator via evm

params

  • {name} caller - caller account

  • {checksum160} proxy - evm proxy account

  • {checksum160} staker - evm staker account

  • {name} old_validator - old validator account

  • {name} new_validator - new validator account

  • {asset} quantity - staking amount

example

$ cleos push action endrmng.xsat evmrestkxsat '["evmutil.xsat", "bb776ae86d5996908af46482f24be8ccde2d4c41", "e4d68a77714d9d388d8233bee18d578559950cf5",  "alice", "bob", "1.00000000 XSAT"]' -p evmutil.xsat

ACTION creditstake

  • authority: custody.xsat

Unstake BTC from validator via credit

params

  • {checksum160} proxy - evm proxy account

  • {checksum160} staker - evm staker account

  • {name} validator - validator account

  • {asset} quantity - staking amount

  • {checksum160} stake_address - stake address

  • {checksum160} reward_address - reward address

  • {uint64_t} consecutive_vote_count - consecutive vote count

  • {uint64_t} latest_consensus_block - latest consensus block

  • {uint8_t} active_flag - active flag (0: inactive, 1: active, 2: credit staking validator)

  • {uint32_t} role - role (0: BTC, 1: XSAT)

example

$ cleos push action endrmng.xsat creditstake '["bb776ae86d5996908af46482f24be8ccde2d4c41", "e4d68a77714d9d388d8233bee18d578559950cf5",  "alice", "1.00000000 BTC"]' -p custody.xsat 

ACTION newregvldtor

  • authority: validator

Register a new validator with additional parameters

params

  • {name} validator - validator account

  • {uint32_t} role - role (0: BTC, 1: XSAT)

  • {checksum160} stake_addr - stake address

  • {optional<checksum160>} reward_addr - reward address

  • {optional<uint16_t>} commission_rate - commission ratio, decimal is 10^4

example

$ cleos push action endrmng.xsat newregvldtor '["alice", 0, "e4d68a77714d9d388d8233bee18d578559950cf5", "e4d68a77714d9d388d8233bee18d578559950cf5", 2000]' -p alice

ACTION evmconfigvald

  • authority: validator

Configure validator commission and donate rates

params

  • {name} validator - validator account

  • {optional<uint16_t>} commission_rate - commission ratio, decimal is 10^4

  • {optional<uint16_t>} donate_rate - the donation rate, represented as a percentage

example

$ cleos push action endrmng.xsat evmconfigvald '["alice", 2000, 100]' -p alice

ACTION evmsetstaker

  • authority: validator

Set validator stake address

params

  • {name} validator - validator account

  • {checksum160} stake_addr - stake address

example

$ cleos push action endrmng.xsat evmsetstaker '["alice", "e4d68a77714d9d388d8233bee18d578559950cf5"]' -p alice

ACTION setrwdaddr

  • authority: validator

Set validator reward address

params

  • {name} validator - validator account

  • {checksum160} reward_addr - reward address

example

$ cleos push action endrmng.xsat setrwdaddr '["alice", "e4d68a77714d9d388d8233bee18d578559950cf5"]' -p alice

ACTION setstakebase

  • authority: endrmng.sat

Set base stake amounts for validators

params

  • {asset} xsat_base_stake - XSAT base stake amount

  • {asset} btc_base_stake - BTC base stake amount

example

$ cleos push action endrmng.xsat setstakebase '["2100 XSAT", "100 BTC"]' -p endrmng.xsat

ACTION updcreditstk

  • authority: endrmng.sat

Update credit staking settings

params

  • {bool} is_close - whether to close credit staking

example

$ cleos push action endrmng.xsat updcreditstk '[true]' -p endrmng.xsat

ACTION endorse

  • authority: BLOCK_ENDORSE_CONTRACT

Endorse a validator for a specific block height

params

  • {name} validator - validator account

  • {uint64_t} height - block height

example

$ cleos push action endrmng.xsat endorse '["alice", 840000]' -p block_endorse.xsat

ACTION setdepproxy

  • authority: endrmng.sat

Set deposit proxy accounts

params

  • {checksum160} btc_deposit_proxy - BTC deposit proxy

  • {checksum160} xsat_deposit_proxy - XSAT deposit proxy

example

$ cleos push action endrmng.xsat setdepproxy '["bb776ae86d5996908af46482f24be8ccde2d4c41", "e4d68a77714d9d388d8233bee18d578559950cf5"]' -p endrmng.xsat
PreviousBlock Synchronization ContractNextStaking Contract

Last updated 18 days ago

πŸ‘¨β€πŸ’»