forked from base/withdrawer
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
1,308 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/.idea/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
# withdrawer | ||
|
||
Golang utility for proving and finalizing withdrawals from op-stack chains. | ||
|
||
### Usage | ||
|
||
Install: | ||
``` | ||
go install github.com/base-org/withdrawer@latest | ||
``` | ||
|
||
Initiate a withdrawal on L2 by sending to the `L2StandardBridge` contract at `0x4200000000000000000000000000000000000010`, and note the tx hash. | ||
Example on Base Goerli: [0xc4055dcb2e4647c37166caba8c7392625c2b62f9117a8bc4d96270da24b38f13](https://goerli.basescan.org/tx/0xc4055dcb2e4647c37166caba8c7392625c2b62f9117a8bc4d96270da24b38f13). | ||
|
||
Prove your withdrawal: | ||
``` | ||
withdrawer --network base-mainnet --withdrawal <withdrawal tx hash> --rpc <L1 RPC URL> --private-key <L1 private key> | ||
``` | ||
or use a ledger: | ||
``` | ||
withdrawer --network base-mainnet --withdrawal <withdrawal tx hash> --rpc <L1 RPC URL> --ledger | ||
``` | ||
|
||
Example output: | ||
``` | ||
Proved withdrawal for 0xc4055dcb2e4647c37166caba8c7392625c2b62f9117a8bc4d96270da24b38f13: 0x6b6d1cc45b6601a30646847f638847feb629221ee71bbe6a3de7e6d0fbfe8fad | ||
waiting for tx confirmation | ||
0x6b6d1cc45b6601a30646847f638847feb629221ee71bbe6a3de7e6d0fbfe8fad confirmed | ||
``` | ||
|
||
After the finalization period, finalize your withdrawal (same command as above): | ||
``` | ||
withdrawer --network base-mainnet --withdrawal <withdrawal tx hash> --rpc <L1 RPC URL> --private-key <L1 private key> | ||
``` | ||
|
||
Example output: | ||
``` | ||
Completed withdrawal for 0xc4055dcb2e4647c37166caba8c7392625c2b62f9117a8bc4d96270da24b38f13: 0x1c457f1992f48f1f959ceaee5b3c7e699a26f6f05d93997d49dafe703fd66dea | ||
waiting for tx confirmation | ||
0x1c457f1992f48f1f959ceaee5b3c7e699a26f6f05d93997d49dafe703fd66dea confirmed | ||
``` | ||
|
||
### Flags | ||
|
||
``` | ||
Usage of withdrawer: | ||
-rpc string | ||
Ethereum L1 RPC url | ||
-network string | ||
op-stack network to withdraw.go from (one of: base-mainnet, base-goerli, op-mainnet, op-goerli) (default "base-mainnet") | ||
-withdrawal string | ||
TX hash of the L2 withdrawal transaction | ||
-private-key string | ||
Private key to use for signing transactions | ||
-mnemonic string | ||
Mnemonic to use for signing transactions | ||
-ledger | ||
Use ledger device for signing transactions | ||
-hd-path string | ||
Hierarchical deterministic derivation path for mnemonic or ledger (default "m/44'/60'/0'/0/0") | ||
-l2-rpc string | ||
Custom network L2 RPC url | ||
-l2oo-address string | ||
Custom network L2OutputOracle address | ||
-portal-address string | ||
Custom network OptimismPortal address | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
module github.com/base-org/withdrawer | ||
|
||
go 1.20 | ||
|
||
require ( | ||
github.com/decred/dcrd/hdkeychain/v3 v3.1.1 | ||
github.com/ethereum-optimism/optimism v1.0.10-0.20230614200546-a541c8a859d9 | ||
github.com/ethereum/go-ethereum v1.11.6 | ||
github.com/tyler-smith/go-bip39 v1.1.0 | ||
) | ||
|
||
require ( | ||
github.com/DataDog/zstd v1.5.2 // indirect | ||
github.com/VictoriaMetrics/fastcache v1.10.0 // indirect | ||
github.com/beorn7/perks v1.0.1 // indirect | ||
github.com/btcsuite/btcd v0.23.3 // indirect | ||
github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect | ||
github.com/btcsuite/btcd/btcutil v1.1.0 // indirect | ||
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect | ||
github.com/cespare/xxhash/v2 v2.2.0 // indirect | ||
github.com/cockroachdb/errors v1.9.1 // indirect | ||
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect | ||
github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 // indirect | ||
github.com/cockroachdb/redact v1.1.3 // indirect | ||
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect | ||
github.com/deckarep/golang-set/v2 v2.1.0 // indirect | ||
github.com/decred/base58 v1.0.5 // indirect | ||
github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect | ||
github.com/decred/dcrd/crypto/ripemd160 v1.0.2 // indirect | ||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect | ||
github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 // indirect | ||
github.com/fsnotify/fsnotify v1.6.0 // indirect | ||
github.com/getsentry/sentry-go v0.18.0 // indirect | ||
github.com/go-ole/go-ole v1.2.6 // indirect | ||
github.com/go-stack/stack v1.8.1 // indirect | ||
github.com/gofrs/flock v0.8.1 // indirect | ||
github.com/gogo/protobuf v1.3.2 // indirect | ||
github.com/golang/protobuf v1.5.2 // indirect | ||
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect | ||
github.com/google/uuid v1.3.0 // indirect | ||
github.com/gorilla/websocket v1.5.0 // indirect | ||
github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c // indirect | ||
github.com/huin/goupnp v1.1.0 // indirect | ||
github.com/jackpal/go-nat-pmp v1.0.2 // indirect | ||
github.com/karalabe/usb v0.0.3-0.20230711191512-61db3e06439c // indirect | ||
github.com/klauspost/compress v1.15.15 // indirect | ||
github.com/kr/pretty v0.3.1 // indirect | ||
github.com/kr/text v0.2.0 // indirect | ||
github.com/mattn/go-runewidth v0.0.14 // indirect | ||
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect | ||
github.com/olekukonko/tablewriter v0.0.5 // indirect | ||
github.com/onsi/gomega v1.26.0 // indirect | ||
github.com/pkg/errors v0.9.1 // indirect | ||
github.com/prometheus/client_golang v1.14.0 // indirect | ||
github.com/prometheus/client_model v0.3.0 // indirect | ||
github.com/prometheus/common v0.39.0 // indirect | ||
github.com/prometheus/procfs v0.9.0 // indirect | ||
github.com/rivo/uniseg v0.4.3 // indirect | ||
github.com/rogpeppe/go-internal v1.9.0 // indirect | ||
github.com/russross/blackfriday/v2 v2.1.0 // indirect | ||
github.com/shirou/gopsutil v3.21.11+incompatible // indirect | ||
github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect | ||
github.com/tklauser/go-sysconf v0.3.10 // indirect | ||
github.com/tklauser/numcpus v0.5.0 // indirect | ||
github.com/urfave/cli v1.22.9 // indirect | ||
github.com/yusufpapurcu/wmi v1.2.2 // indirect | ||
golang.org/x/crypto v0.6.0 // indirect | ||
golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb // indirect | ||
golang.org/x/sync v0.1.0 // indirect | ||
golang.org/x/sys v0.6.0 // indirect | ||
golang.org/x/text v0.8.0 // indirect | ||
google.golang.org/protobuf v1.28.1 // indirect | ||
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect | ||
) | ||
|
||
replace github.com/ethereum/go-ethereum v1.11.6 => github.com/ethereum-optimism/op-geth v1.101106.0-rc.3 |
Oops, something went wrong.