Skip to content

mainnet1.3.0

Compare
Choose a tag to compare
@ninjaahhh ninjaahhh released this 25 Sep 16:54
· 139 commits to master since this release
48ef33f

Disclaimer

This release involves consensus changes (explained below). To avoid wasting mining power, please upgrade the cluster to this release before Friday, September 27, 2019 12:00:00 AM GMT-07:00 DST.

Updates

  • * Enables PoSW on root chain, allowing miners to mine root chain with lower difficulty if having enough stakes (QCEP-001)
  • * Updates cross-shard transaction execution model and gas accounting
  • * Adds pre-compiled contracts to support interactions with multi-native tokens inside smart contracts (QCEP-003, draft under review)
  • * Changes qkchash mining algorithm in shard 6 and 7 to further reduce the potential hardware acceleration (QCEP-002)
  • Supports websocket connections for event subscription
  • Updates getWork / submitWork flow to help miners manage root chain work and coinbase addresses
  • EVM will be enabled at aforementioned time which matches Constantinople version in Ethereum network

(Those items listed with asterisk * mean they are consensus changes, and would lead to forks if clients are not updated accordingly.)

Root Chain Staking

For miners interested in mining root chain with PoSW, here's a quick start:

  1. Since root chain PoSW relies on smart contracts, please wait until they are enabled (which will happen after unix timestamp 1569567600)
  2. A system contract at address 0x514b43000000000000000000000000000000000100000001 needs to be deployed before staking takes effects. DON'T SEND QKC TO THIS ADDRESS BEFORE THE STAKING CONTRACT IS DEPLOYED, otherwise those QKC will be considered as burned, and there is no way to recover them
  3. After confirming the staking contract is deployed, go to QuarkChain's contract page, select Interact, paste the aforementioned system contract address, paste the ABI interface JSON from this gist, click Access, select the function getLockedStakes, paste your coinbase address without full shard key (20 bytes, which is 42 characters including "0x", and same as your normal QKC address excluding last 8 characters), click Read, you should see your stakes and signer. For the meaning of those fields, please refer to QCEP-001
  4. To add stakes, simply send desired amount of QKC to the system contract (recommended gas: >50000). For other behaviors (changing the signer, unlocking, withdrawing, etc.), please refer to the QCEP-001 and use the interface defined there
  5. Lastly, the submitted root block needs to have a correct signature matching the staker's signer to pass the PoSW condition, which can by done by either
    • setting ROOT_SIGNER_PRIVATE_KEY field in the cluster config (as shown in this commit);
    • setting up your own signing server which controls your signer's private key and signs the incoming mining work hash and submits back to the network

PoSW parameters for root chain:

  • Minimum stakes for 1 block allocation: 1,000,000 QKC
  • Maximum allocation: 512
  • Difficulty divider if PoSW effective: 10000
  • Stake locking period (in the contract): 3 days (detailed spec)

Notes

To change miner coinbase address:

./change_coinbase.sh 1000000000000000000000000000000000000000

For downloading snapshots:

curl https://s3-us-west-2.amazonaws.com/qkcmainnet/data/`curl https://s3-us-west-2.amazonaws.com/qkcmainnet/data/LATEST`.tar.gz --output data.tar.gz

Snapshots in China:

curl https://s3.cn-north-1.amazonaws.com.cn/qkcmainnet-cn/data/`curl https://s3.cn-north-1.amazonaws.com.cn/qkcmainnet-cn/data/LATEST`.tar.gz --output data.tar.gz

Running cluster after modifying config:

# inside the container
python3 quarkchain/cluster/cluster.py --cluster_config <config>
or
./run_cluster.py

Network ID

1

GPU mining shard ID

Instructions for Ethash GPU mining

ethminer -U http://$CLUSTER_IP:38391 --shard-id $SHARD_ID --cuda-devices $GPU_ID --farm-recheck $TIME --coinbase $COINBASE_ADDRESS
  • CLUSTER_IP defines the IP for the Quarkchain cluster. If you want to try the one button quick mining, you can use fullnode.quarkchain.io or fullnode2.quarkchain.io.
  • --shard-id defines one specify shard to mine. shard id 1, 10001, 20001, 30001, 40001, 50001 are Ethash.
  • --cuda-devices defines specify GPUs to mine.
  • --farm-recheck defines check interval in milliseconds for changed work. For example 1000.
  • --coinbase defines your mining coinbase address. Please use 20 bytes address generated the same way as an Ethereum address.
  • -U is for the CUDA GPU and -G is for the AMD GPU.
Chain Shard Hash Algo Parameter for Ethminer shard ID
0 0 Ethash 1
1 0 Ethash 10001
2 0 Ethash 20001
3 0 Ethash 30001
4 0 Ethash 40001
5 0 Ethash 50001

CPU mining shard ID

Instructions for Qkchash CPU mining

./ethminer --farm http://$CLUSTER_IP:38391 --coinbase $COINBASE_ADDRESS -t <n> --shard-id $SHARD_ID
  • CLUSTER_IP defines the IP for the Quarkchain cluster. If you want to try the one button quick mining, you can use fullnode.quarkchain.io or fullnode2.quarkchain.io.
  • --shard-id defines one specify shard to mine. shard id 60001 and 70001 are Qkchash.
  • --coinbase defines your mining coinbase address. Please use 20 bytes address generated the same way as an Ethereum address.
  • -t limits number of CPU miners to n
Chain Shard Hash Algo Parameter for Ethminer shard ID
6 0 Qkchash 60001
7 0 Qkchash 70001

Download Docker Image

docker pull quarkchaindocker/pyquarkchain:mainnet1.3.0