gnosischain / consensus-deployment-ansible Goto Github PK
View Code? Open in Web Editor NEWThis project forked from parithosh/consensus-deployment-ansible
Deployment configuration for creating test environments.
This project forked from parithosh/consensus-deployment-ansible
Deployment configuration for creating test environments.
Nethermind (user list) and Lighthouse (user list) devs can ssh to hosts (ip list here) ssh devops@<ip>
. Same as Pari's deployments
NOTE: Currently digging in the logs, will post updates
Gnosis chain must have a person of team fully commited to detecting network issues in a short timeframe. This infra probably already exists, but client teams and users would benefit from an explicit description of who this team is and what methods do they employ to achieve fast responses.
Nethermind also wants to contribute to that role but must be assumed as a backup resource only.
Launched gc-shadow-fork-2 yesterday. It merged successfully, but I found one transaction that reverted in the shadow-fork but succeed in mainnet. Is that expected for shadow forks?
http://146.190.60.243:3334/tx/0x0691e609aedf79870c8c570c2109047ed59891fcea2dbb7803d9373dac330827/internal-transactions
https://blockscout.com/xdai/mainnet/tx/0x0691e609aedf79870c8c570c2109047ed59891fcea2dbb7803d9373dac330827/internal-transactions
Details:
Outline of tasks to setup fully featured testnet.
AuRa validator set should be of similar size to current GC mainnet
Execution layer must have all components AuRa only that affect consensus
xDAImerge
in GoerliExecution layer must test most common uses of mainnet
Regarding infrastructure, deploy (besides explorer)
Misc tests to do:
We want to open up to external participants:
Entities interested to get GBC testnet keys
Regarding infrastructure, deploying current scripted infra is sufficient (beaconchain explorer)
Misc tests to do:
All flags are taken from each client's flag here https://github.com/gnosischain/consensus-deployment-ansible/tree/master/denver/inventory/group_vars
source image: sigp/lighthouse
. Reference https://github.com/dappnode/DAppNodePackage-lighthouse-gnosis/blob/master/beacon-chain/Dockerfile
beacon
lighthouse
--testnet-dir="/custom_config_data"
beacon
--boot-nodes="{{ bootnode_enrs | join(',') }}"
validator
lighthouse
--testnet-dir="/custom_config_data"
vc
source image: consensys/teku
. Reference https://github.com/dappnode/DAppNodePackage-teku-gnosis/blob/master/beacon-chain/Dockerfile
beacon
--network="/custom_config_data/config.yaml"
--initial-state="/custom_config_data/genesis.ssz"
--p2p-discovery-bootnodes="{{ bootnode_enrs | join(',') }}"
validator
--network="/custom_config_data/config.yaml"
source image: statusim/nimbus-eth2
. Reference https://github.com/dappnode/DAppNodePackage-nimbus-gnosis/blob/main/build/Dockerfile
beacon
beacon_node
--network="/custom_config_data"
--bootstrap-node="{{ bootnode_enrs | join(',') }}"
validator
Nimbus runs beacon and validator in the same image
prysm
ghcr.io/gnosischain/gbc-prysm-beacon-chain
. Reference https://github.com/dappnode/DAppNodePackage-gnosis-beacon-chain-prysm/blob/main/beacon-chain/Dockerfileghcr.io/gnosischain/gbc-prysm-validator
Note this image is already wrapped by us, since it needs to be re-build.
beacon
--chain-config-file="/custom_config_data/config.yaml"
--genesis-state="/custom_config_data/genesis.ssz"
--bootstrap-node="{{ bootnode_enrs[0] }}"
--bootstrap-node="{{ bootnode_enrs[1] }}"
validator
--chain-config-file="/custom_config_data/config.yaml"
lodestar
source image: chainsafe/lodestar
. No reference
beacon
beacon
--preset=gnosis
--paramsFile=/custom_config_data/config.yaml
--genesisStateFile=/custom_config_data/genesis.ssz
--network.discv5.bootEnrs="{{ bootnode_enrs[0] }}"
validator
validator
--preset=gnosis
--paramsFile=/custom_config_data/config.yaml
nethermind
source image: nethermind/nethermind
. Reference https://github.com/dappnode/DAppNodePackage-nethermind-xdai/blob/master/build/Dockerfile
--config=/networkdata/nethermind_config.cfg
--Init.ChainSpecPath="/networkdata/nethermind_genesis.json"
Need to have some activity in the devnets to be closer to real networks
Chiado and Denver have the exact same genesis except for the networkID. Same initial AuRa contracts and addresses. To double check, I run this test from posdao-test-setup against Chiado, and it also failed. https://github.com/NethermindEth/posdao-test-setup/blob/1617f815961d9d28bbb94c042363b2129f2e2dba/test/00_block_reward.js#L45
However the posdao-test-setup succeed in CI. There may be some difference in the deployment that triggers this bug?
async function main() {
const signers = await ethers.getSigners();
const beneficiary = "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
const ownerSigner = signers[0];
const blockReward = await ethers.getContractAt(
"BlockRewardAuRaTest",
BLOCK_REWARD_CONTRACT,
ownerSigner
);
await waitTx(
blockReward.setErcToNativeBridgesAllowed([ownerSigner.address]),
"setErcToNativeBridgesAllowed"
);
await waitTx(
blockReward.addExtraReceiver(BigInt(1e18), beneficiary),
"addExtraReceiver"
);
while (true) {
const [beneficiaryBalance, mintedTotally, headBlockNumber] =
await Promise.all([
ethers.provider.getBalance(beneficiary),
blockReward.mintedTotally(),
ethers.provider.getBlockNumber(),
]);
console.log({
beneficiaryBalance,
mintedTotally,
headBlockNumber,
});
}
}
Nethermind (user list) and Lighthouse (user list) devs can ssh to hosts (ip list here) ssh devops@<ip>
. Same as Pari's deployments
Digging lighthouse logs of merge-devnet-0-lighthouse-nethermind-3 I found
Jun 26 22:51:13.349 DEBG Execution engine call failed id: http://127.0.0.1:8560/, error: ServerMessage { code: -38002, message: "Inconsistent forkchoiceState - safe block hash. Request: ForkchoiceState: (HeadBlockHash: 0xa2e14ea188d4dc9b247b45367a4b45b45eabfe5ebbf0cd15eaba5ccc4902ff7b, SafeBlockHash: 0xa2e14ea188d4dc9b247b45367a4b45b45eabfe5ebbf0cd15eaba5ccc4902ff7b, FinalizedBlockHash: 0x528f0716d2431e2cf59c93ef2f9af7350dd409de4b40fdae617bef4b15f7d02d) PayloadAttributes: (Timestamp: 1656283875, PrevRandao: 0xb5aec702d8c74b392586b2c39acc51b5ebe0313e951429bd65f5fc1b1a1dda2a, SuggestedFeeRecipient: 0xf97e180c050e5ab072211ad2c213eb5aee4df134)" }, service: exec
Jun 26 22:51:13.353 WARN Error whilst processing payload status error: Api { id: "http://127.0.0.1:8560/", error: ServerMessage { code: -38002, message: "Inconsistent forkchoiceState - safe block hash. Request: ForkchoiceState: (HeadBlockHash: 0xa2e14ea188d4dc9b247b45367a4b45b45eabfe5ebbf0cd15eaba5ccc4902ff7b, SafeBlockHash: 0xa2e14ea188d4dc9b247b45367a4b45b45eabfe5ebbf0cd15eaba5ccc4902ff7b, FinalizedBlockHash: 0x528f0716d2431e2cf59c93ef2f9af7350dd409de4b40fdae617bef4b15f7d02d) PayloadAttributes: (Timestamp: 1656283875, PrevRandao: 0xb5aec702d8c74b392586b2c39acc51b5ebe0313e951429bd65f5fc1b1a1dda2a, SuggestedFeeRecipient: 0xf97e180c050e5ab072211ad2c213eb5aee4df134)" } }, service: exec
Seems that Nethermind rejects forkchoice updates due to Inconsistent forkchoiceState - safe block hash
.
Explorers from devnet2 are not indexing:
Prepare playbooks to run shadow-forks in xDAI.
Tested checkpoint sync in denver testnet and got this errors. Had to move quickly into restoring the network so could not test more. Someone must test checkpoint sync for networks with gnosis preset.
Prysm
with
--checkpoint-sync-url "http://164.92.135.98:4000"
got
time="2022-08-02 08:18:21" level=info msg="requesting http://164.92.135.98:4000/eth/v1/beacon/weak_subjectivity"
time="2022-08-02 08:18:21" level=info msg="falling back to generic checkpoint derivation, weak_subjectivity API not supported by server"
time="2022-08-02 08:18:21" level=info msg="requesting http://164.92.135.98:4000/eth/v1/node/version"
time="2022-08-02 08:18:21" level=info msg="requesting http://164.92.135.98:4000/eth/v2/debug/beacon/states/head"
time="2022-08-02 08:18:23" level=error msg="Error retrieving checkpoint origin state and block: error computing weak subjectivity epoch via head state inspection: error detecting chain config for beacon state: version=0x0200006f: version not found in fork version schedule for any known config" prefix=main
Teku
with
--initial-state=http://164.92.135.98:4000/eth/v2/debug/beacon/states/finalized
got
08:30:09.218 INFO - Initializing storage
08:30:09.222 INFO - Storage initialization complete
08:30:09.223 INFO - Loading initial state from http://164.92.135.98:4000/eth/v2/debug/beacon/states/finalized
Teku failed to start: tech.pegasys.teku.infrastructure.ssz.sos.SszDeserializeException: First variable element offset doesn't match the end of fixed part
While Hive tests are being developed, @filoozom and I will do manual testing on devnet-4. The list of items is not long so if properly documented should give confidence to clients of readiness.
Withdrawals
stealFrom
)SBCDepositContract.numberOfFailedWithdrawals() > 0
SBCDepositContract.failedWithdrawals(i)
and assert withdraw data matches that of blocksfailedWithdrawalsPointer
> 0and eventually
numberOfFailedWithdrawals == failedWithdrawalsPointer`EIP-3860
Limits the size of deployed contracts and makes deployments a bit more expensive
CC: @filoozom
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.