Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
b36aae92
Unverified
Commit
b36aae92
authored
Nov 08, 2023
by
smartcontracts
Committed by
GitHub
Nov 08, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #7983 from ethereum-optimism/sc/quickstart-fixes
feat: getting started guide tweaks
parents
30cacfac
c0453ef1
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
239 additions
and
19 deletions
+239
-19
.envrc.example
.envrc.example
+55
-0
.gitignore
.gitignore
+1
-0
.gitignore
op-node/.gitignore
+5
-0
load_signer.go
op-node/p2p/cli/load_signer.go
+2
-1
.envrc.example
packages/contracts-bedrock/.envrc.example
+0
-18
.gitignore
packages/contracts-bedrock/.gitignore
+3
-0
config.sh
packages/contracts-bedrock/scripts/getting-started/config.sh
+94
-0
versions.sh
...ges/contracts-bedrock/scripts/getting-started/versions.sh
+36
-0
wallets.sh
...ages/contracts-bedrock/scripts/getting-started/wallets.sh
+43
-0
No files found.
.envrc.example
0 → 100644
View file @
b36aae92
##################################################
# Getting Started #
##################################################
# Admin account
export GS_ADMIN_ADDRESS=
export GS_ADMIN_PRIVATE_KEY=
# Batcher account
export GS_BATCHER_ADDRESS=
export GS_BATCHER_PRIVATE_KEY=
# Proposer account
export GS_PROPOSER_ADDRESS=
export GS_PROPOSER_PRIVATE_KEY=
# Sequencer account
export GS_SEQUENCER_ADDRESS=
export GS_SEQUENCER_PRIVATE_KEY=
##################################################
# op-node Configuration #
##################################################
# The kind of RPC provider, used to inform optimal transactions receipts
# fetching. Valid options: alchemy, quicknode, infura, parity, nethermind,
# debug_geth, erigon, basic, any.
export L1_RPC_KIND=
##################################################
# Contract Deployment #
##################################################
# RPC URL for the L1 network to interact with
export L1_RPC_URL=
# Salt used via CREATE2 to determine implementation addresses
# NOTE: If you want to deploy contracts from scratch you MUST reload this
# variable to ensure the salt is regenerated and the contracts are
# deployed to new addresses (otherwise deployment will fail)
export IMPL_SALT=$(openssl rand -hex 32)
# Name for the deployed network
export DEPLOYMENT_CONTEXT=getting-started
# Optional Tenderly details for simulation link during deployment
export TENDERLY_PROJECT=
export TENDERLY_USERNAME=
# Optional Etherscan API key for contract verification
export ETHERSCAN_API_KEY=
# Private key to use for contract deployments, you don't need to worry about
# this for the Getting Started guide.
export PRIVATE_KEY=
.gitignore
View file @
b36aae92
...
@@ -30,6 +30,7 @@ packages/contracts-bedrock/deployments/anvil
...
@@ -30,6 +30,7 @@ packages/contracts-bedrock/deployments/anvil
.env
.env
.env*
.env*
!.env.example
!.env.example
!.envrc.example
*.log
*.log
.devnet
.devnet
...
...
op-node/.gitignore
View file @
b36aae92
bin
bin
# config files
genesis.json
jwt.txt
rollup.json
op-node/p2p/cli/load_signer.go
View file @
b36aae92
...
@@ -2,6 +2,7 @@ package cli
...
@@ -2,6 +2,7 @@ package cli
import
(
import
(
"fmt"
"fmt"
"strings"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/crypto"
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v2"
...
@@ -19,7 +20,7 @@ func LoadSignerSetup(ctx *cli.Context) (p2p.SignerSetup, error) {
...
@@ -19,7 +20,7 @@ func LoadSignerSetup(ctx *cli.Context) (p2p.SignerSetup, error) {
if
key
!=
""
{
if
key
!=
""
{
// Mnemonics are bad because they leak *all* keys when they leak.
// Mnemonics are bad because they leak *all* keys when they leak.
// Unencrypted keys from file are bad because they are easy to leak (and we are not checking file permissions).
// Unencrypted keys from file are bad because they are easy to leak (and we are not checking file permissions).
priv
,
err
:=
crypto
.
HexToECDSA
(
key
)
priv
,
err
:=
crypto
.
HexToECDSA
(
strings
.
TrimPrefix
(
key
,
"0x"
)
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to read batch submitter key: %w"
,
err
)
return
nil
,
fmt
.
Errorf
(
"failed to read batch submitter key: %w"
,
err
)
}
}
...
...
packages/contracts-bedrock/.envrc.example
deleted
100644 → 0
View file @
30cacfac
# RPC for the network to deploy to
export ETH_RPC_URL=
# Sets the deployer's key to match the first default hardhat account
export PRIVATE_KEY=ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
# Name of the deployed network
export DEPLOYMENT_CONTEXT=getting-started
# Optional Tenderly details for a simulation link during deployment
export TENDERLY_PROJECT=
export TENDERLY_USERNAME=
export ETHERSCAN_API_KEY=
# Optional create2 salt for deterministic deployment of
# contract implementations
export IMPL_SALT=$(openssl rand -hex 32)
packages/contracts-bedrock/.gitignore
View file @
b36aae92
...
@@ -26,3 +26,6 @@ deployments/1337
...
@@ -26,3 +26,6 @@ deployments/1337
# Devnet config which changes with each 'make devnet-up'
# Devnet config which changes with each 'make devnet-up'
deploy-config/devnetL1.json
deploy-config/devnetL1.json
# Getting Started guide deploy config
deploy-config/getting-started.json
packages/contracts-bedrock/
deploy-config/getting-started.json
→
packages/contracts-bedrock/
scripts/getting-started/config.sh
100644 → 100755
View file @
b36aae92
#!/usr/bin/env bash
# This script is used to generate the getting-started.json configuration file
# used in the Getting Started quickstart guide on the docs site. Avoids the
# need to have the getting-started.json committed to the repo since it's an
# invalid JSON file when not filled in, which is annoying.
reqenv
()
{
if
[
-z
"
${
!1
}
"
]
;
then
echo
"Error: environment variable '
$1
' is undefined"
exit
1
fi
}
# Check required environment variables
reqenv
"GS_ADMIN_ADDRESS"
reqenv
"GS_BATCHER_ADDRESS"
reqenv
"GS_PROPOSER_ADDRESS"
reqenv
"GS_SEQUENCER_ADDRESS"
reqenv
"L1_RPC_URL"
# Get the finalized block timestamp and hash
block
=
$(
cast block finalized
--rpc-url
$L1_RPC_URL
)
timestamp
=
$(
echo
"
$block
"
|
awk
'/timestamp/ { print $2 }'
)
blockhash
=
$(
echo
"
$block
"
|
awk
'/hash/ { print $2 }'
)
# Generate the config file
config
=
$(
cat
<<
EOL
{
{
"finalSystemOwner"
:
"
ADMIN
"
,
"finalSystemOwner": "
$GS_ADMIN_ADDRESS
",
"portalGuardian"
:
"
ADMIN
"
,
"portalGuardian": "
$GS_ADMIN_ADDRESS
",
"l1StartingBlockTag"
:
"
BLOCKHASH
"
,
"l1StartingBlockTag": "
$blockhash
",
"l1ChainID"
:
5
,
"l1ChainID":
11155111
,
"l2ChainID": 42069,
"l2ChainID": 42069,
"l2BlockTime": 2,
"l2BlockTime": 2,
"l1BlockTime": 12,
"l1BlockTime": 12,
...
@@ -13,23 +41,23 @@
...
@@ -13,23 +41,23 @@
"sequencerWindowSize": 3600,
"sequencerWindowSize": 3600,
"channelTimeout": 300,
"channelTimeout": 300,
"p2pSequencerAddress"
:
"
SEQUENCER
"
,
"p2pSequencerAddress": "
$GS_SEQUENCER_ADDRESS
",
"batchInboxAddress": "0xff00000000000000000000000000000000042069",
"batchInboxAddress": "0xff00000000000000000000000000000000042069",
"batchSenderAddress"
:
"
BATCHER
"
,
"batchSenderAddress": "
$GS_BATCHER_ADDRESS
",
"l2OutputOracleSubmissionInterval": 120,
"l2OutputOracleSubmissionInterval": 120,
"l2OutputOracleStartingBlockNumber": 0,
"l2OutputOracleStartingBlockNumber": 0,
"l2OutputOracleStartingTimestamp"
:
TIMESTAMP
,
"l2OutputOracleStartingTimestamp":
$timestamp
,
"l2OutputOracleProposer"
:
"
PROPOSER
"
,
"l2OutputOracleProposer": "
$GS_PROPOSER_ADDRESS
",
"l2OutputOracleChallenger"
:
"
ADMIN
"
,
"l2OutputOracleChallenger": "
$GS_ADMIN_ADDRESS
",
"finalizationPeriodSeconds": 12,
"finalizationPeriodSeconds": 12,
"proxyAdminOwner"
:
"
ADMIN
"
,
"proxyAdminOwner": "
$GS_ADMIN_ADDRESS
",
"baseFeeVaultRecipient"
:
"
ADMIN
"
,
"baseFeeVaultRecipient": "
$GS_ADMIN_ADDRESS
",
"l1FeeVaultRecipient"
:
"
ADMIN
"
,
"l1FeeVaultRecipient": "
$GS_ADMIN_ADDRESS
",
"sequencerFeeVaultRecipient"
:
"
ADMIN
"
,
"sequencerFeeVaultRecipient": "
$GS_ADMIN_ADDRESS
",
"baseFeeVaultMinimumWithdrawalAmount": "0x8ac7230489e80000",
"baseFeeVaultMinimumWithdrawalAmount": "0x8ac7230489e80000",
"l1FeeVaultMinimumWithdrawalAmount": "0x8ac7230489e80000",
"l1FeeVaultMinimumWithdrawalAmount": "0x8ac7230489e80000",
...
@@ -44,7 +72,7 @@
...
@@ -44,7 +72,7 @@
"enableGovernance": true,
"enableGovernance": true,
"governanceTokenSymbol": "OP",
"governanceTokenSymbol": "OP",
"governanceTokenName": "Optimism",
"governanceTokenName": "Optimism",
"governanceTokenOwner"
:
"
ADMIN
"
,
"governanceTokenOwner": "
$GS_ADMIN_ADDRESS
",
"l2GenesisBlockGasLimit": "0x1c9c380",
"l2GenesisBlockGasLimit": "0x1c9c380",
"l2GenesisBlockBaseFeePerGas": "0x3b9aca00",
"l2GenesisBlockBaseFeePerGas": "0x3b9aca00",
...
@@ -59,3 +87,8 @@
...
@@ -59,3 +87,8 @@
"requiredProtocolVersion": "0x0000000000000000000000000000000000000000000000000000000000000000",
"requiredProtocolVersion": "0x0000000000000000000000000000000000000000000000000000000000000000",
"recommendedProtocolVersion": "0x0000000000000000000000000000000000000000000000000000000000000000"
"recommendedProtocolVersion": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
}
EOL
)
# Write the config file
echo
"
$config
"
>
deploy-config/getting-started.json
packages/contracts-bedrock/scripts/getting-started/versions.sh
0 → 100755
View file @
b36aae92
#!/usr/bin/env bash
# This script prints out the versions of the various tools used in the Getting
# Started quickstart guide on the docs site. Simplifies things for users so
# they can easily see if they're using the right versions of everything.
version
()
{
local
string
=
$1
local
version_regex
=
'([0-9]+(\.[0-9]+)+)'
if
[[
$string
=
~
$version_regex
]]
;
then
echo
"
${
BASH_REMATCH
[1]
}
"
else
echo
"No version found."
fi
}
# Grab versions
ver_git
=
$(
version
"
$(
git
--version
)
"
)
ver_go
=
$(
version
"
$(
go version
)
"
)
ver_node
=
$(
version
"
$(
node
--version
)
"
)
ver_pnpm
=
$(
version
"
$(
pnpm
--version
)
"
)
ver_foundry
=
$(
version
"
$(
forge
--version
)
"
)
ver_make
=
$(
version
"
$(
make
--version
)
"
)
ver_jq
=
$(
version
"
$(
jq
--version
)
"
)
ver_direnv
=
$(
version
"
$(
direnv
--version
)
"
)
# Print versions
echo
"Dependency | Minimum | Actual"
echo
"git 2
$ver_git
"
echo
"go 1.21
$ver_go
"
echo
"node 20
$ver_node
"
echo
"pnpm 8
$ver_pnpm
"
echo
"foundry 0.2.0
$ver_foundry
"
echo
"make 3
$ver_make
"
echo
"jq 1.6
$ver_jq
"
echo
"direnv 2
$ver_direnv
"
packages/contracts-bedrock/scripts/getting-started/wallets.sh
0 → 100755
View file @
b36aae92
#!/usr/bin/env bash
# This script is used to generate the four wallets that are used in the Getting
# Started quickstart guide on the docs site. Simplifies things for users
# slightly while also avoiding the need for users to manually copy/paste a
# bunch of stuff over to the environment file.
# Generate wallets
wallet1
=
$(
cast wallet new
)
wallet2
=
$(
cast wallet new
)
wallet3
=
$(
cast wallet new
)
wallet4
=
$(
cast wallet new
)
# Grab wallet addresses
address1
=
$(
echo
"
$wallet1
"
|
awk
'/Address/ { print $2 }'
)
address2
=
$(
echo
"
$wallet2
"
|
awk
'/Address/ { print $2 }'
)
address3
=
$(
echo
"
$wallet3
"
|
awk
'/Address/ { print $2 }'
)
address4
=
$(
echo
"
$wallet4
"
|
awk
'/Address/ { print $2 }'
)
# Grab wallet private keys
key1
=
$(
echo
"
$wallet1
"
|
awk
'/Private key/ { print $3 }'
)
key2
=
$(
echo
"
$wallet2
"
|
awk
'/Private key/ { print $3 }'
)
key3
=
$(
echo
"
$wallet3
"
|
awk
'/Private key/ { print $3 }'
)
key4
=
$(
echo
"
$wallet4
"
|
awk
'/Private key/ { print $3 }'
)
# Print out the environment variables to copy
echo
"Copy the following into your .envrc file:"
echo
echo
"# Admin account"
echo
"export GS_ADMIN_ADDRESS=
$address1
"
echo
"export GS_ADMIN_PRIVATE_KEY=
$key1
"
echo
echo
"# Batcher account"
echo
"export GS_BATCHER_ADDRESS=
$address2
"
echo
"export GS_BATCHER_PRIVATE_KEY=
$key2
"
echo
echo
"# Proposer account"
echo
"export GS_PROPOSER_ADDRESS=
$address3
"
echo
"export GS_PROPOSER_PRIVATE_KEY=
$key3
"
echo
echo
"# Sequencer account"
echo
"export GS_SEQUENCER_ADDRESS=
$address4
"
echo
"export GS_SEQUENCER_PRIVATE_KEY=
$key4
"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment