forked from cerc-io/stack-orchestrator
Fixturenet pocket (#350)
* add fixturenet-gaia stack
* add fixturenet-pocket
* integrate with eth fixturenet
* separate out fixturenet-gaia
* use pocket-deployments Dockerfile
---------
Co-authored-by: iskay <ian@knowable.vc>
Co-authored-by: Ian <ikay@lakeheadu.ca>
Former-commit-id: b23b5ae3bf
This commit is contained in:
parent
55e7d22e57
commit
c1e3f5674d
18
app/data/compose/docker-compose-fixturenet-pocket.yml
Normal file
18
app/data/compose/docker-compose-fixturenet-pocket.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
version: "3.2"
|
||||||
|
services:
|
||||||
|
pocket:
|
||||||
|
restart: unless-stopped
|
||||||
|
image: cerc/pocket:local
|
||||||
|
# command: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"]
|
||||||
|
entrypoint: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"]
|
||||||
|
volumes:
|
||||||
|
# TODO: look at folding these scripts into the container
|
||||||
|
- ../config/fixturenet-pocket/create-fixturenet.sh:/docker-entrypoint-scripts.d/create-fixturenet.sh
|
||||||
|
- ../config/fixturenet-pocket/chains.json:/home/app/pocket-configs/chains.json
|
||||||
|
- ../config/fixturenet-pocket/genesis.json:/home/app/pocket-configs/genesis.json
|
||||||
|
ports:
|
||||||
|
- "8081:8081" # pocket relay rpc
|
||||||
|
networks:
|
||||||
|
net1:
|
||||||
|
name: fixturenet-eth_default
|
||||||
|
external: true
|
18
app/data/config/fixturenet-pocket/chains.json
Executable file
18
app/data/config/fixturenet-pocket/chains.json
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "0001",
|
||||||
|
"url": "http://127.0.0.1:8081/",
|
||||||
|
"basic_auth": {
|
||||||
|
"username": "",
|
||||||
|
"password": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0021",
|
||||||
|
"url": "http://fixturenet-eth-geth-1:8545/",
|
||||||
|
"basic_auth": {
|
||||||
|
"username": "",
|
||||||
|
"password": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
65
app/data/config/fixturenet-pocket/create-fixturenet.sh
Normal file
65
app/data/config/fixturenet-pocket/create-fixturenet.sh
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# TODO: we should have a mechanism to bundle it inside the container rather than link from here
|
||||||
|
# at deploy time.
|
||||||
|
|
||||||
|
CHAINID="pocketlocal-1"
|
||||||
|
MONIKER="localtestnet"
|
||||||
|
SERVICE_URL="http://127.0.0.1:8081"
|
||||||
|
PASSWORD="mypassword" # wallet password, required by cli
|
||||||
|
|
||||||
|
# check if jq is installed; install if necessary
|
||||||
|
# command -v jq > /dev/null 2>&1 || { echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/"; exit 1; }
|
||||||
|
if ! command -v jq > /dev/null 2>&1; then
|
||||||
|
echo "jq not installed, downloading..."
|
||||||
|
mkdir -p /home/app/bin
|
||||||
|
wget -O /home/app/bin/jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
|
||||||
|
chmod +x /home/app/bin/jq
|
||||||
|
export PATH=$PATH:/home/app/bin
|
||||||
|
fi
|
||||||
|
|
||||||
|
# remove existing daemon and client
|
||||||
|
rm -rf ~/.pocket*
|
||||||
|
|
||||||
|
# create a wallet with password "mypassword" and save the address for later
|
||||||
|
address=$(pocket accounts create --pwd $PASSWORD | awk '/Address:/ {print $2}')
|
||||||
|
|
||||||
|
# set this address as the validator address for the node
|
||||||
|
pocket accounts set-validator $address --pwd $PASSWORD
|
||||||
|
|
||||||
|
# save the public key for later
|
||||||
|
pubkey=$(pocket accounts show $address | awk '/Public Key:/ {print $3}')
|
||||||
|
|
||||||
|
# set node's moniker
|
||||||
|
echo $(pocket util print-configs) | jq '.tendermint_config.Moniker = "'"$MONIKER"'"' | jq . > $HOME/.pocket/config/config.json
|
||||||
|
|
||||||
|
# pocket mainnet has block time of 15 minutes, set closer to 1 minute instead
|
||||||
|
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutPropose = 8000000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
||||||
|
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutProposeDelta = 600000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
||||||
|
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutPrevote = 4000000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
||||||
|
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutPrevoteDelta = 600000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
||||||
|
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutPrecommit = 4000000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
||||||
|
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutPrecommitDelta = 6000000006' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
||||||
|
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutCommit = 52000000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
||||||
|
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.CreateEmptyBlocksInterval = 60000000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
||||||
|
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.PeerGossipSleepDuration = 2000000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
||||||
|
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.PeerQueryMaj23SleepDuration = 1200000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
||||||
|
|
||||||
|
# include genesis.json and chains.json
|
||||||
|
cp $HOME/pocket-configs/genesis.json $HOME/.pocket/config/genesis.json
|
||||||
|
cp $HOME/pocket-configs/chains.json $HOME/.pocket/config/chains.json
|
||||||
|
|
||||||
|
# set chain-id and add node to genesis.json as a validator
|
||||||
|
cat $HOME/.pocket/config/genesis.json | jq '.chain_id="'"$CHAINID"'"' > $HOME/.pocket/config/tmp_genesis.json && mv $HOME/.pocket/config/tmp_genesis.json $HOME/.pocket/config/genesis.json
|
||||||
|
cat $HOME/.pocket/config/genesis.json | jq '.app_state.auth.accounts[0].value.address="'"$address"'"' > $HOME/.pocket/config/tmp_genesis.json && mv $HOME/.pocket/config/tmp_genesis.json $HOME/.pocket/config/genesis.json
|
||||||
|
cat $HOME/.pocket/config/genesis.json | jq '.app_state.auth.accounts[0].value.public_key.value="'"$pubkey"'"' > $HOME/.pocket/config/tmp_genesis.json && mv $HOME/.pocket/config/tmp_genesis.json $HOME/.pocket/config/genesis.json
|
||||||
|
cat $HOME/.pocket/config/genesis.json | jq '.app_state.pos.validators[0].address="'"$address"'"' > $HOME/.pocket/config/tmp_genesis.json && mv $HOME/.pocket/config/tmp_genesis.json $HOME/.pocket/config/genesis.json
|
||||||
|
cat $HOME/.pocket/config/genesis.json | jq '.app_state.pos.validators[0].public_key="'"$pubkey"'"' > $HOME/.pocket/config/tmp_genesis.json && mv $HOME/.pocket/config/tmp_genesis.json $HOME/.pocket/config/genesis.json
|
||||||
|
cat $HOME/.pocket/config/genesis.json | jq '.app_state.pos.validators[0].service_url="'"$SERVICE_URL"'"' > $HOME/.pocket/config/tmp_genesis.json && mv $HOME/.pocket/config/tmp_genesis.json $HOME/.pocket/config/genesis.json
|
||||||
|
|
||||||
|
# if [[ $1 == "pending" ]]; then
|
||||||
|
# echo "pending mode is on, please wait for the first block committed."
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# Start the node
|
||||||
|
pocket start --simulateRelay
|
272
app/data/config/fixturenet-pocket/genesis.json
Normal file
272
app/data/config/fixturenet-pocket/genesis.json
Normal file
@ -0,0 +1,272 @@
|
|||||||
|
{
|
||||||
|
"genesis_time": "2020-07-28T15:00:00.000000Z",
|
||||||
|
"chain_id": "testnet",
|
||||||
|
"consensus_params": {
|
||||||
|
"block": {
|
||||||
|
"max_bytes": "4000000",
|
||||||
|
"max_gas": "-1",
|
||||||
|
"time_iota_ms": "1"
|
||||||
|
},
|
||||||
|
"evidence": {
|
||||||
|
"max_age": "120000000000"
|
||||||
|
},
|
||||||
|
"validator": {
|
||||||
|
"pub_key_types": [
|
||||||
|
"ed25519"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"app_hash": "",
|
||||||
|
"app_state": {
|
||||||
|
"application": {
|
||||||
|
"params": {
|
||||||
|
"unstaking_time": "1814000000000000",
|
||||||
|
"max_applications": "9223372036854775807",
|
||||||
|
"app_stake_minimum": "1000000",
|
||||||
|
"base_relays_per_pokt": "167",
|
||||||
|
"stability_adjustment": "0",
|
||||||
|
"participation_rate_on": false,
|
||||||
|
"maximum_chains": "15"
|
||||||
|
},
|
||||||
|
"applications": [],
|
||||||
|
"exported": false
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"params": {
|
||||||
|
"max_memo_characters": "75",
|
||||||
|
"tx_sig_limit": "8",
|
||||||
|
"fee_multipliers": {
|
||||||
|
"fee_multiplier": [],
|
||||||
|
"default": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"accounts": [
|
||||||
|
{
|
||||||
|
"type": "posmint/Account",
|
||||||
|
"value": {
|
||||||
|
"address": "!validator-address",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"amount": "0",
|
||||||
|
"denom": "upokt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"public_key": {
|
||||||
|
"type": "crypto/ed25519_public_key",
|
||||||
|
"value": "!validator-pubkey"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"supply": []
|
||||||
|
},
|
||||||
|
"gov": {
|
||||||
|
"params": {
|
||||||
|
"acl": [
|
||||||
|
{
|
||||||
|
"acl_key": "application/ApplicationStakeMinimum",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "application/AppUnstakingTime",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "application/BaseRelaysPerPOKT",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "application/MaxApplications",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "application/MaximumChains",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "application/ParticipationRateOn",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "application/StabilityAdjustment",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "auth/MaxMemoCharacters",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "auth/TxSigLimit",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "gov/acl",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "gov/daoOwner",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "gov/upgrade",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pocketcore/ClaimExpiration",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "auth/FeeMultipliers",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pocketcore/ReplayAttackBurnMultiplier",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/ProposerPercentage",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pocketcore/ClaimSubmissionWindow",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pocketcore/MinimumNumberOfProofs",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pocketcore/SessionNodeCount",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pocketcore/SupportedBlockchains",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/BlocksPerSession",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/DAOAllocation",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/DowntimeJailDuration",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/MaxEvidenceAge",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/MaximumChains",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/MaxJailedBlocks",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/MaxValidators",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/MinSignedPerWindow",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/RelaysToTokensMultiplier",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/SignedBlocksWindow",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/SlashFractionDoubleSign",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/SlashFractionDowntime",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/StakeDenom",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/StakeMinimum",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"acl_key": "pos/UnstakingTime",
|
||||||
|
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dao_owner": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4",
|
||||||
|
"upgrade": {
|
||||||
|
"Height": "0",
|
||||||
|
"Version": "0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DAO_Tokens": "50000000000000"
|
||||||
|
},
|
||||||
|
"pos": {
|
||||||
|
"params": {
|
||||||
|
"relays_to_tokens_multiplier": "10000",
|
||||||
|
"unstaking_time": "1814000000000000",
|
||||||
|
"max_validators": "5000",
|
||||||
|
"stake_denom": "upokt",
|
||||||
|
"stake_minimum": "15000000000",
|
||||||
|
"session_block_frequency": "4",
|
||||||
|
"dao_allocation": "10",
|
||||||
|
"proposer_allocation": "1",
|
||||||
|
"maximum_chains": "15",
|
||||||
|
"max_jailed_blocks": "37960",
|
||||||
|
"max_evidence_age": "120000000000",
|
||||||
|
"signed_blocks_window": "10",
|
||||||
|
"min_signed_per_window": "0.60",
|
||||||
|
"downtime_jail_duration": "3600000000000",
|
||||||
|
"slash_fraction_double_sign": "0.05",
|
||||||
|
"slash_fraction_downtime": "0.000001"
|
||||||
|
},
|
||||||
|
"prevState_total_power": "0",
|
||||||
|
"prevState_validator_powers": null,
|
||||||
|
"validators": [
|
||||||
|
{
|
||||||
|
"address": "!validator-address",
|
||||||
|
"public_key": "!validator-pubkey",
|
||||||
|
"jailed": false,
|
||||||
|
"status": 2,
|
||||||
|
"tokens": "5000000000000",
|
||||||
|
"service_url": "!validator-url",
|
||||||
|
"chains": [
|
||||||
|
"0001",
|
||||||
|
"0021"
|
||||||
|
],
|
||||||
|
"unstaking_time": "2021-05-15T00:00:00Z"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"exported": false,
|
||||||
|
"signing_infos": {},
|
||||||
|
"missed_blocks": {},
|
||||||
|
"previous_proposer": ""
|
||||||
|
},
|
||||||
|
"pocketcore": {
|
||||||
|
"params": {
|
||||||
|
"session_node_count": "5",
|
||||||
|
"proof_waiting_period": "3",
|
||||||
|
"supported_blockchains": [
|
||||||
|
"0001",
|
||||||
|
"0021"
|
||||||
|
],
|
||||||
|
"claim_expiration": "120",
|
||||||
|
"replay_attack_burn_multiplier": "3",
|
||||||
|
"minimum_number_of_proofs": "10"
|
||||||
|
},
|
||||||
|
"receipts": null,
|
||||||
|
"claims": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
app/data/container-build/cerc-pocket/build.sh
Executable file
3
app/data/container-build/cerc-pocket/build.sh
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build cerc/pocket
|
||||||
|
docker build -t cerc/pocket:local ${CERC_REPO_BASE_DIR}/pocket-core-deployments/docker
|
@ -36,3 +36,4 @@ cerc/optimism-l2geth
|
|||||||
cerc/optimism-op-batcher
|
cerc/optimism-op-batcher
|
||||||
cerc/optimism-op-node
|
cerc/optimism-op-node
|
||||||
cerc/optimism-op-proposer
|
cerc/optimism-op-proposer
|
||||||
|
cerc/pocket
|
||||||
|
@ -24,3 +24,4 @@ tx-spammer
|
|||||||
kubo
|
kubo
|
||||||
foundry
|
foundry
|
||||||
fixturenet-optimism
|
fixturenet-optimism
|
||||||
|
fixturenet-pocket
|
||||||
|
@ -27,3 +27,5 @@ lirewine/sdk
|
|||||||
telackey/act_runner
|
telackey/act_runner
|
||||||
ethereum-optimism/op-geth
|
ethereum-optimism/op-geth
|
||||||
ethereum-optimism/optimism
|
ethereum-optimism/optimism
|
||||||
|
pokt-network/pocket-core
|
||||||
|
pokt-network/pocket-core-deployments
|
||||||
|
59
app/data/stacks/fixturenet-pocket/README.md
Normal file
59
app/data/stacks/fixturenet-pocket/README.md
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
# Pocket Fixturenet
|
||||||
|
|
||||||
|
Instructions for deploying a local single-node Pocket chain alongside a geth + lighthouse blockchain "fixturenet" for development and testing purposes using laconic-stack-orchestrator.
|
||||||
|
|
||||||
|
## 1. Build Laconic Stack Orchestrator
|
||||||
|
Build this fork of Laconic Stack Orchestrator which includes the fixturenet-pocket stack:
|
||||||
|
```
|
||||||
|
$ scripts/build_shiv_package.sh
|
||||||
|
$ cd package
|
||||||
|
$ mv laconic-so-{version} /usr/local/bin/laconic-so # Or move laconic-so to ~/bin or your favorite on-path directory
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. Clone required repositories
|
||||||
|
```
|
||||||
|
$ laconic-so --stack fixturenet-pocket setup-repositories
|
||||||
|
```
|
||||||
|
## 3. Build the stack's containers
|
||||||
|
```
|
||||||
|
$ laconic-so --stack fixturenet-pocket build-containers
|
||||||
|
```
|
||||||
|
## 4. Deploy the stack
|
||||||
|
```
|
||||||
|
$ laconic-so --stack fixturenet-pocket deploy up
|
||||||
|
```
|
||||||
|
It may take up to 10 minutes for the Eth Fixturenet to fully come online and start producing blocks.
|
||||||
|
## 5. Check status
|
||||||
|
**Eth Fixturenet:**
|
||||||
|
```
|
||||||
|
$ laconic-so --stack fixturenet-pocket deploy exec fixturenet-eth-bootnode-lighthouse /scripts/status-internal.sh
|
||||||
|
Waiting for geth to generate DAG.... done
|
||||||
|
Waiting for beacon phase0.... done
|
||||||
|
Waiting for beacon altair.... done
|
||||||
|
Waiting for beacon bellatrix pre-merge.... done
|
||||||
|
Waiting for beacon bellatrix merge.... done
|
||||||
|
```
|
||||||
|
**Pocket node:**
|
||||||
|
```
|
||||||
|
$ laconic-so --stack fixturenet-pocket deploy exec pocket "pocket query height"
|
||||||
|
2023/04/20 08:07:46 Initializing Pocket Datadir
|
||||||
|
2023/04/20 08:07:46 datadir = /home/app/.pocket
|
||||||
|
http://localhost:8081/v1/query/height
|
||||||
|
{
|
||||||
|
"height": 4
|
||||||
|
}
|
||||||
|
```
|
||||||
|
or
|
||||||
|
```
|
||||||
|
$ laconic-so --stack fixturenet-pocket deploy logs pocket
|
||||||
|
```
|
||||||
|
## 6. Send a relay request to Pocket node
|
||||||
|
The Pocket node serves relay requests at `http://localhost:8081/v1/client/sim`
|
||||||
|
**Example request:**
|
||||||
|
```
|
||||||
|
$ curl -X POST --data '{"relay_network_id":"0021","payload":{"data":"{\"jsonrpc\": \"2.0\",\"id\": 1,\"method\": \"eth_blockNumber\",\"params\": []}","method":"POST","path":"","headers":{}}}' http://localhost:8081/v1/client/sim
|
||||||
|
```
|
||||||
|
**Response:**
|
||||||
|
```
|
||||||
|
"{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x6fe\"}\n"
|
||||||
|
```
|
16
app/data/stacks/fixturenet-pocket/stack.yml
Normal file
16
app/data/stacks/fixturenet-pocket/stack.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
version: "1.0"
|
||||||
|
name: fixturenet-pocket
|
||||||
|
description: "A single node pocket chain that can serve relays from the geth-1 node in eth-fixturenet"
|
||||||
|
repos:
|
||||||
|
- cerc-io/go-ethereum
|
||||||
|
- pokt-network/pocket-core
|
||||||
|
- pokt-network/pocket-core-deployments # contains the dockerfile
|
||||||
|
containers:
|
||||||
|
- cerc/go-ethereum
|
||||||
|
- cerc/lighthouse
|
||||||
|
- cerc/fixturenet-eth-geth
|
||||||
|
- cerc/fixturenet-eth-lighthouse
|
||||||
|
- cerc/pocket
|
||||||
|
pods:
|
||||||
|
- fixturenet-pocket
|
||||||
|
- fixturenet-eth
|
Loading…
Reference in New Issue
Block a user